freeCodeCamp / freeCodeCamp/classroom
Create utility function for dashtable_v2.js file that creates the student objects array that get passed into the React Table
- Dominant language
- JavaScript
- Stars
- 155
- Forks
- 138
- PR merge metrics
- No merged PRs in 30d
Description
_**[ISSUE RESERVED FOR CTI STUDENT(S)]**_
**Issue Background Info**
This issue is a 'under the hood' issue, meaning, when the change is implemented, there will be no indication of the change in the UI. This implementation will allow for more readable code (encapsulated and abstracted).
**Expected New Behavior**
Although there will be no visible change for the end user(s) in the UI, this change should allow for improved code readability.
**Issue Objective**
Create a function in api_processor.js that handles the logic to create the array of student data objects that gets stored in the rawStudentSummary variable, which is passed into the react-table.
**Context for the issue**
When a teacher clicks 'View Class' they are shown a snapshot of all the students' progress in the classroom (dashboard format).
This is the _GlobalDashboardTable_ component being rendered (component code can be found in components/dashtable_v2.js), the file that calls the GlobalDashboardTable component is _[id].js_ (found in pages/dashboard/v2/[id].js).
A third party library called 'react-table' is used to create the dashboard. The data that is passed into the react-table is stored in the rawStudentSummary variable found in the dashtable_v2.js file.
`let rawStudentSummary = props.studentData.map(studentJSON => { ....`
This variable stores an array of objects where each object contains the following attributes: email, activity, progress and details.
This is what the react-table ultimately uses as the data represented in the dashboard.
` const data = React.useMemo(
() => mapData(rawStudentSummary),
[rawStudentSummary]
);`
**Pseudocoe example:**
_dashtable_v2.js:_
`let rawStudentSummary = createArrayOfStudentDataObjectsToPassIntoReactTable(props.studentData)`
_api_processor.js:_
`function createArrayOfStudentDataObjectsToPassIntoReactTable(allStudentJSON) {
let reactTableStudentDataArrayOfObjects = allStudentJSON => { individualJSON
let dashboardDataObj = { email: '', activity '', progress: '', details: '' }
dashboardDataObj.email = individualJSON.email
dashboardDataObj.activity = getActivity(individualJSON) // create this function in api_processor.js
dashboardDataObj.progress = getProgress(indivudalJSON) // create this function in api_processor.js
dashboardDataObj.details = getDetailsPageLink(indivudalJSON) // create this function in api_processor.js
}
return reactTableStudentDataArrayOfObjects;
}`
**Resources**
1. react-table library:
- [Documentation](https://tanstack.com/table/v8/docs/guide/introduction)
- [Highly informative/in depth playlist tutorial](https://www.youtube.com/watch?v=YwP4NAZGskg&list=PLC3y8-rFHvwgWTSrDiwmUsl4ZvipOw9Cz)
2. [Next.js Pages Documentation](https://nextjs.org/docs/pages/building-your-application/routing/pages-and-layouts) (not necessarily needed for the task, but may provide additional context)
Contributor guide
Assessment
This issue has not been assessed yet.