principal-dashboard-lib-v2 0.0.21 → 0.0.22

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,"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/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/principal-dashboard-lib-v2.module.ts"],"names":["PrincipalDashboardLibV2Service","this","isResoureMetaDataReady","ReplaySubject","isResoureMetaDataReady$","asObservable","isUserReqiuredDataReady","isUserReqiuredDataReady$","mychartType","dataType","userAllData","userMetadata","userDetails","resourceDetails","resoureMetadata","Array","userDetailObject","userlist","chartType","BehaviorSubject","chartType$","isUserWise_data","isUserWise_data$","isAllUsers","isAllUsers$","detailedviewData","detailedviewData$","prototype","genarateResourseReqiuredData","data","next","resourceMetadataMatrix","resourceMetadata","resourcesMetadata","undefined","length","i","resourceMetauserConsoleData","resouseID","resourceId","subject","title","grade","chapter","teachingpoint","type","getDisplaytypeValue","push","resoureMetaData","genarateUserReqiuredData","usersMetadataMatrix","usermetadataMatrixUpdated","schoolTerminalMatrix","userConsoleMatrix","userConsole","usersConsole","usersMetadata","schoolTerminal","schoolTerminals","i_1","userId","listOfUser","console","log","fullName","userName","userSubjects","forEach","element","splice","usersMetaData","schoolTerminalData","schoolId","terminalKey","terminalType","location","metadata","JSON","parse","index","startTime","endTime","duration","terminalIP","userConsoleResources","resourceDurationFromConsole","terminalLocation","this_1","myEndTime","selectedDate","userConsoleResource","item","i_2","i_3","userData","Date","userConsoleData","userWiseChartData","dataTableforChart","classRoomWiseChartData","roomName","newGetCurrentClassroomData","uniq","a","from","Set","allUserChartData","AlluserDetailsForTableChart","inActiveuserName","myID","AlluserDetails_1","myChartRowuserConsoleData","myTableRowuserConsoleData","setTimeout","forChartData","fordurationTable","allRoomsData","allRoomsDetails","myChartRowData","inActiveClassRoom","dataForTableView","currentDate","resourceMatrixForTableChart","resourceMetadataIDs","resourceMetadataIDsDuration","teacherName","teacherSubject","resourceArrayForTableChart","toLocaleTimeString","hour12","getDate","getMonth","getFullYear","Math","floor","roomDetail","k","i_4","toLowerCase","convertSeconds","dataForDetailedView","rowLabel","detailedView_UserDataMatrix","resourceMetadataIDsduration","detailedView_ResourceDataMatrix","key","displayValue","display","value","seconds","Injectable","args","providedIn","PrincipalDashboardLibV2Component","userSelectedDate","EventEmitter","messageForUser","Object","defineProperty","res","setMessageForUser","ngOnInit","onUserSelectDate","e","emit","Component","selector","template","Input","Output","ChartheaderComponent","pdService","mytype","ChartType","Timeline","datadisplaytype","isUserWise","isChartView","libVersion","changeChatType","Table","changeDataTypeClassRoom","changeDataTypeUser","create","__read","o","n","m","Symbol","iterator","r","call","ar","done","error","__spread","arguments","concat","ChartviewComponent","totalUsers","eligibleUsers","currentUsers","myChartType","myChartwidth","window","innerWidth","myChartHeight","innerHeight","currentList","allList","myChartDataMatrix","totalChartDataMatrix","loadChart","response","_this","chartview","document","getElementById","myDataList","myXmlData","currentdataList","alluserList","resourceDataList","findEligibleUserCount","installedClassrooms","findInstalledClassrooms","currentRooms","findCurrentClassrooms","findCurrentUserCount","subscribe","updateChartType","updateDataType","addEventListener","onResizeWindow","bind","event","myChartReady","createDivforTotalDurartion","setHeightofDivforTotalDurartion","style","userWiseAllData","userWiseCurrentData","classRoomWiseAllData","classRoomWiseCurrentData","updateChart","labels","firstChild","removeChild","lastChild","chartDataTable","myChartOptions","tooltip","trigger","colors","timeline","colorByRowLabel","barLabelStyle","fontSize","hAxis","format","AllrowHeight","calulateTotalDuration","detailViewMatrix","id_durationArray","id_durationMatrix","name","parseInt","obj","valuesArr","values","myArray","totaldurationPerRow","timeConvert","toString","hours","rhours","minutes","round","removeBlankEntryBar","el","getElementsByTagName","width","elToRem","cwidth","getAttribute","setAttribute","rowLabels","rowElements","team","label","appendChild","createElement","position","innerHTML","rows","rowIndex","rowHeight","parseFloat","currentCell","height","lineHeight","onSelectRowData","_a","selection","row","column","selectedUserData","showAllUser","showCurrentUser","chartDataUserWise","classRoomdata","allclassRoomList","userNameArray","uniqueUserName","count","userMetaData","ngOnDestroy","DetailedviewComponent","userMetadataHeadingArray","resourseMetadataHeadingArray","deatilViewContainer","deatilViewTable","closeButton","createTable","createResourcesTable","labelArray","cnt","createTextNode","textContent","tbl","id","className","tblBody","j","cell","onCloseBtnClick","ExceldataService","resourceTypes","tabName","exportAsExcelFile","json","excelFileName","excelBuffer","myobj","Sheets","SheetNames","worksheet","XLSX.utils","json_to_sheet","workbook","XLSX.write","bookType","saveAsExcelFile","buffer","fileName","Blob","FileSaver.saveAs","genarateResourseReqiuredData_Excel","genarateUserReqiuredData_Excel","deatilData_Excel","resourceMatrixForExcel","userID","resourceArrayForExcel","locationName","terminalIPAddress","deatilUsage_Excel","userList","Name","Subjects","duration(mins)","IP","subjectTitle","gradeTitle","Chapter","tpTitle","resourceTitle","resourceType","resourceDuration(sec)","userSummary_Excel","userMetadataList","resourcelist","resourceTypeList","userObjectList","classRooms","datesAccess","grades","subjectTought","ClassRooms","DatesAccess","Grades","SubjectTought","dayAccess","user","DayAccess","AseestUsed","AssetType","userSummaryList","Assetcounts","presentAsset","x","this_2","filter","includes","asset_media","Subjects_taught"," Duration(mins)","DaysAccsessed","returnedTarget","assign","HeaderComponent","excelService","refreshTimer","date","options","inputClass","calendarClass","scrollBarColor","maxDate","loadData","getDefaultDate","startTimer","getDateFormat","todayDate","calenderCurrentDate","dateSelected","mydata","refreshChart","day","month","today","split","reverse","join","stopTimer","countDown","clearTimer","message","clearInterval","intervalId","setInterval","currentResoursedataList","deatilData","userDetails_data","UserSummary","schoolDetails","schoolMetadata","school","terminalDetails","dataList","exportReport","TableviewComponent","loadTable","fetchAlluserList","tableViewDiv","tableRow","showCurrentDataUser","tableViewData","ueserWiseTableView","NgModule","declarations","imports","CommonModule","GoogleChartsModule","DatepickerModule","exports"],"mappings":"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","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\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 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 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 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].fullName)\n if (usersMetadata[i].fullName !== undefined) {\n userName = usersMetadata[i].fullName // 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 // const randomNumber = document.createElement('span');\n // randomNumber.innerHTML = i.toString();\n //usermetadataMatrixUpdated[i].userName = usermetadataMatrixUpdated[i].userName + \" --- \" + i;\n //satyajit 28 aug 2024 removed count from userName\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 //----------//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[index]resourceId; // 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 //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 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 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 console.log(\"chartDataUserWiseNew-->>\",this.userConsoleData)\n if(this.userConsoleData.length > 0){\n for(let i = 0; i < this.userConsoleData.length; i++){\n \n if(this.userConsoleData[i].userName === undefined){\n this.userConsoleData[i].userName = \"-\"\n }\n if(this.userConsoleData[i].userName === \"-\" || this.userConsoleData[i].userName === \"--\"){\n this.userConsoleData.splice(i, 1); // 2nd parameter means remove one item only\n }\n let userData = [this.userConsoleData[i].userName,this.userConsoleData[i].startTime,this.userConsoleData[i].endTime];\n dataTableforChart.push(userData);\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 if(roomName === \"\"){\n //roomName = \"No Name\"\n }\n\n let location = 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 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].userName);\n if(AlluserDetails[i].userName === undefined){\n AlluserDetails[i].userName = \"--\"\n }\n if(AlluserDetails[i].userName === \"--\"){\n //AlluserDetails.splice(i, 1); // 2nd parameter means remove one item only\n }\n let userData = [AlluserDetails[i].userName,AlluserDetails[i].startTime,AlluserDetails[i].endTime];\n dataTableforChart.push(userData);\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 if(roomName === \"\" || roomName === undefined){\n roomName = \"No Name\"\n }\n\n\n let location = 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 for (let i = 0; i < this.schoolTerminalData.length; i++) {\n console.log(\"schoolTerminalData\",this.schoolTerminalData);\n \n inActiveClassRoom = 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:inActiveClassRoom,\n resourceMetauserConsoleData:[],\n duration:0,\n terminalLocation:\"\",\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 console.log(\"AAA userConsoleMatrix\",userConsoleMatrix);\n let currentDate: any;\n let resourceMatrixForTableChart = new Array();\n let resourceMatrixForExcel = new Array();\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 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 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\n if (resourceMetadataIDs.length === 0) {\n subject = undefined;\n grade = undefined;\n chapter = 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];\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 // satyajit\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) + ' : ' + resourceMetadataIDsDuration[k] + ' sec';\n\n AssestDetail = this.getDisplaytypeValue(resourceMetadataMatrix[i].type) + ' : ' + this.convertSeconds(resourceMetadataIDsDuration[k]);\n\n //convertSeconds\n\n }else{\n //AssestDetail = this.getDisplaytypeValue(resourceMetadataMatrix[i].type) + \" : \" + resourceMetadataMatrix[i].title + ' : ' + resourceMetadataIDsDuration[k] + ' sec';\n\n AssestDetail = this.getDisplaytypeValue(resourceMetadataMatrix[i].type) + \" : \" + resourceMetadataMatrix[i].title + ' : ' + this.convertSeconds(resourceMetadataIDsDuration[k]);\n \n }\n \n\n //AssestDetail = this.getDisplaytypeValue(resourceMetadataMatrix[i].type) + \" : \" + resourceMetadataMatrix[i].title + ' : ' + resourceMetadataIDsDuration[k];\n\n resourceArrayForTableChart = [teacherName,teacherSubject,currentDate,startTime,endTime,duration,roomDetail,subject,grade,chapter,teachingpoint,AssestDetail];\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 // resourceArrayForTableChart = [subject,grade,chapter,teachingpoint,AssestDetail];\n // detailedView_ResourceDataMatrix.push(resourceArrayForTableChart);\n }else{\n //satyajit\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 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 = resourceMetadataMatrix[i].type + \": \" + resourceMetadataIDsduration[k] + ' sec';\n AssestDetail = resourceMetadataMatrix[i].type + \": \" + this.convertSeconds(resourceMetadataIDsduration[k]);\n //convertSeconds\n }else{\n //AssestDetail = resourceMetadataMatrix[i].type + \": \" + resourceMetadataMatrix[i].title + \": \" + resourceMetadataIDsduration[k] + ' sec';\n AssestDetail = resourceMetadataMatrix[i].type + \": \" + resourceMetadataMatrix[i].title + \": \" + this.convertSeconds(resourceMetadataIDsduration[k]);\n }\n \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 ];\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';\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 constructor() { }\n\n ngOnInit(): void {\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","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';\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\n ngOnInit(): void {\n this.libVersion = \"0.0.21\";\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 changeDataTypeClassRoom() {\n this.isUserWise = false;\n this.pdService.isUserWise_data.next(false);\n }\n changeDataTypeUser() {\n this.isUserWise = true;\n this.pdService.isUserWise_data.next(true);\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';\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 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(' IN --> 8 loadChart');\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.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.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 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 window.addEventListener('resize', this.onResizeWindow.bind(this));\n }\n onResizeWindow(event: any) {\n this.myChartwidth = window.innerWidth * 0.88; //set an appropriate factor\n }\n myChartReady() {\n this.createDivforTotalDurartion();\n this.setHeightofDivforTotalDurartion();\n // this.removeBlankEntryBar();\n }\n updateChartType(dataType: any) {\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 }\n }\n }\n updateDataType(dataType: any) {\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.firstChild) {\n labels.removeChild(labels.lastChild);\n }\n this.chartDataTable = this.myChartDataMatrix;\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 calulateTotalDuration(detailViewMatrix:any) {\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: 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 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 onSelectRowData(event: any) {\n const { row, column } = event.selection[0]; \n if(this.isAllUsers){\n this.selectedUserData = this.pdService.dataForDetailedView(this.alluserList.fordurationTable,this.resourceDataList, row);\n \n }else{\n this.selectedUserData = this.pdService.dataForDetailedView(this.currentdataList.userConsoleData,this.resourceDataList, row);\n \n \n }\n // console.log(\"this.selectedUserData\",this.selectedUserData);\n this.pdService.detailedviewData.next(this.selectedUserData);\n this.updateChart();\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 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 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 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.pdService.allRoomsData();\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 // console.log(\"data.resourceDetails\",data.resourceDetails);\n \n this.createResourcesTable(data.resourceDetails);\n }\n }\n \n });\n \n this.deatilViewContainer.style.display = 'none';\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 }\n cnt++;\n }\n tblBody.appendChild(row);\n tbl.appendChild(tblBody);\n this.deatilViewTable.appendChild(tbl);\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 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 }\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 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 = usersMetadata[i].fullName // 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:userMetadataList[i].fullName,\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 \n constructor(\n private excelService: ExceldataService,\n private pdService:PrincipalDashboardLibV2Service\n ) { }\n\n ngOnInit(): void {\n this.getDefaultDate();\n this.startTimer();\n }\n getDefaultDate() {\n let date = new Date();\n this.getDateFormat(date);\n this.todayDate = this.calenderCurrentDate;\n }\n dateSelected(e: any){\n this.getDateFormat(e);\n this.mydata = null;\n this.refreshChart();\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 loadTable(response: any){\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 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 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 this.pdService.isUserWise_data.subscribe((data) => {\n this.updateDataType(data);\n });\n this.pdService.isAllUsers.subscribe((data) => {\n if(data){\n this.showAllUser();\n }else{\n this.showCurrentDataUser();\n }\n \n });\n }\n showCurrentDataUser() {\n this.tableViewData = this.pdService.dataForTableView(this.currentdataList,this.currentResoursedataList);\n if(this.tableViewData){\n this.ueserWiseTableView(this.tableViewData);\n }\n }\n showAllUser() {\n this.tableViewData = this.pdService.dataForTableView(this.alluserList ,this.currentResoursedataList);\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 if (label.textContent === 'undefined' || label.textContent===undefined) {\n label.textContent = '';\n }\n labelArray.push(label);\n // console.log(\"label\",label);\n }\n }\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 { 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';\n\n\n\n@NgModule({\n declarations: [\n ChartheaderComponent,\n ChartviewComponent,\n DetailedviewComponent,\n HeaderComponent,\n TableviewComponent,\n PrincipalDashboardLibV2Component\n ],\n imports: [\n CommonModule,\n GoogleChartsModule,\n DatepickerModule\n ],\n exports: [\n PrincipalDashboardLibV2Component\n ]\n})\nexport class PrincipalDashboardLibV2Module { }\n"]}
1
+ {"version":3,"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/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/principal-dashboard-lib-v2.module.ts"],"names":["PrincipalDashboardLibV2Service","this","isResoureMetaDataReady","ReplaySubject","isResoureMetaDataReady$","asObservable","isUserReqiuredDataReady","isUserReqiuredDataReady$","mychartType","dataType","userAllData","userMetadata","userDetails","resourceDetails","resoureMetadata","Array","userDetailObject","userlist","chartType","BehaviorSubject","chartType$","isUserWise_data","isUserWise_data$","isAllUsers","isAllUsers$","detailedviewData","detailedviewData$","prototype","genarateResourseReqiuredData","data","next","resourceMetadataMatrix","resourceMetadata","resourcesMetadata","undefined","length","i","resourceMetauserConsoleData","resouseID","resourceId","subject","title","grade","chapter","teachingpoint","type","getDisplaytypeValue","push","resoureMetaData","genarateUserReqiuredData","usersMetadataMatrix","usermetadataMatrixUpdated","schoolTerminalMatrix","userConsoleMatrix","userConsole","usersConsole","usersMetadata","schoolTerminal","schoolTerminals","i_1","listOfUser","userId","userName","fullName","userSubjects","console","log","forEach","element","splice","usersMetaData","schoolTerminalData","schoolId","terminalKey","terminalType","location","metadata","JSON","parse","index","startTime","endTime","duration","terminalIP","userConsoleResources","resourceDurationFromConsole","terminalLocation","launchedFrom","this_1","myEndTime","selectedDate","userConsoleResource","item","i_2","i_3","userData","Date","userConsoleData","userWiseChartData","dataTableforChart","Math","floor","random","toString","classRoomWiseChartData","roomName","newGetCurrentClassroomData","uniq","a","from","Set","allUserChartData","AlluserDetailsForTableChart","inActiveuserName","myID","AlluserDetails_1","myChartRowuserConsoleData","myTableRowuserConsoleData","setTimeout","forChartData","fordurationTable","allRoomsData","allRoomsDetails","myChartRowData","inActiveClassRoom","dataForTableView","currentDate","resourceMatrixForTableChart","resourceMetadataIDs","resourceMetadataIDsDuration","AssestDetail","teacherName","teacherSubject","resourceArrayForTableChart","toLocaleTimeString","hour12","getDate","getMonth","getFullYear","roomDetail","launchDataArr","k","i_4","toLowerCase","convertSeconds","dataForDetailedView","rowLabel","detailedView_UserDataMatrix","resourceMetadataIDsduration","detailedView_ResourceDataMatrix","key","displayValue","display","value","seconds","Injectable","args","providedIn","PrincipalDashboardLibV2Component","userSelectedDate","EventEmitter","messageForUser","Object","defineProperty","res","setMessageForUser","ngOnInit","onUserSelectDate","e","emit","Component","selector","template","Input","Output","ChartheaderComponent","pdService","mytype","ChartType","Timeline","datadisplaytype","isUserWise","isChartView","libVersion","changeChatType","Table","changeDataTypeClassRoom","changeDataTypeUser","create","__read","o","n","m","Symbol","iterator","r","call","ar","done","error","__spread","arguments","concat","ChartviewComponent","totalUsers","eligibleUsers","currentUsers","myChartType","myChartwidth","window","innerWidth","myChartHeight","innerHeight","currentList","allList","myChartDataMatrix","totalChartDataMatrix","loadChart","response","_this","chartview","document","getElementById","myDataList","myXmlData","currentdataList","alluserList","resourceDataList","findEligibleUserCount","installedClassrooms","findInstalledClassrooms","currentRooms","findCurrentClassrooms","findCurrentUserCount","subscribe","updateChartType","updateDataType","addEventListener","onResizeWindow","bind","event","myChartReady","createDivforTotalDurartion","setHeightofDivforTotalDurartion","style","userWiseAllData","userWiseCurrentData","classRoomWiseAllData","classRoomWiseCurrentData","updateChart","labels","firstChild","removeChild","lastChild","filteredData","filter","node","chartDataTable","myChartOptions","tooltip","trigger","colors","timeline","colorByRowLabel","barLabelStyle","fontSize","hAxis","format","AllrowHeight","calulateTotalDuration","detailViewMatrix","id_durationArray","id_durationMatrix","name","parseInt","obj","valuesArr","values","myArray","totaldurationPerRow","timeConvert","hours","rhours","minutes","round","removeBlankEntryBar","el","getElementsByTagName","width","elToRem","cwidth","getAttribute","setAttribute","rowLabels","rowElements","team","label","appendChild","createElement","position","innerHTML","rows","rowIndex","rowHeight","parseFloat","currentCell","height","lineHeight","onSelectRowData","_a","selection","row","column","selectedUserData","showAllUser","showCurrentUser","chartDataUserWise","classRoomdata","allclassRoomList","userNameArray","uniqueUserName","count","userMetaData","ngOnDestroy","DetailedviewComponent","userMetadataHeadingArray","resourseMetadataHeadingArray","deatilViewContainer","deatilViewTable","closeButton","createTable","createResourcesTable","labelArray","cnt","createTextNode","textContent","tbl","id","className","tblBody","j","cell","onCloseBtnClick","ExceldataService","resourceTypes","tabName","exportAsExcelFile","json","excelFileName","excelBuffer","myobj","Sheets","SheetNames","worksheet","XLSX.utils","json_to_sheet","workbook","XLSX.write","bookType","saveAsExcelFile","buffer","fileName","Blob","FileSaver.saveAs","genarateResourseReqiuredData_Excel","genarateUserReqiuredData_Excel","deatilData_Excel","resourceMatrixForExcel","userID","resourceArrayForExcel","locationName","terminalIPAddress","deatilUsage_Excel","userList","Name","Subjects","duration(mins)","IP","subjectTitle","gradeTitle","Chapter","tpTitle","resourceTitle","resourceType","resourceDuration(sec)","userSummary_Excel","userMetadataList","resourcelist","resourceTypeList","userObjectList","classRooms","datesAccess","grades","subjectTought","ClassRooms","DatesAccess","Grades","SubjectTought","dayAccess","user","DayAccess","AseestUsed","AssetType","userSummaryList","Assetcounts","presentAsset","x","this_2","includes","asset_media","Subjects_taught"," Duration(mins)","DaysAccsessed","returnedTarget","assign","HeaderComponent","excelService","refreshTimer","date","options","inputClass","calendarClass","scrollBarColor","maxDate","loadData","getDefaultDate","startTimer","getDateFormat","todayDate","calenderCurrentDate","dateSelected","mydata","refreshChart","day","month","today","split","reverse","join","stopTimer","countDown","clearTimer","message","clearInterval","intervalId","setInterval","currentResoursedataList","deatilData","userDetails_data","UserSummary","schoolDetails","schoolMetadata","school","terminalDetails","dataList","exportReport","TableviewComponent","loadTable","fetchAlluserList","tableViewDiv","tableRow","showCurrentDataUser","findAndSimplifyNestedArray","isArray","nestedArray","every","val","newTableViewData","tableViewData","mergerSourceWithRoomData","ueserWiseTableView","lastIndexValue","pop","NgModule","declarations","imports","CommonModule","GoogleChartsModule","DatepickerModule","exports"],"mappings":"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","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\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 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 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 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 = usersMetadata[i].fullName // 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 //satyajit 28 aug 2024 removed count from userName\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 // satyajit resource wise duration added\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 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 /// SATYAJIT TO CHECK 19 SEPT.\n\n \n if(this.userConsoleData[i].userName === undefined){\n this.userConsoleData[i].userName = \"-\"\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 if(roomName === \"\"){\n //roomName = \"No Name\"\n }\n\n let location = 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 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 if(roomName === \"\" || roomName === undefined){\n roomName = \"No Name\"\n }\n\n\n let location = 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 for (let i = 0; i < this.schoolTerminalData.length; i++) {\n console.log(\"schoolTerminalData\",this.schoolTerminalData);\n \n inActiveClassRoom = 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:inActiveClassRoom,\n resourceMetauserConsoleData:[],\n duration:0,\n terminalLocation:\"\",\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 console.log(\"AAA userConsoleMatrix\",userConsoleMatrix, \"-resourceMetadataMatrix->\",resourceMetadataMatrix);\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 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 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 // satyajit\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) + ' : ' + resourceMetadataIDsDuration[k] + ' sec';\n\n AssestDetail = this.getDisplaytypeValue(resourceMetadataMatrix[i].type) + ' : ' + this.convertSeconds(resourceMetadataIDsDuration[k]);\n\n //convertSeconds\n\n }else{\n //AssestDetail = this.getDisplaytypeValue(resourceMetadataMatrix[i].type) + \" : \" + resourceMetadataMatrix[i].title + ' : ' + resourceMetadataIDsDuration[k] + ' sec';\n\n AssestDetail = this.getDisplaytypeValue(resourceMetadataMatrix[i].type) + \" : \" + resourceMetadataMatrix[i].title + ' : ' + this.convertSeconds(resourceMetadataIDsDuration[k]);\n \n }\n \n\n //AssestDetail = this.getDisplaytypeValue(resourceMetadataMatrix[i].type) + \" : \" + resourceMetadataMatrix[i].title + ' : ' + resourceMetadataIDsDuration[k];\n\n console.log('roomDetail',roomDetail)\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 // resourceArrayForTableChart = [subject,grade,chapter,teachingpoint,AssestDetail];\n // detailedView_ResourceDataMatrix.push(resourceArrayForTableChart);\n }else{\n //satyajit\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 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 = resourceMetadataMatrix[i].type + \": \" + resourceMetadataIDsduration[k] + ' sec';\n AssestDetail = resourceMetadataMatrix[i].type + \": \" + this.convertSeconds(resourceMetadataIDsduration[k]);\n //convertSeconds\n }else{\n //AssestDetail = resourceMetadataMatrix[i].type + \": \" + resourceMetadataMatrix[i].title + \": \" + resourceMetadataIDsduration[k] + ' sec';\n AssestDetail = resourceMetadataMatrix[i].type + \": \" + resourceMetadataMatrix[i].title + \": \" + this.convertSeconds(resourceMetadataIDsduration[k]);\n }\n \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 ];\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';\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 constructor() { }\n\n ngOnInit(): void {\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","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';\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\n ngOnInit(): void {\n this.libVersion = \"0.0.22\";\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 changeDataTypeClassRoom() {\n this.isUserWise = false;\n this.pdService.isUserWise_data.next(false);\n }\n changeDataTypeUser() {\n this.isUserWise = true;\n this.pdService.isUserWise_data.next(true);\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';\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 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.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.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 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 window.addEventListener('resize', this.onResizeWindow.bind(this));\n }\n onResizeWindow(event: any) {\n this.myChartwidth = window.innerWidth * 0.88; //set an appropriate factor\n }\n myChartReady() {\n this.createDivforTotalDurartion();\n this.setHeightofDivforTotalDurartion();\n // this.removeBlankEntryBar();\n }\n updateChartType(dataType: any) {\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 }\n }\n }\n updateDataType(dataType: any) {\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.firstChild) {\n labels.removeChild(labels.lastChild);\n }\n const filteredData = this.myChartDataMatrix.filter(node => node[0] !== \"-\" && node[0] !== \"--\");\n\n this.chartDataTable = filteredData;//this.myChartDataMatrix;\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 calulateTotalDuration(detailViewMatrix:any) {\n \n console.log('detailViewMatrix-->',detailViewMatrix)\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: 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 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 onSelectRowData(event: any) {\n const { row, column } = event.selection[0]; \n if(this.isAllUsers){\n this.selectedUserData = this.pdService.dataForDetailedView(this.alluserList.fordurationTable,this.resourceDataList, row);\n \n }else{\n this.selectedUserData = this.pdService.dataForDetailedView(this.currentdataList.userConsoleData,this.resourceDataList, row);\n \n \n }\n // console.log(\"this.selectedUserData\",this.selectedUserData);\n this.pdService.detailedviewData.next(this.selectedUserData);\n this.updateChart();\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 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 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 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.pdService.allRoomsData();\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 // console.log(\"data.resourceDetails\",data.resourceDetails);\n \n this.createResourcesTable(data.resourceDetails);\n }\n }\n \n });\n \n this.deatilViewContainer.style.display = 'none';\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 }\n cnt++;\n }\n tblBody.appendChild(row);\n tbl.appendChild(tblBody);\n this.deatilViewTable.appendChild(tbl);\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 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 }\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 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 = usersMetadata[i].fullName // 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:userMetadataList[i].fullName,\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 \n constructor(\n private excelService: ExceldataService,\n private pdService:PrincipalDashboardLibV2Service\n ) { }\n\n ngOnInit(): void {\n this.getDefaultDate();\n this.startTimer();\n }\n getDefaultDate() {\n let date = new Date();\n this.getDateFormat(date);\n this.todayDate = this.calenderCurrentDate;\n }\n dateSelected(e: any){\n this.getDateFormat(e);\n this.mydata = null;\n this.refreshChart();\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 loadTable(response: any){\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 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 this.pdService.isUserWise_data.subscribe((data) => {\n this.updateDataType(data);\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 // Iterate through the data array to find the nested array\n for (let i = 0; i < data.length; i++) {\n if (Array.isArray(data[i])) {\n // Check if the nested array contains all the same values\n const nestedArray = data[i];\n if (nestedArray.every(item => Array.isArray(item) && item.every(val => val === item[0]))) {\n // Replace the nested array with just one value if all values are the same\n data[i] = [[nestedArray[0][0]]];\n \n }\n return data[i]; // Return the modified array\n }\n }\n \n return \"No nested array found.\";\n }\n showCurrentDataUser() {\n this.tableViewData = this.pdService.dataForTableView(this.currentdataList,this.currentResoursedataList);\n \n //this.tableViewData = this.findAndSimplifyNestedArray(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 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 console.log('AAA mlaunchedFromm tableViewData', this.tableViewData)\n }\n\n mergerSourceWithRoomData(tableViewData){\n let lastIndexValue = tableViewData[tableViewData.length - 1].join(' ');\n // Merge last index value into the 6th index\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:black;font-weight:bold;font-size:14px;\"><i class=\"fa fa-android\" 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('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('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 \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 { 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';\n\n\n\n@NgModule({\n declarations: [\n ChartheaderComponent,\n ChartviewComponent,\n DetailedviewComponent,\n HeaderComponent,\n TableviewComponent,\n PrincipalDashboardLibV2Component\n ],\n imports: [\n CommonModule,\n GoogleChartsModule,\n DatepickerModule\n ],\n exports: [\n PrincipalDashboardLibV2Component\n ]\n})\nexport class PrincipalDashboardLibV2Module { }\n"]}