principal-dashboard-lib-v2 0.0.39 → 0.0.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"principal-dashboard-lib-v2.umd.js","sources":["../../../projects/principal-dashboard-lib-v2/src/lib/principal-dashboard-lib-v2.service.ts","../../../projects/principal-dashboard-lib-v2/src/lib/principal-dashboard-lib-v2.component.ts","../../../projects/principal-dashboard-lib-v2/src/lib/version.ts","../../../projects/principal-dashboard-lib-v2/src/lib/chartheader/chartheader.component.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/principal-dashboard-lib-v2/src/lib/chartview/chartview.component.ts","../../../projects/principal-dashboard-lib-v2/src/lib/detailedview/detailedview.component.ts","../../../projects/principal-dashboard-lib-v2/src/lib/exceldata.service.ts","../../../projects/principal-dashboard-lib-v2/src/lib/header/header.component.ts","../../../projects/principal-dashboard-lib-v2/src/lib/tableview/tableview.component.ts","../../../projects/principal-dashboard-lib-v2/src/lib/full-table-view/full-table-view.component.ts","../../../projects/principal-dashboard-lib-v2/src/lib/small-table-view/small-table-view.component.ts","../../../projects/principal-dashboard-lib-v2/src/lib/timeline/timeline.component.ts","../../../projects/principal-dashboard-lib-v2/src/lib/insights/insights.component.ts","../../../projects/principal-dashboard-lib-v2/src/lib/principal-dashboard-lib-v2.module.ts","../../../projects/principal-dashboard-lib-v2/src/public-api.ts","../../../projects/principal-dashboard-lib-v2/src/principal-dashboard-lib-v2.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Subject, BehaviorSubject, ReplaySubject } from 'rxjs';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PrincipalDashboardLibV2Service {\npublic resoureMetaData:any;\npublic usersMetaData:any;\npublic schoolTerminalData:any;\npublic userConsoleData:any;\n\npublic isResoureMetaDataReady = new ReplaySubject();\npublic isResoureMetaDataReady$ = this.isResoureMetaDataReady.asObservable();\n\npublic isUserReqiuredDataReady = new ReplaySubject();\npublic isUserReqiuredDataReady$ = this.isUserReqiuredDataReady.asObservable();\n\n public mychartType: any = '';\n public dataType: any = '';\n public userAllData: any = '';\n public userMetadata: any = {userDetails:[],resourceDetails:[]};\n public resoureMetadata = new Array();\n public userDetailObject: any = {};\n public userlist:any = false;\n public myEndTime :any;\n \n //for change chart Type\n public chartType = new BehaviorSubject(this.mychartType);\n public chartType$ = this.chartType.asObservable();\n //for change userWise To classRoom wise or vice versa\n public isUserWise_data = new BehaviorSubject(true);\n public isUserWise_data$ = this.isUserWise_data.asObservable();\n // for all user and current user information\n public isAllUsers = new BehaviorSubject(this.userlist);\n public isAllUsers$ = this.isAllUsers.asObservable();\n //for get details of selected user\n public detailedviewData = new BehaviorSubject(this.userMetadata);\n public detailedviewData$ = this.detailedviewData.asObservable();\n\n // true while the Insights tab is selected instead of the user / classroom views\n public isInsightsView = new BehaviorSubject(false);\n public isInsightsView$ = this.isInsightsView.asObservable();\n\n public openSmallTable = new BehaviorSubject(false);\n // colour of the timeline bar that opened the details popup\n public detailAccentColor = '';\n // set when the popup should list every session of a timeline row instead of one session\n public detailRowRequest: { label: string; isUserWise: boolean; total: string; sessions: { userId: string; ip: string; start: number }[] } = null;\n public openSmallTable$ = this.openSmallTable.asObservable();\n\n\n constructor() { }\n \n genarateResourseReqiuredData(data: any): any {\n this.isResoureMetaDataReady.next(false);\n let resourceMetadataMatrix = new Array();\n \n if(data && data !== null){\n let resouseID: any;\n let title: any;\n let subject: any;\n let grade: any;\n let chapter: any;\n let teachingPoint: any;\n let type: any;\n let resourceMetadata = data.resourcesMetadata.resourceMetadata;\n \n if(resourceMetadata!= undefined && resourceMetadata.length>0) {\n for (var i = 0; i < resourceMetadata.length;i++){\n //----------//resouseID\n resouseID = resourceMetadata[i].resourceId;\n //----------//subject\n if (resourceMetadata[i].subject != undefined) {\n if (resourceMetadata[i].subject.title != undefined) {\n subject = resourceMetadata[i].subject.title;\n } else {\n subject = '';\n }\n } else {\n subject = '';\n }\n //----------//grade\n if (resourceMetadata[i].grade != undefined) {\n if (resourceMetadata[i].grade.title != undefined) {\n grade = resourceMetadata[i].grade.title;\n } else {\n grade = '';\n }\n } else {\n grade = '';\n }\n //----------//chapter\n //console.log('LOOKCHP',resourceMetadata[i].chapter)\n if (resourceMetadata[i].chapter != undefined) {\n if (resourceMetadata[i].chapter.title != undefined) {\n chapter = resourceMetadata[i].chapter.title;\n } else {\n chapter = '';\n }\n } else {\n chapter = '';\n }\n \n //----------//teachingPoint\n //console.log('LOOKTP',resourceMetadata[i].teachingPoint)\n if (resourceMetadata[i].teachingPoint != undefined) {\n if (resourceMetadata[i].teachingPoint.title != undefined) {\n teachingPoint = resourceMetadata[i].teachingPoint.title;\n } else {\n //teachingPoint = '<span style=\"color:lightgray;\">--</span>';\n teachingPoint = '';\n }\n } else {\n //teachingPoint = '<span style=\"color:lightgray;\">--</span>';\n teachingPoint = '';\n }\n //----------//type\n if (resourceMetadata[i].type != undefined) {\n type = this.getDisplaytypeValue(resourceMetadata[i].type);\n } else {\n type = '';\n }\n \n //----------//title\n if (resourceMetadata[i].title != undefined) {\n title = resourceMetadata[i].title;\n } else {\n title = '';\n }\n let resourceMetauserConsoleData = {\n resouseID:resouseID,\n subject:subject,\n grade:grade,\n chapter:chapter,\n teachingPoint:teachingPoint,\n type:type,\n title:title\n }\n resourceMetadataMatrix.push(resourceMetauserConsoleData);\n this.resoureMetaData = resourceMetadataMatrix;\n this.isResoureMetaDataReady.next(true);\n }\n }\n }\n // this.resoureMetaData = resourceMetadataMatrix;\n return resourceMetadataMatrix;\n }\n\n getName(user): string {\n if(/School Admin/gm.exec(user.role)){\n return \"Support Admin\"\n }\n return user.fullName;\n }\n\n genarateUserReqiuredData(data: any): any {\n this.isUserReqiuredDataReady.next(false);\n let usersMetadataMatrix = new Array();\n let usermetadataMatrixUpdated = new Array();\n let schoolTerminalMatrix = new Array();\n let userConsoleMatrix = new Array();\n if(data && data !== null){\n let userConsole = data.usersConsole.userConsole;\n let usersMetadata = data.usersMetadata.userMetadata;\n let schoolTerminal = data.schoolTerminals.schoolTerminal;\n \n if(usersMetadata!= null && usersMetadata.length > 0){\n for (let i = 0; i < usersMetadata.length; i++) {\n let userId: any;\n let userName: any;\n let userSubjects: any;\n let listOfUser:any = {}\n if (usersMetadata[i].userId!=\"\") {\n userId = usersMetadata[i].userId;\n //console.log(\"--chartDataUserWise-->>\",usersMetadata[i].terminalIP)\n if (usersMetadata[i].fullName !== undefined) {\n userName = this.getName(usersMetadata[i]) // get name of user w.r.t. ID\n } else {\n userName = '';\n }\n \n if (usersMetadata[i].userSubjects !== undefined) {\n userSubjects = usersMetadata[i].userSubjects // get name of user w.r.t. ID\n } else {\n userSubjects = '';\n }\n \n listOfUser = {\n userId:userId, \n userName:userName, \n userSubjects:userSubjects\n };\n usersMetadataMatrix.push(listOfUser); // array of all users\n }\n }\n }\n for (var i = 0; i < usersMetadataMatrix.length; i++) {\n //console.log('usersMetadataMatrix-->', usersMetadataMatrix[i].userName)\n usersMetadataMatrix.forEach(element => {\n \n //console.log('element.userName-->>', element.userName)\n if (usersMetadataMatrix[i].userName === element.userName) {\n usermetadataMatrixUpdated.push(usersMetadataMatrix[i]); //array of same name users\n usersMetadataMatrix.splice(i, 1); //delete the same name users from usermetadataMatrix\n }\n });\n }\n for (var i = 0; i < usermetadataMatrixUpdated.length; i++) {\n // const randomNumber = document.createElement('span');\n // randomNumber.innerHTML = i.toString();\n //usermetadataMatrixUpdated[i].userName = usermetadataMatrixUpdated[i].userName + \" --- \" + i;\n \n usermetadataMatrixUpdated[i].userName = usermetadataMatrixUpdated[i].userName;\n usersMetadataMatrix.push(usermetadataMatrixUpdated[i]); //adding same name users in usermetadataMatrix with some random charators\n this.usersMetaData = usersMetadataMatrix;\n }\n if(schoolTerminal != null && schoolTerminal.length > 0){\n for (var i = 0; i < schoolTerminal.length; i++) {\n let schoolId:any;\n let terminalKey:any;\n let terminalType:any;\n let location:any;\n let schoolTerminalData:any = {};\n \n //----------//schoolId\n if (schoolTerminal[i].schoolId !== undefined) {\n schoolId = schoolTerminal[i].schoolId // get name of user w.r.t. ID\n } else {\n schoolId = '';\n }\n //----------//terminalKey\n if (schoolTerminal[i].terminalKey !== undefined) {\n terminalKey = schoolTerminal[i].terminalKey // get name of user w.r.t. ID\n } else {\n terminalKey = '';\n }\n //----------//terminalType\n if (schoolTerminal[i].terminalType !== undefined) {\n terminalType = schoolTerminal[i].terminalType // get name of user w.r.t. ID\n } else {\n terminalType = '';\n }\n \n //----------//location\n if (schoolTerminal[i].metadata !== undefined) {\n let metadataJSON = JSON.parse(schoolTerminal[i].metadata);\n \n location = metadataJSON.location // get name of user w.r.t. ID\n \n //console.log(\"metadataJSON\",location);\n } else {\n location = '';\n }\n schoolTerminalData = {\n schoolId:schoolId,\n terminalKey:terminalKey,\n terminalType:terminalType,\n location:location\n };\n \n //console.log('ccc--',schoolTerminalData)\n schoolTerminalMatrix.push(schoolTerminalData);\n this.schoolTerminalData = schoolTerminalMatrix;\n }\n }\n if(userConsole !=null && userConsole.length > 0){\n for (let index = 0; index < userConsole.length; index++) {\n let userId: any;\n let startTime: any;\n let endTime: any;\n let duration: any;\n let selectedDate: any;\n let terminalIP: any;\n let userConsoleResources: any;\n let resourceMetadataIDS: any;\n let resourceMetauserConsoleData = [];\n let resourceDurationFromConsole = [];\n let userName: any;\n let userSubjects: any;\n let terminalLocation: any;\n let launchedFrom = [];\n //console.log('myuserConsole', userConsole[index])\n //----------//user iD\n if (userConsole[index].userId !== undefined) {\n userId = userConsole[index].userId; // get name of user w.r.t. ID\n } else {\n userId = '';\n }\n //----------// startTime \n if (userConsole[index].startTime !== undefined) {\n startTime = userConsole[index].startTime; // get name of user w.r.t. ID\n } else {\n startTime = '';\n }\n //----------// endTime \n if (userConsole[index].endTime !== undefined) {\n endTime = userConsole[index].endTime // get name of user w.r.t. ID\n this.myEndTime = endTime;\n } else {\n endTime = '';\n }\n //----------// Date \n if (userConsole[index].selectedDate !== undefined) {\n selectedDate = userConsole[index].selectedDate // get name of user w.r.t. ID\n } else {\n selectedDate = '';\n }\n \n //----------// Duration\n if (userConsole[index].duration !== undefined) {\n duration = userConsole[index].duration // get name of user w.r.t. ID\n } else {\n duration = '';\n }\n //----------// terminalIP\n if (userConsole[index].terminalIP !== undefined) {\n terminalIP = userConsole[index].terminalIP // get name of user w.r.t. ID\n } else {\n terminalIP = '';\n }\n \n //----------// userConsoleResources\n if (userConsole[index].userConsoleResources !== undefined) {\n userConsoleResources = userConsole[index].userConsoleResources // get name of user w.r.t. ID\n } else {\n userConsoleResources = null;\n }\n \n if(userConsoleResources != null){\n if (userConsoleResources.userConsoleResource !== undefined) {\n \n userConsoleResources.userConsoleResource.forEach(item => {\n //console.log(\"lookingFor: \",item)\n resourceMetauserConsoleData.push(item.resourceId); // get name of user w.r.t. ID\n resourceDurationFromConsole.push(item.duration);\n \n \n\n if(item.launchedFrom){\n launchedFrom.push(item.launchedFrom)\n } \n // \n });\n // resourceMetauserConsoleData = userConsoleResources.userConsoleResource[index]resourceId; // get name of user w.r.t. ID\n } else {\n //console.log(\"lookingFor: ELSE \")\n resourceMetauserConsoleData = [];\n resourceDurationFromConsole = [];\n launchedFrom = [];\n }\n }\n \n //----------// userName and userSubjects\n for (let i = 0; i < usersMetadataMatrix.length; i++) {\n if (userId === usersMetadataMatrix[i].userId) {\n userName = usersMetadataMatrix[i].userName;\n userSubjects = usersMetadataMatrix[i].userSubjects;\n }\n }\n //----------// terminalIP and terminalLocation\n \n for (let i = 0; i < schoolTerminalMatrix.length; i++) {\n //console.log(\"schoolTerminalMatrix[i]\",schoolTerminalMatrix[i]);\n //console.log(\"schoolTerminalMatrix[i].terminalKey\",terminalIP,schoolTerminalMatrix[i].terminalKey);\n if (terminalIP === schoolTerminalMatrix[i].terminalKey) {\n terminalLocation = schoolTerminalMatrix[i].location;\n break;\n }else{\n terminalLocation = '';\n }\n }\n \n if (terminalLocation === undefined || terminalLocation === 'undefined') {\n terminalLocation = '';\n }\n// console.log('userName--',userName)\n const userData = {\n userId: userId,\n userName: userName,\n startTime: new Date(startTime),\n endTime: new Date(endTime),\n terminalIP: terminalIP,\n resourceMetauserConsoleData: resourceMetauserConsoleData,\n resourceDurationFromConsole: resourceDurationFromConsole,\n launchedFrom: launchedFrom,\n duration:duration,\n terminalLocation:terminalLocation,\n userSubjects:userSubjects\n };\n userConsoleMatrix.push(userData);\n this.userConsoleData = userConsoleMatrix;\n this.isUserReqiuredDataReady.next(true);\n }\n }\n }\n // console.log(usersMetadataMatrix,schoolTerminalMatrix,userConsoleMatrix);\n return {\n usersMetadata:usersMetadataMatrix,\n schoolTerminalData:schoolTerminalMatrix,\n userConsoleData: userConsoleMatrix\n }\n }\n userWiseChartData(){\n let dataTableforChart = new Array();\n dataTableforChart = [];\n if(this.userConsoleData){\n \n if(this.userConsoleData.length > 0){\n for(let i = 0; i < this.userConsoleData.length; i++){\n //console.log(\"chartDataUserWiseNew-->>\",this.userConsoleData)\n //console.log(\"chartDataUserWiseNew-->>\",this.userConsoleData.userName)\n \n if(typeof this.userConsoleData[i].userName === undefined){\n this.userConsoleData[i].userName = (Math.floor(Math.random() * 100)).toString();\n }\n \n\n \n if(this.userConsoleData[i].userName === undefined){\n this.userConsoleData[i].userName = \"-\"\n //console.log('pakad',this.userConsoleData[i].userName = \"-\", this.userConsoleData[i].userId)\n //this.userConsoleData.splice(i, 1);\n }\n \n /*\n if(this.userConsoleData[i].userName === \"-\"){\n this.userConsoleData.splice(i, 1); // 2nd parameter means remove one item only\n }*/\n //if(this.userConsoleData[i].userName !== undefined || this.userConsoleData[i].userName !== '-' || this.userConsoleData[i].userName !== '--')\n\n \n\n\n {\n \n let userData = [this.userConsoleData[i].userName,this.userConsoleData[i].startTime,this.userConsoleData[i].endTime];\n \n dataTableforChart.push(userData);\n }\n \n //console.log(\"chartDataUserWiseNewNew-->>\",userData)\n }\n }\n }\n return dataTableforChart;\n }\n classRoomWiseChartData(){\n let dataTableforChart = new Array();\n dataTableforChart = [];\n if(this.userConsoleData){\n \n for(let i = 0; i < this.userConsoleData.length; i++){\n //console.log('bbb-->',this.userConsoleData[i].terminalLocation)\n let roomName = this.userConsoleData[i].terminalLocation;\n\n let location = this.getRoomLabel(roomName, this.userConsoleData[i].terminalIP);\n //console.log('bbblocation-->',location)\n let userData = [location,this.userConsoleData[i].startTime,this.userConsoleData[i].endTime];\n dataTableforChart.push(userData);\n }\n }\n //console.log(\"this.classRoomWiseChartData\",dataTableforChart);\n return dataTableforChart;\n \n }\n\n\n newGetCurrentClassroomData(){\n\n let dataTableforChart = new Array();\n dataTableforChart = [];\n if(this.userConsoleData){\n \n for(let i = 0; i < this.userConsoleData.length; i++){\n //console.log('bbb-->',this.userConsoleData[i].terminalLocation)\n let roomName = this.userConsoleData[i].terminalLocation;\n let location = roomName +\" - \"+ this.userConsoleData[i].terminalIP\n //console.log('bbblocation-->',location)\n //let userData = [location];\n dataTableforChart.push(location);\n \n }\n }\n //console.log(\"this.classRoomWiseChartData\",dataTableforChart);\n dataTableforChart = this.uniq(dataTableforChart);\n return dataTableforChart;\n }\n\n // Row label for classroom wise chart: room name, or IP as fallback when name is missing\n getRoomLabel(roomName: any, roomIP: any) {\n const name = (roomName === undefined || roomName === null || roomName === 'undefined') ? '' : String(roomName).trim();\n return name !== '' ? name : (roomIP || '');\n }\n\n uniq(a) {\n return Array.from(new Set(a));\n }\n\n allUserChartData(){\n let dataTableforChart = new Array();\n dataTableforChart = [];\n let AlluserDetailsForTableChart =new Array();\n AlluserDetailsForTableChart = [];\n if(this.userConsoleData && this.usersMetaData){\n let inActiveuserName: any;\n let userSubjects: any;\n let myID: any;\n let AlluserDetails =new Array();\n for (let index = 0; index < this.userConsoleData.length; index++) {\n AlluserDetails.push(this.userConsoleData[index]);\n AlluserDetailsForTableChart.push(this.userConsoleData[index])\n }\n for (let i = 0; i < this.usersMetaData.length; i++) {\n myID = this.usersMetaData[i].userId;\n inActiveuserName = this.usersMetaData[i].userName;\n //if(inActiveuserName === undefined)\n {\n //console.log(\"alluser-1->>\",inActiveuserName);\n }\n \n userSubjects = this.usersMetaData[i].userSubjects;\n let myChartRowuserConsoleData = \n {\n userId:myID,\n userName: inActiveuserName,\n startTime:new Date(this.myEndTime),\n endTime:new Date(this.myEndTime),\n terminalIP:\"\",\n resourceMetauserConsoleData:[],\n duration:\"0\",\n terminalLocation:\"\",\n userSubjects:userSubjects\n };\n //AlluserDetails.push(myChartRowuserConsoleData);\n \n let myTableRowuserConsoleData = {\n userId:myID,\n userName: inActiveuserName,\n startTime:\"\",\n endTime:\"\",\n terminalIP:\"\",\n resourceMetauserConsoleData:[],\n duration:0,\n terminalLocation:\"\",\n userSubjects:userSubjects\n };\n //console.log(\"alluser-2->>\",inActiveuserName);\n AlluserDetailsForTableChart.push(myTableRowuserConsoleData);\n AlluserDetails.push(myChartRowuserConsoleData);\n }\n setTimeout(() => {\n for(let i = 0; i < AlluserDetails.length; i++){\n //console.log(\"alluser-3->>\",AlluserDetails[i]);\n \n if(AlluserDetails[i].userName == undefined){\n //AlluserDetails[i].userName = \"--\"\n AlluserDetails.splice(i, 1); // 2nd parameter means remove one item only\n }\n \n \n \n //if(AlluserDetails[i].userName !== undefined || AlluserDetails[i].userName !== '-' || AlluserDetails[i].userName !== '--')\n {\n\n if(AlluserDetails[i].userName === \"--\"){\n AlluserDetails.splice(i, 1); // 2nd parameter means remove one item only\n }\n setTimeout(function(){\n let userData = [AlluserDetails[i].userName,AlluserDetails[i].startTime,AlluserDetails[i].endTime];\n dataTableforChart.push(userData);\n },300)\n \n }\n \n }\n },50)\n\n /*\n for(let i = 0; i < AlluserDetails.length; i++){\n console.log(\"alluser-3->>\",AlluserDetails[i].userName);\n if(AlluserDetails[i].userName === undefined){\n AlluserDetails[i].userName = \"(-)\"\n }\n\n let userData = [AlluserDetails[i].userName,AlluserDetails[i].startTime,AlluserDetails[i].endTime];\n dataTableforChart.push(userData);\n }*/\n }\n return {forChartData:dataTableforChart,fordurationTable:AlluserDetailsForTableChart}\n }\n allRoomsData(){\n let dataTableforChart = new Array();\n dataTableforChart = [];\n let allRoomsDetails = new Array();\n allRoomsDetails = [];\n if(this.userConsoleData && this.schoolTerminalData){\n let myChartRowData: any={};\n let inActiveClassRoom: any;\n for(let i = 0; i < this.userConsoleData.length; i++){\n allRoomsDetails.push(this.userConsoleData[i]);\n\n //console.log(\"bbb allRoom-->\",this.userConsoleData[i])\n let roomName = this.userConsoleData[i].terminalLocation;\n let roomIP = this.userConsoleData[i].terminalIP;\n\n let location = this.getRoomLabel(roomName, roomIP);\n\n //console.log('bbbbRoom',location)\n \n // let userData = [this.userConsoleData[i].terminalIP,this.userConsoleData[i].startTime,this.userConsoleData[i].endTime];\n let userData = [location,this.userConsoleData[i].startTime,this.userConsoleData[i].endTime];\n dataTableforChart.push(userData);\n }\n \n let inactiveRoonName;\n // rooms already used today are in the chart above, add only the idle ones\n const activeRoomIPs = this.userConsoleData.map((room: any) => room.terminalIP);\n for (let i = 0; i < this.schoolTerminalData.length; i++) {\n //console.log(\"schoolTerminalData\",this.schoolTerminalData);\n if (activeRoomIPs.includes(this.schoolTerminalData[i].terminalKey)) {\n continue;\n }\n \n inActiveClassRoom = this.getRoomLabel(this.schoolTerminalData[i].location, this.schoolTerminalData[i].terminalKey);\n //inactiveRoonName = this.schoolTerminalData[i].location;\n \n myChartRowData = {\n userId:\"\",\n userName:\"\",\n startTime:new Date(this.myEndTime),\n endTime:new Date(this.myEndTime),\n terminalIP:this.schoolTerminalData[i].terminalKey,\n resourceMetauserConsoleData:[],\n duration:0,\n terminalLocation:this.schoolTerminalData[i].location,\n userSubjects:\"\"\n };\n allRoomsDetails.push(myChartRowData);\n let myChartRowuserConsoleData = [inActiveClassRoom,new Date(this.myEndTime),new Date(this.myEndTime)];\n dataTableforChart.push(myChartRowuserConsoleData);\n }\n \n }\n return {forChartData:dataTableforChart,fordurationTable:allRoomsDetails};\n }\n dataForTableView(userConsoleMatrix: any,resourceMetadataMatrix: any) {\n \n let currentDate: any;\n let resourceMatrixForTableChart = new Array();\n let resourceMatrixForExcel = new Array();\n \n resourceMatrixForTableChart = [];\n resourceMatrixForExcel = [];\n for (let i = 0; i <userConsoleMatrix.length; i++) {\n let startTime: any;\n let endTime: any;\n let duration: any;\n let terminalIP: any;\n let subject: any;\n let grade: any;\n let chapter: any;\n let topicName: any;\n let AssestDetail: any;\n let resourceType: any;\n let resourceTitle: any;\n let teachingPoint: any;\n let location: any;\n let teacherName: any;\n let teacherSubject: any;\n \n let resourceMetadataIDs: any;\n let resourceMetadataIDsDuration: any;\n let resourceArrayForExcel = new Array();\n let resourceArrayForTableChart = new Array();\n let userConsoleDataMatrix = new Array();\n let launchedFrom: any;\n resourceArrayForTableChart = [];\n userConsoleDataMatrix = [];\n //----------------- for subject and Name\n \n\n teacherSubject = userConsoleMatrix[i].userSubjects;\n teacherName = userConsoleMatrix[i].userName;\n //----------------- for start Time and EndTime \n if ((userConsoleMatrix[i].startTime != undefined && userConsoleMatrix[i].startTime != \"\") && (userConsoleMatrix[i].endTime != undefined&&userConsoleMatrix[i].endTime != \"\")) {\n startTime = userConsoleMatrix[i].startTime.toLocaleTimeString('en-US', { hour12: true });\n endTime = userConsoleMatrix[i].endTime.toLocaleTimeString('en-US', { hour12: true });\n currentDate = userConsoleMatrix[i].startTime.getDate() + '/' + (userConsoleMatrix[i].startTime.getMonth()+1) + '/' + userConsoleMatrix[i].startTime.getFullYear();\n }\n //----------------- for duration\n duration = Math.floor(userConsoleMatrix[i].duration);\n //----------------- for Terminal loaction and terminal IP\n location = userConsoleMatrix[i].terminalLocation;\n terminalIP = userConsoleMatrix[i].terminalIP;\n let roomDetail = location + ' ' + terminalIP;\n \n resourceMetadataIDs = userConsoleMatrix[i].resourceMetauserConsoleData;\n resourceMetadataIDsDuration = userConsoleMatrix[i].resourceDurationFromConsole;\n //console.log('mlaunchedFrom-->> ',(typeof userConsoleMatrix[i].launchedFrom));\n //console.log('mlaunchedFrom-->> ',( userConsoleMatrix[i].launchedFrom));\n let launchDataArr = Array (userConsoleMatrix[i].launchedFrom);\n //console.log('mlaunchedFrom len-->> ', launchDataArr);\n launchedFrom = launchDataArr\n \n \n \n \n \n\n if (resourceMetadataIDs.length === 0) {\n subject = undefined;\n grade = undefined;\n chapter = undefined;\n topicName = undefined;\n teachingPoint = undefined;\n AssestDetail = undefined;\n resourceTitle = undefined;\n resourceType = undefined;\n resourceArrayForTableChart = [teacherName,teacherSubject,currentDate,startTime,endTime,duration,roomDetail,subject,grade,chapter,teachingPoint,AssestDetail, launchedFrom];\n resourceMatrixForTableChart.push(resourceArrayForTableChart);\n \n }else{\n //resourceMetadataMatrix = [resouseID,subject,grade,chapter,teachingPoint,type,title]\n for (let k = 0; k < resourceMetadataIDs.length; k++) {\n for (let i = 0; i < resourceMetadataMatrix.length; i++) {\n \n if (resourceMetadataIDs[k] === resourceMetadataMatrix[i].resouseID) \n {\n \n \n subject = resourceMetadataMatrix[i].subject;\n grade = resourceMetadataMatrix[i].grade;\n chapter = resourceMetadataMatrix[i].chapter;\n topicName = resourceMetadataMatrix[i].topicName;\n teachingPoint = resourceMetadataMatrix[i].teachingPoint;\n if(resourceMetadataMatrix[i].title.toLowerCase() === 'whiteboard' || resourceMetadataMatrix[i].title.toLowerCase() === 'question'){\n AssestDetail = this.getDisplaytypeValue(resourceMetadataMatrix[i].type) + ' : ' + this.convertSeconds(resourceMetadataIDsDuration[k]);\n }else{\n AssestDetail = this.getDisplaytypeValue(resourceMetadataMatrix[i].type) + \" : \" + resourceMetadataMatrix[i].title + ' : ' + this.convertSeconds(resourceMetadataIDsDuration[k]);\n }\n \n\n //AssestDetail = this.getDisplaytypeValue(resourceMetadataMatrix[i].type) + \" : \" + resourceMetadataMatrix[i].title + ' : ' + resourceMetadataIDsDuration[k];\n\n \n\n resourceArrayForTableChart = [teacherName,teacherSubject,currentDate,startTime,endTime,duration,roomDetail, subject,grade,chapter,teachingPoint,AssestDetail, launchedFrom];\n resourceMatrixForTableChart.push(resourceArrayForTableChart);\n teacherName = undefined;\n teacherSubject = undefined;\n currentDate = undefined;\n startTime = undefined;\n endTime = undefined;\n duration = undefined;\n roomDetail = undefined;\n \n }\n }\n }\n }\n }\n return resourceMatrixForTableChart;\n }\n dataForDetailedView(userConsoleMatrix: any,resourceMetadataMatrix: any, rowLabel: any) {\n let detailedView_UserDataMatrix = new Array();\n detailedView_UserDataMatrix = [];\n let detailedView_ResourceDataMatrix = new Array();\n detailedView_ResourceDataMatrix = [];\n \n let startTime: any;\n let endTime: any;\n let duration: any;\n let terminalIP: any;\n let subject: any;\n let grade: any;\n let chapter: any;\n let AssestDetail: any;\n let teachingPoint: any;\n let location: any;\n let teacherName: any;\n let teacherSubject: any;\n let currentDate: any;\n let resourceMetadataIDs: any;\n let resourceMetadataIDsduration: any;\n let resourceArrayForTableChart = new Array();\n resourceArrayForTableChart = [];\n //----------------- for subject and Name\n teacherSubject = userConsoleMatrix[rowLabel].userSubjects;\n teacherName = userConsoleMatrix[rowLabel].userName;\n //----------------- for start Time and EndTime\n if ((userConsoleMatrix[rowLabel].startTime != undefined && userConsoleMatrix[rowLabel].startTime != \"\") && (userConsoleMatrix[rowLabel].endTime != undefined&&userConsoleMatrix[rowLabel].endTime != \"\")) {\n startTime = userConsoleMatrix[rowLabel].startTime.toLocaleTimeString('en-US', { hour12: true });\n endTime = userConsoleMatrix[rowLabel].endTime.toLocaleTimeString('en-US', { hour12: true });\n currentDate = userConsoleMatrix[rowLabel].startTime.getDate() + '/' + userConsoleMatrix[rowLabel].startTime.getMonth() + '/' + userConsoleMatrix[rowLabel].startTime.getFullYear();\n }\n //----------------- for duration\n duration = Math.floor(userConsoleMatrix[rowLabel].duration);\n //----------------- for Terminal loaction and terminal IP\n location = userConsoleMatrix[rowLabel].terminalLocation;\n terminalIP = userConsoleMatrix[rowLabel].terminalIP;\n let roomDetail = location + ' ' + terminalIP;\n resourceMetadataIDs = userConsoleMatrix[rowLabel].resourceMetauserConsoleData;\n resourceMetadataIDsduration = userConsoleMatrix[rowLabel].resourceDurationFromConsole;\n\n detailedView_UserDataMatrix = [teacherName,startTime,teacherSubject,endTime,roomDetail]\n \n if (resourceMetadataIDs.length == 0) {\n subject = undefined;\n grade = undefined;\n chapter = undefined;\n teachingPoint = undefined;\n AssestDetail = undefined;\n }else{\n for (let k = 0; k < resourceMetadataIDs.length; k++) {\n for (let i = 0; i < resourceMetadataMatrix.length; i++) {\n if (resourceMetadataIDs[k] === resourceMetadataMatrix[i].resouseID) {\n subject = resourceMetadataMatrix[i].subject;\n grade = resourceMetadataMatrix[i].grade;\n chapter = resourceMetadataMatrix[i].chapter;\n teachingPoint = resourceMetadataMatrix[i].teachingPoint;\n if(resourceMetadataMatrix[i].title.toLowerCase() === 'whiteboard' || resourceMetadataMatrix[i].title.toLowerCase() === 'question'){\n AssestDetail = this.getDisplaytypeValue(resourceMetadataMatrix[i].type) + \": \" + this.convertSeconds(resourceMetadataIDsduration[k]);\n }else{\n AssestDetail = this.getDisplaytypeValue(resourceMetadataMatrix[i].type) + \": \" + resourceMetadataMatrix[i].title + \": \" + this.convertSeconds(resourceMetadataIDsduration[k]);\n }\n //AssestDetail = this.getDisplaytypeValue(resourceMetadataMatrix[i].type) + \": \" + resourceMetadataMatrix[i].title + \": \" + this.convertSeconds(resourceMetadataIDsduration[k]);\n \n resourceArrayForTableChart = [subject,grade,chapter,teachingPoint,AssestDetail];\n detailedView_ResourceDataMatrix.push(resourceArrayForTableChart);\n }\n }\n }\n } \n \n return {userDetails:detailedView_UserDataMatrix,resourceDetails:detailedView_ResourceDataMatrix};\n }\n // To GET DISPLAY TYPE\n getDisplaytypeValue(key: any) {\n let assetTypeConfig = [\n {\n type: \"asset_media\",\n display: \"Media\"\n },\n {\n type: \"asset_print\",\n display: \"Print\"\n },\n {\n type: \"quiz\",\n display: \"Quiz\"\n },\n {\n type: \"question\",\n display: \"Question\"\n },\n {\n type: \"chapter\",\n display: \"Chapter\"\n },\n {\n type: \"tp\",\n display: \"Topic\"\n },\n {\n type: \"whiteboard\",\n display: \"Whiteboard\"\n },\n {\n type: \"widget\",\n display: \"Widget\"\n },\n {\n type: \"casset_media\",\n display: \"cMedia\"\n },\n {\n type: \"casset_print\",\n display: \"cPrint\"\n },\n {\n type: \"cquiz\",\n display: \"cQuiz\"\n },\n {\n type: \"cquestion\",\n display: \"cQuestion\"\n },\n {\n type: \"image\",\n display: \"Image\"\n },\n {\n type: \"video\",\n display: \"Video\"\n },\n {\n type: \"tools\",\n display: \"Tools\"\n },\n {\n type: \"feature\",\n display: \"Feature\"\n },\n\n ];\n let displayValue = key;\n assetTypeConfig.forEach((value) => {\n if (value.type === key) {\n displayValue = value.display;\n }\n });\n return displayValue;\n\n }\n\n convertSeconds(seconds) {\n const minutes = Math.floor(seconds / 60);\n const remainingSeconds = seconds % 60;\n return `${minutes}m ${remainingSeconds}s`;\n }\n}\n","import { Component, OnInit ,Output, ViewChild, Input,EventEmitter } from '@angular/core';\nimport { PrincipalDashboardLibV2Service } from './principal-dashboard-lib-v2.service';\n\n@Component({\n selector: 'lib-principal-dashboard-lib-v2',\n templateUrl: './principal-dashboard-lib-v2.component.html',\n styleUrls: ['./principal-dashboard-lib-v2.component.scss']\n})\nexport class PrincipalDashboardLibV2Component implements OnInit {\n @Input() data;\n @Input() set responseStatus(res: any) {\n this.setMessageForUser(res);\n // console.log(\" @Input() set responseStatus(res: any) >>>>>>>>>>>>.\",res);\n }\n @Output() userSelectedDate = new EventEmitter();\n messageForUser = \"Loding...\";\n isInsights = false;\n constructor(private pdService: PrincipalDashboardLibV2Service) { }\n\n ngOnInit(): void {\n this.pdService.isInsightsView.subscribe((value) => this.isInsights = value);\n \n // console.log(\" IN --> 7 data\",this.data);\n }\n setMessageForUser(res: any){\n this.messageForUser = res;\n }\n onUserSelectDate(e:any){\n // console.log(\" IN --> 1\");\n this.data = null;\n this.userSelectedDate.emit(e);\n }\n \n\n}\n","// Generated by scripts/lib-version.js from the library's package.json. Do not edit by hand.\nexport const LIB_VERSION = '0.0.39';\n","import { getLocaleDateTimeFormat } from '@angular/common';\nimport { Component, ElementRef, OnInit, ViewChild, Input } from '@angular/core';\nimport { ChartType } from 'angular-google-charts';\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\nimport { LIB_VERSION } from '../version';\ndeclare let require: any;\n\n@Component({\n selector: 'lib-chartheader',\n templateUrl: './chartheader.component.html',\n styleUrls: ['./chartheader.component.scss'],\n})\nexport class ChartheaderComponent implements OnInit {\n constructor(\n private pdService: PrincipalDashboardLibV2Service\n ) {}\n \n //variables\n mytype = ChartType.Timeline;\n datadisplaytype = 'UserWise';\n isUserWise = true;\n myIcon: any;\n libVersion:any;\n isChartView=true;\n isInsights = false;\n\n ngOnInit(): void {\n // set from the library's package.json by scripts/lib-version.js\n this.libVersion = LIB_VERSION;\n // this.myIcon = document.getElementById('myIconImg');\n // this.changeChatType() \n }\n changeChatType() {\n if (this.mytype == ChartType.Timeline) {\n this.isChartView = false;\n this.mytype = ChartType.Table;\n this.pdService.chartType.next(this.mytype);\n \n } else {\n this.isChartView = true;\n this.mytype = ChartType.Timeline;\n \n this.pdService.chartType.next(this.mytype);\n }\n }\n showInsights() {\n this.isInsights = true;\n this.pdService.openSmallTable.next(false);\n this.pdService.isInsightsView.next(true);\n }\n changeDataTypeClassRoom() {\n this.leaveInsights();\n this.isUserWise = false;\n this.pdService.isUserWise_data.next(false);\n }\n changeDataTypeUser() {\n this.leaveInsights();\n this.isUserWise = true;\n this.pdService.isUserWise_data.next(true);\n }\n private leaveInsights() {\n if (this.isInsights) {\n this.isInsights = false;\n this.pdService.isInsightsView.next(false);\n }\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import {\n Component,\n ElementRef,\n OnInit,\n ViewChild,\n Input,\n HostListener,\n} from '@angular/core';\nimport { ChartType, GoogleChartComponent } from 'angular-google-charts';\nimport { element } from 'protractor';\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\nimport { TimelineRow } from '../timeline/timeline.component';\n@Component({\n selector: 'lib-chartview',\n templateUrl: './chartview.component.html',\n styleUrls: ['./chartview.component.scss'],\n})\nexport class ChartviewComponent implements OnInit {\n @Input() set data(res: any) {\n if(res!== null){\n this.loadChart(res);\n }\n \n }\n chartview:any;\n myDataList:any;\n chartDataTable:any;\n myChartOptions: any;\n AllrowHeight: any;\n myXmlData: any;\n currentdataList:any;\n resourceDataList:any;\n alldataList:any;\n selectedUserData:any;\n rowElements:any;\n \n installedClassrooms: any;\n currentRooms: any;\n totalUsers = 0;\n eligibleUsers = 0;\n currentUsers = 0;\n myChartType = ChartType.Timeline;\n myChartwidth = window.innerWidth * 0.88;\n myChartHeight = window.innerHeight;\n currentList = \"Current Users\";\n allList = \"All Users\";\n isAllUsers = false;\n isUserWise = false;\n alluserList: any;\n allRoomsList: any;\n isSubscribed = false;\n // set to false to go back to the Google timeline chart\n useCustomTimeline = true;\n isTableView = false;\n timelineRows: TimelineRow[] = [];\n timelineList: any[] = [];\n myChartDataMatrix = new Array();\n \n totalChartDataMatrix = new Array();\n constructor(\n private pdService: PrincipalDashboardLibV2Service\n ) { }\n\n ngOnInit() { }\n\n loadChart(response: any) {\n //console.log(' INloadChart -->', response);\n this.totalUsers = 0;\n this.eligibleUsers = 0;\n this.currentUsers = 0;\n this.myChartType = ChartType.Timeline;\n this.myChartwidth = window.innerWidth * 0.88;\n this.myChartHeight = window.innerHeight;\n this.currentList = \"Current Users\";\n this.allList = \"All Users\";\n this.isAllUsers = false;\n this.pdService.isAllUsers.next(false);\n this.isUserWise = false;\n this.myChartDataMatrix =[];\n this.totalChartDataMatrix =[];\n\n this.chartview = document.getElementById('pd-chartview');\n this.myDataList = document.getElementById('pd-xmlData');\n // let parse = new DOMParser();\n if(response){\n this.myXmlData = JSON.parse(response);\n }\n \n if(this.myXmlData){\n this.currentdataList = this.pdService.genarateUserReqiuredData(this.myXmlData);\n this.alluserList = this.pdService.allUserChartData();\n this.allRoomsList = this.pdService.allRoomsData();\n this.resourceDataList = this.pdService.genarateResourseReqiuredData(this.myXmlData);\n this.totalUsers = this.currentdataList.usersMetadata.length;\n this.eligibleUsers = this.findEligibleUserCount();\n this.installedClassrooms = this.findInstalledClassrooms();\n this.currentRooms = this.findCurrentClassrooms();\n this.findCurrentUserCount();\n }\n // subscribe once; on later reloads just redraw the currently selected view\n if (this.isSubscribed) {\n this.updateDataType(this.pdService.isUserWise_data.value);\n return;\n }\n this.isSubscribed = true;\n this.pdService.chartType.subscribe((data) => {\n if (data) {\n this.updateChartType(data);\n }\n });\n this.pdService.isUserWise_data.subscribe((data) => {\n this.updateDataType(data);\n });\n this.pdService.isInsightsView.subscribe((insights) => {\n if (!insights) {\n setTimeout(() => this.fitChartHeight());\n }\n });\n window.addEventListener('resize', this.onResizeWindow.bind(this));\n }\n onResizeWindow(event: any) {\n this.myChartwidth = window.innerWidth * 0.88; //set an appropriate factor\n this.fitChartHeight();\n }\n\n // stretch the chart area from where it starts down to the bottom of the window\n fitChartHeight() {\n const chartview = document.getElementById('pd-chartview');\n if (!chartview || chartview.style.display === 'none') return;\n const top = chartview.getBoundingClientRect().top + window.scrollY;\n const height = Math.max(window.innerHeight - top - 8, 240);\n chartview.style.height = height + 'px';\n }\n myChartReady() {\n this.createDivforTotalDurartion();\n this.setHeightofDivforTotalDurartion();\n // this.removeBlankEntryBar();\n }\n updateChartType(dataType: any) {\n this.isTableView = dataType == ChartType.Table;\n if (this.chartview != null && this.chartview != undefined) {\n if (dataType == ChartType.Table) {\n this.chartview.style.display = 'none';\n } else {\n this.chartview.style.display = 'block';\n setTimeout(() => this.fitChartHeight());\n }\n }\n }\n updateDataType(dataType: any) {\n setTimeout(() => this.fitChartHeight());\n this.isUserWise = dataType;\n if (this.myXmlData) {\n if(this.isUserWise){\n this.currentList = \"Current Users\";\n this.allList = \"All Users\";\n if(this.isAllUsers){\n this.userWiseAllData();\n }else{\n this.userWiseCurrentData();\n } \n }else{\n this.allList = \"All Rooms\";\n this.currentList = \"Current Rooms\";\n if(this.isAllUsers){\n this.classRoomWiseAllData();\n }else{\n this.classRoomWiseCurrentData();\n } \n }\n }\n }\n updateChart() {\n let labels = document.getElementById('labels');\n while (labels && labels.firstChild) {\n labels.removeChild(labels.lastChild);\n }\n this.chartDataTable = this.myChartDataMatrix;\n //const filteredData = this.myChartDataMatrix.filter(node => node[0] !== \"-\");\n /*\n if(filteredData.length>0){\n this.chartDataTable = filteredData;\n }else{\n this.chartDataTable = this.myChartDataMatrix;\n }*/\n\n \n\n \n\n //console.log(\"this.myChartDataMatrix\",this.myChartDataMatrix);\n \n \n (this.myChartOptions = {\n tooltip: {\n trigger: 'none',\n },\n colors: ['#ff7f0e', '#2ca02c', '#8c564b', '#d62728', '#bcbd22', '#17becf'],\n timeline: {\n colorByRowLabel: true,\n barLabelStyle: {\n fontSize: 7,\n },\n },\n hAxis: {\n format: 'HH:mm a',\n },\n });\n setTimeout(() => {\n this.myChartHeight = this.AllrowHeight + 100;//to set perfect height of chart \n }, 1000);\n \n }\n\n\n filterUserHasDash(callee?:any){\n \n\n let leftData = this.myChartDataMatrix\n let rightData = this.currentdataList.userConsoleData\n\n const updatedChartData = leftData.filter(row => row[0] !== \"-\");\n\n // Filter out objects in rightData where the userName is \"-\"\n const updatedRightData = rightData.filter(item => item.userName !== \"-\");\n\n \n\n \n return {\n updatedChartData,\n updatedRightData\n }\n }\n\n calulateTotalDuration(detailViewMatrix:any) {\n \n //\n \n\n\n //const filteredData = detailViewMatrix.filter(item => item.userName !== \"-\" && item.userName !== \"--\");\n\n\n //detailViewMatrix = filteredData;\n\n let id_durationArray;\n let id_durationMatrix = new Array();\n id_durationMatrix = [];\n this.totalChartDataMatrix = [];\n if (this.isUserWise) {\n for (let i = 0; i < detailViewMatrix.length; i++) {\n id_durationArray = {\n name: detailViewMatrix[i].userName,\n value: parseInt(detailViewMatrix[i].duration),\n };\n id_durationMatrix.push(id_durationArray);\n }\n } else {\n for (let i = 0; i < detailViewMatrix.length; i++) {\n // console.log(\"detailViewMatrix[i]\",detailViewMatrix[i]);\n id_durationArray = {\n name: this.pdService.getRoomLabel(detailViewMatrix[i].terminalLocation, detailViewMatrix[i].terminalIP),\n value: parseInt(detailViewMatrix[i].duration),\n };\n id_durationMatrix.push(id_durationArray);\n }\n }\n \n let obj: any = {};\n id_durationMatrix = [...new Set(id_durationMatrix)];\n \n id_durationMatrix.forEach((item) => {\n if (obj[item.name]) {\n obj[item.name].value = obj[item.name].value + item.value;\n } else {\n\n obj[item.name] = item;\n }\n });\n let valuesArr = Object.values(obj);\n \n let myArray = new Array();\n myArray = [];\n valuesArr.forEach((item: any) => {\n myArray.push(item.value);\n });\n for (let i = 0; i < myArray.length; i++) {\n let totaldurationPerRow = [this.timeConvert(myArray[i]).toString() + ' hrs'];\n // let totalChartRowDataArray = [totaldurationPerRow];\n this.totalChartDataMatrix.push(totaldurationPerRow);\n }\n }\n timeConvert(n: any) {\n var num = Math.floor(n);\n var hours = num / 60;\n var rhours = Math.floor(hours);\n var minutes = (hours - rhours) * 60;\n var rminutes = Math.round(minutes);\n return rhours + ':' + rminutes;\n }\n removeBlankEntryBar() {\n const chartDiv = document.getElementById('myTimeLine');\n var el = chartDiv.getElementsByTagName(\"rect\"); //get all the descendant rect element inside the container \n var width = 100000000; //set a large initial value to width\n var elToRem = []; //element would be added to this array for removal\n for (var i = 0; i < el.length; i++) { //looping over all the rect element of container\n var cwidth = parseInt(el[i].getAttribute(\"width\"));//getting the width of ith element\n if (cwidth < width) { //if current element width is less than previous width then this is min. width and ith element should be removed\n elToRem = [el[i]];\n width = cwidth; //setting the width with min width\n }\n else if (cwidth == width) { //if current element width is equal to previous width then more that one element would be removed\n elToRem.push(el[i]);\n }\n }\n for (var i = 0; i < elToRem.length; i++) {\n // now iterate JUST the elements to remove\n elToRem[i].setAttribute(\"fill\", \"none\");\n\n }\n }\n createDivforTotalDurartion() {\n let rowLabels = [];\n this.rowElements = [];\n var labels = document.getElementById('labels');\n if (!labels) return;\n while (labels.firstChild) {\n labels.removeChild(labels.lastChild);\n }\n for (var i = 0; i < this.totalChartDataMatrix.length; i++) {\n var team = this.totalChartDataMatrix[i][0];\n rowLabels.push(team);\n var label = labels.appendChild(document.createElement('div'));\n label.style['border-bottom'] = '1px solid #b7b7b7';\n label.style['font-family'] = 'Arial';\n label.style['font-size'] = '13px';\n label.style['text-align'] = 'left';\n label.style['padding-left'] = '8px';\n label.style['padding-right'] = '8px';\n label.style.position = 'inherit';\n if (i % 2) {\n label.style['background-color'] = '#e6e6e6';\n } else {\n label.style['background-color'] = '#ffffff';\n }\n label.innerHTML = team;\n this.rowElements.push(label);\n }\n }\n setHeightofDivforTotalDurartion() {\n \n this.AllrowHeight = 0;\n const chartDiv = document.getElementById('myTimeLine');\n let rows = chartDiv.getElementsByTagName('rect');\n let rowIndex = -1;\n\n for (let i = 0; i < rows.length; i++) {\n rowIndex++;\n if (rowIndex < this.rowElements.length) {\n let rowHeight = parseFloat(rows[i].getAttribute('height')) + 'px';\n this.AllrowHeight += parseFloat(rows[i].getAttribute('height'));\n\n const currentCell = this.rowElements[rowIndex];\n if (currentCell) {\n currentCell.style.height = rowHeight;\n currentCell.style.lineHeight = rowHeight;\n }\n }\n }\n }\n\n // rows for lib-timeline, one per teacher or room, bars point back into `list` by index\n buildTimeline(list: any[]) {\n this.timelineList = list || [];\n const rows: TimelineRow[] = [];\n const rowByLabel: any = {};\n this.timelineList.forEach((session: any, index: number) => {\n let label = this.isUserWise\n ? session.userName\n : this.pdService.getRoomLabel(session.terminalLocation, session.terminalIP);\n if (label === undefined || label === null || label === '' || label === '--') return;\n if (label === '-') label = 'Unknown user';\n\n let row = rowByLabel[label];\n if (!row) {\n row = rowByLabel[label] = { label, bars: [] };\n rows.push(row);\n }\n if (this.isSession(session)) {\n const other = this.isUserWise\n ? this.pdService.getRoomLabel(session.terminalLocation, session.terminalIP)\n : session.userName;\n const time = session.startTime.toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit' }) +\n ' – ' + session.endTime.toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit' });\n row.bars.push({\n start: session.startTime,\n end: session.endTime,\n index,\n tooltip: `${other || ''}\\n${time}`.trim(),\n });\n }\n });\n this.timelineRows = rows;\n }\n\n // idle user / room placeholders have no user or no real start time\n isSession(session: any): boolean {\n return !!session && !!session.userId &&\n session.startTime instanceof Date && !isNaN(session.startTime.getTime()) &&\n session.endTime instanceof Date && !isNaN(session.endTime.getTime());\n }\n\n // every session of one row: a teacher's day (user wise) or a room's day (classroom wise)\n openRow(event: { label: string; indexes: number[]; color: string; total: string }) {\n const sessions = event.indexes\n .map((i) => this.timelineList[i])\n .filter((s) => this.isSession(s))\n .map((s) => ({ userId: s.userId, ip: s.terminalIP, start: s.startTime.getTime() }));\n if (!sessions.length) return;\n this.pdService.detailAccentColor = event.color;\n this.pdService.detailRowRequest = { label: event.label, isUserWise: this.isUserWise, total: event.total, sessions };\n this.pdService.openSmallTable.next({ allSessions: true } as any);\n }\n\n openSession(event: { index: number; color: string }) {\n const index = event.index;\n const session = this.timelineList[index];\n if (!this.isSession(session)) return;\n this.pdService.detailAccentColor = event.color;\n this.pdService.detailRowRequest = null;\n this.selectedUserData = this.pdService.dataForDetailedView(this.timelineList, this.resourceDataList, index);\n this.pdService.detailedviewData.next(this.selectedUserData);\n this.pdService.openSmallTable.next(this.selectedUserData);\n }\n\n onSelectRowData(event: any) {\n const { row, column } = event.selection[0]; \n\n // pick the same list the chart rows were built from\n let selectedList = this.currentdataList.userConsoleData;\n if(this.isAllUsers){\n selectedList = this.isUserWise ? this.alluserList.fordurationTable : this.allRoomsList.fordurationTable;\n }\n // idle room / user rows have no session to show\n if(!selectedList[row] || !selectedList[row].userId || !selectedList[row].startTime){\n return;\n }\n\n this.selectedUserData = this.pdService.dataForDetailedView(selectedList,this.resourceDataList, row);\n\n let smallData = [{'a':this.currentdataList, 'b': row}]\n // console.log(\"this.selectedUserData\",this.selectedUserData);\n \n this.pdService.detailedviewData.next(this.selectedUserData);\n this.updateChart();\n this.pdService.openSmallTable.next(this.selectedUserData);\n // alluserList\n }\n showAllUser() {\n this.pdService.isAllUsers.next(true);\n this.isAllUsers = true;\n if(this.isUserWise){\n this.userWiseAllData();\n }else{\n this.classRoomWiseAllData();\n }\n }\n showCurrentUser() {\n this.isAllUsers = false;\n this.pdService.isAllUsers.next(false);\n if(this.isUserWise){\n this.userWiseCurrentData();\n }else{\n this.classRoomWiseCurrentData();\n }\n }\n userWiseCurrentData(){\n \n let chartDataUserWise = this.pdService.userWiseChartData();\n this.buildTimeline(this.currentdataList.userConsoleData);\n// console.log(\"chartDataUserWise\",chartDataUserWise);\n \n if(chartDataUserWise.length>0){\n this.myChartDataMatrix =chartDataUserWise;\n this.updateChart();\n if(this.currentdataList.userConsoleData.length>0){\n this.calulateTotalDuration(this.currentdataList.userConsoleData);\n }\n } \n }\n userWiseAllData(){\n this.buildTimeline(this.alluserList.fordurationTable);\n let chartDataUserWise = this.alluserList.forChartData;\n if(chartDataUserWise.length>0){\n this.myChartDataMatrix =chartDataUserWise;\n \n this.updateChart();\n this.calulateTotalDuration(this.alluserList.fordurationTable);\n }\n \n }\n classRoomWiseCurrentData(){\n let classRoomdata = this.pdService.classRoomWiseChartData();\n this.buildTimeline(this.currentdataList.userConsoleData);\n console.log(\"classRoomdata\",classRoomdata);\n if(classRoomdata && classRoomdata.length>0){\n \n \n this.myChartDataMatrix =classRoomdata; \n console.log(\"myChartDataMatrix\",this.myChartDataMatrix)\n \n this.updateChart();\n if(this.currentdataList.userConsoleData.length>0){\n this.calulateTotalDuration(this.currentdataList.userConsoleData);\n }\n } \n }\n \n classRoomWiseAllData(){\n let allclassRoomList = this.allRoomsList || this.pdService.allRoomsData();\n this.buildTimeline(allclassRoomList.fordurationTable);\n if(allclassRoomList.forChartData && allclassRoomList.forChartData.length > 0){\n this.myChartDataMatrix = allclassRoomList.forChartData;\n this.updateChart();\n }\n if(allclassRoomList.fordurationTable && allclassRoomList.fordurationTable.length > 0){\n this.calulateTotalDuration(allclassRoomList.fordurationTable);\n }\n \n }\n\n findCurrentUserCount(){\n let userConsoleData = this.currentdataList.userConsoleData;\n \n let userNameArray = new Array();\n for (let index = 0; index < userConsoleData.length; index++) {\n const element = userConsoleData[index].userName;\n userNameArray.push(element);\n }\n let uniqueUserName = [...new Set(userNameArray)];\n this.currentUsers = uniqueUserName.length;\n }\n\n findCurrentClassrooms(){\n //console.log(\"findCurrentClassrooms\", this.currentdataList.schoolTerminalData)\n let classRoomdata = this.pdService.newGetCurrentClassroomData();\n // console.log(\"findCurrentClassrooms\",classRoomdata);\n return classRoomdata.length;\n }\n findInstalledClassrooms(){\n let count = 0;\n// console.log(\"findInstalledClassrooms\", this.currentdataList.schoolTerminalData)\n return this.currentdataList.schoolTerminalData.length;\n }\n findEligibleUserCount(){\n// console.log(\"findEligibleUserCount\", this.currentdataList)\n \n let count = 0;\n let userMetaData = this.currentdataList.usersMetadata\n for (let index = 0; index < userMetaData.length; index++) {\n const element = userMetaData[index].userSubjects;\n if(element !== \"\"){\n // console.log(\"findEligibleUserCount\", element)\n count = count + 1;\n }\n \n }\n \n return count;\n }\n\n ngOnDestroy() {\n // console.log('ngOnDestroy >>');\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\n\n@Component({\n selector: 'lib-detailedview',\n templateUrl: './detailedview.component.html',\n styleUrls: ['./detailedview.component.scss'],\n})\nexport class DetailedviewComponent implements OnInit {\n userMetadata: any;\n resourseMetadata: any;\n deatilViewContainer: any;\n deatilViewTable: any;\n closeButton: any;\n getTotalData:any\n userMetadataHeadingArray = [\n 'Name:',\n 'Start Time:',\n 'Subject:',\n 'End Time:',\n 'Room Details:',\n ];\n resourseMetadataHeadingArray = [\n 'Subject',\n 'Class',\n 'Chapter Name',\n 'Topic Name',\n 'Assets Details',\n ];\n constructor(private pdService: PrincipalDashboardLibV2Service) {}\n\n ngOnInit(): void {\n this.deatilViewContainer = document.getElementById('pd-deatilViewContainer');\n this.deatilViewTable = document.getElementById('pd-deatilViewTable');\n this.closeButton = document.getElementById('pd-closeButton');\n \n this.pdService.detailedviewData.subscribe((data) => {\n if(data){\n if(data.userDetails.length>0 ){\n this.createTable(data.userDetails);\n }\n if(data.resourceDetails.length>0){\n \n data.resourceDetails = this.replaceLabelChapterAndTopic(data.resourceDetails);\n this.createResourcesTable(data.resourceDetails);\n //console.log(\"11dec resourceDetails\",data.resourceDetails);\n }\n }\n \n });\n \n this.deatilViewContainer.style.display = 'none';\n }\n\n \n\n \n replaceLabelChapterAndTopic(data) {\n let htmlStr = \"<span style='font-style: italic;color: #3F51B5;'>(seen)</span>\";\n return data.map(row => {\n return row.map(cell => {\n if (cell.includes(\"Topic:\")) {\n return cell.replace(/Topic: .*/, \"Topic \"+htmlStr);\n }\n if (cell.includes(\"Chapter:\")) {\n return cell.replace(/Chapter: .*/, \"Chapter \"+htmlStr);\n }\n\n return cell;\n });\n });\n }\n \n replaceLabelChapterAndTopic1(data) {\n let htmlStr = \"<span style='font-style: italic;color: #3F51B5;'>(selected)</span>\"\n return data.map(row => {\n return row.map(cell => {\n if (cell.includes(\"Topic: :\")) {\n return cell.replace(/Topic: :.*$/, \"Topic \"+htmlStr);\n }\n if (cell.includes(\"Chapter:\")) {\n return cell.replace(/Chapter: .*$/, \"Chapter \"+htmlStr);\n }\n\n return cell;\n });\n });\n}\n createTable(userMetadata: any) {\n this.deatilViewContainer.style.display = 'block';\n while (this.deatilViewTable.firstChild) {\n this.deatilViewTable.removeChild(this.deatilViewTable.lastChild);\n }\n\n let labelArray = new Array();\n let cnt = 0;\n for (let i = 0; i < userMetadata.length; i++) {\n let label = document.createElement('label');\n label.appendChild(\n document.createTextNode(this.userMetadataHeadingArray[i])\n );\n if (label.textContent === 'undefined'|| label.textContent === undefined) {\n label.textContent = '';\n }\n labelArray.push(label);\n let data = document.createElement('label');\n data.appendChild(document.createTextNode(userMetadata[i]));\n if (data.textContent === 'undefined'|| data.textContent === undefined) {\n data.textContent = '';\n }\n labelArray.push(data);\n }\n let tbl = document.createElement('table');\n tbl.id = \"userDataTable\";\n tbl.className = \"table table-bordered\";\n let tblBody = document.createElement('tbody');\n for (let j = 0; j < userMetadata.length / 2; j++) {\n let row = document.createElement('tr');\n let cell: any;\n for (let i = 0; i < 4; i++) {\n if (i % 2 == 0) {\n cell = document.createElement('th');\n cell.style['font-weight'] = \"bold\"\n // cell.style.background =\"#e0e0e0\";\n } else {\n cell = document.createElement('td');\n }\n if (cnt < labelArray.length) {\n cell.appendChild(labelArray[cnt]);\n row.appendChild(cell);\n //console.log('11dec', cell);\n }\n cnt++;\n }\n tblBody.appendChild(row);\n tbl.appendChild(tblBody);\n this.deatilViewTable.appendChild(tbl);\n }\n }\n\n \n\n createResourcesTable(resoureMetadata: any) {\n let labelArray = new Array();\n let cnt = 0;\n for (let i = 0; i < this.resourseMetadataHeadingArray.length; i++) {\n let label = document.createElement('label');\n label.appendChild(\n document.createTextNode(this.resourseMetadataHeadingArray[i])\n );\n if (label.textContent === 'undefined'|| label.textContent === undefined) {\n label.textContent = '';\n }\n labelArray.push(label);\n }\n for (let i = 0; i < resoureMetadata.length; i++) {\n for (let j = 0; j < 5; j++) {\n let label = document.createElement('label');\n //label.appendChild(document.createTextNode(resoureMetadata[i][j]));\n label.innerHTML = resoureMetadata[i][j];\n if (label.textContent === 'undefined'|| label.textContent === undefined) {\n label.textContent = '';\n }\n labelArray.push(label);\n }\n }\n let tbl = document.createElement('table');\n tbl.className = \"table table-bordered\";\n tbl.id = \"resoureMetadataTable\";\n let tblBody = document.createElement('tbody');\n for (let j = 0; j <= resoureMetadata.length; j++) {\n let row = document.createElement('tr');\n let cell: any;\n for (let i = 0; i < 5; i++) {\n if (j == 0) {\n cell = document.createElement('th');\n cell.style['font-weight'] = 'bold';\n // cell.style.background =\"#e0e0e0\";\n } else {\n cell = document.createElement('td');\n }\n\n if (cnt < labelArray.length) {\n cell.appendChild(labelArray[cnt]);\n row.appendChild(cell);\n //console.log('11dec', cell);\n }\n cnt++;\n }\n tblBody.appendChild(row);\n tbl.appendChild(tblBody);\n this.deatilViewTable.appendChild(tbl);\n }\n }\n \n onCloseBtnClick() {\n this.deatilViewContainer.style.display = 'none';\n }\n}\n","import { Injectable } from '@angular/core';\nimport { resourceUsage } from 'process';\nimport * as FileSaver from 'file-saver'\nimport * as XLSX from 'xlsx';\nimport { HtmlTagDefinition } from '@angular/compiler';\nconst EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\nconst EXCEL_EXTENSION = '.xlsx';\n@Injectable({\n providedIn: 'root'\n})\nexport class ExceldataService {\n resourceTypes = new Array();\n myEndTime:any;\n constructor() { }\n //_____FOR EXCEL CONVERTOR\n public workbook:any;\n public tabName = [{\"name\":\"School\"},{\"name\":\"User Summary\"},{\"name\":\"Terminal Summary\"},{\"name\":\"Usage Details\"}]\n public exportAsExcelFile(json: any,excelFileName: string): void {\n let excelBuffer: any;\n let myobj: any = {Sheets:{}, SheetNames:[] }\n for (let i = 0; i < json.length; i++) {\n const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json[i]);\n myobj.Sheets[this.tabName[i].name] = worksheet\n myobj.SheetNames.push(this.tabName[i].name)\n }\n const workbook:XLSX.WorkBook = myobj; \n excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });\n this.saveAsExcelFile(excelBuffer, excelFileName);\n }\n\n private saveAsExcelFile(buffer: any, fileName: string): void {\n const data: Blob = new Blob([buffer], {\n type: EXCEL_TYPE\n });\n FileSaver.saveAs(data, fileName + EXCEL_EXTENSION);\n }\n //_____FOR EXCEL CONVERTOR END\n\n genarateResourseReqiuredData_Excel(data: any): any {\n let resouseID: any;\n let title: any;\n let subject: any;\n let grade: any;\n let chapter: any;\n let teachingpoint: any;\n let type: any;\n let resourceMetadataMatrix = new Array();\n let resourceMetadata = data.resourcesMetadata.resourceMetadata;\n \n if(resourceMetadata!= undefined && resourceMetadata.length>0) {\n for (var i = 0; i < resourceMetadata.length;i++){\n //----------//resouseID\n resouseID = resourceMetadata[i].resourceId;\n //----------//subject\n if (resourceMetadata[i].subject != undefined) {\n if (resourceMetadata[i].subject.title != undefined) {\n subject = resourceMetadata[i].subject.title;\n } else {\n subject = '';\n }\n } else {\n subject = '';\n }\n //----------//grade\n if (resourceMetadata[i].grade != undefined) {\n if (resourceMetadata[i].grade.title != undefined) {\n grade = resourceMetadata[i].grade.title;\n } else {\n grade = '';\n }\n } else {\n grade = '';\n }\n //----------//chapter\n if (resourceMetadata[i].chapter != undefined) {\n if (resourceMetadata[i].chapter.title != undefined) {\n chapter = resourceMetadata[i].chapter.title;\n } else {\n chapter = '';\n }\n } else {\n chapter = '';\n }\n \n //----------//teachingpoint\n if (resourceMetadata[i].teachingpoint != undefined) {\n if (resourceMetadata[i].teachingpoint.title != undefined) {\n teachingpoint = resourceMetadata[i].teachingpoint.title;\n } else {\n teachingpoint = '';\n }\n } else {\n teachingpoint = '';\n }\n //----------//type\n if (resourceMetadata[i].type != undefined) {\n type = this.getDisplaytypeValue(resourceMetadata[i].type);\n } else {\n type = '';\n }\n \n //----------//title\n if (resourceMetadata[i].title != undefined) {\n title = resourceMetadata[i].title;\n } else {\n title = '';\n }\n \n \n let resourceMetauserConsoleData = {\n resouseID:resouseID,\n subject:subject,\n grade:grade,\n chapter:chapter,\n teachingpoint:teachingpoint,\n type:type,\n title:title\n }\n resourceMetadataMatrix.push(resourceMetauserConsoleData);\n this.resourceTypes.push(type);\n }\n }\n this.resourceTypes = [...new Set(this.resourceTypes)]\n return resourceMetadataMatrix;\n }\n\n getName(user): string {\n if(/School Admin/gm.exec(user.role)){\n return \"Support Admin\"\n }\n return user.fullName;\n }\n\n genarateUserReqiuredData_Excel(data: any): any {\n let userConsole = data.usersConsole.userConsole;\n let usersMetadata = data.usersMetadata.userMetadata;\n let schoolTerminal = data.schoolTerminals.schoolTerminal;\n \n \n let usersMetadataMatrix = new Array();\n let usermetadataMatrixUpdated = new Array();\n let schoolTerminalMatrix = new Array();\n let userConsoleMatrix = new Array();\n if(usersMetadata!= null && usersMetadata.length > 0){\n for (let i = 0; i < usersMetadata.length; i++) {\n let userId: any;\n let userName: any;\n let userSubjects: any;\n let listOfUser:any = {}\n if (usersMetadata[i].userId!=\"\") {\n userId = usersMetadata[i].userId;\n \n if (usersMetadata[i].fullName !== undefined) {\n userName = this.getName(usersMetadata[i]) // get name of user w.r.t. ID\n } else {\n userName = '';\n }\n\n if (usersMetadata[i].userSubjects !== undefined) {\n userSubjects = usersMetadata[i].userSubjects // get name of user w.r.t. ID\n } else {\n userSubjects = '';\n }\n \n listOfUser = {\n userId:userId, \n userName:userName, \n userSubjects:userSubjects\n };\n usersMetadataMatrix.push(listOfUser); // array of all users\n }\n }\n }\n for (var i = 0; i < usersMetadataMatrix.length; i++) {\n usersMetadataMatrix.forEach(element => {\n if (usersMetadataMatrix[i].userName === element.userName) {\n usermetadataMatrixUpdated.push(usersMetadataMatrix[i]); //array of same name users\n usersMetadataMatrix.splice(i, 1); //delete the same name users from usermetadataMatrix\n }\n });\n }\n for (var i = 0; i < usermetadataMatrixUpdated.length; i++) {\n usermetadataMatrixUpdated[i].userName = usermetadataMatrixUpdated[i].userName + \" \" + i;\n usersMetadataMatrix.push(usermetadataMatrixUpdated[i]); //adding same name users in usermetadataMatrix with some random charators\n }\n if(schoolTerminal != null && schoolTerminal.length > 0){\n for (var i = 0; i < schoolTerminal.length; i++) {\n let schoolId:any;\n let terminalKey:any;\n let terminalType:any;\n let location:any;\n let schoolTerminalData:any = {};\n \n //----------//schoolId\n if (schoolTerminal[i].schoolId !== undefined) {\n schoolId = schoolTerminal[i].schoolId // get name of user w.r.t. ID\n } else {\n schoolId = '';\n }\n //----------//terminalKey\n if (schoolTerminal[i].terminalKey !== undefined) {\n terminalKey = schoolTerminal[i].terminalKey // get name of user w.r.t. ID\n } else {\n terminalKey = '';\n }\n //----------//terminalType\n if (schoolTerminal[i].terminalType !== undefined) {\n terminalType = schoolTerminal[i].terminalType // get name of user w.r.t. ID\n } else {\n terminalType = '';\n }\n \n //----------//location\n if (schoolTerminal[i].metadata !== undefined) {\n location = schoolTerminal[i].metadata // get name of user w.r.t. ID\n } else {\n location = '';\n }\n schoolTerminalData = {\n schoolId:schoolId,\n terminalKey:terminalKey,\n terminalType:terminalType,\n location:location\n };\n schoolTerminalMatrix.push(schoolTerminalData);\n \n }\n }\n if(userConsole !=null && userConsole.length > 0){\n for (let index = 0; index < userConsole.length; index++) {\n let userId: any;\n let startTime: any;\n let endTime: any;\n let duration: any;\n let selectedDate: any;\n let terminalIP: any;\n let userConsoleResources: any;\n let resourceMetadataIDS: any;\n let resourceMetauserConsoleData = [];\n let resourceDurationFromConsole = [];\n let userName:any;\n let userSubjects:any;\n let terminalLocation: any;\n //----------//user iD\n if (userConsole[index].userId !== undefined) {\n userId = userConsole[index].userId // get name of user w.r.t. ID\n } else {\n userId = '';\n }\n //----------// startTime \n if (userConsole[index].startTime !== undefined) {\n startTime = userConsole[index].startTime // get name of user w.r.t. ID\n } else {\n startTime = '';\n }\n //----------// endTime \n if (userConsole[index].endTime !== undefined) {\n endTime = userConsole[index].endTime // get name of user w.r.t. ID\n this.myEndTime = endTime;\n } else {\n endTime = '';\n }\n //----------// Date \n if (userConsole[index].selectedDate !== undefined) {\n selectedDate = userConsole[index].selectedDate // get name of user w.r.t. ID\n } else {\n selectedDate = '';\n }\n \n //----------// Duration\n if (userConsole[index].duration !== undefined) {\n duration = userConsole[index].duration // get name of user w.r.t. ID\n } else {\n duration = '';\n }\n //----------// terminalIP\n if (userConsole[index].terminalIP !== undefined) {\n terminalIP = userConsole[index].terminalIP // get name of user w.r.t. ID\n } else {\n terminalIP = '';\n }\n \n //----------// userConsoleResources\n if (userConsole[index].userConsoleResources !== undefined) {\n userConsoleResources = userConsole[index].userConsoleResources // get name of user w.r.t. ID\n } else {\n userConsoleResources = null;\n }\n \n if(userConsoleResources != null){\n if (userConsoleResources.userConsoleResource !== undefined) {\n // satyajit resource wise duration added\n userConsoleResources.userConsoleResource.forEach(item => {\n resourceMetauserConsoleData.push(item.resourceId); // get name of user w.r.t. ID\n resourceDurationFromConsole.push(item.duration);\n });\n // resourceMetauserConsoleData = userConsoleResources.userConsoleResource; // get name of user w.r.t. ID\n } else {\n resourceMetauserConsoleData = [];\n resourceDurationFromConsole = [];\n }\n }\n \n //----------// userName and userSubjects\n for (let i = 0; i < usersMetadataMatrix.length; i++) {\n if (userId === usersMetadataMatrix[i].userId) {\n userName = usersMetadataMatrix[i].userName;\n userSubjects = usersMetadataMatrix[i].userSubjects;\n }\n }\n //----------// terminalIP and terminalLocation\n \n for (let i = 0; i < schoolTerminalMatrix.length; i++) {\n if (terminalIP === schoolTerminalMatrix[i].terminalKey) {\n terminalLocation = schoolTerminalMatrix[i].location;\n }\n }\n let userData = {\n userId:userId,\n userName:userName,\n startTime:new Date(startTime),\n endTime:new Date(endTime),\n terminalIP:terminalIP,\n resourceMetauserConsoleData:resourceMetauserConsoleData,\n duration:duration,\n terminalLocation:terminalLocation,\n userSubjects:userSubjects,\n resourceDurationFromConsole:resourceDurationFromConsole\n }\n \n userConsoleMatrix.push(userData);\n \n }\n }\n return {usersMetadata:usersMetadataMatrix,schoolTerminalData:schoolTerminalMatrix,userConsoleData: userConsoleMatrix}\n }\n \n deatilData_Excel(userConsoleMatrix: any,resourceMetadataMatrix: any){\n // console.log(\"resourceMetadataMatrix\",resourceMetadataMatrix);\n \n let currentDate: any;\n let resourceMatrixForExcel = new Array();\n resourceMatrixForExcel = [];\n for (let i = 0; i <userConsoleMatrix.length; i++) {\n let userID:any;\n let startTime: any;\n let endTime: any;\n let duration: any;\n let terminalIP: any;\n let subject: any;\n let grade: any;\n let chapter: any;\n let resourceType: any;\n let resourceTitle: any;\n let teachingpoint: any;\n let location: any;\n let teacherName: any;\n let teacherSubject: any;\n \n let resourceMetadataIDs: any;\n let resourceMetadataIDsDuration: any;\n let resourceArrayForExcel = new Array();\n \n\n userID = userConsoleMatrix[i].userId;\n //----------------- for subject and Name\n teacherSubject = userConsoleMatrix[i].userSubjects;\n teacherName = userConsoleMatrix[i].userName;\n //----------------- for start Time and EndTime \n if ((userConsoleMatrix[i].startTime != undefined && userConsoleMatrix[i].startTime != \"\") && (userConsoleMatrix[i].endTime != undefined&&userConsoleMatrix[i].endTime != \"\")) {\n startTime = userConsoleMatrix[i].startTime.toLocaleTimeString('en-US', { hour12: true });\n endTime = userConsoleMatrix[i].endTime.toLocaleTimeString('en-US', { hour12: true });\n currentDate = userConsoleMatrix[i].startTime.getDate() + '/' + (userConsoleMatrix[i].startTime.getMonth()+1) + '/' + userConsoleMatrix[i].startTime.getFullYear();\n }\n //----------------- for duration\n duration = Math.floor(userConsoleMatrix[i].duration);\n //----------------- for Terminal loaction and terminal IP\n location = userConsoleMatrix[i].terminalLocation;\n terminalIP = userConsoleMatrix[i].terminalIP;\n let roomDetail = location + ' ' + terminalIP;\n let locationName = location;\n let terminalIPAddress = terminalIP;\n resourceMetadataIDs = userConsoleMatrix[i].resourceMetauserConsoleData;\n resourceMetadataIDsDuration = userConsoleMatrix[i].resourceDurationFromConsole;\n if (resourceMetadataIDs.length == 0) {\n subject = '';\n grade = '';\n chapter = '';\n teachingpoint = '';\n resourceTitle = '';\n resourceType = '';\n resourceArrayForExcel = [teacherName,teacherSubject,currentDate,startTime,endTime,duration,locationName, terminalIPAddress,subject,grade,chapter,teachingpoint,resourceTitle,resourceType,userID];\n resourceMatrixForExcel.push(resourceArrayForExcel);\n }else{\n for (let k = 0; k < resourceMetadataIDs.length; k++) {\n for (let i = 0; i < resourceMetadataMatrix.length; i++) {\n // resouseID:resouseID,\n // subject:subject,\n // grade:grade,\n // chapter:chapter,\n // teachingpoint:teachingpoint,\n // type:type,\n // title:title\n\n if (resourceMetadataIDs[k] === resourceMetadataMatrix[i].resouseID) {\n\n subject = resourceMetadataMatrix[i].subject;\n grade = resourceMetadataMatrix[i].grade;\n chapter = resourceMetadataMatrix[i].chapter;\n teachingpoint = resourceMetadataMatrix[i].teachingpoint;\n resourceTitle = resourceMetadataMatrix[i].title;\n resourceType = this.getDisplaytypeValue(resourceMetadataMatrix[i].type);\n // FOR EXCEL\n resourceArrayForExcel = [teacherName,teacherSubject,currentDate,startTime,endTime,duration,locationName, terminalIPAddress,subject,grade,chapter,teachingpoint,resourceTitle,resourceType,userID,resourceMetadataIDsDuration[k]];\n resourceMatrixForExcel.push(resourceArrayForExcel);\n teacherName = '';\n teacherSubject= '';\n currentDate= '';\n startTime= '';\n endTime= '';\n locationName= ''; \n terminalIPAddress= '';\n duration = '';\n \n }\n }\n }\n }\n }\n \n return resourceMatrixForExcel;\n }\n deatilUsage_Excel(resourceMatrixForExcel){\n let userList=[];\n // console.log(\"resourceMatrixForExcel>>>>>>>>>>>>>>>>>>>\",resourceMatrixForExcel);\n \n if(resourceMatrixForExcel.length > 0){\n for(let i=0;i<resourceMatrixForExcel.length;i++){\n let data = {\n // Sr_No: i+1,\n Name:resourceMatrixForExcel[i][0],\n Subjects:resourceMatrixForExcel[i][1],\n Date:\tresourceMatrixForExcel[i][2],\n startTime:resourceMatrixForExcel[i][3],\n endTime:resourceMatrixForExcel[i][4],\n \"duration(mins)\":resourceMatrixForExcel[i][5],\n location:resourceMatrixForExcel[i][6],\n IP:resourceMatrixForExcel[i][7],\n subjectTitle:resourceMatrixForExcel[i][8],\n gradeTitle:resourceMatrixForExcel[i][9],\n Chapter:resourceMatrixForExcel[i][10],\n tpTitle:resourceMatrixForExcel[i][11],\n resourceTitle:resourceMatrixForExcel[i][12],\n resourceType:resourceMatrixForExcel[i][13],\n 'resourceDuration(sec)':resourceMatrixForExcel[i][15],\n }\n userList.push(data);\n }\n \n } \n // console.log(\"userList\",userList);\n return userList;\n }\n userSummary_Excel(data,resourceMatrixForExcel){\n // console.log(\"resourceMatrixForExcel\",resourceMatrixForExcel)\n let userMetadataList = data.usersMetadata.userMetadata;\n let resourcelist = new Array();\n let resourceTypeList = new Array();\n let userObjectList= new Array();\n let classRooms= new Array();\n let datesAccess= new Array();\n let grades= new Array();\n let subjectTought= new Array();\n // let unique_resourceTypeList = []; \n let duration = 0;\n for (let i = 0; i < userMetadataList.length; i++) {\n resourcelist = [];\n resourceTypeList = [];\n classRooms = []; \n datesAccess = [];\n grades = [];\n subjectTought = [];\n \n duration = 0;\n // console.log(\"userMetadataList[i]\",userMetadataList);\n // console.log(\"resourceMatrixForExcel[i]\",[...new Set(resourceMatrixForExcel)]);\n for (let j = 0; j < resourceMatrixForExcel.length; j++){\n \n if(userMetadataList[i].userId === resourceMatrixForExcel[j][14]){\n if(resourceMatrixForExcel[j][12] != ''){\n resourcelist.push(resourceMatrixForExcel[j][12]);\n }\n \n if(resourceMatrixForExcel[j][13] != ''){\n resourceTypeList.push(resourceMatrixForExcel[j][13]);\n }\n if(resourceMatrixForExcel[j][5] != ''){\n duration = duration + resourceMatrixForExcel[j][5];\n }\n \n \n classRooms.push(resourceMatrixForExcel[j][6]);\n datesAccess.push(resourceMatrixForExcel[j][2]);\n grades.push(resourceMatrixForExcel[j][9]);\n subjectTought.push(resourceMatrixForExcel[j][8]);\n \n \n }\n }\n \n let ClassRooms:any; \n let DatesAccess:any; \n let Grades:any; \n let SubjectTought:any; \n let dayAccess:any; \n \n if(classRooms.length>0){\n ClassRooms = [...new Set(classRooms)][0];\n }else{\n ClassRooms = '';\n }\n if(datesAccess.length>0){\n dayAccess = [...new Set(datesAccess)].length;\n }else{\n dayAccess = '';\n }\n if(datesAccess.length>0){\n DatesAccess = [...new Set(datesAccess)][0];\n }else{\n DatesAccess = '';\n }\n if(grades.length>0){\n Grades = [...new Set(grades)][0];\n }else{\n Grades = ''\n }\n \n if(subjectTought.length>0){\n SubjectTought = [...new Set(subjectTought)][0];\n }else{\n SubjectTought = '';\n }\n // if(resourceTypeList.length>0){\n // unique_resourceTypeList = [...new Set(resourceTypeList)];\n \n // }\n // console.log(\"this.resourceTypes\",this.resourceTypes)\n let user = {\n Name: this.getName(userMetadataList[i]),\n Subjects:userMetadataList[i].userSubjects,\n duration:duration,\n ClassRooms:ClassRooms,\n DatesAccess:DatesAccess,\n DayAccess:dayAccess,\n Grades:Grades,\n SubjectTought:SubjectTought,\n AseestUsed:resourcelist,\n AssetType:resourceTypeList\n }\n userObjectList.push(user);\n \n }\n // console.log(\"userObjectList\",userObjectList)\n let userSummaryList = new Array();\n for(let i = 0; i < userObjectList.length; i++){\n const Assetcounts = [];\n //find count of present asset type\n let presentAsset =userObjectList[i].AssetType;\n presentAsset = [...new Set(presentAsset)];\n // console.log(\"presentAsset\",presentAsset)\n //find count of present asset count\n const sampleArray =userObjectList[i].AssetType;\n sampleArray.forEach(function (x) { Assetcounts[x] = (Assetcounts[x] || 0) + 1; });\n // find missing assets\n let missingAssets = this.resourceTypes.filter(n => !presentAsset.includes(n));\n // adding missing asset with count 0 in list\n missingAssets.forEach((element) => {\n Assetcounts[element] = 0;\n });\n // console.log(Assetcounts);\n let asset_media = {\n // Sr_No: i+1,\n Name:userObjectList[i].Name,\n Subjects_taught:userObjectList[i].Subjects,\n \" Duration(mins)\":userObjectList[i].duration,\n ClassRooms:userObjectList[i].ClassRooms,\n DaysAccsessed:userObjectList[i].DayAccess,\n DatesAccess:userObjectList[i].DatesAccess,\n Grades:userObjectList[i].Grades,\n Subjects:userObjectList[i].SubjectTought\n }\n const returnedTarget = Object.assign(asset_media, Assetcounts);\n userSummaryList.push(returnedTarget);\n\n }\n \n // console.log(\"userSummaryList\",userSummaryList);\n \n return userSummaryList;\n }\n\n // To GET DISPLAY TYPE\n getDisplaytypeValue(key: any) {\n let assetTypeConfig = [\n {\n type: \"asset_media\",\n display: \"Media\"\n },\n {\n type: \"asset_print\",\n display: \"Print\"\n },\n {\n type: \"quiz\",\n display: \"Quiz\"\n },\n {\n type: \"question\",\n display: \"Question\"\n },\n {\n type: \"chapter\",\n display: \"Chapter\"\n },\n {\n type: \"tp\",\n display: \"Topic\"\n },\n {\n type: \"whiteboard\",\n display: \"Whiteboard\"\n },\n {\n type: \"widget\",\n display: \"Widget\"\n },\n {\n type: \"casset_media\",\n display: \"cMedia\"\n },\n {\n type: \"casset_print\",\n display: \"cPrint\"\n },\n {\n type: \"cquiz\",\n display: \"cQuiz\"\n },\n {\n type: \"cquestion\",\n display: \"cQuestion\"\n },\n {\n type: \"image\",\n display: \"Image\"\n },\n {\n type: \"video\",\n display: \"Video\"\n },\n \n ];\n let displayValue = key;\n assetTypeConfig.forEach((value) => {\n if (value.type === key) {\n displayValue = value.display;\n }\n });\n return displayValue;\n \n }\n}\n","import { Component, OnInit, Output, ViewChild, Input, EventEmitter } from '@angular/core';\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\nimport { ExceldataService } from '../exceldata.service';\nimport { DatepickerOptions } from 'ng2-datepicker';\n@Component({\n selector: 'lib-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\nexport class HeaderComponent implements OnInit {\n @Input() set data(res: any) {\n if(res!== null){\n this.loadData(res);\n } \n }\n @Output() userSelectedDate = new EventEmitter();\n\n myCalendar: any;\n calenderDate: any;\n currentDate: any;\n calenderCurrentDate: any;\n todayDate: any;\n refreshTimer = 0;\n refreshInterval: any;\n calenderEvent: any;\n message: any;\n intervalId: any;\n mydata :any;\n dataList: any;\n //for datepicker\n title = 'datepicker';\n date: Date = new Date();\n options: DatepickerOptions = {\n inputClass: 'input',\n calendarClass: 'datepicker-default',\n scrollBarColor: '#010001',\n format: 'dd/LL/yyyy',\n maxDate: new Date()\n\n // for demo purpose\n \n };\n urlParams: any;\n isDemo: any;\n constructor(\n private excelService: ExceldataService,\n private pdService:PrincipalDashboardLibV2Service\n ) { }\n\n ngOnInit(): void {\n this.urlParams = new URLSearchParams(window.location.search);\n this.isDemo = this.urlParams.get('demo') === '1';\n this.getDefaultDate();\n this.startTimer();\n }\n getDefaultDate() {\n \n const selectedDate = this.isDemo ? new Date('2025-05-21T00:00:00') : new Date();\n this.getDateFormat(selectedDate);\n this.todayDate = this.calenderCurrentDate;\n console.log('this.isDemo', this.isDemo)\n if (this.isDemo) {\n this.mydata = null;\n this.refreshChart();\n this.pdService.openSmallTable.next(false);\n }\n \n }\n dateSelected(e: any){\n \n\n const selectedDate = this.isDemo ? new Date('2025-05-21T00:00:00') : new Date(e);\n\n console.log(\"Selected Date:\", selectedDate);\n this.getDateFormat(selectedDate);\n \n //const fixedDate = new Date('2025-05-21T00:00:00'); // Static date\n //console.log(\"Overriding selected date with fixed date:\", fixedDate);\n //this.getDateFormat(fixedDate);\n\n this.mydata = null;\n this.refreshChart();\n this.pdService.openSmallTable.next(false);\n }\n getDateFormat(date:any){\n let day = date.getDate();\n let month = date.getMonth() + 1;\n let year = date.getFullYear();\n let m;\n let d;\n if (month < 10) {\n m = \"0\" + month;\n } else {\n m = month;\n }\n if (day < 10) {\n d = \"0\" + day;\n } else {\n d = day;\n }\n let today = year + \"-\" + m + \"-\" + d;\n this.currentDate = today;\n this.calenderCurrentDate = today.split(\"-\").reverse().join(\"-\");\n }\n // selectDate(e: any) {\n // this.calenderEvent = e;\n // let today = e.target.value;\n // // console.log(\"e.target.value\", e.target.value);\n // today = today.split(\"-\").reverse().join(\"-\");\n // this.calenderCurrentDate = today;\n // this.mydata = null;\n // this.refreshChart();\n // // this.userSelectedDate.emit(this.calenderCurrentDate);\n // ;\n // console.log(\" IN --> 5\");\n // }\n refreshChart() {\n this.stopTimer();\n this.refreshTimer = 0;\n if(this.calenderCurrentDate === this.todayDate){\n this.countDown();\n }\n this.userSelectedDate.emit(this.calenderCurrentDate);\n }\n\n startTimer() {\n this.countDown();\n }\n stopTimer() {\n this.clearTimer();\n this.message = ``;\n }\n clearTimer() {\n this.refreshTimer = 0;\n window.clearInterval(this.intervalId);\n }\n countDown() {\n //console.log(\"countDown\")\n this.clearTimer();\n this.intervalId = window.setInterval(() => {\n this.refreshTimer -= 1;\n if (this.refreshTimer === 0) {\n this.refreshChart();\n this.message = '';\n } else {\n if (this.refreshTimer < 0) {\n this.refreshTimer = 300;\n } // reset\n this.message = `${this.refreshTimer}`;\n }\n }, 1000);\n }\n timeConvert(n: any) {\n var num = n;\n var hours = num / 60;\n var rhours = Math.floor(hours);\n var minutes = (hours - rhours) * 60;\n var rminutes = Math.round(minutes);\n return rhours + ':' + rminutes;\n }\n // currentdataList: any;\n // currentResoursedataList:any;\n loadData(response: any){\n if(response){\n this.mydata = JSON.parse(response);\n if (this.mydata) {\n //get current data list\n let genarateUserReqiuredData = this.excelService.genarateUserReqiuredData_Excel(this.mydata);\n let currentdataList =genarateUserReqiuredData.userConsoleData;\n // resoureMetadata list\n let currentResoursedataList = this.excelService.genarateResourseReqiuredData_Excel(this.mydata);\n \n let deatilData = this.excelService.deatilData_Excel(currentdataList,currentResoursedataList);\n let userDetails_data = this.excelService.deatilUsage_Excel(deatilData);\n let UserSummary = this.excelService.userSummary_Excel(this.mydata,deatilData);\n \n let schoolDetails = this.mydata.schoolMetadata.school;\n let userDetails = userDetails_data;\n let terminalDetails = this.mydata.schoolTerminals.schoolTerminal;\n // console.log(\"schoolDetails\",schoolDetails);\n // console.log(\"UserSummary\",UserSummary);\n // console.log(\"terminalDetails\",terminalDetails);\n // console.log(\"userDetails\",userDetails);\n \n this.dataList = [\n [schoolDetails],\n UserSummary,\n terminalDetails,\n userDetails\n ]\n }\n }\n \n }\n exportReport(){\n if(this.mydata){\n this.excelService.exportAsExcelFile(this.dataList, 'UsageReport-'+ this.calenderCurrentDate);\n }\n \n }\n ngOnDestroy() {\n this.clearTimer();\n }\n \n}\n","import { Component, OnInit ,Input} from '@angular/core';\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\nimport { ChartType } from 'angular-google-charts';\n\n@Component({\n selector: 'lib-tableview',\n templateUrl: './tableview.component.html',\n styleUrls: ['./tableview.component.scss'],\n})\n\nexport class TableviewComponent implements OnInit {\n @Input() set data(res: any) {\n if(res!== null){\n this.loadTable(res);\n }\n }\n constructor(\n private pdService: PrincipalDashboardLibV2Service\n ) {}\n resourseMetadata: any;\n tableRow: any;\n userMetadata: any;\n tableViewDiv: any;\n tblBody: any;\n myXmlData: any;\n myChartType = ChartType.Table;\n currentdataList:any;\n currentResoursedataList:any;\n tableViewData:any;\n alluserList:any;\n isUserWise = true;\n \n ngOnInit(): void {\n \n }\n\n loadTable(response: any){\n console.log('mresponse: ',response)\n // let parse = new DOMParser();\n // this.myXmlData = parse.parseFromString(response, 'application/xml');\n if(response){\n this.myXmlData = JSON.parse(response);\n if(this.myXmlData){\n // get current data list\n //console.log(\"AAA myXmlData-->>\",this.myXmlData)\n let genarateUserReqiuredData = this.pdService.genarateUserReqiuredData(this.myXmlData);\n this.currentdataList =genarateUserReqiuredData.userConsoleData;\n // get all user list \n let fetchAlluserList = this.pdService.allUserChartData();\n this.alluserList = fetchAlluserList.fordurationTable;\n // resoureMetadata list\n this.currentResoursedataList = this.pdService.genarateResourseReqiuredData(this.myXmlData);\n \n //console.log(\"AAA genarateUserReqiuredData-->>\",genarateUserReqiuredData)\n //console.log(\"AAA this.currentResoursedataList-->>\",this.currentResoursedataList)\n }\n }\n \n \n this.tableViewDiv = document.getElementById('tableViewDiv');\n this.tableRow = document.getElementById('tableRow');\n this.tblBody = document.getElementById('tblBody');\n this.tableViewDiv.style.display = 'none';\n \n this.pdService.chartType.subscribe((data) => {\n if (data) {\n this.updateChartType(data);\n \n }\n });\n this.pdService.isUserWise_data.subscribe((data) => {\n this.updateDataType(data);\n \n });\n this.pdService.isAllUsers.subscribe((data) => {\n if(data){\n this.showAllUser();\n }else{\n this.showCurrentDataUser();\n }\n \n });\n }\n findAndSimplifyNestedArray(data) {\n //console.log('this.tableViewData',data)\n for (let i = 0; i < data.length; i++) {\n if (Array.isArray(data[i])) {\n const nestedArray = data[i];\n if (nestedArray.every(item => Array.isArray(item) && item.every(val => val === item[0]))) {\n data[i] = [[nestedArray[0][0]]];\n }\n return data[i]; \n }\n }\n \n return \"No nested array found.\";\n }\n\n \n showCurrentDataUser() {\n this.tableViewData = this.pdService.dataForTableView(this.currentdataList,this.currentResoursedataList);\n \n this.tableViewData = this.replaceTopicAndChapter(this.tableViewData);\n \n //this.tableViewData = this.findAndSimplifyNestedArray(this.tableViewData);\n let newTableViewData: any;\n\n \n \n for (var i = 0; i < this.tableViewData.length; i++){\n newTableViewData = this.findAndSimplifyNestedArray(this.tableViewData[i]);\n newTableViewData[newTableViewData.length-1] = newTableViewData[newTableViewData.length-1][0]\n }\n\n let anotherTableViewData: any;\n for (var j = 0; j < this.tableViewData.length; j++){\n anotherTableViewData = this.mergerSourceWithRoomData(this.tableViewData[j]); \n }\n\n if(this.tableViewData){\n //this.ueserWiseTableView(this.tableViewData);\n this.ueserWiseTableView(this.tableViewData);\n \n \n }\n //console.log('AAA mlaunchedFromm tableViewData', this.tableViewData)\n }\n\n \nreplaceTopicAndChapter(data) {\n let htmlStr = \"<span style='font-style: italic;color: #3F51B5;'>(seen)</span>\";\n return data.map(row => {\n if (Array.isArray(row)) {\n return row.map(item => {\n if (typeof item === 'string') {\n \n //item = item.replace(/Topic :\\s*(.+?)\\s*:\\s*0m 0s/, 'Topic: $1 ' + htmlStr);\n //item = item.replace(/Chapter :\\s*(.+?)\\s*:\\s*0m 0s/, 'Chapter: $1 ' + htmlStr);\n item = item.replace(/Topic :\\s*(.+?)\\s*:\\s*\\d+m \\d+s/, 'Topic: $1 ' + htmlStr);\n item = item.replace(/Chapter :\\s*(.+?)\\s*:\\s*\\d+m \\d+s/, 'Chapter: $1 ' + htmlStr);\n }\n return item;\n });\n }\n return row;\n });\n}\n\n mergerSourceWithRoomData(tableViewData){\n let lastIndexValue = tableViewData[tableViewData.length - 1].join(' ');\n // Merge last index value into the 6th index\n //console.log('lastIndexValue',lastIndexValue)\n if(lastIndexValue === 'ce6')\n {\n //lastIndexValue = '<span style=\"color:black;\"><i class=\"fa fa-windows\" aria-hidden=\"true\"></i></span>';\n lastIndexValue = '<span style=\"color:black;\"></span>';\n }else if(lastIndexValue === 'ce6-a'){\n lastIndexValue = '<span style=\"color:#1b60d1;font-weight:bold;font-size:14px;\"><i class=\"fa fa-android\" aria-hidden=\"true\"></i></span>';\n }else if(lastIndexValue === 'c'){\n lastIndexValue = '<span style=\"color:#1b60d1;font-weight:bold;font-size:14px; display:flex;\"><i style=\"margin-top:-1px;\" class=\"fa fa-android\" aria-hidden=\"true\"></i><i style=\"margin-left:5px;\" class=\"fa fa-desktop\" aria-hidden=\"true\"></i></span>';\n }\n //tableViewData[6] = tableViewData[6] + '\\n' + lastIndexValue;\n //tableViewData[6] = '<div style=\"display: flex;flex-direction: row;align-content: center;justify-content: flex-start;align-items: center;\">'+lastIndexValue + '&nbsp;&nbsp;' + '<span style=\"font-size:11px !important;color:gray;font-weight:600;\">'+tableViewData[6]+'</span></div>';\n\n tableViewData[6] = '<div style=\"display: flex;flex-direction: row;align-content: center;justify-content: flex-start;align-items: center;\">'+'<span style=\"font-size:11px !important;color:gray;font-weight:600;\">'+tableViewData[6]+'</span>'+ '<span style=\"color:transparent\">-</span>' +lastIndexValue + '</div>';\n \n // Optional: remove the last element (if no longer needed)\n tableViewData.pop();\n }\n\n\n showAllUser() {\n this.tableViewData = this.pdService.dataForTableView(this.alluserList ,this.currentResoursedataList);\n console.log('11decc tableViewDataBBB',this.replaceTopicAndChapter(this.tableViewData));\n this.tableViewData = this.replaceTopicAndChapter(this.tableViewData);\n\n\n //console.log('AAA userConsoleMatrix tableViewData', this.tableViewData)\n let newTableViewData: any;\n \n for (var i = 0; i < this.tableViewData.length; i++){\n newTableViewData = this.findAndSimplifyNestedArray(this.tableViewData[i]);\n if(newTableViewData[newTableViewData.length-1]){\n newTableViewData[newTableViewData.length-1] = newTableViewData[newTableViewData.length-1][0]\n }\n \n }\n\n let anotherTableViewData: any;\n for (var j = 0; j < this.tableViewData.length; j++){\n anotherTableViewData = this.mergerSourceWithRoomData(this.tableViewData[j]); \n }\n if(this.tableViewData){\n this.ueserWiseTableView(this.tableViewData);\n }\n }\n updateDataType(dataType: any) {\n this.isUserWise = dataType;\n }\n updateChartType(dataType: any) {\n this.myChartType = dataType;\n if (this.myChartType == ChartType.Timeline) {\n this.tableViewDiv.style.display = 'none';\n } else {\n this.tableViewDiv.style.display = 'block';\n }\n }\n \n ueserWiseTableView(resoureMetadata: any) {\n //console.log('AAA resoureMetadata', resoureMetadata);\n // this.deleterow(\"tableRow\");\n document.getElementById(\"tblBody\").innerHTML = \"\";\n let labelArray = new Array();\n let cnt = 0;\n for (let i = 0; i < resoureMetadata.length; i++) {\n for (let j = 0; j < 12; j++) {\n //let label = document.createElement('label');\n //label.appendChild(document.createTextNode(resoureMetadata[i][j]));\n\n let label:any = document.createElement('div');\n label.innerHTML = (resoureMetadata[i][j]);\n\n //console.log('11dec label.textContent',label.textContent)\n if (\n label.textContent === 'undefined' || \n label.textContent === undefined || \n label.textContent === 'undefined\\nce6-a' || \n label.textContent === 'undefined\\nce6' || \n label.textContent === 'undefined\\n' ||\n label.textContent === 'undefined\\nAndroid' || \n label.textContent === 'undefined\\nWeb' || \n label.textContent === 'undefined\\n' ||\n label.textContent === '\\nundefined' ||\n label.textContent === ' undefined' ||\n label.textContent === 'undefined-' ||\n label.textContent === 'undefined-c' ||\n label.textContent === 'undefined- ' \n\n \n ) {\n label.textContent = '';\n }\n \n labelArray.push(label);\n \n }\n }\n //console.log(\"labelArray\",labelArray);\n for (let j = 0; j <= resoureMetadata.length; j++) {\n let row = document.createElement('tr');\n \n let cell: any;\n for (let i = 0; i < 12; i++) {\n cell = document.createElement('td');\n \n if (cnt < labelArray.length) {\n cell.appendChild(labelArray[cnt]);\n row.appendChild(cell);\n }\n cnt++;\n }\n this.tblBody.appendChild(row);\n // this.tableRow.appendChild(this.tblBody);\n }\n \n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\n\n\n@Component({\n selector: 'lib-full-table-view',\n templateUrl: './full-table-view.component.html',\n styleUrls: ['./full-table-view.component.scss'],\n})\nexport class FullTableViewComponent implements OnInit {\n @Input() set data(res: any) {\n if(res!== null){\n console.log('newtable',JSON.parse(res));\n this.jsonResponse = JSON.parse(res)\n // rebuild rows when new data arrives (date change / refresh)\n if (this.isInitialized) {\n this.loadUserData();\n }\n }\n \n }\n constructor(\n private pdService: PrincipalDashboardLibV2Service\n ) {}\n currentUserArray: any[] = [];\n remaningUsers: any[] = [];\n allUsers: any[] = [];\n usersCheckboxChecked: boolean = false;\n classroomArray: any[] = [];\n allClassrooms: any[] = [];\n jsonResponse;\n isDisplay = false;\n isUserWise = true;\n isAllUsers = false;\n isInitialized = false;\n\n ngOnInit(): void {\n this.loadUserData();\n this.isInitialized = true;\n\n this.pdService.isUserWise_data.subscribe((data) => {\n this.isUserWise = data;\n });\n\n this.pdService.isAllUsers.subscribe((data) => {\n this.isAllUsers = !!data;\n });\n\n this.pdService.chartType.subscribe((data) => {\n if (data) {\n console.log('newTable', data);\n this.isDisplay = data === \"Table\"; \n }\n });\n }\n\n get userRows(): any[] {\n return this.isAllUsers ? this.allUsers : this.currentUserArray;\n }\n\n get classroomRows(): any[] {\n return this.isAllUsers ? this.allClassrooms : this.classroomArray;\n }\n\n loadUserData(): void {\n const json = this.jsonResponse; \n this.currentUserArray = [];\n this.remaningUsers = [];\n this.allUsers = [];\n this.classroomArray = [];\n this.allClassrooms = [];\n if (!json) return;\n\n const usersConsole = json.usersConsole.userConsole;\n const usersMetadata = json.usersMetadata.userMetadata;\n const resourcesMetadata = json.resourcesMetadata.resourceMetadata;\n\n usersConsole.forEach((user: any) => {\n let userDetails = usersMetadata.find(\n (userMeta: any) => userMeta.userId === user.userId\n );\n\n if (user?.userConsoleResources) {\n const userConsoleResource =\n user.userConsoleResources?.userConsoleResource;\n\n if (userConsoleResource && userConsoleResource.length > 0) {\n userConsoleResource.forEach((userResource: any, userIndex: number) => {\n const resourceId = userResource.resourceId;\n const resourceDetails = resourcesMetadata.find(\n (resource: any) =>\n resource.resourceId === resourceId &&\n userResource.type === resource.type\n );\n\n // console.log('userResource.type',userResource.type)\n const prefix = this.getDisplayTypeValue(userResource.type);\n const title = resourceDetails?.title || '';\n const tp = resourceDetails?.teachingPoint?.title;\n const subject = resourceDetails?.subject?.title;\n const chapter = resourceDetails?.chapter?.title;\n const grade = resourceDetails?.grade?.title;\n const startTime = new Date(user?.startTime);\n const endTime = new Date(user?.endTime);\n const totalDuration = this.formatTime(\n Math.round((endTime.getTime() - startTime.getTime()) / 1000)\n );\n let duration: any = parseInt(userResource?.duration || '0');\n //duration = duration === 0 ? \"<span style='colore:red;'>(Seen)</span>\" : this.formatTime(duration);\n \n if (userResource?.type?.includes('question') || userResource?.type?.includes('cquestion')) {\n duration = 0;\n } else {\n duration = duration === 0 ? \"<span class='seenTag' style='color:blue;'>(Seen)</span>\" : this.formatTime(duration);\n }\n\n let finalAssetTitle = `${prefix} : ${title} : ${duration}`\n if(title === ''){\n finalAssetTitle = `${prefix} : ${duration}`\n }\n // console.log('chapterTitlte', chapter)\n this.currentUserArray.push({\n userId: user.userId,\n teacherName: userIndex === 0 ? userDetails?.fullName : '',\n subjects: userIndex === 0 ? userDetails?.userSubjects : '',\n date: userIndex === 0 ? user?.selectedDate : '',\n startTime: userIndex === 0 ? this.formatDate(startTime) : '',\n endtime: userIndex === 0 ? this.formatDate(endTime) : '',\n totalDuration: userIndex === 0 ? totalDuration : '',\n room: userIndex === 0 ? user?.terminalIP : '',\n tp: tp,\n subject: subject,\n chapter: chapter,\n grade: grade,\n details: finalAssetTitle,\n });\n });\n }\n }\n });\n\n const currentUserIds = this.currentUserArray\n .map((x: any) => x.userId)\n .filter((x: any, i: number, a: any[]) => a.indexOf(x) === i);\n\n this.remaningUsers = usersMetadata\n .filter((user: any) => !currentUserIds.includes(user.userId))\n .map((user: any) => {\n return {\n userId: user.userId,\n teacherName: user?.fullName,\n subjects: user?.userSubjects,\n date: '',\n startTime: '',\n endtime: '',\n totalDuration: '0s',\n room: '',\n tp: '',\n subject: '',\n chapter: '',\n grade: '',\n details: '',\n };\n });\n\n this.allUsers = [...this.currentUserArray, ...this.remaningUsers];\n this.loadClassroomData(usersConsole, usersMetadata, resourcesMetadata);\n this.loadTable(this.currentUserArray);\n }\n\n // Classroom wise rows: grouped by room, then by session start time\n loadClassroomData(usersConsole: any[], usersMetadata: any[], resourcesMetadata: any[]): void {\n const schoolTerminals = this.jsonResponse?.schoolTerminals?.schoolTerminal || [];\n const roomNames: any = {};\n schoolTerminals.forEach((terminal: any) => {\n roomNames[terminal.terminalKey] = this.getTerminalLocation(terminal);\n });\n\n const sessionsByRoom: any = {};\n // every session is a bar in the classroom chart, so keep sessions without resources too\n usersConsole.forEach((user: any) => {\n const ip = user?.terminalIP || '';\n (sessionsByRoom[ip] = sessionsByRoom[ip] || []).push(user);\n });\n\n const roomLabel = (ip: string) => this.pdService.getRoomLabel(roomNames[ip], ip);\n const activeIPs = Object.keys(sessionsByRoom).sort((a, b) =>\n roomLabel(a).localeCompare(roomLabel(b), undefined, { numeric: true })\n );\n\n activeIPs.forEach((ip) => {\n const sessions = sessionsByRoom[ip].sort(\n (a: any, b: any) => new Date(a.startTime).getTime() - new Date(b.startTime).getTime()\n );\n sessions.forEach((user: any, sessionIndex: number) => {\n const userDetails = usersMetadata.find((userMeta: any) => userMeta.userId === user.userId);\n const startTime = new Date(user?.startTime);\n const endTime = new Date(user?.endTime);\n const totalDuration = this.formatTime(\n Math.round((endTime.getTime() - startTime.getTime()) / 1000)\n );\n\n const resources = user?.userConsoleResources?.userConsoleResource || [];\n const sessionRows = resources.length > 0 ? resources : [null];\n\n sessionRows.forEach((userResource: any, resourceIndex: number) => {\n const resourceDetails = userResource && resourcesMetadata.find(\n (resource: any) =>\n resource.resourceId === userResource.resourceId &&\n userResource.type === resource.type\n );\n const isFirstOfSession = resourceIndex === 0;\n this.classroomArray.push({\n room: isFirstOfSession && sessionIndex === 0 ? roomLabel(ip) : '',\n teacherName: isFirstOfSession ? userDetails?.fullName : '',\n date: isFirstOfSession ? user?.selectedDate : '',\n startTime: isFirstOfSession ? this.formatDate(startTime) : '',\n endtime: isFirstOfSession ? this.formatDate(endTime) : '',\n totalDuration: isFirstOfSession ? totalDuration : '',\n tp: resourceDetails?.teachingPoint?.title,\n subject: resourceDetails?.subject?.title,\n chapter: resourceDetails?.chapter?.title,\n grade: resourceDetails?.grade?.title,\n details: userResource ? this.getAssetDetails(userResource, resourceDetails) : '',\n });\n });\n });\n });\n\n const idleRooms = schoolTerminals\n .filter((terminal: any) => !sessionsByRoom[terminal.terminalKey])\n .map((terminal: any) => ({\n room: roomLabel(terminal.terminalKey),\n teacherName: '',\n date: '',\n startTime: '',\n endtime: '',\n totalDuration: '0s',\n tp: '',\n subject: '',\n chapter: '',\n grade: '',\n details: '',\n }));\n\n this.allClassrooms = [...this.classroomArray, ...idleRooms];\n }\n\n getTerminalLocation(terminal: any): string {\n try {\n return terminal?.metadata ? JSON.parse(terminal.metadata)?.location || '' : '';\n } catch (e) {\n return '';\n }\n }\n\n getAssetDetails(userResource: any, resourceDetails: any): string {\n const prefix = this.getDisplayTypeValue(userResource.type);\n const title = resourceDetails?.title || '';\n let duration: any = parseInt(userResource?.duration || '0');\n if (userResource?.type?.includes('question') || userResource?.type?.includes('cquestion')) {\n duration = 0;\n } else {\n duration = duration === 0 ? \"<span class='seenTag' style='color:blue;'>(Seen)</span>\" : this.formatTime(duration);\n }\n return title === '' ? `${prefix} : ${duration}` : `${prefix} : ${title} : ${duration}`;\n }\n\n getDisplayTypeValue(key: string): string {\n const assetTypeConfig = [\n { type: 'asset_media', display: 'Media' },\n { type: 'asset_print', display: 'Print' },\n { type: 'quiz', display: 'Quiz' },\n { type: 'question', display: 'Question' },\n { type: 'chapter', display: 'Chapter' },\n { type: 'tp', display: 'Topic' },\n { type: 'whiteboard', display: 'Whiteboard' },\n { type: 'widget', display: 'Widget' },\n { type: 'casset_media', display: 'cMedia' },\n { type: 'casset_print', display: 'cPrint' },\n { type: 'cquiz', display: 'cQuiz' },\n { type: 'cquestion', display: 'cQuestion' },\n { type: 'image', display: 'Image' },\n { type: 'video', display: 'Video' },\n { type: 'tools', display: 'Tools' },\n { type: 'feature', display: 'Feature' },\n { type: 'ebook', display: 'Ebook' }\n ];\n\n const asset = assetTypeConfig.find((value) => value.type === key);\n return asset ? asset.display : key;\n }\n\n formatDate(now: Date): string {\n let hours = now.getHours();\n const minutes = now.getMinutes();\n const seconds = now.getSeconds();\n const ampm = hours >= 12 ? 'PM' : 'AM';\n hours = hours % 12 || 12;\n\n return `${hours.toString().padStart(2, '0')}:${minutes\n .toString()\n .padStart(2, '0')}:${seconds.toString().padStart(2, '0')} ${ampm}`;\n }\n\n formatTime(seconds: number): string {\n const days = Math.floor(seconds / 86400);\n const hours = Math.floor((seconds % 86400) / 3600);\n const minutes = Math.floor((seconds % 3600) / 60);\n const secs = seconds % 60;\n\n if (seconds < 60) return `${secs}s`;\n if (seconds < 3600) return `${minutes}m ${secs}s`;\n if (seconds < 86400) return `${hours}h ${minutes}m ${secs}s`;\n\n return `${days}d ${hours}h ${minutes}m ${secs}s`;\n }\n\n loadTable(data: any[]): void {\n\n /*\n const tableBody = document.querySelector(\"#teacherTable tbody\");\n\n data.forEach((item) => {\n const row = document.createElement(\"tr\");\n for (const key in item) {\n const cell = document.createElement(\"td\");\n cell.textContent = item[key];\n if (key !== \"userId\") {\n row.appendChild(cell);\n }\n }\n tableBody.appendChild(row);\n });*/\n }\n\n toggleUsers(): void {\n this.usersCheckboxChecked = !this.usersCheckboxChecked;\n this.loadTable(\n this.usersCheckboxChecked\n ? this.allUsers\n : this.currentUserArray\n );\n }\n\n getMockJson(): any {\n // Replace with actual data fetching logic\n return {};\n }\n}\n","import { Component, HostListener, Input, OnInit } from '@angular/core';\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\n\n// one coloured card in the popup header; icon and tone pick the look\nexport interface SummaryCard {\n label: string;\n value: string;\n sub?: string;\n icon: 'sessions' | 'room' | 'teacher' | 'subject' | 'start' | 'end' | 'clock';\n tone: 'lime' | 'sand' | 'sky' | 'mint';\n}\n\n@Component({\n selector: 'lib-small-table-view',\n templateUrl: './small-table-view.component.html',\n styleUrls: ['./small-table-view.component.scss']\n})\nexport class SmallTableViewComponent implements OnInit {\n @Input() set data(res: any) {\n if(res!== null){\n //console.log('smallTable',JSON.parse(res));\n this.jsonResponse = JSON.parse(res)\n }\n \n }\n\n currentTimeFrameUserArray: any[] = [];\n currentUserArray: any[] = [];\n remaningUsers: any[] = [];\n allUsers: any[] = [];\n usersCheckboxChecked: boolean = false;\n jsonResponse;\n isDisplay = false;\n accentColor = '';\n // 'session' = one bar was clicked; 'all' = a row's total was clicked\n mode: 'session' | 'all' = 'session';\n allTitle = '';\n allSummary: SummaryCard[] = [];\n otherColumn = 'Room';\n // who used the room (classroom wise) or which rooms were used (user wise), with time each\n people: { label: string; time: string }[] = [];\n peopleTitle = '';\n constructor(\n private pdService: PrincipalDashboardLibV2Service\n ) {}\n\n ngOnInit(): void {\n this.pdService.openSmallTable$.subscribe((data) => {\n \n if(data){\n this.isDisplay = true;\n this.accentColor = this.pdService.detailAccentColor;\n if (data['allSessions'] && this.pdService.detailRowRequest) {\n this.loadRowSessions(this.pdService.detailRowRequest);\n return;\n }\n this.mode = 'session';\n \n let userid = this.findUserIdByName(data['userDetails'][0]);\n let startTime = data['userDetails'][1];\n let endTime = data['userDetails'][3];\n this.loadUserData(userid, startTime, endTime);\n }else{\n this.isDisplay = false;\n }\n \n });\n\n this.pdService.chartType.subscribe((data) => {\n this.isDisplay = false;\n });\n \n\n \n }\n\n\n findUserIdByName(name) {\n const json = this.jsonResponse;\n const user = json.usersMetadata.userMetadata.find(user => user.fullName === name);\n return user ? user.userId : null;\n }\n\n loadUserData(userId?: any, inputStartTime?: any, inputEndTime?:any): void {\n this.currentUserArray = [];\n this.allUsers = []\n this.currentTimeFrameUserArray = []\n const json = this.jsonResponse;\n const usersConsole = json.usersConsole.userConsole;\n const usersMetadata = json.usersMetadata.userMetadata;\n const resourcesMetadata = json.resourcesMetadata.resourceMetadata;\n\n const filteredUsersConsole = userId\n ? usersConsole.filter((user: any) => user.userId === userId)\n : usersConsole;\n\n filteredUsersConsole.forEach((user: any) => {\n this.currentUserArray.push(...this.rowsForConsole(user, usersMetadata, resourcesMetadata));\n });\n\n const currentUserIds = this.currentUserArray\n .map((x: any) => x.userId)\n .filter((x: any, i: number, a: any[]) => a.indexOf(x) === i);\n\n this.remaningUsers = usersMetadata\n .filter((user: any) => !currentUserIds.includes(user.userId))\n .map((user: any) => {\n return {\n userId: user.userId,\n teacherName: user?.fullName,\n subjects: user?.userSubjects,\n date: '',\n startTime: '',\n endtime: '',\n totalDuration: '0s',\n room: '',\n tp: '',\n subject: '',\n chapter: '',\n grade: '',\n details: '',\n };\n });\n\n this.allUsers = [...this.currentUserArray, ...this.remaningUsers];\n\n this.currentTimeFrameUserArray = this.filterDataByCriteria(this.currentUserArray, userId, inputStartTime, inputEndTime)\n console.log('smallData', this.currentTimeFrameUserArray)\n}\n\n\n\n\n // every session of a timeline row, oldest first; sessions with nothing opened still get a line\n loadRowSessions(request: any): void {\n this.mode = 'all';\n const json = this.jsonResponse;\n const usersConsole = json.usersConsole.userConsole;\n const usersMetadata = json.usersMetadata.userMetadata;\n const resourcesMetadata = json.resourcesMetadata.resourceMetadata;\n const wanted = request.sessions;\n\n const entries = usersConsole\n .filter((c: any) => wanted.some((s: any) =>\n s.userId === c.userId && s.ip === c.terminalIP && s.start === new Date(c.startTime).getTime()))\n .sort((a: any, b: any) => new Date(a.startTime).getTime() - new Date(b.startTime).getTime());\n\n const teacherName = (id: string) => (usersMetadata.find((u: any) => u.userId === id) || {}).fullName || '';\n const roomLabel = (ip: string) => this.getRoomName(ip) || ip;\n this.otherColumn = request.isUserWise ? 'Room' : 'Teacher';\n\n const rows: any[] = [];\n entries.forEach((c: any) => {\n const start = new Date(c.startTime);\n const end = new Date(c.endTime);\n const head = {\n sessionHead: true,\n sessionTime: `${this.formatClock(start)} – ${this.formatClock(end)}`,\n sessionDuration: this.formatTime(Math.round((end.getTime() - start.getTime()) / 1000)),\n sessionOther: request.isUserWise ? roomLabel(c.terminalIP) : teacherName(c.userId),\n };\n const sessionRows = this.rowsForConsole(c, usersMetadata, resourcesMetadata);\n if (sessionRows.length === 0) {\n rows.push({ ...head, empty: true });\n } else {\n sessionRows.forEach((r, i) => rows.push(i === 0 ? { ...r, ...head } : r));\n }\n });\n this.currentTimeFrameUserArray = rows;\n\n // time per teacher (or per room), in order of first appearance\n const timeByOther = new Map<string, number>();\n entries.forEach((c: any) => {\n const key = request.isUserWise ? roomLabel(c.terminalIP) : teacherName(c.userId);\n if (!key) return;\n const ms = new Date(c.endTime).getTime() - new Date(c.startTime).getTime();\n timeByOther.set(key, (timeByOther.get(key) || 0) + Math.max(ms, 0));\n });\n this.people = Array.from(timeByOther.entries()).map(([label, ms]) => ({ label, time: this.formatTime(Math.round(ms / 1000)) }));\n this.peopleTitle = request.isUserWise ? 'Rooms used' : 'Teachers in this room';\n\n // a bare room number reads better as \"Room 39\"\n this.allTitle = !request.isUserWise && /^\\d+$/.test(String(request.label).trim()) ? `Room ${request.label}` : request.label;\n this.allSummary = [\n { label: 'Sessions', value: `${entries.length}`, icon: 'sessions', tone: 'lime' },\n // just the count here; the names are listed under the cards\n { label: request.isUserWise ? 'Rooms' : 'Teachers', value: `${this.people.length}`, icon: request.isUserWise ? 'room' : 'teacher', tone: 'sand' },\n { label: 'First start', value: entries.length ? this.formatDate(new Date(entries[0].startTime)) : '—', icon: 'start', tone: 'sky' },\n {\n label: 'Last end',\n value: entries.length ? this.formatDate(new Date(Math.max(...entries.map((c: any) => new Date(c.endTime).getTime())))) : '—',\n icon: 'end',\n tone: 'sky',\n },\n { label: 'Total time', value: request.total || '—', icon: 'clock', tone: 'mint' },\n ];\n }\n\n // cards for a single session, read from the first row of that session\n get sessionSummary(): SummaryCard[] {\n const first = this.currentTimeFrameUserArray[0] || {};\n return [\n { label: 'Subject', value: first.subject || '—', icon: 'subject', tone: 'lime' },\n // room name when it has one, otherwise the IP\n { label: 'Room', value: first.roomName || first.room || '—', icon: 'room', tone: 'sand' },\n { label: 'Start', value: first.startTime || '—', icon: 'start', tone: 'sky' },\n { label: 'End', value: first.endtime || '—', icon: 'end', tone: 'sky' },\n { label: 'Total time', value: first.totalDuration || '—', icon: 'clock', tone: 'mint' },\n ];\n }\n\n formatClock(date: Date): string {\n const hours = date.getHours();\n return `${hours % 12 || 12}:${date.getMinutes().toString().padStart(2, '0')} ${hours >= 12 ? 'PM' : 'AM'}`;\n }\n\n // one row per resource opened in a single console session\n private rowsForConsole(user: any, usersMetadata: any[], resourcesMetadata: any[]): any[] {\n const rows: any[] = [];\n let userDetails = usersMetadata.find(\n (userMeta: any) => userMeta.userId === user.userId\n );\n\n if (user?.userConsoleResources) {\n const userConsoleResource = user.userConsoleResources?.userConsoleResource;\n\n if (userConsoleResource && userConsoleResource.length > 0) {\n userConsoleResource.forEach((userResource: any, userIndex: number) => {\n const resourceId = userResource.resourceId;\n const resourceDetails = resourcesMetadata.find(\n (resource: any) =>\n resource.resourceId === resourceId &&\n userResource.type === resource.type\n );\n\n const prefix = this.getDisplayTypeValue(userResource.type);\n const title = resourceDetails?.title || '';\n const tp = this.decodeHtmlEntities(resourceDetails?.teachingPoint?.title);\n const subject = this.decodeHtmlEntities(resourceDetails?.subject?.title);\n const chapter = this.decodeHtmlEntities(resourceDetails?.chapter?.title);\n const grade = this.decodeHtmlEntities(resourceDetails?.grade?.title);\n const startTime = new Date(user?.startTime);\n const endTime = new Date(user?.endTime);\n const totalDuration = this.formatTime(\n Math.round((endTime.getTime() - startTime.getTime()) / 1000)\n );\n let duration: any = parseInt(userResource?.duration || '0');\n \n //duration = duration === 0 ? \"<span class='dddd'>(Seen)</span>\" : this.formatTime(duration); \n if (userResource?.type?.includes('question') || userResource?.type?.includes('cquestion')) {\n duration = 0;\n } else {\n duration = duration === 0 ? \"<span class='dddd'>(Seen)</span>\" : this.formatTime(duration);\n }\n \n let finalAssetTitle = `${prefix} : ${title} : ${duration}`\n if(title === ''){\n finalAssetTitle = `${prefix} : ${duration}`\n }\n \n rows.push({\n \n userId: user.userId,\n teacherName: userIndex === 0 ? userDetails?.fullName : '',\n subjects: userIndex === 0 ? userDetails?.userSubjects : '',\n date: userIndex === 0 ? user?.selectedDate : '',\n startTime: userIndex === 0 ? this.formatDate(startTime) : this.formatDate(startTime),\n endtime: userIndex === 0 ? this.formatDate(endTime) : this.formatDate(endTime),\n // kept on every row: the popup reads it from whichever row comes first\n totalDuration: totalDuration,\n room: userIndex === 0 ? user?.terminalIP : '',\n roomName: userIndex === 0 ? this.getRoomName(user?.terminalIP) : '',\n tp: tp,\n subject: subject,\n chapter: chapter,\n grade: grade,\n details: finalAssetTitle,\n ip: user?.terminalIP,\n sessionStart: startTime.getTime(),\n });\n \n \n });\n }\n }\n return rows;\n }\n\nfilterDataByCriteria(userData, inputUserId, inputStartTime, inputEndTime) {\n \n const parseTime = (timeString) => {\n if (!timeString) return null; \n const [time, meridian] = timeString.split(' ');\n const [hours, minutes, seconds] = time.split(':').map(Number);\n const isPM = meridian === 'PM';\n return new Date(0, 0, 0, isPM && hours < 12 ? hours + 12 : hours, minutes, seconds);\n };\n\n const startTime = parseTime(inputStartTime);\n const endTime = parseTime(inputEndTime);\n\n \n const filteredData = userData.filter((entry) => {\n if (entry.userId !== inputUserId) return false; \n if (!entry.startTime || !entry.endtime) return false; \n const entryStart = parseTime(entry.startTime);\n const entryEnd = parseTime(entry.endtime);\n return entryStart && entryEnd && entryStart >= startTime && entryEnd <= endTime;\n });\n\n \n return filteredData.map((entry, index) => ({ ...entry, subsequentCount: index }));\n}\n\n\n\n // Converts entities like &#8242; or &amp; into their characters so they render as text\n decodeHtmlEntities(value: string): string {\n if (!value) return value;\n const textarea = document.createElement('textarea');\n textarea.innerHTML = value;\n return textarea.value;\n }\n\n getDisplayTypeValue(key: string): string {\n const assetTypeConfig = [\n { type: 'asset_media', display: 'Media' },\n { type: 'asset_print', display: 'Print' },\n { type: 'quiz', display: 'Quiz' },\n { type: 'question', display: 'Question' },\n { type: 'chapter', display: 'Chapter' },\n { type: 'tp', display: 'Topic' },\n { type: 'whiteboard', display: 'Whiteboard' },\n { type: 'widget', display: 'Widget' },\n { type: 'casset_media', display: 'cMedia' },\n { type: 'casset_print', display: 'cPrint' },\n { type: 'cquiz', display: 'cQuiz' },\n { type: 'cquestion', display: 'cQuestion' },\n { type: 'image', display: 'Image' },\n { type: 'video', display: 'Video' },\n { type: 'tools', display: 'Tools' },\n { type: 'feature', display: 'Feature' },\n ];\n\n const asset = assetTypeConfig.find((value) => value.type === key);\n return asset ? asset.display : key;\n }\n\n formatDate(now: Date): string {\n let hours = now.getHours();\n const minutes = now.getMinutes();\n const seconds = now.getSeconds();\n const ampm = hours >= 12 ? 'PM' : 'AM';\n hours = hours % 12 || 12;\n\n return `${hours.toString().padStart(2, '0')}:${minutes\n .toString()\n .padStart(2, '0')}:${seconds.toString().padStart(2, '0')} ${ampm}`;\n }\n\n formatTime(seconds: number): string {\n const days = Math.floor(seconds / 86400);\n const hours = Math.floor((seconds % 86400) / 3600);\n const minutes = Math.floor((seconds % 3600) / 60);\n const secs = seconds % 60;\n\n if (seconds < 60) return `${secs}s`;\n if (seconds < 3600) return `${minutes}m ${secs}s`;\n if (seconds < 86400) return `${hours}h ${minutes}m ${secs}s`;\n\n return `${days}d ${hours}h ${minutes}m ${secs}s`;\n }\n\n loadTable(data: any[]): void {\n\n /*\n const tableBody = document.querySelector(\"#teacherTable tbody\");\n\n data.forEach((item) => {\n const row = document.createElement(\"tr\");\n for (const key in item) {\n const cell = document.createElement(\"td\");\n cell.textContent = item[key];\n if (key !== \"userId\") {\n row.appendChild(cell);\n }\n }\n tableBody.appendChild(row);\n });*/\n }\n\n toggleUsers(): void {\n this.usersCheckboxChecked = !this.usersCheckboxChecked;\n this.loadTable(\n this.usersCheckboxChecked\n ? this.allUsers\n : this.currentUserArray\n );\n }\n\n // room name from schoolTerminals metadata, '' when not set\n getRoomName(ip: string): string {\n const terminals = this.jsonResponse?.schoolTerminals?.schoolTerminal || [];\n const terminal = terminals.find((t: any) => t.terminalKey === ip);\n try {\n return terminal?.metadata ? (JSON.parse(terminal.metadata)?.location || '').trim() : '';\n } catch (e) {\n return '';\n }\n }\n\n @HostListener('document:keydown.escape')\n onEscape() {\n if (this.isDisplay) {\n this.onCloseBtnClick();\n }\n }\n\n onCloseBtnClick() {\n this.isDisplay = false;\n \n \n //this.pdService.openSmallTable.next(false);\n }\n \n\n}\n","import { Component, EventEmitter, Input, OnChanges, Output } from '@angular/core';\n\nexport interface TimelineBar {\n start: Date;\n end: Date;\n index: number; // position of the session in the list the chart was built from\n tooltip: string;\n}\n\nexport interface TimelineRow {\n label: string;\n bars: TimelineBar[];\n}\n\ninterface RenderedBar extends TimelineBar {\n left: number;\n width: number;\n color: string;\n}\n\ninterface RenderedRow {\n label: string;\n color: string;\n totalMs: number;\n total: string;\n order: number;\n bars: RenderedBar[];\n // first start to last end, drawn as a light band behind the bars\n spanLeft: number;\n spanWidth: number;\n}\n\n@Component({\n selector: 'lib-timeline',\n templateUrl: './timeline.component.html',\n styleUrls: ['./timeline.component.scss'],\n})\nexport class TimelineComponent implements OnChanges {\n @Input() rows: TimelineRow[] = [];\n @Input() labelTitle = 'Name';\n @Output() barClick = new EventEmitter<{ index: number; color: string }>();\n // clicking a row's total asks for every session in that row\n @Output() totalClick = new EventEmitter<{ label: string; indexes: number[]; color: string; total: string }>();\n\n renderedRows: RenderedRow[] = [];\n ticks: { left: number; label: string; major: boolean }[] = [];\n // :15 and :45 marks, drawn in the header only, without labels\n quarterTicks: number[] = [];\n // fixed width per hour so a full day scrolls horizontally instead of squeezing\n hourWidth = 160;\n minWidth = 0;\n nowLeft: number = null;\n sortKey: 'default' | 'name' | 'total' = 'default';\n sortAsc = true;\n tooltip: { text: string; x: number; y: number } = null;\n\n private rangeStart = 0;\n private rangeEnd = 0;\n\n ngOnChanges(): void {\n this.render();\n }\n\n render(): void {\n const rows = this.rows || [];\n const allBars = rows.reduce((acc, row) => acc.concat(row.bars), [] as TimelineBar[]);\n\n if (allBars.length === 0) {\n this.ticks = [];\n this.quarterTicks = [];\n this.nowLeft = null;\n this.minWidth = 0;\n this.renderedRows = rows.map((row, i) => this.toRenderedRow(row, i));\n this.applySort();\n return;\n }\n\n const minStart = Math.min(...allBars.map((b) => b.start.getTime()));\n const maxEnd = Math.max(...allBars.map((b) => b.end.getTime()));\n const hour = 3600 * 1000;\n const startDate = new Date(minStart);\n startDate.setMinutes(0, 0, 0);\n this.rangeStart = startDate.getTime();\n this.rangeEnd = Math.max(Math.ceil((maxEnd - this.rangeStart) / hour) * hour + this.rangeStart, this.rangeStart + hour);\n\n const spanHours = (this.rangeEnd - this.rangeStart) / hour;\n // label (170) + total (90) + track margins (48) + hours\n this.minWidth = 170 + 90 + 48 + spanHours * this.hourWidth;\n this.ticks = [];\n this.quarterTicks = [];\n for (let t = this.rangeStart; t <= this.rangeEnd; t += hour / 4) {\n const minutes = new Date(t).getMinutes();\n if (minutes === 15 || minutes === 45) {\n this.quarterTicks.push(this.toPercent(t));\n } else {\n this.ticks.push({ left: this.toPercent(t), label: this.formatClock(new Date(t)), major: minutes === 0 });\n }\n }\n\n const now = Date.now();\n this.nowLeft = now >= this.rangeStart && now <= this.rangeEnd ? this.toPercent(now) : null;\n\n this.renderedRows = rows.map((row, i) => this.toRenderedRow(row, i));\n this.applySort();\n }\n\n toggleSort(key: 'name' | 'total'): void {\n if (this.sortKey === key) {\n if (this.sortAsc) {\n this.sortAsc = false;\n } else {\n this.sortKey = 'default';\n this.sortAsc = true;\n }\n } else {\n this.sortKey = key;\n this.sortAsc = key === 'name';\n }\n this.applySort();\n }\n\n sortIcon(key: 'name' | 'total'): string {\n if (this.sortKey !== key) return '';\n return this.sortAsc ? '▲' : '▼';\n }\n\n onBarClick(bar: RenderedBar): void {\n this.tooltip = null;\n this.barClick.emit({ index: bar.index, color: bar.color });\n }\n\n onTotalClick(row: RenderedRow): void {\n if (!row.bars.length) return;\n this.tooltip = null;\n this.totalClick.emit({ label: row.label, indexes: row.bars.map((b) => b.index), color: row.color, total: row.total });\n }\n\n showTooltip(event: MouseEvent, bar: RenderedBar): void {\n this.tooltip = { text: bar.tooltip, x: event.clientX + 12, y: event.clientY + 12 };\n }\n\n hideTooltip(): void {\n this.tooltip = null;\n }\n\n trackByLabel(index: number, row: RenderedRow): string {\n return row.label;\n }\n\n private toRenderedRow(row: TimelineRow, i: number): RenderedRow {\n const totalMs = this.mergedDuration(row.bars);\n const starts = row.bars.map((b) => b.start.getTime());\n const ends = row.bars.map((b) => b.end.getTime());\n const spanLeft = starts.length ? this.toPercent(Math.min(...starts)) : 0;\n const spanWidth = ends.length ? this.toPercent(Math.max(...ends)) - spanLeft : 0;\n return {\n spanLeft,\n spanWidth,\n label: row.label,\n color: this.rowColor(i),\n totalMs,\n total: this.formatDuration(totalMs),\n order: i,\n bars: row.bars.map((bar) => {\n const left = this.toPercent(bar.start.getTime());\n return {\n ...bar,\n left,\n width: Math.max(this.toPercent(bar.end.getTime()) - left, 0),\n color: this.rowColor(i),\n };\n }),\n };\n }\n\n // unique soft colour per row: golden-angle hue steps never repeat and keep neighbouring rows apart\n private rowColor(index: number): string {\n const hue = Math.round((217 + index * 137.508) % 360);\n return `hsl(${hue}, 62%, 68%)`;\n }\n\n private applySort(): void {\n const dir = this.sortAsc ? 1 : -1;\n this.renderedRows = [...this.renderedRows].sort((a, b) => {\n if (this.sortKey === 'name') {\n return dir * a.label.localeCompare(b.label, undefined, { numeric: true });\n }\n if (this.sortKey === 'total') {\n return dir * (a.totalMs - b.totalMs);\n }\n return a.order - b.order;\n });\n }\n\n // overlapping sessions in the same row are counted once\n private mergedDuration(bars: TimelineBar[]): number {\n const sorted = [...bars].sort((a, b) => a.start.getTime() - b.start.getTime());\n let total = 0;\n let curStart = null;\n let curEnd = null;\n sorted.forEach((bar) => {\n const s = bar.start.getTime();\n const e = bar.end.getTime();\n if (curEnd === null || s > curEnd) {\n if (curEnd !== null) total += curEnd - curStart;\n curStart = s;\n curEnd = e;\n } else if (e > curEnd) {\n curEnd = e;\n }\n });\n if (curEnd !== null) total += curEnd - curStart;\n return total;\n }\n\n private toPercent(time: number): number {\n const span = this.rangeEnd - this.rangeStart;\n return span > 0 ? ((time - this.rangeStart) / span) * 100 : 0;\n }\n\n private formatClock(date: Date): string {\n let hours = date.getHours();\n const minutes = date.getMinutes();\n const ampm = hours >= 12 ? 'PM' : 'AM';\n hours = hours % 12 || 12;\n return minutes === 0 ? `${hours} ${ampm}` : `${hours}:${minutes.toString().padStart(2, '0')}`;\n }\n\n private formatDuration(ms: number): string {\n const totalMinutes = Math.round(ms / 60000);\n const hours = Math.floor(totalMinutes / 60);\n const minutes = totalMinutes % 60;\n return `${hours}:${minutes.toString().padStart(2, '0')} hrs`;\n }\n}\n","import { AfterViewInit, Component, ElementRef, HostListener, Input } from '@angular/core';\nimport html2canvas from 'html2canvas';\nimport { jsPDF } from 'jspdf';\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\n\ninterface Interval {\n start: number;\n end: number;\n}\n\ninterface Session extends Interval {\n userId: string;\n ip: string;\n resources: { resourceId: string; type: string }[];\n}\n\nexport interface BarItem {\n label: string;\n sub?: string;\n value: number;\n display: string;\n percent: number;\n color?: string;\n}\n\nexport interface Kpi {\n label: string;\n value: string;\n hint: string;\n // what is on screen while the numbers count up\n shown?: string;\n}\n\nconst MINUTE = 60 * 1000;\nconst HOUR = 60 * MINUTE;\nconst SHORT_SESSION_MIN = 5;\n// width the page is laid out at for the PDF, so the export looks the same on any screen\nconst PDF_RENDER_WIDTH = 1280;\n\n@Component({\n selector: 'lib-insights',\n templateUrl: './insights.component.html',\n styleUrls: ['./insights.component.scss'],\n})\nexport class InsightsComponent implements AfterViewInit {\n @Input() set data(res: any) {\n if (res) {\n this.build(typeof res === 'string' ? JSON.parse(res) : res);\n }\n }\n\n schoolName = '';\n dayLabel = '';\n kpis: Kpi[] = [];\n hourly: { label: string; value: number; percent: number; peak: boolean; color: string }[] = [];\n grades: BarItem[] = [];\n topTeachers: BarItem[] = [];\n // donut of subject share: each segment is a dash along one circle\n subjectDonut: { total: string; segments: (BarItem & { dash: string; offset: number })[] } = { total: '', segments: [] };\n readonly donutRadius = 52;\n // columns per class, in class order\n gradeColumns: (BarItem & { short: string })[] = [];\n // one tile per room, shaded by share of the school day in use\n roomTiles: { label: string; display: string; share: number; shade: string; dark: boolean; idle: boolean; span: number }[] = [];\n idleRooms: string[] = [];\n inactiveTeachers: string[] = [];\n contentMix: BarItem[] = [];\n chapters: BarItem[] = [];\n attention: { label: string; value: number; hint: string; icon: 'teacher' | 'room' | 'clock' | 'book'; shown?: number }[] = [];\n hasSessions = false;\n isExporting = false;\n // accordion: the full follow-up lists open below the summary tiles\n detailsOpen = false;\n eligibleCount = 0;\n classroomCount = 0;\n private fileDate = '';\n\n constructor(private pdService: PrincipalDashboardLibV2Service, private host: ElementRef<HTMLElement>) {}\n\n ngAfterViewInit(): void {\n setTimeout(() => this.fitHeight());\n }\n\n // fill from where the page starts down to the bottom of the window and scroll inside it\n @HostListener('window:resize')\n fitHeight(): void {\n const page = this.host.nativeElement.querySelector('.in-page') as HTMLElement;\n if (!page) return;\n const top = page.getBoundingClientRect().top;\n page.style.height = Math.max(window.innerHeight - top, 240) + 'px';\n }\n\n private build(json: any): void {\n const users: any[] = this.list(json, 'usersMetadata', 'userMetadata');\n const consoles: any[] = this.list(json, 'usersConsole', 'userConsole');\n const resources: any[] = this.list(json, 'resourcesMetadata', 'resourceMetadata');\n const terminals: any[] = this.list(json, 'schoolTerminals', 'schoolTerminal');\n\n this.schoolName = (json.schoolMetadata && json.schoolMetadata.school && json.schoolMetadata.school.schoolName) || '';\n\n const userById = new Map<string, any>();\n users.forEach((u) => userById.set(u.userId, u));\n const resourceById = new Map<string, any>();\n resources.forEach((r) => resourceById.set(r.resourceId, r));\n const roomByIp = new Map<string, string>();\n terminals.forEach((t) => roomByIp.set(t.terminalKey, this.pdService.getRoomLabel(this.location(t.metadata), t.terminalKey)));\n const classrooms = terminals.filter((t) => t.terminalType === 'classroom');\n\n const sessions: Session[] = consoles\n .map((c) => ({\n userId: c.userId,\n ip: c.terminalIP,\n start: this.parseTime(c.startTime),\n end: this.parseTime(c.endTime),\n resources: ((c.userConsoleResources && c.userConsoleResources.userConsoleResource) || []).map((r: any) => ({\n resourceId: r.resourceId,\n type: r.type,\n })),\n }))\n .filter((s) => !isNaN(s.start) && !isNaN(s.end) && s.end >= s.start);\n // zero-length entries are logins with no class time; keep them out of time-based figures\n const timed = sessions.filter((s) => s.end > s.start);\n this.hasSessions = sessions.length > 0;\n\n const first = sessions.length ? new Date(Math.min(...sessions.map((s) => s.start))) : null;\n this.fileDate = first\n ? [first.getDate(), first.getMonth() + 1].map((n) => String(n).padStart(2, '0')).join('-') + '-' + first.getFullYear()\n : '';\n this.dayLabel = first ? first.toLocaleDateString('en-GB', { weekday: 'long', day: 'numeric', month: 'short', year: 'numeric' }) : '';\n\n // ---- teachers\n const eligible = users.filter((u) => (u.userSubjects || '') !== '');\n const timeByUser = this.groupTime(timed, (s) => s.userId);\n const sessionsByUser = this.countBy(timed, (s) => s.userId);\n const activeUserIds = new Set(sessions.map((s) => s.userId));\n const totalTeachingMs = Array.from(timeByUser.values()).reduce((a, b) => a + b, 0);\n const activeEligible = eligible.filter((u) => activeUserIds.has(u.userId)).length;\n this.eligibleCount = eligible.length;\n this.classroomCount = classrooms.length;\n\n this.topTeachers = this.toBars(\n Array.from(timeByUser.entries()).map(([id, ms]) => ({\n label: this.userName(userById.get(id), id),\n sub: `${sessionsByUser.get(id) || 0} sessions`,\n value: ms,\n })),\n (ms) => this.formatDuration(ms),\n 8\n );\n\n this.inactiveTeachers = eligible\n .filter((u) => !activeUserIds.has(u.userId))\n .map((u) => this.userName(u, u.userId))\n .sort((a, b) => a.localeCompare(b));\n\n // ---- rooms\n const timeByRoom = this.groupTime(timed, (s) => s.ip);\n const usedIps = new Set(sessions.map((s) => s.ip));\n const usedClassrooms = classrooms.filter((t) => usedIps.has(t.terminalKey)).length;\n const daySpan = timed.length ? Math.max(...timed.map((s) => s.end)) - Math.min(...timed.map((s) => s.start)) : 0;\n\n // every installed classroom plus any other room that was used, in room order\n const tileIps = classrooms.map((t) => t.terminalKey).concat(Array.from(timeByRoom.keys()).filter((ip) => !classrooms.some((t) => t.terminalKey === ip)));\n const maxRoomMs = Math.max(...Array.from(timeByRoom.values()), 1);\n this.roomTiles = tileIps\n .map((ip) => {\n const ms = timeByRoom.get(ip) || 0;\n const share = daySpan ? Math.round((ms / daySpan) * 100) : 0;\n return {\n label: roomByIp.get(ip) || ip,\n display: ms ? `${this.formatDuration(ms)} · ${share}% of the day` : 'Not used today',\n share,\n // pale blue for little use through to deep navy for the busiest room\n shade: share ? this.navyShade(ms / maxRoomMs) : '',\n dark: !!share && Math.pow(ms / maxRoomMs, 1.8) > 0.5,\n // shown as an outlined tile: unused, or used for under 1% of the day\n idle: !share,\n // long names (\"science lab\", \"127.0.0.1\") take extra columns so they show in full\n span: Math.min(Math.ceil(((roomByIp.get(ip) || ip).length + 2) / 5), 4),\n };\n })\n .sort((a, b) => a.label.localeCompare(b.label, undefined, { numeric: true }));\n\n this.idleRooms = classrooms\n .filter((t) => !usedIps.has(t.terminalKey))\n .map((t) => roomByIp.get(t.terminalKey))\n .sort((a, b) => a.localeCompare(b, undefined, { numeric: true }));\n\n // ---- through the day: distinct teachers in a session during each hour\n this.hourly = [];\n if (timed.length) {\n const startHour = new Date(Math.min(...timed.map((s) => s.start)));\n startHour.setMinutes(0, 0, 0);\n const lastEnd = Math.max(...timed.map((s) => s.end));\n const counts: { label: string; value: number }[] = [];\n for (let t = startHour.getTime(); t < lastEnd; t += HOUR) {\n const teachers = new Set(timed.filter((s) => s.start < t + HOUR && s.end > t).map((s) => s.userId));\n counts.push({ label: this.formatHour(new Date(t)), value: teachers.size });\n }\n const max = Math.max(...counts.map((c) => c.value), 1);\n this.hourly = counts.map((c) => ({ ...c, percent: (c.value / max) * 100, peak: c.value === max, color: this.utilisationColor(c.value / max) }));\n }\n const peak = this.hourly.reduce((best, h) => (!best || h.value > best.value ? h : best), null);\n\n // ---- what was taught: session time split evenly across the subjects / grades it touched\n const subjectTime = new Map<string, number>();\n const gradeTime = new Map<string, number>();\n timed.forEach((s) => {\n const metas = s.resources.map((r) => resourceById.get(r.resourceId)).filter((m) => !!m);\n this.share(subjectTime, metas.map((m) => this.title(m.subject)), s.end - s.start);\n this.share(gradeTime, metas.map((m) => this.title(m.grade)), s.end - s.start);\n });\n this.subjectDonut = this.buildDonut(this.entries(subjectTime), 7);\n this.grades = this.toBars(\n this.entries(gradeTime).sort((a, b) => a.label.localeCompare(b.label, undefined, { numeric: true })),\n (ms) => this.formatDuration(ms),\n 0,\n false\n );\n\n this.gradeColumns = this.grades.map((g) => ({ ...g, short: this.shortGrade(g.label) }));\n\n // ---- content\n const launches = sessions.reduce((acc, s) => acc.concat(s.resources), [] as Session['resources']);\n const typeCounts = this.countBy(launches, (r) => this.typeLabel(r.type));\n this.contentMix = this.toBars(\n Array.from(typeCounts.entries()).map(([label, n]) => ({ label, value: n })),\n (n) => `${n}`,\n 0\n ).map((item, i) => ({ ...item, color: this.color(i), percent: (item.value / Math.max(launches.length, 1)) * 100 }));\n\n const chapterCounts = new Map<string, { n: number; sub: string }>();\n launches.forEach((r) => {\n const m = resourceById.get(r.resourceId);\n const chapter = m && this.title(m.chapter);\n if (!chapter) return;\n const key = `${this.title(m.subject)}|${this.title(m.grade)}|${chapter}`;\n const cur = chapterCounts.get(key) || { n: 0, sub: [this.title(m.subject), this.title(m.grade)].filter((x) => x).join(' · ') };\n cur.n++;\n chapterCounts.set(key, cur);\n });\n this.chapters = this.toBars(\n Array.from(chapterCounts.entries()).map(([key, v]) => ({ label: key.split('|')[2], sub: v.sub, value: v.n })),\n (n) => `${n} uses`,\n 8\n );\n\n // ---- headline numbers\n const avgSession = timed.length ? totalTeachingMs / timed.length : 0;\n const topics = new Set(launches.filter((r) => r.type === 'tp').map((r) => r.resourceId));\n this.kpis = [\n {\n label: 'Active Teachers',\n value: `${activeEligible} / ${eligible.length}`,\n hint: `${this.pct(activeEligible, eligible.length)} of eligible teachers`,\n },\n {\n label: 'Classrooms Used',\n value: `${usedClassrooms} / ${classrooms.length}`,\n hint: `${this.pct(usedClassrooms, classrooms.length)} of classrooms`,\n },\n {\n label: 'Teaching Time',\n value: this.formatDuration(totalTeachingMs),\n hint: `${this.formatDuration(activeUserIds.size ? totalTeachingMs / activeUserIds.size : 0)} per active teacher`,\n },\n {\n label: 'Sessions',\n value: `${timed.length}`,\n hint: `${this.formatDuration(avgSession)} on average`,\n },\n {\n label: 'Content Used',\n value: `${launches.length}`,\n hint: `${topics.size} distinct topics`,\n },\n {\n label: 'Peak Hour',\n value: peak ? peak.label : '—',\n hint: peak ? `${peak.value} teachers in class` : 'No sessions',\n },\n ];\n\n this.attention = [\n {\n label: 'Teachers Not Active',\n icon: 'teacher',\n value: this.inactiveTeachers.length,\n hint: 'Eligible teachers with no session today',\n },\n {\n label: 'Classrooms Not Used',\n icon: 'room',\n value: this.idleRooms.length,\n hint: 'Installed classrooms with no session today',\n },\n {\n label: `Sessions Under ${SHORT_SESSION_MIN} Min`,\n icon: 'clock',\n value: timed.filter((s) => s.end - s.start < SHORT_SESSION_MIN * MINUTE).length,\n hint: 'May be accidental log-ins',\n },\n {\n label: 'Sessions Without Content',\n icon: 'book',\n value: timed.filter((s) => s.resources.length === 0).length,\n hint: 'Logged in but nothing was used',\n },\n ];\n\n this.countUp();\n }\n\n // biggest slices first; anything past `keep` is grouped as \"Other\"\n private buildDonut(items: { label: string; value: number }[], keep: number) {\n const sorted = [...items].sort((a, b) => b.value - a.value);\n const shown = sorted.slice(0, keep);\n const rest = sorted.slice(keep).reduce((sum, i) => sum + i.value, 0);\n if (rest > 0) shown.push({ label: 'Other', value: rest });\n const total = shown.reduce((sum, i) => sum + i.value, 0);\n const circumference = 2 * Math.PI * this.donutRadius;\n let used = 0;\n const segments = shown.map((item, i) => {\n const length = total ? (item.value / total) * circumference : 0;\n const segment = {\n ...item,\n display: this.formatDuration(item.value),\n percent: total ? Math.round((item.value / total) * 100) : 0,\n color: item.label === 'Other' ? '#c9d2e3' : this.color(i),\n // small gap between slices\n dash: `${Math.max(length - 2, 0)} ${circumference}`,\n offset: -used,\n };\n used += length;\n return segment;\n });\n return { total: this.formatDuration(total), segments };\n }\n\n // 0 = quiet (light red), 0.5 = moderate (warm yellow), 1 = busiest (green)\n // `soft` lightens the colour so dark text on tiles stays readable\n private utilisationColor(ratio: number, soft = false): string {\n const stops = [\n { at: 0, h: 4, s: 82, l: 74 },\n { at: 0.5, h: 43, s: 90, l: 62 },\n { at: 1, h: 88, s: 45, l: 56 },\n ];\n const r = Math.min(Math.max(ratio, 0), 1);\n const [a, b] = r <= 0.5 ? [stops[0], stops[1]] : [stops[1], stops[2]];\n const t = (r - a.at) / (b.at - a.at);\n const mix = (x: number, y: number) => Math.round(x + (y - x) * t);\n const light = mix(a.l, b.l) + (soft ? 12 : 0);\n return `hsl(${mix(a.h, b.h)}, ${mix(a.s, b.s)}%, ${light}%)`;\n }\n\n // 0 = near-white blue, 1 = deep navy\n private navyShade(ratio: number): string {\n const from = [234, 241, 251];\n const to = [22, 43, 87];\n // eased so low and mid use stay light and only the busiest rooms turn dark\n const t = Math.pow(Math.min(Math.max(ratio, 0), 1), 1.8);\n const c = from.map((f, i) => Math.round(f + (to[i] - f) * t));\n return `rgb(${c[0]}, ${c[1]}, ${c[2]})`;\n }\n\n // \"Class 7\" -> \"7\", \"Early Childhood Education\" -> \"ECE\"\n private shortGrade(label: string): string {\n const match = /^class\\s+(.+)$/i.exec(label);\n if (match) return match[1];\n return label.split(/\\s+/).filter((w) => w).map((w) => w.charAt(0).toUpperCase()).join('').slice(0, 4);\n }\n\n // ---------- notes under charts: one takeaway from today's data\n\n get activityNote(): string {\n if (!this.hourly.length) return '';\n const peak = this.hourly.reduce((a, b) => (b.value > a.value ? b : a));\n const quiet = this.hourly.reduce((a, b) => (b.value < a.value ? b : a));\n return `Busiest at ${peak.label} with ${peak.value} teachers in class; quietest at ${quiet.label} with ${quiet.value}.`;\n }\n\n get chaptersNote(): string {\n const top = this.chapters[0];\n return top ? `Most used: ${top.label}${top.sub ? ' (' + top.sub + ')' : ''}, ${top.display}.` : '';\n }\n\n get subjectNote(): string {\n const top = this.subjectDonut.segments.find((s) => s.label !== 'Other');\n return top ? `${top.label} took the largest share of teaching time today (${top.percent}%, ${top.display}).` : '';\n }\n\n // ---------- count-up for the headline numbers\n\n private countFrame = 0;\n\n // every number inside a value (\"42 / 77\", \"48h 53m\") rises from 0 together\n private countUp(): void {\n cancelAnimationFrame(this.countFrame);\n const reduced = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n const apply = (progress: number) => {\n this.kpis.forEach((k) => (k.shown = k.value.replace(/\\d+/g, (n) => `${Math.round(+n * progress)}`)));\n this.attention.forEach((a) => (a.shown = Math.round(a.value * progress)));\n };\n if (reduced) {\n apply(1);\n return;\n }\n const duration = 900;\n const start = performance.now();\n const step = (now: number) => {\n const t = Math.min((now - start) / duration, 1);\n apply(1 - Math.pow(1 - t, 3));\n if (t < 1) this.countFrame = requestAnimationFrame(step);\n };\n apply(0);\n this.countFrame = requestAnimationFrame(step);\n }\n\n @HostListener('document:keydown.escape')\n closeDetails(): void {\n this.detailsOpen = false;\n }\n\n // \"Mrs Alisa Dsouza\" -> \"AD\"\n initials(name: string): string {\n const words = (name || '').split(/\\s+/).filter((w) => w && !/^(mr|mrs|miss|ms|dr)\\.?$/i.test(w));\n return words.length ? (words[0][0] + (words.length > 1 ? words[words.length - 1][0] : '')).toUpperCase() : '?';\n }\n\n // ---------- PDF export\n\n async downloadPdf(): Promise<void> {\n const page = this.host.nativeElement.querySelector('.in-page') as HTMLElement;\n if (!page || this.isExporting) return;\n this.isExporting = true;\n // render a full-length copy at a fixed width; the wrapper hides it on screen,\n // and is opened up only inside html2canvas's own copy of the document\n const wrapper = document.createElement('div');\n wrapper.setAttribute('data-pdf-wrapper', '');\n wrapper.style.cssText = 'position:fixed;left:0;top:0;width:0;height:0;overflow:hidden;z-index:-1;';\n const copy = page.cloneNode(true) as HTMLElement;\n copy.classList.add('in-exporting');\n copy.style.width = PDF_RENDER_WIDTH + 'px';\n wrapper.appendChild(copy);\n page.parentElement.appendChild(wrapper);\n try {\n // y positions where a new page may start without cutting a card\n const top = copy.getBoundingClientRect().top;\n const breaks = Array.from(copy.querySelectorAll('.in-card'))\n .map((card) => Math.round(card.getBoundingClientRect().top - top - 8))\n .filter((y, i, all) => y > 0 && all.indexOf(y) === i)\n .sort((a, b) => a - b);\n const canvas = await html2canvas(copy, {\n scale: 2,\n backgroundColor: '#ffffff',\n onclone: (doc) => {\n const clonedWrapper = doc.querySelector('[data-pdf-wrapper]') as HTMLElement;\n if (clonedWrapper) {\n clonedWrapper.style.overflow = 'visible';\n }\n },\n });\n this.savePdf(canvas, breaks.map((y) => y * 2));\n } finally {\n wrapper.remove();\n this.isExporting = false;\n }\n }\n\n // A4 portrait; each page takes whole rows of cards and long content is sliced as a last resort\n private savePdf(canvas: HTMLCanvasElement, breaks: number[]): void {\n const pdf = new jsPDF({ orientation: 'portrait', unit: 'mm', format: 'a4' });\n const margin = 10;\n const pageWidth = pdf.internal.pageSize.getWidth();\n const pageHeight = pdf.internal.pageSize.getHeight();\n const contentWidth = pageWidth - margin * 2;\n const mmPerPx = contentWidth / canvas.width;\n const maxSlice = Math.floor((pageHeight - margin * 2 - 6) / mmPerPx);\n\n const slices: [number, number][] = [];\n let start = 0;\n while (start < canvas.height) {\n let end = Math.min(start + maxSlice, canvas.height);\n if (end < canvas.height) {\n const fit = breaks.filter((b) => b > start && b <= end);\n if (fit.length) end = fit[fit.length - 1];\n }\n slices.push([start, end]);\n start = end;\n }\n\n slices.forEach(([from, to], i) => {\n const part = document.createElement('canvas');\n part.width = canvas.width;\n part.height = to - from;\n part.getContext('2d').drawImage(canvas, 0, from, canvas.width, to - from, 0, 0, canvas.width, to - from);\n if (i > 0) pdf.addPage();\n pdf.addImage(part.toDataURL('image/jpeg', 0.92), 'JPEG', margin, margin, contentWidth, part.height * mmPerPx);\n pdf.setFontSize(8);\n pdf.setTextColor(140);\n pdf.text(`${this.schoolName} · Usage insights`, margin, pageHeight - 5);\n pdf.text(`Page ${i + 1} of ${slices.length}`, pageWidth - margin, pageHeight - 5, { align: 'right' });\n });\n\n pdf.save(`Insights-${this.fileDate || 'report'}.pdf`);\n }\n\n // ---------- helpers\n\n private list(json: any, outer: string, inner: string): any[] {\n const value = json && json[outer] && json[outer][inner];\n return Array.isArray(value) ? value : [];\n }\n\n private location(metadata: any): string {\n try {\n return (typeof metadata === 'string' ? JSON.parse(metadata) : metadata || {}).location || '';\n } catch (e) {\n return '';\n }\n }\n\n // \"2024-12-10 07:01:24.0\" is not valid ISO for every browser, so add the \"T\"\n private parseTime(value: any): number {\n return value ? new Date(String(value).replace(' ', 'T')).getTime() : NaN;\n }\n\n private title(item: any): string {\n return (item && item.title ? String(item.title) : '').trim();\n }\n\n // known types use the dashboard's labels; others like \"casset_weblink\" become \"Weblink\"\n private typeLabel(type: string): string {\n if (!type) return 'Other';\n const label = this.pdService.getDisplaytypeValue(type);\n if (label !== type) return label;\n const words = type.replace(/^c?asset_/, '').replace(/_/g, ' ');\n return words.charAt(0).toUpperCase() + words.slice(1);\n }\n\n private userName(user: any, fallback: string): string {\n return user ? this.pdService.getName(user) : fallback;\n }\n\n // overlapping sessions for the same key are counted once\n private groupTime(sessions: Session[], key: (s: Session) => string): Map<string, number> {\n const grouped = new Map<string, Interval[]>();\n sessions.forEach((s) => {\n const k = key(s);\n grouped.set(k, (grouped.get(k) || []).concat({ start: s.start, end: s.end }));\n });\n const result = new Map<string, number>();\n grouped.forEach((intervals, k) => result.set(k, this.mergedDuration(intervals)));\n return result;\n }\n\n private mergedDuration(intervals: Interval[]): number {\n const sorted = [...intervals].sort((a, b) => a.start - b.start);\n let total = 0;\n let cur: Interval = null;\n sorted.forEach((i) => {\n if (!cur || i.start > cur.end) {\n if (cur) total += cur.end - cur.start;\n cur = { ...i };\n } else if (i.end > cur.end) {\n cur.end = i.end;\n }\n });\n return cur ? total + cur.end - cur.start : total;\n }\n\n private countBy<T>(items: T[], key: (item: T) => string): Map<string, number> {\n const result = new Map<string, number>();\n items.forEach((item) => result.set(key(item), (result.get(key(item)) || 0) + 1));\n return result;\n }\n\n private share(target: Map<string, number>, labels: string[], ms: number): void {\n const unique = Array.from(new Set(labels.filter((l) => l)));\n unique.forEach((l) => target.set(l, (target.get(l) || 0) + ms / unique.length));\n }\n\n private entries(map: Map<string, number>): { label: string; value: number }[] {\n return Array.from(map.entries()).map(([label, value]) => ({ label, value }));\n }\n\n // limit 0 = show all; bar length is relative to the largest value\n private toBars(\n items: { label: string; sub?: string; value: number }[],\n display: (value: number) => string,\n limit: number,\n sortByValue = true\n ): BarItem[] {\n const sorted = sortByValue ? [...items].sort((a, b) => b.value - a.value) : items;\n const shown = limit ? sorted.slice(0, limit) : sorted;\n const max = Math.max(...shown.map((i) => i.value), 1);\n return shown.map((i) => ({ ...i, display: display(i.value), percent: (i.value / max) * 100 }));\n }\n\n // blue and yellow first to match the page, then supporting tones\n private color(index: number): string {\n const palette = ['#7c9cf5', '#f6d27e', '#a9bffa', '#6fc6ba', '#f4a98a', '#c0aef7', '#f3a6c8', '#b4bfcf', '#fbe7b4'];\n return palette[index % palette.length];\n }\n\n private pct(part: number, whole: number): string {\n return whole ? `${Math.round((part / whole) * 100)}%` : '0%';\n }\n\n private formatHour(date: Date): string {\n const h = date.getHours();\n return `${h % 12 || 12} ${h >= 12 ? 'PM' : 'AM'}`;\n }\n\n formatDuration(ms: number): string {\n const minutes = Math.round(ms / MINUTE);\n const h = Math.floor(minutes / 60);\n const m = minutes % 60;\n return h ? `${h}h ${m}m` : `${m}m`;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { PrincipalDashboardLibV2Component } from './principal-dashboard-lib-v2.component';\n\nimport { ChartheaderComponent } from './chartheader/chartheader.component';\nimport { ChartviewComponent } from './chartview/chartview.component';\nimport { DetailedviewComponent } from './detailedview/detailedview.component';\nimport { HeaderComponent } from './header/header.component';\nimport { TableviewComponent } from './tableview/tableview.component';\nimport { GoogleChartsModule } from 'angular-google-charts';\nimport { CommonModule } from '@angular/common';\nimport { DatepickerModule } from 'ng2-datepicker';\nimport { FullTableViewComponent } from './full-table-view/full-table-view.component';\nimport { SmallTableViewComponent } from './small-table-view/small-table-view.component';\nimport { TimelineComponent } from './timeline/timeline.component';\nimport { InsightsComponent } from './insights/insights.component';\n\n\n\n@NgModule({\n declarations: [\n ChartheaderComponent,\n ChartviewComponent,\n DetailedviewComponent,\n HeaderComponent,\n TableviewComponent,\n PrincipalDashboardLibV2Component,\n FullTableViewComponent,\n SmallTableViewComponent,\n TimelineComponent,\n InsightsComponent\n ],\n imports: [\n CommonModule,\n GoogleChartsModule,\n DatepickerModule\n ],\n exports: [\n PrincipalDashboardLibV2Component\n ]\n})\nexport class PrincipalDashboardLibV2Module { }\n","/*\n * Public API Surface of principal-dashboard-lib-v2\n */\n\nexport * from './lib/principal-dashboard-lib-v2.service';\nexport * from './lib/principal-dashboard-lib-v2.component';\nexport * from './lib/principal-dashboard-lib-v2.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {ChartheaderComponent as ɵa} from './lib/chartheader/chartheader.component';\nexport {ChartviewComponent as ɵb} from './lib/chartview/chartview.component';\nexport {DetailedviewComponent as ɵc} from './lib/detailedview/detailedview.component';\nexport {ExceldataService as ɵe} from './lib/exceldata.service';\nexport {FullTableViewComponent as ɵg} from './lib/full-table-view/full-table-view.component';\nexport {HeaderComponent as ɵd} from './lib/header/header.component';\nexport {InsightsComponent as ɵj} from './lib/insights/insights.component';\nexport {SmallTableViewComponent as ɵh} from './lib/small-table-view/small-table-view.component';\nexport {TableviewComponent as ɵf} from './lib/tableview/tableview.component';\nexport {TimelineComponent as ɵi} from './lib/timeline/timeline.component';"],"names":["ReplaySubject","BehaviorSubject","Injectable","EventEmitter","Component","Input","Output","ChartType","XLSX.utils","XLSX.write","FileSaver.saveAs","HostListener","html2canvas","jsPDF","ElementRef","NgModule","CommonModule","GoogleChartsModule","DatepickerModule"],"mappings":"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"}
1
+ {"version":3,"file":"principal-dashboard-lib-v2.umd.js","sources":["../../../projects/principal-dashboard-lib-v2/src/lib/principal-dashboard-lib-v2.service.ts","../../../projects/principal-dashboard-lib-v2/src/lib/principal-dashboard-lib-v2.component.ts","../../../projects/principal-dashboard-lib-v2/src/lib/version.ts","../../../projects/principal-dashboard-lib-v2/src/lib/chartheader/chartheader.component.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/principal-dashboard-lib-v2/src/lib/chartview/chartview.component.ts","../../../projects/principal-dashboard-lib-v2/src/lib/detailedview/detailedview.component.ts","../../../projects/principal-dashboard-lib-v2/src/lib/exceldata.service.ts","../../../projects/principal-dashboard-lib-v2/src/lib/header/header.component.ts","../../../projects/principal-dashboard-lib-v2/src/lib/tableview/tableview.component.ts","../../../projects/principal-dashboard-lib-v2/src/lib/full-table-view/full-table-view.component.ts","../../../projects/principal-dashboard-lib-v2/src/lib/small-table-view/small-table-view.component.ts","../../../projects/principal-dashboard-lib-v2/src/lib/timeline/timeline.component.ts","../../../projects/principal-dashboard-lib-v2/src/lib/insights/insights.component.ts","../../../projects/principal-dashboard-lib-v2/src/lib/principal-dashboard-lib-v2.module.ts","../../../projects/principal-dashboard-lib-v2/src/public-api.ts","../../../projects/principal-dashboard-lib-v2/src/principal-dashboard-lib-v2.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Subject, BehaviorSubject, ReplaySubject } from 'rxjs';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PrincipalDashboardLibV2Service {\npublic resoureMetaData:any;\npublic usersMetaData:any;\npublic schoolTerminalData:any;\npublic userConsoleData:any;\n\npublic isResoureMetaDataReady = new ReplaySubject();\npublic isResoureMetaDataReady$ = this.isResoureMetaDataReady.asObservable();\n\npublic isUserReqiuredDataReady = new ReplaySubject();\npublic isUserReqiuredDataReady$ = this.isUserReqiuredDataReady.asObservable();\n\n public mychartType: any = '';\n public dataType: any = '';\n public userAllData: any = '';\n public userMetadata: any = {userDetails:[],resourceDetails:[]};\n public resoureMetadata = new Array();\n public userDetailObject: any = {};\n public userlist:any = false;\n public myEndTime :any;\n \n //for change chart Type\n public chartType = new BehaviorSubject(this.mychartType);\n public chartType$ = this.chartType.asObservable();\n //for change userWise To classRoom wise or vice versa\n public isUserWise_data = new BehaviorSubject(true);\n public isUserWise_data$ = this.isUserWise_data.asObservable();\n // for all user and current user information\n public isAllUsers = new BehaviorSubject(this.userlist);\n public isAllUsers$ = this.isAllUsers.asObservable();\n //for get details of selected user\n public detailedviewData = new BehaviorSubject(this.userMetadata);\n public detailedviewData$ = this.detailedviewData.asObservable();\n\n // true while the Insights tab is selected instead of the user / classroom views\n public isInsightsView = new BehaviorSubject(false);\n public isInsightsView$ = this.isInsightsView.asObservable();\n\n public openSmallTable = new BehaviorSubject(false);\n // colour of the timeline bar that opened the details popup\n public detailAccentColor = '';\n // set when the popup should list every session of a timeline row instead of one session\n public detailRowRequest: { label: string; isUserWise: boolean; total: string; sessions: { userId: string; ip: string; start: number }[] } = null;\n public openSmallTable$ = this.openSmallTable.asObservable();\n\n\n constructor() { }\n\n // the host may pass the day's data as a JSON string or as an already-parsed object\n parseData(res: any): any {\n if (!res) return null;\n if (typeof res !== 'string') return res;\n try {\n return JSON.parse(res);\n } catch (e) {\n console.error('principal-dashboard: could not parse data', e);\n return null;\n }\n }\n \n genarateResourseReqiuredData(data: any): any {\n this.isResoureMetaDataReady.next(false);\n let resourceMetadataMatrix = new Array();\n \n if(data && data !== null){\n let resouseID: any;\n let title: any;\n let subject: any;\n let grade: any;\n let chapter: any;\n let teachingPoint: any;\n let type: any;\n let resourceMetadata = data.resourcesMetadata.resourceMetadata;\n \n if(resourceMetadata!= undefined && resourceMetadata.length>0) {\n for (var i = 0; i < resourceMetadata.length;i++){\n //----------//resouseID\n resouseID = resourceMetadata[i].resourceId;\n //----------//subject\n if (resourceMetadata[i].subject != undefined) {\n if (resourceMetadata[i].subject.title != undefined) {\n subject = resourceMetadata[i].subject.title;\n } else {\n subject = '';\n }\n } else {\n subject = '';\n }\n //----------//grade\n if (resourceMetadata[i].grade != undefined) {\n if (resourceMetadata[i].grade.title != undefined) {\n grade = resourceMetadata[i].grade.title;\n } else {\n grade = '';\n }\n } else {\n grade = '';\n }\n //----------//chapter\n //console.log('LOOKCHP',resourceMetadata[i].chapter)\n if (resourceMetadata[i].chapter != undefined) {\n if (resourceMetadata[i].chapter.title != undefined) {\n chapter = resourceMetadata[i].chapter.title;\n } else {\n chapter = '';\n }\n } else {\n chapter = '';\n }\n \n //----------//teachingPoint\n //console.log('LOOKTP',resourceMetadata[i].teachingPoint)\n if (resourceMetadata[i].teachingPoint != undefined) {\n if (resourceMetadata[i].teachingPoint.title != undefined) {\n teachingPoint = resourceMetadata[i].teachingPoint.title;\n } else {\n //teachingPoint = '<span style=\"color:lightgray;\">--</span>';\n teachingPoint = '';\n }\n } else {\n //teachingPoint = '<span style=\"color:lightgray;\">--</span>';\n teachingPoint = '';\n }\n //----------//type\n if (resourceMetadata[i].type != undefined) {\n type = this.getDisplaytypeValue(resourceMetadata[i].type);\n } else {\n type = '';\n }\n \n //----------//title\n if (resourceMetadata[i].title != undefined) {\n title = resourceMetadata[i].title;\n } else {\n title = '';\n }\n let resourceMetauserConsoleData = {\n resouseID:resouseID,\n subject:subject,\n grade:grade,\n chapter:chapter,\n teachingPoint:teachingPoint,\n type:type,\n title:title\n }\n resourceMetadataMatrix.push(resourceMetauserConsoleData);\n this.resoureMetaData = resourceMetadataMatrix;\n this.isResoureMetaDataReady.next(true);\n }\n }\n }\n // this.resoureMetaData = resourceMetadataMatrix;\n return resourceMetadataMatrix;\n }\n\n getName(user): string {\n if(/School Admin/gm.exec(user.role)){\n return \"Support Admin\"\n }\n return user.fullName;\n }\n\n genarateUserReqiuredData(data: any): any {\n this.isUserReqiuredDataReady.next(false);\n let usersMetadataMatrix = new Array();\n let usermetadataMatrixUpdated = new Array();\n let schoolTerminalMatrix = new Array();\n let userConsoleMatrix = new Array();\n if(data && data !== null){\n let userConsole = data.usersConsole.userConsole;\n let usersMetadata = data.usersMetadata.userMetadata;\n let schoolTerminal = data.schoolTerminals.schoolTerminal;\n \n if(usersMetadata!= null && usersMetadata.length > 0){\n for (let i = 0; i < usersMetadata.length; i++) {\n let userId: any;\n let userName: any;\n let userSubjects: any;\n let listOfUser:any = {}\n if (usersMetadata[i].userId!=\"\") {\n userId = usersMetadata[i].userId;\n //console.log(\"--chartDataUserWise-->>\",usersMetadata[i].terminalIP)\n if (usersMetadata[i].fullName !== undefined) {\n userName = this.getName(usersMetadata[i]) // get name of user w.r.t. ID\n } else {\n userName = '';\n }\n \n if (usersMetadata[i].userSubjects !== undefined) {\n userSubjects = usersMetadata[i].userSubjects // get name of user w.r.t. ID\n } else {\n userSubjects = '';\n }\n \n listOfUser = {\n userId:userId, \n userName:userName, \n userSubjects:userSubjects\n };\n usersMetadataMatrix.push(listOfUser); // array of all users\n }\n }\n }\n for (var i = 0; i < usersMetadataMatrix.length; i++) {\n //console.log('usersMetadataMatrix-->', usersMetadataMatrix[i].userName)\n usersMetadataMatrix.forEach(element => {\n \n //console.log('element.userName-->>', element.userName)\n if (usersMetadataMatrix[i].userName === element.userName) {\n usermetadataMatrixUpdated.push(usersMetadataMatrix[i]); //array of same name users\n usersMetadataMatrix.splice(i, 1); //delete the same name users from usermetadataMatrix\n }\n });\n }\n for (var i = 0; i < usermetadataMatrixUpdated.length; i++) {\n // const randomNumber = document.createElement('span');\n // randomNumber.innerHTML = i.toString();\n //usermetadataMatrixUpdated[i].userName = usermetadataMatrixUpdated[i].userName + \" --- \" + i;\n \n usermetadataMatrixUpdated[i].userName = usermetadataMatrixUpdated[i].userName;\n usersMetadataMatrix.push(usermetadataMatrixUpdated[i]); //adding same name users in usermetadataMatrix with some random charators\n this.usersMetaData = usersMetadataMatrix;\n }\n if(schoolTerminal != null && schoolTerminal.length > 0){\n for (var i = 0; i < schoolTerminal.length; i++) {\n let schoolId:any;\n let terminalKey:any;\n let terminalType:any;\n let location:any;\n let schoolTerminalData:any = {};\n \n //----------//schoolId\n if (schoolTerminal[i].schoolId !== undefined) {\n schoolId = schoolTerminal[i].schoolId // get name of user w.r.t. ID\n } else {\n schoolId = '';\n }\n //----------//terminalKey\n if (schoolTerminal[i].terminalKey !== undefined) {\n terminalKey = schoolTerminal[i].terminalKey // get name of user w.r.t. ID\n } else {\n terminalKey = '';\n }\n //----------//terminalType\n if (schoolTerminal[i].terminalType !== undefined) {\n terminalType = schoolTerminal[i].terminalType // get name of user w.r.t. ID\n } else {\n terminalType = '';\n }\n \n //----------//location\n if (schoolTerminal[i].metadata !== undefined) {\n let metadataJSON = JSON.parse(schoolTerminal[i].metadata);\n \n location = metadataJSON.location // get name of user w.r.t. ID\n \n //console.log(\"metadataJSON\",location);\n } else {\n location = '';\n }\n schoolTerminalData = {\n schoolId:schoolId,\n terminalKey:terminalKey,\n terminalType:terminalType,\n location:location\n };\n \n //console.log('ccc--',schoolTerminalData)\n schoolTerminalMatrix.push(schoolTerminalData);\n this.schoolTerminalData = schoolTerminalMatrix;\n }\n }\n if(userConsole !=null && userConsole.length > 0){\n for (let index = 0; index < userConsole.length; index++) {\n let userId: any;\n let startTime: any;\n let endTime: any;\n let duration: any;\n let selectedDate: any;\n let terminalIP: any;\n let userConsoleResources: any;\n let resourceMetadataIDS: any;\n let resourceMetauserConsoleData = [];\n let resourceDurationFromConsole = [];\n let userName: any;\n let userSubjects: any;\n let terminalLocation: any;\n let launchedFrom = [];\n //console.log('myuserConsole', userConsole[index])\n //----------//user iD\n if (userConsole[index].userId !== undefined) {\n userId = userConsole[index].userId; // get name of user w.r.t. ID\n } else {\n userId = '';\n }\n //----------// startTime \n if (userConsole[index].startTime !== undefined) {\n startTime = userConsole[index].startTime; // get name of user w.r.t. ID\n } else {\n startTime = '';\n }\n //----------// endTime \n if (userConsole[index].endTime !== undefined) {\n endTime = userConsole[index].endTime // get name of user w.r.t. ID\n this.myEndTime = endTime;\n } else {\n endTime = '';\n }\n //----------// Date \n if (userConsole[index].selectedDate !== undefined) {\n selectedDate = userConsole[index].selectedDate // get name of user w.r.t. ID\n } else {\n selectedDate = '';\n }\n \n //----------// Duration\n if (userConsole[index].duration !== undefined) {\n duration = userConsole[index].duration // get name of user w.r.t. ID\n } else {\n duration = '';\n }\n //----------// terminalIP\n if (userConsole[index].terminalIP !== undefined) {\n terminalIP = userConsole[index].terminalIP // get name of user w.r.t. ID\n } else {\n terminalIP = '';\n }\n \n //----------// userConsoleResources\n if (userConsole[index].userConsoleResources !== undefined) {\n userConsoleResources = userConsole[index].userConsoleResources // get name of user w.r.t. ID\n } else {\n userConsoleResources = null;\n }\n \n if(userConsoleResources != null){\n if (userConsoleResources.userConsoleResource !== undefined) {\n \n userConsoleResources.userConsoleResource.forEach(item => {\n //console.log(\"lookingFor: \",item)\n resourceMetauserConsoleData.push(item.resourceId); // get name of user w.r.t. ID\n resourceDurationFromConsole.push(item.duration);\n \n \n\n if(item.launchedFrom){\n launchedFrom.push(item.launchedFrom)\n } \n // \n });\n // resourceMetauserConsoleData = userConsoleResources.userConsoleResource[index]resourceId; // get name of user w.r.t. ID\n } else {\n //console.log(\"lookingFor: ELSE \")\n resourceMetauserConsoleData = [];\n resourceDurationFromConsole = [];\n launchedFrom = [];\n }\n }\n \n //----------// userName and userSubjects\n for (let i = 0; i < usersMetadataMatrix.length; i++) {\n if (userId === usersMetadataMatrix[i].userId) {\n userName = usersMetadataMatrix[i].userName;\n userSubjects = usersMetadataMatrix[i].userSubjects;\n }\n }\n //----------// terminalIP and terminalLocation\n \n for (let i = 0; i < schoolTerminalMatrix.length; i++) {\n //console.log(\"schoolTerminalMatrix[i]\",schoolTerminalMatrix[i]);\n //console.log(\"schoolTerminalMatrix[i].terminalKey\",terminalIP,schoolTerminalMatrix[i].terminalKey);\n if (terminalIP === schoolTerminalMatrix[i].terminalKey) {\n terminalLocation = schoolTerminalMatrix[i].location;\n break;\n }else{\n terminalLocation = '';\n }\n }\n \n if (terminalLocation === undefined || terminalLocation === 'undefined') {\n terminalLocation = '';\n }\n// console.log('userName--',userName)\n const userData = {\n userId: userId,\n userName: userName,\n startTime: new Date(startTime),\n endTime: new Date(endTime),\n terminalIP: terminalIP,\n resourceMetauserConsoleData: resourceMetauserConsoleData,\n resourceDurationFromConsole: resourceDurationFromConsole,\n launchedFrom: launchedFrom,\n duration:duration,\n terminalLocation:terminalLocation,\n userSubjects:userSubjects\n };\n userConsoleMatrix.push(userData);\n this.userConsoleData = userConsoleMatrix;\n this.isUserReqiuredDataReady.next(true);\n }\n }\n }\n // console.log(usersMetadataMatrix,schoolTerminalMatrix,userConsoleMatrix);\n return {\n usersMetadata:usersMetadataMatrix,\n schoolTerminalData:schoolTerminalMatrix,\n userConsoleData: userConsoleMatrix\n }\n }\n userWiseChartData(){\n let dataTableforChart = new Array();\n dataTableforChart = [];\n if(this.userConsoleData){\n \n if(this.userConsoleData.length > 0){\n for(let i = 0; i < this.userConsoleData.length; i++){\n //console.log(\"chartDataUserWiseNew-->>\",this.userConsoleData)\n //console.log(\"chartDataUserWiseNew-->>\",this.userConsoleData.userName)\n \n if(typeof this.userConsoleData[i].userName === undefined){\n this.userConsoleData[i].userName = (Math.floor(Math.random() * 100)).toString();\n }\n \n\n \n if(this.userConsoleData[i].userName === undefined){\n this.userConsoleData[i].userName = \"-\"\n //console.log('pakad',this.userConsoleData[i].userName = \"-\", this.userConsoleData[i].userId)\n //this.userConsoleData.splice(i, 1);\n }\n \n /*\n if(this.userConsoleData[i].userName === \"-\"){\n this.userConsoleData.splice(i, 1); // 2nd parameter means remove one item only\n }*/\n //if(this.userConsoleData[i].userName !== undefined || this.userConsoleData[i].userName !== '-' || this.userConsoleData[i].userName !== '--')\n\n \n\n\n {\n \n let userData = [this.userConsoleData[i].userName,this.userConsoleData[i].startTime,this.userConsoleData[i].endTime];\n \n dataTableforChart.push(userData);\n }\n \n //console.log(\"chartDataUserWiseNewNew-->>\",userData)\n }\n }\n }\n return dataTableforChart;\n }\n classRoomWiseChartData(){\n let dataTableforChart = new Array();\n dataTableforChart = [];\n if(this.userConsoleData){\n \n for(let i = 0; i < this.userConsoleData.length; i++){\n //console.log('bbb-->',this.userConsoleData[i].terminalLocation)\n let roomName = this.userConsoleData[i].terminalLocation;\n\n let location = this.getRoomLabel(roomName, this.userConsoleData[i].terminalIP);\n //console.log('bbblocation-->',location)\n let userData = [location,this.userConsoleData[i].startTime,this.userConsoleData[i].endTime];\n dataTableforChart.push(userData);\n }\n }\n //console.log(\"this.classRoomWiseChartData\",dataTableforChart);\n return dataTableforChart;\n \n }\n\n\n newGetCurrentClassroomData(){\n\n let dataTableforChart = new Array();\n dataTableforChart = [];\n if(this.userConsoleData){\n \n for(let i = 0; i < this.userConsoleData.length; i++){\n //console.log('bbb-->',this.userConsoleData[i].terminalLocation)\n let roomName = this.userConsoleData[i].terminalLocation;\n let location = roomName +\" - \"+ this.userConsoleData[i].terminalIP\n //console.log('bbblocation-->',location)\n //let userData = [location];\n dataTableforChart.push(location);\n \n }\n }\n //console.log(\"this.classRoomWiseChartData\",dataTableforChart);\n dataTableforChart = this.uniq(dataTableforChart);\n return dataTableforChart;\n }\n\n // Row label for classroom wise chart: room name, or IP as fallback when name is missing\n getRoomLabel(roomName: any, roomIP: any) {\n const name = (roomName === undefined || roomName === null || roomName === 'undefined') ? '' : String(roomName).trim();\n return name !== '' ? name : (roomIP || '');\n }\n\n uniq(a) {\n return Array.from(new Set(a));\n }\n\n allUserChartData(){\n let dataTableforChart = new Array();\n dataTableforChart = [];\n let AlluserDetailsForTableChart =new Array();\n AlluserDetailsForTableChart = [];\n if(this.userConsoleData && this.usersMetaData){\n let inActiveuserName: any;\n let userSubjects: any;\n let myID: any;\n let AlluserDetails =new Array();\n for (let index = 0; index < this.userConsoleData.length; index++) {\n AlluserDetails.push(this.userConsoleData[index]);\n AlluserDetailsForTableChart.push(this.userConsoleData[index])\n }\n for (let i = 0; i < this.usersMetaData.length; i++) {\n myID = this.usersMetaData[i].userId;\n inActiveuserName = this.usersMetaData[i].userName;\n //if(inActiveuserName === undefined)\n {\n //console.log(\"alluser-1->>\",inActiveuserName);\n }\n \n userSubjects = this.usersMetaData[i].userSubjects;\n let myChartRowuserConsoleData = \n {\n userId:myID,\n userName: inActiveuserName,\n startTime:new Date(this.myEndTime),\n endTime:new Date(this.myEndTime),\n terminalIP:\"\",\n resourceMetauserConsoleData:[],\n duration:\"0\",\n terminalLocation:\"\",\n userSubjects:userSubjects\n };\n //AlluserDetails.push(myChartRowuserConsoleData);\n \n let myTableRowuserConsoleData = {\n userId:myID,\n userName: inActiveuserName,\n startTime:\"\",\n endTime:\"\",\n terminalIP:\"\",\n resourceMetauserConsoleData:[],\n duration:0,\n terminalLocation:\"\",\n userSubjects:userSubjects\n };\n //console.log(\"alluser-2->>\",inActiveuserName);\n AlluserDetailsForTableChart.push(myTableRowuserConsoleData);\n AlluserDetails.push(myChartRowuserConsoleData);\n }\n setTimeout(() => {\n for(let i = 0; i < AlluserDetails.length; i++){\n //console.log(\"alluser-3->>\",AlluserDetails[i]);\n \n if(AlluserDetails[i].userName == undefined){\n //AlluserDetails[i].userName = \"--\"\n AlluserDetails.splice(i, 1); // 2nd parameter means remove one item only\n }\n \n \n \n //if(AlluserDetails[i].userName !== undefined || AlluserDetails[i].userName !== '-' || AlluserDetails[i].userName !== '--')\n {\n\n if(AlluserDetails[i].userName === \"--\"){\n AlluserDetails.splice(i, 1); // 2nd parameter means remove one item only\n }\n setTimeout(function(){\n let userData = [AlluserDetails[i].userName,AlluserDetails[i].startTime,AlluserDetails[i].endTime];\n dataTableforChart.push(userData);\n },300)\n \n }\n \n }\n },50)\n\n /*\n for(let i = 0; i < AlluserDetails.length; i++){\n console.log(\"alluser-3->>\",AlluserDetails[i].userName);\n if(AlluserDetails[i].userName === undefined){\n AlluserDetails[i].userName = \"(-)\"\n }\n\n let userData = [AlluserDetails[i].userName,AlluserDetails[i].startTime,AlluserDetails[i].endTime];\n dataTableforChart.push(userData);\n }*/\n }\n return {forChartData:dataTableforChart,fordurationTable:AlluserDetailsForTableChart}\n }\n allRoomsData(){\n let dataTableforChart = new Array();\n dataTableforChart = [];\n let allRoomsDetails = new Array();\n allRoomsDetails = [];\n if(this.userConsoleData && this.schoolTerminalData){\n let myChartRowData: any={};\n let inActiveClassRoom: any;\n for(let i = 0; i < this.userConsoleData.length; i++){\n allRoomsDetails.push(this.userConsoleData[i]);\n\n //console.log(\"bbb allRoom-->\",this.userConsoleData[i])\n let roomName = this.userConsoleData[i].terminalLocation;\n let roomIP = this.userConsoleData[i].terminalIP;\n\n let location = this.getRoomLabel(roomName, roomIP);\n\n //console.log('bbbbRoom',location)\n \n // let userData = [this.userConsoleData[i].terminalIP,this.userConsoleData[i].startTime,this.userConsoleData[i].endTime];\n let userData = [location,this.userConsoleData[i].startTime,this.userConsoleData[i].endTime];\n dataTableforChart.push(userData);\n }\n \n let inactiveRoonName;\n // rooms already used today are in the chart above, add only the idle ones\n const activeRoomIPs = this.userConsoleData.map((room: any) => room.terminalIP);\n for (let i = 0; i < this.schoolTerminalData.length; i++) {\n //console.log(\"schoolTerminalData\",this.schoolTerminalData);\n if (activeRoomIPs.includes(this.schoolTerminalData[i].terminalKey)) {\n continue;\n }\n \n inActiveClassRoom = this.getRoomLabel(this.schoolTerminalData[i].location, this.schoolTerminalData[i].terminalKey);\n //inactiveRoonName = this.schoolTerminalData[i].location;\n \n myChartRowData = {\n userId:\"\",\n userName:\"\",\n startTime:new Date(this.myEndTime),\n endTime:new Date(this.myEndTime),\n terminalIP:this.schoolTerminalData[i].terminalKey,\n resourceMetauserConsoleData:[],\n duration:0,\n terminalLocation:this.schoolTerminalData[i].location,\n userSubjects:\"\"\n };\n allRoomsDetails.push(myChartRowData);\n let myChartRowuserConsoleData = [inActiveClassRoom,new Date(this.myEndTime),new Date(this.myEndTime)];\n dataTableforChart.push(myChartRowuserConsoleData);\n }\n \n }\n return {forChartData:dataTableforChart,fordurationTable:allRoomsDetails};\n }\n dataForTableView(userConsoleMatrix: any,resourceMetadataMatrix: any) {\n \n let currentDate: any;\n let resourceMatrixForTableChart = new Array();\n let resourceMatrixForExcel = new Array();\n \n resourceMatrixForTableChart = [];\n resourceMatrixForExcel = [];\n for (let i = 0; i <userConsoleMatrix.length; i++) {\n let startTime: any;\n let endTime: any;\n let duration: any;\n let terminalIP: any;\n let subject: any;\n let grade: any;\n let chapter: any;\n let topicName: any;\n let AssestDetail: any;\n let resourceType: any;\n let resourceTitle: any;\n let teachingPoint: any;\n let location: any;\n let teacherName: any;\n let teacherSubject: any;\n \n let resourceMetadataIDs: any;\n let resourceMetadataIDsDuration: any;\n let resourceArrayForExcel = new Array();\n let resourceArrayForTableChart = new Array();\n let userConsoleDataMatrix = new Array();\n let launchedFrom: any;\n resourceArrayForTableChart = [];\n userConsoleDataMatrix = [];\n //----------------- for subject and Name\n \n\n teacherSubject = userConsoleMatrix[i].userSubjects;\n teacherName = userConsoleMatrix[i].userName;\n //----------------- for start Time and EndTime \n if ((userConsoleMatrix[i].startTime != undefined && userConsoleMatrix[i].startTime != \"\") && (userConsoleMatrix[i].endTime != undefined&&userConsoleMatrix[i].endTime != \"\")) {\n startTime = userConsoleMatrix[i].startTime.toLocaleTimeString('en-US', { hour12: true });\n endTime = userConsoleMatrix[i].endTime.toLocaleTimeString('en-US', { hour12: true });\n currentDate = userConsoleMatrix[i].startTime.getDate() + '/' + (userConsoleMatrix[i].startTime.getMonth()+1) + '/' + userConsoleMatrix[i].startTime.getFullYear();\n }\n //----------------- for duration\n duration = Math.floor(userConsoleMatrix[i].duration);\n //----------------- for Terminal loaction and terminal IP\n location = userConsoleMatrix[i].terminalLocation;\n terminalIP = userConsoleMatrix[i].terminalIP;\n let roomDetail = location + ' ' + terminalIP;\n \n resourceMetadataIDs = userConsoleMatrix[i].resourceMetauserConsoleData;\n resourceMetadataIDsDuration = userConsoleMatrix[i].resourceDurationFromConsole;\n //console.log('mlaunchedFrom-->> ',(typeof userConsoleMatrix[i].launchedFrom));\n //console.log('mlaunchedFrom-->> ',( userConsoleMatrix[i].launchedFrom));\n let launchDataArr = Array (userConsoleMatrix[i].launchedFrom);\n //console.log('mlaunchedFrom len-->> ', launchDataArr);\n launchedFrom = launchDataArr\n \n \n \n \n \n\n if (resourceMetadataIDs.length === 0) {\n subject = undefined;\n grade = undefined;\n chapter = undefined;\n topicName = undefined;\n teachingPoint = undefined;\n AssestDetail = undefined;\n resourceTitle = undefined;\n resourceType = undefined;\n resourceArrayForTableChart = [teacherName,teacherSubject,currentDate,startTime,endTime,duration,roomDetail,subject,grade,chapter,teachingPoint,AssestDetail, launchedFrom];\n resourceMatrixForTableChart.push(resourceArrayForTableChart);\n \n }else{\n //resourceMetadataMatrix = [resouseID,subject,grade,chapter,teachingPoint,type,title]\n for (let k = 0; k < resourceMetadataIDs.length; k++) {\n for (let i = 0; i < resourceMetadataMatrix.length; i++) {\n \n if (resourceMetadataIDs[k] === resourceMetadataMatrix[i].resouseID) \n {\n \n \n subject = resourceMetadataMatrix[i].subject;\n grade = resourceMetadataMatrix[i].grade;\n chapter = resourceMetadataMatrix[i].chapter;\n topicName = resourceMetadataMatrix[i].topicName;\n teachingPoint = resourceMetadataMatrix[i].teachingPoint;\n if(resourceMetadataMatrix[i].title.toLowerCase() === 'whiteboard' || resourceMetadataMatrix[i].title.toLowerCase() === 'question'){\n AssestDetail = this.getDisplaytypeValue(resourceMetadataMatrix[i].type) + ' : ' + this.convertSeconds(resourceMetadataIDsDuration[k]);\n }else{\n AssestDetail = this.getDisplaytypeValue(resourceMetadataMatrix[i].type) + \" : \" + resourceMetadataMatrix[i].title + ' : ' + this.convertSeconds(resourceMetadataIDsDuration[k]);\n }\n \n\n //AssestDetail = this.getDisplaytypeValue(resourceMetadataMatrix[i].type) + \" : \" + resourceMetadataMatrix[i].title + ' : ' + resourceMetadataIDsDuration[k];\n\n \n\n resourceArrayForTableChart = [teacherName,teacherSubject,currentDate,startTime,endTime,duration,roomDetail, subject,grade,chapter,teachingPoint,AssestDetail, launchedFrom];\n resourceMatrixForTableChart.push(resourceArrayForTableChart);\n teacherName = undefined;\n teacherSubject = undefined;\n currentDate = undefined;\n startTime = undefined;\n endTime = undefined;\n duration = undefined;\n roomDetail = undefined;\n \n }\n }\n }\n }\n }\n return resourceMatrixForTableChart;\n }\n dataForDetailedView(userConsoleMatrix: any,resourceMetadataMatrix: any, rowLabel: any) {\n let detailedView_UserDataMatrix = new Array();\n detailedView_UserDataMatrix = [];\n let detailedView_ResourceDataMatrix = new Array();\n detailedView_ResourceDataMatrix = [];\n \n let startTime: any;\n let endTime: any;\n let duration: any;\n let terminalIP: any;\n let subject: any;\n let grade: any;\n let chapter: any;\n let AssestDetail: any;\n let teachingPoint: any;\n let location: any;\n let teacherName: any;\n let teacherSubject: any;\n let currentDate: any;\n let resourceMetadataIDs: any;\n let resourceMetadataIDsduration: any;\n let resourceArrayForTableChart = new Array();\n resourceArrayForTableChart = [];\n //----------------- for subject and Name\n teacherSubject = userConsoleMatrix[rowLabel].userSubjects;\n teacherName = userConsoleMatrix[rowLabel].userName;\n //----------------- for start Time and EndTime\n if ((userConsoleMatrix[rowLabel].startTime != undefined && userConsoleMatrix[rowLabel].startTime != \"\") && (userConsoleMatrix[rowLabel].endTime != undefined&&userConsoleMatrix[rowLabel].endTime != \"\")) {\n startTime = userConsoleMatrix[rowLabel].startTime.toLocaleTimeString('en-US', { hour12: true });\n endTime = userConsoleMatrix[rowLabel].endTime.toLocaleTimeString('en-US', { hour12: true });\n currentDate = userConsoleMatrix[rowLabel].startTime.getDate() + '/' + userConsoleMatrix[rowLabel].startTime.getMonth() + '/' + userConsoleMatrix[rowLabel].startTime.getFullYear();\n }\n //----------------- for duration\n duration = Math.floor(userConsoleMatrix[rowLabel].duration);\n //----------------- for Terminal loaction and terminal IP\n location = userConsoleMatrix[rowLabel].terminalLocation;\n terminalIP = userConsoleMatrix[rowLabel].terminalIP;\n let roomDetail = location + ' ' + terminalIP;\n resourceMetadataIDs = userConsoleMatrix[rowLabel].resourceMetauserConsoleData;\n resourceMetadataIDsduration = userConsoleMatrix[rowLabel].resourceDurationFromConsole;\n\n detailedView_UserDataMatrix = [teacherName,startTime,teacherSubject,endTime,roomDetail]\n \n if (resourceMetadataIDs.length == 0) {\n subject = undefined;\n grade = undefined;\n chapter = undefined;\n teachingPoint = undefined;\n AssestDetail = undefined;\n }else{\n for (let k = 0; k < resourceMetadataIDs.length; k++) {\n for (let i = 0; i < resourceMetadataMatrix.length; i++) {\n if (resourceMetadataIDs[k] === resourceMetadataMatrix[i].resouseID) {\n subject = resourceMetadataMatrix[i].subject;\n grade = resourceMetadataMatrix[i].grade;\n chapter = resourceMetadataMatrix[i].chapter;\n teachingPoint = resourceMetadataMatrix[i].teachingPoint;\n if(resourceMetadataMatrix[i].title.toLowerCase() === 'whiteboard' || resourceMetadataMatrix[i].title.toLowerCase() === 'question'){\n AssestDetail = this.getDisplaytypeValue(resourceMetadataMatrix[i].type) + \": \" + this.convertSeconds(resourceMetadataIDsduration[k]);\n }else{\n AssestDetail = this.getDisplaytypeValue(resourceMetadataMatrix[i].type) + \": \" + resourceMetadataMatrix[i].title + \": \" + this.convertSeconds(resourceMetadataIDsduration[k]);\n }\n //AssestDetail = this.getDisplaytypeValue(resourceMetadataMatrix[i].type) + \": \" + resourceMetadataMatrix[i].title + \": \" + this.convertSeconds(resourceMetadataIDsduration[k]);\n \n resourceArrayForTableChart = [subject,grade,chapter,teachingPoint,AssestDetail];\n detailedView_ResourceDataMatrix.push(resourceArrayForTableChart);\n }\n }\n }\n } \n \n return {userDetails:detailedView_UserDataMatrix,resourceDetails:detailedView_ResourceDataMatrix};\n }\n // To GET DISPLAY TYPE\n getDisplaytypeValue(key: any) {\n let assetTypeConfig = [\n {\n type: \"asset_media\",\n display: \"Media\"\n },\n {\n type: \"asset_print\",\n display: \"Print\"\n },\n {\n type: \"quiz\",\n display: \"Quiz\"\n },\n {\n type: \"question\",\n display: \"Question\"\n },\n {\n type: \"chapter\",\n display: \"Chapter\"\n },\n {\n type: \"tp\",\n display: \"Topic\"\n },\n {\n type: \"whiteboard\",\n display: \"Whiteboard\"\n },\n {\n type: \"widget\",\n display: \"Widget\"\n },\n {\n type: \"casset_media\",\n display: \"cMedia\"\n },\n {\n type: \"casset_print\",\n display: \"cPrint\"\n },\n {\n type: \"cquiz\",\n display: \"cQuiz\"\n },\n {\n type: \"cquestion\",\n display: \"cQuestion\"\n },\n {\n type: \"image\",\n display: \"Image\"\n },\n {\n type: \"video\",\n display: \"Video\"\n },\n {\n type: \"tools\",\n display: \"Tools\"\n },\n {\n type: \"feature\",\n display: \"Feature\"\n },\n\n ];\n let displayValue = key;\n assetTypeConfig.forEach((value) => {\n if (value.type === key) {\n displayValue = value.display;\n }\n });\n return displayValue;\n\n }\n\n convertSeconds(seconds) {\n const minutes = Math.floor(seconds / 60);\n const remainingSeconds = seconds % 60;\n return `${minutes}m ${remainingSeconds}s`;\n }\n}\n","import { Component, OnInit ,Output, ViewChild, Input,EventEmitter } from '@angular/core';\nimport { PrincipalDashboardLibV2Service } from './principal-dashboard-lib-v2.service';\n\n@Component({\n selector: 'lib-principal-dashboard-lib-v2',\n templateUrl: './principal-dashboard-lib-v2.component.html',\n styleUrls: ['./principal-dashboard-lib-v2.component.scss']\n})\nexport class PrincipalDashboardLibV2Component implements OnInit {\n @Input() data;\n @Input() set responseStatus(res: any) {\n this.setMessageForUser(res);\n // console.log(\" @Input() set responseStatus(res: any) >>>>>>>>>>>>.\",res);\n }\n @Output() userSelectedDate = new EventEmitter();\n messageForUser = \"Loding...\";\n isInsights = false;\n constructor(private pdService: PrincipalDashboardLibV2Service) { }\n\n ngOnInit(): void {\n this.pdService.isInsightsView.subscribe((value) => this.isInsights = value);\n \n // console.log(\" IN --> 7 data\",this.data);\n }\n setMessageForUser(res: any){\n this.messageForUser = res;\n }\n onUserSelectDate(e:any){\n // console.log(\" IN --> 1\");\n this.data = null;\n this.userSelectedDate.emit(e);\n }\n \n\n}\n","// Generated by scripts/lib-version.js from the library's package.json. Do not edit by hand.\nexport const LIB_VERSION = '0.0.40';\n","import { getLocaleDateTimeFormat } from '@angular/common';\nimport { Component, ElementRef, OnInit, ViewChild, Input } from '@angular/core';\nimport { ChartType } from 'angular-google-charts';\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\nimport { LIB_VERSION } from '../version';\ndeclare let require: any;\n\n@Component({\n selector: 'lib-chartheader',\n templateUrl: './chartheader.component.html',\n styleUrls: ['./chartheader.component.scss'],\n})\nexport class ChartheaderComponent implements OnInit {\n constructor(\n private pdService: PrincipalDashboardLibV2Service\n ) {}\n \n //variables\n mytype = ChartType.Timeline;\n datadisplaytype = 'UserWise';\n isUserWise = true;\n myIcon: any;\n libVersion:any;\n isChartView=true;\n isInsights = false;\n\n ngOnInit(): void {\n // set from the library's package.json by scripts/lib-version.js\n this.libVersion = LIB_VERSION;\n // this.myIcon = document.getElementById('myIconImg');\n // this.changeChatType() \n }\n changeChatType() {\n if (this.mytype == ChartType.Timeline) {\n this.isChartView = false;\n this.mytype = ChartType.Table;\n this.pdService.chartType.next(this.mytype);\n \n } else {\n this.isChartView = true;\n this.mytype = ChartType.Timeline;\n \n this.pdService.chartType.next(this.mytype);\n }\n }\n showInsights() {\n this.isInsights = true;\n this.pdService.openSmallTable.next(false);\n this.pdService.isInsightsView.next(true);\n }\n changeDataTypeClassRoom() {\n this.leaveInsights();\n this.isUserWise = false;\n this.pdService.isUserWise_data.next(false);\n }\n changeDataTypeUser() {\n this.leaveInsights();\n this.isUserWise = true;\n this.pdService.isUserWise_data.next(true);\n }\n private leaveInsights() {\n if (this.isInsights) {\n this.isInsights = false;\n this.pdService.isInsightsView.next(false);\n }\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import {\n Component,\n ElementRef,\n OnInit,\n ViewChild,\n Input,\n HostListener,\n} from '@angular/core';\nimport { ChartType, GoogleChartComponent } from 'angular-google-charts';\nimport { element } from 'protractor';\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\nimport { TimelineRow } from '../timeline/timeline.component';\n@Component({\n selector: 'lib-chartview',\n templateUrl: './chartview.component.html',\n styleUrls: ['./chartview.component.scss'],\n})\nexport class ChartviewComponent implements OnInit {\n @Input() set data(res: any) {\n if(res!== null){\n this.loadChart(res);\n }\n \n }\n chartview:any;\n myDataList:any;\n chartDataTable:any;\n myChartOptions: any;\n AllrowHeight: any;\n myXmlData: any;\n currentdataList:any;\n resourceDataList:any;\n alldataList:any;\n selectedUserData:any;\n rowElements:any;\n \n installedClassrooms: any;\n currentRooms: any;\n totalUsers = 0;\n eligibleUsers = 0;\n currentUsers = 0;\n myChartType = ChartType.Timeline;\n myChartwidth = window.innerWidth * 0.88;\n myChartHeight = window.innerHeight;\n currentList = \"Current Users\";\n allList = \"All Users\";\n isAllUsers = false;\n isUserWise = false;\n alluserList: any;\n allRoomsList: any;\n isSubscribed = false;\n // set to false to go back to the Google timeline chart\n useCustomTimeline = true;\n isTableView = false;\n timelineRows: TimelineRow[] = [];\n timelineList: any[] = [];\n myChartDataMatrix = new Array();\n \n totalChartDataMatrix = new Array();\n constructor(\n private pdService: PrincipalDashboardLibV2Service\n ) { }\n\n ngOnInit() { }\n\n loadChart(response: any) {\n //console.log(' INloadChart -->', response);\n this.totalUsers = 0;\n this.eligibleUsers = 0;\n this.currentUsers = 0;\n this.myChartType = ChartType.Timeline;\n this.myChartwidth = window.innerWidth * 0.88;\n this.myChartHeight = window.innerHeight;\n this.currentList = \"Current Users\";\n this.allList = \"All Users\";\n this.isAllUsers = false;\n this.pdService.isAllUsers.next(false);\n this.isUserWise = false;\n this.myChartDataMatrix =[];\n this.totalChartDataMatrix =[];\n\n this.chartview = document.getElementById('pd-chartview');\n this.myDataList = document.getElementById('pd-xmlData');\n // let parse = new DOMParser();\n if(response){\n this.myXmlData = this.pdService.parseData(response);\n }\n \n if(this.myXmlData){\n this.currentdataList = this.pdService.genarateUserReqiuredData(this.myXmlData);\n this.alluserList = this.pdService.allUserChartData();\n this.allRoomsList = this.pdService.allRoomsData();\n this.resourceDataList = this.pdService.genarateResourseReqiuredData(this.myXmlData);\n this.totalUsers = this.currentdataList.usersMetadata.length;\n this.eligibleUsers = this.findEligibleUserCount();\n this.installedClassrooms = this.findInstalledClassrooms();\n this.currentRooms = this.findCurrentClassrooms();\n this.findCurrentUserCount();\n }\n // subscribe once; on later reloads just redraw the currently selected view\n if (this.isSubscribed) {\n this.updateDataType(this.pdService.isUserWise_data.value);\n return;\n }\n this.isSubscribed = true;\n this.pdService.chartType.subscribe((data) => {\n if (data) {\n this.updateChartType(data);\n }\n });\n this.pdService.isUserWise_data.subscribe((data) => {\n this.updateDataType(data);\n });\n this.pdService.isInsightsView.subscribe((insights) => {\n if (!insights) {\n setTimeout(() => this.fitChartHeight());\n }\n });\n window.addEventListener('resize', this.onResizeWindow.bind(this));\n }\n onResizeWindow(event: any) {\n this.myChartwidth = window.innerWidth * 0.88; //set an appropriate factor\n this.fitChartHeight();\n }\n\n // stretch the chart area from where it starts down to the bottom of the window\n fitChartHeight() {\n const chartview = document.getElementById('pd-chartview');\n if (!chartview || chartview.style.display === 'none') return;\n const top = chartview.getBoundingClientRect().top + window.scrollY;\n const height = Math.max(window.innerHeight - top - 8, 240);\n chartview.style.height = height + 'px';\n }\n myChartReady() {\n this.createDivforTotalDurartion();\n this.setHeightofDivforTotalDurartion();\n // this.removeBlankEntryBar();\n }\n updateChartType(dataType: any) {\n this.isTableView = dataType == ChartType.Table;\n if (this.chartview != null && this.chartview != undefined) {\n if (dataType == ChartType.Table) {\n this.chartview.style.display = 'none';\n } else {\n this.chartview.style.display = 'block';\n setTimeout(() => this.fitChartHeight());\n }\n }\n }\n updateDataType(dataType: any) {\n setTimeout(() => this.fitChartHeight());\n this.isUserWise = dataType;\n if (this.myXmlData) {\n if(this.isUserWise){\n this.currentList = \"Current Users\";\n this.allList = \"All Users\";\n if(this.isAllUsers){\n this.userWiseAllData();\n }else{\n this.userWiseCurrentData();\n } \n }else{\n this.allList = \"All Rooms\";\n this.currentList = \"Current Rooms\";\n if(this.isAllUsers){\n this.classRoomWiseAllData();\n }else{\n this.classRoomWiseCurrentData();\n } \n }\n }\n }\n updateChart() {\n let labels = document.getElementById('labels');\n while (labels && labels.firstChild) {\n labels.removeChild(labels.lastChild);\n }\n this.chartDataTable = this.myChartDataMatrix;\n //const filteredData = this.myChartDataMatrix.filter(node => node[0] !== \"-\");\n /*\n if(filteredData.length>0){\n this.chartDataTable = filteredData;\n }else{\n this.chartDataTable = this.myChartDataMatrix;\n }*/\n\n \n\n \n\n //console.log(\"this.myChartDataMatrix\",this.myChartDataMatrix);\n \n \n (this.myChartOptions = {\n tooltip: {\n trigger: 'none',\n },\n colors: ['#ff7f0e', '#2ca02c', '#8c564b', '#d62728', '#bcbd22', '#17becf'],\n timeline: {\n colorByRowLabel: true,\n barLabelStyle: {\n fontSize: 7,\n },\n },\n hAxis: {\n format: 'HH:mm a',\n },\n });\n setTimeout(() => {\n this.myChartHeight = this.AllrowHeight + 100;//to set perfect height of chart \n }, 1000);\n \n }\n\n\n filterUserHasDash(callee?:any){\n \n\n let leftData = this.myChartDataMatrix\n let rightData = this.currentdataList.userConsoleData\n\n const updatedChartData = leftData.filter(row => row[0] !== \"-\");\n\n // Filter out objects in rightData where the userName is \"-\"\n const updatedRightData = rightData.filter(item => item.userName !== \"-\");\n\n \n\n \n return {\n updatedChartData,\n updatedRightData\n }\n }\n\n calulateTotalDuration(detailViewMatrix:any) {\n \n //\n \n\n\n //const filteredData = detailViewMatrix.filter(item => item.userName !== \"-\" && item.userName !== \"--\");\n\n\n //detailViewMatrix = filteredData;\n\n let id_durationArray;\n let id_durationMatrix = new Array();\n id_durationMatrix = [];\n this.totalChartDataMatrix = [];\n if (this.isUserWise) {\n for (let i = 0; i < detailViewMatrix.length; i++) {\n id_durationArray = {\n name: detailViewMatrix[i].userName,\n value: parseInt(detailViewMatrix[i].duration),\n };\n id_durationMatrix.push(id_durationArray);\n }\n } else {\n for (let i = 0; i < detailViewMatrix.length; i++) {\n // console.log(\"detailViewMatrix[i]\",detailViewMatrix[i]);\n id_durationArray = {\n name: this.pdService.getRoomLabel(detailViewMatrix[i].terminalLocation, detailViewMatrix[i].terminalIP),\n value: parseInt(detailViewMatrix[i].duration),\n };\n id_durationMatrix.push(id_durationArray);\n }\n }\n \n let obj: any = {};\n id_durationMatrix = [...new Set(id_durationMatrix)];\n \n id_durationMatrix.forEach((item) => {\n if (obj[item.name]) {\n obj[item.name].value = obj[item.name].value + item.value;\n } else {\n\n obj[item.name] = item;\n }\n });\n let valuesArr = Object.values(obj);\n \n let myArray = new Array();\n myArray = [];\n valuesArr.forEach((item: any) => {\n myArray.push(item.value);\n });\n for (let i = 0; i < myArray.length; i++) {\n let totaldurationPerRow = [this.timeConvert(myArray[i]).toString() + ' hrs'];\n // let totalChartRowDataArray = [totaldurationPerRow];\n this.totalChartDataMatrix.push(totaldurationPerRow);\n }\n }\n timeConvert(n: any) {\n var num = Math.floor(n);\n var hours = num / 60;\n var rhours = Math.floor(hours);\n var minutes = (hours - rhours) * 60;\n var rminutes = Math.round(minutes);\n return rhours + ':' + rminutes;\n }\n removeBlankEntryBar() {\n const chartDiv = document.getElementById('myTimeLine');\n var el = chartDiv.getElementsByTagName(\"rect\"); //get all the descendant rect element inside the container \n var width = 100000000; //set a large initial value to width\n var elToRem = []; //element would be added to this array for removal\n for (var i = 0; i < el.length; i++) { //looping over all the rect element of container\n var cwidth = parseInt(el[i].getAttribute(\"width\"));//getting the width of ith element\n if (cwidth < width) { //if current element width is less than previous width then this is min. width and ith element should be removed\n elToRem = [el[i]];\n width = cwidth; //setting the width with min width\n }\n else if (cwidth == width) { //if current element width is equal to previous width then more that one element would be removed\n elToRem.push(el[i]);\n }\n }\n for (var i = 0; i < elToRem.length; i++) {\n // now iterate JUST the elements to remove\n elToRem[i].setAttribute(\"fill\", \"none\");\n\n }\n }\n createDivforTotalDurartion() {\n let rowLabels = [];\n this.rowElements = [];\n var labels = document.getElementById('labels');\n if (!labels) return;\n while (labels.firstChild) {\n labels.removeChild(labels.lastChild);\n }\n for (var i = 0; i < this.totalChartDataMatrix.length; i++) {\n var team = this.totalChartDataMatrix[i][0];\n rowLabels.push(team);\n var label = labels.appendChild(document.createElement('div'));\n label.style['border-bottom'] = '1px solid #b7b7b7';\n label.style['font-family'] = 'Arial';\n label.style['font-size'] = '13px';\n label.style['text-align'] = 'left';\n label.style['padding-left'] = '8px';\n label.style['padding-right'] = '8px';\n label.style.position = 'inherit';\n if (i % 2) {\n label.style['background-color'] = '#e6e6e6';\n } else {\n label.style['background-color'] = '#ffffff';\n }\n label.innerHTML = team;\n this.rowElements.push(label);\n }\n }\n setHeightofDivforTotalDurartion() {\n \n this.AllrowHeight = 0;\n const chartDiv = document.getElementById('myTimeLine');\n let rows = chartDiv.getElementsByTagName('rect');\n let rowIndex = -1;\n\n for (let i = 0; i < rows.length; i++) {\n rowIndex++;\n if (rowIndex < this.rowElements.length) {\n let rowHeight = parseFloat(rows[i].getAttribute('height')) + 'px';\n this.AllrowHeight += parseFloat(rows[i].getAttribute('height'));\n\n const currentCell = this.rowElements[rowIndex];\n if (currentCell) {\n currentCell.style.height = rowHeight;\n currentCell.style.lineHeight = rowHeight;\n }\n }\n }\n }\n\n // rows for lib-timeline, one per teacher or room, bars point back into `list` by index\n buildTimeline(list: any[]) {\n this.timelineList = list || [];\n const rows: TimelineRow[] = [];\n const rowByLabel: any = {};\n this.timelineList.forEach((session: any, index: number) => {\n let label = this.isUserWise\n ? session.userName\n : this.pdService.getRoomLabel(session.terminalLocation, session.terminalIP);\n if (label === undefined || label === null || label === '' || label === '--') return;\n if (label === '-') label = 'Unknown user';\n\n let row = rowByLabel[label];\n if (!row) {\n row = rowByLabel[label] = { label, bars: [] };\n rows.push(row);\n }\n if (this.isSession(session)) {\n const other = this.isUserWise\n ? this.pdService.getRoomLabel(session.terminalLocation, session.terminalIP)\n : session.userName;\n const time = session.startTime.toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit' }) +\n ' – ' + session.endTime.toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit' });\n row.bars.push({\n start: session.startTime,\n end: session.endTime,\n index,\n tooltip: `${other || ''}\\n${time}`.trim(),\n });\n }\n });\n this.timelineRows = rows;\n }\n\n // idle user / room placeholders have no user or no real start time\n isSession(session: any): boolean {\n return !!session && !!session.userId &&\n session.startTime instanceof Date && !isNaN(session.startTime.getTime()) &&\n session.endTime instanceof Date && !isNaN(session.endTime.getTime());\n }\n\n // every session of one row: a teacher's day (user wise) or a room's day (classroom wise)\n openRow(event: { label: string; indexes: number[]; color: string; total: string }) {\n const sessions = event.indexes\n .map((i) => this.timelineList[i])\n .filter((s) => this.isSession(s))\n .map((s) => ({ userId: s.userId, ip: s.terminalIP, start: s.startTime.getTime() }));\n if (!sessions.length) return;\n this.pdService.detailAccentColor = event.color;\n this.pdService.detailRowRequest = { label: event.label, isUserWise: this.isUserWise, total: event.total, sessions };\n this.pdService.openSmallTable.next({ allSessions: true } as any);\n }\n\n openSession(event: { index: number; color: string }) {\n const index = event.index;\n const session = this.timelineList[index];\n if (!this.isSession(session)) return;\n this.pdService.detailAccentColor = event.color;\n this.pdService.detailRowRequest = null;\n this.selectedUserData = this.pdService.dataForDetailedView(this.timelineList, this.resourceDataList, index);\n this.pdService.detailedviewData.next(this.selectedUserData);\n this.pdService.openSmallTable.next(this.selectedUserData);\n }\n\n onSelectRowData(event: any) {\n const { row, column } = event.selection[0]; \n\n // pick the same list the chart rows were built from\n let selectedList = this.currentdataList.userConsoleData;\n if(this.isAllUsers){\n selectedList = this.isUserWise ? this.alluserList.fordurationTable : this.allRoomsList.fordurationTable;\n }\n // idle room / user rows have no session to show\n if(!selectedList[row] || !selectedList[row].userId || !selectedList[row].startTime){\n return;\n }\n\n this.selectedUserData = this.pdService.dataForDetailedView(selectedList,this.resourceDataList, row);\n\n let smallData = [{'a':this.currentdataList, 'b': row}]\n // console.log(\"this.selectedUserData\",this.selectedUserData);\n \n this.pdService.detailedviewData.next(this.selectedUserData);\n this.updateChart();\n this.pdService.openSmallTable.next(this.selectedUserData);\n // alluserList\n }\n showAllUser() {\n this.pdService.isAllUsers.next(true);\n this.isAllUsers = true;\n if(this.isUserWise){\n this.userWiseAllData();\n }else{\n this.classRoomWiseAllData();\n }\n }\n showCurrentUser() {\n this.isAllUsers = false;\n this.pdService.isAllUsers.next(false);\n if(this.isUserWise){\n this.userWiseCurrentData();\n }else{\n this.classRoomWiseCurrentData();\n }\n }\n userWiseCurrentData(){\n \n let chartDataUserWise = this.pdService.userWiseChartData();\n this.buildTimeline(this.currentdataList.userConsoleData);\n// console.log(\"chartDataUserWise\",chartDataUserWise);\n \n if(chartDataUserWise.length>0){\n this.myChartDataMatrix =chartDataUserWise;\n this.updateChart();\n if(this.currentdataList.userConsoleData.length>0){\n this.calulateTotalDuration(this.currentdataList.userConsoleData);\n }\n } \n }\n userWiseAllData(){\n this.buildTimeline(this.alluserList.fordurationTable);\n let chartDataUserWise = this.alluserList.forChartData;\n if(chartDataUserWise.length>0){\n this.myChartDataMatrix =chartDataUserWise;\n \n this.updateChart();\n this.calulateTotalDuration(this.alluserList.fordurationTable);\n }\n \n }\n classRoomWiseCurrentData(){\n let classRoomdata = this.pdService.classRoomWiseChartData();\n this.buildTimeline(this.currentdataList.userConsoleData);\n console.log(\"classRoomdata\",classRoomdata);\n if(classRoomdata && classRoomdata.length>0){\n \n \n this.myChartDataMatrix =classRoomdata; \n console.log(\"myChartDataMatrix\",this.myChartDataMatrix)\n \n this.updateChart();\n if(this.currentdataList.userConsoleData.length>0){\n this.calulateTotalDuration(this.currentdataList.userConsoleData);\n }\n } \n }\n \n classRoomWiseAllData(){\n let allclassRoomList = this.allRoomsList || this.pdService.allRoomsData();\n this.buildTimeline(allclassRoomList.fordurationTable);\n if(allclassRoomList.forChartData && allclassRoomList.forChartData.length > 0){\n this.myChartDataMatrix = allclassRoomList.forChartData;\n this.updateChart();\n }\n if(allclassRoomList.fordurationTable && allclassRoomList.fordurationTable.length > 0){\n this.calulateTotalDuration(allclassRoomList.fordurationTable);\n }\n \n }\n\n findCurrentUserCount(){\n let userConsoleData = this.currentdataList.userConsoleData;\n \n let userNameArray = new Array();\n for (let index = 0; index < userConsoleData.length; index++) {\n const element = userConsoleData[index].userName;\n userNameArray.push(element);\n }\n let uniqueUserName = [...new Set(userNameArray)];\n this.currentUsers = uniqueUserName.length;\n }\n\n findCurrentClassrooms(){\n //console.log(\"findCurrentClassrooms\", this.currentdataList.schoolTerminalData)\n let classRoomdata = this.pdService.newGetCurrentClassroomData();\n // console.log(\"findCurrentClassrooms\",classRoomdata);\n return classRoomdata.length;\n }\n findInstalledClassrooms(){\n let count = 0;\n// console.log(\"findInstalledClassrooms\", this.currentdataList.schoolTerminalData)\n return this.currentdataList.schoolTerminalData.length;\n }\n findEligibleUserCount(){\n// console.log(\"findEligibleUserCount\", this.currentdataList)\n \n let count = 0;\n let userMetaData = this.currentdataList.usersMetadata\n for (let index = 0; index < userMetaData.length; index++) {\n const element = userMetaData[index].userSubjects;\n if(element !== \"\"){\n // console.log(\"findEligibleUserCount\", element)\n count = count + 1;\n }\n \n }\n \n return count;\n }\n\n ngOnDestroy() {\n // console.log('ngOnDestroy >>');\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\n\n@Component({\n selector: 'lib-detailedview',\n templateUrl: './detailedview.component.html',\n styleUrls: ['./detailedview.component.scss'],\n})\nexport class DetailedviewComponent implements OnInit {\n userMetadata: any;\n resourseMetadata: any;\n deatilViewContainer: any;\n deatilViewTable: any;\n closeButton: any;\n getTotalData:any\n userMetadataHeadingArray = [\n 'Name:',\n 'Start Time:',\n 'Subject:',\n 'End Time:',\n 'Room Details:',\n ];\n resourseMetadataHeadingArray = [\n 'Subject',\n 'Class',\n 'Chapter Name',\n 'Topic Name',\n 'Assets Details',\n ];\n constructor(private pdService: PrincipalDashboardLibV2Service) {}\n\n ngOnInit(): void {\n this.deatilViewContainer = document.getElementById('pd-deatilViewContainer');\n this.deatilViewTable = document.getElementById('pd-deatilViewTable');\n this.closeButton = document.getElementById('pd-closeButton');\n \n this.pdService.detailedviewData.subscribe((data) => {\n if(data){\n if(data.userDetails.length>0 ){\n this.createTable(data.userDetails);\n }\n if(data.resourceDetails.length>0){\n \n data.resourceDetails = this.replaceLabelChapterAndTopic(data.resourceDetails);\n this.createResourcesTable(data.resourceDetails);\n //console.log(\"11dec resourceDetails\",data.resourceDetails);\n }\n }\n \n });\n \n this.deatilViewContainer.style.display = 'none';\n }\n\n \n\n \n replaceLabelChapterAndTopic(data) {\n let htmlStr = \"<span style='font-style: italic;color: #3F51B5;'>(seen)</span>\";\n return data.map(row => {\n return row.map(cell => {\n if (cell.includes(\"Topic:\")) {\n return cell.replace(/Topic: .*/, \"Topic \"+htmlStr);\n }\n if (cell.includes(\"Chapter:\")) {\n return cell.replace(/Chapter: .*/, \"Chapter \"+htmlStr);\n }\n\n return cell;\n });\n });\n }\n \n replaceLabelChapterAndTopic1(data) {\n let htmlStr = \"<span style='font-style: italic;color: #3F51B5;'>(selected)</span>\"\n return data.map(row => {\n return row.map(cell => {\n if (cell.includes(\"Topic: :\")) {\n return cell.replace(/Topic: :.*$/, \"Topic \"+htmlStr);\n }\n if (cell.includes(\"Chapter:\")) {\n return cell.replace(/Chapter: .*$/, \"Chapter \"+htmlStr);\n }\n\n return cell;\n });\n });\n}\n createTable(userMetadata: any) {\n this.deatilViewContainer.style.display = 'block';\n while (this.deatilViewTable.firstChild) {\n this.deatilViewTable.removeChild(this.deatilViewTable.lastChild);\n }\n\n let labelArray = new Array();\n let cnt = 0;\n for (let i = 0; i < userMetadata.length; i++) {\n let label = document.createElement('label');\n label.appendChild(\n document.createTextNode(this.userMetadataHeadingArray[i])\n );\n if (label.textContent === 'undefined'|| label.textContent === undefined) {\n label.textContent = '';\n }\n labelArray.push(label);\n let data = document.createElement('label');\n data.appendChild(document.createTextNode(userMetadata[i]));\n if (data.textContent === 'undefined'|| data.textContent === undefined) {\n data.textContent = '';\n }\n labelArray.push(data);\n }\n let tbl = document.createElement('table');\n tbl.id = \"userDataTable\";\n tbl.className = \"table table-bordered\";\n let tblBody = document.createElement('tbody');\n for (let j = 0; j < userMetadata.length / 2; j++) {\n let row = document.createElement('tr');\n let cell: any;\n for (let i = 0; i < 4; i++) {\n if (i % 2 == 0) {\n cell = document.createElement('th');\n cell.style['font-weight'] = \"bold\"\n // cell.style.background =\"#e0e0e0\";\n } else {\n cell = document.createElement('td');\n }\n if (cnt < labelArray.length) {\n cell.appendChild(labelArray[cnt]);\n row.appendChild(cell);\n //console.log('11dec', cell);\n }\n cnt++;\n }\n tblBody.appendChild(row);\n tbl.appendChild(tblBody);\n this.deatilViewTable.appendChild(tbl);\n }\n }\n\n \n\n createResourcesTable(resoureMetadata: any) {\n let labelArray = new Array();\n let cnt = 0;\n for (let i = 0; i < this.resourseMetadataHeadingArray.length; i++) {\n let label = document.createElement('label');\n label.appendChild(\n document.createTextNode(this.resourseMetadataHeadingArray[i])\n );\n if (label.textContent === 'undefined'|| label.textContent === undefined) {\n label.textContent = '';\n }\n labelArray.push(label);\n }\n for (let i = 0; i < resoureMetadata.length; i++) {\n for (let j = 0; j < 5; j++) {\n let label = document.createElement('label');\n //label.appendChild(document.createTextNode(resoureMetadata[i][j]));\n label.innerHTML = resoureMetadata[i][j];\n if (label.textContent === 'undefined'|| label.textContent === undefined) {\n label.textContent = '';\n }\n labelArray.push(label);\n }\n }\n let tbl = document.createElement('table');\n tbl.className = \"table table-bordered\";\n tbl.id = \"resoureMetadataTable\";\n let tblBody = document.createElement('tbody');\n for (let j = 0; j <= resoureMetadata.length; j++) {\n let row = document.createElement('tr');\n let cell: any;\n for (let i = 0; i < 5; i++) {\n if (j == 0) {\n cell = document.createElement('th');\n cell.style['font-weight'] = 'bold';\n // cell.style.background =\"#e0e0e0\";\n } else {\n cell = document.createElement('td');\n }\n\n if (cnt < labelArray.length) {\n cell.appendChild(labelArray[cnt]);\n row.appendChild(cell);\n //console.log('11dec', cell);\n }\n cnt++;\n }\n tblBody.appendChild(row);\n tbl.appendChild(tblBody);\n this.deatilViewTable.appendChild(tbl);\n }\n }\n \n onCloseBtnClick() {\n this.deatilViewContainer.style.display = 'none';\n }\n}\n","import { Injectable } from '@angular/core';\nimport { resourceUsage } from 'process';\nimport * as FileSaver from 'file-saver'\nimport * as XLSX from 'xlsx';\nimport { HtmlTagDefinition } from '@angular/compiler';\nconst EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\nconst EXCEL_EXTENSION = '.xlsx';\n@Injectable({\n providedIn: 'root'\n})\nexport class ExceldataService {\n resourceTypes = new Array();\n myEndTime:any;\n constructor() { }\n //_____FOR EXCEL CONVERTOR\n public workbook:any;\n public tabName = [{\"name\":\"School\"},{\"name\":\"User Summary\"},{\"name\":\"Terminal Summary\"},{\"name\":\"Usage Details\"}]\n public exportAsExcelFile(json: any,excelFileName: string): void {\n let excelBuffer: any;\n let myobj: any = {Sheets:{}, SheetNames:[] }\n for (let i = 0; i < json.length; i++) {\n const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json[i]);\n myobj.Sheets[this.tabName[i].name] = worksheet\n myobj.SheetNames.push(this.tabName[i].name)\n }\n const workbook:XLSX.WorkBook = myobj; \n excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });\n this.saveAsExcelFile(excelBuffer, excelFileName);\n }\n\n private saveAsExcelFile(buffer: any, fileName: string): void {\n const data: Blob = new Blob([buffer], {\n type: EXCEL_TYPE\n });\n FileSaver.saveAs(data, fileName + EXCEL_EXTENSION);\n }\n //_____FOR EXCEL CONVERTOR END\n\n genarateResourseReqiuredData_Excel(data: any): any {\n let resouseID: any;\n let title: any;\n let subject: any;\n let grade: any;\n let chapter: any;\n let teachingpoint: any;\n let type: any;\n let resourceMetadataMatrix = new Array();\n let resourceMetadata = data.resourcesMetadata.resourceMetadata;\n \n if(resourceMetadata!= undefined && resourceMetadata.length>0) {\n for (var i = 0; i < resourceMetadata.length;i++){\n //----------//resouseID\n resouseID = resourceMetadata[i].resourceId;\n //----------//subject\n if (resourceMetadata[i].subject != undefined) {\n if (resourceMetadata[i].subject.title != undefined) {\n subject = resourceMetadata[i].subject.title;\n } else {\n subject = '';\n }\n } else {\n subject = '';\n }\n //----------//grade\n if (resourceMetadata[i].grade != undefined) {\n if (resourceMetadata[i].grade.title != undefined) {\n grade = resourceMetadata[i].grade.title;\n } else {\n grade = '';\n }\n } else {\n grade = '';\n }\n //----------//chapter\n if (resourceMetadata[i].chapter != undefined) {\n if (resourceMetadata[i].chapter.title != undefined) {\n chapter = resourceMetadata[i].chapter.title;\n } else {\n chapter = '';\n }\n } else {\n chapter = '';\n }\n \n //----------//teachingpoint\n if (resourceMetadata[i].teachingpoint != undefined) {\n if (resourceMetadata[i].teachingpoint.title != undefined) {\n teachingpoint = resourceMetadata[i].teachingpoint.title;\n } else {\n teachingpoint = '';\n }\n } else {\n teachingpoint = '';\n }\n //----------//type\n if (resourceMetadata[i].type != undefined) {\n type = this.getDisplaytypeValue(resourceMetadata[i].type);\n } else {\n type = '';\n }\n \n //----------//title\n if (resourceMetadata[i].title != undefined) {\n title = resourceMetadata[i].title;\n } else {\n title = '';\n }\n \n \n let resourceMetauserConsoleData = {\n resouseID:resouseID,\n subject:subject,\n grade:grade,\n chapter:chapter,\n teachingpoint:teachingpoint,\n type:type,\n title:title\n }\n resourceMetadataMatrix.push(resourceMetauserConsoleData);\n this.resourceTypes.push(type);\n }\n }\n this.resourceTypes = [...new Set(this.resourceTypes)]\n return resourceMetadataMatrix;\n }\n\n getName(user): string {\n if(/School Admin/gm.exec(user.role)){\n return \"Support Admin\"\n }\n return user.fullName;\n }\n\n genarateUserReqiuredData_Excel(data: any): any {\n let userConsole = data.usersConsole.userConsole;\n let usersMetadata = data.usersMetadata.userMetadata;\n let schoolTerminal = data.schoolTerminals.schoolTerminal;\n \n \n let usersMetadataMatrix = new Array();\n let usermetadataMatrixUpdated = new Array();\n let schoolTerminalMatrix = new Array();\n let userConsoleMatrix = new Array();\n if(usersMetadata!= null && usersMetadata.length > 0){\n for (let i = 0; i < usersMetadata.length; i++) {\n let userId: any;\n let userName: any;\n let userSubjects: any;\n let listOfUser:any = {}\n if (usersMetadata[i].userId!=\"\") {\n userId = usersMetadata[i].userId;\n \n if (usersMetadata[i].fullName !== undefined) {\n userName = this.getName(usersMetadata[i]) // get name of user w.r.t. ID\n } else {\n userName = '';\n }\n\n if (usersMetadata[i].userSubjects !== undefined) {\n userSubjects = usersMetadata[i].userSubjects // get name of user w.r.t. ID\n } else {\n userSubjects = '';\n }\n \n listOfUser = {\n userId:userId, \n userName:userName, \n userSubjects:userSubjects\n };\n usersMetadataMatrix.push(listOfUser); // array of all users\n }\n }\n }\n for (var i = 0; i < usersMetadataMatrix.length; i++) {\n usersMetadataMatrix.forEach(element => {\n if (usersMetadataMatrix[i].userName === element.userName) {\n usermetadataMatrixUpdated.push(usersMetadataMatrix[i]); //array of same name users\n usersMetadataMatrix.splice(i, 1); //delete the same name users from usermetadataMatrix\n }\n });\n }\n for (var i = 0; i < usermetadataMatrixUpdated.length; i++) {\n usermetadataMatrixUpdated[i].userName = usermetadataMatrixUpdated[i].userName + \" \" + i;\n usersMetadataMatrix.push(usermetadataMatrixUpdated[i]); //adding same name users in usermetadataMatrix with some random charators\n }\n if(schoolTerminal != null && schoolTerminal.length > 0){\n for (var i = 0; i < schoolTerminal.length; i++) {\n let schoolId:any;\n let terminalKey:any;\n let terminalType:any;\n let location:any;\n let schoolTerminalData:any = {};\n \n //----------//schoolId\n if (schoolTerminal[i].schoolId !== undefined) {\n schoolId = schoolTerminal[i].schoolId // get name of user w.r.t. ID\n } else {\n schoolId = '';\n }\n //----------//terminalKey\n if (schoolTerminal[i].terminalKey !== undefined) {\n terminalKey = schoolTerminal[i].terminalKey // get name of user w.r.t. ID\n } else {\n terminalKey = '';\n }\n //----------//terminalType\n if (schoolTerminal[i].terminalType !== undefined) {\n terminalType = schoolTerminal[i].terminalType // get name of user w.r.t. ID\n } else {\n terminalType = '';\n }\n \n //----------//location\n if (schoolTerminal[i].metadata !== undefined) {\n location = schoolTerminal[i].metadata // get name of user w.r.t. ID\n } else {\n location = '';\n }\n schoolTerminalData = {\n schoolId:schoolId,\n terminalKey:terminalKey,\n terminalType:terminalType,\n location:location\n };\n schoolTerminalMatrix.push(schoolTerminalData);\n \n }\n }\n if(userConsole !=null && userConsole.length > 0){\n for (let index = 0; index < userConsole.length; index++) {\n let userId: any;\n let startTime: any;\n let endTime: any;\n let duration: any;\n let selectedDate: any;\n let terminalIP: any;\n let userConsoleResources: any;\n let resourceMetadataIDS: any;\n let resourceMetauserConsoleData = [];\n let resourceDurationFromConsole = [];\n let userName:any;\n let userSubjects:any;\n let terminalLocation: any;\n //----------//user iD\n if (userConsole[index].userId !== undefined) {\n userId = userConsole[index].userId // get name of user w.r.t. ID\n } else {\n userId = '';\n }\n //----------// startTime \n if (userConsole[index].startTime !== undefined) {\n startTime = userConsole[index].startTime // get name of user w.r.t. ID\n } else {\n startTime = '';\n }\n //----------// endTime \n if (userConsole[index].endTime !== undefined) {\n endTime = userConsole[index].endTime // get name of user w.r.t. ID\n this.myEndTime = endTime;\n } else {\n endTime = '';\n }\n //----------// Date \n if (userConsole[index].selectedDate !== undefined) {\n selectedDate = userConsole[index].selectedDate // get name of user w.r.t. ID\n } else {\n selectedDate = '';\n }\n \n //----------// Duration\n if (userConsole[index].duration !== undefined) {\n duration = userConsole[index].duration // get name of user w.r.t. ID\n } else {\n duration = '';\n }\n //----------// terminalIP\n if (userConsole[index].terminalIP !== undefined) {\n terminalIP = userConsole[index].terminalIP // get name of user w.r.t. ID\n } else {\n terminalIP = '';\n }\n \n //----------// userConsoleResources\n if (userConsole[index].userConsoleResources !== undefined) {\n userConsoleResources = userConsole[index].userConsoleResources // get name of user w.r.t. ID\n } else {\n userConsoleResources = null;\n }\n \n if(userConsoleResources != null){\n if (userConsoleResources.userConsoleResource !== undefined) {\n // satyajit resource wise duration added\n userConsoleResources.userConsoleResource.forEach(item => {\n resourceMetauserConsoleData.push(item.resourceId); // get name of user w.r.t. ID\n resourceDurationFromConsole.push(item.duration);\n });\n // resourceMetauserConsoleData = userConsoleResources.userConsoleResource; // get name of user w.r.t. ID\n } else {\n resourceMetauserConsoleData = [];\n resourceDurationFromConsole = [];\n }\n }\n \n //----------// userName and userSubjects\n for (let i = 0; i < usersMetadataMatrix.length; i++) {\n if (userId === usersMetadataMatrix[i].userId) {\n userName = usersMetadataMatrix[i].userName;\n userSubjects = usersMetadataMatrix[i].userSubjects;\n }\n }\n //----------// terminalIP and terminalLocation\n \n for (let i = 0; i < schoolTerminalMatrix.length; i++) {\n if (terminalIP === schoolTerminalMatrix[i].terminalKey) {\n terminalLocation = schoolTerminalMatrix[i].location;\n }\n }\n let userData = {\n userId:userId,\n userName:userName,\n startTime:new Date(startTime),\n endTime:new Date(endTime),\n terminalIP:terminalIP,\n resourceMetauserConsoleData:resourceMetauserConsoleData,\n duration:duration,\n terminalLocation:terminalLocation,\n userSubjects:userSubjects,\n resourceDurationFromConsole:resourceDurationFromConsole\n }\n \n userConsoleMatrix.push(userData);\n \n }\n }\n return {usersMetadata:usersMetadataMatrix,schoolTerminalData:schoolTerminalMatrix,userConsoleData: userConsoleMatrix}\n }\n \n deatilData_Excel(userConsoleMatrix: any,resourceMetadataMatrix: any){\n // console.log(\"resourceMetadataMatrix\",resourceMetadataMatrix);\n \n let currentDate: any;\n let resourceMatrixForExcel = new Array();\n resourceMatrixForExcel = [];\n for (let i = 0; i <userConsoleMatrix.length; i++) {\n let userID:any;\n let startTime: any;\n let endTime: any;\n let duration: any;\n let terminalIP: any;\n let subject: any;\n let grade: any;\n let chapter: any;\n let resourceType: any;\n let resourceTitle: any;\n let teachingpoint: any;\n let location: any;\n let teacherName: any;\n let teacherSubject: any;\n \n let resourceMetadataIDs: any;\n let resourceMetadataIDsDuration: any;\n let resourceArrayForExcel = new Array();\n \n\n userID = userConsoleMatrix[i].userId;\n //----------------- for subject and Name\n teacherSubject = userConsoleMatrix[i].userSubjects;\n teacherName = userConsoleMatrix[i].userName;\n //----------------- for start Time and EndTime \n if ((userConsoleMatrix[i].startTime != undefined && userConsoleMatrix[i].startTime != \"\") && (userConsoleMatrix[i].endTime != undefined&&userConsoleMatrix[i].endTime != \"\")) {\n startTime = userConsoleMatrix[i].startTime.toLocaleTimeString('en-US', { hour12: true });\n endTime = userConsoleMatrix[i].endTime.toLocaleTimeString('en-US', { hour12: true });\n currentDate = userConsoleMatrix[i].startTime.getDate() + '/' + (userConsoleMatrix[i].startTime.getMonth()+1) + '/' + userConsoleMatrix[i].startTime.getFullYear();\n }\n //----------------- for duration\n duration = Math.floor(userConsoleMatrix[i].duration);\n //----------------- for Terminal loaction and terminal IP\n location = userConsoleMatrix[i].terminalLocation;\n terminalIP = userConsoleMatrix[i].terminalIP;\n let roomDetail = location + ' ' + terminalIP;\n let locationName = location;\n let terminalIPAddress = terminalIP;\n resourceMetadataIDs = userConsoleMatrix[i].resourceMetauserConsoleData;\n resourceMetadataIDsDuration = userConsoleMatrix[i].resourceDurationFromConsole;\n if (resourceMetadataIDs.length == 0) {\n subject = '';\n grade = '';\n chapter = '';\n teachingpoint = '';\n resourceTitle = '';\n resourceType = '';\n resourceArrayForExcel = [teacherName,teacherSubject,currentDate,startTime,endTime,duration,locationName, terminalIPAddress,subject,grade,chapter,teachingpoint,resourceTitle,resourceType,userID];\n resourceMatrixForExcel.push(resourceArrayForExcel);\n }else{\n for (let k = 0; k < resourceMetadataIDs.length; k++) {\n for (let i = 0; i < resourceMetadataMatrix.length; i++) {\n // resouseID:resouseID,\n // subject:subject,\n // grade:grade,\n // chapter:chapter,\n // teachingpoint:teachingpoint,\n // type:type,\n // title:title\n\n if (resourceMetadataIDs[k] === resourceMetadataMatrix[i].resouseID) {\n\n subject = resourceMetadataMatrix[i].subject;\n grade = resourceMetadataMatrix[i].grade;\n chapter = resourceMetadataMatrix[i].chapter;\n teachingpoint = resourceMetadataMatrix[i].teachingpoint;\n resourceTitle = resourceMetadataMatrix[i].title;\n resourceType = this.getDisplaytypeValue(resourceMetadataMatrix[i].type);\n // FOR EXCEL\n resourceArrayForExcel = [teacherName,teacherSubject,currentDate,startTime,endTime,duration,locationName, terminalIPAddress,subject,grade,chapter,teachingpoint,resourceTitle,resourceType,userID,resourceMetadataIDsDuration[k]];\n resourceMatrixForExcel.push(resourceArrayForExcel);\n teacherName = '';\n teacherSubject= '';\n currentDate= '';\n startTime= '';\n endTime= '';\n locationName= ''; \n terminalIPAddress= '';\n duration = '';\n \n }\n }\n }\n }\n }\n \n return resourceMatrixForExcel;\n }\n deatilUsage_Excel(resourceMatrixForExcel){\n let userList=[];\n // console.log(\"resourceMatrixForExcel>>>>>>>>>>>>>>>>>>>\",resourceMatrixForExcel);\n \n if(resourceMatrixForExcel.length > 0){\n for(let i=0;i<resourceMatrixForExcel.length;i++){\n let data = {\n // Sr_No: i+1,\n Name:resourceMatrixForExcel[i][0],\n Subjects:resourceMatrixForExcel[i][1],\n Date:\tresourceMatrixForExcel[i][2],\n startTime:resourceMatrixForExcel[i][3],\n endTime:resourceMatrixForExcel[i][4],\n \"duration(mins)\":resourceMatrixForExcel[i][5],\n location:resourceMatrixForExcel[i][6],\n IP:resourceMatrixForExcel[i][7],\n subjectTitle:resourceMatrixForExcel[i][8],\n gradeTitle:resourceMatrixForExcel[i][9],\n Chapter:resourceMatrixForExcel[i][10],\n tpTitle:resourceMatrixForExcel[i][11],\n resourceTitle:resourceMatrixForExcel[i][12],\n resourceType:resourceMatrixForExcel[i][13],\n 'resourceDuration(sec)':resourceMatrixForExcel[i][15],\n }\n userList.push(data);\n }\n \n } \n // console.log(\"userList\",userList);\n return userList;\n }\n userSummary_Excel(data,resourceMatrixForExcel){\n // console.log(\"resourceMatrixForExcel\",resourceMatrixForExcel)\n let userMetadataList = data.usersMetadata.userMetadata;\n let resourcelist = new Array();\n let resourceTypeList = new Array();\n let userObjectList= new Array();\n let classRooms= new Array();\n let datesAccess= new Array();\n let grades= new Array();\n let subjectTought= new Array();\n // let unique_resourceTypeList = []; \n let duration = 0;\n for (let i = 0; i < userMetadataList.length; i++) {\n resourcelist = [];\n resourceTypeList = [];\n classRooms = []; \n datesAccess = [];\n grades = [];\n subjectTought = [];\n \n duration = 0;\n // console.log(\"userMetadataList[i]\",userMetadataList);\n // console.log(\"resourceMatrixForExcel[i]\",[...new Set(resourceMatrixForExcel)]);\n for (let j = 0; j < resourceMatrixForExcel.length; j++){\n \n if(userMetadataList[i].userId === resourceMatrixForExcel[j][14]){\n if(resourceMatrixForExcel[j][12] != ''){\n resourcelist.push(resourceMatrixForExcel[j][12]);\n }\n \n if(resourceMatrixForExcel[j][13] != ''){\n resourceTypeList.push(resourceMatrixForExcel[j][13]);\n }\n if(resourceMatrixForExcel[j][5] != ''){\n duration = duration + resourceMatrixForExcel[j][5];\n }\n \n \n classRooms.push(resourceMatrixForExcel[j][6]);\n datesAccess.push(resourceMatrixForExcel[j][2]);\n grades.push(resourceMatrixForExcel[j][9]);\n subjectTought.push(resourceMatrixForExcel[j][8]);\n \n \n }\n }\n \n let ClassRooms:any; \n let DatesAccess:any; \n let Grades:any; \n let SubjectTought:any; \n let dayAccess:any; \n \n if(classRooms.length>0){\n ClassRooms = [...new Set(classRooms)][0];\n }else{\n ClassRooms = '';\n }\n if(datesAccess.length>0){\n dayAccess = [...new Set(datesAccess)].length;\n }else{\n dayAccess = '';\n }\n if(datesAccess.length>0){\n DatesAccess = [...new Set(datesAccess)][0];\n }else{\n DatesAccess = '';\n }\n if(grades.length>0){\n Grades = [...new Set(grades)][0];\n }else{\n Grades = ''\n }\n \n if(subjectTought.length>0){\n SubjectTought = [...new Set(subjectTought)][0];\n }else{\n SubjectTought = '';\n }\n // if(resourceTypeList.length>0){\n // unique_resourceTypeList = [...new Set(resourceTypeList)];\n \n // }\n // console.log(\"this.resourceTypes\",this.resourceTypes)\n let user = {\n Name: this.getName(userMetadataList[i]),\n Subjects:userMetadataList[i].userSubjects,\n duration:duration,\n ClassRooms:ClassRooms,\n DatesAccess:DatesAccess,\n DayAccess:dayAccess,\n Grades:Grades,\n SubjectTought:SubjectTought,\n AseestUsed:resourcelist,\n AssetType:resourceTypeList\n }\n userObjectList.push(user);\n \n }\n // console.log(\"userObjectList\",userObjectList)\n let userSummaryList = new Array();\n for(let i = 0; i < userObjectList.length; i++){\n const Assetcounts = [];\n //find count of present asset type\n let presentAsset =userObjectList[i].AssetType;\n presentAsset = [...new Set(presentAsset)];\n // console.log(\"presentAsset\",presentAsset)\n //find count of present asset count\n const sampleArray =userObjectList[i].AssetType;\n sampleArray.forEach(function (x) { Assetcounts[x] = (Assetcounts[x] || 0) + 1; });\n // find missing assets\n let missingAssets = this.resourceTypes.filter(n => !presentAsset.includes(n));\n // adding missing asset with count 0 in list\n missingAssets.forEach((element) => {\n Assetcounts[element] = 0;\n });\n // console.log(Assetcounts);\n let asset_media = {\n // Sr_No: i+1,\n Name:userObjectList[i].Name,\n Subjects_taught:userObjectList[i].Subjects,\n \" Duration(mins)\":userObjectList[i].duration,\n ClassRooms:userObjectList[i].ClassRooms,\n DaysAccsessed:userObjectList[i].DayAccess,\n DatesAccess:userObjectList[i].DatesAccess,\n Grades:userObjectList[i].Grades,\n Subjects:userObjectList[i].SubjectTought\n }\n const returnedTarget = Object.assign(asset_media, Assetcounts);\n userSummaryList.push(returnedTarget);\n\n }\n \n // console.log(\"userSummaryList\",userSummaryList);\n \n return userSummaryList;\n }\n\n // To GET DISPLAY TYPE\n getDisplaytypeValue(key: any) {\n let assetTypeConfig = [\n {\n type: \"asset_media\",\n display: \"Media\"\n },\n {\n type: \"asset_print\",\n display: \"Print\"\n },\n {\n type: \"quiz\",\n display: \"Quiz\"\n },\n {\n type: \"question\",\n display: \"Question\"\n },\n {\n type: \"chapter\",\n display: \"Chapter\"\n },\n {\n type: \"tp\",\n display: \"Topic\"\n },\n {\n type: \"whiteboard\",\n display: \"Whiteboard\"\n },\n {\n type: \"widget\",\n display: \"Widget\"\n },\n {\n type: \"casset_media\",\n display: \"cMedia\"\n },\n {\n type: \"casset_print\",\n display: \"cPrint\"\n },\n {\n type: \"cquiz\",\n display: \"cQuiz\"\n },\n {\n type: \"cquestion\",\n display: \"cQuestion\"\n },\n {\n type: \"image\",\n display: \"Image\"\n },\n {\n type: \"video\",\n display: \"Video\"\n },\n \n ];\n let displayValue = key;\n assetTypeConfig.forEach((value) => {\n if (value.type === key) {\n displayValue = value.display;\n }\n });\n return displayValue;\n \n }\n}\n","import { Component, OnInit, Output, ViewChild, Input, EventEmitter } from '@angular/core';\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\nimport { ExceldataService } from '../exceldata.service';\nimport { DatepickerOptions } from 'ng2-datepicker';\n@Component({\n selector: 'lib-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\nexport class HeaderComponent implements OnInit {\n @Input() set data(res: any) {\n if(res!== null){\n this.loadData(res);\n } \n }\n @Output() userSelectedDate = new EventEmitter();\n\n myCalendar: any;\n calenderDate: any;\n currentDate: any;\n calenderCurrentDate: any;\n todayDate: any;\n refreshTimer = 0;\n refreshInterval: any;\n calenderEvent: any;\n message: any;\n intervalId: any;\n mydata :any;\n dataList: any;\n //for datepicker\n title = 'datepicker';\n date: Date = new Date();\n options: DatepickerOptions = {\n inputClass: 'input',\n calendarClass: 'datepicker-default',\n scrollBarColor: '#010001',\n format: 'dd/LL/yyyy',\n maxDate: new Date()\n\n // for demo purpose\n \n };\n urlParams: any;\n isDemo: any;\n constructor(\n private excelService: ExceldataService,\n private pdService:PrincipalDashboardLibV2Service\n ) { }\n\n ngOnInit(): void {\n this.urlParams = new URLSearchParams(window.location.search);\n this.isDemo = this.urlParams.get('demo') === '1';\n this.getDefaultDate();\n this.startTimer();\n }\n getDefaultDate() {\n \n const selectedDate = this.isDemo ? new Date('2025-05-21T00:00:00') : new Date();\n this.getDateFormat(selectedDate);\n this.todayDate = this.calenderCurrentDate;\n console.log('this.isDemo', this.isDemo)\n if (this.isDemo) {\n this.mydata = null;\n this.refreshChart();\n this.pdService.openSmallTable.next(false);\n }\n \n }\n dateSelected(e: any){\n \n\n const selectedDate = this.isDemo ? new Date('2025-05-21T00:00:00') : new Date(e);\n\n console.log(\"Selected Date:\", selectedDate);\n this.getDateFormat(selectedDate);\n \n //const fixedDate = new Date('2025-05-21T00:00:00'); // Static date\n //console.log(\"Overriding selected date with fixed date:\", fixedDate);\n //this.getDateFormat(fixedDate);\n\n this.mydata = null;\n this.refreshChart();\n this.pdService.openSmallTable.next(false);\n }\n getDateFormat(date:any){\n let day = date.getDate();\n let month = date.getMonth() + 1;\n let year = date.getFullYear();\n let m;\n let d;\n if (month < 10) {\n m = \"0\" + month;\n } else {\n m = month;\n }\n if (day < 10) {\n d = \"0\" + day;\n } else {\n d = day;\n }\n let today = year + \"-\" + m + \"-\" + d;\n this.currentDate = today;\n this.calenderCurrentDate = today.split(\"-\").reverse().join(\"-\");\n }\n // selectDate(e: any) {\n // this.calenderEvent = e;\n // let today = e.target.value;\n // // console.log(\"e.target.value\", e.target.value);\n // today = today.split(\"-\").reverse().join(\"-\");\n // this.calenderCurrentDate = today;\n // this.mydata = null;\n // this.refreshChart();\n // // this.userSelectedDate.emit(this.calenderCurrentDate);\n // ;\n // console.log(\" IN --> 5\");\n // }\n refreshChart() {\n this.stopTimer();\n this.refreshTimer = 0;\n if(this.calenderCurrentDate === this.todayDate){\n this.countDown();\n }\n this.userSelectedDate.emit(this.calenderCurrentDate);\n }\n\n startTimer() {\n this.countDown();\n }\n stopTimer() {\n this.clearTimer();\n this.message = ``;\n }\n clearTimer() {\n this.refreshTimer = 0;\n window.clearInterval(this.intervalId);\n }\n countDown() {\n //console.log(\"countDown\")\n this.clearTimer();\n this.intervalId = window.setInterval(() => {\n this.refreshTimer -= 1;\n if (this.refreshTimer === 0) {\n this.refreshChart();\n this.message = '';\n } else {\n if (this.refreshTimer < 0) {\n this.refreshTimer = 300;\n } // reset\n this.message = `${this.refreshTimer}`;\n }\n }, 1000);\n }\n timeConvert(n: any) {\n var num = n;\n var hours = num / 60;\n var rhours = Math.floor(hours);\n var minutes = (hours - rhours) * 60;\n var rminutes = Math.round(minutes);\n return rhours + ':' + rminutes;\n }\n // currentdataList: any;\n // currentResoursedataList:any;\n loadData(response: any){\n if(response){\n this.mydata = this.pdService.parseData(response);\n if (this.mydata) {\n //get current data list\n let genarateUserReqiuredData = this.excelService.genarateUserReqiuredData_Excel(this.mydata);\n let currentdataList =genarateUserReqiuredData.userConsoleData;\n // resoureMetadata list\n let currentResoursedataList = this.excelService.genarateResourseReqiuredData_Excel(this.mydata);\n \n let deatilData = this.excelService.deatilData_Excel(currentdataList,currentResoursedataList);\n let userDetails_data = this.excelService.deatilUsage_Excel(deatilData);\n let UserSummary = this.excelService.userSummary_Excel(this.mydata,deatilData);\n \n let schoolDetails = this.mydata.schoolMetadata.school;\n let userDetails = userDetails_data;\n let terminalDetails = this.mydata.schoolTerminals.schoolTerminal;\n // console.log(\"schoolDetails\",schoolDetails);\n // console.log(\"UserSummary\",UserSummary);\n // console.log(\"terminalDetails\",terminalDetails);\n // console.log(\"userDetails\",userDetails);\n \n this.dataList = [\n [schoolDetails],\n UserSummary,\n terminalDetails,\n userDetails\n ]\n }\n }\n \n }\n exportReport(){\n if(this.mydata){\n this.excelService.exportAsExcelFile(this.dataList, 'UsageReport-'+ this.calenderCurrentDate);\n }\n \n }\n ngOnDestroy() {\n this.clearTimer();\n }\n \n}\n","import { Component, OnInit ,Input} from '@angular/core';\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\nimport { ChartType } from 'angular-google-charts';\n\n@Component({\n selector: 'lib-tableview',\n templateUrl: './tableview.component.html',\n styleUrls: ['./tableview.component.scss'],\n})\n\nexport class TableviewComponent implements OnInit {\n @Input() set data(res: any) {\n if(res!== null){\n this.loadTable(res);\n }\n }\n constructor(\n private pdService: PrincipalDashboardLibV2Service\n ) {}\n resourseMetadata: any;\n tableRow: any;\n userMetadata: any;\n tableViewDiv: any;\n tblBody: any;\n myXmlData: any;\n myChartType = ChartType.Table;\n currentdataList:any;\n currentResoursedataList:any;\n tableViewData:any;\n alluserList:any;\n isUserWise = true;\n \n ngOnInit(): void {\n \n }\n\n loadTable(response: any){\n console.log('mresponse: ',response)\n // let parse = new DOMParser();\n // this.myXmlData = parse.parseFromString(response, 'application/xml');\n if(response){\n this.myXmlData = this.pdService.parseData(response);\n if(this.myXmlData){\n // get current data list\n //console.log(\"AAA myXmlData-->>\",this.myXmlData)\n let genarateUserReqiuredData = this.pdService.genarateUserReqiuredData(this.myXmlData);\n this.currentdataList =genarateUserReqiuredData.userConsoleData;\n // get all user list \n let fetchAlluserList = this.pdService.allUserChartData();\n this.alluserList = fetchAlluserList.fordurationTable;\n // resoureMetadata list\n this.currentResoursedataList = this.pdService.genarateResourseReqiuredData(this.myXmlData);\n \n //console.log(\"AAA genarateUserReqiuredData-->>\",genarateUserReqiuredData)\n //console.log(\"AAA this.currentResoursedataList-->>\",this.currentResoursedataList)\n }\n }\n \n \n this.tableViewDiv = document.getElementById('tableViewDiv');\n this.tableRow = document.getElementById('tableRow');\n this.tblBody = document.getElementById('tblBody');\n this.tableViewDiv.style.display = 'none';\n \n this.pdService.chartType.subscribe((data) => {\n if (data) {\n this.updateChartType(data);\n \n }\n });\n this.pdService.isUserWise_data.subscribe((data) => {\n this.updateDataType(data);\n \n });\n this.pdService.isAllUsers.subscribe((data) => {\n if(data){\n this.showAllUser();\n }else{\n this.showCurrentDataUser();\n }\n \n });\n }\n findAndSimplifyNestedArray(data) {\n //console.log('this.tableViewData',data)\n for (let i = 0; i < data.length; i++) {\n if (Array.isArray(data[i])) {\n const nestedArray = data[i];\n if (nestedArray.every(item => Array.isArray(item) && item.every(val => val === item[0]))) {\n data[i] = [[nestedArray[0][0]]];\n }\n return data[i]; \n }\n }\n \n return \"No nested array found.\";\n }\n\n \n showCurrentDataUser() {\n this.tableViewData = this.pdService.dataForTableView(this.currentdataList,this.currentResoursedataList);\n \n this.tableViewData = this.replaceTopicAndChapter(this.tableViewData);\n \n //this.tableViewData = this.findAndSimplifyNestedArray(this.tableViewData);\n let newTableViewData: any;\n\n \n \n for (var i = 0; i < this.tableViewData.length; i++){\n newTableViewData = this.findAndSimplifyNestedArray(this.tableViewData[i]);\n newTableViewData[newTableViewData.length-1] = newTableViewData[newTableViewData.length-1][0]\n }\n\n let anotherTableViewData: any;\n for (var j = 0; j < this.tableViewData.length; j++){\n anotherTableViewData = this.mergerSourceWithRoomData(this.tableViewData[j]); \n }\n\n if(this.tableViewData){\n //this.ueserWiseTableView(this.tableViewData);\n this.ueserWiseTableView(this.tableViewData);\n \n \n }\n //console.log('AAA mlaunchedFromm tableViewData', this.tableViewData)\n }\n\n \nreplaceTopicAndChapter(data) {\n let htmlStr = \"<span style='font-style: italic;color: #3F51B5;'>(seen)</span>\";\n return data.map(row => {\n if (Array.isArray(row)) {\n return row.map(item => {\n if (typeof item === 'string') {\n \n //item = item.replace(/Topic :\\s*(.+?)\\s*:\\s*0m 0s/, 'Topic: $1 ' + htmlStr);\n //item = item.replace(/Chapter :\\s*(.+?)\\s*:\\s*0m 0s/, 'Chapter: $1 ' + htmlStr);\n item = item.replace(/Topic :\\s*(.+?)\\s*:\\s*\\d+m \\d+s/, 'Topic: $1 ' + htmlStr);\n item = item.replace(/Chapter :\\s*(.+?)\\s*:\\s*\\d+m \\d+s/, 'Chapter: $1 ' + htmlStr);\n }\n return item;\n });\n }\n return row;\n });\n}\n\n mergerSourceWithRoomData(tableViewData){\n let lastIndexValue = tableViewData[tableViewData.length - 1].join(' ');\n // Merge last index value into the 6th index\n //console.log('lastIndexValue',lastIndexValue)\n if(lastIndexValue === 'ce6')\n {\n //lastIndexValue = '<span style=\"color:black;\"><i class=\"fa fa-windows\" aria-hidden=\"true\"></i></span>';\n lastIndexValue = '<span style=\"color:black;\"></span>';\n }else if(lastIndexValue === 'ce6-a'){\n lastIndexValue = '<span style=\"color:#1b60d1;font-weight:bold;font-size:14px;\"><i class=\"fa fa-android\" aria-hidden=\"true\"></i></span>';\n }else if(lastIndexValue === 'c'){\n lastIndexValue = '<span style=\"color:#1b60d1;font-weight:bold;font-size:14px; display:flex;\"><i style=\"margin-top:-1px;\" class=\"fa fa-android\" aria-hidden=\"true\"></i><i style=\"margin-left:5px;\" class=\"fa fa-desktop\" aria-hidden=\"true\"></i></span>';\n }\n //tableViewData[6] = tableViewData[6] + '\\n' + lastIndexValue;\n //tableViewData[6] = '<div style=\"display: flex;flex-direction: row;align-content: center;justify-content: flex-start;align-items: center;\">'+lastIndexValue + '&nbsp;&nbsp;' + '<span style=\"font-size:11px !important;color:gray;font-weight:600;\">'+tableViewData[6]+'</span></div>';\n\n tableViewData[6] = '<div style=\"display: flex;flex-direction: row;align-content: center;justify-content: flex-start;align-items: center;\">'+'<span style=\"font-size:11px !important;color:gray;font-weight:600;\">'+tableViewData[6]+'</span>'+ '<span style=\"color:transparent\">-</span>' +lastIndexValue + '</div>';\n \n // Optional: remove the last element (if no longer needed)\n tableViewData.pop();\n }\n\n\n showAllUser() {\n this.tableViewData = this.pdService.dataForTableView(this.alluserList ,this.currentResoursedataList);\n console.log('11decc tableViewDataBBB',this.replaceTopicAndChapter(this.tableViewData));\n this.tableViewData = this.replaceTopicAndChapter(this.tableViewData);\n\n\n //console.log('AAA userConsoleMatrix tableViewData', this.tableViewData)\n let newTableViewData: any;\n \n for (var i = 0; i < this.tableViewData.length; i++){\n newTableViewData = this.findAndSimplifyNestedArray(this.tableViewData[i]);\n if(newTableViewData[newTableViewData.length-1]){\n newTableViewData[newTableViewData.length-1] = newTableViewData[newTableViewData.length-1][0]\n }\n \n }\n\n let anotherTableViewData: any;\n for (var j = 0; j < this.tableViewData.length; j++){\n anotherTableViewData = this.mergerSourceWithRoomData(this.tableViewData[j]); \n }\n if(this.tableViewData){\n this.ueserWiseTableView(this.tableViewData);\n }\n }\n updateDataType(dataType: any) {\n this.isUserWise = dataType;\n }\n updateChartType(dataType: any) {\n this.myChartType = dataType;\n if (this.myChartType == ChartType.Timeline) {\n this.tableViewDiv.style.display = 'none';\n } else {\n this.tableViewDiv.style.display = 'block';\n }\n }\n \n ueserWiseTableView(resoureMetadata: any) {\n //console.log('AAA resoureMetadata', resoureMetadata);\n // this.deleterow(\"tableRow\");\n document.getElementById(\"tblBody\").innerHTML = \"\";\n let labelArray = new Array();\n let cnt = 0;\n for (let i = 0; i < resoureMetadata.length; i++) {\n for (let j = 0; j < 12; j++) {\n //let label = document.createElement('label');\n //label.appendChild(document.createTextNode(resoureMetadata[i][j]));\n\n let label:any = document.createElement('div');\n label.innerHTML = (resoureMetadata[i][j]);\n\n //console.log('11dec label.textContent',label.textContent)\n if (\n label.textContent === 'undefined' || \n label.textContent === undefined || \n label.textContent === 'undefined\\nce6-a' || \n label.textContent === 'undefined\\nce6' || \n label.textContent === 'undefined\\n' ||\n label.textContent === 'undefined\\nAndroid' || \n label.textContent === 'undefined\\nWeb' || \n label.textContent === 'undefined\\n' ||\n label.textContent === '\\nundefined' ||\n label.textContent === ' undefined' ||\n label.textContent === 'undefined-' ||\n label.textContent === 'undefined-c' ||\n label.textContent === 'undefined- ' \n\n \n ) {\n label.textContent = '';\n }\n \n labelArray.push(label);\n \n }\n }\n //console.log(\"labelArray\",labelArray);\n for (let j = 0; j <= resoureMetadata.length; j++) {\n let row = document.createElement('tr');\n \n let cell: any;\n for (let i = 0; i < 12; i++) {\n cell = document.createElement('td');\n \n if (cnt < labelArray.length) {\n cell.appendChild(labelArray[cnt]);\n row.appendChild(cell);\n }\n cnt++;\n }\n this.tblBody.appendChild(row);\n // this.tableRow.appendChild(this.tblBody);\n }\n \n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\n\n\n@Component({\n selector: 'lib-full-table-view',\n templateUrl: './full-table-view.component.html',\n styleUrls: ['./full-table-view.component.scss'],\n})\nexport class FullTableViewComponent implements OnInit {\n @Input() set data(res: any) {\n if(res!== null){\n this.jsonResponse = this.pdService.parseData(res)\n // rebuild rows when new data arrives (date change / refresh)\n if (this.isInitialized) {\n this.loadUserData();\n }\n }\n \n }\n constructor(\n private pdService: PrincipalDashboardLibV2Service\n ) {}\n currentUserArray: any[] = [];\n remaningUsers: any[] = [];\n allUsers: any[] = [];\n usersCheckboxChecked: boolean = false;\n classroomArray: any[] = [];\n allClassrooms: any[] = [];\n jsonResponse;\n isDisplay = false;\n isUserWise = true;\n isAllUsers = false;\n isInitialized = false;\n\n ngOnInit(): void {\n this.loadUserData();\n this.isInitialized = true;\n\n this.pdService.isUserWise_data.subscribe((data) => {\n this.isUserWise = data;\n });\n\n this.pdService.isAllUsers.subscribe((data) => {\n this.isAllUsers = !!data;\n });\n\n this.pdService.chartType.subscribe((data) => {\n if (data) {\n console.log('newTable', data);\n this.isDisplay = data === \"Table\"; \n }\n });\n }\n\n get userRows(): any[] {\n return this.isAllUsers ? this.allUsers : this.currentUserArray;\n }\n\n get classroomRows(): any[] {\n return this.isAllUsers ? this.allClassrooms : this.classroomArray;\n }\n\n loadUserData(): void {\n const json = this.jsonResponse; \n this.currentUserArray = [];\n this.remaningUsers = [];\n this.allUsers = [];\n this.classroomArray = [];\n this.allClassrooms = [];\n if (!json) return;\n\n const usersConsole = json.usersConsole.userConsole;\n const usersMetadata = json.usersMetadata.userMetadata;\n const resourcesMetadata = json.resourcesMetadata.resourceMetadata;\n\n usersConsole.forEach((user: any) => {\n let userDetails = usersMetadata.find(\n (userMeta: any) => userMeta.userId === user.userId\n );\n\n if (user?.userConsoleResources) {\n const userConsoleResource =\n user.userConsoleResources?.userConsoleResource;\n\n if (userConsoleResource && userConsoleResource.length > 0) {\n userConsoleResource.forEach((userResource: any, userIndex: number) => {\n const resourceId = userResource.resourceId;\n const resourceDetails = resourcesMetadata.find(\n (resource: any) =>\n resource.resourceId === resourceId &&\n userResource.type === resource.type\n );\n\n // console.log('userResource.type',userResource.type)\n const prefix = this.getDisplayTypeValue(userResource.type);\n const title = resourceDetails?.title || '';\n const tp = resourceDetails?.teachingPoint?.title;\n const subject = resourceDetails?.subject?.title;\n const chapter = resourceDetails?.chapter?.title;\n const grade = resourceDetails?.grade?.title;\n const startTime = new Date(user?.startTime);\n const endTime = new Date(user?.endTime);\n const totalDuration = this.formatTime(\n Math.round((endTime.getTime() - startTime.getTime()) / 1000)\n );\n let duration: any = parseInt(userResource?.duration || '0');\n //duration = duration === 0 ? \"<span style='colore:red;'>(Seen)</span>\" : this.formatTime(duration);\n \n if (userResource?.type?.includes('question') || userResource?.type?.includes('cquestion')) {\n duration = 0;\n } else {\n duration = duration === 0 ? \"<span class='seenTag' style='color:blue;'>(Seen)</span>\" : this.formatTime(duration);\n }\n\n let finalAssetTitle = `${prefix} : ${title} : ${duration}`\n if(title === ''){\n finalAssetTitle = `${prefix} : ${duration}`\n }\n // console.log('chapterTitlte', chapter)\n this.currentUserArray.push({\n userId: user.userId,\n teacherName: userIndex === 0 ? userDetails?.fullName : '',\n subjects: userIndex === 0 ? userDetails?.userSubjects : '',\n date: userIndex === 0 ? user?.selectedDate : '',\n startTime: userIndex === 0 ? this.formatDate(startTime) : '',\n endtime: userIndex === 0 ? this.formatDate(endTime) : '',\n totalDuration: userIndex === 0 ? totalDuration : '',\n room: userIndex === 0 ? user?.terminalIP : '',\n tp: tp,\n subject: subject,\n chapter: chapter,\n grade: grade,\n details: finalAssetTitle,\n });\n });\n }\n }\n });\n\n const currentUserIds = this.currentUserArray\n .map((x: any) => x.userId)\n .filter((x: any, i: number, a: any[]) => a.indexOf(x) === i);\n\n this.remaningUsers = usersMetadata\n .filter((user: any) => !currentUserIds.includes(user.userId))\n .map((user: any) => {\n return {\n userId: user.userId,\n teacherName: user?.fullName,\n subjects: user?.userSubjects,\n date: '',\n startTime: '',\n endtime: '',\n totalDuration: '0s',\n room: '',\n tp: '',\n subject: '',\n chapter: '',\n grade: '',\n details: '',\n };\n });\n\n this.allUsers = [...this.currentUserArray, ...this.remaningUsers];\n this.loadClassroomData(usersConsole, usersMetadata, resourcesMetadata);\n this.loadTable(this.currentUserArray);\n }\n\n // Classroom wise rows: grouped by room, then by session start time\n loadClassroomData(usersConsole: any[], usersMetadata: any[], resourcesMetadata: any[]): void {\n const schoolTerminals = this.jsonResponse?.schoolTerminals?.schoolTerminal || [];\n const roomNames: any = {};\n schoolTerminals.forEach((terminal: any) => {\n roomNames[terminal.terminalKey] = this.getTerminalLocation(terminal);\n });\n\n const sessionsByRoom: any = {};\n // every session is a bar in the classroom chart, so keep sessions without resources too\n usersConsole.forEach((user: any) => {\n const ip = user?.terminalIP || '';\n (sessionsByRoom[ip] = sessionsByRoom[ip] || []).push(user);\n });\n\n const roomLabel = (ip: string) => this.pdService.getRoomLabel(roomNames[ip], ip);\n const activeIPs = Object.keys(sessionsByRoom).sort((a, b) =>\n roomLabel(a).localeCompare(roomLabel(b), undefined, { numeric: true })\n );\n\n activeIPs.forEach((ip) => {\n const sessions = sessionsByRoom[ip].sort(\n (a: any, b: any) => new Date(a.startTime).getTime() - new Date(b.startTime).getTime()\n );\n sessions.forEach((user: any, sessionIndex: number) => {\n const userDetails = usersMetadata.find((userMeta: any) => userMeta.userId === user.userId);\n const startTime = new Date(user?.startTime);\n const endTime = new Date(user?.endTime);\n const totalDuration = this.formatTime(\n Math.round((endTime.getTime() - startTime.getTime()) / 1000)\n );\n\n const resources = user?.userConsoleResources?.userConsoleResource || [];\n const sessionRows = resources.length > 0 ? resources : [null];\n\n sessionRows.forEach((userResource: any, resourceIndex: number) => {\n const resourceDetails = userResource && resourcesMetadata.find(\n (resource: any) =>\n resource.resourceId === userResource.resourceId &&\n userResource.type === resource.type\n );\n const isFirstOfSession = resourceIndex === 0;\n this.classroomArray.push({\n room: isFirstOfSession && sessionIndex === 0 ? roomLabel(ip) : '',\n teacherName: isFirstOfSession ? userDetails?.fullName : '',\n date: isFirstOfSession ? user?.selectedDate : '',\n startTime: isFirstOfSession ? this.formatDate(startTime) : '',\n endtime: isFirstOfSession ? this.formatDate(endTime) : '',\n totalDuration: isFirstOfSession ? totalDuration : '',\n tp: resourceDetails?.teachingPoint?.title,\n subject: resourceDetails?.subject?.title,\n chapter: resourceDetails?.chapter?.title,\n grade: resourceDetails?.grade?.title,\n details: userResource ? this.getAssetDetails(userResource, resourceDetails) : '',\n });\n });\n });\n });\n\n const idleRooms = schoolTerminals\n .filter((terminal: any) => !sessionsByRoom[terminal.terminalKey])\n .map((terminal: any) => ({\n room: roomLabel(terminal.terminalKey),\n teacherName: '',\n date: '',\n startTime: '',\n endtime: '',\n totalDuration: '0s',\n tp: '',\n subject: '',\n chapter: '',\n grade: '',\n details: '',\n }));\n\n this.allClassrooms = [...this.classroomArray, ...idleRooms];\n }\n\n getTerminalLocation(terminal: any): string {\n try {\n return terminal?.metadata ? JSON.parse(terminal.metadata)?.location || '' : '';\n } catch (e) {\n return '';\n }\n }\n\n getAssetDetails(userResource: any, resourceDetails: any): string {\n const prefix = this.getDisplayTypeValue(userResource.type);\n const title = resourceDetails?.title || '';\n let duration: any = parseInt(userResource?.duration || '0');\n if (userResource?.type?.includes('question') || userResource?.type?.includes('cquestion')) {\n duration = 0;\n } else {\n duration = duration === 0 ? \"<span class='seenTag' style='color:blue;'>(Seen)</span>\" : this.formatTime(duration);\n }\n return title === '' ? `${prefix} : ${duration}` : `${prefix} : ${title} : ${duration}`;\n }\n\n getDisplayTypeValue(key: string): string {\n const assetTypeConfig = [\n { type: 'asset_media', display: 'Media' },\n { type: 'asset_print', display: 'Print' },\n { type: 'quiz', display: 'Quiz' },\n { type: 'question', display: 'Question' },\n { type: 'chapter', display: 'Chapter' },\n { type: 'tp', display: 'Topic' },\n { type: 'whiteboard', display: 'Whiteboard' },\n { type: 'widget', display: 'Widget' },\n { type: 'casset_media', display: 'cMedia' },\n { type: 'casset_print', display: 'cPrint' },\n { type: 'cquiz', display: 'cQuiz' },\n { type: 'cquestion', display: 'cQuestion' },\n { type: 'image', display: 'Image' },\n { type: 'video', display: 'Video' },\n { type: 'tools', display: 'Tools' },\n { type: 'feature', display: 'Feature' },\n { type: 'ebook', display: 'Ebook' }\n ];\n\n const asset = assetTypeConfig.find((value) => value.type === key);\n return asset ? asset.display : key;\n }\n\n formatDate(now: Date): string {\n let hours = now.getHours();\n const minutes = now.getMinutes();\n const seconds = now.getSeconds();\n const ampm = hours >= 12 ? 'PM' : 'AM';\n hours = hours % 12 || 12;\n\n return `${hours.toString().padStart(2, '0')}:${minutes\n .toString()\n .padStart(2, '0')}:${seconds.toString().padStart(2, '0')} ${ampm}`;\n }\n\n formatTime(seconds: number): string {\n const days = Math.floor(seconds / 86400);\n const hours = Math.floor((seconds % 86400) / 3600);\n const minutes = Math.floor((seconds % 3600) / 60);\n const secs = seconds % 60;\n\n if (seconds < 60) return `${secs}s`;\n if (seconds < 3600) return `${minutes}m ${secs}s`;\n if (seconds < 86400) return `${hours}h ${minutes}m ${secs}s`;\n\n return `${days}d ${hours}h ${minutes}m ${secs}s`;\n }\n\n loadTable(data: any[]): void {\n\n /*\n const tableBody = document.querySelector(\"#teacherTable tbody\");\n\n data.forEach((item) => {\n const row = document.createElement(\"tr\");\n for (const key in item) {\n const cell = document.createElement(\"td\");\n cell.textContent = item[key];\n if (key !== \"userId\") {\n row.appendChild(cell);\n }\n }\n tableBody.appendChild(row);\n });*/\n }\n\n toggleUsers(): void {\n this.usersCheckboxChecked = !this.usersCheckboxChecked;\n this.loadTable(\n this.usersCheckboxChecked\n ? this.allUsers\n : this.currentUserArray\n );\n }\n\n getMockJson(): any {\n // Replace with actual data fetching logic\n return {};\n }\n}\n","import { Component, HostListener, Input, OnInit } from '@angular/core';\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\n\n// one coloured card in the popup header; icon and tone pick the look\nexport interface SummaryCard {\n label: string;\n value: string;\n sub?: string;\n icon: 'sessions' | 'room' | 'teacher' | 'subject' | 'start' | 'end' | 'clock';\n tone: 'lime' | 'sand' | 'sky' | 'mint';\n}\n\n@Component({\n selector: 'lib-small-table-view',\n templateUrl: './small-table-view.component.html',\n styleUrls: ['./small-table-view.component.scss']\n})\nexport class SmallTableViewComponent implements OnInit {\n @Input() set data(res: any) {\n if(res!== null){\n //console.log('smallTable',JSON.parse(res));\n this.jsonResponse = this.pdService.parseData(res)\n }\n \n }\n\n currentTimeFrameUserArray: any[] = [];\n currentUserArray: any[] = [];\n remaningUsers: any[] = [];\n allUsers: any[] = [];\n usersCheckboxChecked: boolean = false;\n jsonResponse;\n isDisplay = false;\n accentColor = '';\n // 'session' = one bar was clicked; 'all' = a row's total was clicked\n mode: 'session' | 'all' = 'session';\n allTitle = '';\n allSummary: SummaryCard[] = [];\n otherColumn = 'Room';\n // who used the room (classroom wise) or which rooms were used (user wise), with time each\n people: { label: string; time: string }[] = [];\n peopleTitle = '';\n constructor(\n private pdService: PrincipalDashboardLibV2Service\n ) {}\n\n ngOnInit(): void {\n this.pdService.openSmallTable$.subscribe((data) => {\n \n if(data){\n this.isDisplay = true;\n this.accentColor = this.pdService.detailAccentColor;\n if (data['allSessions'] && this.pdService.detailRowRequest) {\n this.loadRowSessions(this.pdService.detailRowRequest);\n return;\n }\n this.mode = 'session';\n \n let userid = this.findUserIdByName(data['userDetails'][0]);\n let startTime = data['userDetails'][1];\n let endTime = data['userDetails'][3];\n this.loadUserData(userid, startTime, endTime);\n }else{\n this.isDisplay = false;\n }\n \n });\n\n this.pdService.chartType.subscribe((data) => {\n this.isDisplay = false;\n });\n \n\n \n }\n\n\n findUserIdByName(name) {\n const json = this.jsonResponse;\n const user = json.usersMetadata.userMetadata.find(user => user.fullName === name);\n return user ? user.userId : null;\n }\n\n loadUserData(userId?: any, inputStartTime?: any, inputEndTime?:any): void {\n this.currentUserArray = [];\n this.allUsers = []\n this.currentTimeFrameUserArray = []\n const json = this.jsonResponse;\n const usersConsole = json.usersConsole.userConsole;\n const usersMetadata = json.usersMetadata.userMetadata;\n const resourcesMetadata = json.resourcesMetadata.resourceMetadata;\n\n const filteredUsersConsole = userId\n ? usersConsole.filter((user: any) => user.userId === userId)\n : usersConsole;\n\n filteredUsersConsole.forEach((user: any) => {\n this.currentUserArray.push(...this.rowsForConsole(user, usersMetadata, resourcesMetadata));\n });\n\n const currentUserIds = this.currentUserArray\n .map((x: any) => x.userId)\n .filter((x: any, i: number, a: any[]) => a.indexOf(x) === i);\n\n this.remaningUsers = usersMetadata\n .filter((user: any) => !currentUserIds.includes(user.userId))\n .map((user: any) => {\n return {\n userId: user.userId,\n teacherName: user?.fullName,\n subjects: user?.userSubjects,\n date: '',\n startTime: '',\n endtime: '',\n totalDuration: '0s',\n room: '',\n tp: '',\n subject: '',\n chapter: '',\n grade: '',\n details: '',\n };\n });\n\n this.allUsers = [...this.currentUserArray, ...this.remaningUsers];\n\n this.currentTimeFrameUserArray = this.filterDataByCriteria(this.currentUserArray, userId, inputStartTime, inputEndTime)\n console.log('smallData', this.currentTimeFrameUserArray)\n}\n\n\n\n\n // every session of a timeline row, oldest first; sessions with nothing opened still get a line\n loadRowSessions(request: any): void {\n this.mode = 'all';\n const json = this.jsonResponse;\n const usersConsole = json.usersConsole.userConsole;\n const usersMetadata = json.usersMetadata.userMetadata;\n const resourcesMetadata = json.resourcesMetadata.resourceMetadata;\n const wanted = request.sessions;\n\n const entries = usersConsole\n .filter((c: any) => wanted.some((s: any) =>\n s.userId === c.userId && s.ip === c.terminalIP && s.start === new Date(c.startTime).getTime()))\n .sort((a: any, b: any) => new Date(a.startTime).getTime() - new Date(b.startTime).getTime());\n\n const teacherName = (id: string) => (usersMetadata.find((u: any) => u.userId === id) || {}).fullName || '';\n const roomLabel = (ip: string) => this.getRoomName(ip) || ip;\n this.otherColumn = request.isUserWise ? 'Room' : 'Teacher';\n\n const rows: any[] = [];\n entries.forEach((c: any) => {\n const start = new Date(c.startTime);\n const end = new Date(c.endTime);\n const head = {\n sessionHead: true,\n sessionTime: `${this.formatClock(start)} – ${this.formatClock(end)}`,\n sessionDuration: this.formatTime(Math.round((end.getTime() - start.getTime()) / 1000)),\n sessionOther: request.isUserWise ? roomLabel(c.terminalIP) : teacherName(c.userId),\n };\n const sessionRows = this.rowsForConsole(c, usersMetadata, resourcesMetadata);\n if (sessionRows.length === 0) {\n rows.push({ ...head, empty: true });\n } else {\n sessionRows.forEach((r, i) => rows.push(i === 0 ? { ...r, ...head } : r));\n }\n });\n this.currentTimeFrameUserArray = rows;\n\n // time per teacher (or per room), in order of first appearance\n const timeByOther = new Map<string, number>();\n entries.forEach((c: any) => {\n const key = request.isUserWise ? roomLabel(c.terminalIP) : teacherName(c.userId);\n if (!key) return;\n const ms = new Date(c.endTime).getTime() - new Date(c.startTime).getTime();\n timeByOther.set(key, (timeByOther.get(key) || 0) + Math.max(ms, 0));\n });\n this.people = Array.from(timeByOther.entries()).map(([label, ms]) => ({ label, time: this.formatTime(Math.round(ms / 1000)) }));\n this.peopleTitle = request.isUserWise ? 'Rooms used' : 'Teachers in this room';\n\n // a bare room number reads better as \"Room 39\"\n this.allTitle = !request.isUserWise && /^\\d+$/.test(String(request.label).trim()) ? `Room ${request.label}` : request.label;\n this.allSummary = [\n { label: 'Sessions', value: `${entries.length}`, icon: 'sessions', tone: 'lime' },\n // just the count here; the names are listed under the cards\n { label: request.isUserWise ? 'Rooms' : 'Teachers', value: `${this.people.length}`, icon: request.isUserWise ? 'room' : 'teacher', tone: 'sand' },\n { label: 'First start', value: entries.length ? this.formatDate(new Date(entries[0].startTime)) : '—', icon: 'start', tone: 'sky' },\n {\n label: 'Last end',\n value: entries.length ? this.formatDate(new Date(Math.max(...entries.map((c: any) => new Date(c.endTime).getTime())))) : '—',\n icon: 'end',\n tone: 'sky',\n },\n { label: 'Total time', value: request.total || '—', icon: 'clock', tone: 'mint' },\n ];\n }\n\n // cards for a single session, read from the first row of that session\n get sessionSummary(): SummaryCard[] {\n const first = this.currentTimeFrameUserArray[0] || {};\n return [\n { label: 'Subject', value: first.subject || '—', icon: 'subject', tone: 'lime' },\n // room name when it has one, otherwise the IP\n { label: 'Room', value: first.roomName || first.room || '—', icon: 'room', tone: 'sand' },\n { label: 'Start', value: first.startTime || '—', icon: 'start', tone: 'sky' },\n { label: 'End', value: first.endtime || '—', icon: 'end', tone: 'sky' },\n { label: 'Total time', value: first.totalDuration || '—', icon: 'clock', tone: 'mint' },\n ];\n }\n\n formatClock(date: Date): string {\n const hours = date.getHours();\n return `${hours % 12 || 12}:${date.getMinutes().toString().padStart(2, '0')} ${hours >= 12 ? 'PM' : 'AM'}`;\n }\n\n // one row per resource opened in a single console session\n private rowsForConsole(user: any, usersMetadata: any[], resourcesMetadata: any[]): any[] {\n const rows: any[] = [];\n let userDetails = usersMetadata.find(\n (userMeta: any) => userMeta.userId === user.userId\n );\n\n if (user?.userConsoleResources) {\n const userConsoleResource = user.userConsoleResources?.userConsoleResource;\n\n if (userConsoleResource && userConsoleResource.length > 0) {\n userConsoleResource.forEach((userResource: any, userIndex: number) => {\n const resourceId = userResource.resourceId;\n const resourceDetails = resourcesMetadata.find(\n (resource: any) =>\n resource.resourceId === resourceId &&\n userResource.type === resource.type\n );\n\n const prefix = this.getDisplayTypeValue(userResource.type);\n const title = resourceDetails?.title || '';\n const tp = this.decodeHtmlEntities(resourceDetails?.teachingPoint?.title);\n const subject = this.decodeHtmlEntities(resourceDetails?.subject?.title);\n const chapter = this.decodeHtmlEntities(resourceDetails?.chapter?.title);\n const grade = this.decodeHtmlEntities(resourceDetails?.grade?.title);\n const startTime = new Date(user?.startTime);\n const endTime = new Date(user?.endTime);\n const totalDuration = this.formatTime(\n Math.round((endTime.getTime() - startTime.getTime()) / 1000)\n );\n let duration: any = parseInt(userResource?.duration || '0');\n \n //duration = duration === 0 ? \"<span class='dddd'>(Seen)</span>\" : this.formatTime(duration); \n if (userResource?.type?.includes('question') || userResource?.type?.includes('cquestion')) {\n duration = 0;\n } else {\n duration = duration === 0 ? \"<span class='dddd'>(Seen)</span>\" : this.formatTime(duration);\n }\n \n let finalAssetTitle = `${prefix} : ${title} : ${duration}`\n if(title === ''){\n finalAssetTitle = `${prefix} : ${duration}`\n }\n \n rows.push({\n \n userId: user.userId,\n teacherName: userIndex === 0 ? userDetails?.fullName : '',\n subjects: userIndex === 0 ? userDetails?.userSubjects : '',\n date: userIndex === 0 ? user?.selectedDate : '',\n startTime: userIndex === 0 ? this.formatDate(startTime) : this.formatDate(startTime),\n endtime: userIndex === 0 ? this.formatDate(endTime) : this.formatDate(endTime),\n // kept on every row: the popup reads it from whichever row comes first\n totalDuration: totalDuration,\n room: userIndex === 0 ? user?.terminalIP : '',\n roomName: userIndex === 0 ? this.getRoomName(user?.terminalIP) : '',\n tp: tp,\n subject: subject,\n chapter: chapter,\n grade: grade,\n details: finalAssetTitle,\n ip: user?.terminalIP,\n sessionStart: startTime.getTime(),\n });\n \n \n });\n }\n }\n return rows;\n }\n\nfilterDataByCriteria(userData, inputUserId, inputStartTime, inputEndTime) {\n \n const parseTime = (timeString) => {\n if (!timeString) return null; \n const [time, meridian] = timeString.split(' ');\n const [hours, minutes, seconds] = time.split(':').map(Number);\n const isPM = meridian === 'PM';\n return new Date(0, 0, 0, isPM && hours < 12 ? hours + 12 : hours, minutes, seconds);\n };\n\n const startTime = parseTime(inputStartTime);\n const endTime = parseTime(inputEndTime);\n\n \n const filteredData = userData.filter((entry) => {\n if (entry.userId !== inputUserId) return false; \n if (!entry.startTime || !entry.endtime) return false; \n const entryStart = parseTime(entry.startTime);\n const entryEnd = parseTime(entry.endtime);\n return entryStart && entryEnd && entryStart >= startTime && entryEnd <= endTime;\n });\n\n \n return filteredData.map((entry, index) => ({ ...entry, subsequentCount: index }));\n}\n\n\n\n // Converts entities like &#8242; or &amp; into their characters so they render as text\n decodeHtmlEntities(value: string): string {\n if (!value) return value;\n const textarea = document.createElement('textarea');\n textarea.innerHTML = value;\n return textarea.value;\n }\n\n getDisplayTypeValue(key: string): string {\n const assetTypeConfig = [\n { type: 'asset_media', display: 'Media' },\n { type: 'asset_print', display: 'Print' },\n { type: 'quiz', display: 'Quiz' },\n { type: 'question', display: 'Question' },\n { type: 'chapter', display: 'Chapter' },\n { type: 'tp', display: 'Topic' },\n { type: 'whiteboard', display: 'Whiteboard' },\n { type: 'widget', display: 'Widget' },\n { type: 'casset_media', display: 'cMedia' },\n { type: 'casset_print', display: 'cPrint' },\n { type: 'cquiz', display: 'cQuiz' },\n { type: 'cquestion', display: 'cQuestion' },\n { type: 'image', display: 'Image' },\n { type: 'video', display: 'Video' },\n { type: 'tools', display: 'Tools' },\n { type: 'feature', display: 'Feature' },\n ];\n\n const asset = assetTypeConfig.find((value) => value.type === key);\n return asset ? asset.display : key;\n }\n\n formatDate(now: Date): string {\n let hours = now.getHours();\n const minutes = now.getMinutes();\n const seconds = now.getSeconds();\n const ampm = hours >= 12 ? 'PM' : 'AM';\n hours = hours % 12 || 12;\n\n return `${hours.toString().padStart(2, '0')}:${minutes\n .toString()\n .padStart(2, '0')}:${seconds.toString().padStart(2, '0')} ${ampm}`;\n }\n\n formatTime(seconds: number): string {\n const days = Math.floor(seconds / 86400);\n const hours = Math.floor((seconds % 86400) / 3600);\n const minutes = Math.floor((seconds % 3600) / 60);\n const secs = seconds % 60;\n\n if (seconds < 60) return `${secs}s`;\n if (seconds < 3600) return `${minutes}m ${secs}s`;\n if (seconds < 86400) return `${hours}h ${minutes}m ${secs}s`;\n\n return `${days}d ${hours}h ${minutes}m ${secs}s`;\n }\n\n loadTable(data: any[]): void {\n\n /*\n const tableBody = document.querySelector(\"#teacherTable tbody\");\n\n data.forEach((item) => {\n const row = document.createElement(\"tr\");\n for (const key in item) {\n const cell = document.createElement(\"td\");\n cell.textContent = item[key];\n if (key !== \"userId\") {\n row.appendChild(cell);\n }\n }\n tableBody.appendChild(row);\n });*/\n }\n\n toggleUsers(): void {\n this.usersCheckboxChecked = !this.usersCheckboxChecked;\n this.loadTable(\n this.usersCheckboxChecked\n ? this.allUsers\n : this.currentUserArray\n );\n }\n\n // room name from schoolTerminals metadata, '' when not set\n getRoomName(ip: string): string {\n const terminals = this.jsonResponse?.schoolTerminals?.schoolTerminal || [];\n const terminal = terminals.find((t: any) => t.terminalKey === ip);\n try {\n return terminal?.metadata ? (JSON.parse(terminal.metadata)?.location || '').trim() : '';\n } catch (e) {\n return '';\n }\n }\n\n @HostListener('document:keydown.escape')\n onEscape() {\n if (this.isDisplay) {\n this.onCloseBtnClick();\n }\n }\n\n onCloseBtnClick() {\n this.isDisplay = false;\n \n \n //this.pdService.openSmallTable.next(false);\n }\n \n\n}\n","import { Component, EventEmitter, Input, OnChanges, Output } from '@angular/core';\n\nexport interface TimelineBar {\n start: Date;\n end: Date;\n index: number; // position of the session in the list the chart was built from\n tooltip: string;\n}\n\nexport interface TimelineRow {\n label: string;\n bars: TimelineBar[];\n}\n\ninterface RenderedBar extends TimelineBar {\n left: number;\n width: number;\n color: string;\n}\n\ninterface RenderedRow {\n label: string;\n color: string;\n totalMs: number;\n total: string;\n order: number;\n bars: RenderedBar[];\n // first start to last end, drawn as a light band behind the bars\n spanLeft: number;\n spanWidth: number;\n}\n\n@Component({\n selector: 'lib-timeline',\n templateUrl: './timeline.component.html',\n styleUrls: ['./timeline.component.scss'],\n})\nexport class TimelineComponent implements OnChanges {\n @Input() rows: TimelineRow[] = [];\n @Input() labelTitle = 'Name';\n @Output() barClick = new EventEmitter<{ index: number; color: string }>();\n // clicking a row's total asks for every session in that row\n @Output() totalClick = new EventEmitter<{ label: string; indexes: number[]; color: string; total: string }>();\n\n renderedRows: RenderedRow[] = [];\n ticks: { left: number; label: string; major: boolean }[] = [];\n // :15 and :45 marks, drawn in the header only, without labels\n quarterTicks: number[] = [];\n // fixed width per hour so a full day scrolls horizontally instead of squeezing\n hourWidth = 160;\n minWidth = 0;\n nowLeft: number = null;\n sortKey: 'default' | 'name' | 'total' = 'default';\n sortAsc = true;\n tooltip: { text: string; x: number; y: number } = null;\n\n private rangeStart = 0;\n private rangeEnd = 0;\n\n ngOnChanges(): void {\n this.render();\n }\n\n render(): void {\n const rows = this.rows || [];\n const allBars = rows.reduce((acc, row) => acc.concat(row.bars), [] as TimelineBar[]);\n\n if (allBars.length === 0) {\n this.ticks = [];\n this.quarterTicks = [];\n this.nowLeft = null;\n this.minWidth = 0;\n this.renderedRows = rows.map((row, i) => this.toRenderedRow(row, i));\n this.applySort();\n return;\n }\n\n const minStart = Math.min(...allBars.map((b) => b.start.getTime()));\n const maxEnd = Math.max(...allBars.map((b) => b.end.getTime()));\n const hour = 3600 * 1000;\n const startDate = new Date(minStart);\n startDate.setMinutes(0, 0, 0);\n this.rangeStart = startDate.getTime();\n this.rangeEnd = Math.max(Math.ceil((maxEnd - this.rangeStart) / hour) * hour + this.rangeStart, this.rangeStart + hour);\n\n const spanHours = (this.rangeEnd - this.rangeStart) / hour;\n // label (170) + total (90) + track margins (48) + hours\n this.minWidth = 170 + 90 + 48 + spanHours * this.hourWidth;\n this.ticks = [];\n this.quarterTicks = [];\n for (let t = this.rangeStart; t <= this.rangeEnd; t += hour / 4) {\n const minutes = new Date(t).getMinutes();\n if (minutes === 15 || minutes === 45) {\n this.quarterTicks.push(this.toPercent(t));\n } else {\n this.ticks.push({ left: this.toPercent(t), label: this.formatClock(new Date(t)), major: minutes === 0 });\n }\n }\n\n const now = Date.now();\n this.nowLeft = now >= this.rangeStart && now <= this.rangeEnd ? this.toPercent(now) : null;\n\n this.renderedRows = rows.map((row, i) => this.toRenderedRow(row, i));\n this.applySort();\n }\n\n toggleSort(key: 'name' | 'total'): void {\n if (this.sortKey === key) {\n if (this.sortAsc) {\n this.sortAsc = false;\n } else {\n this.sortKey = 'default';\n this.sortAsc = true;\n }\n } else {\n this.sortKey = key;\n this.sortAsc = key === 'name';\n }\n this.applySort();\n }\n\n sortIcon(key: 'name' | 'total'): string {\n if (this.sortKey !== key) return '';\n return this.sortAsc ? '▲' : '▼';\n }\n\n onBarClick(bar: RenderedBar): void {\n this.tooltip = null;\n this.barClick.emit({ index: bar.index, color: bar.color });\n }\n\n onTotalClick(row: RenderedRow): void {\n if (!row.bars.length) return;\n this.tooltip = null;\n this.totalClick.emit({ label: row.label, indexes: row.bars.map((b) => b.index), color: row.color, total: row.total });\n }\n\n showTooltip(event: MouseEvent, bar: RenderedBar): void {\n this.tooltip = { text: bar.tooltip, x: event.clientX + 12, y: event.clientY + 12 };\n }\n\n hideTooltip(): void {\n this.tooltip = null;\n }\n\n trackByLabel(index: number, row: RenderedRow): string {\n return row.label;\n }\n\n private toRenderedRow(row: TimelineRow, i: number): RenderedRow {\n const totalMs = this.mergedDuration(row.bars);\n const starts = row.bars.map((b) => b.start.getTime());\n const ends = row.bars.map((b) => b.end.getTime());\n const spanLeft = starts.length ? this.toPercent(Math.min(...starts)) : 0;\n const spanWidth = ends.length ? this.toPercent(Math.max(...ends)) - spanLeft : 0;\n return {\n spanLeft,\n spanWidth,\n label: row.label,\n color: this.rowColor(i),\n totalMs,\n total: this.formatDuration(totalMs),\n order: i,\n bars: row.bars.map((bar) => {\n const left = this.toPercent(bar.start.getTime());\n return {\n ...bar,\n left,\n width: Math.max(this.toPercent(bar.end.getTime()) - left, 0),\n color: this.rowColor(i),\n };\n }),\n };\n }\n\n // unique soft colour per row: golden-angle hue steps never repeat and keep neighbouring rows apart\n private rowColor(index: number): string {\n const hue = Math.round((217 + index * 137.508) % 360);\n return `hsl(${hue}, 62%, 68%)`;\n }\n\n private applySort(): void {\n const dir = this.sortAsc ? 1 : -1;\n this.renderedRows = [...this.renderedRows].sort((a, b) => {\n if (this.sortKey === 'name') {\n return dir * a.label.localeCompare(b.label, undefined, { numeric: true });\n }\n if (this.sortKey === 'total') {\n return dir * (a.totalMs - b.totalMs);\n }\n return a.order - b.order;\n });\n }\n\n // overlapping sessions in the same row are counted once\n private mergedDuration(bars: TimelineBar[]): number {\n const sorted = [...bars].sort((a, b) => a.start.getTime() - b.start.getTime());\n let total = 0;\n let curStart = null;\n let curEnd = null;\n sorted.forEach((bar) => {\n const s = bar.start.getTime();\n const e = bar.end.getTime();\n if (curEnd === null || s > curEnd) {\n if (curEnd !== null) total += curEnd - curStart;\n curStart = s;\n curEnd = e;\n } else if (e > curEnd) {\n curEnd = e;\n }\n });\n if (curEnd !== null) total += curEnd - curStart;\n return total;\n }\n\n private toPercent(time: number): number {\n const span = this.rangeEnd - this.rangeStart;\n return span > 0 ? ((time - this.rangeStart) / span) * 100 : 0;\n }\n\n private formatClock(date: Date): string {\n let hours = date.getHours();\n const minutes = date.getMinutes();\n const ampm = hours >= 12 ? 'PM' : 'AM';\n hours = hours % 12 || 12;\n return minutes === 0 ? `${hours} ${ampm}` : `${hours}:${minutes.toString().padStart(2, '0')}`;\n }\n\n private formatDuration(ms: number): string {\n const totalMinutes = Math.round(ms / 60000);\n const hours = Math.floor(totalMinutes / 60);\n const minutes = totalMinutes % 60;\n return `${hours}:${minutes.toString().padStart(2, '0')} hrs`;\n }\n}\n","import { AfterViewInit, Component, ElementRef, HostListener, Input } from '@angular/core';\nimport html2canvas from 'html2canvas';\nimport { jsPDF } from 'jspdf';\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\n\ninterface Interval {\n start: number;\n end: number;\n}\n\ninterface Session extends Interval {\n userId: string;\n ip: string;\n resources: { resourceId: string; type: string }[];\n}\n\nexport interface BarItem {\n label: string;\n sub?: string;\n value: number;\n display: string;\n percent: number;\n color?: string;\n}\n\nexport interface Kpi {\n label: string;\n value: string;\n hint: string;\n // what is on screen while the numbers count up\n shown?: string;\n}\n\nconst MINUTE = 60 * 1000;\nconst HOUR = 60 * MINUTE;\nconst SHORT_SESSION_MIN = 5;\n// width the page is laid out at for the PDF, so the export looks the same on any screen\nconst PDF_RENDER_WIDTH = 1280;\n\n@Component({\n selector: 'lib-insights',\n templateUrl: './insights.component.html',\n styleUrls: ['./insights.component.scss'],\n})\nexport class InsightsComponent implements AfterViewInit {\n @Input() set data(res: any) {\n if (res) {\n const json = this.pdService.parseData(res);\n if (json) this.build(json);\n }\n }\n\n schoolName = '';\n dayLabel = '';\n kpis: Kpi[] = [];\n hourly: { label: string; value: number; percent: number; peak: boolean; color: string }[] = [];\n grades: BarItem[] = [];\n topTeachers: BarItem[] = [];\n // donut of subject share: each segment is a dash along one circle\n subjectDonut: { total: string; segments: (BarItem & { dash: string; offset: number })[] } = { total: '', segments: [] };\n readonly donutRadius = 52;\n // columns per class, in class order\n gradeColumns: (BarItem & { short: string })[] = [];\n // one tile per room, shaded by share of the school day in use\n roomTiles: { label: string; display: string; share: number; shade: string; dark: boolean; idle: boolean; span: number }[] = [];\n idleRooms: string[] = [];\n inactiveTeachers: string[] = [];\n contentMix: BarItem[] = [];\n chapters: BarItem[] = [];\n attention: { label: string; value: number; hint: string; icon: 'teacher' | 'room' | 'clock' | 'book'; shown?: number }[] = [];\n hasSessions = false;\n isExporting = false;\n // accordion: the full follow-up lists open below the summary tiles\n detailsOpen = false;\n eligibleCount = 0;\n classroomCount = 0;\n private fileDate = '';\n\n constructor(private pdService: PrincipalDashboardLibV2Service, private host: ElementRef<HTMLElement>) {}\n\n ngAfterViewInit(): void {\n setTimeout(() => this.fitHeight());\n }\n\n // fill from where the page starts down to the bottom of the window and scroll inside it\n @HostListener('window:resize')\n fitHeight(): void {\n const page = this.host.nativeElement.querySelector('.in-page') as HTMLElement;\n if (!page) return;\n const top = page.getBoundingClientRect().top;\n page.style.height = Math.max(window.innerHeight - top, 240) + 'px';\n }\n\n private build(json: any): void {\n const users: any[] = this.list(json, 'usersMetadata', 'userMetadata');\n const consoles: any[] = this.list(json, 'usersConsole', 'userConsole');\n const resources: any[] = this.list(json, 'resourcesMetadata', 'resourceMetadata');\n const terminals: any[] = this.list(json, 'schoolTerminals', 'schoolTerminal');\n\n this.schoolName = (json.schoolMetadata && json.schoolMetadata.school && json.schoolMetadata.school.schoolName) || '';\n\n const userById = new Map<string, any>();\n users.forEach((u) => userById.set(u.userId, u));\n const resourceById = new Map<string, any>();\n resources.forEach((r) => resourceById.set(r.resourceId, r));\n const roomByIp = new Map<string, string>();\n terminals.forEach((t) => roomByIp.set(t.terminalKey, this.pdService.getRoomLabel(this.location(t.metadata), t.terminalKey)));\n const classrooms = terminals.filter((t) => t.terminalType === 'classroom');\n\n const sessions: Session[] = consoles\n .map((c) => ({\n userId: c.userId,\n ip: c.terminalIP,\n start: this.parseTime(c.startTime),\n end: this.parseTime(c.endTime),\n resources: ((c.userConsoleResources && c.userConsoleResources.userConsoleResource) || []).map((r: any) => ({\n resourceId: r.resourceId,\n type: r.type,\n })),\n }))\n .filter((s) => !isNaN(s.start) && !isNaN(s.end) && s.end >= s.start);\n // zero-length entries are logins with no class time; keep them out of time-based figures\n const timed = sessions.filter((s) => s.end > s.start);\n this.hasSessions = sessions.length > 0;\n\n const first = sessions.length ? new Date(Math.min(...sessions.map((s) => s.start))) : null;\n this.fileDate = first\n ? [first.getDate(), first.getMonth() + 1].map((n) => String(n).padStart(2, '0')).join('-') + '-' + first.getFullYear()\n : '';\n this.dayLabel = first ? first.toLocaleDateString('en-GB', { weekday: 'long', day: 'numeric', month: 'short', year: 'numeric' }) : '';\n\n // ---- teachers\n const eligible = users.filter((u) => (u.userSubjects || '') !== '');\n const timeByUser = this.groupTime(timed, (s) => s.userId);\n const sessionsByUser = this.countBy(timed, (s) => s.userId);\n const activeUserIds = new Set(sessions.map((s) => s.userId));\n const totalTeachingMs = Array.from(timeByUser.values()).reduce((a, b) => a + b, 0);\n const activeEligible = eligible.filter((u) => activeUserIds.has(u.userId)).length;\n this.eligibleCount = eligible.length;\n this.classroomCount = classrooms.length;\n\n this.topTeachers = this.toBars(\n Array.from(timeByUser.entries()).map(([id, ms]) => ({\n label: this.userName(userById.get(id), id),\n sub: `${sessionsByUser.get(id) || 0} sessions`,\n value: ms,\n })),\n (ms) => this.formatDuration(ms),\n 8\n );\n\n this.inactiveTeachers = eligible\n .filter((u) => !activeUserIds.has(u.userId))\n .map((u) => this.userName(u, u.userId))\n .sort((a, b) => a.localeCompare(b));\n\n // ---- rooms\n const timeByRoom = this.groupTime(timed, (s) => s.ip);\n const usedIps = new Set(sessions.map((s) => s.ip));\n const usedClassrooms = classrooms.filter((t) => usedIps.has(t.terminalKey)).length;\n const daySpan = timed.length ? Math.max(...timed.map((s) => s.end)) - Math.min(...timed.map((s) => s.start)) : 0;\n\n // every installed classroom plus any other room that was used, in room order\n const tileIps = classrooms.map((t) => t.terminalKey).concat(Array.from(timeByRoom.keys()).filter((ip) => !classrooms.some((t) => t.terminalKey === ip)));\n const maxRoomMs = Math.max(...Array.from(timeByRoom.values()), 1);\n this.roomTiles = tileIps\n .map((ip) => {\n const ms = timeByRoom.get(ip) || 0;\n const share = daySpan ? Math.round((ms / daySpan) * 100) : 0;\n return {\n label: roomByIp.get(ip) || ip,\n display: ms ? `${this.formatDuration(ms)} · ${share}% of the day` : 'Not used today',\n share,\n // pale blue for little use through to deep navy for the busiest room\n shade: share ? this.navyShade(ms / maxRoomMs) : '',\n dark: !!share && Math.pow(ms / maxRoomMs, 1.8) > 0.5,\n // shown as an outlined tile: unused, or used for under 1% of the day\n idle: !share,\n // long names (\"science lab\", \"127.0.0.1\") take extra columns so they show in full\n span: Math.min(Math.ceil(((roomByIp.get(ip) || ip).length + 2) / 5), 4),\n };\n })\n .sort((a, b) => a.label.localeCompare(b.label, undefined, { numeric: true }));\n\n this.idleRooms = classrooms\n .filter((t) => !usedIps.has(t.terminalKey))\n .map((t) => roomByIp.get(t.terminalKey))\n .sort((a, b) => a.localeCompare(b, undefined, { numeric: true }));\n\n // ---- through the day: distinct teachers in a session during each hour\n this.hourly = [];\n if (timed.length) {\n const startHour = new Date(Math.min(...timed.map((s) => s.start)));\n startHour.setMinutes(0, 0, 0);\n const lastEnd = Math.max(...timed.map((s) => s.end));\n const counts: { label: string; value: number }[] = [];\n for (let t = startHour.getTime(); t < lastEnd; t += HOUR) {\n const teachers = new Set(timed.filter((s) => s.start < t + HOUR && s.end > t).map((s) => s.userId));\n counts.push({ label: this.formatHour(new Date(t)), value: teachers.size });\n }\n const max = Math.max(...counts.map((c) => c.value), 1);\n this.hourly = counts.map((c) => ({ ...c, percent: (c.value / max) * 100, peak: c.value === max, color: this.utilisationColor(c.value / max) }));\n }\n const peak = this.hourly.reduce((best, h) => (!best || h.value > best.value ? h : best), null);\n\n // ---- what was taught: session time split evenly across the subjects / grades it touched\n const subjectTime = new Map<string, number>();\n const gradeTime = new Map<string, number>();\n timed.forEach((s) => {\n const metas = s.resources.map((r) => resourceById.get(r.resourceId)).filter((m) => !!m);\n this.share(subjectTime, metas.map((m) => this.title(m.subject)), s.end - s.start);\n this.share(gradeTime, metas.map((m) => this.title(m.grade)), s.end - s.start);\n });\n this.subjectDonut = this.buildDonut(this.entries(subjectTime), 7);\n this.grades = this.toBars(\n this.entries(gradeTime).sort((a, b) => a.label.localeCompare(b.label, undefined, { numeric: true })),\n (ms) => this.formatDuration(ms),\n 0,\n false\n );\n\n this.gradeColumns = this.grades.map((g) => ({ ...g, short: this.shortGrade(g.label) }));\n\n // ---- content\n const launches = sessions.reduce((acc, s) => acc.concat(s.resources), [] as Session['resources']);\n const typeCounts = this.countBy(launches, (r) => this.typeLabel(r.type));\n this.contentMix = this.toBars(\n Array.from(typeCounts.entries()).map(([label, n]) => ({ label, value: n })),\n (n) => `${n}`,\n 0\n ).map((item, i) => ({ ...item, color: this.color(i), percent: (item.value / Math.max(launches.length, 1)) * 100 }));\n\n const chapterCounts = new Map<string, { n: number; sub: string }>();\n launches.forEach((r) => {\n const m = resourceById.get(r.resourceId);\n const chapter = m && this.title(m.chapter);\n if (!chapter) return;\n const key = `${this.title(m.subject)}|${this.title(m.grade)}|${chapter}`;\n const cur = chapterCounts.get(key) || { n: 0, sub: [this.title(m.subject), this.title(m.grade)].filter((x) => x).join(' · ') };\n cur.n++;\n chapterCounts.set(key, cur);\n });\n this.chapters = this.toBars(\n Array.from(chapterCounts.entries()).map(([key, v]) => ({ label: key.split('|')[2], sub: v.sub, value: v.n })),\n (n) => `${n} uses`,\n 8\n );\n\n // ---- headline numbers\n const avgSession = timed.length ? totalTeachingMs / timed.length : 0;\n const topics = new Set(launches.filter((r) => r.type === 'tp').map((r) => r.resourceId));\n this.kpis = [\n {\n label: 'Active Teachers',\n value: `${activeEligible} / ${eligible.length}`,\n hint: `${this.pct(activeEligible, eligible.length)} of eligible teachers`,\n },\n {\n label: 'Classrooms Used',\n value: `${usedClassrooms} / ${classrooms.length}`,\n hint: `${this.pct(usedClassrooms, classrooms.length)} of classrooms`,\n },\n {\n label: 'Teaching Time',\n value: this.formatDuration(totalTeachingMs),\n hint: `${this.formatDuration(activeUserIds.size ? totalTeachingMs / activeUserIds.size : 0)} per active teacher`,\n },\n {\n label: 'Sessions',\n value: `${timed.length}`,\n hint: `${this.formatDuration(avgSession)} on average`,\n },\n {\n label: 'Content Used',\n value: `${launches.length}`,\n hint: `${topics.size} distinct topics`,\n },\n {\n label: 'Peak Hour',\n value: peak ? peak.label : '—',\n hint: peak ? `${peak.value} teachers in class` : 'No sessions',\n },\n ];\n\n this.attention = [\n {\n label: 'Teachers Not Active',\n icon: 'teacher',\n value: this.inactiveTeachers.length,\n hint: 'Eligible teachers with no session today',\n },\n {\n label: 'Classrooms Not Used',\n icon: 'room',\n value: this.idleRooms.length,\n hint: 'Installed classrooms with no session today',\n },\n {\n label: `Sessions Under ${SHORT_SESSION_MIN} Min`,\n icon: 'clock',\n value: timed.filter((s) => s.end - s.start < SHORT_SESSION_MIN * MINUTE).length,\n hint: 'May be accidental log-ins',\n },\n {\n label: 'Sessions Without Content',\n icon: 'book',\n value: timed.filter((s) => s.resources.length === 0).length,\n hint: 'Logged in but nothing was used',\n },\n ];\n\n this.countUp();\n }\n\n // biggest slices first; anything past `keep` is grouped as \"Other\"\n private buildDonut(items: { label: string; value: number }[], keep: number) {\n const sorted = [...items].sort((a, b) => b.value - a.value);\n const shown = sorted.slice(0, keep);\n const rest = sorted.slice(keep).reduce((sum, i) => sum + i.value, 0);\n if (rest > 0) shown.push({ label: 'Other', value: rest });\n const total = shown.reduce((sum, i) => sum + i.value, 0);\n const circumference = 2 * Math.PI * this.donutRadius;\n let used = 0;\n const segments = shown.map((item, i) => {\n const length = total ? (item.value / total) * circumference : 0;\n const segment = {\n ...item,\n display: this.formatDuration(item.value),\n percent: total ? Math.round((item.value / total) * 100) : 0,\n color: item.label === 'Other' ? '#c9d2e3' : this.color(i),\n // small gap between slices\n dash: `${Math.max(length - 2, 0)} ${circumference}`,\n offset: -used,\n };\n used += length;\n return segment;\n });\n return { total: this.formatDuration(total), segments };\n }\n\n // 0 = quiet (light red), 0.5 = moderate (warm yellow), 1 = busiest (green)\n // `soft` lightens the colour so dark text on tiles stays readable\n private utilisationColor(ratio: number, soft = false): string {\n const stops = [\n { at: 0, h: 4, s: 82, l: 74 },\n { at: 0.5, h: 43, s: 90, l: 62 },\n { at: 1, h: 88, s: 45, l: 56 },\n ];\n const r = Math.min(Math.max(ratio, 0), 1);\n const [a, b] = r <= 0.5 ? [stops[0], stops[1]] : [stops[1], stops[2]];\n const t = (r - a.at) / (b.at - a.at);\n const mix = (x: number, y: number) => Math.round(x + (y - x) * t);\n const light = mix(a.l, b.l) + (soft ? 12 : 0);\n return `hsl(${mix(a.h, b.h)}, ${mix(a.s, b.s)}%, ${light}%)`;\n }\n\n // 0 = near-white blue, 1 = deep navy\n private navyShade(ratio: number): string {\n const from = [234, 241, 251];\n const to = [22, 43, 87];\n // eased so low and mid use stay light and only the busiest rooms turn dark\n const t = Math.pow(Math.min(Math.max(ratio, 0), 1), 1.8);\n const c = from.map((f, i) => Math.round(f + (to[i] - f) * t));\n return `rgb(${c[0]}, ${c[1]}, ${c[2]})`;\n }\n\n // \"Class 7\" -> \"7\", \"Early Childhood Education\" -> \"ECE\"\n private shortGrade(label: string): string {\n const match = /^class\\s+(.+)$/i.exec(label);\n if (match) return match[1];\n return label.split(/\\s+/).filter((w) => w).map((w) => w.charAt(0).toUpperCase()).join('').slice(0, 4);\n }\n\n // ---------- notes under charts: one takeaway from today's data\n\n get activityNote(): string {\n if (!this.hourly.length) return '';\n const peak = this.hourly.reduce((a, b) => (b.value > a.value ? b : a));\n const quiet = this.hourly.reduce((a, b) => (b.value < a.value ? b : a));\n return `Busiest at ${peak.label} with ${peak.value} teachers in class; quietest at ${quiet.label} with ${quiet.value}.`;\n }\n\n get chaptersNote(): string {\n const top = this.chapters[0];\n return top ? `Most used: ${top.label}${top.sub ? ' (' + top.sub + ')' : ''}, ${top.display}.` : '';\n }\n\n get subjectNote(): string {\n const top = this.subjectDonut.segments.find((s) => s.label !== 'Other');\n return top ? `${top.label} took the largest share of teaching time today (${top.percent}%, ${top.display}).` : '';\n }\n\n // ---------- count-up for the headline numbers\n\n private countFrame = 0;\n\n // every number inside a value (\"42 / 77\", \"48h 53m\") rises from 0 together\n private countUp(): void {\n cancelAnimationFrame(this.countFrame);\n const reduced = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n const apply = (progress: number) => {\n this.kpis.forEach((k) => (k.shown = k.value.replace(/\\d+/g, (n) => `${Math.round(+n * progress)}`)));\n this.attention.forEach((a) => (a.shown = Math.round(a.value * progress)));\n };\n if (reduced) {\n apply(1);\n return;\n }\n const duration = 900;\n const start = performance.now();\n const step = (now: number) => {\n const t = Math.min((now - start) / duration, 1);\n apply(1 - Math.pow(1 - t, 3));\n if (t < 1) this.countFrame = requestAnimationFrame(step);\n };\n apply(0);\n this.countFrame = requestAnimationFrame(step);\n }\n\n @HostListener('document:keydown.escape')\n closeDetails(): void {\n this.detailsOpen = false;\n }\n\n // \"Mrs Alisa Dsouza\" -> \"AD\"\n initials(name: string): string {\n const words = (name || '').split(/\\s+/).filter((w) => w && !/^(mr|mrs|miss|ms|dr)\\.?$/i.test(w));\n return words.length ? (words[0][0] + (words.length > 1 ? words[words.length - 1][0] : '')).toUpperCase() : '?';\n }\n\n // ---------- PDF export\n\n async downloadPdf(): Promise<void> {\n const page = this.host.nativeElement.querySelector('.in-page') as HTMLElement;\n if (!page || this.isExporting) return;\n this.isExporting = true;\n // render a full-length copy at a fixed width; the wrapper hides it on screen,\n // and is opened up only inside html2canvas's own copy of the document\n const wrapper = document.createElement('div');\n wrapper.setAttribute('data-pdf-wrapper', '');\n wrapper.style.cssText = 'position:fixed;left:0;top:0;width:0;height:0;overflow:hidden;z-index:-1;';\n const copy = page.cloneNode(true) as HTMLElement;\n copy.classList.add('in-exporting');\n copy.style.width = PDF_RENDER_WIDTH + 'px';\n wrapper.appendChild(copy);\n page.parentElement.appendChild(wrapper);\n try {\n // y positions where a new page may start without cutting a card\n const top = copy.getBoundingClientRect().top;\n const breaks = Array.from(copy.querySelectorAll('.in-card'))\n .map((card) => Math.round(card.getBoundingClientRect().top - top - 8))\n .filter((y, i, all) => y > 0 && all.indexOf(y) === i)\n .sort((a, b) => a - b);\n const canvas = await html2canvas(copy, {\n scale: 2,\n backgroundColor: '#ffffff',\n onclone: (doc) => {\n const clonedWrapper = doc.querySelector('[data-pdf-wrapper]') as HTMLElement;\n if (clonedWrapper) {\n clonedWrapper.style.overflow = 'visible';\n }\n },\n });\n this.savePdf(canvas, breaks.map((y) => y * 2));\n } finally {\n wrapper.remove();\n this.isExporting = false;\n }\n }\n\n // A4 portrait; each page takes whole rows of cards and long content is sliced as a last resort\n private savePdf(canvas: HTMLCanvasElement, breaks: number[]): void {\n const pdf = new jsPDF({ orientation: 'portrait', unit: 'mm', format: 'a4' });\n const margin = 10;\n const pageWidth = pdf.internal.pageSize.getWidth();\n const pageHeight = pdf.internal.pageSize.getHeight();\n const contentWidth = pageWidth - margin * 2;\n const mmPerPx = contentWidth / canvas.width;\n const maxSlice = Math.floor((pageHeight - margin * 2 - 6) / mmPerPx);\n\n const slices: [number, number][] = [];\n let start = 0;\n while (start < canvas.height) {\n let end = Math.min(start + maxSlice, canvas.height);\n if (end < canvas.height) {\n const fit = breaks.filter((b) => b > start && b <= end);\n if (fit.length) end = fit[fit.length - 1];\n }\n slices.push([start, end]);\n start = end;\n }\n\n slices.forEach(([from, to], i) => {\n const part = document.createElement('canvas');\n part.width = canvas.width;\n part.height = to - from;\n part.getContext('2d').drawImage(canvas, 0, from, canvas.width, to - from, 0, 0, canvas.width, to - from);\n if (i > 0) pdf.addPage();\n pdf.addImage(part.toDataURL('image/jpeg', 0.92), 'JPEG', margin, margin, contentWidth, part.height * mmPerPx);\n pdf.setFontSize(8);\n pdf.setTextColor(140);\n pdf.text(`${this.schoolName} · Usage insights`, margin, pageHeight - 5);\n pdf.text(`Page ${i + 1} of ${slices.length}`, pageWidth - margin, pageHeight - 5, { align: 'right' });\n });\n\n pdf.save(`Insights-${this.fileDate || 'report'}.pdf`);\n }\n\n // ---------- helpers\n\n private list(json: any, outer: string, inner: string): any[] {\n const value = json && json[outer] && json[outer][inner];\n return Array.isArray(value) ? value : [];\n }\n\n private location(metadata: any): string {\n try {\n return (typeof metadata === 'string' ? JSON.parse(metadata) : metadata || {}).location || '';\n } catch (e) {\n return '';\n }\n }\n\n // \"2024-12-10 07:01:24.0\" is not valid ISO for every browser, so add the \"T\"\n private parseTime(value: any): number {\n return value ? new Date(String(value).replace(' ', 'T')).getTime() : NaN;\n }\n\n private title(item: any): string {\n return (item && item.title ? String(item.title) : '').trim();\n }\n\n // known types use the dashboard's labels; others like \"casset_weblink\" become \"Weblink\"\n private typeLabel(type: string): string {\n if (!type) return 'Other';\n const label = this.pdService.getDisplaytypeValue(type);\n if (label !== type) return label;\n const words = type.replace(/^c?asset_/, '').replace(/_/g, ' ');\n return words.charAt(0).toUpperCase() + words.slice(1);\n }\n\n private userName(user: any, fallback: string): string {\n return user ? this.pdService.getName(user) : fallback;\n }\n\n // overlapping sessions for the same key are counted once\n private groupTime(sessions: Session[], key: (s: Session) => string): Map<string, number> {\n const grouped = new Map<string, Interval[]>();\n sessions.forEach((s) => {\n const k = key(s);\n grouped.set(k, (grouped.get(k) || []).concat({ start: s.start, end: s.end }));\n });\n const result = new Map<string, number>();\n grouped.forEach((intervals, k) => result.set(k, this.mergedDuration(intervals)));\n return result;\n }\n\n private mergedDuration(intervals: Interval[]): number {\n const sorted = [...intervals].sort((a, b) => a.start - b.start);\n let total = 0;\n let cur: Interval = null;\n sorted.forEach((i) => {\n if (!cur || i.start > cur.end) {\n if (cur) total += cur.end - cur.start;\n cur = { ...i };\n } else if (i.end > cur.end) {\n cur.end = i.end;\n }\n });\n return cur ? total + cur.end - cur.start : total;\n }\n\n private countBy<T>(items: T[], key: (item: T) => string): Map<string, number> {\n const result = new Map<string, number>();\n items.forEach((item) => result.set(key(item), (result.get(key(item)) || 0) + 1));\n return result;\n }\n\n private share(target: Map<string, number>, labels: string[], ms: number): void {\n const unique = Array.from(new Set(labels.filter((l) => l)));\n unique.forEach((l) => target.set(l, (target.get(l) || 0) + ms / unique.length));\n }\n\n private entries(map: Map<string, number>): { label: string; value: number }[] {\n return Array.from(map.entries()).map(([label, value]) => ({ label, value }));\n }\n\n // limit 0 = show all; bar length is relative to the largest value\n private toBars(\n items: { label: string; sub?: string; value: number }[],\n display: (value: number) => string,\n limit: number,\n sortByValue = true\n ): BarItem[] {\n const sorted = sortByValue ? [...items].sort((a, b) => b.value - a.value) : items;\n const shown = limit ? sorted.slice(0, limit) : sorted;\n const max = Math.max(...shown.map((i) => i.value), 1);\n return shown.map((i) => ({ ...i, display: display(i.value), percent: (i.value / max) * 100 }));\n }\n\n // blue and yellow first to match the page, then supporting tones\n private color(index: number): string {\n const palette = ['#7c9cf5', '#f6d27e', '#a9bffa', '#6fc6ba', '#f4a98a', '#c0aef7', '#f3a6c8', '#b4bfcf', '#fbe7b4'];\n return palette[index % palette.length];\n }\n\n private pct(part: number, whole: number): string {\n return whole ? `${Math.round((part / whole) * 100)}%` : '0%';\n }\n\n private formatHour(date: Date): string {\n const h = date.getHours();\n return `${h % 12 || 12} ${h >= 12 ? 'PM' : 'AM'}`;\n }\n\n formatDuration(ms: number): string {\n const minutes = Math.round(ms / MINUTE);\n const h = Math.floor(minutes / 60);\n const m = minutes % 60;\n return h ? `${h}h ${m}m` : `${m}m`;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { PrincipalDashboardLibV2Component } from './principal-dashboard-lib-v2.component';\n\nimport { ChartheaderComponent } from './chartheader/chartheader.component';\nimport { ChartviewComponent } from './chartview/chartview.component';\nimport { DetailedviewComponent } from './detailedview/detailedview.component';\nimport { HeaderComponent } from './header/header.component';\nimport { TableviewComponent } from './tableview/tableview.component';\nimport { GoogleChartsModule } from 'angular-google-charts';\nimport { CommonModule } from '@angular/common';\nimport { DatepickerModule } from 'ng2-datepicker';\nimport { FullTableViewComponent } from './full-table-view/full-table-view.component';\nimport { SmallTableViewComponent } from './small-table-view/small-table-view.component';\nimport { TimelineComponent } from './timeline/timeline.component';\nimport { InsightsComponent } from './insights/insights.component';\n\n\n\n@NgModule({\n declarations: [\n ChartheaderComponent,\n ChartviewComponent,\n DetailedviewComponent,\n HeaderComponent,\n TableviewComponent,\n PrincipalDashboardLibV2Component,\n FullTableViewComponent,\n SmallTableViewComponent,\n TimelineComponent,\n InsightsComponent\n ],\n imports: [\n CommonModule,\n GoogleChartsModule,\n DatepickerModule\n ],\n exports: [\n PrincipalDashboardLibV2Component\n ]\n})\nexport class PrincipalDashboardLibV2Module { }\n","/*\n * Public API Surface of principal-dashboard-lib-v2\n */\n\nexport * from './lib/principal-dashboard-lib-v2.service';\nexport * from './lib/principal-dashboard-lib-v2.component';\nexport * from './lib/principal-dashboard-lib-v2.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {ChartheaderComponent as ɵa} from './lib/chartheader/chartheader.component';\nexport {ChartviewComponent as ɵb} from './lib/chartview/chartview.component';\nexport {DetailedviewComponent as ɵc} from './lib/detailedview/detailedview.component';\nexport {ExceldataService as ɵe} from './lib/exceldata.service';\nexport {FullTableViewComponent as ɵg} from './lib/full-table-view/full-table-view.component';\nexport {HeaderComponent as ɵd} from './lib/header/header.component';\nexport {InsightsComponent as ɵj} from './lib/insights/insights.component';\nexport {SmallTableViewComponent as ɵh} from './lib/small-table-view/small-table-view.component';\nexport {TableviewComponent as ɵf} from './lib/tableview/tableview.component';\nexport {TimelineComponent as ɵi} from './lib/timeline/timeline.component';"],"names":["ReplaySubject","BehaviorSubject","Injectable","EventEmitter","Component","Input","Output","ChartType","XLSX.utils","XLSX.write","FileSaver.saveAs","HostListener","html2canvas","jsPDF","ElementRef","NgModule","CommonModule","GoogleChartsModule","DatepickerModule"],"mappings":"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"}