...
Get the assessment score from data aggregation API
Get course/assessment details using hierarchy API
Expose a method in CSL which uses the hierarchy response and replace the do_id of assessment with name
Code Block getFlatJson(aggregationData){ activity-service.ts /** return [* @param {object} hierarchyData - {hierarchy Name:api Bala,response Progress: 60, do_2129493337594429441162: 9 * @param {object} aggregateData - aggregate api response { Name: Vinu, Progress: 97, do_2129493337594429441162: 9, } ] }
Code Block getDataForDashlets(hierarchyData, aggregationData): dashletData{ } // from aggreagate data replace the do_id with the name from hierarchy data hierarchyData: course details from hierarchy response aggregationData: agregation API response Return type Example: dashletData: { columnConfig : [ { title: "Name", data: "Name", searchable: true, orderable: true, autoWidth: true, visible: true }, { title: "Progress", data: "Progress", searchable: true, orderable: true, autoWidth: true, visible: true }, { title: "Assessment1", data: "Assessment1", orderable: true, autoWidth: true, visible: true }, { title: "Assessment2", data: "Assessment2", orderable: true, autoWidth: true, visible: true }, ] tableData: [ [ {**/ getDasletsData(hierarchyData, aggregateData) { var assessments = getAssessments(hierarchyData); return getFlatJson(aggregateData, assessments); } /** * @param {object} aggregateData - aggregate API response * @param {object} assessments - assessments from hierarchy API **/ getFlatJson(aggregateData, assessments) { // metric: { score: do_123, value: 5} var dashletsColumns = [] var dashletsData = []; forEach() { //if dashletsColumns is not having "Name": "Bala", the object.key then append dashletsData.push({Name: "Progress"Bala, progress: 60, Assessment1: 5}), "Assessment1": 9,} var dashletsConfig = { // user has not taken Assessment2. data: tabledashletsData will show it as NA columns: dashletsColumns }, retun dashletsData; } /** { * @param {object} hierarchyData - hierarchy api response "Name": "Vinu",**/ getAssessments(hierarchyData) { //returns only assessment in the course hierarchyData "Progress": 97, return { do_123: "Assessment1": 5, "Assessment2": 6do_567: Assessment2, } ] }
use the dash lets library to populate the table as per the documentation https://project-sunbird.atlassian.net/wiki/spaces/SBDES/pages/2312110137/Dashlets+Design+Doc?focusedCommentId=2394980376#comment-2394980376
Code Block <sb-dashlet [type]="string" [config]="config" [data]="data | IDataLocation" , [id]="string | uuid" [height]="string" [width]="string" (...anyOtherEvent)="eventListener($event)"> </sb-dashlet>
...