principal-dashboard-lib-v2 0.0.12 → 0.0.13
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.
- package/bundles/principal-dashboard-lib-v2.umd.js +4 -2
- package/bundles/principal-dashboard-lib-v2.umd.js.map +1 -1
- package/bundles/principal-dashboard-lib-v2.umd.min.js +1 -1
- package/bundles/principal-dashboard-lib-v2.umd.min.js.map +1 -1
- package/esm2015/lib/chartheader/chartheader.component.js +2 -2
- package/esm2015/lib/principal-dashboard-lib-v2.service.js +4 -2
- package/fesm2015/principal-dashboard-lib-v2.js +4 -2
- package/fesm2015/principal-dashboard-lib-v2.js.map +1 -1
- package/package.json +1 -1
|
@@ -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","userName","userSubjects","listOfUser","fullName","forEach","element","splice","usersMetaData","schoolTerminalData","schoolId","terminalKey","terminalType","location","metadata","JSON","parse","console","log","index","startTime","endTime","duration","terminalIP","userConsoleResources","terminalLocation","myEndTime","selectedDate","userConsoleResource","i_2","i_3","userData","Date","userConsoleData","userWiseChartData","dataTableforChart","classRoomWiseChartData","allUserChartData","AlluserDetailsForTableChart","inActiveuserName","myID","AlluserDetails","myChartRowuserConsoleData","myTableRowuserConsoleData","forChartData","fordurationTable","allRoomsData","allRoomsDetails","myChartRowData","inActiveClassRoom","dataForTableView","currentDate","resourceMatrixForTableChart","resourceMetadataIDs","teacherName","teacherSubject","resourceArrayForTableChart","toLocaleTimeString","hour12","getDate","getMonth","getFullYear","Math","floor","roomDetail","k","i_4","dataForDetailedView","rowLabel","detailedView_UserDataMatrix","detailedView_ResourceDataMatrix","key","displayValue","display","value","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","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","setTimeout","AllrowHeight","calulateTotalDuration","detailViewMatrix","id_durationArray","id_durationMatrix","name","parseInt","obj","Set","item","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","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","userSummary_Excel","userMetadataList","resourcelist","resourceTypeList","userObjectList","classRooms","datesAccess","grades","subjectTought","ClassRooms","DatesAccess","Grades","SubjectTought","dayAccess","user","DayAccess","AseestUsed","AssetType","userSummaryList","Assetcounts","presentAsset","x","this_1","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';\r\nimport { Subject, BehaviorSubject, ReplaySubject } from 'rxjs';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PrincipalDashboardLibV2Service {\r\npublic resoureMetaData:any;\r\npublic usersMetaData:any;\r\npublic schoolTerminalData:any;\r\npublic userConsoleData:any;\r\n\r\npublic isResoureMetaDataReady = new ReplaySubject();\r\npublic isResoureMetaDataReady$ = this.isResoureMetaDataReady.asObservable();\r\n\r\npublic isUserReqiuredDataReady = new ReplaySubject();\r\npublic isUserReqiuredDataReady$ = this.isUserReqiuredDataReady.asObservable();\r\n\r\n public mychartType: any = '';\r\n public dataType: any = '';\r\n public userAllData: any = '';\r\n public userMetadata: any = {userDetails:[],resourceDetails:[]};\r\n public resoureMetadata = new Array();\r\n public userDetailObject: any = {};\r\n public userlist:any = false;\r\n public myEndTime :any;\r\n \r\n //for change chart Type\r\n public chartType = new BehaviorSubject(this.mychartType);\r\n public chartType$ = this.chartType.asObservable();\r\n //for change userWise To classRoom wise or vice versa\r\n public isUserWise_data = new BehaviorSubject(true);\r\n public isUserWise_data$ = this.isUserWise_data.asObservable();\r\n // for all user and current user information\r\n public isAllUsers = new BehaviorSubject(this.userlist);\r\n public isAllUsers$ = this.isAllUsers.asObservable();\r\n //for get details of selected user\r\n public detailedviewData = new BehaviorSubject(this.userMetadata);\r\n public detailedviewData$ = this.detailedviewData.asObservable();\r\n\r\n\r\n constructor() { }\r\n \r\n genarateResourseReqiuredData(data: any): any {\r\n this.isResoureMetaDataReady.next(false);\r\n let resourceMetadataMatrix = new Array();\r\n \r\n if(data && data !== null){\r\n let resouseID: any;\r\n let title: any;\r\n let subject: any;\r\n let grade: any;\r\n let chapter: any;\r\n let teachingpoint: any;\r\n let type: any;\r\n let resourceMetadata = data.resourcesMetadata.resourceMetadata;\r\n \r\n if(resourceMetadata!= undefined && resourceMetadata.length>0) {\r\n for (var i = 0; i < resourceMetadata.length;i++){\r\n //----------//resouseID\r\n resouseID = resourceMetadata[i].resourceId;\r\n //----------//subject\r\n if (resourceMetadata[i].subject != undefined) {\r\n if (resourceMetadata[i].subject.title != undefined) {\r\n subject = resourceMetadata[i].subject.title;\r\n } else {\r\n subject = '';\r\n }\r\n } else {\r\n subject = '';\r\n }\r\n //----------//grade\r\n if (resourceMetadata[i].grade != undefined) {\r\n if (resourceMetadata[i].grade.title != undefined) {\r\n grade = resourceMetadata[i].grade.title;\r\n } else {\r\n grade = '';\r\n }\r\n } else {\r\n grade = '';\r\n }\r\n //----------//chapter\r\n if (resourceMetadata[i].chapter != undefined) {\r\n if (resourceMetadata[i].chapter.title != undefined) {\r\n chapter = resourceMetadata[i].chapter.title;\r\n } else {\r\n chapter = '';\r\n }\r\n } else {\r\n chapter = '';\r\n }\r\n \r\n //----------//teachingpoint\r\n if (resourceMetadata[i].teachingpoint != undefined) {\r\n if (resourceMetadata[i].teachingpoint.title != undefined) {\r\n teachingpoint = resourceMetadata[i].teachingpoint.title;\r\n } else {\r\n teachingpoint = '';\r\n }\r\n } else {\r\n teachingpoint = '';\r\n }\r\n //----------//type\r\n if (resourceMetadata[i].type != undefined) {\r\n type = this.getDisplaytypeValue(resourceMetadata[i].type);\r\n } else {\r\n type = '';\r\n }\r\n \r\n //----------//title\r\n if (resourceMetadata[i].title != undefined) {\r\n title = resourceMetadata[i].title;\r\n } else {\r\n title = '';\r\n }\r\n let resourceMetauserConsoleData = {\r\n resouseID:resouseID,\r\n subject:subject,\r\n grade:grade,\r\n chapter:chapter,\r\n teachingpoint:teachingpoint,\r\n type:type,\r\n title:title\r\n }\r\n resourceMetadataMatrix.push(resourceMetauserConsoleData);\r\n this.resoureMetaData = resourceMetadataMatrix;\r\n this.isResoureMetaDataReady.next(true);\r\n }\r\n }\r\n }\r\n // this.resoureMetaData = resourceMetadataMatrix;\r\n return resourceMetadataMatrix;\r\n }\r\n genarateUserReqiuredData(data: any): any {\r\n this.isUserReqiuredDataReady.next(false);\r\n let usersMetadataMatrix = new Array();\r\n let usermetadataMatrixUpdated = new Array();\r\n let schoolTerminalMatrix = new Array();\r\n let userConsoleMatrix = new Array();\r\n if(data && data !== null){\r\n let userConsole = data.usersConsole.userConsole;\r\n let usersMetadata = data.usersMetadata.userMetadata;\r\n let schoolTerminal = data.schoolTerminals.schoolTerminal;\r\n \r\n if(usersMetadata!= null && usersMetadata.length > 0){\r\n for (let i = 0; i < usersMetadata.length; i++) {\r\n let userId: any;\r\n let userName: any;\r\n let userSubjects: any;\r\n let listOfUser:any = {}\r\n if (usersMetadata[i].userId!=\"\") {\r\n userId = usersMetadata[i].userId;\r\n \r\n if (usersMetadata[i].fullName !== undefined) {\r\n userName = usersMetadata[i].fullName // get name of user w.r.t. ID\r\n } else {\r\n userName = '';\r\n }\r\n \r\n if (usersMetadata[i].userSubjects !== undefined) {\r\n userSubjects = usersMetadata[i].userSubjects // get name of user w.r.t. ID\r\n } else {\r\n userSubjects = '';\r\n }\r\n \r\n listOfUser = {\r\n userId:userId, \r\n userName:userName, \r\n userSubjects:userSubjects\r\n };\r\n usersMetadataMatrix.push(listOfUser); // array of all users\r\n }\r\n }\r\n }\r\n for (var i = 0; i < usersMetadataMatrix.length; i++) {\r\n usersMetadataMatrix.forEach(element => {\r\n if (usersMetadataMatrix[i].userName === element.userName) {\r\n usermetadataMatrixUpdated.push(usersMetadataMatrix[i]); //array of same name users\r\n usersMetadataMatrix.splice(i, 1); //delete the same name users from usermetadataMatrix\r\n }\r\n });\r\n }\r\n for (var i = 0; i < usermetadataMatrixUpdated.length; i++) {\r\n // const randomNumber = document.createElement('span');\r\n // randomNumber.innerHTML = i.toString();\r\n usermetadataMatrixUpdated[i].userName = usermetadataMatrixUpdated[i].userName + \" \" + i;\r\n usersMetadataMatrix.push(usermetadataMatrixUpdated[i]); //adding same name users in usermetadataMatrix with some random charators\r\n this.usersMetaData = usersMetadataMatrix;\r\n }\r\n if(schoolTerminal != null && schoolTerminal.length > 0){\r\n for (var i = 0; i < schoolTerminal.length; i++) {\r\n let schoolId:any;\r\n let terminalKey:any;\r\n let terminalType:any;\r\n let location:any;\r\n let schoolTerminalData:any = {};\r\n \r\n //----------//schoolId\r\n if (schoolTerminal[i].schoolId !== undefined) {\r\n schoolId = schoolTerminal[i].schoolId // get name of user w.r.t. ID\r\n } else {\r\n schoolId = '';\r\n }\r\n //----------//terminalKey\r\n if (schoolTerminal[i].terminalKey !== undefined) {\r\n terminalKey = schoolTerminal[i].terminalKey // get name of user w.r.t. ID\r\n } else {\r\n terminalKey = '';\r\n }\r\n //----------//terminalType\r\n if (schoolTerminal[i].terminalType !== undefined) {\r\n terminalType = schoolTerminal[i].terminalType // get name of user w.r.t. ID\r\n } else {\r\n terminalType = '';\r\n }\r\n \r\n //----------//location\r\n if (schoolTerminal[i].metadata !== undefined) {\r\n let metadataJSON = JSON.parse(schoolTerminal[i].metadata);\r\n \r\n location = metadataJSON.location // get name of user w.r.t. ID\r\n console.log(\"metadataJSON\",location);\r\n } else {\r\n location = '';\r\n }\r\n schoolTerminalData = {\r\n schoolId:schoolId,\r\n terminalKey:terminalKey,\r\n terminalType:terminalType,\r\n location:location\r\n };\r\n \r\n schoolTerminalMatrix.push(schoolTerminalData);\r\n this.schoolTerminalData = schoolTerminalMatrix;\r\n }\r\n }\r\n if(userConsole !=null && userConsole.length > 0){\r\n for (let index = 0; index < userConsole.length; index++) {\r\n let userId: any;\r\n let startTime: any;\r\n let endTime: any;\r\n let duration: any;\r\n let selectedDate: any;\r\n let terminalIP: any;\r\n let userConsoleResources: any;\r\n let resourceMetadataIDS: any;\r\n let resourceMetauserConsoleData = new Array();\r\n let userName:any;\r\n let userSubjects:any;\r\n let terminalLocation: any;\r\n //----------//user iD\r\n if (userConsole[index].userId !== undefined) {\r\n userId = userConsole[index].userId // get name of user w.r.t. ID\r\n } else {\r\n userId = '';\r\n }\r\n //----------// startTime \r\n if (userConsole[index].startTime !== undefined) {\r\n startTime = userConsole[index].startTime // get name of user w.r.t. ID\r\n } else {\r\n startTime = '';\r\n }\r\n //----------// endTime \r\n if (userConsole[index].endTime !== undefined) {\r\n endTime = userConsole[index].endTime // get name of user w.r.t. ID\r\n this.myEndTime = endTime;\r\n } else {\r\n endTime = '';\r\n }\r\n //----------// Date \r\n if (userConsole[index].selectedDate !== undefined) {\r\n selectedDate = userConsole[index].selectedDate // get name of user w.r.t. ID\r\n } else {\r\n selectedDate = '';\r\n }\r\n \r\n //----------// Duration\r\n if (userConsole[index].duration !== undefined) {\r\n duration = userConsole[index].duration // get name of user w.r.t. ID\r\n } else {\r\n duration = '';\r\n }\r\n //----------// terminalIP\r\n if (userConsole[index].terminalIP !== undefined) {\r\n terminalIP = userConsole[index].terminalIP // get name of user w.r.t. ID\r\n } else {\r\n terminalIP = '';\r\n }\r\n \r\n //----------// userConsoleResources\r\n if (userConsole[index].userConsoleResources !== undefined) {\r\n userConsoleResources = userConsole[index].userConsoleResources // get name of user w.r.t. ID\r\n } else {\r\n userConsoleResources = null;\r\n }\r\n \r\n if(userConsoleResources != null){\r\n if (userConsoleResources.userConsoleResource !== undefined) {\r\n resourceMetauserConsoleData = userConsoleResources.userConsoleResource; // get name of user w.r.t. ID\r\n } else {\r\n resourceMetauserConsoleData = [];\r\n }\r\n }\r\n \r\n //----------// userName and userSubjects\r\n for (let i = 0; i < usersMetadataMatrix.length; i++) {\r\n if (userId === usersMetadataMatrix[i].userId) {\r\n userName = usersMetadataMatrix[i].userName;\r\n userSubjects = usersMetadataMatrix[i].userSubjects;\r\n }\r\n }\r\n //----------// terminalIP and terminalLocation\r\n \r\n for (let i = 0; i < schoolTerminalMatrix.length; i++) {\r\n console.log(\"schoolTerminalMatrix[i].terminalKey\",terminalIP,schoolTerminalMatrix[i].terminalKey);\r\n if (terminalIP === schoolTerminalMatrix[i].terminalKey) {\r\n \r\n terminalLocation = schoolTerminalMatrix[i].location;\r\n }else{\r\n terminalLocation = \"location\";\r\n }\r\n }\r\n let userData = {\r\n userId:userId,\r\n userName:userName,\r\n startTime:new Date(startTime),\r\n endTime:new Date(endTime),\r\n terminalIP:terminalIP,\r\n resourceMetauserConsoleData:resourceMetauserConsoleData,\r\n duration:duration,\r\n terminalLocation:terminalLocation,\r\n userSubjects:userSubjects\r\n }\r\n userConsoleMatrix.push(userData);\r\n this.userConsoleData = userConsoleMatrix;\r\n this.isUserReqiuredDataReady.next(true);\r\n }\r\n }\r\n }\r\n // console.log(usersMetadataMatrix,schoolTerminalMatrix,userConsoleMatrix);\r\n return {\r\n usersMetadata:usersMetadataMatrix,\r\n schoolTerminalData:schoolTerminalMatrix,\r\n userConsoleData: userConsoleMatrix\r\n }\r\n }\r\n userWiseChartData(){\r\n let dataTableforChart = new Array();\r\n dataTableforChart = [];\r\n if(this.userConsoleData){\r\n if(this.userConsoleData.length > 0){\r\n for(let i = 0; i < this.userConsoleData.length; i++){\r\n let userData = [this.userConsoleData[i].userName,this.userConsoleData[i].startTime,this.userConsoleData[i].endTime];\r\n dataTableforChart.push(userData);\r\n }\r\n }\r\n }\r\n return dataTableforChart;\r\n }\r\n classRoomWiseChartData(){\r\n let dataTableforChart = new Array();\r\n dataTableforChart = [];\r\n if(this.userConsoleData){\r\n console.log(\"this.userConsoleData\",this.userConsoleData);\r\n \r\n for(let i = 0; i < this.userConsoleData.length; i++){\r\n let userData = [this.userConsoleData[i].terminalLocation,this.userConsoleData[i].startTime,this.userConsoleData[i].endTime];\r\n dataTableforChart.push(userData);\r\n }\r\n }\r\n return dataTableforChart;\r\n \r\n }\r\n allUserChartData(){\r\n let dataTableforChart = new Array();\r\n dataTableforChart = [];\r\n let AlluserDetailsForTableChart =new Array();\r\n AlluserDetailsForTableChart = [];\r\n if(this.userConsoleData && this.usersMetaData){\r\n let inActiveuserName: any;\r\n let userSubjects: any;\r\n let myID: any;\r\n let AlluserDetails =new Array();\r\n for (let index = 0; index < this.userConsoleData.length; index++) {\r\n AlluserDetails.push(this.userConsoleData[index]);\r\n AlluserDetailsForTableChart.push(this.userConsoleData[index])\r\n }\r\n for (let i = 0; i < this.usersMetaData.length; i++) {\r\n myID = this.usersMetaData[i].userId;\r\n inActiveuserName = this.usersMetaData[i].userName;\r\n userSubjects = this.usersMetaData[i].userSubjects;\r\n let myChartRowuserConsoleData = \r\n {\r\n userId:myID,\r\n userName:inActiveuserName,\r\n startTime:new Date(this.myEndTime),\r\n endTime:new Date(this.myEndTime),\r\n terminalIP:\"\",\r\n resourceMetauserConsoleData:[],\r\n duration:\"0\",\r\n terminalLocation:\"\",\r\n userSubjects:userSubjects\r\n };\r\n AlluserDetails.push(myChartRowuserConsoleData);\r\n \r\n let myTableRowuserConsoleData = {\r\n userId:myID,\r\n userName:inActiveuserName,\r\n startTime:\"\",\r\n endTime:\"\",\r\n terminalIP:\"\",\r\n resourceMetauserConsoleData:[],\r\n duration:0,\r\n terminalLocation:\"\",\r\n userSubjects:userSubjects\r\n };\r\n AlluserDetailsForTableChart.push(myTableRowuserConsoleData);\r\n }\r\n for(let i = 0; i < AlluserDetails.length; i++){\r\n let userData = [AlluserDetails[i].userName,AlluserDetails[i].startTime,AlluserDetails[i].endTime];\r\n dataTableforChart.push(userData);\r\n }\r\n }\r\n return {forChartData:dataTableforChart,fordurationTable:AlluserDetailsForTableChart}\r\n }\r\n allRoomsData(){\r\n let dataTableforChart = new Array();\r\n dataTableforChart = [];\r\n let allRoomsDetails = new Array();\r\n allRoomsDetails = [];\r\n if(this.userConsoleData && this.schoolTerminalData){\r\n let myChartRowData: any={};\r\n let inActiveClassRoom: any;\r\n for(let i = 0; i < this.userConsoleData.length; i++){\r\n allRoomsDetails.push(this.userConsoleData[i]);\r\n let userData = [this.userConsoleData[i].terminalLocation,this.userConsoleData[i].startTime,this.userConsoleData[i].endTime];\r\n dataTableforChart.push(userData);\r\n }\r\n \r\n for (let i = 0; i < this.schoolTerminalData.length; i++) {\r\n inActiveClassRoom = this.schoolTerminalData[i].location;\r\n \r\n myChartRowData = {\r\n userId:\"\",\r\n userName:\"\",\r\n startTime:new Date(this.myEndTime),\r\n endTime:new Date(this.myEndTime),\r\n terminalIP:\"\",\r\n resourceMetauserConsoleData:[],\r\n duration:0,\r\n terminalLocation:inActiveClassRoom,\r\n userSubjects:\"\"\r\n };\r\n allRoomsDetails.push(myChartRowData);\r\n let myChartRowuserConsoleData = [inActiveClassRoom,new Date(this.myEndTime),new Date(this.myEndTime)];\r\n dataTableforChart.push(myChartRowuserConsoleData);\r\n }\r\n \r\n }\r\n return {forChartData:dataTableforChart,fordurationTable:allRoomsDetails};\r\n }\r\n dataForTableView(userConsoleMatrix: any,resourceMetadataMatrix: any) {\r\n let currentDate: any;\r\n let resourceMatrixForTableChart = new Array();\r\n let resourceMatrixForExcel = new Array();\r\n resourceMatrixForTableChart = [];\r\n resourceMatrixForExcel = [];\r\n for (let i = 0; i <userConsoleMatrix.length; i++) {\r\n let startTime: any;\r\n let endTime: any;\r\n let duration: any;\r\n let terminalIP: any;\r\n let subject: any;\r\n let grade: any;\r\n let chapter: any;\r\n let AssestDetail: any;\r\n let resourceType: any;\r\n let resourceTitle: any;\r\n let teachingpoint: any;\r\n let location: any;\r\n let teacherName: any;\r\n let teacherSubject: any;\r\n \r\n let resourceMetadataIDs: any;\r\n let resourceArrayForExcel = new Array();\r\n let resourceArrayForTableChart = new Array();\r\n let userConsoleDataMatrix = new Array();\r\n resourceArrayForTableChart = [];\r\n userConsoleDataMatrix = [];\r\n //----------------- for subject and Name\r\n \r\n\r\n teacherSubject = userConsoleMatrix[i].userSubjects;\r\n teacherName = userConsoleMatrix[i].userName;\r\n //----------------- for start Time and EndTime \r\n if ((userConsoleMatrix[i].startTime != undefined && userConsoleMatrix[i].startTime != \"\") && (userConsoleMatrix[i].endTime != undefined&&userConsoleMatrix[i].endTime != \"\")) {\r\n startTime = userConsoleMatrix[i].startTime.toLocaleTimeString('en-US', { hour12: true });\r\n endTime = userConsoleMatrix[i].endTime.toLocaleTimeString('en-US', { hour12: true });\r\n currentDate = userConsoleMatrix[i].startTime.getDate() + '/' + (userConsoleMatrix[i].startTime.getMonth()+1) + '/' + userConsoleMatrix[i].startTime.getFullYear();\r\n }\r\n //----------------- for duration\r\n duration = Math.floor(userConsoleMatrix[i].duration);\r\n //----------------- for Terminal loaction and terminal IP\r\n location = userConsoleMatrix[i].terminalLocation;\r\n terminalIP = userConsoleMatrix[i].terminalIP;\r\n let roomDetail = location + ' ' + terminalIP;\r\n \r\n resourceMetadataIDs = userConsoleMatrix[i].resourceMetauserConsoleData;\r\n \r\n if (resourceMetadataIDs.length == 0) {\r\n subject = undefined;\r\n grade = undefined;\r\n chapter = undefined;\r\n teachingpoint = undefined;\r\n AssestDetail = undefined;\r\n resourceTitle = undefined;\r\n resourceType = undefined;\r\n resourceArrayForTableChart = [teacherName,teacherSubject,currentDate,startTime,endTime,duration,roomDetail,subject,grade,chapter,teachingpoint,AssestDetail];\r\n resourceMatrixForTableChart.push(resourceArrayForTableChart);\r\n \r\n }else{\r\n //resourceMetadataMatrix = [resouseID,subject,grade,chapter,teachingpoint,type,title]\r\n for (let k = 0; k < resourceMetadataIDs.length; k++) {\r\n for (let i = 0; i < resourceMetadataMatrix.length; i++) {\r\n if (resourceMetadataIDs[k] === resourceMetadataMatrix[i].resouseID) {\r\n subject = resourceMetadataMatrix[i].subject;\r\n grade = resourceMetadataMatrix[i].grade;\r\n chapter = resourceMetadataMatrix[i].chapter;\r\n teachingpoint = resourceMetadataMatrix[i].teachingpoint;\r\n AssestDetail = this.getDisplaytypeValue(resourceMetadataMatrix[i].type) + \": \" + resourceMetadataMatrix[i].title;\r\n\r\n resourceArrayForTableChart = [teacherName,teacherSubject,currentDate,startTime,endTime,duration,roomDetail,subject,grade,chapter,teachingpoint,AssestDetail];\r\n resourceMatrixForTableChart.push(resourceArrayForTableChart);\r\n teacherName = undefined;\r\n teacherSubject = undefined;\r\n currentDate = undefined;\r\n startTime = undefined;\r\n endTime = undefined;\r\n duration = undefined;\r\n roomDetail = undefined;\r\n \r\n }\r\n }\r\n }\r\n }\r\n }\r\n return resourceMatrixForTableChart;\r\n }\r\n dataForDetailedView(userConsoleMatrix: any,resourceMetadataMatrix: any, rowLabel: any) {\r\n let detailedView_UserDataMatrix = new Array();\r\n detailedView_UserDataMatrix = [];\r\n let detailedView_ResourceDataMatrix = new Array();\r\n detailedView_ResourceDataMatrix = [];\r\n \r\n let startTime: any;\r\n let endTime: any;\r\n let duration: any;\r\n let terminalIP: any;\r\n let subject: any;\r\n let grade: any;\r\n let chapter: any;\r\n let AssestDetail: any;\r\n let teachingpoint: any;\r\n let location: any;\r\n let teacherName: any;\r\n let teacherSubject: any;\r\n let currentDate: any;\r\n let resourceMetadataIDs: any;\r\n let resourceArrayForTableChart = new Array();\r\n resourceArrayForTableChart = [];\r\n //----------------- for subject and Name\r\n teacherSubject = userConsoleMatrix[rowLabel].userSubjects;\r\n teacherName = userConsoleMatrix[rowLabel].userName;\r\n //----------------- for start Time and EndTime\r\n if ((userConsoleMatrix[rowLabel].startTime != undefined && userConsoleMatrix[rowLabel].startTime != \"\") && (userConsoleMatrix[rowLabel].endTime != undefined&&userConsoleMatrix[rowLabel].endTime != \"\")) {\r\n startTime = userConsoleMatrix[rowLabel].startTime.toLocaleTimeString('en-US', { hour12: true });\r\n endTime = userConsoleMatrix[rowLabel].endTime.toLocaleTimeString('en-US', { hour12: true });\r\n currentDate = userConsoleMatrix[rowLabel].startTime.getDate() + '/' + userConsoleMatrix[rowLabel].startTime.getMonth() + '/' + userConsoleMatrix[rowLabel].startTime.getFullYear();\r\n }\r\n //----------------- for duration\r\n duration = Math.floor(userConsoleMatrix[rowLabel].duration);\r\n //----------------- for Terminal loaction and terminal IP\r\n location = userConsoleMatrix[rowLabel].terminalLocation;\r\n terminalIP = userConsoleMatrix[rowLabel].terminalIP;\r\n let roomDetail = location + ' ' + terminalIP;\r\n resourceMetadataIDs = userConsoleMatrix[rowLabel].resourceMetauserConsoleData;\r\n\r\n detailedView_UserDataMatrix = [teacherName,startTime,teacherSubject,endTime,roomDetail]\r\n \r\n if (resourceMetadataIDs.length == 0) {\r\n subject = undefined;\r\n grade = undefined;\r\n chapter = undefined;\r\n teachingpoint = undefined;\r\n AssestDetail = undefined;\r\n // resourceArrayForTableChart = [subject,grade,chapter,teachingpoint,AssestDetail];\r\n // detailedView_ResourceDataMatrix.push(resourceArrayForTableChart);\r\n }else{\r\n //resourceMetadataMatrix = [resouseID,subject,grade,chapter,teachingpoint,type,title]\r\n for (let k = 0; k < resourceMetadataIDs.length; k++) {\r\n for (let i = 0; i < resourceMetadataMatrix.length; i++) {\r\n if (resourceMetadataIDs[k] === resourceMetadataMatrix[i].resouseID) {\r\n subject = resourceMetadataMatrix[i].subject;\r\n grade = resourceMetadataMatrix[i].grade;\r\n chapter = resourceMetadataMatrix[i].chapter;\r\n teachingpoint = resourceMetadataMatrix[i].teachingpoint;\r\n AssestDetail =resourceMetadataMatrix[i].type + \": \" + resourceMetadataMatrix[i].title;\r\n \r\n resourceArrayForTableChart = [subject,grade,chapter,teachingpoint,AssestDetail];\r\n detailedView_ResourceDataMatrix.push(resourceArrayForTableChart);\r\n }\r\n }\r\n }\r\n } \r\n \r\n return {userDetails:detailedView_UserDataMatrix,resourceDetails:detailedView_ResourceDataMatrix};\r\n }\r\n // To GET DISPLAY TYPE\r\n getDisplaytypeValue(key: any) {\r\n let assetTypeConfig = [\r\n {\r\n type: \"asset_media\",\r\n display: \"Media\"\r\n },\r\n {\r\n type: \"asset_print\",\r\n display: \"Print\"\r\n },\r\n {\r\n type: \"quiz\",\r\n display: \"Quiz\"\r\n },\r\n {\r\n type: \"question\",\r\n display: \"Question\"\r\n },\r\n {\r\n type: \"chapter\",\r\n display: \"Chapter\"\r\n },\r\n {\r\n type: \"tp\",\r\n display: \"Topic\"\r\n },\r\n {\r\n type: \"whiteboard\",\r\n display: \"Whiteboard\"\r\n },\r\n {\r\n type: \"widget\",\r\n display: \"Widget\"\r\n },\r\n {\r\n type: \"casset_media\",\r\n display: \"cMedia\"\r\n },\r\n {\r\n type: \"casset_print\",\r\n display: \"cPrint\"\r\n },\r\n {\r\n type: \"cquiz\",\r\n display: \"cQuiz\"\r\n },\r\n {\r\n type: \"cquestion\",\r\n display: \"cQuestion\"\r\n },\r\n {\r\n type: \"image\",\r\n display: \"Image\"\r\n },\r\n {\r\n type: \"video\",\r\n display: \"Video\"\r\n },\r\n\r\n ];\r\n let displayValue = key;\r\n assetTypeConfig.forEach((value) => {\r\n if (value.type === key) {\r\n displayValue = value.display;\r\n }\r\n });\r\n return displayValue;\r\n\r\n }\r\n}\r\n","import { Component, OnInit ,Output, ViewChild, Input,EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-principal-dashboard-lib-v2',\r\n templateUrl: './principal-dashboard-lib-v2.component.html',\r\n styleUrls: ['./principal-dashboard-lib-v2.component.scss']\r\n})\r\nexport class PrincipalDashboardLibV2Component implements OnInit {\r\n @Input() data;\r\n @Input() set responseStatus(res: any) {\r\n this.setMessageForUser(res);\r\n // console.log(\" @Input() set responseStatus(res: any) >>>>>>>>>>>>.\",res);\r\n }\r\n @Output() userSelectedDate = new EventEmitter();\r\n messageForUser = \"Loding...\";\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n \r\n // console.log(\" IN --> 7 data\",this.data);\r\n }\r\n setMessageForUser(res: any){\r\n this.messageForUser = res;\r\n }\r\n onUserSelectDate(e:any){\r\n // console.log(\" IN --> 1\");\r\n this.data = null;\r\n this.userSelectedDate.emit(e);\r\n }\r\n \r\n\r\n}\r\n","import { getLocaleDateTimeFormat } from '@angular/common';\r\nimport { Component, ElementRef, OnInit, ViewChild, Input } from '@angular/core';\r\nimport { ChartType } from 'angular-google-charts';\r\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\r\ndeclare let require: any;\r\n\r\n@Component({\r\n selector: 'lib-chartheader',\r\n templateUrl: './chartheader.component.html',\r\n styleUrls: ['./chartheader.component.scss'],\r\n})\r\nexport class ChartheaderComponent implements OnInit {\r\n constructor(\r\n private pdService: PrincipalDashboardLibV2Service\r\n ) {}\r\n \r\n //variables\r\n mytype = ChartType.Timeline;\r\n datadisplaytype = 'UserWise';\r\n isUserWise = true;\r\n myIcon: any;\r\n libVersion:any;\r\n isChartView=true;\r\n\r\n ngOnInit(): void {\r\n this.libVersion = \"0.0.20\";\r\n // this.myIcon = document.getElementById('myIconImg');\r\n // this.changeChatType() \r\n }\r\n changeChatType() {\r\n if (this.mytype == ChartType.Timeline) {\r\n this.isChartView = false;\r\n this.mytype = ChartType.Table;\r\n this.pdService.chartType.next(this.mytype);\r\n \r\n } else {\r\n this.isChartView = true;\r\n this.mytype = ChartType.Timeline;\r\n \r\n this.pdService.chartType.next(this.mytype);\r\n }\r\n }\r\n changeDataTypeClassRoom() {\r\n this.isUserWise = false;\r\n this.pdService.isUserWise_data.next(false);\r\n }\r\n changeDataTypeUser() {\r\n this.isUserWise = true;\r\n this.pdService.isUserWise_data.next(true);\r\n }\r\n}\r\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 {\r\n Component,\r\n ElementRef,\r\n OnInit,\r\n ViewChild,\r\n Input,\r\n HostListener,\r\n} from '@angular/core';\r\nimport { ChartType, GoogleChartComponent } from 'angular-google-charts';\r\nimport { element } from 'protractor';\r\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\r\n@Component({\r\n selector: 'lib-chartview',\r\n templateUrl: './chartview.component.html',\r\n styleUrls: ['./chartview.component.scss'],\r\n})\r\nexport class ChartviewComponent implements OnInit {\r\n @Input() set data(res: any) {\r\n if(res!== null){\r\n this.loadChart(res);\r\n }\r\n \r\n }\r\n chartview:any;\r\n myDataList:any;\r\n chartDataTable:any;\r\n myChartOptions: any;\r\n AllrowHeight: any;\r\n myXmlData: any;\r\n currentdataList:any;\r\n resourceDataList:any;\r\n alldataList:any;\r\n selectedUserData:any;\r\n rowElements:any;\r\n \r\n installedClassrooms: any;\r\n currentRooms: any;\r\n totalUsers = 0;\r\n eligibleUsers = 0;\r\n currentUsers = 0;\r\n myChartType = ChartType.Timeline;\r\n myChartwidth = window.innerWidth * 0.88;\r\n myChartHeight = window.innerHeight;\r\n currentList = \"Current Users\";\r\n allList = \"All Users\";\r\n isAllUsers = false;\r\n isUserWise = false;\r\n alluserList: any;\r\n myChartDataMatrix = new Array();\r\n \r\n totalChartDataMatrix = new Array();\r\n constructor(\r\n private pdService: PrincipalDashboardLibV2Service\r\n ) { }\r\n\r\n ngOnInit() { }\r\n\r\n loadChart(response: any) {\r\n // console.log(' IN --> 8 loadChart');\r\n this.totalUsers = 0;\r\n this.eligibleUsers = 0;\r\n this.currentUsers = 0;\r\n this.myChartType = ChartType.Timeline;\r\n this.myChartwidth = window.innerWidth * 0.88;\r\n this.myChartHeight = window.innerHeight;\r\n this.currentList = \"Current Users\";\r\n this.allList = \"All Users\";\r\n this.isAllUsers = false;\r\n this.isUserWise = false;\r\n this.myChartDataMatrix =[];\r\n this.totalChartDataMatrix =[];\r\n\r\n this.chartview = document.getElementById('pd-chartview');\r\n this.myDataList = document.getElementById('pd-xmlData');\r\n // let parse = new DOMParser();\r\n if(response){\r\n this.myXmlData = JSON.parse(response);\r\n }\r\n \r\n if(this.myXmlData){\r\n this.currentdataList = this.pdService.genarateUserReqiuredData(this.myXmlData);\r\n this.alluserList = this.pdService.allUserChartData();\r\n this.resourceDataList = this.pdService.genarateResourseReqiuredData(this.myXmlData);\r\n this.totalUsers = this.currentdataList.usersMetadata.length;\r\n this.findCurrentUserCount();\r\n }\r\n this.pdService.chartType.subscribe((data) => {\r\n if (data) {\r\n this.updateChartType(data);\r\n }\r\n });\r\n this.pdService.isUserWise_data.subscribe((data) => {\r\n this.updateDataType(data);\r\n });\r\n window.addEventListener('resize', this.onResizeWindow.bind(this));\r\n }\r\n onResizeWindow(event: any) {\r\n this.myChartwidth = window.innerWidth * 0.88; //set an appropriate factor\r\n }\r\n myChartReady() {\r\n this.createDivforTotalDurartion();\r\n this.setHeightofDivforTotalDurartion();\r\n // this.removeBlankEntryBar();\r\n }\r\n updateChartType(dataType: any) {\r\n if (this.chartview != null && this.chartview != undefined) {\r\n if (dataType == ChartType.Table) {\r\n this.chartview.style.display = 'none';\r\n } else {\r\n this.chartview.style.display = 'block';\r\n }\r\n }\r\n }\r\n updateDataType(dataType: any) {\r\n this.isUserWise = dataType;\r\n if (this.myXmlData) {\r\n if(this.isUserWise){\r\n this.currentList = \"Current Users\";\r\n this.allList = \"All Users\";\r\n if(this.isAllUsers){\r\n this.userWiseAllData();\r\n }else{\r\n this.userWiseCurrentData();\r\n } \r\n }else{\r\n this.allList = \"All Rooms\";\r\n this.currentList = \"Current Rooms\";\r\n if(this.isAllUsers){\r\n this.classRoomWiseAllData();\r\n }else{\r\n this.classRoomWiseCurrentData();\r\n } \r\n }\r\n }\r\n }\r\n updateChart() {\r\n let labels = document.getElementById('labels');\r\n while (labels.firstChild) {\r\n labels.removeChild(labels.lastChild);\r\n }\r\n this.chartDataTable = this.myChartDataMatrix;\r\n console.log(\"this.myChartDataMatrix\",this.myChartDataMatrix);\r\n \r\n \r\n (this.myChartOptions = {\r\n tooltip: {\r\n trigger: 'none',\r\n },\r\n colors: ['#ff7f0e', '#2ca02c', '#8c564b', '#d62728', '#bcbd22', '#17becf'],\r\n timeline: {\r\n colorByRowLabel: true,\r\n barLabelStyle: {\r\n fontSize: 7,\r\n },\r\n },\r\n hAxis: {\r\n format: 'HH:mm a',\r\n },\r\n });\r\n setTimeout(() => {\r\n this.myChartHeight = this.AllrowHeight + 100;//to set perfect height of chart \r\n }, 1000);\r\n }\r\n\r\n calulateTotalDuration(detailViewMatrix:any) {\r\n \r\n let id_durationArray;\r\n let id_durationMatrix = new Array();\r\n id_durationMatrix = [];\r\n this.totalChartDataMatrix = [];\r\n if (this.isUserWise) {\r\n for (let i = 0; i < detailViewMatrix.length; i++) {\r\n id_durationArray = {\r\n name: detailViewMatrix[i].userName,\r\n value: parseInt(detailViewMatrix[i].duration),\r\n };\r\n id_durationMatrix.push(id_durationArray);\r\n }\r\n } else {\r\n for (let i = 0; i < detailViewMatrix.length; i++) {\r\n id_durationArray = {\r\n name: detailViewMatrix[i].terminalLocation,\r\n value: parseInt(detailViewMatrix[i].duration),\r\n };\r\n id_durationMatrix.push(id_durationArray);\r\n }\r\n }\r\n \r\n let obj: any = {};\r\n id_durationMatrix = [...new Set(id_durationMatrix)];\r\n \r\n id_durationMatrix.forEach((item) => {\r\n if (obj[item.name]) {\r\n obj[item.name].value = obj[item.name].value + item.value;\r\n } else {\r\n\r\n obj[item.name] = item;\r\n }\r\n });\r\n let valuesArr = Object.values(obj);\r\n \r\n let myArray = new Array();\r\n myArray = [];\r\n valuesArr.forEach((item: any) => {\r\n myArray.push(item.value);\r\n });\r\n for (let i = 0; i < myArray.length; i++) {\r\n let totaldurationPerRow = [this.timeConvert(myArray[i]).toString() + ' hrs'];\r\n // let totalChartRowDataArray = [totaldurationPerRow];\r\n this.totalChartDataMatrix.push(totaldurationPerRow);\r\n }\r\n }\r\n timeConvert(n: any) {\r\n var num = Math.floor(n);\r\n var hours = num / 60;\r\n var rhours = Math.floor(hours);\r\n var minutes = (hours - rhours) * 60;\r\n var rminutes = Math.round(minutes);\r\n return rhours + ':' + rminutes;\r\n }\r\n removeBlankEntryBar() {\r\n const chartDiv = document.getElementById('myTimeLine');\r\n var el = chartDiv.getElementsByTagName(\"rect\"); //get all the descendant rect element inside the container \r\n var width = 100000000; //set a large initial value to width\r\n var elToRem = []; //element would be added to this array for removal\r\n for (var i = 0; i < el.length; i++) { //looping over all the rect element of container\r\n var cwidth = parseInt(el[i].getAttribute(\"width\"));//getting the width of ith element\r\n if (cwidth < width) { //if current element width is less than previous width then this is min. width and ith element should be removed\r\n elToRem = [el[i]];\r\n width = cwidth; //setting the width with min width\r\n }\r\n else if (cwidth == width) { //if current element width is equal to previous width then more that one element would be removed\r\n elToRem.push(el[i]);\r\n }\r\n }\r\n for (var i = 0; i < elToRem.length; i++) {\r\n // now iterate JUST the elements to remove\r\n elToRem[i].setAttribute(\"fill\", \"none\");\r\n\r\n }\r\n }\r\n createDivforTotalDurartion() {\r\n let rowLabels = [];\r\n this.rowElements = [];\r\n var labels = document.getElementById('labels');\r\n while (labels.firstChild) {\r\n labels.removeChild(labels.lastChild);\r\n }\r\n for (var i = 0; i < this.totalChartDataMatrix.length; i++) {\r\n var team = this.totalChartDataMatrix[i][0];\r\n rowLabels.push(team);\r\n var label = labels.appendChild(document.createElement('div'));\r\n label.style['border-bottom'] = '1px solid #b7b7b7';\r\n label.style['font-family'] = 'Arial';\r\n label.style['font-size'] = '13px';\r\n label.style['text-align'] = 'left';\r\n label.style['padding-left'] = '8px';\r\n label.style['padding-right'] = '8px';\r\n label.style.position = 'inherit';\r\n if (i % 2) {\r\n label.style['background-color'] = '#e6e6e6';\r\n } else {\r\n label.style['background-color'] = '#ffffff';\r\n }\r\n label.innerHTML = team;\r\n this.rowElements.push(label);\r\n }\r\n }\r\n setHeightofDivforTotalDurartion() {\r\n \r\n this.AllrowHeight = 0;\r\n const chartDiv = document.getElementById('myTimeLine');\r\n let rows = chartDiv.getElementsByTagName('rect');\r\n let rowIndex = -1;\r\n\r\n for (let i = 0; i < rows.length; i++) {\r\n rowIndex++;\r\n if (rowIndex < this.rowElements.length) {\r\n let rowHeight = parseFloat(rows[i].getAttribute('height')) + 'px';\r\n this.AllrowHeight += parseFloat(rows[i].getAttribute('height'));\r\n\r\n const currentCell = this.rowElements[rowIndex];\r\n if (currentCell) {\r\n currentCell.style.height = rowHeight;\r\n currentCell.style.lineHeight = rowHeight;\r\n }\r\n }\r\n }\r\n }\r\n\r\n onSelectRowData(event: any) {\r\n const { row, column } = event.selection[0]; \r\n if(this.isAllUsers){\r\n this.selectedUserData = this.pdService.dataForDetailedView(this.alluserList.fordurationTable,this.resourceDataList, row);\r\n \r\n }else{\r\n this.selectedUserData = this.pdService.dataForDetailedView(this.currentdataList.userConsoleData,this.resourceDataList, row);\r\n \r\n \r\n }\r\n // console.log(\"this.selectedUserData\",this.selectedUserData);\r\n this.pdService.detailedviewData.next(this.selectedUserData);\r\n this.updateChart();\r\n // alluserList\r\n }\r\n showAllUser() {\r\n this.pdService.isAllUsers.next(true);\r\n this.isAllUsers = true;\r\n if(this.isUserWise){\r\n this.userWiseAllData();\r\n }else{\r\n this.classRoomWiseAllData();\r\n }\r\n }\r\n showCurrentUser() {\r\n this.isAllUsers = false;\r\n this.pdService.isAllUsers.next(false);\r\n if(this.isUserWise){\r\n this.userWiseCurrentData();\r\n }else{\r\n this.classRoomWiseCurrentData();\r\n }\r\n }\r\n userWiseCurrentData(){\r\n \r\n let chartDataUserWise = this.pdService.userWiseChartData();\r\n // console.log(\"chartDataUserWise\",chartDataUserWise);\r\n \r\n if(chartDataUserWise.length>0){\r\n this.myChartDataMatrix =chartDataUserWise;\r\n this.updateChart();\r\n if(this.currentdataList.userConsoleData.length>0){\r\n this.calulateTotalDuration(this.currentdataList.userConsoleData);\r\n }\r\n } \r\n }\r\n userWiseAllData(){\r\n let chartDataUserWise = this.alluserList.forChartData;\r\n if(chartDataUserWise.length>0){\r\n this.myChartDataMatrix =chartDataUserWise;\r\n \r\n this.updateChart();\r\n this.calulateTotalDuration(this.alluserList.fordurationTable);\r\n }\r\n \r\n }\r\n classRoomWiseCurrentData(){\r\n let classRoomdata = this.pdService.classRoomWiseChartData();\r\n // console.log(\"classRoomdata\",classRoomdata);\r\n if(classRoomdata && classRoomdata.length>0){\r\n \r\n \r\n this.myChartDataMatrix =classRoomdata; \r\n this.updateChart();\r\n if(this.currentdataList.userConsoleData.length>0){\r\n this.calulateTotalDuration(this.currentdataList.userConsoleData);\r\n }\r\n } \r\n }\r\n \r\n classRoomWiseAllData(){\r\n let allclassRoomList = this.pdService.allRoomsData();\r\n if(allclassRoomList.forChartData && allclassRoomList.forChartData.length > 0){\r\n this.myChartDataMatrix = allclassRoomList.forChartData;\r\n this.updateChart();\r\n }\r\n if(allclassRoomList.fordurationTable && allclassRoomList.fordurationTable.length > 0){\r\n this.calulateTotalDuration(allclassRoomList.fordurationTable);\r\n }\r\n \r\n }\r\n\r\n findCurrentUserCount(){\r\n let userConsoleData = this.currentdataList.userConsoleData;\r\n \r\n let userNameArray = new Array();\r\n for (let index = 0; index < userConsoleData.length; index++) {\r\n const element = userConsoleData[index].userName;\r\n userNameArray.push(element);\r\n }\r\n let uniqueUserName = [...new Set(userNameArray)];\r\n this.currentUsers = uniqueUserName.length;\r\n }\r\n ngOnDestroy() {\r\n // console.log('ngOnDestroy >>');\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\r\n\r\n@Component({\r\n selector: 'lib-detailedview',\r\n templateUrl: './detailedview.component.html',\r\n styleUrls: ['./detailedview.component.scss'],\r\n})\r\nexport class DetailedviewComponent implements OnInit {\r\n userMetadata: any;\r\n resourseMetadata: any;\r\n deatilViewContainer: any;\r\n deatilViewTable: any;\r\n closeButton: any;\r\n getTotalData:any\r\n userMetadataHeadingArray = [\r\n 'Name:',\r\n 'Start Time:',\r\n 'Subject:',\r\n 'End Time:',\r\n 'Room Details:',\r\n ];\r\n resourseMetadataHeadingArray = [\r\n 'Subject',\r\n 'Class',\r\n 'Chapter Name',\r\n 'Topic Name',\r\n 'Assets Details',\r\n ];\r\n constructor(private pdService: PrincipalDashboardLibV2Service) {}\r\n\r\n ngOnInit(): void {\r\n this.deatilViewContainer = document.getElementById('pd-deatilViewContainer');\r\n this.deatilViewTable = document.getElementById('pd-deatilViewTable');\r\n this.closeButton = document.getElementById('pd-closeButton');\r\n \r\n this.pdService.detailedviewData.subscribe((data) => {\r\n if(data){\r\n if(data.userDetails.length>0 ){\r\n this.createTable(data.userDetails);\r\n }\r\n if(data.resourceDetails.length>0){\r\n // console.log(\"data.resourceDetails\",data.resourceDetails);\r\n \r\n this.createResourcesTable(data.resourceDetails);\r\n }\r\n }\r\n \r\n });\r\n \r\n this.deatilViewContainer.style.display = 'none';\r\n }\r\n createTable(userMetadata: any) {\r\n this.deatilViewContainer.style.display = 'block';\r\n while (this.deatilViewTable.firstChild) {\r\n this.deatilViewTable.removeChild(this.deatilViewTable.lastChild);\r\n }\r\n\r\n let labelArray = new Array();\r\n let cnt = 0;\r\n for (let i = 0; i < userMetadata.length; i++) {\r\n let label = document.createElement('label');\r\n label.appendChild(\r\n document.createTextNode(this.userMetadataHeadingArray[i])\r\n );\r\n if (label.textContent === 'undefined'|| label.textContent === undefined) {\r\n label.textContent = '';\r\n }\r\n labelArray.push(label);\r\n let data = document.createElement('label');\r\n data.appendChild(document.createTextNode(userMetadata[i]));\r\n if (data.textContent === 'undefined'|| data.textContent === undefined) {\r\n data.textContent = '';\r\n }\r\n labelArray.push(data);\r\n }\r\n let tbl = document.createElement('table');\r\n tbl.id = \"userDataTable\";\r\n tbl.className = \"table table-bordered\";\r\n let tblBody = document.createElement('tbody');\r\n for (let j = 0; j < userMetadata.length / 2; j++) {\r\n let row = document.createElement('tr');\r\n let cell: any;\r\n for (let i = 0; i < 4; i++) {\r\n if (i % 2 == 0) {\r\n cell = document.createElement('th');\r\n cell.style['font-weight'] = \"bold\"\r\n // cell.style.background =\"#e0e0e0\";\r\n } else {\r\n cell = document.createElement('td');\r\n }\r\n if (cnt < labelArray.length) {\r\n cell.appendChild(labelArray[cnt]);\r\n row.appendChild(cell);\r\n }\r\n cnt++;\r\n }\r\n tblBody.appendChild(row);\r\n tbl.appendChild(tblBody);\r\n this.deatilViewTable.appendChild(tbl);\r\n }\r\n }\r\n createResourcesTable(resoureMetadata: any) {\r\n let labelArray = new Array();\r\n let cnt = 0;\r\n for (let i = 0; i < this.resourseMetadataHeadingArray.length; i++) {\r\n let label = document.createElement('label');\r\n label.appendChild(\r\n document.createTextNode(this.resourseMetadataHeadingArray[i])\r\n );\r\n if (label.textContent === 'undefined'|| label.textContent === undefined) {\r\n label.textContent = '';\r\n }\r\n labelArray.push(label);\r\n }\r\n for (let i = 0; i < resoureMetadata.length; i++) {\r\n for (let j = 0; j < 5; j++) {\r\n let label = document.createElement('label');\r\n label.appendChild(document.createTextNode(resoureMetadata[i][j]));\r\n if (label.textContent === 'undefined'|| label.textContent === undefined) {\r\n label.textContent = '';\r\n }\r\n labelArray.push(label);\r\n }\r\n }\r\n let tbl = document.createElement('table');\r\n tbl.className = \"table table-bordered\";\r\n tbl.id = \"resoureMetadataTable\";\r\n let tblBody = document.createElement('tbody');\r\n for (let j = 0; j <= resoureMetadata.length; j++) {\r\n let row = document.createElement('tr');\r\n let cell: any;\r\n for (let i = 0; i < 5; i++) {\r\n if (j == 0) {\r\n cell = document.createElement('th');\r\n cell.style['font-weight'] = 'bold';\r\n // cell.style.background =\"#e0e0e0\";\r\n } else {\r\n cell = document.createElement('td');\r\n }\r\n\r\n if (cnt < labelArray.length) {\r\n cell.appendChild(labelArray[cnt]);\r\n row.appendChild(cell);\r\n }\r\n cnt++;\r\n }\r\n tblBody.appendChild(row);\r\n tbl.appendChild(tblBody);\r\n this.deatilViewTable.appendChild(tbl);\r\n }\r\n }\r\n \r\n onCloseBtnClick() {\r\n this.deatilViewContainer.style.display = 'none';\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { resourceUsage } from 'process';\r\nimport * as FileSaver from 'file-saver'\r\nimport * as XLSX from 'xlsx';\r\nimport { HtmlTagDefinition } from '@angular/compiler';\r\nconst EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\nconst EXCEL_EXTENSION = '.xlsx';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExceldataService {\r\n resourceTypes = new Array();\r\n myEndTime:any;\r\n constructor() { }\r\n //_____FOR EXCEL CONVERTOR\r\n public workbook:any;\r\n public tabName = [{\"name\":\"School\"},{\"name\":\"User Summary\"},{\"name\":\"Terminal Summary\"},{\"name\":\"Usage Details\"}]\r\n public exportAsExcelFile(json: any,excelFileName: string): void {\r\n let excelBuffer: any;\r\n let myobj: any = {Sheets:{}, SheetNames:[] }\r\n for (let i = 0; i < json.length; i++) {\r\n const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json[i]);\r\n myobj.Sheets[this.tabName[i].name] = worksheet\r\n myobj.SheetNames.push(this.tabName[i].name)\r\n }\r\n const workbook:XLSX.WorkBook = myobj; \r\n excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });\r\n this.saveAsExcelFile(excelBuffer, excelFileName);\r\n }\r\n\r\n private saveAsExcelFile(buffer: any, fileName: string): void {\r\n const data: Blob = new Blob([buffer], {\r\n type: EXCEL_TYPE\r\n });\r\n FileSaver.saveAs(data, fileName + EXCEL_EXTENSION);\r\n }\r\n //_____FOR EXCEL CONVERTOR END\r\n\r\n genarateResourseReqiuredData_Excel(data: any): any {\r\n let resouseID: any;\r\n let title: any;\r\n let subject: any;\r\n let grade: any;\r\n let chapter: any;\r\n let teachingpoint: any;\r\n let type: any;\r\n let resourceMetadataMatrix = new Array();\r\n let resourceMetadata = data.resourcesMetadata.resourceMetadata;\r\n \r\n if(resourceMetadata!= undefined && resourceMetadata.length>0) {\r\n for (var i = 0; i < resourceMetadata.length;i++){\r\n //----------//resouseID\r\n resouseID = resourceMetadata[i].resourceId;\r\n //----------//subject\r\n if (resourceMetadata[i].subject != undefined) {\r\n if (resourceMetadata[i].subject.title != undefined) {\r\n subject = resourceMetadata[i].subject.title;\r\n } else {\r\n subject = '';\r\n }\r\n } else {\r\n subject = '';\r\n }\r\n //----------//grade\r\n if (resourceMetadata[i].grade != undefined) {\r\n if (resourceMetadata[i].grade.title != undefined) {\r\n grade = resourceMetadata[i].grade.title;\r\n } else {\r\n grade = '';\r\n }\r\n } else {\r\n grade = '';\r\n }\r\n //----------//chapter\r\n if (resourceMetadata[i].chapter != undefined) {\r\n if (resourceMetadata[i].chapter.title != undefined) {\r\n chapter = resourceMetadata[i].chapter.title;\r\n } else {\r\n chapter = '';\r\n }\r\n } else {\r\n chapter = '';\r\n }\r\n \r\n //----------//teachingpoint\r\n if (resourceMetadata[i].teachingpoint != undefined) {\r\n if (resourceMetadata[i].teachingpoint.title != undefined) {\r\n teachingpoint = resourceMetadata[i].teachingpoint.title;\r\n } else {\r\n teachingpoint = '';\r\n }\r\n } else {\r\n teachingpoint = '';\r\n }\r\n //----------//type\r\n if (resourceMetadata[i].type != undefined) {\r\n type = this.getDisplaytypeValue(resourceMetadata[i].type);\r\n } else {\r\n type = '';\r\n }\r\n \r\n //----------//title\r\n if (resourceMetadata[i].title != undefined) {\r\n title = resourceMetadata[i].title;\r\n } else {\r\n title = '';\r\n }\r\n \r\n \r\n let resourceMetauserConsoleData = {\r\n resouseID:resouseID,\r\n subject:subject,\r\n grade:grade,\r\n chapter:chapter,\r\n teachingpoint:teachingpoint,\r\n type:type,\r\n title:title\r\n }\r\n resourceMetadataMatrix.push(resourceMetauserConsoleData);\r\n this.resourceTypes.push(type);\r\n }\r\n }\r\n this.resourceTypes = [...new Set(this.resourceTypes)]\r\n return resourceMetadataMatrix;\r\n }\r\n genarateUserReqiuredData_Excel(data: any): any {\r\n let userConsole = data.usersConsole.userConsole;\r\n let usersMetadata = data.usersMetadata.userMetadata;\r\n let schoolTerminal = data.schoolTerminals.schoolTerminal;\r\n \r\n \r\n let usersMetadataMatrix = new Array();\r\n let usermetadataMatrixUpdated = new Array();\r\n let schoolTerminalMatrix = new Array();\r\n let userConsoleMatrix = new Array();\r\n if(usersMetadata!= null && usersMetadata.length > 0){\r\n for (let i = 0; i < usersMetadata.length; i++) {\r\n let userId: any;\r\n let userName: any;\r\n let userSubjects: any;\r\n let listOfUser:any = {}\r\n if (usersMetadata[i].userId!=\"\") {\r\n userId = usersMetadata[i].userId;\r\n \r\n if (usersMetadata[i].fullName !== undefined) {\r\n userName = usersMetadata[i].fullName // get name of user w.r.t. ID\r\n } else {\r\n userName = '';\r\n }\r\n\r\n if (usersMetadata[i].userSubjects !== undefined) {\r\n userSubjects = usersMetadata[i].userSubjects // get name of user w.r.t. ID\r\n } else {\r\n userSubjects = '';\r\n }\r\n \r\n listOfUser = {\r\n userId:userId, \r\n userName:userName, \r\n userSubjects:userSubjects\r\n };\r\n usersMetadataMatrix.push(listOfUser); // array of all users\r\n }\r\n }\r\n }\r\n for (var i = 0; i < usersMetadataMatrix.length; i++) {\r\n usersMetadataMatrix.forEach(element => {\r\n if (usersMetadataMatrix[i].userName === element.userName) {\r\n usermetadataMatrixUpdated.push(usersMetadataMatrix[i]); //array of same name users\r\n usersMetadataMatrix.splice(i, 1); //delete the same name users from usermetadataMatrix\r\n }\r\n });\r\n }\r\n for (var i = 0; i < usermetadataMatrixUpdated.length; i++) {\r\n usermetadataMatrixUpdated[i].userName = usermetadataMatrixUpdated[i].userName + \" \" + i;\r\n usersMetadataMatrix.push(usermetadataMatrixUpdated[i]); //adding same name users in usermetadataMatrix with some random charators\r\n }\r\n if(schoolTerminal != null && schoolTerminal.length > 0){\r\n for (var i = 0; i < schoolTerminal.length; i++) {\r\n let schoolId:any;\r\n let terminalKey:any;\r\n let terminalType:any;\r\n let location:any;\r\n let schoolTerminalData:any = {};\r\n \r\n //----------//schoolId\r\n if (schoolTerminal[i].schoolId !== undefined) {\r\n schoolId = schoolTerminal[i].schoolId // get name of user w.r.t. ID\r\n } else {\r\n schoolId = '';\r\n }\r\n //----------//terminalKey\r\n if (schoolTerminal[i].terminalKey !== undefined) {\r\n terminalKey = schoolTerminal[i].terminalKey // get name of user w.r.t. ID\r\n } else {\r\n terminalKey = '';\r\n }\r\n //----------//terminalType\r\n if (schoolTerminal[i].terminalType !== undefined) {\r\n terminalType = schoolTerminal[i].terminalType // get name of user w.r.t. ID\r\n } else {\r\n terminalType = '';\r\n }\r\n \r\n //----------//location\r\n if (schoolTerminal[i].metadata !== undefined) {\r\n location = schoolTerminal[i].metadata // get name of user w.r.t. ID\r\n } else {\r\n location = '';\r\n }\r\n schoolTerminalData = {\r\n schoolId:schoolId,\r\n terminalKey:terminalKey,\r\n terminalType:terminalType,\r\n location:location\r\n };\r\n schoolTerminalMatrix.push(schoolTerminalData);\r\n \r\n }\r\n }\r\n if(userConsole !=null && userConsole.length > 0){\r\n for (let index = 0; index < userConsole.length; index++) {\r\n let userId: any;\r\n let startTime: any;\r\n let endTime: any;\r\n let duration: any;\r\n let selectedDate: any;\r\n let terminalIP: any;\r\n let userConsoleResources: any;\r\n let resourceMetadataIDS: any;\r\n let resourceMetauserConsoleData = new Array();\r\n let userName:any;\r\n let userSubjects:any;\r\n let terminalLocation: any;\r\n //----------//user iD\r\n if (userConsole[index].userId !== undefined) {\r\n userId = userConsole[index].userId // get name of user w.r.t. ID\r\n } else {\r\n userId = '';\r\n }\r\n //----------// startTime \r\n if (userConsole[index].startTime !== undefined) {\r\n startTime = userConsole[index].startTime // get name of user w.r.t. ID\r\n } else {\r\n startTime = '';\r\n }\r\n //----------// endTime \r\n if (userConsole[index].endTime !== undefined) {\r\n endTime = userConsole[index].endTime // get name of user w.r.t. ID\r\n this.myEndTime = endTime;\r\n } else {\r\n endTime = '';\r\n }\r\n //----------// Date \r\n if (userConsole[index].selectedDate !== undefined) {\r\n selectedDate = userConsole[index].selectedDate // get name of user w.r.t. ID\r\n } else {\r\n selectedDate = '';\r\n }\r\n \r\n //----------// Duration\r\n if (userConsole[index].duration !== undefined) {\r\n duration = userConsole[index].duration // get name of user w.r.t. ID\r\n } else {\r\n duration = '';\r\n }\r\n //----------// terminalIP\r\n if (userConsole[index].terminalIP !== undefined) {\r\n terminalIP = userConsole[index].terminalIP // get name of user w.r.t. ID\r\n } else {\r\n terminalIP = '';\r\n }\r\n \r\n //----------// userConsoleResources\r\n if (userConsole[index].userConsoleResources !== undefined) {\r\n userConsoleResources = userConsole[index].userConsoleResources // get name of user w.r.t. ID\r\n } else {\r\n userConsoleResources = null;\r\n }\r\n \r\n if(userConsoleResources != null){\r\n if (userConsoleResources.userConsoleResource !== undefined) {\r\n resourceMetauserConsoleData = userConsoleResources.userConsoleResource; // get name of user w.r.t. ID\r\n } else {\r\n resourceMetauserConsoleData = [];\r\n }\r\n }\r\n \r\n //----------// userName and userSubjects\r\n for (let i = 0; i < usersMetadataMatrix.length; i++) {\r\n if (userId === usersMetadataMatrix[i].userId) {\r\n userName = usersMetadataMatrix[i].userName;\r\n userSubjects = usersMetadataMatrix[i].userSubjects;\r\n }\r\n }\r\n //----------// terminalIP and terminalLocation\r\n \r\n for (let i = 0; i < schoolTerminalMatrix.length; i++) {\r\n if (terminalIP === schoolTerminalMatrix[i].terminalKey) {\r\n terminalLocation = schoolTerminalMatrix[i].location;\r\n }\r\n }\r\n let userData = {\r\n userId:userId,\r\n userName:userName,\r\n startTime:new Date(startTime),\r\n endTime:new Date(endTime),\r\n terminalIP:terminalIP,\r\n resourceMetauserConsoleData:resourceMetauserConsoleData,\r\n duration:duration,\r\n terminalLocation:terminalLocation,\r\n userSubjects:userSubjects\r\n }\r\n \r\n userConsoleMatrix.push(userData);\r\n \r\n }\r\n }\r\n return {usersMetadata:usersMetadataMatrix,schoolTerminalData:schoolTerminalMatrix,userConsoleData: userConsoleMatrix}\r\n }\r\n \r\n deatilData_Excel(userConsoleMatrix: any,resourceMetadataMatrix: any){\r\n // console.log(\"resourceMetadataMatrix\",resourceMetadataMatrix);\r\n \r\n let currentDate: any;\r\n let resourceMatrixForExcel = new Array();\r\n resourceMatrixForExcel = [];\r\n for (let i = 0; i <userConsoleMatrix.length; i++) {\r\n let userID:any;\r\n let startTime: any;\r\n let endTime: any;\r\n let duration: any;\r\n let terminalIP: any;\r\n let subject: any;\r\n let grade: any;\r\n let chapter: any;\r\n let resourceType: any;\r\n let resourceTitle: any;\r\n let teachingpoint: any;\r\n let location: any;\r\n let teacherName: any;\r\n let teacherSubject: any;\r\n \r\n let resourceMetadataIDs: any;\r\n let resourceArrayForExcel = new Array();\r\n \r\n\r\n userID = userConsoleMatrix[i].userId;\r\n //----------------- for subject and Name\r\n teacherSubject = userConsoleMatrix[i].userSubjects;\r\n teacherName = userConsoleMatrix[i].userName;\r\n //----------------- for start Time and EndTime \r\n if ((userConsoleMatrix[i].startTime != undefined && userConsoleMatrix[i].startTime != \"\") && (userConsoleMatrix[i].endTime != undefined&&userConsoleMatrix[i].endTime != \"\")) {\r\n startTime = userConsoleMatrix[i].startTime.toLocaleTimeString('en-US', { hour12: true });\r\n endTime = userConsoleMatrix[i].endTime.toLocaleTimeString('en-US', { hour12: true });\r\n currentDate = userConsoleMatrix[i].startTime.getDate() + '/' + (userConsoleMatrix[i].startTime.getMonth()+1) + '/' + userConsoleMatrix[i].startTime.getFullYear();\r\n }\r\n //----------------- for duration\r\n duration = Math.floor(userConsoleMatrix[i].duration);\r\n //----------------- for Terminal loaction and terminal IP\r\n location = userConsoleMatrix[i].terminalLocation;\r\n terminalIP = userConsoleMatrix[i].terminalIP;\r\n let roomDetail = location + ' ' + terminalIP;\r\n let locationName = location;\r\n let terminalIPAddress = terminalIP;\r\n resourceMetadataIDs = userConsoleMatrix[i].resourceMetauserConsoleData;\r\n \r\n if (resourceMetadataIDs.length == 0) {\r\n subject = '';\r\n grade = '';\r\n chapter = '';\r\n teachingpoint = '';\r\n resourceTitle = '';\r\n resourceType = '';\r\n resourceArrayForExcel = [teacherName,teacherSubject,currentDate,startTime,endTime,duration,locationName, terminalIPAddress,subject,grade,chapter,teachingpoint,resourceTitle,resourceType,userID];\r\n resourceMatrixForExcel.push(resourceArrayForExcel);\r\n }else{\r\n for (let k = 0; k < resourceMetadataIDs.length; k++) {\r\n for (let i = 0; i < resourceMetadataMatrix.length; i++) {\r\n // resouseID:resouseID,\r\n // subject:subject,\r\n // grade:grade,\r\n // chapter:chapter,\r\n // teachingpoint:teachingpoint,\r\n // type:type,\r\n // title:title\r\n if (resourceMetadataIDs[k] === resourceMetadataMatrix[i].resouseID) {\r\n\r\n subject = resourceMetadataMatrix[i].subject;\r\n grade = resourceMetadataMatrix[i].grade;\r\n chapter = resourceMetadataMatrix[i].chapter;\r\n teachingpoint = resourceMetadataMatrix[i].teachingpoint;\r\n resourceTitle = resourceMetadataMatrix[i].title;\r\n resourceType = this.getDisplaytypeValue(resourceMetadataMatrix[i].type);\r\n // FOR EXCEL\r\n resourceArrayForExcel = [teacherName,teacherSubject,currentDate,startTime,endTime,duration,locationName, terminalIPAddress,subject,grade,chapter,teachingpoint,resourceTitle,resourceType,userID];\r\n resourceMatrixForExcel.push(resourceArrayForExcel);\r\n teacherName = '';\r\n teacherSubject= '';\r\n currentDate= '';\r\n startTime= '';\r\n endTime= '';\r\n locationName= ''; \r\n terminalIPAddress= '';\r\n duration = '';\r\n \r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n return resourceMatrixForExcel;\r\n }\r\n deatilUsage_Excel(resourceMatrixForExcel){\r\n let userList=[];\r\n // console.log(\"resourceMatrixForExcel>>>>>>>>>>>>>>>>>>>\",resourceMatrixForExcel);\r\n \r\n if(resourceMatrixForExcel.length > 0){\r\n for(let i=0;i<resourceMatrixForExcel.length;i++){\r\n let data = {\r\n // Sr_No: i+1,\r\n Name:resourceMatrixForExcel[i][0],\r\n Subjects:resourceMatrixForExcel[i][1],\r\n Date:\tresourceMatrixForExcel[i][2],\r\n startTime:resourceMatrixForExcel[i][3],\r\n endTime:resourceMatrixForExcel[i][4],\r\n \"duration(mins)\":resourceMatrixForExcel[i][5],\r\n location:resourceMatrixForExcel[i][6],\r\n IP:resourceMatrixForExcel[i][7],\r\n subjectTitle:resourceMatrixForExcel[i][8],\r\n gradeTitle:resourceMatrixForExcel[i][9],\r\n Chapter:resourceMatrixForExcel[i][10],\r\n tpTitle:resourceMatrixForExcel[i][11],\r\n resourceTitle:resourceMatrixForExcel[i][12],\r\n resourceType:resourceMatrixForExcel[i][13],\r\n }\r\n userList.push(data);\r\n }\r\n \r\n } \r\n // console.log(\"userList\",userList);\r\n return userList; \r\n }\r\n userSummary_Excel(data,resourceMatrixForExcel){\r\n // console.log(\"resourceMatrixForExcel\",resourceMatrixForExcel)\r\n let userMetadataList = data.usersMetadata.userMetadata;\r\n let resourcelist = new Array();\r\n let resourceTypeList = new Array();\r\n let userObjectList= new Array();\r\n let classRooms= new Array();\r\n let datesAccess= new Array();\r\n let grades= new Array();\r\n let subjectTought= new Array();\r\n // let unique_resourceTypeList = []; \r\n let duration = 0;\r\n for (let i = 0; i < userMetadataList.length; i++) {\r\n resourcelist = [];\r\n resourceTypeList = [];\r\n classRooms = []; \r\n datesAccess = [];\r\n grades = [];\r\n subjectTought = [];\r\n \r\n duration = 0;\r\n // console.log(\"userMetadataList[i]\",userMetadataList);\r\n // console.log(\"resourceMatrixForExcel[i]\",[...new Set(resourceMatrixForExcel)]);\r\n for (let j = 0; j < resourceMatrixForExcel.length; j++){\r\n \r\n if(userMetadataList[i].userId === resourceMatrixForExcel[j][14]){\r\n if(resourceMatrixForExcel[j][12] != ''){\r\n resourcelist.push(resourceMatrixForExcel[j][12]);\r\n }\r\n \r\n if(resourceMatrixForExcel[j][13] != ''){\r\n resourceTypeList.push(resourceMatrixForExcel[j][13]);\r\n }\r\n if(resourceMatrixForExcel[j][5] != ''){\r\n duration = duration + resourceMatrixForExcel[j][5];\r\n }\r\n \r\n \r\n classRooms.push(resourceMatrixForExcel[j][6]);\r\n datesAccess.push(resourceMatrixForExcel[j][2]);\r\n grades.push(resourceMatrixForExcel[j][9]);\r\n subjectTought.push(resourceMatrixForExcel[j][8]);\r\n \r\n \r\n }\r\n }\r\n \r\n let ClassRooms:any; \r\n let DatesAccess:any; \r\n let Grades:any; \r\n let SubjectTought:any; \r\n let dayAccess:any; \r\n \r\n if(classRooms.length>0){\r\n ClassRooms = [...new Set(classRooms)][0];\r\n }else{\r\n ClassRooms = '';\r\n }\r\n if(datesAccess.length>0){\r\n dayAccess = [...new Set(datesAccess)].length;\r\n }else{\r\n dayAccess = '';\r\n }\r\n if(datesAccess.length>0){\r\n DatesAccess = [...new Set(datesAccess)][0];\r\n }else{\r\n DatesAccess = '';\r\n }\r\n if(grades.length>0){\r\n Grades = [...new Set(grades)][0];\r\n }else{\r\n Grades = ''\r\n }\r\n \r\n if(subjectTought.length>0){\r\n SubjectTought = [...new Set(subjectTought)][0];\r\n }else{\r\n SubjectTought = '';\r\n }\r\n // if(resourceTypeList.length>0){\r\n // unique_resourceTypeList = [...new Set(resourceTypeList)];\r\n \r\n // }\r\n // console.log(\"this.resourceTypes\",this.resourceTypes)\r\n let user = {\r\n Name:userMetadataList[i].fullName,\r\n Subjects:userMetadataList[i].userSubjects,\r\n duration:duration,\r\n ClassRooms:ClassRooms,\r\n DatesAccess:DatesAccess,\r\n DayAccess:dayAccess,\r\n Grades:Grades,\r\n SubjectTought:SubjectTought,\r\n AseestUsed:resourcelist,\r\n AssetType:resourceTypeList\r\n }\r\n userObjectList.push(user);\r\n \r\n }\r\n // console.log(\"userObjectList\",userObjectList)\r\n let userSummaryList = new Array();\r\n for(let i = 0; i < userObjectList.length; i++){\r\n const Assetcounts = [];\r\n //find count of present asset type\r\n let presentAsset =userObjectList[i].AssetType;\r\n presentAsset = [...new Set(presentAsset)];\r\n // console.log(\"presentAsset\",presentAsset)\r\n //find count of present asset count\r\n const sampleArray =userObjectList[i].AssetType;\r\n sampleArray.forEach(function (x) { Assetcounts[x] = (Assetcounts[x] || 0) + 1; });\r\n // find missing assets\r\n let missingAssets = this.resourceTypes.filter(n => !presentAsset.includes(n));\r\n // adding missing asset with count 0 in list\r\n missingAssets.forEach((element) => {\r\n Assetcounts[element] = 0;\r\n });\r\n // console.log(Assetcounts);\r\n let asset_media = {\r\n // Sr_No: i+1,\r\n Name:userObjectList[i].Name,\r\n Subjects_taught:userObjectList[i].Subjects,\r\n \" Duration(mins)\":userObjectList[i].duration,\r\n ClassRooms:userObjectList[i].ClassRooms,\r\n DaysAccsessed:userObjectList[i].DayAccess,\r\n DatesAccess:userObjectList[i].DatesAccess,\r\n Grades:userObjectList[i].Grades,\r\n Subjects:userObjectList[i].SubjectTought\r\n }\r\n const returnedTarget = Object.assign(asset_media, Assetcounts);\r\n userSummaryList.push(returnedTarget);\r\n\r\n }\r\n \r\n // console.log(\"userSummaryList\",userSummaryList);\r\n \r\n return userSummaryList;\r\n }\r\n\r\n // To GET DISPLAY TYPE\r\n getDisplaytypeValue(key: any) {\r\n let assetTypeConfig = [\r\n {\r\n type: \"asset_media\",\r\n display: \"Media\"\r\n },\r\n {\r\n type: \"asset_print\",\r\n display: \"Print\"\r\n },\r\n {\r\n type: \"quiz\",\r\n display: \"Quiz\"\r\n },\r\n {\r\n type: \"question\",\r\n display: \"Question\"\r\n },\r\n {\r\n type: \"chapter\",\r\n display: \"Chapter\"\r\n },\r\n {\r\n type: \"tp\",\r\n display: \"Topic\"\r\n },\r\n {\r\n type: \"whiteboard\",\r\n display: \"Whiteboard\"\r\n },\r\n {\r\n type: \"widget\",\r\n display: \"Widget\"\r\n },\r\n {\r\n type: \"casset_media\",\r\n display: \"cMedia\"\r\n },\r\n {\r\n type: \"casset_print\",\r\n display: \"cPrint\"\r\n },\r\n {\r\n type: \"cquiz\",\r\n display: \"cQuiz\"\r\n },\r\n {\r\n type: \"cquestion\",\r\n display: \"cQuestion\"\r\n },\r\n {\r\n type: \"image\",\r\n display: \"Image\"\r\n },\r\n {\r\n type: \"video\",\r\n display: \"Video\"\r\n },\r\n \r\n ];\r\n let displayValue = key;\r\n assetTypeConfig.forEach((value) => {\r\n if (value.type === key) {\r\n displayValue = value.display;\r\n }\r\n });\r\n return displayValue;\r\n \r\n }\r\n}\r\n","import { Component, OnInit, Output, ViewChild, Input, EventEmitter } from '@angular/core';\r\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\r\nimport { ExceldataService } from '../exceldata.service';\r\nimport { DatepickerOptions } from 'ng2-datepicker';\r\n@Component({\r\n selector: 'lib-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss']\r\n})\r\nexport class HeaderComponent implements OnInit {\r\n @Input() set data(res: any) {\r\n if(res!== null){\r\n this.loadData(res);\r\n } \r\n }\r\n @Output() userSelectedDate = new EventEmitter();\r\n\r\n myCalendar: any;\r\n calenderDate: any;\r\n currentDate: any;\r\n calenderCurrentDate: any;\r\n todayDate: any;\r\n refreshTimer = 0;\r\n refreshInterval: any;\r\n calenderEvent: any;\r\n message: any;\r\n intervalId: any;\r\n mydata :any;\r\n dataList: any;\r\n //for datepicker\r\n title = 'datepicker';\r\n date: Date = new Date();\r\n options: DatepickerOptions = {\r\n inputClass: 'input',\r\n calendarClass: 'datepicker-default',\r\n scrollBarColor: '#010001',\r\n format: 'dd/LL/yyyy',\r\n maxDate: new Date()\r\n };\r\n \r\n constructor(\r\n private excelService: ExceldataService,\r\n private pdService:PrincipalDashboardLibV2Service\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.getDefaultDate();\r\n this.startTimer();\r\n }\r\n getDefaultDate() {\r\n let date = new Date();\r\n this.getDateFormat(date);\r\n this.todayDate = this.calenderCurrentDate;\r\n }\r\n dateSelected(e: any){\r\n this.getDateFormat(e);\r\n this.mydata = null;\r\n this.refreshChart();\r\n }\r\n getDateFormat(date:any){\r\n let day = date.getDate();\r\n let month = date.getMonth() + 1;\r\n let year = date.getFullYear();\r\n let m;\r\n let d;\r\n if (month < 10) {\r\n m = \"0\" + month;\r\n } else {\r\n m = month;\r\n }\r\n if (day < 10) {\r\n d = \"0\" + day;\r\n } else {\r\n d = day;\r\n }\r\n let today = year + \"-\" + m + \"-\" + d;\r\n this.currentDate = today;\r\n this.calenderCurrentDate = today.split(\"-\").reverse().join(\"-\");\r\n }\r\n // selectDate(e: any) {\r\n // this.calenderEvent = e;\r\n // let today = e.target.value;\r\n // // console.log(\"e.target.value\", e.target.value);\r\n // today = today.split(\"-\").reverse().join(\"-\");\r\n // this.calenderCurrentDate = today;\r\n // this.mydata = null;\r\n // this.refreshChart();\r\n // // this.userSelectedDate.emit(this.calenderCurrentDate);\r\n // ;\r\n // console.log(\" IN --> 5\");\r\n // }\r\n refreshChart() {\r\n this.stopTimer();\r\n this.refreshTimer = 0;\r\n if(this.calenderCurrentDate === this.todayDate){\r\n this.countDown();\r\n }\r\n this.userSelectedDate.emit(this.calenderCurrentDate);\r\n }\r\n\r\n startTimer() {\r\n this.countDown();\r\n }\r\n stopTimer() {\r\n this.clearTimer();\r\n this.message = ``;\r\n }\r\n clearTimer() {\r\n this.refreshTimer = 0;\r\n window.clearInterval(this.intervalId);\r\n }\r\n countDown() {\r\n console.log(\"countDown\")\r\n this.clearTimer();\r\n this.intervalId = window.setInterval(() => {\r\n this.refreshTimer -= 1;\r\n if (this.refreshTimer === 0) {\r\n this.refreshChart();\r\n this.message = '';\r\n } else {\r\n if (this.refreshTimer < 0) {\r\n this.refreshTimer = 300;\r\n } // reset\r\n this.message = `${this.refreshTimer}`;\r\n }\r\n }, 1000);\r\n }\r\n timeConvert(n: any) {\r\n var num = n;\r\n var hours = num / 60;\r\n var rhours = Math.floor(hours);\r\n var minutes = (hours - rhours) * 60;\r\n var rminutes = Math.round(minutes);\r\n return rhours + ':' + rminutes;\r\n }\r\n // currentdataList: any;\r\n // currentResoursedataList:any;\r\n loadData(response: any){\r\n if(response){\r\n this.mydata = JSON.parse(response);\r\n if (this.mydata) {\r\n //get current data list\r\n let genarateUserReqiuredData = this.excelService.genarateUserReqiuredData_Excel(this.mydata);\r\n let currentdataList =genarateUserReqiuredData.userConsoleData;\r\n // resoureMetadata list\r\n let currentResoursedataList = this.excelService.genarateResourseReqiuredData_Excel(this.mydata);\r\n \r\n let deatilData = this.excelService.deatilData_Excel(currentdataList,currentResoursedataList);\r\n let userDetails_data = this.excelService.deatilUsage_Excel(deatilData);\r\n let UserSummary = this.excelService.userSummary_Excel(this.mydata,deatilData);\r\n \r\n let schoolDetails = this.mydata.schoolMetadata.school;\r\n let userDetails = userDetails_data;\r\n let terminalDetails = this.mydata.schoolTerminals.schoolTerminal;\r\n // console.log(\"schoolDetails\",schoolDetails);\r\n // console.log(\"UserSummary\",UserSummary);\r\n // console.log(\"terminalDetails\",terminalDetails);\r\n // console.log(\"userDetails\",userDetails);\r\n \r\n this.dataList = [\r\n [schoolDetails],\r\n UserSummary,\r\n terminalDetails,\r\n userDetails\r\n ]\r\n }\r\n }\r\n \r\n }\r\n exportReport(){\r\n if(this.mydata){\r\n this.excelService.exportAsExcelFile(this.dataList, 'UsageReport-'+ this.calenderCurrentDate);\r\n }\r\n \r\n }\r\n ngOnDestroy() {\r\n this.clearTimer();\r\n }\r\n \r\n}\r\n","import { Component, OnInit ,Input} from '@angular/core';\r\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\r\nimport { ChartType } from 'angular-google-charts';\r\n\r\n@Component({\r\n selector: 'lib-tableview',\r\n templateUrl: './tableview.component.html',\r\n styleUrls: ['./tableview.component.scss'],\r\n})\r\n\r\nexport class TableviewComponent implements OnInit {\r\n @Input() set data(res: any) {\r\n if(res!== null){\r\n this.loadTable(res);\r\n }\r\n }\r\n constructor(\r\n private pdService: PrincipalDashboardLibV2Service\r\n ) {}\r\n resourseMetadata: any;\r\n tableRow: any;\r\n userMetadata: any;\r\n tableViewDiv: any;\r\n tblBody: any;\r\n myXmlData: any;\r\n myChartType = ChartType.Table;\r\n currentdataList:any;\r\n currentResoursedataList:any;\r\n tableViewData:any;\r\n alluserList:any;\r\n isUserWise = true;\r\n \r\n ngOnInit(): void {\r\n \r\n }\r\n loadTable(response: any){\r\n // let parse = new DOMParser();\r\n // this.myXmlData = parse.parseFromString(response, 'application/xml');\r\n if(response){\r\n this.myXmlData = JSON.parse(response);\r\n if(this.myXmlData){\r\n // get current data list\r\n let genarateUserReqiuredData = this.pdService.genarateUserReqiuredData(this.myXmlData);\r\n this.currentdataList =genarateUserReqiuredData.userConsoleData;\r\n // get all user list \r\n let fetchAlluserList = this.pdService.allUserChartData()\r\n this.alluserList = fetchAlluserList.fordurationTable;\r\n // resoureMetadata list\r\n this.currentResoursedataList = this.pdService.genarateResourseReqiuredData(this.myXmlData);\r\n \r\n }\r\n }\r\n \r\n \r\n this.tableViewDiv = document.getElementById('tableViewDiv');\r\n this.tableRow = document.getElementById('tableRow');\r\n this.tblBody = document.getElementById('tblBody');\r\n this.tableViewDiv.style.display = 'none';\r\n \r\n this.pdService.chartType.subscribe((data) => {\r\n if (data) {\r\n this.updateChartType(data);\r\n }\r\n });\r\n this.pdService.isUserWise_data.subscribe((data) => {\r\n this.updateDataType(data);\r\n });\r\n this.pdService.isAllUsers.subscribe((data) => {\r\n if(data){\r\n this.showAllUser();\r\n }else{\r\n this.showCurrentDataUser();\r\n }\r\n \r\n });\r\n }\r\n showCurrentDataUser() {\r\n this.tableViewData = this.pdService.dataForTableView(this.currentdataList,this.currentResoursedataList);\r\n if(this.tableViewData){\r\n this.ueserWiseTableView(this.tableViewData);\r\n }\r\n }\r\n showAllUser() {\r\n this.tableViewData = this.pdService.dataForTableView(this.alluserList ,this.currentResoursedataList);\r\n if(this.tableViewData){\r\n this.ueserWiseTableView(this.tableViewData);\r\n }\r\n }\r\n updateDataType(dataType: any) {\r\n this.isUserWise = dataType;\r\n }\r\n updateChartType(dataType: any) {\r\n this.myChartType = dataType;\r\n if (this.myChartType == ChartType.Timeline) {\r\n this.tableViewDiv.style.display = 'none';\r\n } else {\r\n this.tableViewDiv.style.display = 'block';\r\n }\r\n }\r\n \r\n ueserWiseTableView(resoureMetadata: any) {\r\n // this.deleterow(\"tableRow\");\r\n document.getElementById(\"tblBody\").innerHTML = \"\";\r\n let labelArray = new Array();\r\n let cnt = 0;\r\n for (let i = 0; i < resoureMetadata.length; i++) {\r\n for (let j = 0; j < 12; j++) {\r\n let label = document.createElement('label');\r\n label.appendChild(document.createTextNode(resoureMetadata[i][j]));\r\n if (label.textContent === 'undefined' || label.textContent===undefined) {\r\n label.textContent = '';\r\n }\r\n labelArray.push(label);\r\n // console.log(\"label\",label);\r\n }\r\n }\r\n for (let j = 0; j <= resoureMetadata.length; j++) {\r\n let row = document.createElement('tr');\r\n \r\n let cell: any;\r\n for (let i = 0; i < 12; i++) {\r\n cell = document.createElement('td');\r\n \r\n if (cnt < labelArray.length) {\r\n cell.appendChild(labelArray[cnt]);\r\n row.appendChild(cell);\r\n }\r\n cnt++;\r\n }\r\n this.tblBody.appendChild(row);\r\n // this.tableRow.appendChild(this.tblBody);\r\n }\r\n \r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { PrincipalDashboardLibV2Component } from './principal-dashboard-lib-v2.component';\r\n\r\nimport { ChartheaderComponent } from './chartheader/chartheader.component';\r\nimport { ChartviewComponent } from './chartview/chartview.component';\r\nimport { DetailedviewComponent } from './detailedview/detailedview.component';\r\nimport { HeaderComponent } from './header/header.component';\r\nimport { TableviewComponent } from './tableview/tableview.component';\r\nimport { GoogleChartsModule } from 'angular-google-charts';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DatepickerModule } from 'ng2-datepicker';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ChartheaderComponent,\r\n ChartviewComponent,\r\n DetailedviewComponent,\r\n HeaderComponent,\r\n TableviewComponent,\r\n PrincipalDashboardLibV2Component\r\n ],\r\n imports: [\r\n CommonModule,\r\n GoogleChartsModule,\r\n DatepickerModule\r\n ],\r\n exports: [\r\n PrincipalDashboardLibV2Component\r\n ]\r\n})\r\nexport class PrincipalDashboardLibV2Module { }\r\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","userId","userName","userSubjects","listOfUser","fullName","forEach","element","splice","usersMetaData","schoolTerminalData","schoolId","terminalKey","terminalType","location","metadata","JSON","parse","console","log","index","startTime","endTime","duration","terminalIP","userConsoleResources","terminalLocation","myEndTime","selectedDate","userConsoleResource","i_2","i_3","userData","Date","userConsoleData","userWiseChartData","dataTableforChart","classRoomWiseChartData","allUserChartData","AlluserDetailsForTableChart","inActiveuserName","myID","AlluserDetails","myChartRowuserConsoleData","myTableRowuserConsoleData","forChartData","fordurationTable","allRoomsData","allRoomsDetails","myChartRowData","inActiveClassRoom","dataForTableView","currentDate","resourceMatrixForTableChart","resourceMetadataIDs","teacherName","teacherSubject","resourceArrayForTableChart","toLocaleTimeString","hour12","getDate","getMonth","getFullYear","Math","floor","roomDetail","k","i_4","dataForDetailedView","rowLabel","detailedView_UserDataMatrix","detailedView_ResourceDataMatrix","key","displayValue","display","value","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","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","setTimeout","AllrowHeight","calulateTotalDuration","detailViewMatrix","id_durationArray","id_durationMatrix","name","parseInt","obj","Set","item","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","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","userSummary_Excel","userMetadataList","resourcelist","resourceTypeList","userObjectList","classRooms","datesAccess","grades","subjectTought","ClassRooms","DatesAccess","Grades","SubjectTought","dayAccess","user","DayAccess","AseestUsed","AssetType","userSummaryList","Assetcounts","presentAsset","x","this_1","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';\r\nimport { Subject, BehaviorSubject, ReplaySubject } from 'rxjs';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PrincipalDashboardLibV2Service {\r\npublic resoureMetaData:any;\r\npublic usersMetaData:any;\r\npublic schoolTerminalData:any;\r\npublic userConsoleData:any;\r\n\r\npublic isResoureMetaDataReady = new ReplaySubject();\r\npublic isResoureMetaDataReady$ = this.isResoureMetaDataReady.asObservable();\r\n\r\npublic isUserReqiuredDataReady = new ReplaySubject();\r\npublic isUserReqiuredDataReady$ = this.isUserReqiuredDataReady.asObservable();\r\n\r\n public mychartType: any = '';\r\n public dataType: any = '';\r\n public userAllData: any = '';\r\n public userMetadata: any = {userDetails:[],resourceDetails:[]};\r\n public resoureMetadata = new Array();\r\n public userDetailObject: any = {};\r\n public userlist:any = false;\r\n public myEndTime :any;\r\n \r\n //for change chart Type\r\n public chartType = new BehaviorSubject(this.mychartType);\r\n public chartType$ = this.chartType.asObservable();\r\n //for change userWise To classRoom wise or vice versa\r\n public isUserWise_data = new BehaviorSubject(true);\r\n public isUserWise_data$ = this.isUserWise_data.asObservable();\r\n // for all user and current user information\r\n public isAllUsers = new BehaviorSubject(this.userlist);\r\n public isAllUsers$ = this.isAllUsers.asObservable();\r\n //for get details of selected user\r\n public detailedviewData = new BehaviorSubject(this.userMetadata);\r\n public detailedviewData$ = this.detailedviewData.asObservable();\r\n\r\n\r\n constructor() { }\r\n \r\n genarateResourseReqiuredData(data: any): any {\r\n this.isResoureMetaDataReady.next(false);\r\n let resourceMetadataMatrix = new Array();\r\n \r\n if(data && data !== null){\r\n let resouseID: any;\r\n let title: any;\r\n let subject: any;\r\n let grade: any;\r\n let chapter: any;\r\n let teachingpoint: any;\r\n let type: any;\r\n let resourceMetadata = data.resourcesMetadata.resourceMetadata;\r\n \r\n if(resourceMetadata!= undefined && resourceMetadata.length>0) {\r\n for (var i = 0; i < resourceMetadata.length;i++){\r\n //----------//resouseID\r\n resouseID = resourceMetadata[i].resourceId;\r\n //----------//subject\r\n if (resourceMetadata[i].subject != undefined) {\r\n if (resourceMetadata[i].subject.title != undefined) {\r\n subject = resourceMetadata[i].subject.title;\r\n } else {\r\n subject = '';\r\n }\r\n } else {\r\n subject = '';\r\n }\r\n //----------//grade\r\n if (resourceMetadata[i].grade != undefined) {\r\n if (resourceMetadata[i].grade.title != undefined) {\r\n grade = resourceMetadata[i].grade.title;\r\n } else {\r\n grade = '';\r\n }\r\n } else {\r\n grade = '';\r\n }\r\n //----------//chapter\r\n if (resourceMetadata[i].chapter != undefined) {\r\n if (resourceMetadata[i].chapter.title != undefined) {\r\n chapter = resourceMetadata[i].chapter.title;\r\n } else {\r\n chapter = '';\r\n }\r\n } else {\r\n chapter = '';\r\n }\r\n \r\n //----------//teachingpoint\r\n if (resourceMetadata[i].teachingpoint != undefined) {\r\n if (resourceMetadata[i].teachingpoint.title != undefined) {\r\n teachingpoint = resourceMetadata[i].teachingpoint.title;\r\n } else {\r\n teachingpoint = '';\r\n }\r\n } else {\r\n teachingpoint = '';\r\n }\r\n //----------//type\r\n if (resourceMetadata[i].type != undefined) {\r\n type = this.getDisplaytypeValue(resourceMetadata[i].type);\r\n } else {\r\n type = '';\r\n }\r\n \r\n //----------//title\r\n if (resourceMetadata[i].title != undefined) {\r\n title = resourceMetadata[i].title;\r\n } else {\r\n title = '';\r\n }\r\n let resourceMetauserConsoleData = {\r\n resouseID:resouseID,\r\n subject:subject,\r\n grade:grade,\r\n chapter:chapter,\r\n teachingpoint:teachingpoint,\r\n type:type,\r\n title:title\r\n }\r\n resourceMetadataMatrix.push(resourceMetauserConsoleData);\r\n this.resoureMetaData = resourceMetadataMatrix;\r\n this.isResoureMetaDataReady.next(true);\r\n }\r\n }\r\n }\r\n // this.resoureMetaData = resourceMetadataMatrix;\r\n return resourceMetadataMatrix;\r\n }\r\n genarateUserReqiuredData(data: any): any {\r\n this.isUserReqiuredDataReady.next(false);\r\n let usersMetadataMatrix = new Array();\r\n let usermetadataMatrixUpdated = new Array();\r\n let schoolTerminalMatrix = new Array();\r\n let userConsoleMatrix = new Array();\r\n if(data && data !== null){\r\n let userConsole = data.usersConsole.userConsole;\r\n let usersMetadata = data.usersMetadata.userMetadata;\r\n let schoolTerminal = data.schoolTerminals.schoolTerminal;\r\n \r\n if(usersMetadata!= null && usersMetadata.length > 0){\r\n for (let i = 0; i < usersMetadata.length; i++) {\r\n let userId: any;\r\n let userName: any;\r\n let userSubjects: any;\r\n let listOfUser:any = {}\r\n if (usersMetadata[i].userId!=\"\") {\r\n userId = usersMetadata[i].userId;\r\n \r\n if (usersMetadata[i].fullName !== undefined) {\r\n userName = usersMetadata[i].fullName // get name of user w.r.t. ID\r\n } else {\r\n userName = '';\r\n }\r\n \r\n if (usersMetadata[i].userSubjects !== undefined) {\r\n userSubjects = usersMetadata[i].userSubjects // get name of user w.r.t. ID\r\n } else {\r\n userSubjects = '';\r\n }\r\n \r\n listOfUser = {\r\n userId:userId, \r\n userName:userName, \r\n userSubjects:userSubjects\r\n };\r\n usersMetadataMatrix.push(listOfUser); // array of all users\r\n }\r\n }\r\n }\r\n for (var i = 0; i < usersMetadataMatrix.length; i++) {\r\n usersMetadataMatrix.forEach(element => {\r\n if (usersMetadataMatrix[i].userName === element.userName) {\r\n usermetadataMatrixUpdated.push(usersMetadataMatrix[i]); //array of same name users\r\n usersMetadataMatrix.splice(i, 1); //delete the same name users from usermetadataMatrix\r\n }\r\n });\r\n }\r\n for (var i = 0; i < usermetadataMatrixUpdated.length; i++) {\r\n // const randomNumber = document.createElement('span');\r\n // randomNumber.innerHTML = i.toString();\r\n usermetadataMatrixUpdated[i].userName = usermetadataMatrixUpdated[i].userName + \" \" + i;\r\n usersMetadataMatrix.push(usermetadataMatrixUpdated[i]); //adding same name users in usermetadataMatrix with some random charators\r\n this.usersMetaData = usersMetadataMatrix;\r\n }\r\n if(schoolTerminal != null && schoolTerminal.length > 0){\r\n for (var i = 0; i < schoolTerminal.length; i++) {\r\n let schoolId:any;\r\n let terminalKey:any;\r\n let terminalType:any;\r\n let location:any;\r\n let schoolTerminalData:any = {};\r\n \r\n //----------//schoolId\r\n if (schoolTerminal[i].schoolId !== undefined) {\r\n schoolId = schoolTerminal[i].schoolId // get name of user w.r.t. ID\r\n } else {\r\n schoolId = '';\r\n }\r\n //----------//terminalKey\r\n if (schoolTerminal[i].terminalKey !== undefined) {\r\n terminalKey = schoolTerminal[i].terminalKey // get name of user w.r.t. ID\r\n } else {\r\n terminalKey = '';\r\n }\r\n //----------//terminalType\r\n if (schoolTerminal[i].terminalType !== undefined) {\r\n terminalType = schoolTerminal[i].terminalType // get name of user w.r.t. ID\r\n } else {\r\n terminalType = '';\r\n }\r\n \r\n //----------//location\r\n if (schoolTerminal[i].metadata !== undefined) {\r\n let metadataJSON = JSON.parse(schoolTerminal[i].metadata);\r\n \r\n location = metadataJSON.location // get name of user w.r.t. ID\r\n console.log(\"metadataJSON\",location);\r\n } else {\r\n location = '';\r\n }\r\n schoolTerminalData = {\r\n schoolId:schoolId,\r\n terminalKey:terminalKey,\r\n terminalType:terminalType,\r\n location:location\r\n };\r\n \r\n schoolTerminalMatrix.push(schoolTerminalData);\r\n this.schoolTerminalData = schoolTerminalMatrix;\r\n }\r\n }\r\n if(userConsole !=null && userConsole.length > 0){\r\n for (let index = 0; index < userConsole.length; index++) {\r\n let userId: any;\r\n let startTime: any;\r\n let endTime: any;\r\n let duration: any;\r\n let selectedDate: any;\r\n let terminalIP: any;\r\n let userConsoleResources: any;\r\n let resourceMetadataIDS: any;\r\n let resourceMetauserConsoleData = new Array();\r\n let userName:any;\r\n let userSubjects:any;\r\n let terminalLocation: any;\r\n //----------//user iD\r\n if (userConsole[index].userId !== undefined) {\r\n userId = userConsole[index].userId // get name of user w.r.t. ID\r\n } else {\r\n userId = '';\r\n }\r\n //----------// startTime \r\n if (userConsole[index].startTime !== undefined) {\r\n startTime = userConsole[index].startTime // get name of user w.r.t. ID\r\n } else {\r\n startTime = '';\r\n }\r\n //----------// endTime \r\n if (userConsole[index].endTime !== undefined) {\r\n endTime = userConsole[index].endTime // get name of user w.r.t. ID\r\n this.myEndTime = endTime;\r\n } else {\r\n endTime = '';\r\n }\r\n //----------// Date \r\n if (userConsole[index].selectedDate !== undefined) {\r\n selectedDate = userConsole[index].selectedDate // get name of user w.r.t. ID\r\n } else {\r\n selectedDate = '';\r\n }\r\n \r\n //----------// Duration\r\n if (userConsole[index].duration !== undefined) {\r\n duration = userConsole[index].duration // get name of user w.r.t. ID\r\n } else {\r\n duration = '';\r\n }\r\n //----------// terminalIP\r\n if (userConsole[index].terminalIP !== undefined) {\r\n terminalIP = userConsole[index].terminalIP // get name of user w.r.t. ID\r\n } else {\r\n terminalIP = '';\r\n }\r\n \r\n //----------// userConsoleResources\r\n if (userConsole[index].userConsoleResources !== undefined) {\r\n userConsoleResources = userConsole[index].userConsoleResources // get name of user w.r.t. ID\r\n } else {\r\n userConsoleResources = null;\r\n }\r\n \r\n if(userConsoleResources != null){\r\n if (userConsoleResources.userConsoleResource !== undefined) {\r\n resourceMetauserConsoleData = userConsoleResources.userConsoleResource; // get name of user w.r.t. ID\r\n } else {\r\n resourceMetauserConsoleData = [];\r\n }\r\n }\r\n \r\n //----------// userName and userSubjects\r\n for (let i = 0; i < usersMetadataMatrix.length; i++) {\r\n if (userId === usersMetadataMatrix[i].userId) {\r\n userName = usersMetadataMatrix[i].userName;\r\n userSubjects = usersMetadataMatrix[i].userSubjects;\r\n }\r\n }\r\n //----------// terminalIP and terminalLocation\r\n \r\n for (let i = 0; i < schoolTerminalMatrix.length; i++) {\r\n console.log(\"schoolTerminalMatrix[i]\",schoolTerminalMatrix[i]);\r\n console.log(\"schoolTerminalMatrix[i].terminalKey\",terminalIP,schoolTerminalMatrix[i].terminalKey);\r\n if (terminalIP === schoolTerminalMatrix[i].terminalKey) {\r\n terminalLocation = schoolTerminalMatrix[i].location;\r\n break;\r\n }else{\r\n terminalLocation = \"location\";\r\n }\r\n }\r\n let userData = {\r\n userId:userId,\r\n userName:userName,\r\n startTime:new Date(startTime),\r\n endTime:new Date(endTime),\r\n terminalIP:terminalIP,\r\n resourceMetauserConsoleData:resourceMetauserConsoleData,\r\n duration:duration,\r\n terminalLocation:terminalLocation,\r\n userSubjects:userSubjects\r\n }\r\n userConsoleMatrix.push(userData);\r\n this.userConsoleData = userConsoleMatrix;\r\n this.isUserReqiuredDataReady.next(true);\r\n }\r\n }\r\n }\r\n // console.log(usersMetadataMatrix,schoolTerminalMatrix,userConsoleMatrix);\r\n return {\r\n usersMetadata:usersMetadataMatrix,\r\n schoolTerminalData:schoolTerminalMatrix,\r\n userConsoleData: userConsoleMatrix\r\n }\r\n }\r\n userWiseChartData(){\r\n let dataTableforChart = new Array();\r\n dataTableforChart = [];\r\n if(this.userConsoleData){\r\n if(this.userConsoleData.length > 0){\r\n for(let i = 0; i < this.userConsoleData.length; i++){\r\n let userData = [this.userConsoleData[i].userName,this.userConsoleData[i].startTime,this.userConsoleData[i].endTime];\r\n dataTableforChart.push(userData);\r\n }\r\n }\r\n }\r\n return dataTableforChart;\r\n }\r\n classRoomWiseChartData(){\r\n let dataTableforChart = new Array();\r\n dataTableforChart = [];\r\n if(this.userConsoleData){\r\n console.log(\"this.userConsoleData\",this.userConsoleData);\r\n for(let i = 0; i < this.userConsoleData.length; i++){\r\n let userData = [this.userConsoleData[i].terminalIP,this.userConsoleData[i].startTime,this.userConsoleData[i].endTime];\r\n dataTableforChart.push(userData);\r\n }\r\n }\r\n return dataTableforChart;\r\n \r\n }\r\n allUserChartData(){\r\n let dataTableforChart = new Array();\r\n dataTableforChart = [];\r\n let AlluserDetailsForTableChart =new Array();\r\n AlluserDetailsForTableChart = [];\r\n if(this.userConsoleData && this.usersMetaData){\r\n let inActiveuserName: any;\r\n let userSubjects: any;\r\n let myID: any;\r\n let AlluserDetails =new Array();\r\n for (let index = 0; index < this.userConsoleData.length; index++) {\r\n AlluserDetails.push(this.userConsoleData[index]);\r\n AlluserDetailsForTableChart.push(this.userConsoleData[index])\r\n }\r\n for (let i = 0; i < this.usersMetaData.length; i++) {\r\n myID = this.usersMetaData[i].userId;\r\n inActiveuserName = this.usersMetaData[i].userName;\r\n userSubjects = this.usersMetaData[i].userSubjects;\r\n let myChartRowuserConsoleData = \r\n {\r\n userId:myID,\r\n userName:inActiveuserName,\r\n startTime:new Date(this.myEndTime),\r\n endTime:new Date(this.myEndTime),\r\n terminalIP:\"\",\r\n resourceMetauserConsoleData:[],\r\n duration:\"0\",\r\n terminalLocation:\"\",\r\n userSubjects:userSubjects\r\n };\r\n AlluserDetails.push(myChartRowuserConsoleData);\r\n \r\n let myTableRowuserConsoleData = {\r\n userId:myID,\r\n userName:inActiveuserName,\r\n startTime:\"\",\r\n endTime:\"\",\r\n terminalIP:\"\",\r\n resourceMetauserConsoleData:[],\r\n duration:0,\r\n terminalLocation:\"\",\r\n userSubjects:userSubjects\r\n };\r\n AlluserDetailsForTableChart.push(myTableRowuserConsoleData);\r\n }\r\n for(let i = 0; i < AlluserDetails.length; i++){\r\n let userData = [AlluserDetails[i].userName,AlluserDetails[i].startTime,AlluserDetails[i].endTime];\r\n dataTableforChart.push(userData);\r\n }\r\n }\r\n return {forChartData:dataTableforChart,fordurationTable:AlluserDetailsForTableChart}\r\n }\r\n allRoomsData(){\r\n let dataTableforChart = new Array();\r\n dataTableforChart = [];\r\n let allRoomsDetails = new Array();\r\n allRoomsDetails = [];\r\n if(this.userConsoleData && this.schoolTerminalData){\r\n let myChartRowData: any={};\r\n let inActiveClassRoom: any;\r\n for(let i = 0; i < this.userConsoleData.length; i++){\r\n allRoomsDetails.push(this.userConsoleData[i]);\r\n let userData = [this.userConsoleData[i].terminalLocation,this.userConsoleData[i].startTime,this.userConsoleData[i].endTime];\r\n dataTableforChart.push(userData);\r\n }\r\n \r\n for (let i = 0; i < this.schoolTerminalData.length; i++) {\r\n inActiveClassRoom = this.schoolTerminalData[i].location;\r\n \r\n myChartRowData = {\r\n userId:\"\",\r\n userName:\"\",\r\n startTime:new Date(this.myEndTime),\r\n endTime:new Date(this.myEndTime),\r\n terminalIP:\"\",\r\n resourceMetauserConsoleData:[],\r\n duration:0,\r\n terminalLocation:inActiveClassRoom,\r\n userSubjects:\"\"\r\n };\r\n allRoomsDetails.push(myChartRowData);\r\n let myChartRowuserConsoleData = [inActiveClassRoom,new Date(this.myEndTime),new Date(this.myEndTime)];\r\n dataTableforChart.push(myChartRowuserConsoleData);\r\n }\r\n \r\n }\r\n return {forChartData:dataTableforChart,fordurationTable:allRoomsDetails};\r\n }\r\n dataForTableView(userConsoleMatrix: any,resourceMetadataMatrix: any) {\r\n let currentDate: any;\r\n let resourceMatrixForTableChart = new Array();\r\n let resourceMatrixForExcel = new Array();\r\n resourceMatrixForTableChart = [];\r\n resourceMatrixForExcel = [];\r\n for (let i = 0; i <userConsoleMatrix.length; i++) {\r\n let startTime: any;\r\n let endTime: any;\r\n let duration: any;\r\n let terminalIP: any;\r\n let subject: any;\r\n let grade: any;\r\n let chapter: any;\r\n let AssestDetail: any;\r\n let resourceType: any;\r\n let resourceTitle: any;\r\n let teachingpoint: any;\r\n let location: any;\r\n let teacherName: any;\r\n let teacherSubject: any;\r\n \r\n let resourceMetadataIDs: any;\r\n let resourceArrayForExcel = new Array();\r\n let resourceArrayForTableChart = new Array();\r\n let userConsoleDataMatrix = new Array();\r\n resourceArrayForTableChart = [];\r\n userConsoleDataMatrix = [];\r\n //----------------- for subject and Name\r\n \r\n\r\n teacherSubject = userConsoleMatrix[i].userSubjects;\r\n teacherName = userConsoleMatrix[i].userName;\r\n //----------------- for start Time and EndTime \r\n if ((userConsoleMatrix[i].startTime != undefined && userConsoleMatrix[i].startTime != \"\") && (userConsoleMatrix[i].endTime != undefined&&userConsoleMatrix[i].endTime != \"\")) {\r\n startTime = userConsoleMatrix[i].startTime.toLocaleTimeString('en-US', { hour12: true });\r\n endTime = userConsoleMatrix[i].endTime.toLocaleTimeString('en-US', { hour12: true });\r\n currentDate = userConsoleMatrix[i].startTime.getDate() + '/' + (userConsoleMatrix[i].startTime.getMonth()+1) + '/' + userConsoleMatrix[i].startTime.getFullYear();\r\n }\r\n //----------------- for duration\r\n duration = Math.floor(userConsoleMatrix[i].duration);\r\n //----------------- for Terminal loaction and terminal IP\r\n location = userConsoleMatrix[i].terminalLocation;\r\n terminalIP = userConsoleMatrix[i].terminalIP;\r\n let roomDetail = location + ' ' + terminalIP;\r\n \r\n resourceMetadataIDs = userConsoleMatrix[i].resourceMetauserConsoleData;\r\n \r\n if (resourceMetadataIDs.length == 0) {\r\n subject = undefined;\r\n grade = undefined;\r\n chapter = undefined;\r\n teachingpoint = undefined;\r\n AssestDetail = undefined;\r\n resourceTitle = undefined;\r\n resourceType = undefined;\r\n resourceArrayForTableChart = [teacherName,teacherSubject,currentDate,startTime,endTime,duration,roomDetail,subject,grade,chapter,teachingpoint,AssestDetail];\r\n resourceMatrixForTableChart.push(resourceArrayForTableChart);\r\n \r\n }else{\r\n //resourceMetadataMatrix = [resouseID,subject,grade,chapter,teachingpoint,type,title]\r\n for (let k = 0; k < resourceMetadataIDs.length; k++) {\r\n for (let i = 0; i < resourceMetadataMatrix.length; i++) {\r\n if (resourceMetadataIDs[k] === resourceMetadataMatrix[i].resouseID) {\r\n subject = resourceMetadataMatrix[i].subject;\r\n grade = resourceMetadataMatrix[i].grade;\r\n chapter = resourceMetadataMatrix[i].chapter;\r\n teachingpoint = resourceMetadataMatrix[i].teachingpoint;\r\n AssestDetail = this.getDisplaytypeValue(resourceMetadataMatrix[i].type) + \": \" + resourceMetadataMatrix[i].title;\r\n\r\n resourceArrayForTableChart = [teacherName,teacherSubject,currentDate,startTime,endTime,duration,roomDetail,subject,grade,chapter,teachingpoint,AssestDetail];\r\n resourceMatrixForTableChart.push(resourceArrayForTableChart);\r\n teacherName = undefined;\r\n teacherSubject = undefined;\r\n currentDate = undefined;\r\n startTime = undefined;\r\n endTime = undefined;\r\n duration = undefined;\r\n roomDetail = undefined;\r\n \r\n }\r\n }\r\n }\r\n }\r\n }\r\n return resourceMatrixForTableChart;\r\n }\r\n dataForDetailedView(userConsoleMatrix: any,resourceMetadataMatrix: any, rowLabel: any) {\r\n let detailedView_UserDataMatrix = new Array();\r\n detailedView_UserDataMatrix = [];\r\n let detailedView_ResourceDataMatrix = new Array();\r\n detailedView_ResourceDataMatrix = [];\r\n \r\n let startTime: any;\r\n let endTime: any;\r\n let duration: any;\r\n let terminalIP: any;\r\n let subject: any;\r\n let grade: any;\r\n let chapter: any;\r\n let AssestDetail: any;\r\n let teachingpoint: any;\r\n let location: any;\r\n let teacherName: any;\r\n let teacherSubject: any;\r\n let currentDate: any;\r\n let resourceMetadataIDs: any;\r\n let resourceArrayForTableChart = new Array();\r\n resourceArrayForTableChart = [];\r\n //----------------- for subject and Name\r\n teacherSubject = userConsoleMatrix[rowLabel].userSubjects;\r\n teacherName = userConsoleMatrix[rowLabel].userName;\r\n //----------------- for start Time and EndTime\r\n if ((userConsoleMatrix[rowLabel].startTime != undefined && userConsoleMatrix[rowLabel].startTime != \"\") && (userConsoleMatrix[rowLabel].endTime != undefined&&userConsoleMatrix[rowLabel].endTime != \"\")) {\r\n startTime = userConsoleMatrix[rowLabel].startTime.toLocaleTimeString('en-US', { hour12: true });\r\n endTime = userConsoleMatrix[rowLabel].endTime.toLocaleTimeString('en-US', { hour12: true });\r\n currentDate = userConsoleMatrix[rowLabel].startTime.getDate() + '/' + userConsoleMatrix[rowLabel].startTime.getMonth() + '/' + userConsoleMatrix[rowLabel].startTime.getFullYear();\r\n }\r\n //----------------- for duration\r\n duration = Math.floor(userConsoleMatrix[rowLabel].duration);\r\n //----------------- for Terminal loaction and terminal IP\r\n location = userConsoleMatrix[rowLabel].terminalLocation;\r\n terminalIP = userConsoleMatrix[rowLabel].terminalIP;\r\n let roomDetail = location + ' ' + terminalIP;\r\n resourceMetadataIDs = userConsoleMatrix[rowLabel].resourceMetauserConsoleData;\r\n\r\n detailedView_UserDataMatrix = [teacherName,startTime,teacherSubject,endTime,roomDetail]\r\n \r\n if (resourceMetadataIDs.length == 0) {\r\n subject = undefined;\r\n grade = undefined;\r\n chapter = undefined;\r\n teachingpoint = undefined;\r\n AssestDetail = undefined;\r\n // resourceArrayForTableChart = [subject,grade,chapter,teachingpoint,AssestDetail];\r\n // detailedView_ResourceDataMatrix.push(resourceArrayForTableChart);\r\n }else{\r\n //resourceMetadataMatrix = [resouseID,subject,grade,chapter,teachingpoint,type,title]\r\n for (let k = 0; k < resourceMetadataIDs.length; k++) {\r\n for (let i = 0; i < resourceMetadataMatrix.length; i++) {\r\n if (resourceMetadataIDs[k] === resourceMetadataMatrix[i].resouseID) {\r\n subject = resourceMetadataMatrix[i].subject;\r\n grade = resourceMetadataMatrix[i].grade;\r\n chapter = resourceMetadataMatrix[i].chapter;\r\n teachingpoint = resourceMetadataMatrix[i].teachingpoint;\r\n AssestDetail =resourceMetadataMatrix[i].type + \": \" + resourceMetadataMatrix[i].title;\r\n \r\n resourceArrayForTableChart = [subject,grade,chapter,teachingpoint,AssestDetail];\r\n detailedView_ResourceDataMatrix.push(resourceArrayForTableChart);\r\n }\r\n }\r\n }\r\n } \r\n \r\n return {userDetails:detailedView_UserDataMatrix,resourceDetails:detailedView_ResourceDataMatrix};\r\n }\r\n // To GET DISPLAY TYPE\r\n getDisplaytypeValue(key: any) {\r\n let assetTypeConfig = [\r\n {\r\n type: \"asset_media\",\r\n display: \"Media\"\r\n },\r\n {\r\n type: \"asset_print\",\r\n display: \"Print\"\r\n },\r\n {\r\n type: \"quiz\",\r\n display: \"Quiz\"\r\n },\r\n {\r\n type: \"question\",\r\n display: \"Question\"\r\n },\r\n {\r\n type: \"chapter\",\r\n display: \"Chapter\"\r\n },\r\n {\r\n type: \"tp\",\r\n display: \"Topic\"\r\n },\r\n {\r\n type: \"whiteboard\",\r\n display: \"Whiteboard\"\r\n },\r\n {\r\n type: \"widget\",\r\n display: \"Widget\"\r\n },\r\n {\r\n type: \"casset_media\",\r\n display: \"cMedia\"\r\n },\r\n {\r\n type: \"casset_print\",\r\n display: \"cPrint\"\r\n },\r\n {\r\n type: \"cquiz\",\r\n display: \"cQuiz\"\r\n },\r\n {\r\n type: \"cquestion\",\r\n display: \"cQuestion\"\r\n },\r\n {\r\n type: \"image\",\r\n display: \"Image\"\r\n },\r\n {\r\n type: \"video\",\r\n display: \"Video\"\r\n },\r\n\r\n ];\r\n let displayValue = key;\r\n assetTypeConfig.forEach((value) => {\r\n if (value.type === key) {\r\n displayValue = value.display;\r\n }\r\n });\r\n return displayValue;\r\n\r\n }\r\n}\r\n","import { Component, OnInit ,Output, ViewChild, Input,EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-principal-dashboard-lib-v2',\r\n templateUrl: './principal-dashboard-lib-v2.component.html',\r\n styleUrls: ['./principal-dashboard-lib-v2.component.scss']\r\n})\r\nexport class PrincipalDashboardLibV2Component implements OnInit {\r\n @Input() data;\r\n @Input() set responseStatus(res: any) {\r\n this.setMessageForUser(res);\r\n // console.log(\" @Input() set responseStatus(res: any) >>>>>>>>>>>>.\",res);\r\n }\r\n @Output() userSelectedDate = new EventEmitter();\r\n messageForUser = \"Loding...\";\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n \r\n // console.log(\" IN --> 7 data\",this.data);\r\n }\r\n setMessageForUser(res: any){\r\n this.messageForUser = res;\r\n }\r\n onUserSelectDate(e:any){\r\n // console.log(\" IN --> 1\");\r\n this.data = null;\r\n this.userSelectedDate.emit(e);\r\n }\r\n \r\n\r\n}\r\n","import { getLocaleDateTimeFormat } from '@angular/common';\r\nimport { Component, ElementRef, OnInit, ViewChild, Input } from '@angular/core';\r\nimport { ChartType } from 'angular-google-charts';\r\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\r\ndeclare let require: any;\r\n\r\n@Component({\r\n selector: 'lib-chartheader',\r\n templateUrl: './chartheader.component.html',\r\n styleUrls: ['./chartheader.component.scss'],\r\n})\r\nexport class ChartheaderComponent implements OnInit {\r\n constructor(\r\n private pdService: PrincipalDashboardLibV2Service\r\n ) {}\r\n \r\n //variables\r\n mytype = ChartType.Timeline;\r\n datadisplaytype = 'UserWise';\r\n isUserWise = true;\r\n myIcon: any;\r\n libVersion:any;\r\n isChartView=true;\r\n\r\n ngOnInit(): void {\r\n this.libVersion = \"0.0.13\";\r\n // this.myIcon = document.getElementById('myIconImg');\r\n // this.changeChatType() \r\n }\r\n changeChatType() {\r\n if (this.mytype == ChartType.Timeline) {\r\n this.isChartView = false;\r\n this.mytype = ChartType.Table;\r\n this.pdService.chartType.next(this.mytype);\r\n \r\n } else {\r\n this.isChartView = true;\r\n this.mytype = ChartType.Timeline;\r\n \r\n this.pdService.chartType.next(this.mytype);\r\n }\r\n }\r\n changeDataTypeClassRoom() {\r\n this.isUserWise = false;\r\n this.pdService.isUserWise_data.next(false);\r\n }\r\n changeDataTypeUser() {\r\n this.isUserWise = true;\r\n this.pdService.isUserWise_data.next(true);\r\n }\r\n}\r\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 {\r\n Component,\r\n ElementRef,\r\n OnInit,\r\n ViewChild,\r\n Input,\r\n HostListener,\r\n} from '@angular/core';\r\nimport { ChartType, GoogleChartComponent } from 'angular-google-charts';\r\nimport { element } from 'protractor';\r\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\r\n@Component({\r\n selector: 'lib-chartview',\r\n templateUrl: './chartview.component.html',\r\n styleUrls: ['./chartview.component.scss'],\r\n})\r\nexport class ChartviewComponent implements OnInit {\r\n @Input() set data(res: any) {\r\n if(res!== null){\r\n this.loadChart(res);\r\n }\r\n \r\n }\r\n chartview:any;\r\n myDataList:any;\r\n chartDataTable:any;\r\n myChartOptions: any;\r\n AllrowHeight: any;\r\n myXmlData: any;\r\n currentdataList:any;\r\n resourceDataList:any;\r\n alldataList:any;\r\n selectedUserData:any;\r\n rowElements:any;\r\n \r\n installedClassrooms: any;\r\n currentRooms: any;\r\n totalUsers = 0;\r\n eligibleUsers = 0;\r\n currentUsers = 0;\r\n myChartType = ChartType.Timeline;\r\n myChartwidth = window.innerWidth * 0.88;\r\n myChartHeight = window.innerHeight;\r\n currentList = \"Current Users\";\r\n allList = \"All Users\";\r\n isAllUsers = false;\r\n isUserWise = false;\r\n alluserList: any;\r\n myChartDataMatrix = new Array();\r\n \r\n totalChartDataMatrix = new Array();\r\n constructor(\r\n private pdService: PrincipalDashboardLibV2Service\r\n ) { }\r\n\r\n ngOnInit() { }\r\n\r\n loadChart(response: any) {\r\n // console.log(' IN --> 8 loadChart');\r\n this.totalUsers = 0;\r\n this.eligibleUsers = 0;\r\n this.currentUsers = 0;\r\n this.myChartType = ChartType.Timeline;\r\n this.myChartwidth = window.innerWidth * 0.88;\r\n this.myChartHeight = window.innerHeight;\r\n this.currentList = \"Current Users\";\r\n this.allList = \"All Users\";\r\n this.isAllUsers = false;\r\n this.isUserWise = false;\r\n this.myChartDataMatrix =[];\r\n this.totalChartDataMatrix =[];\r\n\r\n this.chartview = document.getElementById('pd-chartview');\r\n this.myDataList = document.getElementById('pd-xmlData');\r\n // let parse = new DOMParser();\r\n if(response){\r\n this.myXmlData = JSON.parse(response);\r\n }\r\n \r\n if(this.myXmlData){\r\n this.currentdataList = this.pdService.genarateUserReqiuredData(this.myXmlData);\r\n this.alluserList = this.pdService.allUserChartData();\r\n this.resourceDataList = this.pdService.genarateResourseReqiuredData(this.myXmlData);\r\n this.totalUsers = this.currentdataList.usersMetadata.length;\r\n this.findCurrentUserCount();\r\n }\r\n this.pdService.chartType.subscribe((data) => {\r\n if (data) {\r\n this.updateChartType(data);\r\n }\r\n });\r\n this.pdService.isUserWise_data.subscribe((data) => {\r\n this.updateDataType(data);\r\n });\r\n window.addEventListener('resize', this.onResizeWindow.bind(this));\r\n }\r\n onResizeWindow(event: any) {\r\n this.myChartwidth = window.innerWidth * 0.88; //set an appropriate factor\r\n }\r\n myChartReady() {\r\n this.createDivforTotalDurartion();\r\n this.setHeightofDivforTotalDurartion();\r\n // this.removeBlankEntryBar();\r\n }\r\n updateChartType(dataType: any) {\r\n if (this.chartview != null && this.chartview != undefined) {\r\n if (dataType == ChartType.Table) {\r\n this.chartview.style.display = 'none';\r\n } else {\r\n this.chartview.style.display = 'block';\r\n }\r\n }\r\n }\r\n updateDataType(dataType: any) {\r\n this.isUserWise = dataType;\r\n if (this.myXmlData) {\r\n if(this.isUserWise){\r\n this.currentList = \"Current Users\";\r\n this.allList = \"All Users\";\r\n if(this.isAllUsers){\r\n this.userWiseAllData();\r\n }else{\r\n this.userWiseCurrentData();\r\n } \r\n }else{\r\n this.allList = \"All Rooms\";\r\n this.currentList = \"Current Rooms\";\r\n if(this.isAllUsers){\r\n this.classRoomWiseAllData();\r\n }else{\r\n this.classRoomWiseCurrentData();\r\n } \r\n }\r\n }\r\n }\r\n updateChart() {\r\n let labels = document.getElementById('labels');\r\n while (labels.firstChild) {\r\n labels.removeChild(labels.lastChild);\r\n }\r\n this.chartDataTable = this.myChartDataMatrix;\r\n console.log(\"this.myChartDataMatrix\",this.myChartDataMatrix);\r\n \r\n \r\n (this.myChartOptions = {\r\n tooltip: {\r\n trigger: 'none',\r\n },\r\n colors: ['#ff7f0e', '#2ca02c', '#8c564b', '#d62728', '#bcbd22', '#17becf'],\r\n timeline: {\r\n colorByRowLabel: true,\r\n barLabelStyle: {\r\n fontSize: 7,\r\n },\r\n },\r\n hAxis: {\r\n format: 'HH:mm a',\r\n },\r\n });\r\n setTimeout(() => {\r\n this.myChartHeight = this.AllrowHeight + 100;//to set perfect height of chart \r\n }, 1000);\r\n }\r\n\r\n calulateTotalDuration(detailViewMatrix:any) {\r\n \r\n let id_durationArray;\r\n let id_durationMatrix = new Array();\r\n id_durationMatrix = [];\r\n this.totalChartDataMatrix = [];\r\n if (this.isUserWise) {\r\n for (let i = 0; i < detailViewMatrix.length; i++) {\r\n id_durationArray = {\r\n name: detailViewMatrix[i].userName,\r\n value: parseInt(detailViewMatrix[i].duration),\r\n };\r\n id_durationMatrix.push(id_durationArray);\r\n }\r\n } else {\r\n for (let i = 0; i < detailViewMatrix.length; i++) {\r\n id_durationArray = {\r\n name: detailViewMatrix[i].terminalLocation,\r\n value: parseInt(detailViewMatrix[i].duration),\r\n };\r\n id_durationMatrix.push(id_durationArray);\r\n }\r\n }\r\n \r\n let obj: any = {};\r\n id_durationMatrix = [...new Set(id_durationMatrix)];\r\n \r\n id_durationMatrix.forEach((item) => {\r\n if (obj[item.name]) {\r\n obj[item.name].value = obj[item.name].value + item.value;\r\n } else {\r\n\r\n obj[item.name] = item;\r\n }\r\n });\r\n let valuesArr = Object.values(obj);\r\n \r\n let myArray = new Array();\r\n myArray = [];\r\n valuesArr.forEach((item: any) => {\r\n myArray.push(item.value);\r\n });\r\n for (let i = 0; i < myArray.length; i++) {\r\n let totaldurationPerRow = [this.timeConvert(myArray[i]).toString() + ' hrs'];\r\n // let totalChartRowDataArray = [totaldurationPerRow];\r\n this.totalChartDataMatrix.push(totaldurationPerRow);\r\n }\r\n }\r\n timeConvert(n: any) {\r\n var num = Math.floor(n);\r\n var hours = num / 60;\r\n var rhours = Math.floor(hours);\r\n var minutes = (hours - rhours) * 60;\r\n var rminutes = Math.round(minutes);\r\n return rhours + ':' + rminutes;\r\n }\r\n removeBlankEntryBar() {\r\n const chartDiv = document.getElementById('myTimeLine');\r\n var el = chartDiv.getElementsByTagName(\"rect\"); //get all the descendant rect element inside the container \r\n var width = 100000000; //set a large initial value to width\r\n var elToRem = []; //element would be added to this array for removal\r\n for (var i = 0; i < el.length; i++) { //looping over all the rect element of container\r\n var cwidth = parseInt(el[i].getAttribute(\"width\"));//getting the width of ith element\r\n if (cwidth < width) { //if current element width is less than previous width then this is min. width and ith element should be removed\r\n elToRem = [el[i]];\r\n width = cwidth; //setting the width with min width\r\n }\r\n else if (cwidth == width) { //if current element width is equal to previous width then more that one element would be removed\r\n elToRem.push(el[i]);\r\n }\r\n }\r\n for (var i = 0; i < elToRem.length; i++) {\r\n // now iterate JUST the elements to remove\r\n elToRem[i].setAttribute(\"fill\", \"none\");\r\n\r\n }\r\n }\r\n createDivforTotalDurartion() {\r\n let rowLabels = [];\r\n this.rowElements = [];\r\n var labels = document.getElementById('labels');\r\n while (labels.firstChild) {\r\n labels.removeChild(labels.lastChild);\r\n }\r\n for (var i = 0; i < this.totalChartDataMatrix.length; i++) {\r\n var team = this.totalChartDataMatrix[i][0];\r\n rowLabels.push(team);\r\n var label = labels.appendChild(document.createElement('div'));\r\n label.style['border-bottom'] = '1px solid #b7b7b7';\r\n label.style['font-family'] = 'Arial';\r\n label.style['font-size'] = '13px';\r\n label.style['text-align'] = 'left';\r\n label.style['padding-left'] = '8px';\r\n label.style['padding-right'] = '8px';\r\n label.style.position = 'inherit';\r\n if (i % 2) {\r\n label.style['background-color'] = '#e6e6e6';\r\n } else {\r\n label.style['background-color'] = '#ffffff';\r\n }\r\n label.innerHTML = team;\r\n this.rowElements.push(label);\r\n }\r\n }\r\n setHeightofDivforTotalDurartion() {\r\n \r\n this.AllrowHeight = 0;\r\n const chartDiv = document.getElementById('myTimeLine');\r\n let rows = chartDiv.getElementsByTagName('rect');\r\n let rowIndex = -1;\r\n\r\n for (let i = 0; i < rows.length; i++) {\r\n rowIndex++;\r\n if (rowIndex < this.rowElements.length) {\r\n let rowHeight = parseFloat(rows[i].getAttribute('height')) + 'px';\r\n this.AllrowHeight += parseFloat(rows[i].getAttribute('height'));\r\n\r\n const currentCell = this.rowElements[rowIndex];\r\n if (currentCell) {\r\n currentCell.style.height = rowHeight;\r\n currentCell.style.lineHeight = rowHeight;\r\n }\r\n }\r\n }\r\n }\r\n\r\n onSelectRowData(event: any) {\r\n const { row, column } = event.selection[0]; \r\n if(this.isAllUsers){\r\n this.selectedUserData = this.pdService.dataForDetailedView(this.alluserList.fordurationTable,this.resourceDataList, row);\r\n \r\n }else{\r\n this.selectedUserData = this.pdService.dataForDetailedView(this.currentdataList.userConsoleData,this.resourceDataList, row);\r\n \r\n \r\n }\r\n // console.log(\"this.selectedUserData\",this.selectedUserData);\r\n this.pdService.detailedviewData.next(this.selectedUserData);\r\n this.updateChart();\r\n // alluserList\r\n }\r\n showAllUser() {\r\n this.pdService.isAllUsers.next(true);\r\n this.isAllUsers = true;\r\n if(this.isUserWise){\r\n this.userWiseAllData();\r\n }else{\r\n this.classRoomWiseAllData();\r\n }\r\n }\r\n showCurrentUser() {\r\n this.isAllUsers = false;\r\n this.pdService.isAllUsers.next(false);\r\n if(this.isUserWise){\r\n this.userWiseCurrentData();\r\n }else{\r\n this.classRoomWiseCurrentData();\r\n }\r\n }\r\n userWiseCurrentData(){\r\n \r\n let chartDataUserWise = this.pdService.userWiseChartData();\r\n // console.log(\"chartDataUserWise\",chartDataUserWise);\r\n \r\n if(chartDataUserWise.length>0){\r\n this.myChartDataMatrix =chartDataUserWise;\r\n this.updateChart();\r\n if(this.currentdataList.userConsoleData.length>0){\r\n this.calulateTotalDuration(this.currentdataList.userConsoleData);\r\n }\r\n } \r\n }\r\n userWiseAllData(){\r\n let chartDataUserWise = this.alluserList.forChartData;\r\n if(chartDataUserWise.length>0){\r\n this.myChartDataMatrix =chartDataUserWise;\r\n \r\n this.updateChart();\r\n this.calulateTotalDuration(this.alluserList.fordurationTable);\r\n }\r\n \r\n }\r\n classRoomWiseCurrentData(){\r\n let classRoomdata = this.pdService.classRoomWiseChartData();\r\n // console.log(\"classRoomdata\",classRoomdata);\r\n if(classRoomdata && classRoomdata.length>0){\r\n \r\n \r\n this.myChartDataMatrix =classRoomdata; \r\n this.updateChart();\r\n if(this.currentdataList.userConsoleData.length>0){\r\n this.calulateTotalDuration(this.currentdataList.userConsoleData);\r\n }\r\n } \r\n }\r\n \r\n classRoomWiseAllData(){\r\n let allclassRoomList = this.pdService.allRoomsData();\r\n if(allclassRoomList.forChartData && allclassRoomList.forChartData.length > 0){\r\n this.myChartDataMatrix = allclassRoomList.forChartData;\r\n this.updateChart();\r\n }\r\n if(allclassRoomList.fordurationTable && allclassRoomList.fordurationTable.length > 0){\r\n this.calulateTotalDuration(allclassRoomList.fordurationTable);\r\n }\r\n \r\n }\r\n\r\n findCurrentUserCount(){\r\n let userConsoleData = this.currentdataList.userConsoleData;\r\n \r\n let userNameArray = new Array();\r\n for (let index = 0; index < userConsoleData.length; index++) {\r\n const element = userConsoleData[index].userName;\r\n userNameArray.push(element);\r\n }\r\n let uniqueUserName = [...new Set(userNameArray)];\r\n this.currentUsers = uniqueUserName.length;\r\n }\r\n ngOnDestroy() {\r\n // console.log('ngOnDestroy >>');\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\r\n\r\n@Component({\r\n selector: 'lib-detailedview',\r\n templateUrl: './detailedview.component.html',\r\n styleUrls: ['./detailedview.component.scss'],\r\n})\r\nexport class DetailedviewComponent implements OnInit {\r\n userMetadata: any;\r\n resourseMetadata: any;\r\n deatilViewContainer: any;\r\n deatilViewTable: any;\r\n closeButton: any;\r\n getTotalData:any\r\n userMetadataHeadingArray = [\r\n 'Name:',\r\n 'Start Time:',\r\n 'Subject:',\r\n 'End Time:',\r\n 'Room Details:',\r\n ];\r\n resourseMetadataHeadingArray = [\r\n 'Subject',\r\n 'Class',\r\n 'Chapter Name',\r\n 'Topic Name',\r\n 'Assets Details',\r\n ];\r\n constructor(private pdService: PrincipalDashboardLibV2Service) {}\r\n\r\n ngOnInit(): void {\r\n this.deatilViewContainer = document.getElementById('pd-deatilViewContainer');\r\n this.deatilViewTable = document.getElementById('pd-deatilViewTable');\r\n this.closeButton = document.getElementById('pd-closeButton');\r\n \r\n this.pdService.detailedviewData.subscribe((data) => {\r\n if(data){\r\n if(data.userDetails.length>0 ){\r\n this.createTable(data.userDetails);\r\n }\r\n if(data.resourceDetails.length>0){\r\n // console.log(\"data.resourceDetails\",data.resourceDetails);\r\n \r\n this.createResourcesTable(data.resourceDetails);\r\n }\r\n }\r\n \r\n });\r\n \r\n this.deatilViewContainer.style.display = 'none';\r\n }\r\n createTable(userMetadata: any) {\r\n this.deatilViewContainer.style.display = 'block';\r\n while (this.deatilViewTable.firstChild) {\r\n this.deatilViewTable.removeChild(this.deatilViewTable.lastChild);\r\n }\r\n\r\n let labelArray = new Array();\r\n let cnt = 0;\r\n for (let i = 0; i < userMetadata.length; i++) {\r\n let label = document.createElement('label');\r\n label.appendChild(\r\n document.createTextNode(this.userMetadataHeadingArray[i])\r\n );\r\n if (label.textContent === 'undefined'|| label.textContent === undefined) {\r\n label.textContent = '';\r\n }\r\n labelArray.push(label);\r\n let data = document.createElement('label');\r\n data.appendChild(document.createTextNode(userMetadata[i]));\r\n if (data.textContent === 'undefined'|| data.textContent === undefined) {\r\n data.textContent = '';\r\n }\r\n labelArray.push(data);\r\n }\r\n let tbl = document.createElement('table');\r\n tbl.id = \"userDataTable\";\r\n tbl.className = \"table table-bordered\";\r\n let tblBody = document.createElement('tbody');\r\n for (let j = 0; j < userMetadata.length / 2; j++) {\r\n let row = document.createElement('tr');\r\n let cell: any;\r\n for (let i = 0; i < 4; i++) {\r\n if (i % 2 == 0) {\r\n cell = document.createElement('th');\r\n cell.style['font-weight'] = \"bold\"\r\n // cell.style.background =\"#e0e0e0\";\r\n } else {\r\n cell = document.createElement('td');\r\n }\r\n if (cnt < labelArray.length) {\r\n cell.appendChild(labelArray[cnt]);\r\n row.appendChild(cell);\r\n }\r\n cnt++;\r\n }\r\n tblBody.appendChild(row);\r\n tbl.appendChild(tblBody);\r\n this.deatilViewTable.appendChild(tbl);\r\n }\r\n }\r\n createResourcesTable(resoureMetadata: any) {\r\n let labelArray = new Array();\r\n let cnt = 0;\r\n for (let i = 0; i < this.resourseMetadataHeadingArray.length; i++) {\r\n let label = document.createElement('label');\r\n label.appendChild(\r\n document.createTextNode(this.resourseMetadataHeadingArray[i])\r\n );\r\n if (label.textContent === 'undefined'|| label.textContent === undefined) {\r\n label.textContent = '';\r\n }\r\n labelArray.push(label);\r\n }\r\n for (let i = 0; i < resoureMetadata.length; i++) {\r\n for (let j = 0; j < 5; j++) {\r\n let label = document.createElement('label');\r\n label.appendChild(document.createTextNode(resoureMetadata[i][j]));\r\n if (label.textContent === 'undefined'|| label.textContent === undefined) {\r\n label.textContent = '';\r\n }\r\n labelArray.push(label);\r\n }\r\n }\r\n let tbl = document.createElement('table');\r\n tbl.className = \"table table-bordered\";\r\n tbl.id = \"resoureMetadataTable\";\r\n let tblBody = document.createElement('tbody');\r\n for (let j = 0; j <= resoureMetadata.length; j++) {\r\n let row = document.createElement('tr');\r\n let cell: any;\r\n for (let i = 0; i < 5; i++) {\r\n if (j == 0) {\r\n cell = document.createElement('th');\r\n cell.style['font-weight'] = 'bold';\r\n // cell.style.background =\"#e0e0e0\";\r\n } else {\r\n cell = document.createElement('td');\r\n }\r\n\r\n if (cnt < labelArray.length) {\r\n cell.appendChild(labelArray[cnt]);\r\n row.appendChild(cell);\r\n }\r\n cnt++;\r\n }\r\n tblBody.appendChild(row);\r\n tbl.appendChild(tblBody);\r\n this.deatilViewTable.appendChild(tbl);\r\n }\r\n }\r\n \r\n onCloseBtnClick() {\r\n this.deatilViewContainer.style.display = 'none';\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { resourceUsage } from 'process';\r\nimport * as FileSaver from 'file-saver'\r\nimport * as XLSX from 'xlsx';\r\nimport { HtmlTagDefinition } from '@angular/compiler';\r\nconst EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\nconst EXCEL_EXTENSION = '.xlsx';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExceldataService {\r\n resourceTypes = new Array();\r\n myEndTime:any;\r\n constructor() { }\r\n //_____FOR EXCEL CONVERTOR\r\n public workbook:any;\r\n public tabName = [{\"name\":\"School\"},{\"name\":\"User Summary\"},{\"name\":\"Terminal Summary\"},{\"name\":\"Usage Details\"}]\r\n public exportAsExcelFile(json: any,excelFileName: string): void {\r\n let excelBuffer: any;\r\n let myobj: any = {Sheets:{}, SheetNames:[] }\r\n for (let i = 0; i < json.length; i++) {\r\n const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json[i]);\r\n myobj.Sheets[this.tabName[i].name] = worksheet\r\n myobj.SheetNames.push(this.tabName[i].name)\r\n }\r\n const workbook:XLSX.WorkBook = myobj; \r\n excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });\r\n this.saveAsExcelFile(excelBuffer, excelFileName);\r\n }\r\n\r\n private saveAsExcelFile(buffer: any, fileName: string): void {\r\n const data: Blob = new Blob([buffer], {\r\n type: EXCEL_TYPE\r\n });\r\n FileSaver.saveAs(data, fileName + EXCEL_EXTENSION);\r\n }\r\n //_____FOR EXCEL CONVERTOR END\r\n\r\n genarateResourseReqiuredData_Excel(data: any): any {\r\n let resouseID: any;\r\n let title: any;\r\n let subject: any;\r\n let grade: any;\r\n let chapter: any;\r\n let teachingpoint: any;\r\n let type: any;\r\n let resourceMetadataMatrix = new Array();\r\n let resourceMetadata = data.resourcesMetadata.resourceMetadata;\r\n \r\n if(resourceMetadata!= undefined && resourceMetadata.length>0) {\r\n for (var i = 0; i < resourceMetadata.length;i++){\r\n //----------//resouseID\r\n resouseID = resourceMetadata[i].resourceId;\r\n //----------//subject\r\n if (resourceMetadata[i].subject != undefined) {\r\n if (resourceMetadata[i].subject.title != undefined) {\r\n subject = resourceMetadata[i].subject.title;\r\n } else {\r\n subject = '';\r\n }\r\n } else {\r\n subject = '';\r\n }\r\n //----------//grade\r\n if (resourceMetadata[i].grade != undefined) {\r\n if (resourceMetadata[i].grade.title != undefined) {\r\n grade = resourceMetadata[i].grade.title;\r\n } else {\r\n grade = '';\r\n }\r\n } else {\r\n grade = '';\r\n }\r\n //----------//chapter\r\n if (resourceMetadata[i].chapter != undefined) {\r\n if (resourceMetadata[i].chapter.title != undefined) {\r\n chapter = resourceMetadata[i].chapter.title;\r\n } else {\r\n chapter = '';\r\n }\r\n } else {\r\n chapter = '';\r\n }\r\n \r\n //----------//teachingpoint\r\n if (resourceMetadata[i].teachingpoint != undefined) {\r\n if (resourceMetadata[i].teachingpoint.title != undefined) {\r\n teachingpoint = resourceMetadata[i].teachingpoint.title;\r\n } else {\r\n teachingpoint = '';\r\n }\r\n } else {\r\n teachingpoint = '';\r\n }\r\n //----------//type\r\n if (resourceMetadata[i].type != undefined) {\r\n type = this.getDisplaytypeValue(resourceMetadata[i].type);\r\n } else {\r\n type = '';\r\n }\r\n \r\n //----------//title\r\n if (resourceMetadata[i].title != undefined) {\r\n title = resourceMetadata[i].title;\r\n } else {\r\n title = '';\r\n }\r\n \r\n \r\n let resourceMetauserConsoleData = {\r\n resouseID:resouseID,\r\n subject:subject,\r\n grade:grade,\r\n chapter:chapter,\r\n teachingpoint:teachingpoint,\r\n type:type,\r\n title:title\r\n }\r\n resourceMetadataMatrix.push(resourceMetauserConsoleData);\r\n this.resourceTypes.push(type);\r\n }\r\n }\r\n this.resourceTypes = [...new Set(this.resourceTypes)]\r\n return resourceMetadataMatrix;\r\n }\r\n genarateUserReqiuredData_Excel(data: any): any {\r\n let userConsole = data.usersConsole.userConsole;\r\n let usersMetadata = data.usersMetadata.userMetadata;\r\n let schoolTerminal = data.schoolTerminals.schoolTerminal;\r\n \r\n \r\n let usersMetadataMatrix = new Array();\r\n let usermetadataMatrixUpdated = new Array();\r\n let schoolTerminalMatrix = new Array();\r\n let userConsoleMatrix = new Array();\r\n if(usersMetadata!= null && usersMetadata.length > 0){\r\n for (let i = 0; i < usersMetadata.length; i++) {\r\n let userId: any;\r\n let userName: any;\r\n let userSubjects: any;\r\n let listOfUser:any = {}\r\n if (usersMetadata[i].userId!=\"\") {\r\n userId = usersMetadata[i].userId;\r\n \r\n if (usersMetadata[i].fullName !== undefined) {\r\n userName = usersMetadata[i].fullName // get name of user w.r.t. ID\r\n } else {\r\n userName = '';\r\n }\r\n\r\n if (usersMetadata[i].userSubjects !== undefined) {\r\n userSubjects = usersMetadata[i].userSubjects // get name of user w.r.t. ID\r\n } else {\r\n userSubjects = '';\r\n }\r\n \r\n listOfUser = {\r\n userId:userId, \r\n userName:userName, \r\n userSubjects:userSubjects\r\n };\r\n usersMetadataMatrix.push(listOfUser); // array of all users\r\n }\r\n }\r\n }\r\n for (var i = 0; i < usersMetadataMatrix.length; i++) {\r\n usersMetadataMatrix.forEach(element => {\r\n if (usersMetadataMatrix[i].userName === element.userName) {\r\n usermetadataMatrixUpdated.push(usersMetadataMatrix[i]); //array of same name users\r\n usersMetadataMatrix.splice(i, 1); //delete the same name users from usermetadataMatrix\r\n }\r\n });\r\n }\r\n for (var i = 0; i < usermetadataMatrixUpdated.length; i++) {\r\n usermetadataMatrixUpdated[i].userName = usermetadataMatrixUpdated[i].userName + \" \" + i;\r\n usersMetadataMatrix.push(usermetadataMatrixUpdated[i]); //adding same name users in usermetadataMatrix with some random charators\r\n }\r\n if(schoolTerminal != null && schoolTerminal.length > 0){\r\n for (var i = 0; i < schoolTerminal.length; i++) {\r\n let schoolId:any;\r\n let terminalKey:any;\r\n let terminalType:any;\r\n let location:any;\r\n let schoolTerminalData:any = {};\r\n \r\n //----------//schoolId\r\n if (schoolTerminal[i].schoolId !== undefined) {\r\n schoolId = schoolTerminal[i].schoolId // get name of user w.r.t. ID\r\n } else {\r\n schoolId = '';\r\n }\r\n //----------//terminalKey\r\n if (schoolTerminal[i].terminalKey !== undefined) {\r\n terminalKey = schoolTerminal[i].terminalKey // get name of user w.r.t. ID\r\n } else {\r\n terminalKey = '';\r\n }\r\n //----------//terminalType\r\n if (schoolTerminal[i].terminalType !== undefined) {\r\n terminalType = schoolTerminal[i].terminalType // get name of user w.r.t. ID\r\n } else {\r\n terminalType = '';\r\n }\r\n \r\n //----------//location\r\n if (schoolTerminal[i].metadata !== undefined) {\r\n location = schoolTerminal[i].metadata // get name of user w.r.t. ID\r\n } else {\r\n location = '';\r\n }\r\n schoolTerminalData = {\r\n schoolId:schoolId,\r\n terminalKey:terminalKey,\r\n terminalType:terminalType,\r\n location:location\r\n };\r\n schoolTerminalMatrix.push(schoolTerminalData);\r\n \r\n }\r\n }\r\n if(userConsole !=null && userConsole.length > 0){\r\n for (let index = 0; index < userConsole.length; index++) {\r\n let userId: any;\r\n let startTime: any;\r\n let endTime: any;\r\n let duration: any;\r\n let selectedDate: any;\r\n let terminalIP: any;\r\n let userConsoleResources: any;\r\n let resourceMetadataIDS: any;\r\n let resourceMetauserConsoleData = new Array();\r\n let userName:any;\r\n let userSubjects:any;\r\n let terminalLocation: any;\r\n //----------//user iD\r\n if (userConsole[index].userId !== undefined) {\r\n userId = userConsole[index].userId // get name of user w.r.t. ID\r\n } else {\r\n userId = '';\r\n }\r\n //----------// startTime \r\n if (userConsole[index].startTime !== undefined) {\r\n startTime = userConsole[index].startTime // get name of user w.r.t. ID\r\n } else {\r\n startTime = '';\r\n }\r\n //----------// endTime \r\n if (userConsole[index].endTime !== undefined) {\r\n endTime = userConsole[index].endTime // get name of user w.r.t. ID\r\n this.myEndTime = endTime;\r\n } else {\r\n endTime = '';\r\n }\r\n //----------// Date \r\n if (userConsole[index].selectedDate !== undefined) {\r\n selectedDate = userConsole[index].selectedDate // get name of user w.r.t. ID\r\n } else {\r\n selectedDate = '';\r\n }\r\n \r\n //----------// Duration\r\n if (userConsole[index].duration !== undefined) {\r\n duration = userConsole[index].duration // get name of user w.r.t. ID\r\n } else {\r\n duration = '';\r\n }\r\n //----------// terminalIP\r\n if (userConsole[index].terminalIP !== undefined) {\r\n terminalIP = userConsole[index].terminalIP // get name of user w.r.t. ID\r\n } else {\r\n terminalIP = '';\r\n }\r\n \r\n //----------// userConsoleResources\r\n if (userConsole[index].userConsoleResources !== undefined) {\r\n userConsoleResources = userConsole[index].userConsoleResources // get name of user w.r.t. ID\r\n } else {\r\n userConsoleResources = null;\r\n }\r\n \r\n if(userConsoleResources != null){\r\n if (userConsoleResources.userConsoleResource !== undefined) {\r\n resourceMetauserConsoleData = userConsoleResources.userConsoleResource; // get name of user w.r.t. ID\r\n } else {\r\n resourceMetauserConsoleData = [];\r\n }\r\n }\r\n \r\n //----------// userName and userSubjects\r\n for (let i = 0; i < usersMetadataMatrix.length; i++) {\r\n if (userId === usersMetadataMatrix[i].userId) {\r\n userName = usersMetadataMatrix[i].userName;\r\n userSubjects = usersMetadataMatrix[i].userSubjects;\r\n }\r\n }\r\n //----------// terminalIP and terminalLocation\r\n \r\n for (let i = 0; i < schoolTerminalMatrix.length; i++) {\r\n if (terminalIP === schoolTerminalMatrix[i].terminalKey) {\r\n terminalLocation = schoolTerminalMatrix[i].location;\r\n }\r\n }\r\n let userData = {\r\n userId:userId,\r\n userName:userName,\r\n startTime:new Date(startTime),\r\n endTime:new Date(endTime),\r\n terminalIP:terminalIP,\r\n resourceMetauserConsoleData:resourceMetauserConsoleData,\r\n duration:duration,\r\n terminalLocation:terminalLocation,\r\n userSubjects:userSubjects\r\n }\r\n \r\n userConsoleMatrix.push(userData);\r\n \r\n }\r\n }\r\n return {usersMetadata:usersMetadataMatrix,schoolTerminalData:schoolTerminalMatrix,userConsoleData: userConsoleMatrix}\r\n }\r\n \r\n deatilData_Excel(userConsoleMatrix: any,resourceMetadataMatrix: any){\r\n // console.log(\"resourceMetadataMatrix\",resourceMetadataMatrix);\r\n \r\n let currentDate: any;\r\n let resourceMatrixForExcel = new Array();\r\n resourceMatrixForExcel = [];\r\n for (let i = 0; i <userConsoleMatrix.length; i++) {\r\n let userID:any;\r\n let startTime: any;\r\n let endTime: any;\r\n let duration: any;\r\n let terminalIP: any;\r\n let subject: any;\r\n let grade: any;\r\n let chapter: any;\r\n let resourceType: any;\r\n let resourceTitle: any;\r\n let teachingpoint: any;\r\n let location: any;\r\n let teacherName: any;\r\n let teacherSubject: any;\r\n \r\n let resourceMetadataIDs: any;\r\n let resourceArrayForExcel = new Array();\r\n \r\n\r\n userID = userConsoleMatrix[i].userId;\r\n //----------------- for subject and Name\r\n teacherSubject = userConsoleMatrix[i].userSubjects;\r\n teacherName = userConsoleMatrix[i].userName;\r\n //----------------- for start Time and EndTime \r\n if ((userConsoleMatrix[i].startTime != undefined && userConsoleMatrix[i].startTime != \"\") && (userConsoleMatrix[i].endTime != undefined&&userConsoleMatrix[i].endTime != \"\")) {\r\n startTime = userConsoleMatrix[i].startTime.toLocaleTimeString('en-US', { hour12: true });\r\n endTime = userConsoleMatrix[i].endTime.toLocaleTimeString('en-US', { hour12: true });\r\n currentDate = userConsoleMatrix[i].startTime.getDate() + '/' + (userConsoleMatrix[i].startTime.getMonth()+1) + '/' + userConsoleMatrix[i].startTime.getFullYear();\r\n }\r\n //----------------- for duration\r\n duration = Math.floor(userConsoleMatrix[i].duration);\r\n //----------------- for Terminal loaction and terminal IP\r\n location = userConsoleMatrix[i].terminalLocation;\r\n terminalIP = userConsoleMatrix[i].terminalIP;\r\n let roomDetail = location + ' ' + terminalIP;\r\n let locationName = location;\r\n let terminalIPAddress = terminalIP;\r\n resourceMetadataIDs = userConsoleMatrix[i].resourceMetauserConsoleData;\r\n \r\n if (resourceMetadataIDs.length == 0) {\r\n subject = '';\r\n grade = '';\r\n chapter = '';\r\n teachingpoint = '';\r\n resourceTitle = '';\r\n resourceType = '';\r\n resourceArrayForExcel = [teacherName,teacherSubject,currentDate,startTime,endTime,duration,locationName, terminalIPAddress,subject,grade,chapter,teachingpoint,resourceTitle,resourceType,userID];\r\n resourceMatrixForExcel.push(resourceArrayForExcel);\r\n }else{\r\n for (let k = 0; k < resourceMetadataIDs.length; k++) {\r\n for (let i = 0; i < resourceMetadataMatrix.length; i++) {\r\n // resouseID:resouseID,\r\n // subject:subject,\r\n // grade:grade,\r\n // chapter:chapter,\r\n // teachingpoint:teachingpoint,\r\n // type:type,\r\n // title:title\r\n if (resourceMetadataIDs[k] === resourceMetadataMatrix[i].resouseID) {\r\n\r\n subject = resourceMetadataMatrix[i].subject;\r\n grade = resourceMetadataMatrix[i].grade;\r\n chapter = resourceMetadataMatrix[i].chapter;\r\n teachingpoint = resourceMetadataMatrix[i].teachingpoint;\r\n resourceTitle = resourceMetadataMatrix[i].title;\r\n resourceType = this.getDisplaytypeValue(resourceMetadataMatrix[i].type);\r\n // FOR EXCEL\r\n resourceArrayForExcel = [teacherName,teacherSubject,currentDate,startTime,endTime,duration,locationName, terminalIPAddress,subject,grade,chapter,teachingpoint,resourceTitle,resourceType,userID];\r\n resourceMatrixForExcel.push(resourceArrayForExcel);\r\n teacherName = '';\r\n teacherSubject= '';\r\n currentDate= '';\r\n startTime= '';\r\n endTime= '';\r\n locationName= ''; \r\n terminalIPAddress= '';\r\n duration = '';\r\n \r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n return resourceMatrixForExcel;\r\n }\r\n deatilUsage_Excel(resourceMatrixForExcel){\r\n let userList=[];\r\n // console.log(\"resourceMatrixForExcel>>>>>>>>>>>>>>>>>>>\",resourceMatrixForExcel);\r\n \r\n if(resourceMatrixForExcel.length > 0){\r\n for(let i=0;i<resourceMatrixForExcel.length;i++){\r\n let data = {\r\n // Sr_No: i+1,\r\n Name:resourceMatrixForExcel[i][0],\r\n Subjects:resourceMatrixForExcel[i][1],\r\n Date:\tresourceMatrixForExcel[i][2],\r\n startTime:resourceMatrixForExcel[i][3],\r\n endTime:resourceMatrixForExcel[i][4],\r\n \"duration(mins)\":resourceMatrixForExcel[i][5],\r\n location:resourceMatrixForExcel[i][6],\r\n IP:resourceMatrixForExcel[i][7],\r\n subjectTitle:resourceMatrixForExcel[i][8],\r\n gradeTitle:resourceMatrixForExcel[i][9],\r\n Chapter:resourceMatrixForExcel[i][10],\r\n tpTitle:resourceMatrixForExcel[i][11],\r\n resourceTitle:resourceMatrixForExcel[i][12],\r\n resourceType:resourceMatrixForExcel[i][13],\r\n }\r\n userList.push(data);\r\n }\r\n \r\n } \r\n // console.log(\"userList\",userList);\r\n return userList; \r\n }\r\n userSummary_Excel(data,resourceMatrixForExcel){\r\n // console.log(\"resourceMatrixForExcel\",resourceMatrixForExcel)\r\n let userMetadataList = data.usersMetadata.userMetadata;\r\n let resourcelist = new Array();\r\n let resourceTypeList = new Array();\r\n let userObjectList= new Array();\r\n let classRooms= new Array();\r\n let datesAccess= new Array();\r\n let grades= new Array();\r\n let subjectTought= new Array();\r\n // let unique_resourceTypeList = []; \r\n let duration = 0;\r\n for (let i = 0; i < userMetadataList.length; i++) {\r\n resourcelist = [];\r\n resourceTypeList = [];\r\n classRooms = []; \r\n datesAccess = [];\r\n grades = [];\r\n subjectTought = [];\r\n \r\n duration = 0;\r\n // console.log(\"userMetadataList[i]\",userMetadataList);\r\n // console.log(\"resourceMatrixForExcel[i]\",[...new Set(resourceMatrixForExcel)]);\r\n for (let j = 0; j < resourceMatrixForExcel.length; j++){\r\n \r\n if(userMetadataList[i].userId === resourceMatrixForExcel[j][14]){\r\n if(resourceMatrixForExcel[j][12] != ''){\r\n resourcelist.push(resourceMatrixForExcel[j][12]);\r\n }\r\n \r\n if(resourceMatrixForExcel[j][13] != ''){\r\n resourceTypeList.push(resourceMatrixForExcel[j][13]);\r\n }\r\n if(resourceMatrixForExcel[j][5] != ''){\r\n duration = duration + resourceMatrixForExcel[j][5];\r\n }\r\n \r\n \r\n classRooms.push(resourceMatrixForExcel[j][6]);\r\n datesAccess.push(resourceMatrixForExcel[j][2]);\r\n grades.push(resourceMatrixForExcel[j][9]);\r\n subjectTought.push(resourceMatrixForExcel[j][8]);\r\n \r\n \r\n }\r\n }\r\n \r\n let ClassRooms:any; \r\n let DatesAccess:any; \r\n let Grades:any; \r\n let SubjectTought:any; \r\n let dayAccess:any; \r\n \r\n if(classRooms.length>0){\r\n ClassRooms = [...new Set(classRooms)][0];\r\n }else{\r\n ClassRooms = '';\r\n }\r\n if(datesAccess.length>0){\r\n dayAccess = [...new Set(datesAccess)].length;\r\n }else{\r\n dayAccess = '';\r\n }\r\n if(datesAccess.length>0){\r\n DatesAccess = [...new Set(datesAccess)][0];\r\n }else{\r\n DatesAccess = '';\r\n }\r\n if(grades.length>0){\r\n Grades = [...new Set(grades)][0];\r\n }else{\r\n Grades = ''\r\n }\r\n \r\n if(subjectTought.length>0){\r\n SubjectTought = [...new Set(subjectTought)][0];\r\n }else{\r\n SubjectTought = '';\r\n }\r\n // if(resourceTypeList.length>0){\r\n // unique_resourceTypeList = [...new Set(resourceTypeList)];\r\n \r\n // }\r\n // console.log(\"this.resourceTypes\",this.resourceTypes)\r\n let user = {\r\n Name:userMetadataList[i].fullName,\r\n Subjects:userMetadataList[i].userSubjects,\r\n duration:duration,\r\n ClassRooms:ClassRooms,\r\n DatesAccess:DatesAccess,\r\n DayAccess:dayAccess,\r\n Grades:Grades,\r\n SubjectTought:SubjectTought,\r\n AseestUsed:resourcelist,\r\n AssetType:resourceTypeList\r\n }\r\n userObjectList.push(user);\r\n \r\n }\r\n // console.log(\"userObjectList\",userObjectList)\r\n let userSummaryList = new Array();\r\n for(let i = 0; i < userObjectList.length; i++){\r\n const Assetcounts = [];\r\n //find count of present asset type\r\n let presentAsset =userObjectList[i].AssetType;\r\n presentAsset = [...new Set(presentAsset)];\r\n // console.log(\"presentAsset\",presentAsset)\r\n //find count of present asset count\r\n const sampleArray =userObjectList[i].AssetType;\r\n sampleArray.forEach(function (x) { Assetcounts[x] = (Assetcounts[x] || 0) + 1; });\r\n // find missing assets\r\n let missingAssets = this.resourceTypes.filter(n => !presentAsset.includes(n));\r\n // adding missing asset with count 0 in list\r\n missingAssets.forEach((element) => {\r\n Assetcounts[element] = 0;\r\n });\r\n // console.log(Assetcounts);\r\n let asset_media = {\r\n // Sr_No: i+1,\r\n Name:userObjectList[i].Name,\r\n Subjects_taught:userObjectList[i].Subjects,\r\n \" Duration(mins)\":userObjectList[i].duration,\r\n ClassRooms:userObjectList[i].ClassRooms,\r\n DaysAccsessed:userObjectList[i].DayAccess,\r\n DatesAccess:userObjectList[i].DatesAccess,\r\n Grades:userObjectList[i].Grades,\r\n Subjects:userObjectList[i].SubjectTought\r\n }\r\n const returnedTarget = Object.assign(asset_media, Assetcounts);\r\n userSummaryList.push(returnedTarget);\r\n\r\n }\r\n \r\n // console.log(\"userSummaryList\",userSummaryList);\r\n \r\n return userSummaryList;\r\n }\r\n\r\n // To GET DISPLAY TYPE\r\n getDisplaytypeValue(key: any) {\r\n let assetTypeConfig = [\r\n {\r\n type: \"asset_media\",\r\n display: \"Media\"\r\n },\r\n {\r\n type: \"asset_print\",\r\n display: \"Print\"\r\n },\r\n {\r\n type: \"quiz\",\r\n display: \"Quiz\"\r\n },\r\n {\r\n type: \"question\",\r\n display: \"Question\"\r\n },\r\n {\r\n type: \"chapter\",\r\n display: \"Chapter\"\r\n },\r\n {\r\n type: \"tp\",\r\n display: \"Topic\"\r\n },\r\n {\r\n type: \"whiteboard\",\r\n display: \"Whiteboard\"\r\n },\r\n {\r\n type: \"widget\",\r\n display: \"Widget\"\r\n },\r\n {\r\n type: \"casset_media\",\r\n display: \"cMedia\"\r\n },\r\n {\r\n type: \"casset_print\",\r\n display: \"cPrint\"\r\n },\r\n {\r\n type: \"cquiz\",\r\n display: \"cQuiz\"\r\n },\r\n {\r\n type: \"cquestion\",\r\n display: \"cQuestion\"\r\n },\r\n {\r\n type: \"image\",\r\n display: \"Image\"\r\n },\r\n {\r\n type: \"video\",\r\n display: \"Video\"\r\n },\r\n \r\n ];\r\n let displayValue = key;\r\n assetTypeConfig.forEach((value) => {\r\n if (value.type === key) {\r\n displayValue = value.display;\r\n }\r\n });\r\n return displayValue;\r\n \r\n }\r\n}\r\n","import { Component, OnInit, Output, ViewChild, Input, EventEmitter } from '@angular/core';\r\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\r\nimport { ExceldataService } from '../exceldata.service';\r\nimport { DatepickerOptions } from 'ng2-datepicker';\r\n@Component({\r\n selector: 'lib-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss']\r\n})\r\nexport class HeaderComponent implements OnInit {\r\n @Input() set data(res: any) {\r\n if(res!== null){\r\n this.loadData(res);\r\n } \r\n }\r\n @Output() userSelectedDate = new EventEmitter();\r\n\r\n myCalendar: any;\r\n calenderDate: any;\r\n currentDate: any;\r\n calenderCurrentDate: any;\r\n todayDate: any;\r\n refreshTimer = 0;\r\n refreshInterval: any;\r\n calenderEvent: any;\r\n message: any;\r\n intervalId: any;\r\n mydata :any;\r\n dataList: any;\r\n //for datepicker\r\n title = 'datepicker';\r\n date: Date = new Date();\r\n options: DatepickerOptions = {\r\n inputClass: 'input',\r\n calendarClass: 'datepicker-default',\r\n scrollBarColor: '#010001',\r\n format: 'dd/LL/yyyy',\r\n maxDate: new Date()\r\n };\r\n \r\n constructor(\r\n private excelService: ExceldataService,\r\n private pdService:PrincipalDashboardLibV2Service\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.getDefaultDate();\r\n this.startTimer();\r\n }\r\n getDefaultDate() {\r\n let date = new Date();\r\n this.getDateFormat(date);\r\n this.todayDate = this.calenderCurrentDate;\r\n }\r\n dateSelected(e: any){\r\n this.getDateFormat(e);\r\n this.mydata = null;\r\n this.refreshChart();\r\n }\r\n getDateFormat(date:any){\r\n let day = date.getDate();\r\n let month = date.getMonth() + 1;\r\n let year = date.getFullYear();\r\n let m;\r\n let d;\r\n if (month < 10) {\r\n m = \"0\" + month;\r\n } else {\r\n m = month;\r\n }\r\n if (day < 10) {\r\n d = \"0\" + day;\r\n } else {\r\n d = day;\r\n }\r\n let today = year + \"-\" + m + \"-\" + d;\r\n this.currentDate = today;\r\n this.calenderCurrentDate = today.split(\"-\").reverse().join(\"-\");\r\n }\r\n // selectDate(e: any) {\r\n // this.calenderEvent = e;\r\n // let today = e.target.value;\r\n // // console.log(\"e.target.value\", e.target.value);\r\n // today = today.split(\"-\").reverse().join(\"-\");\r\n // this.calenderCurrentDate = today;\r\n // this.mydata = null;\r\n // this.refreshChart();\r\n // // this.userSelectedDate.emit(this.calenderCurrentDate);\r\n // ;\r\n // console.log(\" IN --> 5\");\r\n // }\r\n refreshChart() {\r\n this.stopTimer();\r\n this.refreshTimer = 0;\r\n if(this.calenderCurrentDate === this.todayDate){\r\n this.countDown();\r\n }\r\n this.userSelectedDate.emit(this.calenderCurrentDate);\r\n }\r\n\r\n startTimer() {\r\n this.countDown();\r\n }\r\n stopTimer() {\r\n this.clearTimer();\r\n this.message = ``;\r\n }\r\n clearTimer() {\r\n this.refreshTimer = 0;\r\n window.clearInterval(this.intervalId);\r\n }\r\n countDown() {\r\n console.log(\"countDown\")\r\n this.clearTimer();\r\n this.intervalId = window.setInterval(() => {\r\n this.refreshTimer -= 1;\r\n if (this.refreshTimer === 0) {\r\n this.refreshChart();\r\n this.message = '';\r\n } else {\r\n if (this.refreshTimer < 0) {\r\n this.refreshTimer = 300;\r\n } // reset\r\n this.message = `${this.refreshTimer}`;\r\n }\r\n }, 1000);\r\n }\r\n timeConvert(n: any) {\r\n var num = n;\r\n var hours = num / 60;\r\n var rhours = Math.floor(hours);\r\n var minutes = (hours - rhours) * 60;\r\n var rminutes = Math.round(minutes);\r\n return rhours + ':' + rminutes;\r\n }\r\n // currentdataList: any;\r\n // currentResoursedataList:any;\r\n loadData(response: any){\r\n if(response){\r\n this.mydata = JSON.parse(response);\r\n if (this.mydata) {\r\n //get current data list\r\n let genarateUserReqiuredData = this.excelService.genarateUserReqiuredData_Excel(this.mydata);\r\n let currentdataList =genarateUserReqiuredData.userConsoleData;\r\n // resoureMetadata list\r\n let currentResoursedataList = this.excelService.genarateResourseReqiuredData_Excel(this.mydata);\r\n \r\n let deatilData = this.excelService.deatilData_Excel(currentdataList,currentResoursedataList);\r\n let userDetails_data = this.excelService.deatilUsage_Excel(deatilData);\r\n let UserSummary = this.excelService.userSummary_Excel(this.mydata,deatilData);\r\n \r\n let schoolDetails = this.mydata.schoolMetadata.school;\r\n let userDetails = userDetails_data;\r\n let terminalDetails = this.mydata.schoolTerminals.schoolTerminal;\r\n // console.log(\"schoolDetails\",schoolDetails);\r\n // console.log(\"UserSummary\",UserSummary);\r\n // console.log(\"terminalDetails\",terminalDetails);\r\n // console.log(\"userDetails\",userDetails);\r\n \r\n this.dataList = [\r\n [schoolDetails],\r\n UserSummary,\r\n terminalDetails,\r\n userDetails\r\n ]\r\n }\r\n }\r\n \r\n }\r\n exportReport(){\r\n if(this.mydata){\r\n this.excelService.exportAsExcelFile(this.dataList, 'UsageReport-'+ this.calenderCurrentDate);\r\n }\r\n \r\n }\r\n ngOnDestroy() {\r\n this.clearTimer();\r\n }\r\n \r\n}\r\n","import { Component, OnInit ,Input} from '@angular/core';\r\nimport { PrincipalDashboardLibV2Service } from '../principal-dashboard-lib-v2.service';\r\nimport { ChartType } from 'angular-google-charts';\r\n\r\n@Component({\r\n selector: 'lib-tableview',\r\n templateUrl: './tableview.component.html',\r\n styleUrls: ['./tableview.component.scss'],\r\n})\r\n\r\nexport class TableviewComponent implements OnInit {\r\n @Input() set data(res: any) {\r\n if(res!== null){\r\n this.loadTable(res);\r\n }\r\n }\r\n constructor(\r\n private pdService: PrincipalDashboardLibV2Service\r\n ) {}\r\n resourseMetadata: any;\r\n tableRow: any;\r\n userMetadata: any;\r\n tableViewDiv: any;\r\n tblBody: any;\r\n myXmlData: any;\r\n myChartType = ChartType.Table;\r\n currentdataList:any;\r\n currentResoursedataList:any;\r\n tableViewData:any;\r\n alluserList:any;\r\n isUserWise = true;\r\n \r\n ngOnInit(): void {\r\n \r\n }\r\n loadTable(response: any){\r\n // let parse = new DOMParser();\r\n // this.myXmlData = parse.parseFromString(response, 'application/xml');\r\n if(response){\r\n this.myXmlData = JSON.parse(response);\r\n if(this.myXmlData){\r\n // get current data list\r\n let genarateUserReqiuredData = this.pdService.genarateUserReqiuredData(this.myXmlData);\r\n this.currentdataList =genarateUserReqiuredData.userConsoleData;\r\n // get all user list \r\n let fetchAlluserList = this.pdService.allUserChartData()\r\n this.alluserList = fetchAlluserList.fordurationTable;\r\n // resoureMetadata list\r\n this.currentResoursedataList = this.pdService.genarateResourseReqiuredData(this.myXmlData);\r\n \r\n }\r\n }\r\n \r\n \r\n this.tableViewDiv = document.getElementById('tableViewDiv');\r\n this.tableRow = document.getElementById('tableRow');\r\n this.tblBody = document.getElementById('tblBody');\r\n this.tableViewDiv.style.display = 'none';\r\n \r\n this.pdService.chartType.subscribe((data) => {\r\n if (data) {\r\n this.updateChartType(data);\r\n }\r\n });\r\n this.pdService.isUserWise_data.subscribe((data) => {\r\n this.updateDataType(data);\r\n });\r\n this.pdService.isAllUsers.subscribe((data) => {\r\n if(data){\r\n this.showAllUser();\r\n }else{\r\n this.showCurrentDataUser();\r\n }\r\n \r\n });\r\n }\r\n showCurrentDataUser() {\r\n this.tableViewData = this.pdService.dataForTableView(this.currentdataList,this.currentResoursedataList);\r\n if(this.tableViewData){\r\n this.ueserWiseTableView(this.tableViewData);\r\n }\r\n }\r\n showAllUser() {\r\n this.tableViewData = this.pdService.dataForTableView(this.alluserList ,this.currentResoursedataList);\r\n if(this.tableViewData){\r\n this.ueserWiseTableView(this.tableViewData);\r\n }\r\n }\r\n updateDataType(dataType: any) {\r\n this.isUserWise = dataType;\r\n }\r\n updateChartType(dataType: any) {\r\n this.myChartType = dataType;\r\n if (this.myChartType == ChartType.Timeline) {\r\n this.tableViewDiv.style.display = 'none';\r\n } else {\r\n this.tableViewDiv.style.display = 'block';\r\n }\r\n }\r\n \r\n ueserWiseTableView(resoureMetadata: any) {\r\n // this.deleterow(\"tableRow\");\r\n document.getElementById(\"tblBody\").innerHTML = \"\";\r\n let labelArray = new Array();\r\n let cnt = 0;\r\n for (let i = 0; i < resoureMetadata.length; i++) {\r\n for (let j = 0; j < 12; j++) {\r\n let label = document.createElement('label');\r\n label.appendChild(document.createTextNode(resoureMetadata[i][j]));\r\n if (label.textContent === 'undefined' || label.textContent===undefined) {\r\n label.textContent = '';\r\n }\r\n labelArray.push(label);\r\n // console.log(\"label\",label);\r\n }\r\n }\r\n for (let j = 0; j <= resoureMetadata.length; j++) {\r\n let row = document.createElement('tr');\r\n \r\n let cell: any;\r\n for (let i = 0; i < 12; i++) {\r\n cell = document.createElement('td');\r\n \r\n if (cnt < labelArray.length) {\r\n cell.appendChild(labelArray[cnt]);\r\n row.appendChild(cell);\r\n }\r\n cnt++;\r\n }\r\n this.tblBody.appendChild(row);\r\n // this.tableRow.appendChild(this.tblBody);\r\n }\r\n \r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { PrincipalDashboardLibV2Component } from './principal-dashboard-lib-v2.component';\r\n\r\nimport { ChartheaderComponent } from './chartheader/chartheader.component';\r\nimport { ChartviewComponent } from './chartview/chartview.component';\r\nimport { DetailedviewComponent } from './detailedview/detailedview.component';\r\nimport { HeaderComponent } from './header/header.component';\r\nimport { TableviewComponent } from './tableview/tableview.component';\r\nimport { GoogleChartsModule } from 'angular-google-charts';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DatepickerModule } from 'ng2-datepicker';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ChartheaderComponent,\r\n ChartviewComponent,\r\n DetailedviewComponent,\r\n HeaderComponent,\r\n TableviewComponent,\r\n PrincipalDashboardLibV2Component\r\n ],\r\n imports: [\r\n CommonModule,\r\n GoogleChartsModule,\r\n DatepickerModule\r\n ],\r\n exports: [\r\n PrincipalDashboardLibV2Component\r\n ]\r\n})\r\nexport class PrincipalDashboardLibV2Module { }\r\n"]}
|