{"version":3,"sources":["webpack:///./src/store/modules/analyticsStore.ts","webpack:///./src/services/analytics/analyticsService.ts","webpack:///./node_modules/core-js/internals/this-number-value.js","webpack:///./node_modules/core-js/modules/es.map.js","webpack:///./node_modules/core-js/modules/es.number.to-fixed.js"],"names":["AnalyticsModule","selectedScholarNavigationtab","selectedAttendanceAnalyticsTab","selectedSiteSessionAnalyticsTab","selectedFamilyEngagementTab","programDropdownValue","allPrograms","activePrograms","disabledPrograms","selectedProgramData","programSitesData","retentionProgramSitesData","disableButton","listOptions","APP_CONST","SCHOLARS_CSV_ATTENDANCE_LIST","siteSelected","id","value","siteGroupsData","sitesAnalyticsData","dropdownResponseStatus","isDoughNutEmptyState","isAnalyticsResponseReceived","doughnutDataFormat","Declined","Waitlist","Pending","dataloaded","dropdownDisabled","centerTextDataObj","name","TOTAL_SUBMITTED","getApplicationResponseStatus","responseStatus","applicationSitesData","applicationSelected","colorsList","COLORS_LINE_CHART","chartDataFromAPI","labels","datasets","responseReceived","isAllSelectSiteRequired","groupsList","selectedSite","attendenceCompletionData","selectedGroupIds","adaSettingObj","authKey","retentionSetitngsObj","qualityPercentage","enrollmentSettingObj","applicationObj","completionCSVlistOptions","SCHOLARS_CSV_COMPLETION_LIST","disableButtonCompletion","chartDataFromAPIQuality","categories","profLearningRoles","JSON","parse","stringify","PROF_LEARNING_ROLES_LIST","profLearningData","totalCount","completeProfLearningData","retensionCSVlistOptions","SCHOLARS_CSV_RETENSION_LIST","disableButtonRetension","enrollmentCSVlistOptions","SCHOLARS_CSV_ENROLLMENT_LIST","disableButtonEnrollment","disableButtonConsolidatedRoster","disableButtonProfessionalLearning","isEnrollmentLoaderVisible","isCompletionLineChartVisible","familyEnagementFamilyData","activeMobileUsers","totalActiveAccounts","totalDirectMessages","totalLikedPosts","familyEnagementTeamData","totalActiveMobileUsers","totalMessagesToGuardians","totalMessagesToTeamMembers","totalPosts","adaWeekGraphDAta","retentionGraphData","adaBarData","retentionBarData","adaProgramPercent","retentionProgramPercent","completionProgramPercent","roleCounts","5","6","7","roleNames","roleColors","profLearningSettingsObj","qualitySetitngsObj","disableAdaProgramdropdown","isLineChartLoaderVisible","isCompletionBarChartLoaderVisible","disable","this","val","roles","filteredData","selectedLabels","filteredCourseIds","length","size","SITE_LINE_BREAK_SIZE","numChunks","chunks","forEach","course","checked","push","labelName","Math","ceil","Array","i","o","substr","data","dataValues","roleIds","unSelectedRoleIds","role","includes","roleId","userCount","hasOwnProperty","dataItem","x","label","backgroundColor","borderWidth","TWO","lineTension","ZERO","fill","FALSE","pointRadius","hoverRadius","THREE","borderColor","pointBackgroundColor","response","averagePercentage","TRUE","possibleChk","dataSet","obj","possible","site","options","option","optionIndex","isAllSelect","status","isEmpty","tabKey","tabName","dropdown","filter","program","ONE","programData","session","sessionId","sessionName","programSites","programId","result","siteIds","enrollmentData","APP_UTILITIES","getFilteredColumns","getAnalyticsDetail","authTokenKeyToManage","allSites","dropdownList","storedSite","isNoSitesSelected","Object","keys","every","element","programSitesAnalyticsDetail","siteResultData","group","applicationData","applicationSites","then","allApplications","application","applicationId","selectedApplication","stored","Applicationarray","ele","loaded","selectedApplications","chartDataQuality","totalAverage","Number","toFixed","points","key","y","STYLE","COLOR","BLUE_700","temporaryValue","randomIndex","chartData","currentIndex","floor","random","indexColor","applicationName","selectedGroups","groups","assign","setFilteredColumns","settingsObj","highestRole","getCookie","selectedTab","attendanceAdaData","mutateadaSettingObj","siteResponse","siteId","getGroupsBySiteid","allGroups","SEVEN","myGroup","classroomName","mutateSelectedSite","mutateSelectedGroups","adaCsvEnableDisableItems","retentionData","mutateRetentionSettingObj","retensionCsvEnableDisableItems","sites","mutateGroupsList","completionCsvEnableDisableItems","emptyChartData","applicationSelectedByUser","applicationAnalyticsDetail","BLANK","emptyQualityChartData","qualityAnalyticsDetail","sitesResponse","groupIds","completionRes","highest_role","HIGHEST_ROLE","ROLE_TYPE_STAFF","MINUS_ONE","groupId","RESPONSE_200","currentGroup","completionSiteAnalyticsDetail","visible","selectedProgramId","mutateCompletionProgramSites","RESPONSE_204","mutateRetentionProgramSites","completionFileDownloadtrue","setcompletionProgramPercentBlank","getAttenCompletionProgramData","completionAnalyticalData","undefined","filteredProgramData","find","programs","enrollmentCountByStatus","enrollmentStatus","REJECT","countByStatus","WAITLIST","PENDING","totalSubmissionsCount","payload","applicationIds","getApplicationData","accountId","getFamilyEngagementFamilyData","isNoAttendance","isAttendanceMarked","siteName","ZERO_BAR_HEIGHT","positive","tooltip","round","siteMap","Map","siteDetail","set","get","getFamilyEngagementTeamData","index","grp","params","emptyAdaWeekChartData","getAdaWeekLineData","emptyRetentionChartData","getRetentionWeekLineData","setEnrollmentLoaderState","selectedSites","programSitesGroupsList","resetCompletionData","siteGroupsList","mutateSelectedGroupIds","prorgamId","fileDownloadtrue","setAdaProgramPercentBlank","getAdaProgramData","retensionFileDownloadtrue","setretentionProgramPercentBlank","getRetentionProgramData","arg","adabySite","fileDownloadfalse","isDay","isNoGroupSelected","adabyWeek","adabyDay","attendanceScholarCheckin","attendanceScholarCheckout","adaScholarDetailCSVDownload","scholarDailyAttendanceCSVDownload","csvType","completionCSVDownload","completionFileDownloadfalse","retensionCSVDownload","retensionFileDownloadfalse","DOWNLOAD_CONSOLIDATED_ROSTER_CSV_KEY","enrollmentFileDownloadtrue","enrollmentCSVDownload","enrollmentFileDownloadfalse","siteCode","consolidatedScholarRosterDownloadtrue","consolidatedScholarCSVDownload","consolidatedScholarRosterDownloadfalse","counts","RESPONSE_400","programIds","getRoleWiseUsersByProgramId","ds","isExists","findIndex","toString","splice","numerator","denominator","clearCategories","professionalLearningFileDownloadtrue","getProfessionalLearningDetails","qualityData","drillDownSiteId","mutateQualitySettingObj","selectedCourses","selectedRoles","professionalLearningData","coursesList","latestCourse","professionalLearningCSVDownload","professionalLearningFileDownloadfalse","selectedprogramSites","barData","HUNDRED","initInterval","finalInterval","maxYY","map","enrolledScholars","maxYValue","max","scholarCapacity","categoryIds","categoriesList","category","legends","unCheckedList","rolesList","color","count","VuexModule","tslib_1","Mutation","Action","commit","Module","namespaced","store","dynamic","getModule","programRecruitment","httpClient","API_CONST","ANALYTICS_PROGRAM_RECRUITMENT","statusText","catch","error","PROGRAM_SESSIONS_LIST","httpEnrollmentClient","PROGRAM_SITES_APPLICATION","httpCMSAnalyticsClient","PROGRAM_SITES_ANALYTIC_LIST","toUpperCase","join","APPLICATION_ANALYTIC_LIST","unassignedgroups","STAFF_ROLE_ID","ANALYTICS_RETENTION","applicationSubmissionByStatus","url","SCHOLARS_APPLICATIONS_DROPDOWN_SUBMISSION_STATUS","httpClientEnrollment","temp","window","URL","createObjectURL","Blob","link","document","createElement","fileName","headers","split","replace","href","setAttribute","body","appendChild","target","click","totalWeeklySubmissions","SCHOLARS_APPLICATIONS_DROPDOWN_SUBMISSION_WEEKLY","SCHOLARS_ATTENDANCE_DROPDOWN_SITE","SCHOLARS_ATTENDANCE_DROPDOWN_WEEK","SCHOLARS_ATTENDANCE_DROPDOWN_DAY","SCHOLARS_ATTENDANCE_DROPDOWN_CHECK_IN","SCHOLARS_ATTENDANCE_DROPDOWN_CHECK_OUT","ATTENDENCE_SITE_ANALYTICS_LIST","ANALYTICS_ADA","ATTENDENCE_COMPLETION_PROGRAM_DETAILS","QUALITY_ANALYTIC_LIST","COMPLETION_DOWNLOAD_CSV","RETENSION_DOWNLOAD_CSV","PROFESSIONAL_LEARNING_DOWNLOAD_CSV","post","DOWNLOAD_ROASTER","ColumnsToHide","ENROLLMENT_DOWNLOAD_CSV","PROFESSIONAL_LEARNING_DETAILS","ADA_SCHOLAR_DETAILS_DOWNLOAD_CSV","SCHOLAR_DAILY_ATTENDANCE_DOWNLOAD_CSV","classof","module","exports","TypeError","collection","collectionStrong","init","arguments","$","toInteger","thisNumberValue","repeat","fails","nativeToFixed","pow","n","acc","log","x2","FORCED","call","proto","forced","fractionDigits","e","z","j","k","number","fractDigits","sign","multiply","c","c2","divide","dataToString","s","t","String","RangeError","slice"],"mappings":"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","file":"js/chunk-3f7dba6f.3577fb06674f0e12106b.1729289171026.min.js","sourcesContent":["import {\n Action,\n Module,\n Mutation,\n VuexModule,\n getModule\n} from 'vuex-module-decorators';\nimport { CsvPayload_Week_Day, IAdaWeekLinePayload, IApplicationPayload, ICsvPayload, IGroupsBySiteid, centerData, doughnutDataFormat, familyEnagementFamilyData, familyEnagementTeamData, responseStatus } from '@/Model/model';\nimport { adaScholarDetailCSVDownload, adabyDay, adabySite, adabyWeek, applicationAnalyticsDetail, applicationSites, attendanceScholarCheckin, attendanceScholarCheckout, completionCSVDownload, completionSiteAnalyticsDetail, consolidatedScholarCSVDownload, enrollmentCSVDownload, getAdaProgramData, getAttenCompletionProgramData, getProfessionalLearningDetails, getRetentionProgramData, getRetentionWeekLineData, professionalLearningCSVDownload, programRecruitment, programSites, programSitesAnalyticsDetail, programSitesGroupsList, qualityAnalyticsDetail, retensionCSVDownload, scholarDailyAttendanceCSVDownload } from '@/services/analytics/analyticsService';\nimport { getAdaWeekLineData, getGroupsBySiteid, getRoleWiseUsersByProgramId } from '@/services/userService/users-api';\nimport { getApplicationData, getFamilyEngagementTeamData } from '@/services/dashboard/dashboardService';\n\nimport APP_CONST from '@/constants/AppConst';\nimport APP_UTILITIES from '@/utilities/commonFunctions';\nimport { getFamilyEngagementFamilyData } from '../../services/dashboard/dashboardService';\nimport store from '@/store';\n\n@Module({\n namespaced: true,\n name: 'analytics',\n store,\n dynamic: true\n})\n\nclass AnalyticsModule extends VuexModule {\n\n public selectedScholarNavigationtab: string = '';\n public selectedAttendanceAnalyticsTab: string = '';\n public selectedSiteSessionAnalyticsTab: string = 'Week';\n public selectedFamilyEngagementTab: string = '';\n public programDropdownValue: any = { allPrograms: [], activePrograms: [], disabledPrograms: [] };\n public selectedProgramData: any = {};\n public programSitesData: any = [];\n public retentionProgramSitesData: any = [];\n public disableButton: boolean = false;\n public listOptions: any = APP_CONST.SCHOLARS_CSV_ATTENDANCE_LIST;\n public siteSelected: any = { id: 0, value: '' };\n public siteGroupsData: any = [];\n public sitesAnalyticsData: any = [];\n public dropdownResponseStatus: number = 0;\n public isDoughNutEmptyState: boolean = false;\n public isAnalyticsResponseReceived: boolean = false;\n public doughnutDataFormat: doughnutDataFormat = {\n Declined: 0,\n Waitlist: 0,\n Pending: 0\n };\n public dataloaded: boolean = false;\n public dropdownDisabled: boolean = true;\n public centerTextDataObj: centerData = {\n name: 0,\n value: APP_CONST.TOTAL_SUBMITTED\n };\n public getApplicationResponseStatus: responseStatus = { responseStatus: 0 };\n public applicationSitesData: any = [];\n public applicationSelected: any = [];\n public colorsList: Array = APP_CONST.COLORS_LINE_CHART;\n public chartDataFromAPI: any = { labels: [], datasets: [] };\n public responseReceived: boolean = false;\n public isAllSelectSiteRequired: boolean = true;\n public groupsList: any = [];\n public selectedSite: any = '';\n public attendenceCompletionData: any = { datasets: [], labels: [] };\n public selectedGroupIds: any = [];\n public adaSettingObj: any = {};\n public authKey: string = '';\n public retentionSetitngsObj: any = {};\n public qualityPercentage: string = '--';\n public enrollmentSettingObj: any = {};\n public applicationObj: any = {};\n public completionCSVlistOptions: any = APP_CONST.SCHOLARS_CSV_COMPLETION_LIST;\n public disableButtonCompletion: boolean = false;\n public chartDataFromAPIQuality: any = { labels: [], datasets: [] };\n public categories: any = [];\n public profLearningRoles: any = JSON.parse(JSON.stringify(APP_CONST.PROF_LEARNING_ROLES_LIST));\n public profLearningData: any = { labels: [], datasets: [], totalCount: '--' };\n public completeProfLearningData: any = { labels: [], datasets: [] };\n public retensionCSVlistOptions: any = APP_CONST.SCHOLARS_CSV_RETENSION_LIST;\n public disableButtonRetension: boolean = false;\n public enrollmentCSVlistOptions: any = APP_CONST.SCHOLARS_CSV_ENROLLMENT_LIST;\n public disableButtonEnrollment: boolean = false;\n public disableButtonConsolidatedRoster: boolean = false;\n public disableButtonProfessionalLearning: boolean = false;\n public isEnrollmentLoaderVisible: boolean = false;\n public isCompletionLineChartVisible: boolean = false;\n\n public familyEnagementFamilyData: familyEnagementFamilyData = {\n activeMobileUsers: 0,\n totalActiveAccounts: 0,\n totalDirectMessages: 0,\n totalLikedPosts: 0\n };\n public familyEnagementTeamData: familyEnagementTeamData = {\n totalActiveMobileUsers: 0,\n totalMessagesToGuardians: 0,\n totalMessagesToTeamMembers: 0,\n totalPosts: 0\n };\n public adaWeekGraphDAta: any = { labels: [], datasets: [] };\n public retentionGraphData: any = { labels: [], datasets: [] };\n public adaBarData: any = [];\n public retentionBarData: any = [];\n public adaProgramPercent: string = '--';\n public retentionProgramPercent: string = '--';\n public completionProgramPercent: string = '--';\n public roleCounts: any = { 5: 0, 6: 0, 7: 0 };\n public roleNames: any = { 5: 'Program Admin', 6: 'Session Admin', 7: 'Staff' };\n public roleColors: any = { 5: '#ed589d', 6: '#6c63f0', 7: '#3aacff' };\n public profLearningSettingsObj: any = {};\n public qualitySetitngsObj: any = {};\n public disableAdaProgramdropdown: boolean = false;\n public isLineChartLoaderVisible: boolean = false;\n public isCompletionBarChartLoaderVisible: boolean = false;\n\n get isADAProgramdropdownDisabled() {\n return this.disableAdaProgramdropdown;\n }\n\n get selectedGroupIdsList() {\n return this.selectedGroupIds;\n }\n\n get isEnrollmentLoader() {\n return this.isEnrollmentLoaderVisible;\n }\n\n get selectedSiteData() {\n return this.selectedSite;\n }\n\n get isLineChartCompletionVisible() {\n return this.isCompletionLineChartVisible;\n }\n\n get siteGroupsList() {\n return this.groupsList;\n }\n get totalQualityPercent() {\n return this.qualityPercentage;\n }\n\n get getComplProgramPercentage() {\n return this.completionProgramPercent;\n }\n\n get familyEnagementFamilyDataObj() {\n return this.familyEnagementFamilyData;\n }\n\n get adaProgramPercentage() {\n return this.adaProgramPercent;\n }\n\n get retentionProgramPercentage() {\n return this.retentionProgramPercent;\n }\n\n get adaBarGraphData() {\n return this.adaBarData;\n }\n\n get retentionBarGraphData() {\n return this.retentionBarData;\n }\n\n get familyEnagementTeamDataObj() {\n return this.familyEnagementTeamData;\n }\n get adaWeekLineData() {\n return this.adaWeekGraphDAta;\n }\n\n get adaCsvDropdown() {\n return this.listOptions;\n }\n\n get retentionLineData() {\n return this.retentionGraphData;\n }\n\n get selectedScholarNavigationtabValue() {\n return this.selectedScholarNavigationtab;\n }\n\n get selectedAttendanceAnalyticsTabValue() {\n return this.selectedAttendanceAnalyticsTab;\n }\n\n get selectedSiteSessionAnalyticsTabValue() {\n return this.selectedSiteSessionAnalyticsTab;\n }\n\n get selectedFamilyEngagementTabValue() {\n return this.selectedFamilyEngagementTab;\n }\n\n get analyticsProgramDropdown() {\n return this.programDropdownValue;\n }\n\n get selectedprogramSites() {\n return this.programSitesData;\n }\n\n get selectedprogramSitesRetention() {\n return this.retentionProgramSitesData;\n }\n\n get disableDownloadButton() {\n return this.disableButton;\n }\n\n get applicationListResponseRecieved() {\n return this.responseReceived;\n }\n\n get chartDataQuality() {\n return this.chartDataFromAPIQuality;\n }\n\n get selectedSites() {\n const siteIds: any = [];\n if (this.selectedprogramSites.length) {\n this.selectedprogramSites.forEach((site: any) => {\n if (site.checked) {\n siteIds.push(site.id);\n }\n });\n }\n return siteIds;\n }\n\n get selectedSiteGroups() {\n return this.siteGroupsData;\n }\n\n get slectedProgram() {\n return this.selectedProgramData;\n }\n\n get programDropdownStatus() {\n return this.dropdownResponseStatus;\n }\n\n get doughNutData() {\n return this.doughnutDataFormat;\n }\n\n get isDataLoaded() {\n return this.dataloaded;\n }\n\n get centerTextData() {\n return this.centerTextDataObj;\n }\n\n get DoughNutEmptyState() {\n return this.isDoughNutEmptyState;\n }\n\n get applicationResponseStatus() {\n return this.getApplicationResponseStatus;\n }\n\n get applicationList() {\n return this.applicationSitesData;\n }\n get selectedApplications() {\n return this.applicationSelected;\n }\n\n get isDropdownDisable() {\n return this.dropdownDisabled;\n }\n\n get chartData() {\n return this.chartDataFromAPI;\n }\n get sitesAnalyticsDetails() {\n return this.selectedprogramSites.length ? this.sitesAnalyticsData : [];\n }\n\n get isAnalyticsDataReceived() {\n return this.isAnalyticsResponseReceived;\n }\n\n get barCompletionAnalyticalData() {\n const barData: any = [];\n if (this.sitesAnalyticsData && this.sitesAnalyticsData.dataSet && this.sitesAnalyticsData.dataSet.length) {\n const size: number = APP_CONST.SITE_LINE_BREAK_SIZE;\n let numChunks: number = 0;\n let chunks: any = [];\n this.sitesAnalyticsData.dataSet.forEach((data: any) => {\n let siteName: any = data.siteName;\n if (siteName && siteName.length > size) {\n numChunks = Math.ceil(siteName.length / size);\n chunks = new Array(numChunks);\n for (let i = 0, o = 0; i < numChunks; ++i, o += size) {\n chunks[i] = siteName.substr(o, size);\n }\n siteName = chunks;\n if (siteName.length > 3) {\n siteName = [siteName[0], siteName[1], siteName[2].substr(0, size - 1) + '…'];\n }\n }\n barData.push({ data: ((Math.round(data.result) == APP_CONST.ZERO) ? 0.3 : ((Math.round(data.result) > APP_CONST.HUNDRED) ? APP_CONST.HUNDRED : Math.round(data.result))), site: siteName, tooltip: `${Math.round(data.result)}%` });\n });\n }\n return barData;\n }\n\n get barChartAnalyticsData() {\n const barData: any = [];\n if (this.sitesAnalyticsData.length) {\n const size: number = APP_CONST.SITE_LINE_BREAK_SIZE;\n let numChunks: number = 0;\n let chunks: any = [];\n let initInterval: number = 0;\n let finalInterval: number = 0;\n const maxYY = this.sitesAnalyticsData.map((element: any) => {\n return element.enrolledScholars;\n });\n const maxYValue = Math.max(...maxYY);\n initInterval = maxYValue + (10 - (maxYValue % 10));\n finalInterval = ((initInterval * 0.5) / 100);\n this.sitesAnalyticsData.forEach((data: any) => {\n let siteName: any = data.siteName;\n if (siteName.length > size) {\n numChunks = Math.ceil(siteName.length / size);\n chunks = new Array(numChunks);\n for (let i = 0, o = 0; i < numChunks; ++i, o += size) {\n chunks[i] = siteName.substr(o, size);\n }\n siteName = chunks;\n if (siteName.length > 3) {\n siteName = [siteName[0], siteName[1], siteName[2].substr(0, size - 1) + '…'];\n }\n }\n\n barData.push({ data: ((data.enrolledScholars < finalInterval) ? finalInterval : data.enrolledScholars), site: siteName, tooltip: (data.scholarCapacity ? `${data.enrolledScholars}/${data.scholarCapacity}` : `${data.enrolledScholars}`), enrolledScholars: data.enrolledScholars });\n });\n }\n\n return barData;\n }\n\n get attendenceCompletionDetails() {\n return this.attendenceCompletionData;\n }\n\n get adaselectedSite() {\n return this.siteSelected;\n }\n\n get completionCsvDropdown() {\n return this.completionCSVlistOptions;\n }\n\n get disableDownloadCsvButtonCompletion() {\n return this.disableButtonCompletion;\n }\n\n get rolesList() {\n return this.profLearningRoles;\n }\n\n get categoriesList() {\n if (this.categories && (this.categories.length == APP_CONST.ONE)) {\n this.categories[0].checked = true;\n }\n return this.categories;\n }\n\n get selectedCategoryIds() {\n const categoryIds: any = [];\n if (this.categoriesList.length) {\n this.categoriesList.forEach((category: { id: number; checked: boolean; value: string }) => {\n if (category.checked) {\n categoryIds.push(category.id);\n }\n });\n }\n return categoryIds;\n }\n\n get selectedRoleIds() {\n const roleIds: any = [];\n if (this.profLearningRoles.length) {\n this.profLearningRoles.forEach((role: { id: number; checked: boolean }) => {\n if (role.checked) {\n roleIds.push(role.id);\n }\n });\n }\n return roleIds;\n }\n\n get prefLearningChartData() {\n return this.profLearningData;\n }\n\n get learningLegends() {\n const legends: any = [];\n const unCheckedList: any = [];\n if (this.rolesList && this.rolesList.length) {\n this.rolesList.forEach((role: any) => {\n if (role.checked) {\n legends.push({ id: role.id, name: role.value, color: role.color, count: role.count });\n } else {\n unCheckedList.push({ id: role.id, name: role.value, color: role.color, count: role.count });\n }\n });\n }\n return (this.rolesList.length != unCheckedList.length) ? legends : unCheckedList;\n }\n\n get retensionCsvDropdown() {\n return this.retensionCSVlistOptions;\n }\n\n get disableDownloadCsvButtonRetension() {\n return this.disableButtonRetension;\n }\n\n get getCompleteProfLearningData() {\n return this.completeProfLearningData;\n }\n\n @Mutation\n disableAdaProgramDropdown(disable: boolean) {\n this.disableAdaProgramdropdown = disable;\n }\n\n @Mutation\n completionBarChartLoaderVisible(val: boolean) {\n this.isCompletionBarChartLoaderVisible = val;\n }\n\n @Mutation\n mutateSelectedCategory(categories: any) {\n this.categories = categories;\n }\n\n @Mutation\n mutateSelectedRole(roles: any) {\n this.profLearningRoles = roles;\n }\n\n @Mutation\n filterProfessionalLearningData(filteredData: { roles: any; courses: any }) {\n const selectedLabels: string[] = [];\n this.profLearningData = { labels: [], datasets: [], totalCount: 0 };\n const filteredCourseIds: any[] = [];\n if (this.categories && this.categories.length) {\n const size: number = APP_CONST.SITE_LINE_BREAK_SIZE;\n let numChunks: number = 0;\n let chunks: any = [];\n this.categories.forEach((course: any) => {\n if (course.checked) {\n filteredCourseIds.push(course.id);\n let labelName: any = course.value;\n if (labelName.length > size) {\n numChunks = Math.ceil(labelName.length / size);\n chunks = new Array(numChunks);\n for (let i = 0, o = 0; i < numChunks; ++i, o += size) {\n chunks[i] = labelName.substr(o, size);\n }\n labelName = chunks;\n if (labelName.length > 3) {\n labelName = [labelName[0], labelName[1], labelName[2].substr(0, size - 1) + '…'];\n }\n }\n selectedLabels.push(labelName);\n }\n });\n selectedLabels.push('');\n }\n if (filteredCourseIds && filteredCourseIds.length) {\n this.profLearningData.labels = selectedLabels;\n const datasets: any = [];\n this.profLearningData.totalCount = 0;\n if (this.completeProfLearningData && this.completeProfLearningData.datasets && this.completeProfLearningData.datasets.length) {\n this.completeProfLearningData.datasets.forEach((data: any) => {\n const dataValues: any = { data: [] };\n let roleIds: number[] = [];\n const unSelectedRoleIds: number[] = [];\n filteredData && filteredData.roles && filteredData.roles.forEach((role: { id: number; checked: boolean }) => {\n if (role.checked) {\n roleIds.push(role.id);\n } else {\n unSelectedRoleIds.push(role.id);\n }\n });\n if (unSelectedRoleIds && filteredData && filteredData.roles && (filteredData.roles.length == unSelectedRoleIds.length)) {\n roleIds = unSelectedRoleIds;\n }\n if (roleIds && roleIds.length && roleIds.includes(data.roleId)) {\n this.profLearningData.totalCount += data.userCount;\n if (data.hasOwnProperty('data') && data.data.length) {\n data.data.forEach((dataItem: any) => {\n if (filteredCourseIds.includes(dataItem.x)) {\n dataValues.data.push(dataItem);\n }\n });\n }\n }\n\n datasets.push(\n {\n label: this.roleNames[data.roleId],\n backgroundColor: 'transparent',\n borderWidth: APP_CONST.TWO,\n lineTension: APP_CONST.ZERO,\n fill: APP_CONST.FALSE,\n pointRadius: 2.5,\n hoverRadius: APP_CONST.THREE,\n borderColor: this.roleColors[data.roleId],\n pointBackgroundColor: this.roleColors[data.roleId],\n data: dataValues.data,\n }\n );\n });\n this.profLearningData.datasets = datasets;\n }\n }\n }\n\n get disableDownloadCsvProfessionalLearningData() {\n return this.disableButtonProfessionalLearning;\n }\n\n get rolesCountList() {\n return this.roleCounts;\n }\n\n @Mutation\n resetProfessionalLearningData() {\n this.profLearningData = { labels: [], datasets: [], totalCount: 0 };\n }\n\n @Mutation\n clearCategories() {\n this.categories = [];\n }\n\n get enrollmentCsvDropdown() {\n return this.enrollmentCSVlistOptions;\n }\n\n get disableDownloadCsvButtonEnrollment() {\n return this.disableButtonEnrollment;\n }\n get disableDownloadConsolidatedScholarRoster() {\n return this.disableButtonConsolidatedRoster;\n }\n\n @Mutation\n mutateSitesAnalyticalData(response: any) {\n this.sitesAnalyticsData = response.data;\n if (this.sitesAnalyticsData && this.sitesAnalyticsData.hasOwnProperty('averagePercentage')) {\n this.completionProgramPercent = this.sitesAnalyticsData.averagePercentage ? this.sitesAnalyticsData.averagePercentage + '%' : '--';\n }\n if (this.sitesAnalyticsData && this.sitesAnalyticsData.hasOwnProperty('averagePercentage')) {\n this.disableButtonCompletion = this.sitesAnalyticsData.averagePercentage == APP_CONST.ZERO ? APP_CONST.TRUE : APP_CONST.FALSE;\n }\n let possibleChk = APP_CONST.ZERO;\n response.data.dataSet.length && response.data.dataSet.forEach((obj: any) => {\n possibleChk = possibleChk + obj.possible;\n });\n if (possibleChk == APP_CONST.ZERO) {\n this.completionProgramPercent = '--';\n }\n\n }\n\n @Mutation\n mutateSelectedSite(site?: any) {\n if (site) {\n this.siteSelected = site;\n this.selectedSite = site;\n } else {\n this.groupsList = [];\n this.selectedGroupIds = [];\n this.selectedSite = '';\n this.attendenceCompletionData = { datasets: [], labels: [] };\n }\n }\n\n @Mutation\n adaCsvEnableDisableItems() {\n this.listOptions = JSON.parse(JSON.stringify(this.listOptions));\n if (this.siteSelected && (this.siteSelected.id == 0)) {\n this.listOptions.options.forEach((option: any, optionIndex: number) => {\n if (optionIndex > APP_CONST.ZERO) {\n option.disable = true;\n }\n });\n } else {\n this.listOptions.options.forEach((option: any, optionIndex: number) => {\n if (optionIndex > APP_CONST.ZERO) {\n option.disable = false;\n }\n });\n }\n this.listOptions = JSON.parse(JSON.stringify(this.listOptions));\n }\n\n @Mutation\n completionCsvEnableDisableItems() {\n if ((this.selectedSite && (this.selectedSite.id == 0)) || (this.groupsList && (this.groupsList.length == 0))) {\n this.completionCSVlistOptions.options[1].disable = true;\n this.completionCSVlistOptions.options[2].disable = true;\n } else {\n this.completionCSVlistOptions.options[1].disable = false;\n this.completionCSVlistOptions.options[2].disable = false;\n }\n }\n\n @Mutation\n retensionCsvEnableDisableItems() {\n if ((this.siteSelected && (this.siteSelected.id == 0)) || (this.siteGroupsData && (this.siteGroupsData.length == 0))) {\n this.retensionCSVlistOptions.options[1].disable = true;\n this.retensionCSVlistOptions.options[2].disable = true;\n } else {\n this.retensionCSVlistOptions.options[1].disable = false;\n this.retensionCSVlistOptions.options[2].disable = false;\n }\n }\n\n @Mutation\n mutateSelectAllSite(isAllSelect: boolean) {\n this.isAllSelectSiteRequired = isAllSelect;\n }\n\n @Mutation\n public mutateApplicationStatus(status: { responseStatus: number }) {\n this.getApplicationResponseStatus = status;\n }\n\n @Mutation\n public mutateDropdownState(dropdownDisabled: boolean) {\n this.dropdownDisabled = dropdownDisabled;\n }\n\n @Mutation\n mutateDoughNutEmptyState(isEmpty: boolean) {\n this.isDoughNutEmptyState = isEmpty;\n }\n\n @Mutation\n mutateScholarNavigationSelection(tabKey: string) {\n this.selectedScholarNavigationtab = tabKey;\n }\n\n @Mutation\n mutateAnalyticsAttendanceTabSwitch(tabName: string) {\n this.selectedAttendanceAnalyticsTab = tabName;\n }\n\n @Mutation\n mutateAnalyticsSiteSessionTabSwitch(tabName: string) {\n this.selectedSiteSessionAnalyticsTab = tabName;\n }\n\n @Mutation\n mutateFamilyEngagementTab(tabName: string) {\n this.selectedFamilyEngagementTab = tabName;\n }\n\n @Mutation\n mutateAnalyticsProgramDropdown(dropdown: any) {\n const activePrograms: any = dropdown && dropdown.filter((program: any) => { return program.status == APP_CONST.ONE; });\n const disabledPrograms: any = dropdown && dropdown.filter((program: any) => { return program.status == APP_CONST.TWO; });\n this.programDropdownValue.allPrograms = dropdown;\n this.programDropdownValue.activePrograms = activePrograms;\n this.programDropdownValue.disabledPrograms = disabledPrograms;\n }\n\n @Mutation\n mutateSelectedProgramName(programData: any) {\n this.selectedProgramData = programData;\n }\n\n @Mutation\n resetCompletionData() {\n this.attendenceCompletionData = { datasets: [], labels: [] };\n }\n\n @Mutation\n resetSelectedProgramPerc() {\n this.completionProgramPercent = '--';\n }\n\n @Mutation\n mutateSelectedAttendenceProgramSites(response: any) {\n this.programSitesData = [];\n if (response && response.length) {\n this.programSitesData = [];\n this.selectedSite = '';\n response.forEach((session: any) => {\n if (!this.programSitesData.includes({ id: session.sessionId, value: session.sessionName })) {\n this.programSitesData.push({ id: session.sessionId, value: session.sessionName });\n }\n });\n }\n }\n\n @Mutation\n mutateSelectedRetentionProgramSites(response: any) {\n this.retentionProgramSitesData = [];\n if (response && response.length) {\n this.retentionProgramSitesData = [];\n response.forEach((session: any) => {\n if (!this.retentionProgramSitesData.includes({ id: session.sessionId, value: session.sessionName })) {\n this.retentionProgramSitesData.push({ id: session.sessionId, value: session.sessionName });\n }\n });\n }\n }\n\n @Mutation\n mutateQualityProgramSites(response: any) {\n this.programSitesData = [];\n if (response && response.length) {\n this.programSitesData = [];\n this.selectedSite = '';\n response.forEach((session: any) => {\n if (!this.programSitesData.includes({ id: session.sessionId, value: session.sessionName })) {\n this.programSitesData.push({ id: session.sessionId, value: session.sessionName });\n }\n });\n }\n }\n\n @Mutation\n async mutateSelectedProgramSites(response: { programId: number; getAnalyticsDetail?: boolean }) {\n const result = await programSites(response.programId);\n const siteIds: any = [];\n let enrollmentData: any = APP_UTILITIES.getFilteredColumns(`${this.authKey}-enrollmentSiteSessionData`);\n\n response.getAnalyticsDetail = !response.getAnalyticsDetail ? response.getAnalyticsDetail : true;\n\n this.isEnrollmentLoaderVisible = true;\n this.programSitesData = [];\n this.disableButtonEnrollment = true;\n this.disableButtonConsolidatedRoster = true;\n this.programSitesData = [];\n this.sitesAnalyticsData = [];\n this.attendenceCompletionData = { datasets: [], labels: [] };\n this.isAnalyticsResponseReceived = false;\n this.authKey = APP_UTILITIES.authTokenKeyToManage() ? APP_UTILITIES.authTokenKeyToManage() : '';\n\n if (enrollmentData && enrollmentData.length) {\n enrollmentData = JSON.parse(enrollmentData);\n this.enrollmentSettingObj = enrollmentData;\n }\n\n if (result.data && result.data.length) {\n if (APP_UTILITIES.getFilteredColumns(`${this.authKey}-enrollmentSiteSessionData`) && enrollmentData.hasOwnProperty([this.selectedProgramData.programId])) {\n let allSites: any[] = [];\n result.data.forEach((site: any) => {\n allSites = [...allSites, { id: site.sessionId, value: site.sessionName, checked: false }];\n });\n allSites.forEach((site: any) => {\n enrollmentData[this.selectedProgramData.programId].selectedSite.dropdownList.forEach((storedSite: any) => {\n if (site.id == storedSite.id) {\n site.checked = storedSite.checked;\n }\n });\n });\n this.programSitesData = allSites;\n let isNoSitesSelected: boolean = false;\n isNoSitesSelected = Object.keys(this.programSitesData).every((element: any) => !this.programSitesData[element].checked);\n\n if (isNoSitesSelected) {\n this.programSitesData.forEach((site: { id: any; checked: boolean }) => {\n siteIds.push(site.id);\n });\n } else {\n this.programSitesData.forEach((site: { id: any; checked: boolean }) => {\n if (site.checked) {\n siteIds.push(site.id);\n }\n });\n }\n } else {\n result.data.forEach((site: any) => {\n this.programSitesData = [...this.programSitesData, { id: site.sessionId, value: site.sessionName, checked: false }];\n siteIds.push(site.sessionId);\n });\n\n if (this.programSitesData && this.programSitesData.length == APP_CONST.ONE) {\n this.programSitesData[0].checked = APP_CONST.TRUE;\n }\n }\n\n if (response.getAnalyticsDetail) {\n if (siteIds.length) {\n const siteResultData = await programSitesAnalyticsDetail(response.programId, siteIds);\n this.sitesAnalyticsData = siteResultData.data;\n this.isEnrollmentLoaderVisible = false;\n\n if (this.sitesAnalyticsData && !this.sitesAnalyticsData.length) {\n this.disableButtonEnrollment = true;\n this.disableButtonConsolidatedRoster = true;\n } else {\n this.disableButtonEnrollment = false;\n this.disableButtonConsolidatedRoster = false;\n }\n\n this.isAnalyticsResponseReceived = true;\n }\n }\n }\n }\n\n\n @Mutation\n mutateGroupsList(group: any) {\n this.groupsList = group;\n }\n\n @Mutation\n mutateApplicationsList(result: any) {\n this.applicationSitesData = [];\n this.authKey = APP_UTILITIES.authTokenKeyToManage() ? APP_UTILITIES.authTokenKeyToManage() : '';\n if (result.data && result.data.length) {\n let applicationData: any = APP_UTILITIES.getFilteredColumns(`${this.authKey}-applicationapplicationname`);\n if (applicationData && applicationData.length) {\n applicationData = JSON.parse(applicationData);\n this.applicationObj = applicationData;\n }\n if (APP_UTILITIES.getFilteredColumns(`${this.authKey}-applicationapplicationname`) && applicationData.hasOwnProperty([this.selectedProgramData.programId])) {\n applicationSites(this.selectedProgramData.programId).then((response) => {\n let allApplications: any[] = [];\n if (response.data && response.data.length) {\n response.data.forEach((application: any) => {\n allApplications = [...allApplications, { id: application.applicationId, value: application.name, checked: false }];\n });\n }\n allApplications.forEach(application => {\n applicationData[this.selectedProgramData.programId].selectedApplication.forEach((stored: any) => {\n if (application.id == stored.id) {\n application.checked = stored.checked;\n }\n });\n });\n this.applicationSitesData = allApplications;\n let Applicationarray: any = [];\n this.applicationSitesData && this.applicationSitesData.forEach((element: any) => {\n if (element.checked) {\n Applicationarray = [...Applicationarray, element.id];\n }\n });\n this.applicationSelected = Applicationarray;\n });\n }\n else {\n this.applicationSelected = [];\n result.data.forEach((ele: any) => {\n this.applicationSitesData = [...this.applicationSitesData, { id: ele.applicationId, value: ele.name, checked: result.data.length == APP_CONST.ONE ? APP_CONST.TRUE : APP_CONST.FALSE }];\n });\n }\n }\n if (result && result.data && (!result.data.length || result.data.length == APP_CONST.ONE)) {\n this.dropdownDisabled = true;\n\n } else {\n this.dropdownDisabled = false;\n }\n this.responseReceived = true;\n }\n\n @Mutation\n mutateIsloaded(loaded: boolean) {\n this.dataloaded = loaded;\n }\n\n @Mutation\n mutateDropdownResponseStatus(status: number) {\n this.dropdownResponseStatus = status;\n }\n\n @Mutation\n mutateApplicationSelected(selectedApplication: any) {\n let selectedApplications: any = [];\n selectedApplication && selectedApplication.forEach((element: any) => {\n if (element.checked) {\n selectedApplications = [...selectedApplications, element.id];\n }\n });\n this.applicationSelected = selectedApplications;\n }\n\n @Mutation\n MutateQualityChartData(chartDataQuality: any) {\n this.chartDataFromAPIQuality = { labels: [], datasets: [] };\n if (chartDataQuality && chartDataQuality.data) {\n this.chartDataFromAPIQuality.labels = chartDataQuality.data.labels;\n this.chartDataFromAPIQuality.labels.push(['']);\n this.qualityPercentage = chartDataQuality.data && chartDataQuality.data.dataSet && chartDataQuality.data.dataSet[0].totalAverage ? Number(chartDataQuality.data.dataSet[0].totalAverage).toFixed(2) : '--';\n chartDataQuality && chartDataQuality.data.dataSet && chartDataQuality.data.dataSet.forEach((element: any) => {\n element.data.forEach((points: any) => {\n Object.keys(points).forEach(key => {\n points.y = points.y == 0 ? null : points.y;\n });\n });\n this.chartDataFromAPIQuality.datasets.push(\n {\n backgroundColor: 'transparent',\n borderWidth: APP_CONST.TWO,\n lineTension: APP_CONST.ZERO,\n fill: APP_CONST.FALSE,\n pointRadius: 2.5,\n hoverRadius: APP_CONST.THREE,\n borderColor: APP_CONST.STYLE.COLOR.BLUE_700,\n pointBackgroundColor: APP_CONST.STYLE.COLOR.BLUE_700,\n data: element.data,\n }\n );\n });\n }\n }\n\n @Mutation\n mutateChartData(chartDataFromAPI: any) {\n const chartData: any = { labels: [], datasets: [] };\n let currentIndex = this.colorsList.length, temporaryValue, randomIndex;\n while (0 !== currentIndex) {\n randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex -= 1;\n temporaryValue = this.colorsList[currentIndex];\n this.colorsList[currentIndex] = this.colorsList[randomIndex];\n this.colorsList[randomIndex] = temporaryValue;\n }\n let indexColor = 0;\n if (chartDataFromAPI && chartDataFromAPI.data) {\n chartData.labels = chartDataFromAPI.data && chartDataFromAPI.data.labels;\n chartData.labels = [...chartData.labels, ''];\n chartDataFromAPI && chartDataFromAPI.data.dataSet && chartDataFromAPI.data.dataSet.forEach((element: any) => {\n chartData.datasets.push(\n {\n label: element.applicationName,\n backgroundColor: 'transparent',\n borderWidth: APP_CONST.TWO,\n lineTension: APP_CONST.ZERO,\n fill: APP_CONST.FALSE,\n pointRadius: 2.5,\n hoverRadius: APP_CONST.THREE,\n borderColor: this.colorsList[indexColor],\n pointBackgroundColor: this.colorsList[indexColor],\n data: element.data,\n status: element.status\n }\n );\n indexColor++;\n if (indexColor == (this.colorsList.length + 1)) {\n indexColor = APP_CONST.ZERO;\n }\n });\n }\n this.chartDataFromAPI = chartData;\n }\n\n @Mutation\n emptyChartData() {\n this.chartDataFromAPI = { labels: [], datasets: [] };\n }\n\n @Mutation\n mutateAttendanceSiteSession(data: { programId: any; site: any; groups: any }) {\n const programId = data.programId;\n const siteId: any = data.site;\n if (!Object.keys(this.adaSettingObj).length) {\n this.adaSettingObj = {\n [programId]: {\n selectedSite: data.site,\n selectedGroups: data.groups\n }\n };\n }\n this.authKey = APP_UTILITIES.authTokenKeyToManage() ? APP_UTILITIES.authTokenKeyToManage() : '';\n if (this.adaSettingObj.hasOwnProperty([programId])) {\n this.adaSettingObj[programId] = {\n selectedSite: data.site,\n selectedGroups: data.groups\n };\n }\n else if (!this.adaSettingObj.hasOwnProperty([programId])) {\n const programData: any = {\n [programId]: {\n selectedSite: data.site,\n selectedGroups: data.groups\n }\n };\n Object.assign(this.adaSettingObj, JSON.parse(JSON.stringify(programData)));\n }\n APP_UTILITIES.setFilteredColumns(`${this.authKey}-attendanceSiteSessionData`, this.adaSettingObj);\n }\n\n @Mutation\n mutateRetentionSiteSession(data: { programId: any; site: any; groups: any }) {\n const programId = data.programId;\n if (!Object.keys(this.retentionSetitngsObj).length) {\n this.retentionSetitngsObj = {\n [programId]: {\n selectedSite: data.site,\n selectedGroups: data.groups\n }\n };\n }\n this.authKey = APP_UTILITIES.authTokenKeyToManage() ? APP_UTILITIES.authTokenKeyToManage() : '';\n if (this.retentionSetitngsObj.hasOwnProperty([programId])) {\n this.retentionSetitngsObj[programId] = {\n selectedSite: data.site,\n selectedGroups: data.groups\n };\n }\n else if (!this.retentionSetitngsObj.hasOwnProperty([programId])) {\n const programData: any = {\n [programId]: {\n selectedSite: data.site,\n selectedGroups: data.groups\n }\n };\n Object.assign(this.retentionSetitngsObj, JSON.parse(JSON.stringify(programData)));\n }\n APP_UTILITIES.setFilteredColumns(`${this.authKey}-retentionSiteSessionData`, this.retentionSetitngsObj);\n }\n\n @Mutation\n mutateadaSettingObj(settingsObj: any) {\n this.adaSettingObj = settingsObj;\n }\n\n @Mutation\n mutateRetentionSettingObj(settingsObj: any) {\n this.retentionSetitngsObj = settingsObj;\n }\n\n @Action\n async getPersistenceScholarTab(data: { selectedTab: string; programId: number }): Promise {\n const highestRole: number = JSON.parse(JSON.stringify(APP_UTILITIES.getCookie('highest_role')));\n const authKey = APP_UTILITIES.authTokenKeyToManage() ? APP_UTILITIES.authTokenKeyToManage() : '';\n if (data.selectedTab == 'attendanceAda') {\n if (APP_UTILITIES.getFilteredColumns(`${authKey}-attendanceSiteSessionData`)) {\n let attendanceAdaData: any = APP_UTILITIES.getFilteredColumns(`${authKey}-attendanceSiteSessionData`);\n attendanceAdaData = JSON.parse(attendanceAdaData);\n this.mutateadaSettingObj(attendanceAdaData);\n if (attendanceAdaData.hasOwnProperty([data.programId])) {\n const siteResponse = await programSites(data.programId);\n const siteIds: any[] = [];\n siteResponse.data.forEach((site: any) => { siteIds.push(site.siteId); });\n if (siteIds.includes(attendanceAdaData[data.programId].selectedSite.id)) {\n await getGroupsBySiteid({ programId: data.programId, siteId: attendanceAdaData[data.programId].selectedSite.id }).then((response) => {\n let allGroups: any[] = [];\n if (response.data && response.data.length) {\n if (highestRole == APP_CONST.SEVEN) {\n response.data.forEach((group: any) => {\n if (group.myGroup) {\n allGroups = [...allGroups, { id: group.id, value: group.classroomName, checked: false }];\n }\n });\n } else {\n response.data.forEach((group: any) => {\n allGroups = [...allGroups, { id: group.id, value: group.classroomName, checked: false }];\n });\n }\n }\n\n allGroups.forEach(group => {\n attendanceAdaData[data.programId].selectedGroups.forEach((stored: any) => {\n if (group.id == stored.id) {\n group.checked = stored.checked;\n }\n });\n });\n\n this.mutateSelectedSite(attendanceAdaData[data.programId].selectedSite);\n this.mutateSelectedGroups(allGroups);\n this.adaCsvEnableDisableItems();\n });\n } else {\n this.mutateSelectedSite({ id: 0, value: 'Select Session' });\n this.mutateSelectedGroups([]);\n this.adaCsvEnableDisableItems();\n }\n }\n else {\n this.mutateSelectedSite({ id: 0, value: 'Select Session' });\n this.adaCsvEnableDisableItems();\n }\n }\n }\n else if (data.selectedTab == 'retention') {\n if (APP_UTILITIES.getFilteredColumns(`${authKey}-retentionSiteSessionData`)) {\n let retentionData: any = APP_UTILITIES.getFilteredColumns(`${authKey}-retentionSiteSessionData`);\n retentionData = JSON.parse(retentionData);\n this.mutateRetentionSettingObj(retentionData);\n if (retentionData.hasOwnProperty([data.programId])) {\n await getGroupsBySiteid({ programId: data.programId, siteId: retentionData[data.programId].selectedSite.id }).then((response) => {\n let allGroups: any[] = [];\n if (response.data && response.data.length) {\n if (highestRole == APP_CONST.SEVEN) {\n response.data.forEach((group: any) => {\n if (group.myGroup) {\n allGroups = [...allGroups, { id: group.id, value: group.classroomName, checked: false }];\n }\n });\n } else {\n response.data.forEach((group: any) => {\n allGroups = [...allGroups, { id: group.id, value: group.classroomName, checked: false }];\n });\n }\n }\n\n allGroups.forEach(group => {\n retentionData[data.programId].selectedGroups.forEach((stored: any) => {\n if (group.id == stored.id) {\n group.checked = stored.checked;\n }\n });\n });\n this.mutateSelectedSite(retentionData[data.programId].selectedSite);\n this.mutateSelectedGroups(allGroups);\n this.retensionCsvEnableDisableItems();\n });\n }\n else {\n this.mutateSelectedSite({ id: 0, value: 'Select Session' });\n this.retensionCsvEnableDisableItems();\n }\n }\n }\n else if (data.selectedTab == 'completion') {\n if (APP_UTILITIES.getFilteredColumns(`${authKey}-attendanceSiteSessionData`)) {\n let attendanceAdaData: any = APP_UTILITIES.getFilteredColumns(`${authKey}-attendanceSiteSessionData`);\n attendanceAdaData = JSON.parse(attendanceAdaData);\n this.mutateadaSettingObj(attendanceAdaData);\n if (attendanceAdaData.hasOwnProperty([data.programId])) {\n let sites: any[] = [];\n const siteResponse = await programSites(data.programId);\n sites = siteResponse.data;\n const siteIds: any[] = [];\n sites.forEach((site: any) => {\n siteIds.push(site.siteId);\n });\n if (siteIds.includes(attendanceAdaData[data.programId].selectedSite.id)) {\n await getGroupsBySiteid({ programId: data.programId, siteId: attendanceAdaData[data.programId].selectedSite.id }).then((response) => {\n let allGroups: any[] = [];\n if (response.data && response.data.length) {\n if (highestRole == APP_CONST.SEVEN) {\n response.data.forEach((group: any) => {\n if (group.myGroup) {\n allGroups = [...allGroups, { id: group.id, value: group.classroomName, checked: false }];\n }\n });\n } else {\n response.data.forEach((group: any) => {\n allGroups = [...allGroups, { id: group.id, value: group.classroomName, checked: false }];\n });\n }\n }\n\n allGroups.forEach(group => {\n attendanceAdaData[data.programId].selectedGroups.forEach((stored: any) => {\n if (group.id == stored.id) {\n group.checked = stored.checked;\n }\n });\n });\n\n this.mutateSelectedSite({ ...attendanceAdaData[data.programId].selectedSite, programId: data.programId });\n this.mutateGroupsList(allGroups);\n this.completionCsvEnableDisableItems();\n });\n } else {\n this.mutateSelectedSite({ id: 0, value: 'Select Session' });\n this.mutateGroupsList([]);\n this.completionCsvEnableDisableItems();\n }\n\n }\n else {\n this.mutateSelectedSite({ id: 0, value: 'Select Session' });\n this.completionCsvEnableDisableItems();\n }\n }\n }\n }\n\n @Action({ commit: 'mutateChartData' })\n async renderChart(applicationSelected: Array) {\n this.emptyChartData();\n let applicationSelectedByUser: string[] = [];\n let result: any = {};\n if (this.applicationSitesData && this.applicationSitesData.length && applicationSelected && !applicationSelected.length) {\n result = await applicationAnalyticsDetail(this.selectedProgramData.programId, APP_CONST.BLANK);\n } else if (applicationSelected && applicationSelected.length) {\n applicationSelectedByUser = applicationSelected;\n result = await applicationAnalyticsDetail(this.selectedProgramData.programId, applicationSelectedByUser);\n }\n return result;\n }\n\n @Action({ commit: 'MutateQualityChartData' })\n async renderQualityChart(siteSelected: { id: number; value: string }) {\n this.emptyQualityChartData();\n let selectedSite: any = {};\n let result: any = {};\n if (!siteSelected) {\n selectedSite = { id: 0, value: 'All Sites' };\n } else {\n selectedSite = siteSelected;\n }\n result = await qualityAnalyticsDetail(this.selectedProgramData.programId, selectedSite.id);\n return result;\n }\n\n @Mutation\n mutateSitesAnalyticsResponse(sitesResponse: any) {\n this.isEnrollmentLoaderVisible = false;\n this.sitesAnalyticsData = sitesResponse;\n this.isAnalyticsResponseReceived = true;\n }\n @Mutation\n mutateSelectedGroupIds(groupIds: any) {\n this.selectedGroupIds = groupIds;\n }\n\n @Mutation\n mutateSiteGroupsAnalyticsList(completionRes: any) {\n const chartData: any = { labels: [], datasets: [] };\n this.isCompletionLineChartVisible = true;\n let currentIndex = this.colorsList.length, temporaryValue, randomIndex;\n while (0 !== currentIndex) {\n randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex -= 1;\n temporaryValue = this.colorsList[currentIndex];\n this.colorsList[currentIndex] = this.colorsList[randomIndex];\n this.colorsList[randomIndex] = temporaryValue;\n }\n let indexColor = 0;\n chartData.labels = completionRes.data && completionRes.data.labels;\n chartData.labels = [...chartData.labels, ''];\n const highest_role: any = APP_UTILITIES.getCookie(APP_CONST.HIGHEST_ROLE);\n if ((highest_role == APP_CONST.ROLE_TYPE_STAFF) && !this.selectedGroupIds.length) {\n chartData.datasets.push({ data: [] });\n } else {\n completionRes && completionRes.data.dataSet && completionRes.data.dataSet.forEach((element: any) => {\n element.data.forEach((points: any) => {\n Object.keys(points).forEach(key => {\n points.y = points.y == APP_CONST.MINUS_ONE ? null : points.y;\n });\n });\n chartData.datasets.push({\n backgroundColor: 'transparent',\n borderWidth: APP_CONST.TWO,\n lineTension: APP_CONST.ZERO,\n fill: APP_CONST.FALSE,\n pointRadius: 2.5,\n hoverRadius: APP_CONST.THREE,\n borderColor: this.selectedGroupIds && this.selectedGroupIds.length ? this.colorsList[indexColor] : APP_CONST.STYLE.COLOR.BLUE_700,\n pointBackgroundColor: this.selectedGroupIds && this.selectedGroupIds.length ? this.colorsList[indexColor] : APP_CONST.STYLE.COLOR.BLUE_700,\n data: element.data,\n status: element.status,\n groupId: element.groupId,\n });\n indexColor++;\n if (indexColor == (this.colorsList.length + 1)) {\n indexColor = APP_CONST.ZERO;\n }\n });\n }\n this.attendenceCompletionData = chartData;\n }\n\n @Mutation\n async mutateSiteGroupsList(groupsList: any) {\n const groups: any = [];\n const groupIds: any = [];\n let currentIndex = this.colorsList.length, temporaryValue, randomIndex;\n while (0 !== currentIndex) {\n randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex -= 1;\n temporaryValue = this.colorsList[currentIndex];\n this.colorsList[currentIndex] = this.colorsList[randomIndex];\n this.colorsList[randomIndex] = temporaryValue;\n }\n let indexColor = 0;\n if (groupsList.data && groupsList.data.length && (groupsList.status && (groupsList.status == APP_CONST.RESPONSE_200))) {\n const highest_role: any = APP_UTILITIES.getCookie(APP_CONST.HIGHEST_ROLE);\n let currentGroup: any = '';\n groupsList.data.forEach((group: any) => {\n if (highest_role == APP_CONST.ROLE_TYPE_STAFF && group.myGroup) {\n currentGroup = { id: group.id, value: group.classroomName, checked: true };\n if (!groupIds.includes(group.id)) {\n groupIds.push(group.id);\n }\n } else if (highest_role != APP_CONST.ROLE_TYPE_STAFF) {\n currentGroup = { id: group.id, value: group.classroomName };\n }\n\n if (!groups.includes(currentGroup) && currentGroup) {\n groups.push(currentGroup);\n }\n\n });\n this.selectedGroupIds = groupIds;\n }\n this.groupsList = groups;\n\n if (this.selectedSite && this.selectedSite.id >= 0 && this.selectedSite.programId) {\n const completionRes = await completionSiteAnalyticsDetail(this.selectedSite.programId, this.selectedSite.id, groupIds, this.selectedSiteSessionAnalyticsTab);\n this.isCompletionLineChartVisible = true;\n const chartData: any = { labels: [], datasets: [] };\n\n\n chartData.labels = completionRes.data && completionRes.data.labels;\n chartData.labels = [...chartData.labels, ''];\n completionRes && completionRes.data.dataSet && completionRes.data.dataSet.forEach((element: any) => {\n element.data.forEach((points: any) => {\n Object.keys(points).forEach(key => {\n points.y = points.y == APP_CONST.MINUS_ONE ? null : points.y;\n });\n });\n chartData.datasets.push({\n backgroundColor: 'transparent',\n borderWidth: APP_CONST.TWO,\n lineTension: APP_CONST.ZERO,\n fill: APP_CONST.FALSE,\n pointRadius: 2.5,\n hoverRadius: APP_CONST.THREE,\n borderColor: this.selectedGroupIds && this.selectedGroupIds.length ? this.colorsList[indexColor] : APP_CONST.STYLE.COLOR.BLUE_700,\n pointBackgroundColor: this.selectedGroupIds && this.selectedGroupIds.length ? this.colorsList[indexColor] : APP_CONST.STYLE.COLOR.BLUE_700,\n data: element.data,\n status: element.status,\n groupId: element.groupId\n });\n indexColor++;\n if (indexColor == (this.colorsList.length + 1)) {\n indexColor = APP_CONST.ZERO;\n }\n });\n this.attendenceCompletionData = chartData;\n }\n }\n\n @Mutation\n completionLineChartVisible(visible: boolean) {\n this.isCompletionLineChartVisible = visible;\n }\n\n @Mutation\n mutateRetentionProgramSites(sites: any) {\n this.retentionProgramSitesData = sites;\n }\n\n\n @Action({ commit: 'mutateSelectedProgramSites' })\n async getProgramSites(selectedProgramId: number) {\n return { programId: selectedProgramId, getAnalyticsDetail: true };\n }\n\n @Mutation\n mutateCompletionProgramSites(sites: any) {\n this.programSitesData = sites;\n }\n\n @Action({ commit: 'mutateSelectedAttendenceProgramSites' })\n async getProgramAttendenceCompletionSites(selectedProgramId: number) {\n this.mutateCompletionProgramSites([]);\n const result = await programSites(selectedProgramId);\n if (result.status == APP_CONST.RESPONSE_204) {\n this.mutateSelectedSite('');\n this.mutateCompletionProgramSites([]);\n }\n return result.data;\n }\n\n @Action({ commit: 'mutateSelectedRetentionProgramSites' })\n async getProgramRetentionCompletionSites(selectedProgramId: number) {\n this.mutateRetentionProgramSites([]);\n const result = await programSites(selectedProgramId);\n if (result.status == APP_CONST.RESPONSE_204) {\n this.mutateSelectedSite('');\n this.mutateRetentionProgramSites([]);\n }\n return result.data;\n }\n\n @Action({ commit: 'mutateQualityProgramSites' })\n async getProgramSitesQuality(selectedProgramId: number) {\n this.mutateRetentionProgramSites([]);\n const result = await programSites(selectedProgramId);\n if (result.status == APP_CONST.RESPONSE_204) {\n this.mutateSelectedSite('');\n this.mutateRetentionProgramSites([]);\n }\n return result.data;\n }\n\n\n\n @Action({ commit: 'mutateSitesAnalyticalData' })\n async getProgramAttendenceCompletionBarSites(selectedProgramId: number) {\n this.completionFileDownloadtrue();\n this.setcompletionProgramPercentBlank();\n const completionAnalyticalData = await getAttenCompletionProgramData(selectedProgramId);\n return completionAnalyticalData;\n }\n\n @Action({ commit: 'mutateApplicationsList' })\n async getApplicationSites(selectedProgramId: number) {\n const result = await applicationSites(selectedProgramId);\n return result;\n }\n\n @Action({ commit: 'mutateSelectedProgramName' })\n programNameSelection(selectedProgramId?: any) {\n let programId: string | number | null;\n if (APP_UTILITIES.getCookie('programId') && selectedProgramId == undefined) {\n programId = APP_UTILITIES.getCookie('programId');\n programId = Number(programId);\n } else if (selectedProgramId) {\n programId = selectedProgramId;\n }\n\n const filteredProgramData = this.programDropdownValue.allPrograms.find((programs: any) => programs.programId == programId);\n\n return filteredProgramData;\n }\n\n @Mutation\n mutateApplicationResponse(response: any) {\n this.getApplicationResponseStatus.responseStatus = response.status;\n this.doughnutDataFormat = {\n Declined: 0,\n Waitlist: 0,\n Pending: 0\n };\n this.centerTextDataObj = {\n name: 0,\n value: APP_CONST.TOTAL_SUBMITTED\n };\n if (response.status == APP_CONST.RESPONSE_200) {\n this.isDoughNutEmptyState = false;\n response && response.data && response.data.enrollmentCountByStatus.forEach((element: any) => {\n switch (element.enrollmentStatus) {\n case APP_CONST.REJECT:\n this.doughnutDataFormat.Declined = element && element.countByStatus;\n break;\n case APP_CONST.WAITLIST:\n this.doughnutDataFormat.Waitlist = element && element.countByStatus;\n break;\n case APP_CONST.PENDING:\n this.doughnutDataFormat.Pending = element && element.countByStatus;\n break;\n default:\n break;\n }\n\n });\n this.centerTextDataObj = { name: response && response.data && response.data.totalSubmissionsCount, value: APP_CONST.TOTAL_SUBMITTED };\n if ((response.data.totalSubmissionsCount == 0) || ((!this.doughnutDataFormat.Declined && !this.doughnutDataFormat.Pending && !this.doughnutDataFormat.Waitlist))) {\n this.isDoughNutEmptyState = true;\n }\n } else if (response.status == APP_CONST.RESPONSE_204) {\n this.isDoughNutEmptyState = true;\n }\n else {\n this.isDoughNutEmptyState = true;\n }\n\n }\n\n @Action({ commit: 'mutateApplicationResponse' })\n async fetchApplicationData(payload: IApplicationPayload) {\n let applicationSelectedByUser: string[] = [];\n let response: any = {};\n if (payload.applicationIds && !payload.applicationIds.length) {\n response = await getApplicationData(payload.program, APP_CONST.BLANK);\n } else if (payload.applicationIds && payload.applicationIds.length) {\n applicationSelectedByUser = payload.applicationIds;\n response = await getApplicationData(this.selectedProgramData.programId, applicationSelectedByUser);\n }\n return response;\n }\n\n @Mutation\n mutateFamilyResponse(response: any) {\n this.familyEnagementFamilyData = {\n activeMobileUsers: 0,\n totalActiveAccounts: 0,\n totalDirectMessages: 0,\n totalLikedPosts: 0\n };\n if (response && response.status == APP_CONST.RESPONSE_200) {\n this.familyEnagementFamilyData.activeMobileUsers = response && response.data && response.data.activeMobileUsers;\n this.familyEnagementFamilyData.totalActiveAccounts = response && response.data && response.data.totalActiveAccounts;\n this.familyEnagementFamilyData.totalDirectMessages = response && response.data && response.data.totalDirectMessages;\n this.familyEnagementFamilyData.totalLikedPosts = response && response.data && response.data.totalLikedPosts;\n\n }\n }\n\n @Action({ commit: 'mutateFamilyResponse' })\n async fetchFamilyEnagementFamilyData(accountId: number) {\n const response = await getFamilyEngagementFamilyData(accountId);\n return response;\n }\n\n @Mutation\n mutateTeamResponse(response: any) {\n this.familyEnagementTeamData = {\n totalActiveMobileUsers: 0,\n totalMessagesToGuardians: 0,\n totalMessagesToTeamMembers: 0,\n totalPosts: 0\n };\n if (response && response.status == APP_CONST.RESPONSE_200) {\n this.familyEnagementTeamData.totalPosts = response && response.data && response.data.totalPosts;\n this.familyEnagementTeamData.totalActiveMobileUsers = response && response.data && response.data.totalActiveMobileUsers;\n this.familyEnagementTeamData.totalMessagesToTeamMembers = response && response.data && response.data.totalMessagesToTeamMembers;\n this.familyEnagementTeamData.totalMessagesToGuardians = response && response.data && response.data.totalMessagesToGuardians;\n\n }\n }\n\n @Mutation\n mutateAdaBarData(response: any) {\n this.disableButton = false;\n this.adaBarData = [];\n this.adaProgramPercent = '--';\n if (response && response.data && !response.data.dataSet) {\n this.disableButton = true;\n }\n if (response && response.data && response.data.dataSet && response.data.dataSet.length) {\n let isNoAttendance: boolean = false;\n isNoAttendance = Object.keys(response.data.dataSet).every((element: any) => !response.data.dataSet[element].isAttendanceMarked);\n this.adaProgramPercent = isNoAttendance ? '--' : Number(response.data.averagePercentage).toFixed(2) + '%';\n if (isNoAttendance) {\n this.disableButton = true;\n } else {\n this.disableButton = false;\n }\n const size: number = APP_CONST.SITE_LINE_BREAK_SIZE;\n let numChunks: number = 0;\n let chunks: any = [];\n response.data.dataSet.forEach((data: any) => {\n let siteName: any = data.siteName;\n if (siteName.length > size) {\n numChunks = Math.ceil(siteName.length / size);\n chunks = new Array(numChunks);\n for (let i = 0, o = 0; i < numChunks; ++i, o += size) {\n chunks[i] = siteName.substr(o, size);\n }\n siteName = chunks;\n if (siteName.length > 3) {\n siteName = [siteName[0], siteName[1], siteName[2].substr(0, size - 1) + '…'];\n }\n }\n this.adaBarData.push({ data: !data.isAttendanceMarked ? 0 : data.result == 0 ? APP_CONST.ZERO_BAR_HEIGHT : data.result, site: siteName, positive: data.positive, tooltip: `${Math.round(data.result)}% ` });\n });\n }\n }\n\n @Mutation\n async mutateRetentionBarData(response: any) {\n this.retentionBarData = [];\n this.retentionProgramPercent = '--';\n if (response && response.data && !response.data.dataSet) {\n this.disableButtonRetension = true;\n }\n if (response && response.data && response.data.dataSet && response.data.dataSet.length) {\n let isNoAttendance: boolean = false;\n isNoAttendance = Object.keys(response.data.dataSet).every((element: any) => !response.data.dataSet[element].isAttendanceMarked);\n this.retentionProgramPercent = isNoAttendance ? '--' : Number(response.data.averagePercentage).toFixed(2) + '%';\n if (isNoAttendance) {\n this.disableButtonRetension = true;\n } else {\n this.disableButtonRetension = false;\n }\n const size: number = APP_CONST.SITE_LINE_BREAK_SIZE;\n let numChunks: number = 0;\n let chunks: any = [];\n\n const siteResponse = await programSites(this.selectedProgramData.programId);\n const siteMap = new Map();\n\n if (siteResponse && siteResponse.data.length) {\n siteResponse.data.forEach((siteDetail: any) => siteMap.set(siteDetail.sessionId, siteDetail.sessionName));\n }\n\n response.data.dataSet.forEach((data: any) => {\n let siteName: any = data.siteName || siteMap.get(data.siteId);\n if (siteName && siteName.length > size) {\n numChunks = Math.ceil(siteName.length / size);\n chunks = new Array(numChunks);\n for (let i = 0, o = 0; i < numChunks; ++i, o += size) {\n chunks[i] = siteName.substr(o, size);\n }\n siteName = chunks;\n if (siteName.length > 3) {\n siteName = [siteName[0], siteName[1], siteName[2].substr(0, size - 1) + '…'];\n }\n }\n this.retentionBarData.push({ data: !data.isAttendanceMarked ? 0 : data.result == 0 ? APP_CONST.ZERO_BAR_HEIGHT : data.result, site: siteName, positive: data.positive, tooltip: `${Math.round(data.result)}% ` });\n });\n }\n }\n\n @Action({ commit: 'mutateTeamResponse' })\n async fetchFamilyEnagementTeamData(accountId: number) {\n const response = await getFamilyEngagementTeamData(accountId);\n return response;\n }\n\n\n @Mutation\n mutateGroups(response: any) {\n this.siteGroupsData = [];\n const highestRole: number = JSON.parse(JSON.stringify(APP_UTILITIES.getCookie('highest_role')));\n if (response.data && response.data.length) {\n if (highestRole == APP_CONST.SEVEN) {\n response.data.forEach((group: any) => {\n if (group.myGroup) {\n this.siteGroupsData = [...this.siteGroupsData, { id: group.id, value: group.classroomName, checked: true }];\n }\n });\n } else {\n response.data.forEach((group: any) => {\n this.siteGroupsData = [...this.siteGroupsData, { id: group.id, value: group.classroomName, checked: false }];\n });\n }\n }\n }\n\n @Mutation\n mutateSelectedGroups(groups: any) {\n this.siteGroupsData = groups;\n }\n\n @Action({ commit: 'mutateGroups' })\n getGroupsBySiteid(payload: IGroupsBySiteid) {\n const response = getGroupsBySiteid(payload);\n return response;\n }\n\n @Mutation\n mutateAdaWeekGraphDAta(response: any) {\n this.adaWeekGraphDAta = { labels: [], datasets: [] };\n const chartData = response.data;\n this.adaWeekGraphDAta.labels = chartData.labels;\n this.adaWeekGraphDAta.labels.push(['']);\n if (chartData && chartData.dataSet && chartData.dataSet.length == 1 && chartData.dataSet[0].data.length == 0) {\n this.listOptions.options.forEach((option: any, optionIndex: number) => {\n if (optionIndex > APP_CONST.ZERO) {\n option.disable = true;\n }\n });\n } else {\n if (this.siteSelected && (this.siteSelected.id == 0)) {\n this.listOptions.options.forEach((option: any, optionIndex: number) => {\n if (optionIndex > APP_CONST.ZERO) {\n option.disable = true;\n }\n });\n } else {\n this.listOptions.options.forEach((option: any, optionIndex: number) => {\n if (optionIndex > APP_CONST.ZERO) {\n option.disable = false;\n }\n });\n }\n }\n\n let indexColor = 0;\n let currentIndex = this.colorsList.length, temporaryValue, randomIndex;\n while (0 !== currentIndex) {\n randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex -= 1;\n temporaryValue = this.colorsList[currentIndex];\n this.colorsList[currentIndex] = this.colorsList[randomIndex];\n this.colorsList[randomIndex] = temporaryValue;\n }\n\n chartData && chartData.dataSet && chartData.dataSet.forEach((element: any, index: any) => {\n const labelName = this.siteGroupsData && this.siteGroupsData.filter((grp: any) => grp.id == element.groupId)[0];\n element.data.forEach((points: any) => {\n Object.keys(points).forEach(key => {\n points.y = points.y == APP_CONST.MINUS_ONE ? null : points.y;\n });\n });\n this.adaWeekGraphDAta.datasets.push(\n {\n label: labelName && labelName.value,\n backgroundColor: 'transparent',\n borderWidth: APP_CONST.TWO,\n lineTension: APP_CONST.ZERO,\n fill: APP_CONST.FALSE,\n pointRadius: 2.5,\n hoverRadius: APP_CONST.THREE,\n borderColor: labelName && labelName.value ? this.colorsList[indexColor] : APP_CONST.STYLE.COLOR.BLUE_700,\n pointBackgroundColor: labelName && labelName.value ? this.colorsList[indexColor] : APP_CONST.STYLE.COLOR.BLUE_700,\n data: element.data,\n }\n );\n\n indexColor++;\n if (indexColor == (this.colorsList.length + 1)) {\n indexColor = APP_CONST.ZERO;\n }\n\n });\n\n }\n\n @Mutation\n emptyAdaWeekChartData() {\n this.adaWeekGraphDAta = { labels: [], datasets: [] };\n }\n\n @Mutation\n emptyRetentionChartData() {\n this.retentionGraphData = { labels: [], datasets: [] };\n }\n\n @Mutation\n emptyQualityChartData() {\n this.chartDataFromAPIQuality = { labels: [], datasets: [] };\n }\n\n @Mutation\n mutateRetentionGraphData(response: any) {\n this.retentionGraphData = { labels: [], datasets: [] };\n const chartData = response.data;\n this.retentionGraphData.labels = chartData.labels;\n this.retentionGraphData.labels.push(['']);\n let indexColor = 0;\n let currentIndex = this.colorsList.length, temporaryValue, randomIndex;\n while (0 !== currentIndex) {\n randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex -= 1;\n temporaryValue = this.colorsList[currentIndex];\n this.colorsList[currentIndex] = this.colorsList[randomIndex];\n this.colorsList[randomIndex] = temporaryValue;\n }\n\n chartData && chartData.dataSet && chartData.dataSet.forEach((element: any, index: any) => {\n const labelName = this.siteGroupsData && this.siteGroupsData.filter((grp: any) => grp.id == element.groupId)[0];\n this.retentionGraphData.datasets.push(\n {\n label: labelName && labelName.value,\n backgroundColor: 'transparent',\n borderWidth: APP_CONST.TWO,\n lineTension: APP_CONST.ZERO,\n fill: APP_CONST.FALSE,\n pointRadius: 2.5,\n hoverRadius: APP_CONST.THREE,\n borderColor: labelName && labelName.value ? this.colorsList[indexColor] : APP_CONST.STYLE.COLOR.BLUE_700,\n pointBackgroundColor: labelName && labelName.value ? this.colorsList[indexColor] : APP_CONST.STYLE.COLOR.BLUE_700,\n data: element.data,\n }\n );\n\n indexColor++;\n if (indexColor == (this.colorsList.length + 1)) {\n indexColor = APP_CONST.ZERO;\n }\n });\n\n }\n\n @Mutation\n fileDownloadtrue() {\n this.disableButton = true;\n }\n\n @Mutation\n fileDownloadfalse() {\n this.disableButton = false;\n }\n\n @Mutation\n completionFileDownloadtrue() {\n this.disableButtonCompletion = true;\n }\n\n @Mutation\n completionFileDownloadfalse() {\n this.disableButtonCompletion = false;\n }\n\n @Mutation\n retensionFileDownloadtrue() {\n this.disableButtonRetension = true;\n }\n\n @Mutation\n retensionFileDownloadfalse() {\n this.disableButtonRetension = false;\n }\n\n @Mutation\n enrollmentFileDownloadtrue() {\n this.disableButtonEnrollment = true;\n }\n @Mutation\n consolidatedScholarRosterDownloadtrue() {\n this.disableButtonConsolidatedRoster = true;\n }\n @Mutation\n professionalLearningFileDownloadfalse() {\n this.disableButtonProfessionalLearning = false;\n }\n\n @Mutation\n professionalLearningFileDownloadtrue() {\n this.disableButtonProfessionalLearning = true;\n }\n\n @Mutation\n enrollmentFileDownloadfalse() {\n this.disableButtonEnrollment = false;\n }\n @Mutation\n consolidatedScholarRosterDownloadfalse() {\n this.disableButtonConsolidatedRoster = false;\n }\n @Action\n getAdaWeekLineData(params: IAdaWeekLinePayload) {\n this.emptyAdaWeekChartData();\n const response = getAdaWeekLineData(params);\n return response;\n }\n\n @Action\n getRetentionLineData(payload: IAdaWeekLinePayload) {\n this.emptyRetentionChartData();\n const response = getRetentionWeekLineData(payload);\n return response;\n }\n\n @Mutation\n setEnrollmentLoaderState() {\n this.isEnrollmentLoaderVisible = true;\n }\n\n @Action({ commit: 'mutateSitesAnalyticsResponse' })\n async fetchSitesAnalyticsData(programId: number) {\n this.setEnrollmentLoaderState();\n const response = await programSitesAnalyticsDetail(programId, this.selectedSites);\n return response.data;\n }\n\n @Action({ commit: 'mutateSiteGroupsList' })\n async fetchCompletionSitesAnalyticsData({ programId, siteId }: { programId: number; siteId: number }) {\n let response: any = '';\n if (siteId >= 0) {\n response = await programSitesGroupsList(programId, siteId);\n }\n return response;\n }\n\n @Action({ commit: 'mutateSiteGroupsAnalyticsList' })\n async fetchCompletionSiteGroupsAnalyticsData({ programId, siteId }: { programId: number; siteId: number }) {\n const groupIds: number[] = [];\n this.resetCompletionData();\n if (this.siteGroupsList && this.siteGroupsList.length) {\n this.siteGroupsList.forEach((group: any) => {\n if (group.checked) {\n groupIds.push(group.id);\n }\n });\n this.mutateSelectedGroupIds(groupIds);\n }\n const response: any = await completionSiteAnalyticsDetail(programId, siteId ? siteId : '', groupIds, this.selectedSiteSessionAnalyticsTab);\n return response;\n }\n\n @Mutation\n setAdaProgramPercentBlank() {\n this.adaProgramPercent = '--';\n }\n\n @Action({ commit: 'mutateAdaBarData' })\n async getAdaProgramData(prorgamId: number) {\n this.fileDownloadtrue();\n this.setAdaProgramPercentBlank();\n const response = await getAdaProgramData(prorgamId);\n return response;\n }\n\n @Mutation\n setretentionProgramPercentBlank() {\n this.retentionProgramPercent = '--';\n }\n\n @Mutation\n setcompletionProgramPercentBlank() {\n this.completionProgramPercent = '--';\n }\n\n @Action({ commit: 'mutateRetentionBarData' })\n async getRetentionProgramData(programId: number) {\n this.retensionFileDownloadtrue();\n this.setretentionProgramPercentBlank();\n\n const response = await getRetentionProgramData(programId);\n return response;\n }\n\n @Action\n async downloadCsv(arg: any) {\n switch (arg.key) {\n case 'ada_site':\n {\n\n const payload = {\n programId: this.selectedProgramData.programId\n };\n this.fileDownloadtrue();\n\n adabySite(payload).then(data => {\n if (data.status == 200) {\n this.fileDownloadfalse();\n }\n });\n break;\n }\n\n case 'ada_week':\n {\n const payload: CsvPayload_Week_Day = {\n programId: this.selectedProgramData.programId,\n siteId: this.siteSelected.id,\n groupIds: [],\n isDay: false\n };\n\n let isNoGroupSelected: boolean = false;\n isNoGroupSelected = Object.keys(this.siteGroupsData).every((element: any) => !this.siteGroupsData[element].checked);\n\n if (isNoGroupSelected) {\n payload.groupIds = [];\n }\n else {\n this.siteGroupsData.forEach((group: { id: any; checked: boolean }) => {\n if (group.checked) {\n payload.groupIds.push(group.id);\n }\n });\n }\n this.fileDownloadtrue();\n\n adabyWeek(payload).then(data => {\n if (data.status == 200) {\n this.fileDownloadfalse();\n }\n });\n break;\n }\n\n case 'ada_day':\n {\n const payload: CsvPayload_Week_Day = {\n programId: this.selectedProgramData.programId,\n siteId: this.siteSelected.id,\n groupIds: [],\n isDay: true\n };\n\n let isNoGroupSelected: boolean = false;\n isNoGroupSelected = Object.keys(this.siteGroupsData).every((element: any) => !this.siteGroupsData[element].checked);\n\n if (isNoGroupSelected) {\n payload.groupIds = [];\n }\n else {\n this.siteGroupsData.forEach((group: { id: any; checked: boolean }) => {\n if (group.checked) {\n payload.groupIds.push(group.id);\n }\n });\n }\n this.fileDownloadtrue();\n\n adabyDay(payload).then(data => {\n if (data.status == 200) {\n this.fileDownloadfalse();\n }\n });\n break;\n }\n\n case 'ada_checkin':\n {\n const payload: ICsvPayload = {\n programId: this.selectedProgramData.programId,\n siteId: this.siteSelected.id,\n groupIds: []\n };\n\n let isNoGroupSelected: boolean = false;\n isNoGroupSelected = Object.keys(this.siteGroupsData).every((element: any) => !this.siteGroupsData[element].checked);\n\n if (isNoGroupSelected) {\n payload.groupIds = [];\n }\n else {\n this.siteGroupsData.forEach((group: { id: any; checked: boolean }) => {\n if (group.checked) {\n payload.groupIds.push(group.id);\n }\n });\n }\n this.fileDownloadtrue();\n\n attendanceScholarCheckin(payload).then(data => {\n if (data.status == 200) {\n this.fileDownloadfalse();\n }\n });\n break;\n }\n\n case 'ada_checkout':\n {\n const payload: ICsvPayload = {\n programId: this.selectedProgramData.programId,\n siteId: this.siteSelected.id,\n groupIds: []\n };\n\n let isNoGroupSelected: boolean = false;\n isNoGroupSelected = Object.keys(this.siteGroupsData).every((element: any) => !this.siteGroupsData[element].checked);\n\n if (isNoGroupSelected) {\n payload.groupIds = [];\n }\n else {\n this.siteGroupsData.forEach((group: { id: any; checked: boolean }) => {\n if (group.checked) {\n payload.groupIds.push(group.id);\n }\n });\n }\n this.fileDownloadtrue();\n\n attendanceScholarCheckout(payload).then(data => {\n if (data.status == 200) {\n this.fileDownloadfalse();\n }\n });\n break;\n }\n\n case 'ada_scholar_details':\n {\n const payload: ICsvPayload = {\n programId: this.selectedProgramData.programId,\n siteId: this.siteSelected.id,\n groupIds: []\n };\n\n let isNoGroupSelected: boolean = false;\n isNoGroupSelected = Object.keys(this.siteGroupsData).every((element: any) => !this.siteGroupsData[element].checked);\n\n if (isNoGroupSelected) {\n payload.groupIds = [];\n }\n else {\n this.siteGroupsData.forEach((group: { id: any; checked: boolean }) => {\n if (group.checked) {\n payload.groupIds.push(group.id);\n }\n });\n }\n this.fileDownloadtrue();\n\n adaScholarDetailCSVDownload(payload).then(data => {\n if (data.status == 200) {\n this.fileDownloadfalse();\n }\n });\n break;\n }\n case 'ada_daily_attendance':\n {\n const payload: ICsvPayload = {\n programId: this.selectedProgramData.programId,\n siteId: this.siteSelected.id,\n groupIds: []\n };\n\n let isNoGroupSelected: boolean = false;\n isNoGroupSelected = Object.keys(this.siteGroupsData).every((element: any) => !this.siteGroupsData[element].checked);\n\n if (isNoGroupSelected) {\n payload.groupIds = [];\n }\n else {\n this.siteGroupsData.forEach((group: { id: any; checked: boolean }) => {\n if (group.checked) {\n payload.groupIds.push(group.id);\n }\n });\n }\n this.fileDownloadtrue();\n\n scholarDailyAttendanceCSVDownload(payload).then(data => {\n if (data.status == 200) {\n this.fileDownloadfalse();\n }\n });\n break;\n }\n default:\n break;\n }\n }\n\n @Mutation\n mutateEnrollmentSiteSession(data: { programId: any; site: any }) {\n const programId = data.programId;\n if (!Object.keys(this.enrollmentSettingObj).length) {\n this.enrollmentSettingObj = {\n [programId]: {\n selectedSite: data.site,\n }\n };\n }\n this.authKey = APP_UTILITIES.authTokenKeyToManage() ? APP_UTILITIES.authTokenKeyToManage() : '';\n if (this.enrollmentSettingObj.hasOwnProperty([programId])) {\n this.enrollmentSettingObj[programId] = {\n selectedSite: data.site,\n };\n }\n else if (!this.enrollmentSettingObj.hasOwnProperty([programId])) {\n const programData: any = {\n [programId]: {\n selectedSite: data.site,\n }\n };\n Object.assign(this.enrollmentSettingObj, JSON.parse(JSON.stringify(programData)));\n }\n APP_UTILITIES.setFilteredColumns(`${this.authKey}-enrollmentSiteSessionData`, this.enrollmentSettingObj);\n }\n\n @Mutation\n mutateApplicationApplicationName(data: { programId: any; application: any }) {\n const programId = data.programId;\n if (!Object.keys(this.applicationObj).length) {\n this.applicationObj = {\n [programId]: {\n selectedApplication: data.application,\n }\n };\n }\n this.authKey = APP_UTILITIES.authTokenKeyToManage() ? APP_UTILITIES.authTokenKeyToManage() : '';\n if (this.applicationObj.hasOwnProperty([programId])) {\n this.applicationObj[programId] = {\n selectedApplication: data.application,\n };\n }\n else if (!this.applicationObj.hasOwnProperty([programId])) {\n const programData: any = {\n [programId]: {\n selectedApplication: data.application,\n }\n };\n Object.assign(this.applicationObj, JSON.parse(JSON.stringify(programData)));\n }\n APP_UTILITIES.setFilteredColumns(`${this.authKey}-applicationapplicationname`, this.applicationObj);\n }\n\n @Action\n async downloadCsvCompletion(arg: any) {\n switch (arg.key) {\n case 'com_site':\n {\n const payload: any = {\n programId: this.selectedProgramData.programId,\n siteId: 0,\n groupIds: [],\n isDay: false,\n csvType: APP_CONST.ZERO\n\n };\n this.completionFileDownloadtrue();\n\n completionCSVDownload(payload).then(data => {\n if (data.status == 200) {\n this.completionFileDownloadfalse();\n }\n });\n break;\n }\n\n case 'com_week':\n {\n const payload: any = {\n programId: this.selectedProgramData.programId,\n siteId: this.selectedSite.id,\n groupIds: [],\n isDay: false,\n csvType: APP_CONST.ONE\n\n };\n\n let isNoGroupSelected: boolean = false;\n isNoGroupSelected = Object.keys(this.siteGroupsList).every((element: any) => !this.siteGroupsList[element].checked);\n if (isNoGroupSelected) {\n this.siteGroupsList.forEach((group: { id: any; checked: boolean }) => {\n payload.groupIds.push(group.id);\n });\n }\n else {\n this.siteGroupsList.forEach((group: { id: any; checked: boolean }) => {\n if (group.checked) {\n payload.groupIds.push(group.id);\n }\n });\n }\n this.completionFileDownloadtrue();\n\n completionCSVDownload(payload).then(data => {\n if (data.status == 200) {\n this.completionFileDownloadfalse();\n }\n });\n break;\n }\n\n case 'com_day':\n {\n const payload: any = {\n programId: this.selectedProgramData.programId,\n siteId: this.selectedSite.id,\n groupIds: [],\n isDay: true,\n csvType: APP_CONST.ONE\n };\n\n let isNoGroupSelected: boolean = false;\n\n isNoGroupSelected = Object.keys(this.siteGroupsList).every((element: any) => !this.siteGroupsList[element].checked);\n\n if (isNoGroupSelected) {\n this.siteGroupsList.forEach((group: { id: any; checked: boolean }) => {\n payload.groupIds.push(group.id);\n });\n }\n else {\n this.siteGroupsList.forEach((group: { id: any; checked: boolean }) => {\n if (group.checked) {\n payload.groupIds.push(group.id);\n }\n });\n }\n this.completionFileDownloadtrue();\n\n completionCSVDownload(payload).then(data => {\n if (data.status == 200) {\n this.completionFileDownloadfalse();\n }\n });\n break;\n }\n }\n }\n\n @Action\n async downloadCsvRetension(arg: any) {\n switch (arg.key) {\n case 'ret_site':\n {\n const payload: any = {\n programId: this.selectedProgramData.programId,\n siteId: 0,\n groupIds: [],\n isDay: APP_CONST.FALSE,\n csvType: APP_CONST.ZERO\n\n };\n this.retensionFileDownloadtrue();\n\n retensionCSVDownload(payload).then(data => {\n if (data.status == 200) {\n this.retensionFileDownloadfalse();\n }\n });\n break;\n }\n\n case 'ret_week':\n {\n const payload: any = {\n programId: this.selectedProgramData.programId,\n siteId: this.siteSelected.id,\n groupIds: [],\n isDay: APP_CONST.FALSE,\n csvType: APP_CONST.ONE\n\n };\n\n let isNoGroupSelected: boolean = false;\n isNoGroupSelected = Object.keys(this.siteGroupsData).every((element: any) => !this.siteGroupsData[element].checked);\n\n if (isNoGroupSelected) {\n this.siteGroupsData.forEach((group: { id: any; checked: boolean }) => {\n payload.groupIds.push(group.id);\n });\n }\n else {\n this.siteGroupsData.forEach((group: { id: any; checked: boolean }) => {\n if (group.checked) {\n payload.groupIds.push(group.id);\n }\n });\n }\n this.retensionFileDownloadtrue();\n\n retensionCSVDownload(payload).then(data => {\n if (data.status == 200) {\n this.retensionFileDownloadfalse();\n }\n });\n break;\n }\n\n case 'ret_day':\n {\n const payload: any = {\n programId: this.selectedProgramData.programId,\n siteId: this.siteSelected.id,\n groupIds: [],\n isDay: APP_CONST.TRUE,\n csvType: APP_CONST.ONE\n };\n\n let isNoGroupSelected: boolean = false;\n isNoGroupSelected = Object.keys(this.siteGroupsData).every((element: any) => !this.siteGroupsData[element].checked);\n\n if (isNoGroupSelected) {\n this.siteGroupsData.forEach((group: { id: any; checked: boolean }) => {\n payload.groupIds.push(group.id);\n });\n }\n else {\n this.siteGroupsData.forEach((group: { id: any; checked: boolean }) => {\n if (group.checked) {\n payload.groupIds.push(group.id);\n }\n });\n }\n this.retensionFileDownloadtrue();\n\n retensionCSVDownload(payload).then(data => {\n if (data.status == 200) {\n this.retensionFileDownloadfalse();\n }\n });\n break;\n }\n }\n }\n\n @Action\n async downloadCsvEnrollment(arg: any) {\n switch (arg.key) {\n case 'en_site':\n {\n const payload: any = {\n programId: this.selectedProgramData.programId,\n siteId: []\n };\n let isNoSitesSelected: boolean = false;\n isNoSitesSelected = Object.keys(this.programSitesData).every((element: any) => !this.programSitesData[element].checked);\n if (isNoSitesSelected) {\n this.programSitesData.forEach((site: { id: any; checked: boolean }) => {\n payload.siteId.push(site.id);\n });\n }\n else {\n this.programSitesData.forEach((site: { id: any; checked: boolean }) => {\n if (site.checked) {\n payload.siteId.push(site.id);\n }\n });\n }\n this.enrollmentFileDownloadtrue();\n\n enrollmentCSVDownload(payload).then(data => {\n if (data.status == 200) {\n this.enrollmentFileDownloadfalse();\n }\n });\n break;\n }\n case APP_CONST.DOWNLOAD_CONSOLIDATED_ROSTER_CSV_KEY:\n {\n\n const accountId: number = Number(APP_UTILITIES.getCookie('accountId'));\n const siteCode = (APP_UTILITIES.getCookie('siteId')) == null ? 0 : Number((APP_UTILITIES.getCookie('siteId')));\n const payload: any = {\n programId: this.selectedProgramData.programId,\n siteId: siteCode,\n accountId: accountId\n };\n this.consolidatedScholarRosterDownloadtrue();\n consolidatedScholarCSVDownload(payload).then(data => {\n if (data.status == 200) {\n this.consolidatedScholarRosterDownloadfalse();\n }\n });\n break;\n }\n }\n }\n\n @Mutation\n mutateRoleWiseUserCount(response: any) {\n if (response.status == APP_CONST.RESPONSE_200) {\n const counts: any = response.data.data;\n if (counts) {\n this.roleCounts[5] = counts[5] ? counts[5] : 0;\n this.roleCounts[6] = counts[6] ? counts[6] : 0;\n this.roleCounts[7] = counts[7] ? counts[7] : 0;\n }\n } else if (response.status == APP_CONST.RESPONSE_400) {\n this.roleCounts = { 5: 0, 6: 0, 7: 0 };\n } else if (response.status == APP_CONST.RESPONSE_204) {\n this.roleCounts = { 5: 0, 6: 0, 7: 0 };\n }\n return response;\n }\n\n @Action({ commit: 'mutateRoleWiseUserCount' })\n async getRoleWiseUserCount(programIds: number[]) {\n const response: any = await getRoleWiseUsersByProgramId(programIds);\n return response;\n }\n\n @Mutation\n mutateProfLearningData(response: any) {\n if (response.status == APP_CONST.RESPONSE_200) {\n this.categories = [];\n this.completeProfLearningData = { datasets: response.data.dataSet, labels: response.data.labels };\n\n if (this.completeProfLearningData && this.completeProfLearningData.labels && !this.completeProfLearningData.labels.length) {\n this.disableButtonProfessionalLearning = true;\n }\n if (this.completeProfLearningData && this.completeProfLearningData.labels && this.completeProfLearningData.labels.length) {\n this.disableButtonProfessionalLearning = false;\n this.completeProfLearningData.labels.forEach((label: any, index: number) => {\n const labelName: string = label[0];\n this.categories.push({ id: labelName, value: labelName, checked: false });\n this.completeProfLearningData.datasets.forEach((ds: any) => {\n const isExists = ds.data.findIndex((x: any) => x.x.toString() == labelName) > -1;\n if (!isExists) {\n ds.data.splice(index, 0, { x: labelName, y: null, numerator: 0, denominator: 0 });\n }\n });\n });\n\n\n }\n } else if (response.status == APP_CONST.RESPONSE_400) {\n this.completeProfLearningData = { labels: [], datasets: [] };\n } else if (response.status == APP_CONST.RESPONSE_204) {\n this.completeProfLearningData = { labels: [], datasets: [] };\n }\n return response;\n }\n\n @Action({ commit: 'mutateProfLearningData' })\n async getProfLearningData(programIds: number[]) {\n this.clearCategories();\n this.professionalLearningFileDownloadtrue();\n const response: any = await getProfessionalLearningDetails(programIds);\n return response;\n }\n\n @Mutation\n locallyStoreQualitySite(data: { programId: any; site: any }) {\n const programId = data.programId;\n if (!Object.keys(this.qualitySetitngsObj).length) {\n this.qualitySetitngsObj = {\n [programId]: {\n selectedSite: data.site,\n }\n };\n }\n this.authKey = APP_UTILITIES.authTokenKeyToManage() ? APP_UTILITIES.authTokenKeyToManage() : '';\n if (this.qualitySetitngsObj.hasOwnProperty([programId])) {\n this.qualitySetitngsObj[programId] = {\n selectedSite: data.site,\n };\n }\n else if (!this.qualitySetitngsObj.hasOwnProperty([programId])) {\n const programData: any = {\n [programId]: {\n selectedSite: data.site,\n }\n };\n Object.assign(this.qualitySetitngsObj, JSON.parse(JSON.stringify(programData)));\n }\n APP_UTILITIES.setFilteredColumns(`${this.authKey}-qualitySiteSessionData`, this.qualitySetitngsObj);\n }\n\n @Mutation\n mutateQualitySettingObj(qualityData: any) {\n this.qualitySetitngsObj = qualityData;\n }\n\n @Action\n async getQualityPersistence(data: { programId: number }) {\n const authKey = APP_UTILITIES.authTokenKeyToManage() ? APP_UTILITIES.authTokenKeyToManage() : '';\n const drillDownSiteId: any = APP_UTILITIES.getCookie('siteId');\n if (drillDownSiteId && drillDownSiteId > 0) {\n const siteResponse = await programSites(data.programId);\n siteResponse.data.forEach((site: any) => {\n if (site.siteId == drillDownSiteId) {\n this.mutateSelectedSite({ id: site.siteId, value: site.siteName });\n }\n });\n }\n if (APP_UTILITIES.getFilteredColumns(`${authKey}-qualitySiteSessionData`)) {\n let qualityData: any = APP_UTILITIES.getFilteredColumns(`${authKey}-qualitySiteSessionData`);\n qualityData = JSON.parse(qualityData);\n this.mutateQualitySettingObj(qualityData);\n if (qualityData.hasOwnProperty([data.programId])) {\n const siteResponse = await programSites(data.programId);\n const siteIds: any[] = [];\n siteResponse.data.forEach((site: any) => { siteIds.push(site.siteId); });\n if (siteIds.includes(qualityData[data.programId].selectedSite.id)) {\n this.mutateSelectedSite(qualityData[data.programId].selectedSite);\n }\n else {\n this.mutateSelectedSite({ id: 0, value: 'All Site/Sessions' });\n }\n }\n }\n\n }\n\n\n @Mutation\n locallyStoreProfLearningData(data: { programId: any; categories: any; roles: any }) {\n const programId = data.programId;\n if (!Object.keys(this.profLearningSettingsObj).length) {\n this.profLearningSettingsObj = {\n [programId]: {\n selectedCourses: data.categories,\n selectedRoles: data.roles\n }\n };\n }\n this.authKey = APP_UTILITIES.authTokenKeyToManage() ? APP_UTILITIES.authTokenKeyToManage() : '';\n if (this.profLearningSettingsObj.hasOwnProperty([programId])) {\n this.profLearningSettingsObj[programId] = {\n selectedCourses: data.categories,\n selectedRoles: data.roles\n };\n }\n else if (!this.profLearningSettingsObj.hasOwnProperty([programId])) {\n const programData: any = {\n [programId]: {\n selectedCourses: data.categories,\n selectedRoles: data.roles\n }\n };\n Object.assign(this.profLearningSettingsObj, JSON.parse(JSON.stringify(programData)));\n }\n APP_UTILITIES.setFilteredColumns(`${this.authKey}-professionalLearningData`, this.profLearningSettingsObj);\n }\n\n @Mutation\n getProfLearningPersistence(data: { programId: number }) {\n const authKey = APP_UTILITIES.authTokenKeyToManage() ? APP_UTILITIES.authTokenKeyToManage() : '';\n if (APP_UTILITIES.getFilteredColumns(`${authKey}-professionalLearningData`)) {\n let professionalLearningData: any = APP_UTILITIES.getFilteredColumns(`${authKey}-professionalLearningData`);\n professionalLearningData = JSON.parse(professionalLearningData);\n this.profLearningSettingsObj = professionalLearningData;\n if (professionalLearningData.hasOwnProperty([data.programId])) {\n let coursesList = [];\n coursesList = this.categories;\n coursesList.forEach((latestCourse: any) => {\n professionalLearningData[data.programId].selectedCourses.forEach((stored: any) => {\n if (latestCourse.id == stored.id) {\n latestCourse.checked = stored.checked;\n }\n });\n });\n this.categories = coursesList;\n this.profLearningRoles = professionalLearningData[data.programId].selectedRoles;\n } else {\n this.profLearningRoles = JSON.parse(JSON.stringify(APP_CONST.PROF_LEARNING_ROLES_LIST));\n }\n }\n }\n\n @Action\n async downloadCsvProfessionalLearning(programIds: Array) {\n const payload: any = {\n programIds: programIds,\n };\n\n this.professionalLearningFileDownloadtrue();\n\n professionalLearningCSVDownload(payload).then(data => {\n if (data.status == 200) {\n this.professionalLearningFileDownloadfalse();\n }\n });\n }\n}\n\nexport default getModule(AnalyticsModule);\n","import { httpClient,httpEnrollmentClient,httpCMSAnalyticsClient, httpClientEnrollment} from \"../common/httpClient\";\nimport API_CONST from '@/constants/ApiConst';\n\nimport { IAdaWeekLinePayload } from \"@/Model/model\";\nimport APP_CONST from \"@/constants/AppConst\";\nimport APP_UTILITIES from \"@/utilities/commonFunctions\";\n\nexport function programRecruitment(accountId: any) {\n return httpClient().get(`${API_CONST.ANALYTICS_PROGRAM_RECRUITMENT}/${accountId}`).then((response) => {\n return { data : response.data, status: response.status, statusText: response.statusText};\n }).catch((error) => {\n return { data : error.data, status: error.status, statusText: error.statusText};\n });\n }\n\n export function programSites(programId: any) {\n return httpClient().get(`${API_CONST.PROGRAM_SESSIONS_LIST}/${programId}`).then((response) => {\n return { data : response.data, status: response.status, statusText: response.statusText};\n }).catch((error) => {\n return { data : error.data, status: error.status, statusText: error.statusText};\n });\n }\n\n export function applicationSites(programId: any) {\n return httpEnrollmentClient().get(`${API_CONST.PROGRAM_SITES_APPLICATION}${programId}`).then((response) => {\n return { data : response.data, status: response.status, statusText: response.statusText};\n }).catch((error) => {\n return { data : error.data, status: error.status, statusText: error.statusText};\n });\n }\n\n export function programSitesAnalyticsDetail(programId: any, siteIds:any) {\n return httpCMSAnalyticsClient().get(`${API_CONST.PROGRAM_SITES_ANALYTIC_LIST}?programId=${programId}&siteIds=${siteIds}`).then((response) => {\n return { data : response.data, status: response.status, statusText: response.statusText};\n }).catch((error) => {\n return { data : error.data, status: error.status, statusText: error.statusText};\n });\n }\n\n export function applicationAnalyticsDetail(programId: any, applicationIds:any) {\n applicationIds = applicationIds && applicationIds.length && applicationIds.map((element:string) => {\n return element.toUpperCase();\n });\n let applicationId = applicationIds && applicationIds.length ? applicationIds.join(',') : APP_CONST.BLANK;\n return httpCMSAnalyticsClient().get(`${API_CONST.APPLICATION_ANALYTIC_LIST}?programId=${programId}&applicationIds=${applicationId}`).then((response) => {\n return { data : response.data, status: response.status, statusText: response.statusText};\n }).catch((error) => {\n return { data : error.data, status: error.status, statusText: error.statusText};\n });\n }\n\n export function programSitesGroupsList(programId:number, siteId:number){\n let highestRole: number = JSON.parse(JSON.stringify(APP_UTILITIES.getCookie(\"highest_role\")));\n let unassignedgroups: boolean = true;\n if (highestRole == APP_CONST.STAFF_ROLE_ID) {\n unassignedgroups = false;\n }\n return httpClient().get(`/sites/${siteId}/program/${programId}/classrooms?includeUnassignedScholars=${unassignedgroups}`).then((response) => {\n return { data : response.data, status: response.status, statusText: response.statusText};\n }).catch((error) => {\n return { data : error.data, status: error.status, statusText: error.statusText};\n });\n }\n export function getRetentionWeekLineData(params :IAdaWeekLinePayload ) {\n return httpCMSAnalyticsClient().get(`${API_CONST.ANALYTICS_RETENTION}?programId=${params.programId}&siteId=${params.siteId}&groupIds=${params.groupIds}&isDay=${params.isDay}`).then((response) => {\n return { data : response.data, status: response.status, statusText: response.statusText};\n }).catch((error) => {\n return { data : error.data, status: error.status, statusText: error.statusText};\n });\n\n}\n\nexport function applicationSubmissionByStatus(payload: any) {\n payload.applicationIds = payload.applicationIds && payload.applicationIds.length && payload.applicationIds.map((element:string) => {\n return element.toUpperCase();\n });\n let applicationId = payload.applicationIds && payload.applicationIds.length ? payload.applicationIds.join(',') : APP_CONST.BLANK;\n var url = `${API_CONST.SCHOLARS_APPLICATIONS_DROPDOWN_SUBMISSION_STATUS}programid/${payload.programId}?applicationIds=${applicationId}`;\n return httpClientEnrollment().get(url).then((response: any) => {\n const temp = window.URL.createObjectURL(new Blob([response.data]));\n const link = document.createElement('a');\n let fileName = response.headers[\"content-disposition\"] && ((response.headers[\"content-disposition\"].split(';'))[1].split(\"filename=\")[1]).replace(/['\"]+/g, '') || 'download.csv';\n link.href = temp;\n link.setAttribute('download', fileName);\n document.body.appendChild(link);\n link.target = \"_blank\"\n link.click();\n return { data: response.data, status: response.status, statusText: response.statusText };\n }).catch((error: any) => {\n return { data: error.data, status: error.status, statusText: error.statusText };\n });\n}\n\nexport function totalWeeklySubmissions(payload: any) {\n var url = `${API_CONST.SCHOLARS_APPLICATIONS_DROPDOWN_SUBMISSION_WEEKLY}programid/${payload.programId}?applicationIds=${payload.applicationIds}`;\n return httpClientEnrollment().get(url).then((response: any) => {\n const temp = window.URL.createObjectURL(new Blob([response.data]));\n const link = document.createElement('a');\n let fileName = response.headers[\"content-disposition\"] && ((response.headers[\"content-disposition\"].split(';'))[1].split(\"filename=\")[1]).replace(/['\"]+/g, '') || 'download.csv';\n link.href = temp;\n link.setAttribute('download', fileName);\n document.body.appendChild(link);\n link.target = \"_blank\"\n link.click();\n return { data: response.data, status: response.status, statusText: response.statusText };\n }).catch((error: any) => {\n return { data: error.data, status: error.status, statusText: error.statusText };\n });\n}\n\nexport function adabySite(payload: any) {\n var url = `${API_CONST.SCHOLARS_ATTENDANCE_DROPDOWN_SITE}?programId=${payload.programId}`;\n return httpClient().get(url).then((response: any) => {\n const temp = window.URL.createObjectURL(new Blob([response.data]));\n const link = document.createElement('a');\n let fileName = response.headers[\"content-disposition\"] && ((response.headers[\"content-disposition\"].split(';'))[1].split(\"filename=\")[1]).replace(/['\"]+/g, '') || 'download.csv';\n link.href = temp;\n link.setAttribute('download', fileName);\n document.body.appendChild(link);\n link.target = \"_blank\"\n link.click();\n return { data: response.data, status: response.status, statusText: response.statusText };\n }).catch((error: any) => {\n return { data: error.data, status: error.status, statusText: error.statusText };\n });\n}\n\nexport function adabyWeek(payload: any) {\n var url = `${API_CONST.SCHOLARS_ATTENDANCE_DROPDOWN_WEEK}?programId=${payload.programId}&siteId=${payload.siteId}&groupIds=${payload.groupIds}&isDay=${payload.isDay}`;\n return httpClient().get(url).then((response: any) => {\n const temp = window.URL.createObjectURL(new Blob([response.data]));\n const link = document.createElement('a');\n let fileName = response.headers[\"content-disposition\"] && ((response.headers[\"content-disposition\"].split(';'))[1].split(\"filename=\")[1]).replace(/['\"]+/g, '') || 'download.csv';\n link.href = temp;\n link.setAttribute('download', fileName);\n document.body.appendChild(link);\n link.target = \"_blank\"\n link.click();\n return { data: response.data, status: response.status, statusText: response.statusText };\n }).catch((error: any) => {\n return { data: error.data, status: error.status, statusText: error.statusText };\n });\n}\n\nexport function adabyDay(payload: any) {\n var url = `${API_CONST.SCHOLARS_ATTENDANCE_DROPDOWN_DAY}?programId=${payload.programId}&siteId=${payload.siteId}&groupIds=${payload.groupIds}&isDay=true`;\n return httpClient().get(url).then((response: any) => {\n const temp = window.URL.createObjectURL(new Blob([response.data]));\n const link = document.createElement('a');\n let fileName = response.headers[\"content-disposition\"] && ((response.headers[\"content-disposition\"].split(';'))[1].split(\"filename=\")[1]).replace(/['\"]+/g, '') || 'download.csv';\n link.href = temp;\n link.setAttribute('download', fileName);\n document.body.appendChild(link);\n link.target = \"_blank\"\n link.click();\n return { data: response.data, status: response.status, statusText: response.statusText };\n }).catch((error: any) => {\n return { data: error.data, status: error.status, statusText: error.statusText };\n });\n}\n\nexport function attendanceScholarCheckin(payload: any) {\n var url = `${API_CONST.SCHOLARS_ATTENDANCE_DROPDOWN_CHECK_IN}?programId=${payload.programId}&siteId=${payload.siteId}&groupIds=${payload.groupIds}`;\n return httpClient().get(url).then((response: any) => {\n const temp = window.URL.createObjectURL(new Blob([response.data]));\n const link = document.createElement('a');\n let fileName = response.headers[\"content-disposition\"] && ((response.headers[\"content-disposition\"].split(';'))[1].split(\"filename=\")[1]).replace(/['\"]+/g, '') || 'download.csv';\n link.href = temp;\n link.setAttribute('download', fileName);\n document.body.appendChild(link);\n link.target = \"_blank\"\n link.click();\n return { data: response.data, status: response.status, statusText: response.statusText };\n }).catch((error: any) => {\n return { data: error.data, status: error.status, statusText: error.statusText };\n });\n}\n\nexport function attendanceScholarCheckout(payload: any) {\n var url = `${API_CONST.SCHOLARS_ATTENDANCE_DROPDOWN_CHECK_OUT}?programId=${payload.programId}&siteId=${payload.siteId}&groupIds=${payload.groupIds}`;\n return httpClient().get(url).then((response: any) => {\n const temp = window.URL.createObjectURL(new Blob([response.data]));\n const link = document.createElement('a');\n let fileName = response.headers[\"content-disposition\"] && ((response.headers[\"content-disposition\"].split(';'))[1].split(\"filename=\")[1]).replace(/['\"]+/g, '') || 'download.csv';\n link.href = temp;\n link.setAttribute('download', fileName);\n document.body.appendChild(link);\n link.target = \"_blank\"\n link.click();\n return { data: response.data, status: response.status, statusText: response.statusText };\n }).catch((error: any) => {\n return { data: error.data, status: error.status, statusText: error.statusText };\n });\n}\n\n export function completionSiteAnalyticsDetail(programId:number, siteId:number|string, groupIds?:any, selectedTab?:any){\n siteId = siteId?siteId:APP_CONST.ZERO;\n groupIds = !groupIds?[]:groupIds\n selectedTab = (selectedTab && (selectedTab=='Day'))?true: false\n return httpCMSAnalyticsClient().get(`${API_CONST.ATTENDENCE_SITE_ANALYTICS_LIST}?programId=${programId}&siteId=${siteId}&groupIds=${groupIds}&isDay=${selectedTab}`).then((response) => {\n return { data : response.data, status: response.status, statusText: response.statusText};\n }).catch((error) => {\n return { data : error.data, status: error.status, statusText: error.statusText};\n });\n }\n\n export function getAdaProgramData(programId: number) {\n return httpCMSAnalyticsClient().get(`${API_CONST.ANALYTICS_ADA}/program/${programId}`).then((response) => {\n return { data : response.data, status: response.status, statusText: response.statusText};\n }).catch((error) => {\n return { data : error.data, status: error.status, statusText: error.statusText};\n });\n }\n\n export function getAttenCompletionProgramData(programId: any) {\n return httpCMSAnalyticsClient().get(`${API_CONST.ATTENDENCE_COMPLETION_PROGRAM_DETAILS}/${programId}`).then((response) => {\n return { data : response.data, status: response.status, statusText: response.statusText};\n }).catch((error) => {\n return { data : error.data, status: error.status, statusText: error.statusText};\n });\n }\n\n export function getRetentionProgramData(programId: number) {\n return httpCMSAnalyticsClient().get(`${API_CONST.ANALYTICS_RETENTION}/program/${programId}`).then((response) => {\n return { data : response.data, status: response.status, statusText: response.statusText};\n }).catch((error) => {\n return { data : error.data, status: error.status, statusText: error.statusText};\n });\n }\n\n export function qualityAnalyticsDetail(programId: any, siteId:number) {\n return httpCMSAnalyticsClient().get(`${API_CONST.QUALITY_ANALYTIC_LIST}?programId=${programId}&siteId=${siteId}`).then((response) => {\n return { data : response.data, status: response.status, statusText: response.statusText};\n }).catch((error) => {\n return { data : error.data, status: error.status, statusText: error.statusText};\n });\n }\n\n export function completionCSVDownload(payload:any) {\n return httpCMSAnalyticsClient().get(`${API_CONST.COMPLETION_DOWNLOAD_CSV}?programId=${payload.programId}&siteId=${payload.siteId}&groupIds=${payload.groupIds}&isDay=${payload.isDay}&csvType=${payload.csvType}`).then((response) => {\n const temp = window.URL.createObjectURL(new Blob([response.data]));\n const link = document.createElement('a');\n let fileName = response.headers[\"content-disposition\"] && ((response.headers[\"content-disposition\"].split(';'))[1].split(\"filename=\")[1]).replace(/['\"]+/g, '') || 'download.csv';\n link.href = temp;\n link.setAttribute('download', fileName);\n document.body.appendChild(link);\n link.target = \"_blank\"\n link.click();\n return { data : response.data, status: response.status, statusText: response.statusText};\n }).catch((error) => {\n return { data : error.data, status: error.status, statusText: error.statusText};\n });\n }\n\n export function retensionCSVDownload(payload:any) {\n return httpCMSAnalyticsClient().get(`${API_CONST.RETENSION_DOWNLOAD_CSV}?csvType=${payload.csvType}&programId=${payload.programId}&siteId=${payload.siteId}&groupIds=${payload.groupIds}&isDay=${payload.isDay}`).then((response) => {\n const temp = window.URL.createObjectURL(new Blob([response.data]));\n const link = document.createElement('a');\n let fileName = response.headers[\"content-disposition\"] && ((response.headers[\"content-disposition\"].split(';'))[1].split(\"filename=\")[1]).replace(/['\"]+/g, '') || 'download.csv';\n link.href = temp;\n link.setAttribute('download', fileName);\n document.body.appendChild(link);\n link.target = \"_blank\"\n link.click();\n return { data : response.data, status: response.status, statusText: response.statusText};\n }).catch((error) => {\n return { data : error.data, status: error.status, statusText: error.statusText};\n });\n }\n\n export function professionalLearningCSVDownload(payload:any) {\n return httpCMSAnalyticsClient().get(`${API_CONST.PROFESSIONAL_LEARNING_DOWNLOAD_CSV}?programIds=${payload.programIds}`).then((response) => {\n const temp = window.URL.createObjectURL(new Blob([response.data]));\n const link = document.createElement('a');\n let fileName = response.headers[\"content-disposition\"] && ((response.headers[\"content-disposition\"].split(';'))[1].split(\"filename=\")[1]).replace(/['\"]+/g, '') || 'download.csv';\n link.href = temp;\n link.setAttribute('download', fileName);\n document.body.appendChild(link);\n link.target = \"_blank\"\n link.click();\n return { data : response.data, status: response.status, statusText: response.statusText};\n }).catch((error) => {\n return { data : error.data, status: error.status, statusText: error.statusText};\n });\n }\nexport function consolidatedScholarCSVDownload(payload:any)\n{\n return httpEnrollmentClient().post(`${API_CONST.DOWNLOAD_ROASTER}?accountId=${payload.accountId}&siteId=${payload.siteId}&programId=${payload.programId}&step=-1&filetype=2`,\n {\n // It needs to be present in the request body\n ColumnsToHide: null\n }\n ).then((response) => {\n const temp = window.URL.createObjectURL(new Blob([response.data]));\n const link = document.createElement('a');\n let fileName = response.headers[\"content-disposition\"] && ((response.headers[\"content-disposition\"].split(';'))[1].split(\"filename=\")[1]).replace(/['\"]+/g, '') || 'download.csv';\n link.href = temp;\n link.setAttribute('download', fileName);\n document.body.appendChild(link);\n link.target = \"_blank\"\n link.click();\n return { data : response.data, status: response.status, statusText: response.statusText};\n }).catch((error) => {\n return { data : error.data, status: error.status, statusText: error.statusText};\n });\n\n}\n export function enrollmentCSVDownload(payload:any) {\n return httpCMSAnalyticsClient().get(`${API_CONST.ENROLLMENT_DOWNLOAD_CSV}?programId=${payload.programId}&siteIds=${payload.siteId}`).then((response) => {\n const temp = window.URL.createObjectURL(new Blob([response.data]));\n const link = document.createElement('a');\n let fileName = response.headers[\"content-disposition\"] && ((response.headers[\"content-disposition\"].split(';'))[1].split(\"filename=\")[1]).replace(/['\"]+/g, '') || 'download.csv';\n link.href = temp;\n link.setAttribute('download', fileName);\n document.body.appendChild(link);\n link.target = \"_blank\"\n link.click();\n return { data : response.data, status: response.status, statusText: response.statusText};\n }).catch((error) => {\n return { data : error.data, status: error.status, statusText: error.statusText};\n });\n }\n\n export function getProfessionalLearningDetails(programIds:number[]){\n return httpCMSAnalyticsClient().get(`${API_CONST.PROFESSIONAL_LEARNING_DETAILS}?programIds=${programIds}`).then((response) => {\n return { data : response.data, status: response.status, statusText: response.statusText};\n }).catch((error) => {\n return { data : error.data, status: error.status, statusText: error.statusText};\n });\n }\n\n export function adaScholarDetailCSVDownload(payload:any){\n return httpClient().get(`${API_CONST.ADA_SCHOLAR_DETAILS_DOWNLOAD_CSV}?programId=${payload.programId}&siteId=${payload.siteId}&groupIds=${payload.groupIds}`).then((response) => {\n const temp = window.URL.createObjectURL(new Blob([response.data]));\n const link = document.createElement('a');\n let fileName = response.headers[\"content-disposition\"] && ((response.headers[\"content-disposition\"].split(';'))[1].split(\"filename=\")[1]).replace(/['\"]+/g, '') || 'download.csv';\n link.href = temp;\n link.setAttribute('download', fileName);\n document.body.appendChild(link);\n link.target = \"_blank\"\n link.click();\n return { data : response.data, status: response.status, statusText: response.statusText};\n }).catch((error) => {\n return { data : error.data, status: error.status, statusText: error.statusText};\n });\n }\n\n export function scholarDailyAttendanceCSVDownload(payload:any){\n return httpClient().get(`${API_CONST.SCHOLAR_DAILY_ATTENDANCE_DOWNLOAD_CSV}?programId=${payload.programId}&siteId=${payload.siteId}&groupIds=${payload.groupIds}`).then((response) => {\n const temp = window.URL.createObjectURL(new Blob([response.data]));\n const link = document.createElement('a');\n let fileName = response.headers[\"content-disposition\"] && ((response.headers[\"content-disposition\"].split(';'))[1].split(\"filename=\")[1]).replace(/['\"]+/g, '') || 'download.csv';\n link.href = temp;\n link.setAttribute('download', fileName);\n document.body.appendChild(link);\n link.target = \"_blank\"\n link.click();\n return { data : response.data, status: response.status, statusText: response.statusText};\n }).catch((error) => {\n return { data : error.data, status: error.status, statusText: error.statusText};\n });\n }","var classof = require('../internals/classof-raw');\n\n// `thisNumberValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-thisnumbervalue\nmodule.exports = function (value) {\n if (typeof value != 'number' && classof(value) != 'Number') {\n throw TypeError('Incorrect invocation');\n }\n return +value;\n};\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.github.io/ecma262/#sec-map-objects\nmodule.exports = collection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar $ = require('../internals/export');\nvar toInteger = require('../internals/to-integer');\nvar thisNumberValue = require('../internals/this-number-value');\nvar repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar nativeToFixed = 1.0.toFixed;\nvar floor = Math.floor;\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar FORCED = nativeToFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed.call({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.github.io/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n // eslint-disable-next-line max-statements\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toInteger(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n var multiply = function (n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n };\n\n var divide = function (n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n };\n\n var dataToString = function () {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;\n }\n } return s;\n };\n\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n result = dataToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n result = dataToString() + repeat.call('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat.call('0', fractDigits - k) + result\n : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n"],"sourceRoot":""}