{"version":3,"sources":["./src/searchFilterPipe.ts","./src/components/home/home.component.ts","./src/services/ajWeb.service.ts","./src/asset-provisioning-status/asset-provisioning-status.component.ts","./src/asset-provisioning-status/asset-provisioning-status.component.html","./src/heat-map-chart/heat-map-chart.component.ts","./src/heat-map-chart/heat-map-chart.component.html","./src/environments/environment.ts","./src/app/common/common.ts","./src/shared/cache-interceptor.ts","./src/use-Case-Imp-cluster-bar-chart-popup/useCasePopUp-cluster-bar-chart-two.component.ts","./src/use-Case-Imp-cluster-bar-chart-popup/useCasePopUp-cluster-bar-chart-two.component.html","./src/heat-map-chart-popUp/heat-map-popup-chart.component.ts","./src/heat-map-chart-popUp/heat-map-popup-chart.component.html","./src/DoNutGraph/donut-chart.component.ts","./src/DoNutGraph/donut-chart.component.html","./src/ticket-vol-multiline-graph/multiline-tickvol-trending-assets.component.ts","./src/ticket-vol-multiline-graph/multiline-tickvol-trending-assets.component.html","./src/app/app.component.ts","./src/app/app.component.html","./src/savinghrs-bullet-graph/savinghrs-bullet-chart.component.ts","./src/savinghrs-bullet-graph/savinghrs-bullet-chart.component.html","./src/fte-line-chart/fte-line-chart.component.ts","./src/fte-line-chart/fte-line-chart.component.html","./src/services/app-config.service.ts","./src/app/app.module.ts","./src/useCasesImplementationChart/use-cases-implementation.component.ts","./src/useCasesImplementationChart/use-cases-implementation.component.html","./src/DoNutTicketGraph/donut-chart.component.ts","./src/DoNutTicketGraph/donut-chart-ticket.component.html","./src/comment-box/comment-box.component.ts","./src/comment-box/comment-box.component.html","./src/BulletGraph_savinghrs-UnderCompletedSection/savinghrs-bullet-chart.CompSec.component.ts","./src/BulletGraph_savinghrs-UnderCompletedSection/savinghrs-bullet-chart.CompSec.component.html","./src/outcomes_bulletChart/outcomes_TotSaving_bullet-chart.component.ts","./src/outcomes_bulletChart/outcomes_TotSaving_bullet-chart.component.html","./src/outcomes_bulletChart/outcomes_TotEffort_bullet-chart.component.ts","./src/outcomes_bulletChart/outcomes_TotEffort_bullet-chart.component.html","./src/app/msal-application.module.ts","./src/app/app-routing.module.ts","./src/app/governance/governance.component.ts","./src/Multiline-top-trending-assets/multiline-top-trending-assets.component.ts","./src/Multiline-top-trending-assets/multiline-top-trending-assets.component.html","./src/4.0-standard-line-chart/standard-line-chart.component.ts","./src/4.0-standard-line-chart/standard-line-chart.component.html","./src/main.ts","./$_lazy_route_resource lazy namespace object","./src/BulletGraph/bullet-chart.component.ts","./src/BulletGraph/bullet-chart.component.html"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'searchOpportunityList',\r\n pure: false\r\n})\r\nexport class SearchOLPipeComponent implements PipeTransform {\r\n transform(searchList: any[], searchText: Object): any {\r\n if (!searchList || !searchText)\r\n return searchList;\r\n return searchList.filter(item => item[\"OpportunityName\"].indexOf(searchText[\"title\"]) !== -1);\r\n }\r\n}","import { Component, ComponentFactoryResolver, ComponentRef, ElementRef, OnInit, ViewChild, ViewContainerRef } from '@angular/core';\nimport { AJWebService } from '../../services/ajWeb.service';\nimport { CdkDragDrop, transferArrayItem } from '@angular/cdk/drag-drop';\n//import { DonutChartTicketComponent } from '../../DonutTicketGraph/donut-chart.component';\nimport { NgxSpinnerService } from \"ngx-spinner\";\nimport { common } from 'src/app/common/common';\nimport { AppConfigService } from 'src/services/app-config.service';\n\nimport * as c3 from 'c3';\nimport * as d3 from 'd3';\nimport * as $ from \"jquery\";\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { data } from 'jquery';\nimport * as FileSaver from 'file-saver';\n\n\ndeclare var bootbox: any;\n\n@Component({\n selector: 'app-home',\n templateUrl: './home.component.html',\n styleUrls: ['./home.component.css']\n})\nexport class HomeComponent implements OnInit {\n\n @ViewChild('ticketDistHeatMap') ticketDistHeatMap: ElementRef;\n @ViewChild('TktDistHeatMapPopUp') TktDistHeatMapPopUp: ElementRef;\n\n public ExcelDataAutomationPlanner: any = [];\n public excelData: any;\n public alertsList: any;\n public dueDateInMonths: any;\n public currentPlan: any;\n public savedCostTotal: any;\n public savedEffortTotal: any;\n public endToEndUId: any;\n\n public clientList: any;\n public clientName: any;\n public totalAsset: any;\n public AssetLists: any[] = [];\n public backlogassetList: any[] = [];\n public inProgressassetList: any[] = [];\n public completedassetList: any[] = [];\n public cancelledassetList: any[] = [];\n public toggleChart: boolean = false;\n\n public LoadOpportunityRequest: any;\n public AOFRagStatusClass: string;\n public AOFAssessments: any;\n public previousValue: number;\n\n public categoryIdList = [];\n public queueId: number;\n public queueIdArray: any[] = [];\n public opportunityId: number;\n public opportunityName: string = '';\n public assetsList: string[] = [];\n public assetId: number;\n public benefitRealizationDate: Date;\n\n public grouping: boolean;\n public showSummary: boolean;\n public displayNavbar: boolean = true;\n public displayNavbarIconsWithText: boolean = true;\n\n public opportunityList: any = [];\n public opportunityQueues;\n public copyOpportunityQueues;\n public opportunityQueuesFilteredData: any[][] = [];\n public opportunityQueuesBackup: any[][] = [];\n public tempAllOL: any[] = [];\n public assetList: any[];\n public allOpportunityList: any[] = [];\n public usageValues: any[];\n public displayPopup: string = '';\n public apHomeUrl: string;\n\n // @ViewChild('appenHere', { static: false, read: ViewContainerRef }) target: ViewContainerRef;\n // public componentRef: ComponentRef;\n\n public backlogList: any[] = [];\n public inProgressList: any[] = [];\n public completedList: any[] = [];\n public cancelledList: any[] = [];\n public scopedata: any;\n\n public backlogListBackup: any[] = [];\n public inProgressListBackup: any[] = [];\n public completedListBackup: any[] = [];\n public cancelledListBackup: any[] = [];\n\n public unGroupedBacklogSortOrder: boolean = false;\n public unGroupedInProgressSortOrder: boolean = false;\n public unGroupedCompletedSortOrder: boolean = false;\n public unGroupedCancelledSortOrder: boolean = false;\n public groupedOQSortOrders: any[][] = [];\n\n public groupedBacklogSortOrder: boolean = false;\n public groupedInProgressSortOrder: boolean = false;\n public groupedCompletedSortOrder: boolean = false;\n public groupedCancelledSortOrder: boolean = false;\n\n public dateValue: Date = new Date();\n public currentDate: Date = new Date();\n public monthsList: string[] = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n public yearsList: string[] = [(this.currentDate.getFullYear() - 1).toString().substr(2, 2), (this.currentDate.getFullYear()).toString().substr(2, 2)];\n public noOfMonthsArray;\n public moreThan12months: boolean = false;\n\n public noOfRecordsToBeSaved: number = 0;\n public noOfOQdetailsFetched: number = 0;\n\n public heatMapDataReceived: boolean = false;\n public supportGroupDataReceived: boolean = false;\n\n public BPId: number;\n public totalSavingsValueForNullAttribute: number = 0;\n public environmentDetails: any;\n\n public wsFilter = [{ \"Workstream\": \"All\" }];\n public selectedcmsFilter;\n public selectedcmsFlt: any;\n public source = [\n { value: undefined, name: 'All' },\n { value: \"AIAA\", name: 'IOM' },\n { value: \"AOF\", name: 'AOF' },\n { value: \"Manual\", name: 'Manual' }\n ];\n public status = [\n { value: undefined, name: 'All' },\n { value: \"Backlog\", name: 'Backlog' },\n { value: \"InProgress\", name: 'InProgress' },\n { value: \"Complete\", name: 'Completed' }\n ];\n public selectedSource: any;\n public selectedStatus: any;\n public dateValueTo: any;\n public dateValueFrom: any;\n public selectedcontractopportunitylist: any;\n public filterApply = false;\n public actualSavingValue: any = [];\n public maxActualSaving: any;\n public getActualSaving: any = 0;\n public changeValue: any = 0;\n public urlEndtoEnd: any;\n\n constructor(public ajWebService: AJWebService, private resolver: ComponentFactoryResolver, private spinner: NgxSpinnerService, private spinner2: NgxSpinnerService, private http: HttpClient, private appConfig: AppConfigService) {\n // this.AOFRagStatusClass = \"ragRed\";\n }\n\n\n ngOnInit(): void {\n\n //this.onClearActualSavingClick();\n //this.environmentDetails = this.appConfig.environmentSettings;\n //this.displayNavbar = true;\n //this.displayNavbarIconsWithText = true;\n\n //this.grouping = true;\n //this.showSummary = true;\n ////this.GetAOFAssessments();\n ////this.GetOpportunityList(undefined);\n //this.totalSavingsValueForNullAttribute = 0;\n //// this.ajWebService.updateScopeSelector.subscribe(scopeSelectorData => {\n //// this.scopedata = scopeSelectorData;\n //// this.GetOpportunityList(this.ajWebService.LoadOpportunityRequest);\n //// if (this.scopedata != undefined)\n //// // if (this.scopedata.cmsOrWS == \"cms\")\n //// // this.getheatMapData(this.endToEndUId, this.scopedata.cmsOrWSUid, null);\n //// // else if (this.scopedata.cmsOrWS == \"ws\" && (this.scopedata.wsUid != null || this.scopedata.wsUid != \"\"))\n //// // this.getheatMapData(this.endToEndUId, null, this.scopedata.wsUid);\n //// // else\n //// // // this.getheatMapData(this.endToEndUId, null, this.scopedata.wsUid);\n //// // else\n //// // console.log(\"hello\");\n //// // // this.getheatMapData(this.endToEndUId, null, null);\n //// }, error => {\n //// this.ajWebService.showErrorMessage(error);\n //// })\n //this.ajWebService.change.subscribe(LoadOpportunityRequest => {\n // this.LoadOpportunityRequest = LoadOpportunityRequest;\n // if (this.ajWebService.tabCode == \"MW\") {\n // //this.GetNotificationsList();\n // this.GetOpportunityList(LoadOpportunityRequest);\n // //this.GetAOFAssessments();\n // }\n //});\n\n //this.endToEndUId = sessionStorage.getItem('E2E');\n //let pattern = /[^a-z\\d]/i;\n //if(pattern.test(this.endToEndUId)==true){\n // this.urlEndtoEnd = this.endToEndUId;\n //}\n \n //console.log(this.endToEndUId + \" ==> \" + pattern.test(this.endToEndUId));\n ////this.getheatMapData(this.endToEndUId, null, null);\n //this.ajWebService.onClear.subscribe(data => {\n // this.onClearClick();\n //},\n // error => {\n // console.log(error);\n // })\n }\n\n getSetcmsFilter() {\n this.wsFilter = [{ \"Workstream\": \"All\" }];\n\n for (var i = 0; i < this.ajWebService.cmsData.length; i++) {\n if (this.ajWebService.cmsData[i].CMSUId == this.selectedcmsFilter) {\n\n // this.wsFilter = [{ \"Workstream\": \"Select\" }];\n\n this.wsFilter = this.ajWebService.cmsData[i].Workstreams;\n\n if (this.ajWebService.cmsData[i].CMSLevelTwo != '') {\n\n for (var j = 0; j < this.ajWebService.cmsData[i].CMSLevelTwo.length; j++) {\n this.wsFilter = this.wsFilter.concat(this.ajWebService.cmsData[i].CMSLevelTwo[j].Workstreams);\n\n if (this.ajWebService.cmsData[i].CMSLevelTwo[j].CMSLevelThree != '') {\n\n for (var k = 0; k < this.ajWebService.cmsData[i].CMSLevelTwo[j].CMSLevelThree.length; k++) {\n this.wsFilter = this.wsFilter.concat(this.ajWebService.cmsData[i].CMSLevelTwo[j].CMSLevelThree[k].Workstreams);\n\n if (this.ajWebService.cmsData[i].CMSLevelTwo[j].CMSLevelThree[k].CMSLevelFour != '') {\n\n for (var l = 0; l < this.ajWebService.cmsData[i].CMSLevelTwo[j].CMSLevelThree[k].CMSLevelFour.length; l++) {\n this.wsFilter = this.wsFilter.concat(this.ajWebService.cmsData[i].CMSLevelTwo[j].CMSLevelThree[k].CMSLevelFour[l].Workstreams);\n }\n }\n\n }\n\n }\n\n }\n }\n\n }\n }\n\n //console.log(this.selectedcmsFilter);\n this.selectedcmsFlt = this.wsFilter[0][\"WorkstreamUId\"];\n //console.log(this.selectedcmsFlt);\n\n\n }\n datePopupClick() {\n event.stopPropagation();\n }\n onClearClick() {\n this.selectedStatus = undefined;\n this.selectedSource = undefined;\n this.selectedcmsFilter = undefined;\n this.wsFilter = [{ \"Workstream\": \"All\" }];\n this.dateValueFrom = undefined;\n this.dateValueTo = undefined;\n this.getActualSaving = 0;\n this.changeValue = 0.00;\n }\n\n onClearActualSavingClick() {\n this.getActualSaving = 0;\n this.changeValue = 0.00;\n }\n onCancleClick() {\n $(\".dropdown-menu.dropdown-xl\").removeClass('show');\n }\n\n ValueChangeTo(PlannedDate: string) {\n var getDate = PlannedDate[\"value\"].getDate();\n var getMonth = PlannedDate[\"value\"].getMonth() + 1;\n var date = getDate < 10 ? '0' + getDate : getDate;\n var month = getMonth < 10 ? '0' + getMonth : getMonth;\n this.dateValueTo = PlannedDate[\"value\"].getFullYear() + \"-\" + month + \"-\" + date;\n event.stopPropagation();\n }\n ValueChangeFrom(PlannedDateFrom: string) {\n var getDate = PlannedDateFrom[\"value\"].getDate();\n var getMonth = PlannedDateFrom[\"value\"].getMonth() + 1;\n var date = getDate < 10 ? '0' + getDate : getDate;\n var month = getMonth < 10 ? '0' + getMonth : getMonth;\n this.dateValueFrom = PlannedDateFrom[\"value\"].getFullYear() + \"-\" + date + \"-\" + month;\n event.stopPropagation();\n }\n\n valueChanged(e) {\n this.getActualSaving = Number(e);\n this.changeValue = this.getActualSaving != 0 ? (this.getActualSaving >= 1000 ? (this.getActualSaving / 1000).toFixed(2) + 'k' : this.getActualSaving.toFixed(2)) : '0.00';\n }\n onAdvClick() {\n $('.myw-aj-adv-fitler').removeClass('d-none');\n $('.adv-btn').addClass('d-none');\n $('.clear-btn').removeClass('d-none');\n }\n\n\n ApRedirect(BluePrintId: number, AppName: string, Type: string, DeepDiveId: number, CategoryId: number, SubCategoryId: number, CMSUid: number, WsUid: number) {\n sessionStorage.setItem('CategoryID', CategoryId.toString());\n sessionStorage.setItem('SubCategoryID', SubCategoryId.toString());\n localStorage.setItem('CategoryID', CategoryId.toString());\n localStorage.setItem('SubCategoryID', SubCategoryId.toString());\n\n var url = this.environmentDetails.apBluePrintURL + \"?BPId=\" + BluePrintId + \"&E2EUID=\" + this.urlEndtoEnd + \"&CMS=\" + CMSUid + \"&WS=\" + WsUid + \"&AppName=\" + AppName + \"&DeepDiveId=\" + DeepDiveId + \"&CategoryId=\" + CategoryId + \"&SubCategoryId=\" + SubCategoryId;\n window.open(url, \"_blank\");\n }\n\n APHome() {\n\n if (this.scopedata != undefined) {\n\n var cmsOrWSUid = null;\n var wsId = null;\n if (this.scopedata.cmsOrWS == \"cms\") {\n cmsOrWSUid = this.scopedata.cmsOrWSUid;\n }\n if (this.scopedata.cmsOrWS == \"ws\") {\n wsId = this.scopedata.wsUid;\n }\n var url = this.environmentDetails.apTreasuryURL + \"?E2EUID=\" + this.urlEndtoEnd + \"&CMS=\" + cmsOrWSUid + \"&WS=\" + wsId;\n window.open(url, \"_blank\");\n }\n else\n window.open(this.environmentDetails.apTreasuryURL + \"?E2EUID=\" + this.urlEndtoEnd + \"&CMS=null&WS=null\", \"_blank\");\n }\n\n IOMRedirect() {\n if (this.scopedata != undefined) {\n var url = this.environmentDetails.aiaaHomeUrl + \"?E2EUID=\" + this.urlEndtoEnd + \"&CMSUID=\" + this.scopedata.cmsOrWSUid + \"&WSUID=\" + this.scopedata.wsUid;\n window.open(url, \"_blank\");\n }\n else\n window.open(this.environmentDetails.aiaaHomeUrl + \"?E2EUID=\" + this.urlEndtoEnd + \"&CMSUID=&WSUID=\", \"_blank\");\n }\n\n AOFRedirect() {\n window.open(this.environmentDetails.aofHomeUrl + \"?EndToEndUId=\" + this.urlEndtoEnd + \"&CMSUID=null&WSUID=null\", \"_blank\");\n }\n\n\n // getheatMapData(endToEndId: string, cmsUId: string, wsUId: string) {\n // endToEndId = sessionStorage.getItem('E2E');\n // this.ajWebService.APtoAJHeatMap(endToEndId, cmsUId, wsUId).subscribe(data => {\n // if (data != undefined) {\n // let heatmapdata: any = JSON.parse(data.toString()).sort((a, b) => a.TicketCount > b.TicketCount ? -1 : 1);\n\n // let response = [];\n // let heatmapdataCount: number;\n // if (heatmapdata.length > 20)\n // heatmapdataCount = 20;// heatmapdata.length / 3; //commented for temporaryly\n // //else if (heatmapdata.length > 50)\n // //heatmapdataCount = heatmapdata.length / 2;\n // else\n // heatmapdataCount = heatmapdata.length;\n // for (var i = 0; i < heatmapdataCount; i++)\n // response.push({ 'variable': heatmapdata[i].SupportGroupName, 'value': heatmapdata[i].TicketCount, 'type': heatmapdata[i].ProblemStatementName });\n // this.ajWebService.ticketDistributionData = response.sort((a, b) => a.value > b.value ? 1 : -1);\n // this.ajWebService.ticketDistributionDataLoaded.emit(\"true\");\n // this.heatMapDataReceived = true;\n // }\n // this.hideSpinner(this.heatMapDataReceived, this.supportGroupDataReceived);\n // },\n // error => {\n // this.spinner.hide();\n // console.log(error)\n // })\n // }\n\n clearTicketDistChart() {\n if (document.getElementById(\"TktDistHeatMapPopUp\") != undefined)\n document.getElementById(\"TktDistHeatMapPopUp\").innerHTML = \"\";\n }\n\n viewROI(opportunityId: number) {\n this.opportunityId = opportunityId;\n this.ajWebService.displayROIGraphPopUp.emit(this.opportunityId.toString());\n }\n\n viewTicketVolume(opportunityId: number) {\n this.opportunityId = opportunityId;\n this.ajWebService.displayTicketVolumeGraphPopUp.emit(this.opportunityId.toString());\n }\n\n editTicketVolume(queueId: number, opportunityId: number, opportunityName: string, plannedStartDate: Date) {\n if (plannedStartDate != undefined) {\n this.displayPopup = \"ticketVolume\";\n this.ajWebService.lastActiveOpportunityId = this.opportunityId;\n this.opportunityId = opportunityId;\n this.opportunityName = opportunityName;\n this.benefitRealizationDate = plannedStartDate;\n this.assetsList = this.allOpportunityList.find(x => x.OpportunityId == opportunityId).Assets;\n this.getTicketVolume();\n } else\n this.ajWebService.showInfoMessage(\"Please enter benefit realization date\");\n }\n\n\n viewSavings(opportunityId: number) {\n this.opportunityId = opportunityId;\n this.ajWebService.displaySavingsGraphPopUp.emit(this.opportunityId.toString());\n }\n\n viewComment(opportunityId: number, opportunityName: string) {\n this.opportunityName = opportunityName;\n this.opportunityId = opportunityId;\n this.ajWebService.displayComment.emit(this.opportunityId.toString());\n }\n\n editSavings(queueId: number, opportunityId: number, opportunityName: string, plannedStartDate: Date) {\n if (plannedStartDate != undefined) {\n this.displayPopup = \"savingsAndFTE\";\n this.opportunityId = opportunityId;\n this.opportunityName = opportunityName;\n this.benefitRealizationDate = plannedStartDate;\n this.getSavings();\n } else\n this.ajWebService.showInfoMessage(\"Please enter benefit realization date\");\n }\n\n GetNotificationsList() {\n if (this.LoadOpportunityRequest != null && this.LoadOpportunityRequest != undefined) {\n this.ajWebService.FilteredCMSWSRequest = this.LoadOpportunityRequest;\n this.ajWebService.GetNotificationsList(this.ajWebService.FilteredCMSWSRequest).subscribe(data => {\n //console.log(data)\n this.alertsList = data[\"Notifications\"];\n },\n error => {\n console.log(error)\n })\n }\n }\n\n GetOpportunityList(scopeSelectorData: any) {\n if (this.environmentDetails.MSALenabled == false)\n sessionStorage.setItem(\"E2E\", \"a60491aa-f072-4644-8f6b-faf4a9001a2a\")\n\n // if (scopeSelectorData != undefined)\n // this.ajWebService.FilteredCMSWSRequest = [{\n // \"UId\": \"23a198ba-89d7-4916-a198-e05c241572d2\",\n // \"ParentUId\": \"0f25ca81-fa5e-4549-b653-5ae0cd9f3915\",\n // \"EndToEndId\": 40761,\n // \"EndToEndUId\": sessionStorage.getItem('E2E'),\n // \"CMSId\": scopeSelectorData.cmsOrWS == \"cms\" ? scopeSelectorData.cmsOrWSId : null,\n // \"CMSUId\": scopeSelectorData.cmsOrWS == \"cms\" ? scopeSelectorData.cmsOrWSUid : null,\n // \"CMS\": null,\n // \"WorkstreamId\": scopeSelectorData.cmsOrWS == \"ws\" ? scopeSelectorData.cmsOrWSId : null,\n // \"WorkstreamUId\": scopeSelectorData.cmsOrWS == \"ws\" ? scopeSelectorData.cmsOrWSUid : null,\n // \"GlobalId\": 175785,\n // \"Workstream\": \"WS2\",\n // \"WorkstreamTypeId\": 2,\n // \"WorkstreamType\": \"Application / Application Group\",\n // \"WorkstreamStatusId\": 5,\n // \"WorkstreamStatus\": \"Service Delivery\",\n // \"WorkstreamStartDate\": null,\n // \"WorkstreamEndDate\": null,\n // \"FactoryWorkstreamIndicator\": \"\",\n // \"FactoryEndToEndId\": 0,\n // \"FactoryEndToEndUId\": \"00000000-0000-0000-0000-000000000000\",\n // \"ClosedOn\": null,\n // \"ClosedWorkstreamAge\": 0,\n // \"ClosedWorkstreamAgeLimit\": 7,\n // \"ApplicableWorkstreamIndicator\": \"Y\",\n // \"Type\": scopeSelectorData.cmsOrWS == \"cms\" ? \"CMS\" : \"Workstream\"\n // }];\n // else\n // this.ajWebService.FilteredCMSWSRequest = [{\n // \"UId\": null,\n // \"ParentUId\": null,\n // \"EndToEndId\": 40761,\n // \"EndToEndUId\": sessionStorage.getItem('E2E'),\n // \"CMSId\": 17870,\n // \"CMSUId\": \"23a198ba-89d7-4916-a198-e05c241572d2\",\n // \"CMS\": null,\n // \"WorkstreamId\": 276595,\n // \"WorkstreamUId\": \"0f25ca81-fa5e-4549-b653-5ae0cd9f3915\",\n // \"GlobalId\": 175785,\n // \"Workstream\": \"WS2\",\n // \"WorkstreamTypeId\": 2,\n // \"WorkstreamType\": \"Application / Application Group\",\n // \"WorkstreamStatusId\": 5,\n // \"WorkstreamStatus\": \"Service Delivery\",\n // \"WorkstreamStartDate\": null,\n // \"WorkstreamEndDate\": null,\n // \"FactoryWorkstreamIndicator\": \"\",\n // \"FactoryEndToEndId\": 0,\n // \"FactoryEndToEndUId\": \"00000000-0000-0000-0000-000000000000\",\n // \"ClosedOn\": null,\n // \"ClosedWorkstreamAge\": 0,\n // \"ClosedWorkstreamAgeLimit\": 7,\n // \"ApplicableWorkstreamIndicator\": \"Y\",\n // \"Type\": null\n // }];\n\n this.showSpinner();\n\n let ssd = scopeSelectorData;\n\n this.ajWebService.GetOpportunityList(scopeSelectorData).subscribe(data => {\n this.opportunityList = data;\n if (data != undefined) {\n {\n if (data[0] != null || data[0] != undefined)\n this.BPId = data[0].BluePrintId;\n }\n }\n this.populateData();\n },\n error => {\n console.log(error)\n })\n }\n\n populateData() {\n this.savedCostTotal = 0;\n this.savedEffortTotal = 0;\n let actualTotalSavings = 0;\n let totalSavedCostForCompletedOpportunities = 0;\n let totalSavedEffortForCompletedOpportunities = 0;\n\n this.backlogList = [];\n this.inProgressList = [];\n this.completedList = [];\n this.cancelledList = [];\n this.allOpportunityList = [];\n\n this.backlogassetList = [];\n this.inProgressassetList = [];\n this.completedassetList = [];\n\n if (this.opportunityList != null || this.opportunityList != undefined) {\n for (var i = 0; i < this.opportunityList.length; i++)\n if (this.opportunityList[i] != undefined)\n if (this.filterApply == false) {\n for (var j = 0; j < this.opportunityList[i].Opportunities.length; j++) {\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] = Math.round((this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date()));\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] != 0 ? this.opportunityList[i].Opportunities[j][\"currentPlan\"] = this.opportunityList[i].Opportunities[j][\"currentPlan\"] + '.00' : '';\n\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] != 0 ? this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j][\"actualSAvings\"] + '' : '';\n\n this.actualSavingValue.push(this.opportunityList[i].Opportunities[j][\"actualSAvings\"]);\n\n // adding opportunity all 4 non accordion (unqueued) lists\n if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.backlogList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.inProgressList.push(this.opportunityList[i].Opportunities[j]);\n\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n totalSavedCostForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedCost != undefined ? this.opportunityList[i].Opportunities[j].SavedCost : 0;\n totalSavedEffortForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedEffort != undefined ? this.opportunityList[i].Opportunities[j].SavedEffort : 0;\n\n actualTotalSavings += this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.completedList.push(this.opportunityList[i].Opportunities[j]);\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n this.savedEffortTotal += (this.opportunityList[i].Opportunities[j].SavedEffort / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"cancel\") >= 0)\n this.cancelledList.push(this.opportunityList[i].Opportunities[j]);\n\n this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId : -10;\n this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName : 'Others';\n\n this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n\n\n\n // 2 queue defects\n // for (var k = 0; k < this.opportunityList[i].Opportunities[j].SupportGroupId.length; k++) {\n // this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId[k] != undefined && this.opportunityList[i].Opportunities[j].SupportGroupId[k] != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId[k] : -10;\n\n // this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName[k] != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName[k] != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName[k] : 'Others';\n\n // this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n // }\n\n\n }\n\n\n\n\n this.maxActualSaving = Math.max.apply(Math, this.actualSavingValue);\n\n } else {\n for (var j = 0; j < this.opportunityList[i].Opportunities.length; j++) {\n if ((this.selectedcmsFilter != undefined && this.selectedcmsFilter != \"undefined\") && (this.selectedcmsFlt == this.opportunityList[i].Opportunities[j].wsUId) || (this.selectedcmsFilter == this.opportunityList[i].Opportunities[j].cmsUID)) {\n if ((this.selectedSource == undefined || this.selectedSource == \"undefined\") && (this.selectedStatus == this.opportunityList[i].Opportunities[j].Status)) {\n if (this.getActualSaving != 0 && (this.opportunityList[i].Opportunities[j][\"actualSavings\"] >= 0 && this.opportunityList[i].Opportunities[j][\"actualSavings\"] <= this.getActualSaving)) {\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] = Math.round((this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date()));\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] != 0 ? this.opportunityList[i].Opportunities[j][\"currentPlan\"] = this.opportunityList[i].Opportunities[j][\"currentPlan\"] + '.00' : '';\n\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] != 0 ? this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j][\"actualSAvings\"] + '' : '';\n\n // adding opportunity all 4 non accordion (unqueued) lists\n if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.backlogList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.inProgressList.push(this.opportunityList[i].Opportunities[j]);\n\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n totalSavedCostForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedCost != undefined ? this.opportunityList[i].Opportunities[j].SavedCost : 0;\n totalSavedEffortForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedEffort != undefined ? this.opportunityList[i].Opportunities[j].SavedEffort : 0;\n\n actualTotalSavings += this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.completedList.push(this.opportunityList[i].Opportunities[j]);\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n this.savedEffortTotal += (this.opportunityList[i].Opportunities[j].SavedEffort / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"cancel\") >= 0)\n this.cancelledList.push(this.opportunityList[i].Opportunities[j]);\n\n this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId : -10;\n this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName : 'Others';\n\n this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n } else if (this.getActualSaving == 0 || this.getActualSaving == undefined || this.getActualSaving == \"undefined\") {\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] = Math.round((this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date()));\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] != 0 ? this.opportunityList[i].Opportunities[j][\"currentPlan\"] = this.opportunityList[i].Opportunities[j][\"currentPlan\"] + '.00' : '';\n\n this.opportunityList[i].Opportunities[j][\"actualSavings\"] = this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] != 0 ? this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j][\"actualSAvings\"] + '' : '';\n\n // adding opportunity all 4 non accordion (unqueued) lists\n if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.backlogList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.inProgressList.push(this.opportunityList[i].Opportunities[j]);\n\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n totalSavedCostForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedCost != undefined ? this.opportunityList[i].Opportunities[j].SavedCost : 0;\n totalSavedEffortForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedEffort != undefined ? this.opportunityList[i].Opportunities[j].SavedEffort : 0;\n\n actualTotalSavings += this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.completedList.push(this.opportunityList[i].Opportunities[j]);\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n this.savedEffortTotal += (this.opportunityList[i].Opportunities[j].SavedEffort / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"cancel\") >= 0)\n this.cancelledList.push(this.opportunityList[i].Opportunities[j]);\n\n this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId : -10;\n this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName : 'Others';\n\n this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n }\n } else if (this.selectedSource == this.opportunityList[i].Opportunities[j].AppName) {\n if (this.selectedStatus == this.opportunityList[i].Opportunities[j].Status) {\n if (this.getActualSaving != 0 && (this.opportunityList[i].Opportunities[j][\"actualSavings\"] >= 0 && this.opportunityList[i].Opportunities[j][\"actualSavings\"] <= this.getActualSaving)) {\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] = Math.round((this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date()));\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] != 0 ? this.opportunityList[i].Opportunities[j][\"currentPlan\"] = this.opportunityList[i].Opportunities[j][\"currentPlan\"] + '.00' : '';\n\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] != 0 ? this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j][\"actualSAvings\"] + '' : '';\n\n // adding opportunity all 4 non accordion (unqueued) lists\n if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.backlogList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.inProgressList.push(this.opportunityList[i].Opportunities[j]);\n\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n totalSavedCostForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedCost != undefined ? this.opportunityList[i].Opportunities[j].SavedCost : 0;\n totalSavedEffortForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedEffort != undefined ? this.opportunityList[i].Opportunities[j].SavedEffort : 0;\n\n actualTotalSavings += this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.completedList.push(this.opportunityList[i].Opportunities[j]);\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n this.savedEffortTotal += (this.opportunityList[i].Opportunities[j].SavedEffort / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"cancel\") >= 0)\n this.cancelledList.push(this.opportunityList[i].Opportunities[j]);\n\n this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId : -10;\n this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName : 'Others';\n\n this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n } else if (this.getActualSaving == 0 || this.getActualSaving == undefined || this.getActualSaving == \"undefined\") {\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] = Math.round((this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date()));\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] != 0 ? this.opportunityList[i].Opportunities[j][\"currentPlan\"] = this.opportunityList[i].Opportunities[j][\"currentPlan\"] + '.00' : '';\n\n this.opportunityList[i].Opportunities[j][\"actualSavings\"] = this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] != 0 ? this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j][\"actualSAvings\"] + '' : '';\n\n // adding opportunity all 4 non accordion (unqueued) lists\n if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.backlogList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.inProgressList.push(this.opportunityList[i].Opportunities[j]);\n\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n totalSavedCostForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedCost != undefined ? this.opportunityList[i].Opportunities[j].SavedCost : 0;\n totalSavedEffortForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedEffort != undefined ? this.opportunityList[i].Opportunities[j].SavedEffort : 0;\n\n actualTotalSavings += this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.completedList.push(this.opportunityList[i].Opportunities[j]);\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n this.savedEffortTotal += (this.opportunityList[i].Opportunities[j].SavedEffort / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"cancel\") >= 0)\n this.cancelledList.push(this.opportunityList[i].Opportunities[j]);\n\n this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId : -10;\n this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName : 'Others';\n\n this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n }\n } else if (this.opportunityList[i].Opportunities[j].PlannedStartDate >= this.dateValueFrom && this.opportunityList[i].Opportunities[j].PlannedStartDate <= this.dateValueTo) {\n if (this.getActualSaving != 0 && (this.opportunityList[i].Opportunities[j][\"actualSavings\"] >= 0 && this.opportunityList[i].Opportunities[j][\"actualSavings\"] <= this.getActualSaving)) {\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] = Math.round((this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date()));\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] != 0 ? this.opportunityList[i].Opportunities[j][\"currentPlan\"] = this.opportunityList[i].Opportunities[j][\"currentPlan\"] + '.00' : '';\n\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] != 0 ? this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j][\"actualSAvings\"] + '' : '';\n\n // adding opportunity all 4 non accordion (unqueued) lists\n if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.backlogList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.inProgressList.push(this.opportunityList[i].Opportunities[j]);\n\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n totalSavedCostForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedCost != undefined ? this.opportunityList[i].Opportunities[j].SavedCost : 0;\n totalSavedEffortForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedEffort != undefined ? this.opportunityList[i].Opportunities[j].SavedEffort : 0;\n\n actualTotalSavings += this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.completedList.push(this.opportunityList[i].Opportunities[j]);\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n this.savedEffortTotal += (this.opportunityList[i].Opportunities[j].SavedEffort / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"cancel\") >= 0)\n this.cancelledList.push(this.opportunityList[i].Opportunities[j]);\n\n this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId : -10;\n this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName : 'Others';\n\n this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n } else if (this.getActualSaving == 0 || this.getActualSaving == undefined || this.getActualSaving == \"undefined\") {\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] = Math.round((this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date()));\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] != 0 ? this.opportunityList[i].Opportunities[j][\"currentPlan\"] = this.opportunityList[i].Opportunities[j][\"currentPlan\"] + '.00' : '';\n\n this.opportunityList[i].Opportunities[j][\"actualSavings\"] = this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] != 0 ? this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j][\"actualSAvings\"] + '' : '';\n\n // adding opportunity all 4 non accordion (unqueued) lists\n if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.backlogList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.inProgressList.push(this.opportunityList[i].Opportunities[j]);\n\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n totalSavedCostForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedCost != undefined ? this.opportunityList[i].Opportunities[j].SavedCost : 0;\n totalSavedEffortForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedEffort != undefined ? this.opportunityList[i].Opportunities[j].SavedEffort : 0;\n\n actualTotalSavings += this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.completedList.push(this.opportunityList[i].Opportunities[j]);\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n this.savedEffortTotal += (this.opportunityList[i].Opportunities[j].SavedEffort / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"cancel\") >= 0)\n this.cancelledList.push(this.opportunityList[i].Opportunities[j]);\n\n this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId : -10;\n this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName : 'Others';\n\n this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n }\n } else if ((this.selectedStatus == undefined || this.selectedStatus == \"undefined\") && (this.dateValueFrom == undefined || this.dateValueFrom == \"undefined\" || this.dateValueFrom == \"\") && (this.dateValueTo == undefined || this.dateValueTo == \"undefined\" || this.dateValueTo == \"\")) {\n if (this.getActualSaving != 0 && (this.opportunityList[i].Opportunities[j][\"actualSavings\"] >= 0 && this.opportunityList[i].Opportunities[j][\"actualSavings\"] <= this.getActualSaving)) {\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] = Math.round((this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date()));\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] != 0 ? this.opportunityList[i].Opportunities[j][\"currentPlan\"] = this.opportunityList[i].Opportunities[j][\"currentPlan\"] + '.00' : '';\n\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] != 0 ? this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j][\"actualSAvings\"] + '' : '';\n\n // adding opportunity all 4 non accordion (unqueued) lists\n if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.backlogList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.inProgressList.push(this.opportunityList[i].Opportunities[j]);\n\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n totalSavedCostForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedCost != undefined ? this.opportunityList[i].Opportunities[j].SavedCost : 0;\n totalSavedEffortForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedEffort != undefined ? this.opportunityList[i].Opportunities[j].SavedEffort : 0;\n\n actualTotalSavings += this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.completedList.push(this.opportunityList[i].Opportunities[j]);\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n this.savedEffortTotal += (this.opportunityList[i].Opportunities[j].SavedEffort / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"cancel\") >= 0)\n this.cancelledList.push(this.opportunityList[i].Opportunities[j]);\n\n this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId : -10;\n this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName : 'Others';\n\n this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n } else if (this.getActualSaving == 0 || this.getActualSaving == undefined || this.getActualSaving == \"undefined\") {\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] = Math.round((this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date()));\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] != 0 ? this.opportunityList[i].Opportunities[j][\"currentPlan\"] = this.opportunityList[i].Opportunities[j][\"currentPlan\"] + '.00' : '';\n\n this.opportunityList[i].Opportunities[j][\"actualSavings\"] = this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] != 0 ? this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j][\"actualSAvings\"] + '' : '';\n\n // adding opportunity all 4 non accordion (unqueued) lists\n if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.backlogList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.inProgressList.push(this.opportunityList[i].Opportunities[j]);\n\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n totalSavedCostForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedCost != undefined ? this.opportunityList[i].Opportunities[j].SavedCost : 0;\n totalSavedEffortForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedEffort != undefined ? this.opportunityList[i].Opportunities[j].SavedEffort : 0;\n\n actualTotalSavings += this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.completedList.push(this.opportunityList[i].Opportunities[j]);\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n this.savedEffortTotal += (this.opportunityList[i].Opportunities[j].SavedEffort / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"cancel\") >= 0)\n this.cancelledList.push(this.opportunityList[i].Opportunities[j]);\n\n this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId : -10;\n this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName : 'Others';\n\n this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n }\n }\n\n } else if ((this.selectedSource == undefined || this.selectedSource == \"undefined\") && (this.opportunityList[i].Opportunities[j].PlannedStartDate >= this.dateValueFrom && this.opportunityList[i].Opportunities[j].PlannedStartDate <= this.dateValueTo)) {\n if (this.getActualSaving != 0 && (this.opportunityList[i].Opportunities[j][\"actualSavings\"] >= 0 && this.opportunityList[i].Opportunities[j][\"actualSavings\"] <= this.getActualSaving)) {\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] = Math.round((this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date()));\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] != 0 ? this.opportunityList[i].Opportunities[j][\"currentPlan\"] = this.opportunityList[i].Opportunities[j][\"currentPlan\"] + '.00' : '';\n\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] != 0 ? this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j][\"actualSAvings\"] + '' : '';\n\n // adding opportunity all 4 non accordion (unqueued) lists\n if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.backlogList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.inProgressList.push(this.opportunityList[i].Opportunities[j]);\n\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n totalSavedCostForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedCost != undefined ? this.opportunityList[i].Opportunities[j].SavedCost : 0;\n totalSavedEffortForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedEffort != undefined ? this.opportunityList[i].Opportunities[j].SavedEffort : 0;\n\n actualTotalSavings += this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.completedList.push(this.opportunityList[i].Opportunities[j]);\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n this.savedEffortTotal += (this.opportunityList[i].Opportunities[j].SavedEffort / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"cancel\") >= 0)\n this.cancelledList.push(this.opportunityList[i].Opportunities[j]);\n\n this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId : -10;\n this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName : 'Others';\n\n this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n } else if (this.getActualSaving == 0 || this.getActualSaving == undefined || this.getActualSaving == \"undefined\") {\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] = Math.round((this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date()));\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] != 0 ? this.opportunityList[i].Opportunities[j][\"currentPlan\"] = this.opportunityList[i].Opportunities[j][\"currentPlan\"] + '.00' : '';\n\n this.opportunityList[i].Opportunities[j][\"actualSavings\"] = this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] != 0 ? this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j][\"actualSAvings\"] + '' : '';\n\n // adding opportunity all 4 non accordion (unqueued) lists\n if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.backlogList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.inProgressList.push(this.opportunityList[i].Opportunities[j]);\n\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n totalSavedCostForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedCost != undefined ? this.opportunityList[i].Opportunities[j].SavedCost : 0;\n totalSavedEffortForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedEffort != undefined ? this.opportunityList[i].Opportunities[j].SavedEffort : 0;\n\n actualTotalSavings += this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.completedList.push(this.opportunityList[i].Opportunities[j]);\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n this.savedEffortTotal += (this.opportunityList[i].Opportunities[j].SavedEffort / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"cancel\") >= 0)\n this.cancelledList.push(this.opportunityList[i].Opportunities[j]);\n\n this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId : -10;\n this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName : 'Others';\n\n this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n }\n } else if ((this.selectedSource == undefined || this.selectedSource == \"undefined\") && (this.selectedStatus == undefined || this.selectedStatus == \"undefined\") && (this.dateValueFrom == undefined || this.dateValueFrom == \"undefined\" || this.dateValueFrom == \"\") && (this.dateValueTo == undefined || this.dateValueTo == \"undefined\" || this.dateValueTo == \"\")) {\n if (this.getActualSaving != 0 && (this.opportunityList[i].Opportunities[j][\"actualSAvings\"] >= 0 && this.opportunityList[i].Opportunities[j][\"actualSAvings\"] <= this.getActualSaving)) {\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] = Math.round((this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date()));\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] != 0 ? this.opportunityList[i].Opportunities[j][\"currentPlan\"] = this.opportunityList[i].Opportunities[j][\"currentPlan\"] + '.00' : '';\n\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] != 0 ? this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j][\"actualSAvings\"] + '' : '';\n\n // adding opportunity all 4 non accordion (unqueued) lists\n if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.backlogList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.inProgressList.push(this.opportunityList[i].Opportunities[j]);\n\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n totalSavedCostForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedCost != undefined ? this.opportunityList[i].Opportunities[j].SavedCost : 0;\n totalSavedEffortForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedEffort != undefined ? this.opportunityList[i].Opportunities[j].SavedEffort : 0;\n\n actualTotalSavings += this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.completedList.push(this.opportunityList[i].Opportunities[j]);\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n this.savedEffortTotal += (this.opportunityList[i].Opportunities[j].SavedEffort / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"cancel\") >= 0)\n this.cancelledList.push(this.opportunityList[i].Opportunities[j]);\n\n this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId : -10;\n this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName : 'Others';\n\n this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n } else if (this.getActualSaving == 0 || this.getActualSaving == undefined || this.getActualSaving == \"undefined\") {\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] = Math.round((this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date()));\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] != 0 ? this.opportunityList[i].Opportunities[j][\"currentPlan\"] = this.opportunityList[i].Opportunities[j][\"currentPlan\"] + '.00' : '';\n\n this.opportunityList[i].Opportunities[j][\"actualSavings\"] = this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] != 0 ? this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j][\"actualSAvings\"] + '' : '';\n\n // adding opportunity all 4 non accordion (unqueued) lists\n if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.backlogList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.inProgressList.push(this.opportunityList[i].Opportunities[j]);\n\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n totalSavedCostForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedCost != undefined ? this.opportunityList[i].Opportunities[j].SavedCost : 0;\n totalSavedEffortForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedEffort != undefined ? this.opportunityList[i].Opportunities[j].SavedEffort : 0;\n\n actualTotalSavings += this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.completedList.push(this.opportunityList[i].Opportunities[j]);\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n this.savedEffortTotal += (this.opportunityList[i].Opportunities[j].SavedEffort / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"cancel\") >= 0)\n this.cancelledList.push(this.opportunityList[i].Opportunities[j]);\n\n this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId : -10;\n this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName : 'Others';\n\n this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n }\n }\n\n // 2 queue defects\n // for (var k = 0; k < this.opportunityList[i].Opportunities[j].SupportGroupId.length; k++) {\n // this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId[k] != undefined && this.opportunityList[i].Opportunities[j].SupportGroupId[k] != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId[k] : -10;\n\n // this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName[k] != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName[k] != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName[k] : 'Others';\n\n // this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n // }\n } else if ((this.selectedcmsFilter == undefined || this.selectedcmsFilter == \"undefined\") && (this.selectedSource == undefined || this.selectedSource == \"undefined\") && (this.selectedStatus == undefined || this.selectedStatus == \"undefined\") && (this.opportunityList[i].Opportunities[j].PlannedStartDate >= this.dateValueFrom && this.opportunityList[i].Opportunities[j].PlannedStartDate <= this.dateValueTo)) {\n if (this.getActualSaving != 0 && (this.opportunityList[i].Opportunities[j][\"actualSavings\"] >= 0 && this.opportunityList[i].Opportunities[j][\"actualSavings\"] <= this.getActualSaving)) {\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] = Math.round((this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date()));\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] != 0 ? this.opportunityList[i].Opportunities[j][\"currentPlan\"] = this.opportunityList[i].Opportunities[j][\"currentPlan\"] + '.00' : '';\n\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] != 0 ? this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j][\"actualSAvings\"] + '' : '';\n\n // adding opportunity all 4 non accordion (unqueued) lists\n if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.backlogList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.inProgressList.push(this.opportunityList[i].Opportunities[j]);\n\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n totalSavedCostForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedCost != undefined ? this.opportunityList[i].Opportunities[j].SavedCost : 0;\n totalSavedEffortForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedEffort != undefined ? this.opportunityList[i].Opportunities[j].SavedEffort : 0;\n\n actualTotalSavings += this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.completedList.push(this.opportunityList[i].Opportunities[j]);\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n this.savedEffortTotal += (this.opportunityList[i].Opportunities[j].SavedEffort / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"cancel\") >= 0)\n this.cancelledList.push(this.opportunityList[i].Opportunities[j]);\n\n this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId : -10;\n this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName : 'Others';\n\n this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n } else if (this.getActualSaving == 0 || this.getActualSaving == undefined || this.getActualSaving == \"undefined\") {\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] = Math.round((this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date()));\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] != 0 ? this.opportunityList[i].Opportunities[j][\"currentPlan\"] = this.opportunityList[i].Opportunities[j][\"currentPlan\"] + '.00' : '';\n\n this.opportunityList[i].Opportunities[j][\"actualSavings\"] = this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] != 0 ? this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j][\"actualSAvings\"] + '' : '';\n\n // adding opportunity all 4 non accordion (unqueued) lists\n if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.backlogList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.inProgressList.push(this.opportunityList[i].Opportunities[j]);\n\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n totalSavedCostForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedCost != undefined ? this.opportunityList[i].Opportunities[j].SavedCost : 0;\n totalSavedEffortForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedEffort != undefined ? this.opportunityList[i].Opportunities[j].SavedEffort : 0;\n\n actualTotalSavings += this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.completedList.push(this.opportunityList[i].Opportunities[j]);\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n this.savedEffortTotal += (this.opportunityList[i].Opportunities[j].SavedEffort / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"cancel\") >= 0)\n this.cancelledList.push(this.opportunityList[i].Opportunities[j]);\n\n this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId : -10;\n this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName : 'Others';\n\n this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n }\n } else if ((this.selectedSource == undefined || this.selectedSource == \"undefined\") && (this.selectedcmsFilter == undefined || this.selectedcmsFilter == \"undefined\") && (this.selectedStatus == this.opportunityList[i].Opportunities[j].Status)) {\n if (this.getActualSaving != 0 && (this.opportunityList[i].Opportunities[j][\"actualSavings\"] >= 0 && this.opportunityList[i].Opportunities[j][\"actualSavings\"] <= this.getActualSaving)) {\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] = Math.round((this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date()));\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] != 0 ? this.opportunityList[i].Opportunities[j][\"currentPlan\"] = this.opportunityList[i].Opportunities[j][\"currentPlan\"] + '.00' : '';\n\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] != 0 ? this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j][\"actualSAvings\"] + '' : '';\n\n // adding opportunity all 4 non accordion (unqueued) lists\n if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.backlogList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.inProgressList.push(this.opportunityList[i].Opportunities[j]);\n\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n totalSavedCostForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedCost != undefined ? this.opportunityList[i].Opportunities[j].SavedCost : 0;\n totalSavedEffortForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedEffort != undefined ? this.opportunityList[i].Opportunities[j].SavedEffort : 0;\n\n actualTotalSavings += this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.completedList.push(this.opportunityList[i].Opportunities[j]);\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n this.savedEffortTotal += (this.opportunityList[i].Opportunities[j].SavedEffort / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"cancel\") >= 0)\n this.cancelledList.push(this.opportunityList[i].Opportunities[j]);\n\n this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId : -10;\n this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName : 'Others';\n\n this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n } else if (this.getActualSaving == 0 || this.getActualSaving == undefined || this.getActualSaving == \"undefined\") {\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] = Math.round((this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date()));\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] != 0 ? this.opportunityList[i].Opportunities[j][\"currentPlan\"] = this.opportunityList[i].Opportunities[j][\"currentPlan\"] + '.00' : '';\n\n this.opportunityList[i].Opportunities[j][\"actualSavings\"] = this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] != 0 ? this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j][\"actualSAvings\"] + '' : '';\n\n // adding opportunity all 4 non accordion (unqueued) lists\n if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.backlogList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.inProgressList.push(this.opportunityList[i].Opportunities[j]);\n\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n totalSavedCostForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedCost != undefined ? this.opportunityList[i].Opportunities[j].SavedCost : 0;\n totalSavedEffortForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedEffort != undefined ? this.opportunityList[i].Opportunities[j].SavedEffort : 0;\n\n actualTotalSavings += this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.completedList.push(this.opportunityList[i].Opportunities[j]);\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n this.savedEffortTotal += (this.opportunityList[i].Opportunities[j].SavedEffort / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"cancel\") >= 0)\n this.cancelledList.push(this.opportunityList[i].Opportunities[j]);\n\n this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId : -10;\n this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName : 'Others';\n\n this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n }\n } else if ((this.selectedcmsFilter == undefined || this.selectedcmsFilter == \"undefined\") && (this.selectedSource == this.opportunityList[i].Opportunities[j].AppName)) {\n if (this.selectedStatus == this.opportunityList[i].Opportunities[j].Status) {\n if (this.getActualSaving != 0 && (this.opportunityList[i].Opportunities[j][\"actualSavings\"] >= 0 && this.opportunityList[i].Opportunities[j][\"actualSavings\"] <= this.getActualSaving)) {\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] = Math.round((this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date()));\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] != 0 ? this.opportunityList[i].Opportunities[j][\"currentPlan\"] = this.opportunityList[i].Opportunities[j][\"currentPlan\"] + '.00' : '';\n\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] != 0 ? this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j][\"actualSAvings\"] + '' : '';\n\n // adding opportunity all 4 non accordion (unqueued) lists\n if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.backlogList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.inProgressList.push(this.opportunityList[i].Opportunities[j]);\n\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n totalSavedCostForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedCost != undefined ? this.opportunityList[i].Opportunities[j].SavedCost : 0;\n totalSavedEffortForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedEffort != undefined ? this.opportunityList[i].Opportunities[j].SavedEffort : 0;\n\n actualTotalSavings += this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.completedList.push(this.opportunityList[i].Opportunities[j]);\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n this.savedEffortTotal += (this.opportunityList[i].Opportunities[j].SavedEffort / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"cancel\") >= 0)\n this.cancelledList.push(this.opportunityList[i].Opportunities[j]);\n\n this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId : -10;\n this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName : 'Others';\n\n this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n } else if (this.getActualSaving == 0 || this.getActualSaving == undefined || this.getActualSaving == \"undefined\") {\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] = Math.round((this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date()));\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] != 0 ? this.opportunityList[i].Opportunities[j][\"currentPlan\"] = this.opportunityList[i].Opportunities[j][\"currentPlan\"] + '.00' : '';\n\n this.opportunityList[i].Opportunities[j][\"actualSavings\"] = this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] != 0 ? this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j][\"actualSAvings\"] + '' : '';\n\n // adding opportunity all 4 non accordion (unqueued) lists\n if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.backlogList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.inProgressList.push(this.opportunityList[i].Opportunities[j]);\n\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n totalSavedCostForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedCost != undefined ? this.opportunityList[i].Opportunities[j].SavedCost : 0;\n totalSavedEffortForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedEffort != undefined ? this.opportunityList[i].Opportunities[j].SavedEffort : 0;\n\n actualTotalSavings += this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.completedList.push(this.opportunityList[i].Opportunities[j]);\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n this.savedEffortTotal += (this.opportunityList[i].Opportunities[j].SavedEffort / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"cancel\") >= 0)\n this.cancelledList.push(this.opportunityList[i].Opportunities[j]);\n\n this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId : -10;\n this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName : 'Others';\n\n this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n }\n } else if (this.opportunityList[i].Opportunities[j].PlannedStartDate >= this.dateValueFrom && this.opportunityList[i].Opportunities[j].PlannedStartDate <= this.dateValueTo) {\n if (this.getActualSaving != 0 && (this.opportunityList[i].Opportunities[j][\"actualSavings\"] >= 0 && this.opportunityList[i].Opportunities[j][\"actualSavings\"] <= this.getActualSaving)) {\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] = Math.round((this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date()));\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] != 0 ? this.opportunityList[i].Opportunities[j][\"currentPlan\"] = this.opportunityList[i].Opportunities[j][\"currentPlan\"] + '.00' : '';\n\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] != 0 ? this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j][\"actualSAvings\"] + '' : '';\n\n // adding opportunity all 4 non accordion (unqueued) lists\n if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.backlogList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.inProgressList.push(this.opportunityList[i].Opportunities[j]);\n\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n totalSavedCostForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedCost != undefined ? this.opportunityList[i].Opportunities[j].SavedCost : 0;\n totalSavedEffortForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedEffort != undefined ? this.opportunityList[i].Opportunities[j].SavedEffort : 0;\n\n actualTotalSavings += this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.completedList.push(this.opportunityList[i].Opportunities[j]);\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n this.savedEffortTotal += (this.opportunityList[i].Opportunities[j].SavedEffort / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"cancel\") >= 0)\n this.cancelledList.push(this.opportunityList[i].Opportunities[j]);\n\n this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId : -10;\n this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName : 'Others';\n\n this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n } else if (this.getActualSaving == 0 || this.getActualSaving == undefined || this.getActualSaving == \"undefined\") {\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] = Math.round((this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date()));\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] != 0 ? this.opportunityList[i].Opportunities[j][\"currentPlan\"] = this.opportunityList[i].Opportunities[j][\"currentPlan\"] + '.00' : '';\n\n this.opportunityList[i].Opportunities[j][\"actualSavings\"] = this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] != 0 ? this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j][\"actualSAvings\"] + '' : '';\n\n // adding opportunity all 4 non accordion (unqueued) lists\n if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.backlogList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.inProgressList.push(this.opportunityList[i].Opportunities[j]);\n\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n totalSavedCostForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedCost != undefined ? this.opportunityList[i].Opportunities[j].SavedCost : 0;\n totalSavedEffortForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedEffort != undefined ? this.opportunityList[i].Opportunities[j].SavedEffort : 0;\n\n actualTotalSavings += this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.completedList.push(this.opportunityList[i].Opportunities[j]);\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n this.savedEffortTotal += (this.opportunityList[i].Opportunities[j].SavedEffort / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"cancel\") >= 0)\n this.cancelledList.push(this.opportunityList[i].Opportunities[j]);\n\n this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId : -10;\n this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName : 'Others';\n\n this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n }\n } else if ((this.selectedStatus == undefined || this.selectedStatus == \"undefined\") && (this.dateValueFrom == undefined || this.dateValueFrom == \"undefined\" || this.dateValueFrom == \"\") && (this.dateValueTo == undefined || this.dateValueTo == \"undefined\" || this.dateValueTo == \"\")) {\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] = Math.round((this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date()));\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] != 0 ? this.opportunityList[i].Opportunities[j][\"currentPlan\"] = this.opportunityList[i].Opportunities[j][\"currentPlan\"] + '.00' : '';\n\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] != 0 ? this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j][\"actualSAvings\"] + '' : '';\n\n // adding opportunity all 4 non accordion (unqueued) lists\n if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.backlogList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.inProgressList.push(this.opportunityList[i].Opportunities[j]);\n\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n totalSavedCostForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedCost != undefined ? this.opportunityList[i].Opportunities[j].SavedCost : 0;\n totalSavedEffortForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedEffort != undefined ? this.opportunityList[i].Opportunities[j].SavedEffort : 0;\n\n actualTotalSavings += this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.completedList.push(this.opportunityList[i].Opportunities[j]);\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n this.savedEffortTotal += (this.opportunityList[i].Opportunities[j].SavedEffort / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"cancel\") >= 0)\n this.cancelledList.push(this.opportunityList[i].Opportunities[j]);\n\n this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId : -10;\n this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName : 'Others';\n this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n // 2 queue defects\n // for (var k = 0; k < this.opportunityList[i].Opportunities[j].SupportGroupId.length; k++) {\n // this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId[k] != undefined && this.opportunityList[i].Opportunities[j].SupportGroupId[k] != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId[k] : -10;\n\n // this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName[k] != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName[k] != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName[k] : 'Others';\n\n // this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n // }\n } else if ((this.selectedcmsFilter == undefined || this.selectedcmsFilter == \"undefined\") && (this.selectedSource == undefined || this.selectedSource == \"undefined\") && (this.selectedStatus == undefined || this.selectedStatus == \"undefined\") && (this.dateValueFrom == undefined || this.dateValueFrom == \"undefined\" || this.dateValueFrom == \"\") && (this.dateValueTo == undefined || this.dateValueTo == \"undefined\" || this.dateValueTo == \"\")) {\n\n if (this.getActualSaving != 0 && (this.opportunityList[i].Opportunities[j][\"actualSAvings\"] >= 0 && this.opportunityList[i].Opportunities[j][\"actualSAvings\"] <= this.getActualSaving)) {\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] = Math.round((this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date()));\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] != 0 ? this.opportunityList[i].Opportunities[j][\"currentPlan\"] = this.opportunityList[i].Opportunities[j][\"currentPlan\"] + '.00' : '';\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] != 0 ? this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j][\"actualSAvings\"] + '' : '';\n\n // adding opportunity all 4 non accordion (unqueued) lists\n if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.backlogList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.inProgressList.push(this.opportunityList[i].Opportunities[j]);\n\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n totalSavedCostForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedCost != undefined ? this.opportunityList[i].Opportunities[j].SavedCost : 0;\n totalSavedEffortForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedEffort != undefined ? this.opportunityList[i].Opportunities[j].SavedEffort : 0;\n\n actualTotalSavings += this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.completedList.push(this.opportunityList[i].Opportunities[j]);\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n this.savedEffortTotal += (this.opportunityList[i].Opportunities[j].SavedEffort / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"cancel\") >= 0)\n this.cancelledList.push(this.opportunityList[i].Opportunities[j]);\n\n this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId : -10;\n this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName : 'Others';\n\n this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n } else if (this.getActualSaving == 0 || this.getActualSaving == undefined || this.getActualSaving == \"undefined\") {\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] = Math.round((this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date()));\n this.opportunityList[i].Opportunities[j][\"currentPlan\"] != 0 ? this.opportunityList[i].Opportunities[j][\"currentPlan\"] = this.opportunityList[i].Opportunities[j][\"currentPlan\"] + '.00' : '';\n\n this.opportunityList[i].Opportunities[j][\"actualSavings\"] = this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.opportunityList[i].Opportunities[j][\"actualSAvings\"] != 0 ? this.opportunityList[i].Opportunities[j][\"actualSAvings\"] = this.opportunityList[i].Opportunities[j][\"actualSAvings\"] + '' : '';\n\n // adding opportunity all 4 non accordion (unqueued) lists\n if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.backlogList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n this.inProgressList.push(this.opportunityList[i].Opportunities[j]);\n\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.opportunityList[i].Opportunities[j][\"BluePrintId\"] = this.opportunityList[i].BluePrintId;\n totalSavedCostForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedCost != undefined ? this.opportunityList[i].Opportunities[j].SavedCost : 0;\n totalSavedEffortForCompletedOpportunities += this.opportunityList[i].Opportunities[j].SavedEffort != undefined ? this.opportunityList[i].Opportunities[j].SavedEffort : 0;\n\n actualTotalSavings += this.opportunityList[i].Opportunities[j].AttributeValue != undefined ? this.opportunityList[i].Opportunities[j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : 0;\n this.completedList.push(this.opportunityList[i].Opportunities[j]);\n this.savedCostTotal += (this.opportunityList[i].Opportunities[j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n this.savedEffortTotal += (this.opportunityList[i].Opportunities[j].SavedEffort / 12) * this.monthDiff(new Date(this.opportunityList[i].Opportunities[j].PlannedStartDate), new Date());\n }\n else if (this.opportunityList[i].Opportunities[j].Status.toString().toLowerCase().indexOf(\"cancel\") >= 0)\n this.cancelledList.push(this.opportunityList[i].Opportunities[j]);\n\n this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId : -10;\n this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName : 'Others';\n\n this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n }\n\n\n // 2 queue defects\n // for (var k = 0; k < this.opportunityList[i].Opportunities[j].SupportGroupId.length; k++) {\n // this.opportunityList[i].Opportunities[j].queueId = this.opportunityList[i].Opportunities[j].SupportGroupId[k] != undefined && this.opportunityList[i].Opportunities[j].SupportGroupId[k] != 0 ? this.opportunityList[i].Opportunities[j].SupportGroupId[k] : -10;\n\n // this.opportunityList[i].Opportunities[j].queueName = this.opportunityList[i].Opportunities[j].SupportGroupName[k] != undefined && this.opportunityList[i].Opportunities[j].SupportGroupName[k] != '' ? this.opportunityList[i].Opportunities[j].SupportGroupName[k] : 'Others';\n\n // this.allOpportunityList.push(this.opportunityList[i].Opportunities[j]);\n // }\n\n }\n }\n }\n\n console.log(this.allOpportunityList);\n\n }\n\n this.savedCostTotal = Math.round(this.savedCostTotal);\n this.savedEffortTotal = Math.round(this.savedEffortTotal);\n\n let costPerHour = totalSavedEffortForCompletedOpportunities != 0 ? totalSavedCostForCompletedOpportunities / totalSavedEffortForCompletedOpportunities : 0;\n this.ajWebService.plannedTotalEfforts = Math.round(this.savedEffortTotal);\n this.ajWebService.costPerHour = costPerHour;\n this.ajWebService.actualTotalSavings = Math.round(actualTotalSavings);\n this.ajWebService.plannedTotalSavings = Math.round(this.savedCostTotal);\n let obj = this;\n setTimeout(function () {\n if (!obj.toggleChart) {\n obj.ajWebService.outcomesDataCalculationCompleted.emit(\"true\");\n obj.ajWebService.loadAutomationOpportunityData.emit(\"true\");\n obj.ajWebService.opportunityQueuesLoaded.emit(\"true\");\n obj.ajWebService.ticketDistributionDataLoaded.emit(\"true\");\n }\n else {\n obj.ajWebService.outcomesDataCalculationCompleted.emit(\"true\");\n obj.ajWebService.loadAssetProvisioningData.emit(\"true\");\n obj.ajWebService.opportunityQueuesLoaded.emit(\"true\");\n obj.ajWebService.ticketDistributionDataLoaded.emit(\"true\");\n }\n }, 1000)\n\n // Forming opportunity queues for displaying accordion data\n this.queueIdArray = [];\n for (var i = 0; i < this.allOpportunityList.length; i++)\n if (this.queueIdArray.indexOf(this.allOpportunityList[i].queueId) < 0)\n this.queueIdArray.push(this.allOpportunityList[i].queueId);\n\n this.noOfOQdetailsFetched = 0;\n this.opportunityQueues = [];\n this.copyOpportunityQueues = [];\n this.opportunityQueuesBackup = [];\n this.opportunityQueuesFilteredData = [];\n\n for (var i = 0; i < this.queueIdArray.length; i++) {\n let singleBackLogList: any[] = [];\n let singleInProgressList: any[] = [];\n let singleCompletedList: any[] = [];\n let singleCancelledList: any[] = [];\n\n for (var j = 0; j < this.allOpportunityList.length; j++)\n if (this.allOpportunityList[j].queueId == this.queueIdArray[i])\n if (this.allOpportunityList[j].Status == \"Backlog\")\n singleBackLogList.push(this.allOpportunityList[j]);\n else if (this.allOpportunityList[j].Status == \"InProgress\")\n singleInProgressList.push(this.allOpportunityList[j]);\n else if (this.allOpportunityList[j].Status == \"Complete\")\n singleCompletedList.push(this.allOpportunityList[j]);\n else\n singleCancelledList.push(this.allOpportunityList[j]);\n\n\n this.opportunityQueues.push({\n 'Backlog': singleBackLogList, 'InProgress': singleInProgressList, 'Complete': singleCompletedList,\n 'Cancelled': singleCancelledList, 'queueId': this.queueIdArray[i], 'queueName': singleBackLogList.length > 0 ? singleBackLogList[0].queueName : (singleInProgressList.length > 0 ? singleInProgressList[0].queueName : (singleCompletedList.length > 0 ? singleCompletedList[0].queueName : singleCancelledList[0].queueName))\n })\n }\n\n //asset list data\n for (var i = 0; i < this.allOpportunityList.length; i++) {\n if (this.allOpportunityList[i] != undefined)\n for (var j = 0; j < this.allOpportunityList[i].Assets.length; j++)\n if (this.allOpportunityList[i].Assets[j].OrderStatus.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.backlogassetList.push(this.allOpportunityList[i].Assets[j]);\n }\n else if (this.allOpportunityList[i].Assets[j].OrderStatus.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.inProgressassetList.push(this.allOpportunityList[i].Assets[j]);\n }\n else if (this.allOpportunityList[i].Assets[j].OrderStatus.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.completedassetList.push(this.allOpportunityList[i].Assets[j]);\n }\n }\n\n this.backlogListBackup = this.backlogList;\n this.inProgressListBackup = this.inProgressList;\n this.completedListBackup = this.completedList;\n this.cancelledListBackup = this.cancelledList;\n\n this.opportunityQueuesFilteredData = JSON.parse(JSON.stringify(this.opportunityQueues));\n this.opportunityQueuesBackup = JSON.parse(JSON.stringify(this.opportunityQueuesFilteredData));\n\n this.ajWebService.backlogassetList = this.backlogassetList;\n this.ajWebService.inProgressassetList = this.inProgressassetList;\n this.ajWebService.completedassetList = this.completedassetList;\n\n\n this.ajWebService.backlogList = this.backlogList;\n this.ajWebService.inProgressList = this.inProgressList;\n this.ajWebService.completedList = this.completedList;\n this.ajWebService.cancelledList = this.cancelledList;\n\n var list = this.opportunityQueues;\n\n setTimeout(function () {\n if (list != undefined) {\n for (var i = 0; i < list.length; i++) {\n var id = list[i][\"queueId\"];\n $('#expandsearch' + id).removeClass('ml-auto myw-accordion-toggle');\n $('#expandsearch' + id).addClass('ml-auto myw-accordion-toggle collapsed');\n }\n }\n obj.spinner.hide();\n }, 100)\n\n this.ajWebService.showAutomationOpportunitiesData.emit(\"true\");\n\n for (var i = 0; i < this.opportunityQueues.length; i++) {\n this.groupedOQSortOrders[i] = [];\n this.groupedOQSortOrders[i][\"queueId\"] = this.opportunityQueues[i][\"queueId\"];\n this.groupedOQSortOrders[i][\"Backlog\"] = false;\n this.groupedOQSortOrders[i][\"InProgress\"] = false;\n this.groupedOQSortOrders[i][\"Complete\"] = false;\n this.groupedOQSortOrders[i][\"Cancelled\"] = false;\n }\n\n this.reCalculateTotalSavingsAndEfforts();\n this.copyOpportunityQueues = this.opportunityQueues;\n this.ajWebService.opportunityQueues = this.opportunityQueues;\n // this.ajWebService.opportunityQueuesLoaded.emit(\"true\");\n this.supportGroupDataReceived = true;\n this.spinner.hide();\n }\n\n //Asset provisioning graph dynamic data passing when opportunity transfer\n recalculateAssetList() {\n this.backlogassetList = [];\n this.inProgressassetList = [];\n this.completedassetList = [];\n\n for (var i = 0; i < this.allOpportunityList.length; i++) {\n if (this.allOpportunityList[i] != undefined)\n for (var j = 0; j < this.allOpportunityList[i].Assets.length; j++)\n if (this.allOpportunityList[i].Assets[j].OrderStatus.toString().toLowerCase().indexOf(\"backlog\") >= 0) {\n this.backlogassetList.push(this.allOpportunityList[i].Assets[j]);\n }\n else if (this.allOpportunityList[i].Assets[j].OrderStatus.toString().toLowerCase().indexOf(\"inprogress\") >= 0) {\n this.inProgressassetList.push(this.allOpportunityList[i].Assets[j]);\n }\n else if (this.allOpportunityList[i].Assets[j].OrderStatus.toString().toLowerCase().indexOf(\"complete\") >= 0) {\n this.completedassetList.push(this.allOpportunityList[i].Assets[j]);\n }\n }\n this.ajWebService.backlogassetList = this.backlogassetList;\n this.ajWebService.inProgressassetList = this.inProgressassetList;\n this.ajWebService.completedassetList = this.completedassetList;\n var obj = this;\n setTimeout(function () {\n if (!obj.toggleChart) {\n obj.ajWebService.outcomesDataCalculationCompleted.emit(\"true\");\n obj.ajWebService.loadAutomationOpportunityData.emit(\"true\");\n }\n else {\n obj.ajWebService.outcomesDataCalculationCompleted.emit(\"true\");\n obj.ajWebService.loadAssetProvisioningData.emit(\"true\");\n }\n }, 1000)\n\n }\n\n changeClass() {\n var list = this.opportunityQueues;\n\n setTimeout(function () {\n if (list != undefined) {\n for (var i = 0; i < list.length; i++) {\n var id = list[i][\"queueId\"];\n\n $('#expandsearch' + id).removeClass('ml-auto myw-accordion-toggle');\n $('#expandsearch' + id).addClass('ml-auto myw-accordion-toggle collapsed');\n }\n }\n }, 10)\n }\n\n // ChangePinClass()\n // {\n\n // if($('#nav-pin').hasClass('collapsed'))\n // {\n // $('#nav-pin').removeClass('collapsed');\n // }\n // else\n // {\n // $('#nav-pin').addClass('collapsed');\n // }\n // }\n\n monthDiff(date, currentDate) {\n var months\n months = (currentDate.getFullYear() - date.getFullYear()) * 12;\n months -= date.getMonth();\n months += currentDate.getMonth();\n return months <= 0 ? 0 : months;\n }\n\n dragAndDropGroupedOpportunity(event: CdkDragDrop) {\n let sourceContainerId = event.previousContainer.id;\n let destinationContainerId = event.container.id;\n let sourceOpportunityListData: any[] = event.previousContainer.data;\n let destinationOpportunityListData: any[] = event.container.data;\n let transferredOpportunityId = event.item.element.nativeElement.id;\n let transferredOpportunity = sourceOpportunityListData.find(x => x.OpportunityId == transferredOpportunityId);\n\n if (sourceContainerId !== destinationContainerId) {\n if (sourceContainerId.indexOf(\"groupedBacklogListContainer\") >= 0) {\n if (destinationContainerId.indexOf(\"groupedInProgressListContainer\") >= 0) {\n transferredOpportunity[\"Status\"] = \"InProgress\";\n transferArrayItem(sourceOpportunityListData, destinationOpportunityListData, event.previousIndex, event.currentIndex);\n this.updateOpportunityStatusAfterTransfer(transferredOpportunityId, this.backlogList, this.inProgressList, \"backlog\", \"inprogress\", transferredOpportunity[\"Status\"], \"ungrouped\");\n } else if (destinationContainerId.indexOf(\"groupedCancelledListContainer\") >= 0) {\n transferredOpportunity[\"Status\"] = \"Cancelled\";\n transferArrayItem(sourceOpportunityListData, destinationOpportunityListData, event.previousIndex, event.currentIndex);\n this.updateOpportunityStatusAfterTransfer(transferredOpportunityId, this.backlogList, this.cancelledList, \"backlog\", \"cancelled\", transferredOpportunity[\"Status\"], \"ungrouped\");\n }\n else if (destinationContainerId.indexOf(\"groupedCompleteListContainer\") >= 0)\n // if (transferredOpportunity[\"PlannedStartDate\"] == null) {\n bootbox.alert({\n message: \"Opportunity cannot be moved to Completed state without benefit realization date.Please move opportunity to inprogress state and select a date before moving it to completed section.\"\n }).find(\".btn-primary\").removeClass(\"btn\").css({\n padding: \"6px 12px\",\n \"border-radius\": \"0rem\",\n border: \"1px solid transparent\"\n }).find(\".modal-content\").css({\n \"border-radius\": \"0rem\"\n });\n // }\n // else {\n // this.checkForCompletedAssets(event, transferredOpportunity, sourceOpportunityListData, destinationOpportunityListData, this.backlogList, this.completedList, \"backlog\", \"complete\", false, \"ungrouped\");\n // }\n\n } else if (sourceContainerId.indexOf(\"groupedInProgressListContainer\") >= 0) {\n if (destinationContainerId.indexOf(\"groupedBacklogListContainer\") >= 0) {\n transferredOpportunity[\"Status\"] = \"Backlog\";\n transferArrayItem(sourceOpportunityListData, destinationOpportunityListData, event.previousIndex, event.currentIndex);\n this.updateOpportunityStatusAfterTransfer(transferredOpportunityId, this.inProgressList, this.backlogList, \"inprogress\", \"backlog\", transferredOpportunity[\"Status\"], \"ungrouped\");\n } else if (destinationContainerId.indexOf(\"groupedCompleteListContainer\") >= 0)\n if (transferredOpportunity[\"PlannedStartDate\"] == null) {\n bootbox.alert({\n message: \"Please select benefit realization date before moving an opportunity to completed state\"\n }).find(\".btn-primary\").removeClass(\"btn\").css({\n padding: \"6px 12px\",\n \"border-radius\": \"0rem\",\n border: \"1px solid transparent\"\n }).find(\".modal-content\").css({\n \"border-radius\": \"0rem\"\n });\n }\n else {\n this.checkForCompletedAssets(event, transferredOpportunity, sourceOpportunityListData, destinationOpportunityListData, this.inProgressList, this.completedList, \"inprogress\", \"complete\", true, \"ungrouped\");\n }\n else {\n transferredOpportunity[\"Status\"] = \"Cancelled\";\n transferArrayItem(sourceOpportunityListData, destinationOpportunityListData, event.previousIndex, event.currentIndex);\n this.updateOpportunityStatusAfterTransfer(transferredOpportunityId, this.inProgressList, this.cancelledList, \"inprogress\", \"cancelled\", transferredOpportunity[\"Status\"], \"ungrouped\");\n }\n } else if (sourceContainerId.indexOf(\"groupedCompleteListContainer\") >= 0) {\n if (destinationContainerId.indexOf(\"groupedBacklogListContainer\") >= 0) {\n bootbox.alert({\n message: \"Opportunity cannot be moved to Completed state to Backlog state.\"\n }).find(\".btn-primary\").removeClass(\"btn\").css({\n padding: \"6px 12px\",\n \"border-radius\": \"0rem\",\n border: \"1px solid transparent\"\n }).find(\".modal-content\").css({\n \"border-radius\": \"0rem\"\n });\n } else if (destinationContainerId.indexOf(\"groupedInProgressListContainer\") >= 0) {\n bootbox.alert({\n message: \"You cannot move an opportunity from completed to in progress state.\"\n }).find(\".btn-primary\").removeClass(\"btn\").css({\n padding: \"6px 12px\",\n \"border-radius\": \"0rem\",\n border: \"1px solid transparent\"\n }).find(\".modal-content\").css({\n \"border-radius\": \"0rem\"\n });\n } else {\n transferredOpportunity[\"Status\"] = \"Cancelled\";\n transferArrayItem(sourceOpportunityListData, destinationOpportunityListData, event.previousIndex, event.currentIndex);\n this.updateOpportunityStatusAfterTransfer(transferredOpportunityId, this.completedList, this.cancelledList, \"complete\", \"cancelled\", transferredOpportunity[\"Status\"], \"ungrouped\");\n }\n } else {\n if (destinationContainerId.indexOf(\"groupedBacklogListContainer\") >= 0 || destinationContainerId.indexOf(\"groupedInProgressListContainer\") >= 0) {\n if (destinationContainerId.indexOf(\"groupedBacklogListContainer\") >= 0) {\n transferredOpportunity[\"Status\"] = \"Backlog\";\n transferArrayItem(sourceOpportunityListData, destinationOpportunityListData, event.previousIndex, event.currentIndex);\n this.updateOpportunityStatusAfterTransfer(transferredOpportunityId, this.cancelledList, this.backlogList, \"cancelled\", \"backlog\", transferredOpportunity[\"Status\"], \"ungrouped\");\n }\n else {\n transferredOpportunity[\"Status\"] = \"InProgress\";\n transferArrayItem(sourceOpportunityListData, destinationOpportunityListData, event.previousIndex, event.currentIndex);\n this.updateOpportunityStatusAfterTransfer(transferredOpportunityId, this.cancelledList, this.inProgressList, \"cancelled\", \"inprogress\", transferredOpportunity[\"Status\"], \"ungrouped\");\n }\n } else\n this.checkForCompletedAssets(event, transferredOpportunity, sourceOpportunityListData, destinationOpportunityListData, this.cancelledList, this.completedList, \"cancelled\", \"complete\", false, \"ungrouped\");\n }\n }\n\n this.ajWebService.UpdateAutomationJourney(sessionStorage.getItem('E2E'), this.ajWebService.enterpriseId, transferredOpportunityId, true).subscribe(data => {\n console.log(data);\n },\n error => {\n console.log(error);\n })\n this.recalculateAssetList();\n }\n\n dragAndDropUnGroupedOpportunity(event: CdkDragDrop) {\n let sourceContainerId = event.previousContainer.id;\n let destinationContainerId = event.container.id;\n let sourceOpportunityListData: any[] = event.previousContainer.data;\n let destinationOpportunityListData: any[] = event.container.data;\n let transferredOpportunityId = event.item.element.nativeElement.id;\n let transferredOpportunity = sourceOpportunityListData.find(x => x.OpportunityId == transferredOpportunityId);\n\n if (sourceContainerId !== destinationContainerId) {\n if (sourceContainerId == \"backlogListContainer\") {\n if (destinationContainerId == \"inProgressListContainer\") {\n transferredOpportunity[\"Status\"] = \"InProgress\";\n transferArrayItem(sourceOpportunityListData, destinationOpportunityListData, event.previousIndex, event.currentIndex);\n this.updateOpportunityStatusAfterTransfer(transferredOpportunityId, sourceOpportunityListData, destinationOpportunityListData, \"backlog\", \"inprogress\", transferredOpportunity[\"Status\"], \"grouped\");\n } else if (destinationContainerId == \"cancelledListContainer\") {\n transferredOpportunity[\"Status\"] = \"Cancelled\";\n transferArrayItem(sourceOpportunityListData, destinationOpportunityListData, event.previousIndex, event.currentIndex);\n this.updateOpportunityStatusAfterTransfer(transferredOpportunityId, sourceOpportunityListData, destinationOpportunityListData, \"backlog\", \"cancelled\", transferredOpportunity[\"Status\"], \"grouped\");\n }\n else if (destinationContainerId == \"completedListContainer\")\n this.checkForCompletedAssets(event, transferredOpportunity, sourceOpportunityListData, destinationOpportunityListData, sourceOpportunityListData, destinationOpportunityListData, \"backlog\", \"complete\", false, \"grouped\");\n } else if (sourceContainerId == \"inProgressListContainer\") {\n if (destinationContainerId == \"backlogListContainer\") {\n transferredOpportunity[\"Status\"] = \"Backlog\";\n transferArrayItem(sourceOpportunityListData, destinationOpportunityListData, event.previousIndex, event.currentIndex);\n this.updateOpportunityStatusAfterTransfer(transferredOpportunityId, sourceOpportunityListData, destinationOpportunityListData, \"inprogress\", \"backlog\", transferredOpportunity[\"Status\"], \"grouped\");\n } else if (destinationContainerId == \"completedListContainer\")\n this.checkForCompletedAssets(event, transferredOpportunity, sourceOpportunityListData, destinationOpportunityListData, sourceOpportunityListData, destinationOpportunityListData, \"inprogress\", \"complete\", true, \"grouped\");\n else {\n transferredOpportunity[\"Status\"] = \"Cancelled\";\n transferArrayItem(sourceOpportunityListData, destinationOpportunityListData, event.previousIndex, event.currentIndex);\n this.updateOpportunityStatusAfterTransfer(transferredOpportunityId, sourceOpportunityListData, destinationOpportunityListData, \"inprogress\", \"cancelled\", transferredOpportunity[\"Status\"], \"grouped\");\n }\n } else if (sourceContainerId == \"completedListContainer\") {\n if (destinationContainerId == \"backlogListContainer\") {\n transferredOpportunity[\"Status\"] = \"Backlog\";\n transferArrayItem(sourceOpportunityListData, destinationOpportunityListData, event.previousIndex, event.currentIndex);\n this.updateOpportunityStatusAfterTransfer(transferredOpportunityId, sourceOpportunityListData, destinationOpportunityListData, \"complete\", \"backlog\", transferredOpportunity[\"Status\"], \"grouped\");\n } else if (destinationContainerId == \"inProgressListContainer\") {\n bootbox.alert({\n message: \"You cannot move an opportunity from completed to in progress state.\"\n }).find(\".btn-primary\").removeClass(\"btn\").css({\n padding: \"6px 12px\",\n \"border-radius\": \"0rem\",\n border: \"1px solid transparent\"\n }).find(\".modal-content\").css({\n \"border-radius\": \"0rem\"\n });\n } else {\n transferredOpportunity[\"Status\"] = \"Cancelled\";\n transferArrayItem(sourceOpportunityListData, destinationOpportunityListData, event.previousIndex, event.currentIndex);\n this.updateOpportunityStatusAfterTransfer(transferredOpportunityId, sourceOpportunityListData, destinationOpportunityListData, \"complete\", \"cancelled\", transferredOpportunity[\"Status\"], \"grouped\");\n }\n } else {\n if (destinationContainerId == \"backlogListContainer\" || destinationContainerId == \"inProgressListContainer\") {\n if (destinationContainerId == \"backlogListContainer\") {\n transferredOpportunity[\"Status\"] = \"Backlog\";\n transferArrayItem(sourceOpportunityListData, destinationOpportunityListData, event.previousIndex, event.currentIndex);\n this.updateOpportunityStatusAfterTransfer(transferredOpportunityId, sourceOpportunityListData, destinationOpportunityListData, \"cancelled\", \"backlog\", transferredOpportunity[\"Status\"], \"grouped\");\n }\n else {\n transferredOpportunity[\"Status\"] = \"InProgress\";\n transferArrayItem(sourceOpportunityListData, destinationOpportunityListData, event.previousIndex, event.currentIndex);\n this.updateOpportunityStatusAfterTransfer(transferredOpportunityId, sourceOpportunityListData, destinationOpportunityListData, \"cancelled\", \"inprogress\", transferredOpportunity[\"Status\"], \"grouped\");\n }\n } else\n this.checkForCompletedAssets(event, transferredOpportunity, sourceOpportunityListData, destinationOpportunityListData, sourceOpportunityListData, destinationOpportunityListData, \"cancelled\", \"complete\", false, \"grouped\");\n }\n }\n\n this.ajWebService.UpdateAutomationJourney(sessionStorage.getItem('E2E'), this.ajWebService.enterpriseId, transferredOpportunityId, true).subscribe(data => {\n console.log(data);\n },\n error => {\n console.log(error);\n })\n }\n\n checkForCompletedAssets(event, transferredOpportunity, sourceOpportunityListData, destinationOpportunityListData, sourceData, destinationData, sourceListOpportunityStatus, targetListOpportunityStatus, inProgressToCompleted, updateIn: string) {\n let allAssetsCompleted: boolean = true;\n let currObj = this;\n for (var i = 0; i < transferredOpportunity[\"Assets\"].length; i++)\n if (transferredOpportunity[\"Assets\"][i][\"OrderStatus\"] != \"Complete\")\n allAssetsCompleted = false;\n if (!allAssetsCompleted)\n bootbox.confirm({\n message: \"Do you want to mark all the assets as completed?\",\n callback: function (result) {\n if (result) {\n for (var i = 0; i < transferredOpportunity[\"Assets\"].length; i++)\n transferredOpportunity[\"Assets\"][i][\"OrderStatus\"] = \"Complete\";\n transferredOpportunity[\"Status\"] = \"Complete\";\n transferArrayItem(sourceOpportunityListData, destinationOpportunityListData, event.previousIndex, event.currentIndex);\n currObj.updateOpportunityStatusAfterTransfer(transferredOpportunity[\"OpportunityId\"], sourceData, destinationData, sourceListOpportunityStatus, targetListOpportunityStatus, transferredOpportunity[\"Status\"], updateIn);\n }\n }\n }).find(\".btn-primary\").removeClass(\"btn\").css({\n padding: \"6px 12px\",\n \"border-radius\": \"0rem\",\n border: \"1px solid transparent\"\n }).find(\".modal-content\").css({\n \"border-radius\": \"0rem\"\n });\n else {\n transferredOpportunity[\"Status\"] = \"Complete\";\n transferArrayItem(sourceOpportunityListData, destinationOpportunityListData, event.previousIndex, event.currentIndex);\n this.updateOpportunityStatusAfterTransfer(transferredOpportunity[\"OpportunityId\"], sourceData, destinationData, sourceListOpportunityStatus, targetListOpportunityStatus, transferredOpportunity[\"Status\"], updateIn);\n if (inProgressToCompleted)\n bootbox.alert({\n message: \"All assets completed.\"\n }).find(\".btn-primary\").removeClass(\"btn\").css({\n padding: \"6px 12px\",\n \"border-radius\": \"0rem\",\n border: \"1px solid transparent\"\n }).find(\".modal-content\").css({\n \"border-radius\": \"0rem\"\n });\n }\n }\n\n updateOpportunityStatusAfterTransfer(transferredOpportunityId, sourceOpportunityList, targetOpportunityList, sourceListOpportunityStatus, targetListOpportunityStatus, transferredOpportunityStatus, updateIn: string) {\n this.ajWebService.UpdateOppertunityStatus(transferredOpportunityId, transferredOpportunityStatus).subscribe(data => {\n this.transferOpportunityinTargetList(transferredOpportunityId, sourceOpportunityList, targetOpportunityList, sourceListOpportunityStatus, targetListOpportunityStatus, updateIn);\n this.copyOpportunityQueues = this.opportunityQueues;\n },\n error => {\n console.log(error)\n })\n }\n\n transferOpportunityinTargetList(transferredOpportunityId, sourceOpportunityList, targetOpportunityList, sourceListOpportunityStatus, targetListOpportunityStatus, updateIn: string) {\n if (updateIn == \"ungrouped\") {\n targetOpportunityList.push(sourceOpportunityList.find(x => x.OpportunityId == transferredOpportunityId));\n sourceOpportunityList = sourceOpportunityList.filter(x => x.OpportunityId != transferredOpportunityId);\n\n if (sourceListOpportunityStatus == \"backlog\")\n this.backlogList = sourceOpportunityList;\n else if (sourceListOpportunityStatus == \"inprogress\")\n this.inProgressList = sourceOpportunityList;\n else if (sourceListOpportunityStatus == \"complete\")\n this.completedList = sourceOpportunityList;\n else\n this.cancelledList = sourceOpportunityList;\n\n if (targetListOpportunityStatus == \"backlog\")\n this.backlogList = targetOpportunityList;\n else if (targetListOpportunityStatus == \"inprogress\")\n this.inProgressList = targetOpportunityList;\n else if (targetListOpportunityStatus == \"complete\")\n this.completedList = targetOpportunityList;\n else\n this.cancelledList = targetOpportunityList;\n\n this.ajWebService.backlogList = this.backlogList;\n this.ajWebService.inProgressList = this.inProgressList;\n this.ajWebService.completedList = this.completedList;\n this.ajWebService.cancelledList = this.cancelledList;\n\n this.backlogListBackup = this.backlogList;\n this.inProgressListBackup = this.inProgressList;\n this.completedListBackup = this.completedList;\n this.cancelledListBackup = this.cancelledList;\n\n this.ajWebService.opportunityQueues = this.opportunityQueues;\n\n this.ajWebService.opportunityQueuesLoaded.emit(\"true\");\n this.reCalculateTotalSavingsAndEfforts();\n } else {\n\n }\n }\n\n reCalculateTotalSavingsAndEfforts() {\n this.savedCostTotal = 0;\n this.savedEffortTotal = 0;\n let actualTotalSavings = 0;\n let plannedSavingsOfQueue;\n let actualSavingsOfQueue;\n\n let totalSavedCostForCompletedOpportunities = 0;\n let totalSavedEffortForCompletedOpportunities = 0;\n\n for (var i = 0; i < this.opportunityQueues.length; i++) {\n plannedSavingsOfQueue = 0;\n actualSavingsOfQueue = 0;\n\n if (this.opportunityQueues[i][\"Backlog\"] != undefined && this.opportunityQueues[i][\"Backlog\"].length > 0)\n for (var j = 0; j < this.opportunityQueues[i][\"Backlog\"].length; j++)\n if (this.opportunityQueues[i][\"Backlog\"][j].PlannedStartDate != undefined) {\n this.opportunityQueues[i][\"Backlog\"][j][\"currentPlan\"] = Math.round((this.opportunityQueues[i][\"Backlog\"][j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityQueues[i][\"Backlog\"][j].PlannedStartDate), new Date()));\n // plannedSavingsOfQueue += (this.opportunityQueues[i][\"Backlog\"][j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityQueues[i][\"Backlog\"][j].PlannedStartDate), new Date());\n }\n\n if (this.opportunityQueues[i][\"InProgress\"] != undefined && this.opportunityQueues[i][\"InProgress\"].length > 0)\n for (var j = 0; j < this.opportunityQueues[i][\"InProgress\"].length; j++)\n if (this.opportunityQueues[i][\"InProgress\"][j].PlannedStartDate != null) {\n this.opportunityQueues[i][\"InProgress\"][j][\"currentPlan\"] = Math.round((this.opportunityQueues[i][\"InProgress\"][j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityQueues[i][\"InProgress\"][j].PlannedStartDate), new Date()));\n plannedSavingsOfQueue += (this.opportunityQueues[i][\"InProgress\"][j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityQueues[i][\"InProgress\"][j].PlannedStartDate), new Date());\n this.savedCostTotal += (this.opportunityQueues[i][\"InProgress\"][j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityQueues[i][\"InProgress\"][j].PlannedStartDate), new Date());\n }\n\n if (this.opportunityQueues[i][\"Complete\"] != undefined && this.opportunityQueues[i][\"Complete\"].length > 0)\n for (var j = 0; j < this.opportunityQueues[i][\"Complete\"].length; j++) {\n this.opportunityQueues[i][\"Complete\"][j][\"currentPlan\"] = Math.round((this.opportunityQueues[i][\"Complete\"][j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityQueues[i][\"Complete\"][j].PlannedStartDate), new Date()));\n\n plannedSavingsOfQueue += (this.opportunityQueues[i][\"Complete\"][j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityQueues[i][\"Complete\"][j].PlannedStartDate), new Date());\n\n this.opportunityQueues[i][\"Complete\"][j][\"actualSavings\"] = this.opportunityQueues[i][\"Complete\"][j].AttributeValue != undefined ? this.opportunityQueues[i][\"Complete\"][j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : this.totalSavingsValueForNullAttribute;\n\n actualSavingsOfQueue += this.opportunityQueues[i][\"Complete\"][j].AttributeValue != undefined ? this.opportunityQueues[i][\"Complete\"][j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : this.totalSavingsValueForNullAttribute;\n\n actualTotalSavings += this.opportunityQueues[i][\"Complete\"][j].AttributeValue != undefined ? this.opportunityQueues[i][\"Complete\"][j][\"AttributeValue\"][\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next) : this.totalSavingsValueForNullAttribute;\n\n this.savedCostTotal += (this.opportunityQueues[i][\"Complete\"][j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityQueues[i][\"Complete\"][j].PlannedStartDate), new Date());\n this.savedEffortTotal += (this.opportunityQueues[i][\"Complete\"][j].SavedEffort / 12) * this.monthDiff(new Date(this.opportunityQueues[i][\"Complete\"][j].PlannedStartDate), new Date());\n\n totalSavedCostForCompletedOpportunities += this.opportunityQueues[i][\"Complete\"][j].SavedCost != undefined ? +this.opportunityQueues[i][\"Complete\"][j].SavedCost : 0;\n totalSavedEffortForCompletedOpportunities += this.opportunityQueues[i][\"Complete\"][j].SavedEffort != undefined ? +this.opportunityQueues[i][\"Complete\"][j].SavedEffort : 0;\n }\n\n if (this.opportunityQueues[i][\"Cancelled\"] != undefined && this.opportunityQueues[i][\"Cancelled\"].length > 0)\n for (var j = 0; j < this.opportunityQueues[i][\"Cancelled\"].length; j++)\n if (this.opportunityQueues[i][\"Cancelled\"][j].PlannedStartDate != undefined) {\n this.opportunityQueues[i][\"Cancelled\"][j][\"currentPlan\"] = Math.round((this.opportunityQueues[i][\"Cancelled\"][j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityQueues[i][\"Cancelled\"][j].PlannedStartDate), new Date()));\n // plannedSavingsOfQueue += (this.opportunityQueues[i][\"Cancelled\"][j].SavedCost / 12) * this.monthDiff(new Date(this.opportunityQueues[i][\"Cancelled\"][j].PlannedStartDate), new Date());\n }\n\n plannedSavingsOfQueue = plannedSavingsOfQueue != 0 ? (plannedSavingsOfQueue >= 1000 ? (plannedSavingsOfQueue / 1000).toFixed(2) + 'k' : plannedSavingsOfQueue.toFixed(2)) : '0.00';\n this.opportunityQueues[i][\"plannedSavingsOfQueue\"] = plannedSavingsOfQueue;\n\n actualSavingsOfQueue = actualSavingsOfQueue != 0 ? (actualSavingsOfQueue >= 1000 ? (actualSavingsOfQueue / 1000).toFixed(2) + 'k' : actualSavingsOfQueue.toFixed(2)) : '0.00';\n this.opportunityQueues[i][\"actualSavingsOfQueue\"] = actualSavingsOfQueue;\n }\n\n this.savedCostTotal = Math.round(this.savedCostTotal);\n this.savedEffortTotal = Math.round(this.savedEffortTotal);\n\n let costPerHour = totalSavedEffortForCompletedOpportunities != 0 ? totalSavedCostForCompletedOpportunities / totalSavedEffortForCompletedOpportunities : 0;\n this.ajWebService.plannedTotalEfforts = Math.round(this.savedEffortTotal);\n this.ajWebService.costPerHour = costPerHour;\n this.ajWebService.actualTotalSavings = Math.round(actualTotalSavings);\n this.ajWebService.plannedTotalSavings = Math.round(this.savedCostTotal);\n this.recalculateAssetList();\n let obj = this;\n setTimeout(function () {\n if (!obj.toggleChart) {\n obj.ajWebService.outcomesDataCalculationCompleted.emit(\"true\");\n obj.ajWebService.loadAutomationOpportunityData.emit(\"true\");\n obj.ajWebService.opportunityQueuesLoaded.emit(\"true\");\n obj.ajWebService.ticketDistributionDataLoaded.emit(\"true\");\n }\n else {\n obj.ajWebService.outcomesDataCalculationCompleted.emit(\"true\");\n obj.ajWebService.loadAssetProvisioningData.emit(\"true\");\n obj.ajWebService.opportunityQueuesLoaded.emit(\"true\");\n obj.ajWebService.ticketDistributionDataLoaded.emit(\"true\");\n }\n }, 1000)\n }\n\n changeAssetStatus(queueId: number, opportunityList: string, opportunityId: number, assetId: number, assetName: string, assetType: string, newStatus: string, PlannedStartDate: any) {\n if (PlannedStartDate != null) {\n if (opportunityList == \"InProgress\" && newStatus == \"Complete\") {\n let currentOpportunity: any;\n let sourceOpportunityList: any;\n let targetOpportunityList: any;\n if (queueId != -1234567) {\n sourceOpportunityList = this.opportunityQueues.find(x => x.queueId == queueId).InProgress;\n targetOpportunityList = this.opportunityQueues.find(x => x.queueId == queueId).Complete;\n currentOpportunity = sourceOpportunityList.find(x => x.OpportunityId == opportunityId);\n }\n else {\n sourceOpportunityList = this.inProgressList;\n targetOpportunityList = this.completedList;\n currentOpportunity = this.inProgressList.find(x => x.OpportunityId == opportunityId);\n }\n this.assetList = currentOpportunity.Assets;\n let allRemainingAssetsAlreadyCompleted = true;\n for (var i = 0; i < this.assetList.length; i++)\n if (this.assetList[i].AssetId != assetId && this.assetList[i].AssetName != assetName)\n if (this.assetList[i].OrderStatus != \"Complete\")\n allRemainingAssetsAlreadyCompleted = false;\n let currObj = this;\n if (allRemainingAssetsAlreadyCompleted)\n bootbox.confirm({\n message: \"Do you want to mark this opportunity as completed?\",\n callback: function (result) {\n if (result) {\n for (var i = 0; i < currObj.assetList.length; i++)\n currObj.assetList[i][\"OrderStatus\"] = \"Complete\";\n currentOpportunity[\"Status\"] = \"Complete\";\n currObj.updateOpportunityStatusAfterTransfer(currentOpportunity[\"OpportunityId\"], currObj.inProgressList, currObj.completedList, \"inprogress\", \"complete\", currentOpportunity[\"Status\"], \"ungrouped\");\n\n if (queueId != -1234567) {\n currObj.opportunityQueues.find(x => x.queueId == queueId).Complete.push(currObj.opportunityQueues.find(x => x.queueId == queueId).InProgress.find(x => x.OpportunityId == currentOpportunity[\"OpportunityId\"]));\n\n currObj.opportunityQueues.find(x => x.queueId == queueId).InProgress = currObj.opportunityQueues.find(x => x.queueId == queueId).InProgress.filter(x => x.OpportunityId != currentOpportunity[\"OpportunityId\"]);\n } else {\n\n }\n // if (queueId != -1234567)\n // transferArrayItem(currObj.opportunityQueues.find(x => x.queueId == queueId).InProgress, currObj.opportunityQueues.find(x => x.queueId == queueId).Complete, event.previousIndex, event.currentIndex);\n // else\n // transferArrayItem(currObj.opportunityQueues.find(x => x.queueId == queueId).InProgress, currObj.opportunityQueues.find(x => x.queueId == queueId).Complete, event.previousIndex, event.currentIndex);\n }\n }\n }).find(\".btn-primary\").removeClass(\"btn\").css({\n padding: \"6px 12px\",\n \"border-radius\": \"0rem\",\n border: \"1px solid transparent\"\n }).find(\".modal-content\").css({\n \"border-radius\": \"0rem\"\n });\n else {\n this.UpdateAssetStatus(assetId, newStatus);\n this.setNewStatus(queueId, opportunityList, opportunityId, assetId, assetName, newStatus);\n }\n } else {\n this.UpdateAssetStatus(assetId, newStatus);\n this.setNewStatus(queueId, opportunityList, opportunityId, assetId, assetName, newStatus);\n }\n\n this.ajWebService.UpdateAssetCompletedStatus().subscribe(data => {\n console.log(data);\n },\n error => {\n console.log(error);\n })\n\n this.ajWebService.UpdateOpportunityAssetStatus().subscribe(data => {\n console.log(data);\n },\n error => {\n console.log(error);\n })\n }\n this.recalculateAssetList();\n }\n\n UpdateAssetStatus(assetId, newStatus) {\n this.ajWebService.UpdateAssetStatus(assetId, newStatus).subscribe(data => {\n console.log(data);\n },\n error => {\n console.log(error);\n })\n }\n\n setNewStatus(queueId: number, opportunityList: string, opportunityId: number, assetId: number, assetName: string, newStatus: string) {\n if (queueId == -1234567)\n this.opportunityQueues[queueId][opportunityList].find(x => x.OpportunityId == opportunityId).Assets.find(x => x.AssetId == assetId && x.AssetName == assetName).OrderStatus = newStatus;\n else if (opportunityList == \"InProgress\")\n this.inProgressList.find(x => x.OpportunityId == opportunityId).Assets.find(x => x.AssetId == assetId && x.AssetName == assetName).OrderStatus = newStatus;\n else if (opportunityList == \"Complete\")\n this.completedList.find(x => x.OpportunityId == opportunityId).Assets.find(x => x.AssetId == assetId && x.AssetName == assetName).OrderStatus = newStatus;\n else\n this.cancelledList.find(x => x.OpportunityId == opportunityId).Assets.find(x => x.AssetId == assetId && x.AssetName == assetName).OrderStatus = newStatus;\n }\n\n searchOpportunityLists(searchText: string) {\n this.populateData();\n searchText = searchText != undefined && searchText != \"\" ? searchText.toString().toLowerCase().trim() : \"\";\n if (this.grouping) {\n if (searchText != \"\") {\n for (var i = 0; i < this.opportunityQueues.length; i++) {\n this.opportunityQueues[i][\"Backlog\"] = this.copyOpportunityQueues[i][\"Backlog\"].filter(row => {\n return ((row.OpportunityName.toLowerCase() != undefined ? row.OpportunityName.toLowerCase().includes(searchText) : false));\n })\n this.opportunityQueues[i][\"InProgress\"] = this.copyOpportunityQueues[i][\"InProgress\"].filter(row => {\n return ((row.OpportunityName.toLowerCase() != undefined ? row.OpportunityName.toLowerCase().includes(searchText) : false));\n })\n this.opportunityQueues[i][\"Complete\"] = this.copyOpportunityQueues[i][\"Complete\"].filter(row => {\n return ((row.OpportunityName.toLowerCase() != undefined ? row.OpportunityName.toLowerCase().includes(searchText) : false));\n })\n this.opportunityQueues[i][\"Cancelled\"] = this.copyOpportunityQueues[i][\"Cancelled\"].filter(row => {\n return ((row.OpportunityName.toLowerCase() != undefined ? row.OpportunityName.toLowerCase().includes(searchText) : false));\n })\n }\n //this.opportunityQueuesFilteredData = JSON.parse(JSON.stringify(this.opportunityQueuesBackup));\n } else\n this.reCalculateTotalSavingsAndEfforts();\n } else {\n if (searchText != \"\") {\n this.backlogList = this.backlogListBackup.filter(row => {\n return ((row.OpportunityName.toLowerCase() != undefined ? row.OpportunityName.toLowerCase().includes(searchText) : false));\n })\n this.inProgressList = this.inProgressListBackup.filter(row => {\n return ((row.OpportunityName.toLowerCase() != undefined ? row.OpportunityName.toLowerCase().includes(searchText) : false));\n })\n this.completedList = this.completedListBackup.filter(row => {\n return ((row.OpportunityName.toLowerCase() != undefined ? row.OpportunityName.toLowerCase().includes(searchText) : false));\n })\n this.cancelledList = this.cancelledListBackup.filter(row => {\n return ((row.OpportunityName.toLowerCase() != undefined ? row.OpportunityName.toLowerCase().includes(searchText) : false));\n })\n } else {\n this.backlogList = this.backlogListBackup;\n this.inProgressList = this.inProgressListBackup;\n this.completedList = this.completedListBackup;\n this.cancelledList = this.cancelledListBackup;\n }\n }\n\n // for (var i = 0; i < this.opportunityQueues.length; i++) {\n // var id = this.opportunityQueues[i][\"queueId\"];\n // $('#expandsearch' + id).removeClass('ml-auto myw-accordion-toggle');\n // $('#expandsearch' + id).addClass('ml-auto myw-accordion-toggle collapsed');\n // }\n //$(\"a\").find(\".ml-auto myw-accordion-toggle\").addClass(\"collapsed\");\n\n if (searchText == \"\") {\n var list = this.opportunityQueues;\n setTimeout(function () {\n for (var i = 0; i < list.length; i++) {\n var id = list[i][\"queueId\"];\n $('#expandsearch' + id).removeClass('ml-auto myw-accordion-toggle');\n $('#expandsearch' + id).addClass('ml-auto myw-accordion-toggle collapsed');\n }\n }, 10)\n }\n }\n\n clearSearch() {\n this.reCalculateTotalSavingsAndEfforts();\n }\n\n sortGroupedOpportunities(queueId: number, status: string) {\n this.groupedOQSortOrders.find(x => x[\"queueId\"] == queueId)[\"\" + status + \"\"] ?\n this.opportunityQueues.find(x => x[\"queueId\"] == queueId)[\"\" + status + \"\"].sort((a, b) => a.OpportunityName.toLowerCase() > b.OpportunityName.toLowerCase() ? -1 : 1) :\n this.opportunityQueues.find(x => x[\"queueId\"] == queueId)[\"\" + status + \"\"].sort((a, b) => a.OpportunityName.toLowerCase() > b.OpportunityName.toLowerCase() ? 1 : -1);\n\n this.groupedOQSortOrders.find(x => x[\"queueId\"] == queueId)[\"\" + status + \"\"] = !this.groupedOQSortOrders.find(x => x[\"queueId\"] == queueId)[\"\" + status + \"\"];\n }\n\n sortUnGroupedOpportunities(status: string) {\n if (status == \"Backlog\") {\n this.unGroupedBacklogSortOrder ? this.backlogList.sort((a, b) => a.OpportunityName.toLowerCase() > b.OpportunityName.toLowerCase() ? -1 : 1) : this.backlogList.sort((a, b) => a.OpportunityName.toLowerCase() > b.OpportunityName.toLowerCase() ? 1 : -1);\n this.unGroupedBacklogSortOrder = !this.unGroupedBacklogSortOrder;\n }\n else if (status == \"InProgress\") {\n this.unGroupedInProgressSortOrder ? this.inProgressList.sort((a, b) => a.OpportunityName.toLowerCase() > b.OpportunityName.toLowerCase() ? -1 : 1) : this.inProgressList.sort((a, b) => a.OpportunityName.toLowerCase() > b.OpportunityName.toLowerCase() ? 1 : -1);\n this.unGroupedInProgressSortOrder = !this.unGroupedInProgressSortOrder;\n }\n else if (status == \"Complete\") {\n this.unGroupedCompletedSortOrder ? this.completedList.sort((a, b) => a.OpportunityName.toLowerCase() > b.OpportunityName.toLowerCase() ? -1 : 1) : this.completedList.sort((a, b) => a.OpportunityName.toLowerCase() > b.OpportunityName.toLowerCase() ? 1 : -1);\n this.unGroupedCompletedSortOrder = !this.unGroupedCompletedSortOrder;\n }\n else {\n this.unGroupedCancelledSortOrder ? this.cancelledList.sort((a, b) => a.OpportunityName.toLowerCase() > b.OpportunityName.toLowerCase() ? -1 : 1) : this.cancelledList.sort((a, b) => a.OpportunityName.toLowerCase() > b.OpportunityName.toLowerCase() ? 1 : -1);\n this.unGroupedCancelledSortOrder = !this.unGroupedCancelledSortOrder;\n }\n }\n\n GetAOFAssessments() {\n this.ajWebService.GetAOFAssessments(this.ajWebService.endToEndUId.toLowerCase(), this.ajWebService.CMSUId, this.ajWebService.clientWMSId).subscribe(data => {\n this.AOFAssessments = data;\n if (this.AOFAssessments != null) {\n this.AOFAssessments.forEach((value, key) => {\n if (value.AssessmentStatus != null && value.AssessmentStatus == \"Submitted\") {\n this.AOFRagStatusClass = \"ragGreen\";\n }\n else if (this.AOFRagStatusClass != \"ragGreen\" && value.AssessmentStatus != null && value.AssessmentStatus == \"InProgress\") {\n this.AOFRagStatusClass = \"ragYellow\";\n }\n });\n if (this.AOFRagStatusClass != \"ragYellow\" && this.AOFRagStatusClass != \"ragGreen\") {\n this.AOFRagStatusClass = \"ragRed\";\n }\n }\n },\n error => {\n console.log(error)\n })\n }\n\n GetProductList() {\n this.ajWebService.GetProductList(this.ajWebService.endToEndUId.toLowerCase()).subscribe(data => {\n console.log(data)\n },\n error => {\n console.log(error)\n })\n }\n\n getAssetAttributeUsage() {\n this.assetId = this.assetsList[0][\"AssetId\"];\n this.ajWebService.GetAssetAttributeUsage(this.opportunityId, this.assetId).subscribe(data => {\n console.log(data)\n },\n error => {\n console.log(error)\n })\n }\n\n openOpportunityQueue(queueId: number) {\n this.queueId = queueId;\n }\n\n openAssetDataAndCharts(opportunityId: number, benefitRealizationDate: any) {\n if (benefitRealizationDate != undefined) {\n if (this.ajWebService.lastActiveOpportunityId == undefined)\n this.ajWebService.lastActiveOpportunityId = opportunityId;\n else if (this.ajWebService.lastActiveOpportunityId != opportunityId) {\n $(\"#toggleCompletedCollapse\" + this.ajWebService.lastActiveOpportunityId).addClass('collapsed');\n $(\"#toggleCompletedCollapse\" + this.ajWebService.lastActiveOpportunityId).attr('aria-expanded', 'false');\n this.ajWebService.lastActiveOpportunityId = opportunityId;\n }\n else\n this.ajWebService.lastActiveOpportunityId = undefined;\n this.opportunityId = opportunityId;\n }\n else\n this.ajWebService.showInfoMessage(\"Please enter benefit realization date.\")\n }\n\n openTicketDistributionChart() {\n this.ajWebService.showTicketDistributionChartInPopUp.emit(\"true\");\n }\n\n openUseCasesImplementedChart() {\n this.ajWebService.showUseCasesImplementationChartInPopUp.emit(\"true\");\n }\n\n savePreviousValue(previousValue: number) {\n this.previousValue = previousValue;\n }\n\n fillBlankValuesinPopups(popup: string, moreThan12months: boolean, noOfMonths: any) {\n if (moreThan12months) {\n for (var i = 0; i < noOfMonths.length; i++) {\n if (popup == 'ticketVolume') {\n $(\"#totalOccurence-\" + noOfMonths[i].replace(' ', '')).val(0);\n $(\"#automatedFully-\" + noOfMonths[i].replace(' ', '')).val(0);\n $(\"#automatedPartially-\" + noOfMonths[i].replace(' ', '')).val(0);\n } else {\n $(\"#value-\" + noOfMonths[i].replace(' ', '')).val(0);\n $(\"#fte-\" + noOfMonths[i].replace(' ', '')).val(0);\n }\n }\n } else {\n var monthYear: String = '';\n this.usageValues = [];\n for (var i = 1; i <= 12; i++) {\n monthYear = this.monthsList[this.currentDate.getMonth() + i] != undefined ? this.monthsList[this.currentDate.getMonth() + i] + this.yearsList[0] : this.monthsList[this.currentDate.getMonth() + i - 12] + this.yearsList[1];\n if (popup == 'ticketVolume') {\n $(\"#totalOccurence-\" + monthYear).val(0);\n $(\"#automatedFully-\" + monthYear).val(0);\n $(\"#automatedPartially-\" + monthYear).val(0);\n\n $(\"#totalOccurence-\" + monthYear).css('color', 'lightgrey');\n $(\"#automatedFully-\" + monthYear).css('color', 'lightgrey');\n $(\"#automatedPartially-\" + monthYear).css('color', 'lightgrey');\n\n $(\"#totalOccurence-\" + monthYear).attr('readonly', 'readonly');\n $(\"#automatedFully-\" + monthYear).attr('readonly', 'readonly');\n $(\"#automatedPartially-\" + monthYear).attr('readonly', 'readonly');\n } else {\n $(\"#value-\" + monthYear).val(0);\n $(\"#fte-\" + monthYear).val(0);\n\n $(\"#value-\" + monthYear).css('color', 'lightgrey');\n $(\"#fte-\" + monthYear).css('color', 'lightgrey');\n\n $(\"#value-\" + monthYear).attr('readonly', 'readonly');\n $(\"#fte-\" + monthYear).attr('readonly', 'readonly');\n }\n this.usageValues.push({ Month: monthYear.substr(0, 3) + ' ' + monthYear.substr(3, 2), Value: 0 });\n }\n }\n }\n\n getTicketVolume() {\n this.ajWebService.getTicketVolume(this.opportunityId).subscribe(data => {\n if (data != undefined) {\n this.noOfMonthsArray = [];\n let obj = this;\n if (data[\"AttributeUsage\"][0].UsageValues.length > 12 && data[\"AttributeUsage\"][1].UsageValues.length > 12 && data[\"AttributeUsage\"][2].UsageValues.length > 12) {\n this.moreThan12months = true;\n for (var i = 0; i < data[\"AttributeUsage\"][0].UsageValues.length; i++)\n this.noOfMonthsArray.push(data[\"AttributeUsage\"][0].UsageValues[i].Month);\n setTimeout(function () {\n obj.fillBlankValuesinPopups('ticketVolume', obj.moreThan12months, obj.noOfMonthsArray);\n for (var i = 0; i < obj.noOfMonthsArray.length; i++) {\n $(\"#automatedFully-\" + obj.noOfMonthsArray[i].replace(' ', '')).val(data[\"AttributeUsage\"][0].UsageValues[i].Value);\n $(\"#automatedPartially-\" + obj.noOfMonthsArray[i].replace(' ', '')).val(data[\"AttributeUsage\"][1].UsageValues[i].Value);\n $(\"#totalOccurence-\" + obj.noOfMonthsArray[i].replace(' ', '')).val(data[\"AttributeUsage\"][2].UsageValues[i].Value);\n }\n }, 500)\n } else {\n this.moreThan12months = false;\n this.noOfMonthsArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n setTimeout(function () {\n obj.fillBlankValuesinPopups('ticketVolume', obj.moreThan12months, []);\n let ticketVolumeDate: Date;\n let inputField: any;\n let bdate = new Date(obj.benefitRealizationDate)\n obj.usageValues = data[\"AttributeUsage\"].find(x => x.AttributeName == \"Total Occurrences\")[\"UsageValues\"];\n for (var i = 0; i < obj.usageValues.length; i++) {\n inputField = $(\"#totalOccurence-\" + obj.usageValues[i][\"Month\"].replace(' ', ''));\n if (inputField[0] != undefined) {\n ticketVolumeDate = new Date(obj.usageValues[i][\"Month\"].substr(0, 3) + \" 20\" + obj.usageValues[i][\"Month\"].substr(4, 2));\n if (ticketVolumeDate >= bdate || (ticketVolumeDate.getFullYear() == bdate.getFullYear() && bdate.getMonth() == ticketVolumeDate.getMonth())) {\n inputField.removeAttr('readonly');\n inputField.css('color', '');\n inputField.val(obj.usageValues[i][\"Value\"]);\n }\n }\n }\n\n obj.usageValues = data[\"AttributeUsage\"].find(x => x.AttributeName == \"Automated Fully\")[\"UsageValues\"];\n for (var i = 0; i < obj.usageValues.length; i++) {\n inputField = $(\"#automatedFully-\" + obj.usageValues[i][\"Month\"].replace(' ', ''));\n if (inputField[0] != undefined) {\n ticketVolumeDate = new Date(obj.usageValues[i][\"Month\"].substr(0, 3) + \" 20\" + obj.usageValues[i][\"Month\"].substr(4, 2));\n if (ticketVolumeDate >= bdate || (ticketVolumeDate.getFullYear() == bdate.getFullYear() && bdate.getMonth() == ticketVolumeDate.getMonth())) {\n inputField.removeAttr('readonly');\n inputField.css('color', '');\n inputField.val(obj.usageValues[i][\"Value\"]);\n }\n }\n }\n\n obj.usageValues = data[\"AttributeUsage\"].find(x => x.AttributeName == \"Automated Partially\")[\"UsageValues\"];\n for (var i = 0; i < obj.usageValues.length; i++) {\n inputField = $(\"#automatedPartially-\" + obj.usageValues[i][\"Month\"].replace(' ', ''));\n if (inputField[0] != undefined) {\n ticketVolumeDate = new Date(obj.usageValues[i][\"Month\"].substr(0, 3) + \" 20\" + obj.usageValues[i][\"Month\"].substr(4, 2));\n if (ticketVolumeDate >= bdate || (ticketVolumeDate.getFullYear() == bdate.getFullYear() && bdate.getMonth() == ticketVolumeDate.getMonth())) {\n inputField.removeAttr('readonly');\n inputField.css('color', '');\n inputField.val(obj.usageValues[i][\"Value\"]);\n }\n }\n }\n }, 500)\n }\n }\n },\n error => {\n this.ajWebService.showInfoMessage(error.toString());\n })\n }\n\n saveTicketVolume(id: string, value: number, attributeId: number) {\n $(\"#\" + id).val() == undefined || $(\"#\" + id).val() == '' || $(\"#\" + id).val().toString().trim() == '' ? $(\"#\" + id).val(0) : '';\n if ($(\"#totalOccurence-\" + id.substr(id.indexOf('-') + 1, 5)).val() >= +$(\"#automatedFully-\" + id.substr(id.indexOf('-') + 1, 5)).val() + +$(\"#automatedPartially-\" + id.substr(id.indexOf('-') + 1, 5)).val()) {\n $(\"#infoMessage\").html('');\n var finalData: Object = {};\n finalData[\"IsAssetLevelUsageEnabled\"] = false;\n finalData[\"attributeUsages\"] = [];\n finalData[\"attributeUsages\"].push({\n 'AttributeId': attributeId,\n 'AttributeUsage': +value,\n 'ModifiedOn': new Date(\"15 \" + id.substr(id.indexOf('-') + 1, 3) + ' 20' + id.substr(id.indexOf('-') + 4, 6)),\n 'OpportunityId': this.opportunityId\n })\n\n this.ajWebService.saveAttributeUsageForTicketVolume(finalData).subscribe(data => {\n\n },\n error => {\n this.spinner.hide();\n this.ajWebService.showInfoMessage(error.toString());\n })\n } else {\n $(\"#infoMessage\").html('Sum of Automated Fully and Automated Partially should be less than Total occurrences');\n $(\"#\" + id).val(this.previousValue);\n }\n }\n\n updateTicketVolumeChart() {\n this.ajWebService.ticketVolumeDataUpdated.emit(\"TicketVolDonutChart-\" + this.queueId + \"-\" + this.opportunityId.toString());\n }\n\n getSavings() {\n this.ajWebService.GetSavingsValue(this.opportunityId).subscribe(data => {\n if (data != undefined) {\n this.noOfMonthsArray = [];\n let obj = this;\n if (data[\"AttributeValue\"][0].Values.length > 12 && data[\"AttributeValue\"][1].Values.length > 12) {\n this.moreThan12months = true;\n for (var i = 0; i < data[\"AttributeValue\"][0].Values.length; i++)\n this.noOfMonthsArray.push(data[\"AttributeValue\"][0].Values[i].Month);\n setTimeout(function () {\n obj.fillBlankValuesinPopups('savingsAndFTE', obj.moreThan12months, obj.noOfMonthsArray);\n for (var i = 0; i < obj.noOfMonthsArray.length; i++) {\n $(\"#value-\" + obj.noOfMonthsArray[i].replace(' ', '')).val(data[\"AttributeValue\"][0].Values[i].Value);\n $(\"#fte-\" + obj.noOfMonthsArray[i].replace(' ', '')).val(data[\"AttributeValue\"][1].Values[i].Value);\n }\n }, 500)\n } else {\n this.moreThan12months = false;\n this.noOfMonthsArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n setTimeout(function () {\n obj.fillBlankValuesinPopups('savingsAndFTE', obj.moreThan12months, []);\n let savingsFTEDate: Date;\n let inputField: any;\n let bdate = new Date(obj.benefitRealizationDate)\n obj.usageValues = data[\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"];\n for (var i = 0; i < obj.usageValues.length; i++) {\n inputField = $(\"#value-\" + obj.usageValues[i][\"Month\"].replace(' ', ''));\n if (inputField[0] != undefined) {\n savingsFTEDate = new Date(obj.usageValues[i][\"Month\"].substr(0, 3) + \" 20\" + obj.usageValues[i][\"Month\"].substr(4, 2));\n if (savingsFTEDate >= bdate || (savingsFTEDate.getFullYear() == bdate.getFullYear() && bdate.getMonth() == savingsFTEDate.getMonth())) {\n inputField.removeAttr('readonly');\n inputField.css('color', '');\n inputField.val(obj.usageValues[i][\"Value\"]);\n }\n }\n }\n\n obj.usageValues = data[\"AttributeValue\"].find(x => x.AttributeName == \"FTE\")[\"Values\"];\n for (var i = 0; i < obj.usageValues.length; i++) {\n inputField = $(\"#fte-\" + obj.usageValues[i][\"Month\"].replace(' ', ''));\n if (inputField[0] != undefined) {\n savingsFTEDate = new Date(obj.usageValues[i][\"Month\"].substr(0, 3) + \" 20\" + obj.usageValues[i][\"Month\"].substr(4, 2));\n if (savingsFTEDate >= bdate || (savingsFTEDate.getFullYear() == bdate.getFullYear() && bdate.getMonth() == savingsFTEDate.getMonth())) {\n inputField.removeAttr('readonly');\n inputField.css('color', '');\n inputField.val(obj.usageValues[i][\"Value\"]);\n }\n }\n }\n }, 500)\n }\n }\n },\n error => {\n console.log(error)\n })\n }\n\n saveSavings(valueOrFTE: string, id: string, value: number, attributeId: number) {\n $(\"#\" + id).val() == undefined || $(\"#\" + id).val() == '' || $(\"#\" + id).val().toString().trim() == '' ? $(\"#\" + id).val(0) : '';\n\n var finalData = [];\n finalData.push({\n 'AttributeId': attributeId,\n 'ValueCost': +value,\n 'ModifiedOn': new Date(\"15 \" + id.substr(id.indexOf('-') + 1, 3) + ' 20' + id.substr(id.indexOf('-') + 4, 6)),\n 'OpportunityId': this.opportunityId\n })\n\n this.ajWebService.saveValuesAndFTEforSavings(finalData).subscribe(data => {\n this.totalSavingsValueForNullAttribute = 0;\n if (this.opportunityQueues.find(x => x.queueId == this.queueId).Complete.find(x => x.OpportunityId == this.opportunityId).AttributeValue != undefined)\n if (this.opportunityQueues.find(x => x.queueId == this.queueId).Complete.find(x => x.OpportunityId == this.opportunityId).AttributeValue.AttributeValue.find(x => x.AttributeName == valueOrFTE).Values.find(x => x.Month.replace(' ', '') == id.substr(id.indexOf('-') + 1, 5)) != undefined)\n this.opportunityQueues.find(x => x.queueId == this.queueId).Complete.find(x => x.OpportunityId == this.opportunityId).AttributeValue.AttributeValue.find(x => x.AttributeName == valueOrFTE).Values.find(x => x.Month.replace(' ', '') == id.substr(id.indexOf('-') + 1, 5)).Value = +value;\n else\n this.opportunityQueues.find(x => x.queueId == this.queueId).Complete.find(x => x.OpportunityId == this.opportunityId).AttributeValue.AttributeValue.find(x => x.AttributeName == valueOrFTE).Values.push({\n 'Month': id.substr(id.indexOf('-') + 1, 10).substr(0, 3) + \" \" + id.substr(id.indexOf('-') + 1, 10).substr(3, 2),\n 'Value': +value\n })\n else\n for (var i = 0; i < document.getElementsByClassName('savingsvalue').length; i++)\n this.totalSavingsValueForNullAttribute += +$(\"#\" + document.getElementsByClassName('savingsvalue')[i].getAttribute('id')).val();\n\n this.reCalculateTotalSavingsAndEfforts();\n },\n error => {\n this.ajWebService.showInfoMessage(error.toString());\n })\n }\n\n updateSavingsFTEChart() {\n this.ajWebService.savingsAndFTEDataUpdated.emit(this.opportunityId.toString());\n this.reCalculateTotalSavingsAndEfforts();\n }\n\n UpdatePlannedDate(OpportunityId: number, PlannedDate: string) {\n var val = (PlannedDate[\"value\"].getMonth() + 1) + \"-\" + PlannedDate[\"value\"].getDate() + \"-\" + PlannedDate[\"value\"].getFullYear();\n this.ajWebService.UpdateDueDate(OpportunityId, val).subscribe(data => {\n this.reCalculateTotalSavingsAndEfforts();\n },\n error => {\n console.log(error);\n })\n }\n\n showSpinner() {\n this.spinner.show();\n }\n\n hideSpinner(heatMapDataReceived: boolean, supportGroupDataReceived: boolean) {\n if (supportGroupDataReceived)\n this.spinner.hide();\n }\n\n ExcelReport() {\n this.totalAsset = this.inProgressassetList.length + this.completedassetList.length;\n this.clientName = [this.ajWebService.clientList];\n //this.clientName = [this.clientList[0].Name];\n this.ajWebService.GetOpportunityList(this.ajWebService.LoadOpportunityRequest).subscribe(response => {\n this.ExcelDataAutomationPlanner = [];\n this.ExcelDataAutomationPlanner = response;\n //console.log(response);\n this.ajWebService.GetAssetCount(this.totalAsset).subscribe(response => {\n this.ajWebService.GetContract(this.clientName).subscribe(response => {\n this.ajWebService.ExcelReportDownload(this.ExcelDataAutomationPlanner).subscribe(response => {\n //console.log(response)\n var blob = new Blob([response], {\n type: \"application/vnd.ms-excel\"\n });\n var currentDate = new Date();\n var day = currentDate.getDate();\n var month = currentDate.getMonth() + 1;\n var year = currentDate.getFullYear();\n FileSaver.saveAs(blob, 'AJ_Report_Download_' + day + \"_\" + month + \"_\" + year + '.xlsx');\n this.ajWebService.showSuccessMessage(\"Data Exported to Excel\")\n }, error => {\n this.ajWebService.showErrorMessage(\"Export Failed\")\n });\n }, error => {\n this.ajWebService.showErrorMessage(error)\n });\n }, error => {\n this.ajWebService.showErrorMessage(error)\n })\n });\n }\n\n}\n","import { of as observableOf, Observable } from 'rxjs';\r\nimport { Injectable, Output, EventEmitter } from '@angular/core'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport { Location } from '@angular/common';\r\nimport { Router } from \"@angular/router\";\r\nimport { AppConfigService } from './app-config.service';\r\n\r\ndeclare var bootbox: any;\r\n//import 'rxjs/Rx';\r\n\r\n@Injectable()\r\nexport class AJWebService {\r\n public updateScopeSelector = new EventEmitter<{ cmsOrWS, cmsOrWSUid, wsUid, cmsOrWSId }>();\r\n\r\n public displayROIGraphPopUp = new EventEmitter();\r\n public displayTicketVolumeGraphPopUp = new EventEmitter();\r\n public displaySavingsGraphPopUp = new EventEmitter();\r\n public displayComment = new EventEmitter();\r\n\r\n public enterpriseId: string;\r\n public endToEndUId: string;\r\n public clientWMSId: string;\r\n\r\n public tabCode: string;\r\n public FilteredCMSWSRequest: any;\r\n public LoadOpportunityRequest: any;\r\n public CMSUId: string;\r\n public WorkstreamUId: string;\r\n public queryString: any;\r\n public role: string;\r\n public ScopeSelectorLoaded: boolean;\r\n public isError: boolean;\r\n public ErrorMessage: string;\r\n public DAvisible: boolean;\r\n public LaunchAnalyservisible: boolean;\r\n public userSpecificUsage: string;\r\n\r\n public plannedTotalEfforts: any;\r\n public costPerHour: any;\r\n public actualTotalSavings: any;\r\n public plannedTotalSavings: any;\r\n public outcomesDataCalculationCompleted = new EventEmitter();\r\n\r\n public ticketVolumeDataUpdated = new EventEmitter();\r\n public savingsAndFTEDataUpdated = new EventEmitter();\r\n public lastActiveOpportunityId: number;\r\n\r\n public showAutomationOpportunitiesData = new EventEmitter();\r\n public ticketDistributionData = [];\r\n public ticketDistributionDataLoaded = new EventEmitter();\r\n public opportunityQueues: any[][] = [];\r\n public opportunityQueuesLoaded = new EventEmitter();\r\n public showTicketDistributionChartInPopUp = new EventEmitter();\r\n public showUseCasesImplementationChartInPopUp = new EventEmitter();\r\n public loadAssetProvisioningData = new EventEmitter();\r\n public loadAutomationOpportunityData = new EventEmitter();\r\n\r\n public backlogList: any[] = [];\r\n public inProgressList: any[] = [];\r\n public completedList: any[] = [];\r\n public cancelledList: any[] = [];\r\n\r\n public clientList:any;\r\n public backlogassetList: any[] = [];\r\n public inProgressassetList: any[] = [];\r\n public completedassetList: any[] = [];\r\n public cancelledassetList: any[] = []\r\n \r\n // enterpriseId(enterpriseId: any, endToEndUId: any, clientWMSId: any) {\r\n // throw new Error(\"Method not implemented.\");\r\n // }\r\n // endToEndUId(enterpriseId: any, endToEndUId: any, clientWMSId: any) {\r\n // throw new Error(\"Method not implemented.\");\r\n // }\r\n // clientWMSId(enterpriseId: any, endToEndUId: any, clientWMSId: any) {\r\n // throw new Error(\"Method not implemented.\");\r\n // }\r\n public baseURL: string;\r\n public environmentDetails: any;\r\n public cmsData :any;\r\n\r\n @Output() change: EventEmitter = new EventEmitter();\r\n public onClear: EventEmitter = new EventEmitter();\r\n\r\n constructor(location: Location, router: Router, private http: HttpClient, private appConfig: AppConfigService) {\r\n this.environmentDetails = this.appConfig.environmentSettings;\r\n if (this.environmentDetails.MSALenabled)\r\n this.baseURL = this.environmentDetails.serverAPIUrl;\r\n else\r\n this.baseURL = this.environmentDetails.localAPIUrl;\r\n\r\n this.ScopeSelectorLoaded = false;\r\n if (this.baseURL.includes(\"localhost\")) {\r\n this.endToEndUId = sessionStorage.getItem('E2E');\r\n this.enterpriseId = \"pravalika.pogula\";\r\n this.tabCode = \"MW\";\r\n }\r\n else {\r\n this.queryString = window.location.href.split('/');\r\n //check\r\n if (this.queryString.length > 4)\r\n this.tabCode = this.queryString[4].toUpperCase();\r\n else\r\n this.tabCode = this.queryString[3].toUpperCase();\r\n //this.endToEndUId = this.queryString[this.queryString.length - 1].toLowerCase();\r\n this.endToEndUId = \"ea0d8121-266b-4a18-9b62-0f33953c060a\";\r\n }\r\n }\r\n\r\n setLoadOpportuityRequest(LoadOpportunityRequest: any) {\r\n this.LoadOpportunityRequest = LoadOpportunityRequest;\r\n this.change.emit(this.LoadOpportunityRequest);\r\n }\r\n\r\n APtoAJHeatMap(EndToEndUId: string, cmsUId: string, wsUId: string): Observable {\r\n //SKM\r\n var url = this.baseURL + \"ENS/APtoAJHeatMap?endToEndUId=\" + EndToEndUId + \"&cmsUId=\" + cmsUId + \"&wsUId=\" + wsUId;\r\n // Need to pass AP API token: then call the below AP API to get the data \r\n //return this.http.get('https://mywizard-aiprojectmanagerapi.ciostage.accenture.com/Baseline/APtoAJHeatMap');\r\n //return this.http.get('http://localhost:58779/Baseline/APtoAJHeatMap');\r\n return this.http.get(this.baseURL + \"ENS/APtoAJHeatMap?endToEndUId=\" + EndToEndUId + \"&cmsUId=\" + cmsUId + \"&wsUId=\" + wsUId);\r\n //return this.http.get(this.baseURL + \"ENS/APtoAJHeatMap?endToEndUId=\" + EndToEndUId);\r\n }\r\n\r\n GetProductList(EndToEndUId: string): Observable {\r\n return this.http.get(this.baseURL + \"AJ/ProductList/\" + EndToEndUId);\r\n }\r\n\r\n GetAIAARAGStatus(data: any): Observable {\r\n return this.http.post(this.baseURL + \"/AIAARAGStatus\", { data });\r\n }\r\n\r\n GetAOFAssessments(EndToEndUId: string, CMSUId: string, WorkstreamUId: string): Observable {\r\n return this.http.get(this.baseURL + \"AJ/AOFAssessments/\" + EndToEndUId + \"/\" + CMSUId + \"/\" + WorkstreamUId);\r\n }\r\n\r\n GetMigrateAiaa(EndToEndUId: string): Observable {\r\n return this.http.get(this.baseURL + \"AJ/MigrateAiaa/\" + EndToEndUId);\r\n }\r\n\r\n GetMigrationStatus(EndToEndUId: string): Observable {\r\n return this.http.get(this.baseURL + \"AJ/MigrationStatus?EndToEndUId=\" + EndToEndUId);\r\n }\r\n\r\n GetUserAccessSettings(EndToEndUId: string): Observable {\r\n return this.http.get(this.baseURL + \"AJ/GetEndToEndAccessSettings?EndToEndUId=\" + EndToEndUId);\r\n }\r\n\r\n UpdateDueDate(OpportunityId: number, PlannedDate: string): Observable {\r\n return this.http.get(this.baseURL + \"AJ/AddPlannedDate/\" + OpportunityId + \"/\" + PlannedDate);\r\n }\r\n\r\n UpdateDueDateAllOpportunities(OpportunityId: number, PlannedDate: string): Observable {\r\n return this.http.get(this.baseURL + \"AJ/AddPlannedDateforAllOpportunities?OpportunityId=\" + OpportunityId + \"&PlannedDate=\" + PlannedDate);\r\n }\r\n\r\n getReport(Contracts: any): Observable {\r\n return this.http.post(this.baseURL + \"HPDP/GetReport\", Contracts);\r\n }\r\n\r\n getTicketVolume(OpportunityId: number): Observable {\r\n return this.http.get(this.baseURL + \"AJ/GetUsage/\" + OpportunityId);\r\n }\r\n\r\n GetAssetAttributeUsage(OpportunityId: number, AssetId: number): Observable {\r\n return this.http.get(this.baseURL + \"AJ/GetAssetUsage/\" + OpportunityId + \"/\" + AssetId);\r\n }\r\n\r\n saveAttributeUsageForTicketVolume(data: any): Observable {\r\n return this.http.post(this.baseURL + \"AJ/AddOrUpdateAttributeUsage\", data);\r\n }\r\n\r\n saveValuesAndFTEforSavings(data: any): Observable {\r\n return this.http.post(this.baseURL + \"AJ/AddOrUpdateOpportunityValue\", data);\r\n }\r\n\r\n UpdateCustomAssetOrderStatus(assetId: number, automationPlannerId: string, assetName, assetType: string, orderStatus: string): Observable {\r\n return this.http.get(this.baseURL + \"AJ/UpdateCustomAssetOrderStatus?assetId=\" + assetId + '&endToEndUId=' + automationPlannerId + '&assetName=' + assetName + '&assetType=' + assetType + '&orderStatus=' + orderStatus);\r\n }\r\n\r\n UpdateAssetStatus(assetId: number, status: string): Observable {\r\n return this.http.post(this.baseURL + \"AJ/UpdateOrderStatus\", { assetId, status });\r\n }\r\n\r\n UpdateAssetCompletedStatus(): Observable {\r\n return this.http.get(this.baseURL + \"AJ/UpdateAssetCompletedStatus\");\r\n }\r\n\r\n UpdateOpportunityAssetStatus(): Observable {\r\n return this.http.get(this.baseURL + \"AJ/UpdateOpportunityAssetStatus\");\r\n }\r\n UpdateOppertunityStatus(OpportunityId: string, Status: string): Observable {\r\n return this.http.post(this.baseURL + \"AJ/UpdateOppertunityStatus\", { OpportunityId, Status });\r\n }\r\n\r\n GetNotificationsList(data: any): Observable {\r\n return this.http.post(this.baseURL + \"Notifications/TileNotifications/\", data);\r\n }\r\n\r\n GetOpportunityList(data: any): Observable {\r\n return this.http.post(this.baseURL + \"AJ/OpportunityList\", data);\r\n }\r\n\r\n GetAllOpportunityList(data: any): Observable {\r\n return this.http.post(this.baseURL + \"AJ/AllOpportunityList\", { data });\r\n }\r\n\r\n AddToCart(ProductUId: string, EndToEndUId: string): Observable {\r\n return this.http.get(this.baseURL + \"MAS/AddProductToCart?ProductUId=\" + ProductUId + \"&EndToEndUId=\" + EndToEndUId);\r\n }\r\n\r\n GetUsage(opportunityId: number): Observable {\r\n return this.http.get(this.baseURL + \"AJ/GetUsage?OpportunityId=\" + opportunityId);\r\n }\r\n\r\n GetSavingsValue(opportunityId: number): Observable {\r\n return this.http.get(this.baseURL + \"AJ/GetValue/\" + opportunityId);\r\n }\r\n\r\n getReviewers(): Observable {\r\n return this.http.get(this.baseURL + \"HPDP/Reviewers\");\r\n }\r\n\r\n getClients(enterpriseId: string, clientId: string, engagementId: string, projectId: string): Observable {\r\n return this.http.get(this.baseURL + 'HPDP/HPDP/ClientDetails?enterpriseId=' + enterpriseId + '&clientId=' + clientId + '&engagementId=' + engagementId + '&projectId=' + projectId);\r\n }\r\n\r\n getUserAccess(enterpriseId: string): Observable {\r\n return this.http.get(this.baseURL + 'HPDP/ClientUser?userId=' + enterpriseId);\r\n }\r\n\r\n getClientHierarchy(enterpriseId: string, EndToEndUId: string, clientWMSId: string): Observable {\r\n return this.http.get(this.baseURL + 'HPDP/GetClientHierarchy/' + enterpriseId + '/' + EndToEndUId + '/' + clientWMSId);\r\n }\r\n\r\n // scope selector start\r\n getWorkStreams(EndToEndUId: string): Observable {\r\n return this.http.get(this.baseURL + 'HPDP/GetWorkStreams/' + EndToEndUId);\r\n }\r\n\r\n getProjectAttributes(EndToEndUId: string): Observable {\r\n return this.http.get(this.baseURL + \"HPDP/GetProjectAttributes/\" + EndToEndUId);\r\n }\r\n // scope selector end\r\n\r\n getOGOUCSG(enterpriseId: string): Observable {\r\n return this.http.get(this.baseURL + 'HPDP/GetOGOUCSG/' + enterpriseId + '/');\r\n }\r\n\r\n GetOGOUCSGNP(EndToEndUId: string): Observable {\r\n return this.http.post(this.baseURL + \"HPDP/GetOGOUCSGNP\", { EndToEndUId });\r\n }\r\n\r\n getAJUserAccess(EndToEndUId: string): Observable {\r\n return this.http.get(this.baseURL + 'AJ/GetUserAccess/' + EndToEndUId);\r\n }\r\n\r\n GetUsageScheduleInterval(EndToEndUId: string): Observable {\r\n return this.http.get(this.baseURL + 'AJ/GetandCreateInterval/' + EndToEndUId);\r\n }\r\n\r\n SchedueleService(UsageData: any): Observable {\r\n return this.http.post(this.baseURL + \"AJ/RefreshUsageSchdule\", { UsageData });\r\n }\r\n\r\n AddUsageServiceSchedule(EndToEndUId: string, interval: string, StartDate: string): Observable {\r\n var detail = { EndToEndUId: EndToEndUId, Interval: interval, StartDate: StartDate };\r\n return this.http.post(this.baseURL + \"AJ/AddUsageServiceSchedule\", { detail });\r\n }\r\n\r\n UpdateAutomationJourney(EndToEndUId: string, EnterpriseId: string, OpportunityId: any, PlanStatus: any): Observable {\r\n // var AJPlanModel = { EndToEndUId: EndToEndUId, EnterpriseId: enterpriseid, OpportunityId: opportunityId, PlanStatus: planStatus };\r\n return this.http.post(this.baseURL + \"AJ/UpdateAutomationJourney\", { EndToEndUId, EnterpriseId, OpportunityId, PlanStatus });\r\n }\r\n\r\n GetSavingsDetails(EndToEndUIds: string[], SelectedOG: string, SelectedOU: string, SelectedCSG: string): Observable {\r\n var EndToEndUIdsData = {EnterpriseId :this.enterpriseId,EndToEndUIds: EndToEndUIds, OG: SelectedOG, OU: SelectedOU, CSG: SelectedCSG };\r\n return this.http.post(this.baseURL + \"HPDP/GetSavingsDetails\", EndToEndUIdsData);\r\n }\r\n\r\n getUseCaseImplementedDetails(apCatergoryId: any) {\r\n return this.http.get(this.baseURL + 'AJ/UseCasesImplemented/' + apCatergoryId);\r\n }\r\n\r\n //sample post method from gtr\r\n saveAssignedTicketCategory(lstSaveCategoryResolution: any, UserId: string): Observable {\r\n return this.http.post(this.baseURL + \"/TicketServiceMongo/SaveAssignedTicketCategory\", { lstSaveCategoryResolution, UserId });\r\n }\r\n\r\n showSuccessMessage(message: string) {\r\n bootbox.alert({\r\n title: \"Success..!!\",\r\n message: message,\r\n closeButton: false\r\n }).find('.btn-primary').removeClass('btn').css({ 'padding': '6px 12px', 'border-radius': '4px', 'border': '1px solid transparent' });\r\n }\r\n\r\n displayErrorMessage(err) {\r\n if (err.error != undefined && typeof (err.error) == \"string\")\r\n this.showErrorMessage(err.error);\r\n else if (err.message != undefined)\r\n this.showErrorMessage(err.message);\r\n else if (err.error != undefined && err.error.title != undefined)\r\n this.showErrorMessage(err.error.title);\r\n else if (err.error != undefined && err.error.text != undefined)\r\n this.showErrorMessage(err.error.text);\r\n else if (err.error != undefined && err.error.value != undefined)\r\n this.showErrorMessage(err.error.value);\r\n }\r\n\r\n showErrorMessage(message: string) {\r\n bootbox.alert({\r\n title: \"Errors..!!\",\r\n message: message,\r\n closeButton: false\r\n }).find('.btn-primary').removeClass('btn').css({ 'padding': '6px 12px', 'border-radius': '4px', 'border': '1px solid transparent' });\r\n }\r\n\r\n showInfoMessage(message: string) {\r\n bootbox.alert({\r\n title: \"Info..!!\",\r\n message: message,\r\n closeButton: false\r\n }).find('.btn-primary').removeClass('btn').css({ 'padding': '6px 12px', 'border-radius': '4px', 'border': '1px solid transparent' });\r\n }\r\n\r\n showConfidentialityMessage(message: string) {\r\n bootbox.dialog({\r\n title: \"Confidential Information – Reminder\",\r\n message: message,\r\n closeButton: false,\r\n buttons: {\r\n ok: {\r\n label: 'I Understand',\r\n className: 'centerbutton btn-primary'\r\n }\r\n }\r\n }).find('.modal-content').css({ 'width': '580px', 'margin-top': '150px' })\r\n .find('.modal-header').css({ 'background-color': 'white', 'border-color': 'white' })\r\n .find('.modal-body').css({ 'padding': '1.25rem !important' })\r\n }\r\n\r\n showConfirmMessage(message: string) {\r\n bootbox.confirm({\r\n message: message,\r\n callback: function (result) { return result; /* result is a boolean; true = OK, false = Cancel*/ }\r\n }).find('.btn-primary').removeClass('btn').css({ 'padding': '6px 12px', 'border-radius': '4px', 'border': '1px solid transparent' });\r\n }\r\n\r\n dummyObservable(): Observable {\r\n return observableOf(1);\r\n }\r\n\r\n ExcelReportDownload(data:any){\r\n return this.http.post(this.baseURL + 'ExcelExport/ExcelExport/' , data, {responseType: 'blob'});\r\n }\r\n\r\n GetAssetCount(data:any): Observable{\r\n return this.http.post(this.baseURL + 'ExcelExport/GetAssetCount/', data)\r\n }\r\n\r\n GetContract(contract:any): Observable{\r\n return this.http.post(this.baseURL + 'ExcelExport/GetContract/', contract)\r\n }\r\n\r\n GetData(data:any): Observable{\r\n return this.http.post(this.baseURL + 'ExcelExport/GetData', {data})\r\n }\r\n\r\n AddComment(opportunityId: any, comment:string): Observable{\r\n //var detail = {OpportunityId:OpportunityId, comment:Comment}\r\n return this.http.post(this.baseURL + 'AJ/AddComment', {opportunityId, comment})\r\n }\r\n \r\n GetComment(opportunityId:any): Observable{\r\n return this.http.get(this.baseURL + 'AJ/GetComment/' + opportunityId)\r\n }\r\n}\r\n\r\n","import { Component, OnInit } from '@angular/core';\nimport { AJWebService } from 'src/services/ajWeb.service';\nimport * as d3 from 'd3';\nimport { common } from 'src/app/common/common';\n\n@Component({\n selector: 'app-asset-provisioning-status',\n templateUrl: './asset-provisioning-status.component.html',\n styleUrls: ['./asset-provisioning-status.component.scss']\n})\nexport class AssetProvisioningStatusComponent implements OnInit {\n\n dataset: any;\n selector = 'asset_provisioning-section';\n width = 290;\n height = 230;\n margin = 20;\n radius: any;\n svg: any;\n labelValue = 'Assets';\n totalCount = 0;\n color = ['#6D6ACC', '#7188DC', '#67CABD', '#DC67CE'];\n\n constructor(public ajWebService: AJWebService) { }\n\n ngOnInit(): void {\n this.ajWebService.loadAssetProvisioningData.subscribe(opportunityQueues => {\n common.clearSVG(this.selector);\n let element = document.getElementsByClassName(this.selector)[0];\n this.width = element.offsetWidth + 5;\n this.height = 200;\n this.dataset = this.getData();\n this.drawGraph();\n }, error => {\n this.ajWebService.showErrorMessage(error);\n })\n }\n\n drawGraph() {\n //this.radius = (Math.min(this.width, this.height) / 2) - this.margin;\n this.radius = 70;\n this.svg = this.getSVG();\n this.renderPolyLineCircles();\n this.renderCenterTotalCountText();\n this.renderCenterLable();\n this.renderLegends();\n }\n\n renderLegends() {\n let nodeWidth = (d) => d.getBBox().width;\n const legend = this.svg.append('g')\n .attr('transform', 'translate(0,0)');\n\n const lg = legend.selectAll('g')\n .data(this.dataset)\n .enter()\n .append('g')\n\n let legendRadius = 5;\n lg.append('circle')\n .attr('fill', (d, i) => this.color[i])\n .attr('r', legendRadius);\n\n lg.append('text')\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"font-size\", \"10px\")\n .attr('fill', '#000000')\n .attr(\"text-align\", \"centre\")\n .attr(\"x\", legendRadius + 2)\n .attr(\"dy\", \"0.3em\")\n .text(d => d.label);\n\n let offset = 10;\n let offset1 = 10;\n let height = this.height;\n let width = this.width;\n lg.attr('transform', function (d, i) {\n let x = offset;\n offset += nodeWidth(this) + 10;\n if (offset < width + 48) {\n return `translate(${x + 15.5},${height / 2 - 15})`;\n }\n else {\n let x = offset1;\n offset1 += nodeWidth(this) + 15;\n return `translate(${x + 15.5},${height / 3})`;\n }\n });\n let radius = this.radius;\n legend.attr('transform', function () {\n return `translate(${(-radius - 30)},${25})`\n });\n }\n\n renderCenterLable() {\n this.svg.append('text')\n .attr('font-family', 'sans-serif Medium')\n .attr('font-size', '9.5px')\n .attr('dy', '2em')\n .attr('fill', '#B0B0B0')\n .attr('text-anchor', 'middle')\n .attr('word-wrap', 'break-word')\n .text(this.labelValue);\n }\n\n renderPolyLineCircles() {\n const mainArc = this.getMainArc();\n // Another arc that won't be drawn. Just for labels positioning\n let line_length = this.radius + 30,\n arc_outer_line = d3.arc()\n .innerRadius(line_length)\n .outerRadius(line_length);\n\n let arc_outer_value = d3.arc()\n .innerRadius(line_length + 18)\n .outerRadius(line_length + 18);\n\n const pie = d3.pie()\n .value((d: any) => d.percentage)\n .sort(null);\n\n const paths = this.svg.selectAll('g')\n .data(pie(this.dataset))\n .enter();\n\n // Add the polylines between chart and labels:\n // paths.append('polyline')\n // .attr('stroke', 'black')\n // .style('fill', 'none')\n // .attr('stroke-width', 1)\n // .attr('points', (d) => {\n // const posA = mainArc.centroid(d), posB = arc_outer_line.centroid(d);\n // return [posA, posB];\n // });\n\n // Add circle to the polyline\n // paths.append('circle')\n // .attr('r', 3)\n // .attr('transform', d => 'translate(' + arc_outer_line.centroid(d) + ')')\n // .attr('fill', (d, i) => this.color[i]);\n\n // Add values to the charts\n // paths.append('text')\n // .attr('transform', d => 'translate(' + arc_outer_value.centroid(d) + ')')\n // .attr('font-family', 'sans-serif')\n // .attr('font-size', '12px')\n // .attr('fill', '#B0B0B0')\n // .attr('dy', '.35em')\n // .attr('text-anchor', 'middle')\n // .text(d => d.value + '%');\n\n paths.append('path')\n .attr('d', mainArc)\n .attr('fill', (d, i) => this.color[i])\n .append('svg:title')\n .text(d =>\n Math.round(+d.data.label.substr(d.data.label.indexOf(' ') + 1, 10))\n );\n }\n\n renderCenterTotalCountText() {\n this.svg.append('text')\n .attr('font-family', 'sans-serif Black')\n .attr('font-size', '35px')\n .attr('dy', '0.25em')\n .attr('fill', '#000000')\n .attr('text-anchor', 'middle')\n .text(this.totalCount);\n }\n\n getMainArc() {\n return d3.arc()\n .innerRadius(d => this.radius * 0.7)\n .outerRadius(d => this.radius)\n .padAngle(0.025);\n }\n\n\n getSVG() {\n return common.getSVG(this.selector, this.width, this.height)\n .append('g')\n .attr('transform', 'translate(' + (this.width / 2) +\n ',' + (this.height / 2.5) + ')');\n }\n\n getData() {\n this.totalCount = this.ajWebService.backlogassetList.length + this.ajWebService.inProgressassetList.length + this.ajWebService.completedassetList.length; //+ this.ajWebService.cancelledList.length;\n return [\n { percentage: Math.round(this.ajWebService.backlogassetList.length / this.totalCount * 100), label: 'Backlogs ' + this.ajWebService.backlogassetList.length },\n { percentage: Math.round(this.ajWebService.inProgressassetList.length / this.totalCount * 100), label: 'In-Progress ' + this.ajWebService.inProgressassetList.length },\n { percentage: Math.round(this.ajWebService.completedassetList.length / this.totalCount * 100), label: 'Completed ' + this.ajWebService.completedassetList.length },\n //{ percentage: Math.round(this.ajWebService.cancelledList.length / this.totalCount * 100), label: 'Cancelled ' + this.ajWebService.cancelledList.length }\n ];\n }\n}\n\n","
\n
\n
\n\n","import { Component, ElementRef, HostListener, Input, OnInit, ViewChild } from '@angular/core';\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\nimport * as d3 from 'd3';\nimport { element } from 'protractor';\nimport { common } from 'src/app/common/common';\nimport { AJWebService } from 'src/services/ajWeb.service';\n\n\n\n@Component({\n selector: 'app-heat-map-chart',\n templateUrl: './heat-map-chart.component.html',\n styleUrls: ['./heat-map-chart.component.css']\n})\nexport class HeatMapChartComponent implements OnInit {\n\n //@ViewChild('chart') private chartContainer: ElementRef;\n @Input() private data: Array;\n @Input() HeatMapGraphData: any;\n //private margin: any = { top: 0, bottom: 40, left: 25, right: 25 };\n private chart: any;\n // private width: number;\n // private height: number;\n private xScale: any;\n private yScale: any;\n private colors: any;\n private xAxis: any;\n private yAxis: any;\n selector = 'app-heat-map-chart-section'; //'ticketDistHeatMap' ;\n //selector1 = 'ticketDistHeatMap'; //'ticketDistHeatMap' ;\n //selcetor = \"heatmap-chart\";\n myData: { variable: string; value: string; type: string; }[];\n margin = { top: 0, right: 25, bottom: 100, left: 60 };\n containerHeight = 470;\n width: number;\n height: number;\n svg: any;\n xAxisText = \"Sub Category\";\n yAxisText = \"Queue Name\";\n public displayTicketDistribution: any;\n\n constructor(public ajWebService: AJWebService) {\n\n }\n\n ngOnInit() {\n this.displayTicketDistribution = false;\n this.ajWebService.ticketDistributionDataLoaded.subscribe(opportunityQueues => {\n this.myData = this.ajWebService.ticketDistributionData;\n if (this.myData.length > 0) {\n this.displayTicketDistribution = true;\n let obj = this;\n setTimeout(function () {\n obj.drawGraph();\n }, 100)\n } else {\n this.displayTicketDistribution = false;\n let elem = (document.getElementsByClassName(this.selector)[0]);\n if (elem != undefined)\n elem.innerHTML = \"\";\n }\n }, error => {\n this.ajWebService.showErrorMessage(error);\n })\n }\n\n drawGraph() {\n this.renderSVGCOntainer();\n this.renderXAXis();\n this.renderYAxis();\n this.renderHeatMap();\n this.renderXAxisText();\n this.renderYAxisText();\n //this.renderHeatMaplegend();\n }\n\n\n renderSVGCOntainer() {\n //let elem = document.getElementsByClassName(this.selector)[0].parentElement.parentElement.parentElement;\n let elem = (document.getElementsByClassName(this.selector)[0]);\n if (elem != undefined)\n elem.innerHTML = \"\";\n\n // set the dimensions and margins of the graph \n this.width = elem.offsetWidth - this.margin.left - this.margin.right;\n this.height = elem.offsetHeight - this.margin.top - this.margin.bottom;\n // this.width= 500;\n // this.height= 200;\n // append the svg object to the body of the page\n // this.svg = common.getSVG(this.selector, this.width, this.height)\n // .append(\"g\")\n // .attr(\"transform\",\n // \"translate(\" + this.margin.left + \",\" + this.margin.top + \")\");\n let parentElement = document.getElementsByClassName(this.selector)[0].parentElement.parentElement;\n this.svg = d3.select(elem)\n .append('svg')\n .attr('width', parentElement.offsetWidth)\n .attr('height', parentElement.offsetHeight < 50 ? parentElement.offsetHeight : parentElement.offsetHeight - 50) //element.offsetHeight - this.margin.height);\n // .attr('transform', `translate(50,0)`);\n .append(\"g\")\n .attr(\"transform\",\n \"translate(\" + this.margin.left * 1.5 + \",\" + this.margin.top + \")\");\n }\n\n x() {\n var myGroups = this.myData.map(d => d.type);\n // for (var i = 0; i < myGroups.length; i++)\n // myGroups[i].length >= 9 ? myGroups[i] = myGroups[i].slice(0, 8) + \"..\" : myGroups[i] = myGroups[i];\n return d3.scaleBand()\n .range([0, this.width])\n .domain(myGroups)\n .padding(0.02);\n }\n\n y() {\n var myVars = this.myData.map(d => d.variable);\n // for (var i = 0; i < myVars.length; i++)\n // myVars[i].length >= 9 ? myVars[i] = myVars[i].slice(0, 8) + \"..\" : myVars[i] = myVars[i];\n return d3.scaleBand()\n .range([this.height, 0])\n .domain(myVars)\n .padding(0.2);\n }\n\n renderXAXis() {\n this.svg.append(\"g\")\n .attr(\"class\", \"axis\")\n .attr(\"transform\", \"translate(0,\" + (this.height) + \")\")\n .call(d3.axisBottom(this.x()).ticks(10))\n .selectAll(\"text\")\n .style(\"text-anchor\", \"end\")\n .attr(\"dx\", \"-.6em\")\n .attr(\"dy\", \".10em\")\n .attr(\"transform\", \"rotate(-65)\")\n .text(d => d.length >= 9 ? d.slice(0, 8) + \"..\" : d)\n .append('svg:title')\n .text(d => d);\n // this.svg.append(\"g\")\n // .style(\"font-size\", 10)\n // .attr(\"transform\", \"translate(0,\" + (this.height) + \")\")\n // .call(d3.axisBottom(this.x()).tickSize(0).tickPadding(10)) //comment\n // .select(\".domain\") //comment\n // .selectAll(\".tick\");\n //.selectAll(\"line\").remove();\n //.call(g => g.select(\".domain\")).remove();\n }\n\n renderYAxis() {\n this.svg.append(\"g\")\n .attr(\"transform\", \"translate(0,0)\")\n // .style(\"font-size\", 10)\n .attr(\"class\", \"yaxislabel\")\n .call(d3.axisLeft(this.y()).ticks(10))\n .selectAll(\"text\")\n .style(\"text-anchor\", \"start\")\n .text(d => d.length >= 8 ? d.slice(0, 7) + \"..\" : d)\n .append('svg:title')\n .text(d => d);\n this.svg.selectAll(\".yaxislabel text\")\n .attr(\"transform\", \"translate(-45,0)\")\n }\n\n renderXAxisText() {\n this.svg.append(\"text\")\n .attr(\"class\", \"xAxisText\")\n .attr(\"transform\",\n \"translate(\" + ((this.height + this.width / 2) - 127.5) + \" ,\" +\n (this.height + this.margin.bottom / 2 + 22) + \")\")\n .attr(\"text-anchor\", \"middle\")\n .attr(\"font-family\", \"sans-serif Medium\")\n .attr(\"font-size\", \"11px\")\n .text(this.xAxisText);\n }\n\n renderYAxisText() {\n this.svg.append(\"text\")\n .attr(\"class\", \"yAxisText\")\n .attr(\"transform\", \"rotate(-90)\")\n .attr(\"y\", 0 - (this.margin.left + this.margin.right))\n .attr(\"x\", 0 - (this.height / 2))\n .attr(\"dy\", \"1em\")\n .attr(\"text-anchor\", \"middle\")\n .attr(\"font-family\", \"sans-serif Medium\")\n .attr(\"font-size\", \"11px\")\n .text(this.yAxisText);\n }\n renderHeatMap() {\n // Build color scale\n var colors: any = [\"#fafafa\", \"#4008F4\", \"007afc\", \"3200fc\"];\n //var colors:any =[ \"#0000ff\",'#6600ff','#944dff','#c299ff','#6969fc']\n var myColor = d3.scaleLinear()\n .domain([1, 6])\n .range(colors);\n\n // var myColor = d3.scaleLinear()\n // .range(['#ffffff', '#69b3a2'])\n // .domain([1, 100])\n\n // create a tooltip\n var tooltip = d3.select('#ticketDistHeatMap')\n .append(\"div\")\n .style(\"opacity\", 0)\n .attr(\"class\", \"tooltip\")\n .style(\"background-color\", \"white\")\n .style(\"border\", \"solid\")\n .style(\"border-width\", \"2px\")\n .style(\"border-radius\", \"3px\")\n .style(\"padding\", \"5px\");\n\n // Three function that change the tooltip when user hover / move / leave a cell\n var mouseover = function (d) {\n tooltip\n .style(\"opacity\", 1)\n d3.select(this)\n .style(\"opacity\", 1)\n };\n var mousemove = function (d) {\n tooltip\n .html(d.variable + \"
\" + d.type + \"
Tickets:\" + d.value)\n .style(\"left\", (d3.mouse(this)[0] - 150) + \"px\")\n .style(\"top\", (d3.mouse(this)[1]) - 20 + \"px\")\n };\n var mouseleave = function (d) {\n tooltip\n .style(\"opacity\", 0)\n d3.select(this)\n .style(\"opacity\", 0.8)\n };\n\n // add the squares\n this.svg.selectAll()\n .data(this.myData, d => d.value)\n .enter()\n .append(\"rect\")\n .attr(\"rx\", 2)\n .attr(\"ry\", 2)\n .attr(\"x\", d => this.x()(d.type))\n .attr(\"y\", d => this.y()(d.variable))\n .attr(\"width\", this.x().bandwidth() / 1.02)\n .attr(\"height\", this.y().bandwidth())\n .style(\"fill\", (d: any) => myColor(d.value))\n .style(\"stroke-width\", 4)\n .style(\"stroke\", \"none\")\n .style(\"opacity\", 0.8)\n .on(\"mouseover\", mouseover)\n .on(\"mousemove\", mousemove)\n .on(\"mouseleave\", mouseleave)\n }\n\n renderHeatMaplegend() {\n let parentElement = document.getElementsByClassName(this.selector)[0].parentElement.parentElement;\n var tranY = parentElement.offsetHeight - this.margin.bottom;\n var svg1 = this.svg\n .append(\"g\")\n .attr(\"class\", \"legendsvg\")\n .attr(\"width\", parentElement.offsetWidth)\n .attr(\"height\", this.margin.bottom)\n .attr(\"transform\", \"translate(\" + -10 + \",\" + (parentElement.offsetHeight - 110) + \")\");\n\n var legendGroup = svg1.selectAll(\".legend\")\n .data(this.myData, d => d.Value)\n .enter().append(\"g\")\n .attr(\"transform\", function (d, i) {\n return \"translate(\" + (i * 20) + \",\" + 0 + \")\";\n });\n\n legendGroup.append(\"circle\")\n .attr(\"cx\", \"20\")\n .attr(\"cy\", \"55\")\n .attr(\"r\", 4)\n .data(this.myData, d => d.Value)\n .attr(\"fill\", function (d, i) { // Add the colours dynamically\n return this.myColor(i);\n })\n .attr(\"stroke\", function (d, i) { // Add the colours dynamically\n return this.myColor(i);\n })\n .attr(\"stroke-width\", 2)\n\n legendGroup.append(\"text\")\n .attr(\"x\", 10)\n .attr(\"y\", 20)\n .text(function (d) { return d.value; });\n\n // legendGroup.append('text')\n // //.attr(\"class\", function (d) { return \"legendText\" + d.key.replace(/[^\\w]/gi, '') })\n // .attr(\"id\", \"textLegend\")\n // .style(\"color\", \"#9657D5\")\n // .style(\"font-size\", \"11px\")\n // //.style(\"font-weight\", \"bold\")\n // .style(\"cursor\", \"pointer\")\n // .style(\"fill\", \"#000\")\n // .attr(\"text-anchor\", \"start\")\n // .attr(\"x\", \"25\")\n // .attr(\"y\", \"60\")\n // .style('font-family', '\"Lucida Grande\", \"Lucida Sans Unicode\", Arial, Helvetica, sans-serif')\n // .append('tspan')\n // .text(function (d) {\n // if (this.myData.length > 50) { d =>d.value.toString(); }\n // return d.toString();\n // })\n }\n\n\n // @HostListener('window:resize', ['$event'])\n // onResize(event) {\n // if (event) {\n // common.clearSVG(this.selector);\n // this.drawGraph();\n // }\n // }\n\n\n\n}\n","
\n
No data present for ticket\n distribution.
","export const environment = {\n production: false,\n MSALenabled: true,\n\n serviceUrl: 'https://mywizardajnextgenapi.ciostage.accenture.com/api/',\n //localAPIUrl: \"http://localhost:18047/api/\",\n localAPIUrl: \"https://mywizardajnextgenapi.ciostage.accenture.com/api/\",\n federationLogoutURL: 'https://federation-sts.accenture.com/adfs/ls/?wa=wsignout1.0',\n masHomeUrl: 'https://mywizardautostorenextgen.ciostage.accenture.com/',\n aofHomeUrl: 'https://mywizard-aof.ciostage.accenture.com/',\n aiaaHomeUrl: 'https://mywizardaiaa.ciostage.accenture.com/',\n apHomeUrl: 'https://mywizard-aiprojectmanager.ciostage.accenture.com/opportunity/',\n apBaseLineUrl: 'https://mywizard-aiprojectmanager.ciostage.accenture.com/baseline/',\n hpdpHomeUrl: 'https://mywizardnextgen.ciostage.accenture.com/MyWizard/Back/',\n termsOfUseUrl: 'https://mywizardnextgen.ciostage.accenture.com/Views/TermsOfUse.html',\n webClientID: '24fef1aa-598b-47e3-a09f-d1c3cff3c66e',\n apiClientID: '4583f7e2-0241-4ab6-8e2b-90d9e8dc6762',\n tenantID: 'e0793d39-0939-496d-b129-198edd916feb',\n authority: 'https://login.microsoftonline.com/e0793d39-0939-496d-b129-198edd916feb/',\n azureRedirectURL: 'https://mywizardajnextgen.ciostage.accenture.com/',\n apBluePrintURL:'https://mywizard-aiprojectmanager.ciostage.accenture.com/home',\n apTreasuryURL:'https://mywizard-aiprojectmanager.ciostage.accenture.com/opportunityTreasury',\n};\n","import * as d3 from 'd3';\r\n\r\nclass Common {\r\n constructor() {}\r\n\r\n public addAttributes(attrs): any {\r\n const attributes = [];\r\n Object.getOwnPropertyNames(attrs).map((property) => {\r\n const attr = {name: property, value : attrs[property]};\r\n attributes.push(attr);\r\n });\r\n return attributes;\r\n }\r\n\r\n public getSVG(selector, width, height, isSelectorClass?) {\r\n if (isSelectorClass) {\r\n return d3.select(`.${selector}`).append('svg')\r\n .attr('id', 'app-svg')\r\n .attr('class', 'svg-style')\r\n .attr('width', width)\r\n .attr('height', height)\r\n .attr('style','overflow:inherit')\r\n .attr('preserveAspectRatio', 'xMidYMid meet');\r\n } else {\r\n return d3.select(`#${selector}`).append('svg')\r\n .attr('id', 'app-svg')\r\n .attr('class', 'svg-style')\r\n .attr('width', width)\r\n .attr('height', height)\r\n .attr('style','overflow:inherit')\r\n .attr('preserveAspectRatio', 'xMidYMid meet');\r\n }\r\n }\r\n\r\n public clearSVG(selector?) {\r\n //debugger;\r\n if (selector) {\r\n d3.select(`#${selector}`).select('#app-svg').remove();\r\n } else {\r\n d3.select('#app-svg').remove();\r\n }\r\n }\r\n\r\n public clearLegendSVG(selector) {\r\n if (selector) {\r\n d3.select(`#${selector}`).select('#app-legend-svg').remove(); \r\n } else {\r\n d3.select('#app-legend-svg').remove();\r\n }\r\n }\r\n}\r\nconst common = new Common();\r\nexport {common};\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class CacheInterceptor implements HttpInterceptor {\r\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\r\n const httpRequest = req.clone({\r\n headers: req.headers.append('Cache-Control', 'no-cache').append('Pragma', 'no-cache').append('Expires', 'Sat, 01 Jan 2000 00:00:00 GMT')\r\n //.append('Access-Control-Allow-Origin', '*')\r\n });\r\n return next.handle(httpRequest);\r\n }\r\n} \r\n","import { Component, HostListener, OnInit } from '@angular/core';\r\nimport { common } from 'src/app/common/common';\r\nimport * as d3 from 'd3';\r\nimport { AJWebService } from 'src/services/ajWeb.service';\r\n\r\n@Component({\r\n selector: 'mri-cluster-bar-chart-two',\r\n templateUrl: './useCasePopUp-cluster-bar-chart-two.component.html',\r\n styleUrls: ['./useCasePopUp-cluster-bar-chart-two.component.scss']\r\n})\r\nexport class ClusterBarChartTwoComponent implements OnInit {\r\n\r\n data: { month: string; color: string; values: { value: number; category: string; }[] }[];\r\n svg: any;\r\n viewData = [];\r\n // barnumber = 3;\r\n // page = 1;\r\n width: any;\r\n height: any;\r\n margin = { top: 20, bottom: 80, left: 70, right: 20 };\r\n color = [\"#9657D5\", \"#B95FD2\"];\r\n legendKeys = [\"Planned\", \"Completed\"];\r\n max: any;\r\n chart: any;\r\n slice: any;\r\n slices: any;\r\n xAxisLabel = \"No. of Automation Usecases\";\r\n yAxisLabel = \"Queues\";\r\n legendContainer: any;\r\n selector = 'cluster-bar-chart-section';\r\n maxValue = 0;\r\n\r\n constructor(public ajWebService: AJWebService) { }\r\n\r\n ngOnInit() {\r\n this.ajWebService.showUseCasesImplementationChartInPopUp.subscribe(opportunityQueues => {\r\n let opportunityQueueData = this.ajWebService.opportunityQueues;\r\n if (opportunityQueueData != undefined && opportunityQueueData.length > 0) {\r\n let finalData = [];\r\n for (var i = 0; i < opportunityQueueData.length; i++) {\r\n if (i < 4 || opportunityQueueData[i][\"queueName\"] == \"Others\") {\r\n finalData.push({\r\n \"month\": opportunityQueueData[i][\"queueName\"],\r\n \"color\": \"#A260B7\",\r\n \"values\": [\r\n {\r\n \"value\": opportunityQueueData[i][\"Complete\"].length + opportunityQueueData[i][\"InProgress\"].length,\r\n \"category\": \"Category 1\"\r\n },\r\n {\r\n \"value\": opportunityQueueData[i][\"Complete\"].length,\r\n \"category\": \"Category 2\"\r\n }\r\n ],\r\n \"highestValue\": opportunityQueueData[i][\"Complete\"].length + opportunityQueueData[i][\"InProgress\"].length\r\n })\r\n\r\n if (opportunityQueueData[i][\"Complete\"].length + opportunityQueueData[i][\"InProgress\"].length > this.maxValue)\r\n this.maxValue = opportunityQueueData[i][\"Complete\"].length + opportunityQueueData[i][\"InProgress\"].length;\r\n }\r\n }\r\n finalData = finalData.sort((a, b) => a.highestValue > b.highestValue ? 1 : -1);\r\n\r\n finalData.reverse();\r\n // for (var i = 0; i < finalData.length; i++) {\r\n // finalData[i][\"recordNo\"] = i;\r\n // finalData[i].values[0][\"recordNo\"] = i;\r\n // finalData[i].values[1][\"recordNo\"] = i;\r\n // }\r\n // finalData = finalData.sort((a, b) => a.recordNo > b.recordNo ? -1 : 1)\r\n // let finalDatatry = []\r\n // for(var j = 0; j10)\r\n // finalDatatry[j].push(month.substring(0,5)+'...')\r\n // else\r\n // return finalData[j].month\r\n // }\r\n this.data = finalData;\r\n this.drawGraph();\r\n }\r\n }, error => {\r\n this.ajWebService.showErrorMessage(error);\r\n })\r\n }\r\n\r\n ngAfterViewChecked() {\r\n if (this.viewData != undefined)\r\n if (this.viewData.length > 0)\r\n this.drawGraph();\r\n }\r\n\r\n drawGraph() {\r\n this.prepareData();\r\n this.renderSVGContainer();\r\n this.renderChartContainer();\r\n this.renderXAxis();\r\n this.renderGrid();\r\n this.renderYAxis();\r\n this.renderShadowBars();\r\n this.renderBars();\r\n this.renderBarText();\r\n this.renderXAxisLabel();\r\n this.renderYAxisLabel();\r\n this.renderLegend();\r\n }\r\n\r\n prepareData() {\r\n //this.viewData = this.data.slice((this.page-1)*this.barnumber,this.page*this.barnumber);\r\n\r\n\r\n\r\n let result = [];\r\n this.data.forEach(elem => {\r\n let match = result.find(r => r.month === elem.month);\r\n if (match) {\r\n Object.assign(match, elem);\r\n } else {\r\n result.push(elem);\r\n }\r\n });\r\n this.viewData = result;\r\n }\r\n\r\n renderSVGContainer() {\r\n let elem = document.getElementsByClassName(this.selector)[0];\r\n elem.innerHTML = \"\";\r\n this.svg = common.getSVG(this.selector, elem.parentElement.parentElement.offsetWidth, elem.parentElement.parentElement.offsetHeight);\r\n this.width = elem.offsetWidth - this.margin.left - this.margin.right;\r\n this.height = elem.offsetHeight - this.margin.top - this.margin.bottom;\r\n }\r\n\r\n xScale() {\r\n return d3.scaleLinear()\r\n .domain([0, 1.2 * this.maxValue]).nice()\r\n .range([0, this.width]);\r\n }\r\n\r\n y0Scale() {\r\n return d3.scaleBand()\r\n .range([this.height, 0])\r\n .domain(this.viewData.map((s) => s.month))\r\n .padding(0.1);\r\n }\r\n\r\n y1Scale() {\r\n return d3.scaleBand()\r\n .domain(this.viewData[0].values.map(d => d.category))\r\n .rangeRound([0, this.y0Scale().bandwidth()])\r\n .padding(0.1);\r\n }\r\n\r\n makeXLines() {\r\n return d3.axisTop(this.xScale())\r\n .scale(this.xScale()).ticks(10)\r\n .tickSize(36).tickPadding(10);\r\n }\r\n\r\n renderChartContainer() {\r\n this.chart = this.svg.append('g')\r\n .attr('class', 'svgstyle')\r\n .attr('transform', 'translate(' + [this.margin.left + 40, this.margin.top + 35] + ')');\r\n }\r\n\r\n renderXAxis() {\r\n this.chart.append('g')\r\n .attr('transform', `translate(0 , ${this.height})`)\r\n .call(d3.axisBottom(this.xScale()).tickSizeOuter(0))\r\n .call(d => {\r\n d.selectAll(\"path\").attr(\"stroke\", \"#E4E4E4\").attr(\"fill\", \"#8c8c8c\");\r\n d.selectAll(\"line\").remove();\r\n d.selectAll(\"text\").remove();\r\n });\r\n }\r\n\r\n renderGrid() {\r\n const grid = this.chart.append('g')\r\n .attr('class', 'grid')\r\n //.call(this.makeXLines().tickSize(-this.height, 0, 0))\r\n .call(this.makeXLines().tickSize(-this.height))\r\n .call(d => d.select(\"path\").remove())\r\n\r\n grid.selectAll(\"line\")\r\n .attr(\"stroke\", \"#E4E4E4\")\r\n grid.selectAll(\"text\")\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"font-size\", \"10px\")\r\n .attr(\"fill\", \"#8c8c8c\");\r\n }\r\n\r\n renderYAxis() {\r\n this.chart.append('g')\r\n .attr('class', 'axis y-axis')\r\n .call(d3.axisLeft(this.y0Scale()))\r\n .call(d => d.select(\".domain\").remove())\r\n .call(d => d.selectAll(\"line\").attr(\"stroke-opacity\", 0).attr(\"fill\", \"#8c8c8c\"))\r\n .call(d => {\r\n d.selectAll(\"path\").attr(\"stroke\", \"#E4E4E4\").attr(\"fill\", \"#8c8c8c\");\r\n })\r\n }\r\n\r\n renderSlice() {\r\n return this.slice = this.svg.selectAll(\".slice\")\r\n .data(this.viewData)\r\n .enter().append(\"g\")\r\n .attr(\"class\", \"g\")\r\n .attr(\"id\", \"groups\")\r\n .attr(\"transform\", d => \"translate(\" + [this.margin.left + 40] + \",\" + (this.y0Scale()(d.month) + 54) + \")\")\r\n }\r\n\r\n renderSlices() {\r\n return this.slices = this.renderSlice().selectAll(\"path\")\r\n .data(d => d.values)\r\n .enter();\r\n }\r\n\r\n renderBars() {\r\n const xscale_bw = 26;\r\n const yscale_bw = this.y1Scale().bandwidth(),\r\n rx = xscale_bw / 3,\r\n ry = xscale_bw / 3;\r\n\r\n this.renderSlices()\r\n .append('path')\r\n .attr('class', 'bar')\r\n .attr(\"d\", d => {\r\n let rcWidth = (d.value < (this.max * (10 / 100))) ? this.xScale()(d.value) : this.xScale()(d.value) - rx;\r\n if (d.value > 0) {\r\n return `\r\n M${0},${this.y1Scale()(d.category) + this.y1Scale().bandwidth() / 2 - ry}\r\n h${rcWidth}\r\n a${rx},${ry} 0 0 1 ${rx},${ry}\r\n v 0.1\r\n a${rx},${ry} 0 0 1 ${-rx},${ry}\r\n h${-rcWidth}Z\r\n `}\r\n })\r\n .attr('fill', (d, i) => this.color[i]);\r\n }\r\n\r\n renderShadowBars() {\r\n const xscale_bw = 24;\r\n const yscale_bw = this.y1Scale().bandwidth(),\r\n rx = xscale_bw / 3,\r\n ry = xscale_bw / 3;\r\n\r\n this.renderSlices()\r\n .append('path')\r\n .attr('class', 'greyround-bar')\r\n .attr(\"d\", d => `\r\n M${0},${this.y1Scale()(d.category) + this.y1Scale().bandwidth() / 2 - ry}\r\n h${this.width - 10}\r\n a${rx},${ry} 0 0 1 ${rx},${ry}\r\n v 0.1\r\n a${rx},${ry} 0 0 1 ${-rx},${ry}\r\n h${-this.width + 10} Z\r\n `)\r\n .attr('fill', '#EBEFF4');\r\n }\r\n\r\n renderBarText() {\r\n if (this.viewData.length == 1)\r\n this.renderSlices()\r\n .append(\"text\")\r\n .attr('transform', (d, i) => {\r\n if (d.category == 'Category 1') {\r\n return `translate(${this.xScale()(d.value / 2) - 2} ${80})`\r\n } else if (d.category == 'Category 2') {\r\n return `translate(${this.xScale()(d.value / 2) - 2} ${215})`\r\n }\r\n })\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"font-size\", \"12px\")\r\n .attr('fill', '#f2f2f2')\r\n .text(d => {\r\n if (d.value > 0)\r\n return `${d.value}`\r\n })\r\n else if (this.viewData.length == 2)\r\n this.renderSlices()\r\n .append(\"text\")\r\n .attr('transform', (d, i) => {\r\n if (d.category == 'Category 1') {\r\n return `translate(${this.xScale()(d.value / 2) - 2} ${45})`\r\n } else if (d.category == 'Category 2') {\r\n return `translate(${this.xScale()(d.value / 2) - 2} ${115})`\r\n }\r\n })\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"font-size\", \"12px\")\r\n .attr('fill', '#f2f2f2')\r\n .text(d => {\r\n if (d.value > 0)\r\n return `${d.value}`\r\n })\r\n else if (this.viewData.length == 3)\r\n this.renderSlices()\r\n .append(\"text\")\r\n .attr('transform', (d, i) => {\r\n if (d.category == 'Category 1') {\r\n return `translate(${this.xScale()(d.value / 2) - 2} ${30})`\r\n } else if (d.category == 'Category 2') {\r\n return `translate(${this.xScale()(d.value / 2) - 2} ${80})`\r\n }\r\n })\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"font-size\", \"12px\")\r\n .attr('fill', '#f2f2f2')\r\n .text(d => {\r\n if (d.value > 0)\r\n return `${d.value}`\r\n })\r\n else if (this.viewData.length == 5)\r\n this.renderSlices()\r\n .append(\"text\")\r\n .attr('transform', (d, i) => {\r\n if (d.category == 'Category 1') {\r\n return `translate(${this.xScale()(d.value / 2) - 2} ${25})`\r\n } else if (d.category == 'Category 2') {\r\n return `translate(${this.xScale()(d.value / 2) - 2} ${60})`\r\n }\r\n })\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"font-size\", \"12px\")\r\n .attr('fill', '#f2f2f2')\r\n .text(d => {\r\n if (d.value > 0)\r\n return `${d.value}`\r\n })\r\n\r\n else\r\n this.renderSlices()\r\n .append(\"text\")\r\n .attr('transform', (d, i) => {\r\n if (d.category == 'Category 1') {\r\n return `translate(${this.xScale()(d.value / 2) - 2} ${25})`\r\n } else if (d.category == 'Category 2') {\r\n return `translate(${this.xScale()(d.value / 2) - 2} ${60})`\r\n }\r\n })\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"font-size\", \"12px\")\r\n .attr('fill', '#f2f2f2')\r\n .text(d => {\r\n if (d.value > 0)\r\n return `${d.value}`\r\n })\r\n }\r\n\r\n renderXAxisLabel() {\r\n this.chart.append(\"text\")\r\n .attr(\"transform\",\r\n \"translate(\" + ((this.width / 2)) + \" ,\" +\r\n (this.height + this.margin.top + 25) + \")\")\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"font-size\", \"12px\")\r\n .text(this.xAxisLabel);\r\n }\r\n\r\n renderYAxisLabel() {\r\n this.chart.append(\"text\")\r\n .attr(\"y\", 0 - this.margin.left + 20)\r\n .attr(\"x\", 0 - (this.height / 2) + 135)\r\n .attr(\"dy\", \"1em\")\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"font-weight\", \"bold\")\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"font-size\", \"12px\")\r\n .text(this.yAxisLabel);\r\n }\r\n\r\n renderLegendContainer() {\r\n //debugger;\r\n return this.legendContainer = this.svg.append(\"g\")\r\n .attr(\"id\", \"legend-container\")\r\n }\r\n\r\n renderLegendCircle(container) {\r\n container.append(\"circle\")\r\n .attr(\"cx\", (d, i) => 60 + i * 60)\r\n .attr(\"cy\", 5)\r\n .attr(\"r\", 5)\r\n .style(\"fill\", (d, i) => this.color[i])\r\n }\r\n\r\n renderLegendText(container) {\r\n container.append('text')\r\n .attr('font-size', '10px')\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"fill\", \"#BCB3C7\")\r\n .attr('text-anchor', 'start')\r\n .attr(\"alignment-baseline\", \"after-edge\")\r\n .attr(\"x\", (d, i) => 70 + i * 60)\r\n .attr('y', '10')\r\n .text((d: any) => d);\r\n }\r\n\r\n transformLegends(container, self, nodeWidth) {\r\n let offset = 0;\r\n container.attr('transform', function (d, i) {\r\n let x = offset;\r\n offset += nodeWidth(this) - 20;\r\n return `translate(${x},${self.height + 10})`;\r\n });\r\n }\r\n\r\n // transformLegendContainer(container, self, nodeWidth) {\r\n // container.attr('transform', function () {\r\n // return `translate(${((self.width/2) - nodeWidth(this)) + 100},${-self.height + 690})`\r\n // });\r\n // }\r\n\r\n transformLegendContainer(container, self, nodeWidth) {\r\n container.attr('transform', function () {\r\n return `translate(${((self.width / 2) - nodeWidth(this)) + 80},${-self.height + 410})`\r\n });\r\n }\r\n\r\n renderLegend() {\r\n const nodeWidth = (d) => d.getBBox().width,\r\n lgContainer = this.svg.append(\"g\")\r\n .attr(\"id\", \"legend-container\"),\r\n lg = lgContainer.selectAll('g')\r\n .data(this.legendKeys)\r\n .join('g');\r\n\r\n this.renderLegendCircle(lg);\r\n this.renderLegendText(lg);\r\n this.transformLegends(lg, this, nodeWidth);\r\n this.transformLegendContainer(lgContainer, this, nodeWidth)\r\n }\r\n\r\n // @HostListener('window:resize', ['$event'])\r\n // onResize(event) {\r\n // common.clearSVG(this.selector);\r\n // this.drawGraph();\r\n // }\r\n}\r\n\r\n","
","import { Component, ElementRef, HostListener, Input, OnInit, ViewChild } from '@angular/core';\nimport * as d3 from 'd3';\nimport { common } from 'src/app/common/common';\nimport { AJWebService } from 'src/services/ajWeb.service';\n\n@Component({\n selector: 'app-heat-map-chart-pop',\n templateUrl: './heat-map-popup-chart.component.html',\n styleUrls: ['./heat-map-popup-chart.component.css']\n})\n\nexport class HeatMapPopUpChartComponent implements OnInit {\n\n //@ViewChild('TktDistHeatMapPopUp') TktDistHeatMapPopUp: ElementRef;\n @Input() private data: Array;\n @Input() HeatMapGraphData: any;\n private chart: any;\n private xScale: any;\n private yScale: any;\n private colors: any;\n private xAxis: any;\n private yAxis: any;\n selector = 'app-heat-map-chart-pop-div';\n myData: { variable: string; value: string; type: string; }[];\n myColor: any;\n margin = { top: 30, right: 50, bottom: 220, left: 50 };\n //containerHeight = 470;\n width: number;\n height: number;\n svg: any;\n xAxisText = \"Sub Category\";\n yAxisText = \"Queue Name\";\n\n constructor(public ajWebService: AJWebService) {\n\n }\n\n ngOnInit() {\n this.ajWebService.showTicketDistributionChartInPopUp.subscribe(opportunityQueues => {\n this.myData = this.ajWebService.ticketDistributionData;\n this.drawGraph();\n }, error => {\n this.ajWebService.showErrorMessage(error);\n })\n }\n\n drawGraph() {\n this.renderSVGCOntainer();\n this.renderXAXis();\n this.renderYAxis();\n this.renderHeatMap();\n this.renderXAxisText();\n this.renderYAxisText();\n //this.renderHeatMaplegend();\n }\n\n renderSVGCOntainer() {\n //let elem = document.getElementsByClassName(this.selector)[0].parentElement.parentElement.parentElement;\n let elem = (document.getElementsByClassName(this.selector)[0]);\n elem.innerHTML = \"\";\n // set the dimensions and margins of the graph \n //this.width = elem.offsetWidth - this.margin.left - this.margin.right;\n //this.height = elem.offsetHeight - this.margin.top - this.margin.bottom;\n this.width = 400;\n this.height = 250;\n // append the svg object to the body of the page\n // this.svg = common.getSVG(this.selector, this.width, this.height)\n // .append(\"g\")\n // .attr(\"transform\",\n // \"translate(\" + this.margin.left + \",\" + this.margin.top + \")\");\n let parentElement = document.getElementsByClassName(this.selector)[0].parentElement.parentElement;\n this.svg = d3.select(elem)\n .append('svg')\n .attr('width', 700)\n .attr('height', 420) //element.offsetHeight - this.margin.height);\n // .attr('transform', `translate(50,0)`);\n .append(\"g\")\n .attr(\"transform\",\n \"translate(\" + this.margin.left * 4 + \",\" + this.margin.top + \")\");\n }\n\n x() {\n var myGroups = this.myData.map(d => d.type);\n return d3.scaleBand()\n .range([0, this.width])\n .domain(myGroups)\n .padding(0.02);\n }\n\n y() {\n var myVars = this.myData.map(d => d.variable);\n return d3.scaleBand()\n .range([this.height, 0])\n .domain(myVars)\n .padding(0.2);\n }\n\n renderXAXis() {\n this.svg.append(\"g\")\n .attr(\"class\", \"axis\")\n .attr(\"transform\", \"translate(0,\" + this.height + \")\")\n .call(d3.axisBottom(this.x()).ticks(10))\n .selectAll(\"text\")\n .style(\"text-anchor\", \"end\")\n .attr(\"dx\", \".1em\")\n .attr(\"dy\", \".2em\")\n .attr(\"transform\", \"rotate(-45)\");\n\n // this.svg.append(\"g\")\n // .style(\"font-size\", 10)\n // .attr(\"transform\", \"translate(0,\" + (this.height) + \")\")\n // .call(d3.axisBottom(this.x()).tickSize(0).tickPadding(10)) //comment\n // .select(\".domain\") //comment\n // .selectAll(\".tick\")\n // //.selectAll(\"line\").remove();\n // .call(g => g.select(\".domain\"))\n // .selectAll(\"text\")\n // .style(\"text-anchor\", \"end\")\n // .attr(\"dx\", \"-.8em\")\n // .attr(\"dy\", \".15em\")\n // .attr(\"transform\", function (d) {\n // return \"rotate(-65)\"\n // });\n }\n\n renderYAxis() {\n this.svg.append(\"g\")\n .style(\"font-size\", 10)\n //.call(d3.axisLeft(this.y()).tickSize(0).tickPadding(10))\n .call(d3.axisLeft(this.y()).ticks(10));\n //.select(\".domain\").remove();\n }\n\n\n renderXAxisText() {\n this.svg.append(\"text\")\n .attr(\"class\", \"xAxisText\")\n .attr(\"transform\",\n \"translate(\" + (this.width / 2) + \" ,\" +\n (this.height + this.margin.bottom / 2 + 20) + \")\")\n .attr(\"text-anchor\", \"middle\")\n .attr(\"font-family\", \"sans-serif Medium\")\n .attr(\"font-size\", \"11px\")\n .text(this.xAxisText);\n }\n\n renderYAxisText() {\n this.svg.append(\"text\")\n .attr(\"class\", \"yAxisText\")\n .attr(\"y\", 0 - (this.margin.left + this.margin.right - 80))\n .attr(\"x\", 0 - (this.height / 2 - 20))\n .attr(\"dy\", \"1em\")\n .attr(\"text-anchor\", \"middle\")\n .attr(\"font-family\", \"sans-serif Medium\")\n .attr(\"font-size\", \"11px\")\n .text(this.yAxisText);\n }\n renderHeatMap() {\n // Build color scale\n var colors: any = [\"#fafafa\", \"#4008F4\", \"007afc\", \"3200fc\"];\n //var colors:any =[ \"#0000ff\",'#6600ff','#944dff','#c299ff','#6969fc']\n this.myColor = d3.scaleLinear()\n .domain([1, 6])\n .range(colors);\n\n // var myColor = d3.scaleLinear()\n // .range(['#ffffff', '#69b3a2'])\n // .domain([1, 100])\n\n // create a tooltip\n var tooltip = d3.select('#ticketDistHeatMapPop')\n .append(\"div\")\n .style(\"opacity\", 0)\n .attr(\"class\", \"tooltip\")\n .style(\"background-color\", \"white\")\n .style(\"border\", \"solid\")\n .style(\"border-width\", \"2px\")\n .style(\"border-radius\", \"3px\")\n .style(\"padding\", \"5px\");\n\n // Three function that change the tooltip when user hover / move / leave a cell\n var mouseover = function (d) {\n tooltip\n .style(\"opacity\", 1)\n d3.select(this)\n .style(\"opacity\", 1)\n };\n\n var mousemove = function (d) {\n tooltip\n .html(d.variable + \"
\" + d.type + \"
Tickets:\" + d.value)\n .style(\"left\", (d3.mouse(this)[0]) + \"px\")\n .style(\"top\", (d3.mouse(this)[1]) + \"px\")\n };\n var mouseleave = function (d) {\n tooltip\n .style(\"opacity\", 0)\n d3.select(this)\n .style(\"opacity\", 0.8)\n };\n\n // add the squares\n this.svg.selectAll()\n .data(this.myData, d => d.value)\n .enter()\n .append(\"rect\")\n .attr(\"rx\", 2)\n .attr(\"ry\", 2)\n .attr(\"x\", d => this.x()(d.type))\n .attr(\"y\", d => this.y()(d.variable))\n .attr(\"width\", this.x().bandwidth() / 1.02)\n .attr(\"height\", this.y().bandwidth() * 0.8 / 1.02)\n .style(\"fill\", (d: any) => this.myColor(d.value))\n .style(\"stroke-width\", 4)\n .style(\"stroke\", \"none\")\n .style(\"opacity\", 0.8)\n .on(\"mouseover\", mouseover)\n .on(\"mousemove\", mousemove)\n .on(\"mouseleave\", mouseleave)\n .append('svg:title')\n .text(d =>\n d[\"variable\"] + \", Tickets : \" + d[\"value\"] + \", \" + d[\"type\"]\n )\n }\n\n renderHeatMaplegend() {\n let parentElement = document.getElementsByClassName(this.selector)[0].parentElement.parentElement;\n var tranY = parentElement.offsetHeight - this.margin.bottom;\n var svg1 = this.svg\n .append(\"g\")\n .attr(\"class\", \"legendsvg\")\n .attr(\"width\", parentElement.offsetWidth)\n .attr(\"height\", this.margin.bottom)\n .attr(\"transform\", \"translate(\" + -10 + \",\" + (parentElement.offsetHeight - 110) + \")\");\n\n var legendGroup = svg1.selectAll(\".legend\")\n .data(this.myData, d => d.Value)\n .enter().append(\"g\")\n .attr(\"transform\", function (d, i) {\n return \"translate(\" + (i * 20) + \",\" + 0 + \")\";\n });\n\n var colors: any = [\"#fafafa\", \"#4008F4\", \"007afc\", \"3200fc\"];\n this.myColor = d3.scaleLinear()\n .domain([1, 6])\n .range(colors);\n\n legendGroup.append(\"circle\")\n .attr(\"cx\", \"20\")\n .attr(\"cy\", \"480\")\n .attr(\"r\", 4)\n .data(this.myData, d => d.Value)\n .attr('fill', (d, i) => colors[i])\n .attr(\"stroke\", (d, i) => { colors[i]; })\n .attr(\"stroke-width\", 2)\n\n legendGroup.append(\"text\")\n .attr(\"x\", 10)\n .attr(\"y\", 20)\n .text(function (d) { return d.value; });\n\n // legendGroup.append('text')\n // //.attr(\"class\", function (d) { return \"legendText\" + d.key.replace(/[^\\w]/gi, '') })\n // .attr(\"id\", \"textLegend\")\n // .style(\"color\", \"#9657D5\")\n // .style(\"font-size\", \"11px\")\n // //.style(\"font-weight\", \"bold\")\n // .style(\"cursor\", \"pointer\")\n // .style(\"fill\", \"#000\")\n // .attr(\"text-anchor\", \"start\")\n // .attr(\"x\", \"25\")\n // .attr(\"y\", \"60\")\n // .style('font-family', '\"Lucida Grande\", \"Lucida Sans Unicode\", Arial, Helvetica, sans-serif')\n // .append('tspan')\n // .text(function (d) {\n // if (this.myData.length > 50) { d =>d.value.toString(); }\n // return d.toString();\n // })\n }\n\n // @HostListener('window:resize', ['$event'])\n // onResize(event) {\n // //debugger;\n // if (event) {\n // common.clearSVG(this.selector);\n // this.drawGraph();\n // }\n // }\n}\n","
\n","import { Component, HostListener, OnInit } from '@angular/core';\r\nimport * as d3 from 'd3';\r\nimport { common } from 'src/app/common/common';\r\nimport { AJWebService } from '../services/ajWeb.service';\r\n\r\n@Component({\r\n selector: 'app-donut-chart',\r\n templateUrl: './donut-chart.component.html',\r\n styleUrls: ['./donut-chart.component.scss']\r\n})\r\n\r\nexport class DonutChartComponent implements OnInit {\r\n dataset: any;\r\n selector = 'donut_chart-section';\r\n width = 290;\r\n height = 230;\r\n margin = 20;\r\n radius: any;\r\n svg: any;\r\n labelValue = 'Opportunities';\r\n totalCount = 0;\r\n color = ['#6D6ACC', '#7188DC', '#67CABD', '#DC67CE'];\r\n\r\n constructor(public ajWebService: AJWebService) { }\r\n\r\n ngOnInit() {\r\n this.ajWebService.loadAutomationOpportunityData.subscribe(opportunityQueues => {\r\n common.clearSVG(this.selector);\r\n let element = document.getElementsByClassName(this.selector)[0];\r\n this.width = element.offsetWidth + 5;\r\n this.height = 200;\r\n this.dataset = this.getData();\r\n this.drawGraph();\r\n }, error => {\r\n this.ajWebService.showErrorMessage(error);\r\n })\r\n }\r\n\r\n drawGraph() {\r\n //this.radius = (Math.min(this.width, this.height) / 2) - this.margin;\r\n this.radius = 70;\r\n this.svg = this.getSVG();\r\n this.renderPolyLineCircles();\r\n this.renderCenterTotalCountText();\r\n this.renderCenterLable();\r\n this.renderLegends();\r\n }\r\n\r\n renderLegends() {\r\n let nodeWidth = (d) => d.getBBox().width;\r\n const legend = this.svg.append('g')\r\n .attr('transform', 'translate(0,0)');\r\n\r\n const lg = legend.selectAll('g')\r\n .data(this.dataset)\r\n .enter()\r\n .append('g')\r\n\r\n let legendRadius = 5;\r\n lg.append('circle')\r\n .attr('fill', (d, i) => this.color[i])\r\n .attr('r', legendRadius);\r\n\r\n lg.append('text')\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"font-size\", \"10px\")\r\n .attr('fill', '#000000')\r\n .attr(\"text-align\", \"centre\")\r\n .attr(\"x\", legendRadius + 2)\r\n .attr(\"dy\", \"0.3em\")\r\n .text(d => d.label);\r\n\r\n let offset = 10;\r\n let offset1 = 10;\r\n let height = this.height;\r\n let width = this.width;\r\n lg.attr('transform', function (d, i) {\r\n let x = offset;\r\n offset += nodeWidth(this) + 10;\r\n if (offset < width + 48) {\r\n return `translate(${x + 15.5},${height / 2 - 15})`;\r\n }\r\n else {\r\n let x = offset1;\r\n offset1 += nodeWidth(this) + 15;\r\n return `translate(${x + 15.5},${height / 3})`;\r\n }\r\n });\r\n let radius = this.radius;\r\n legend.attr('transform', function () {\r\n return `translate(${(-radius - 30)},${25})`\r\n });\r\n }\r\n\r\n renderCenterLable() {\r\n this.svg.append('text')\r\n .attr('font-family', 'sans-serif Medium')\r\n .attr('font-size', '9.5px')\r\n .attr('dy', '2em')\r\n .attr('fill', '#B0B0B0')\r\n .attr('text-anchor', 'middle')\r\n .text(this.labelValue);\r\n }\r\n\r\n renderPolyLineCircles() {\r\n const mainArc = this.getMainArc();\r\n // Another arc that won't be drawn. Just for labels positioning\r\n let line_length = this.radius + 30,\r\n arc_outer_line = d3.arc()\r\n .innerRadius(line_length)\r\n .outerRadius(line_length);\r\n\r\n let arc_outer_value = d3.arc()\r\n .innerRadius(line_length + 18)\r\n .outerRadius(line_length + 18);\r\n\r\n const pie = d3.pie()\r\n .value((d: any) => d.percentage)\r\n .sort(null);\r\n\r\n const paths = this.svg.selectAll('g')\r\n .data(pie(this.dataset))\r\n .enter();\r\n\r\n // Add the polylines between chart and labels:\r\n // paths.append('polyline')\r\n // .attr('stroke', 'black')\r\n // .style('fill', 'none')\r\n // .attr('stroke-width', 1)\r\n // .attr('points', (d) => {\r\n // const posA = mainArc.centroid(d), posB = arc_outer_line.centroid(d);\r\n // return [posA, posB];\r\n // });\r\n\r\n // Add circle to the polyline\r\n // paths.append('circle')\r\n // .attr('r', 3)\r\n // .attr('transform', d => 'translate(' + arc_outer_line.centroid(d) + ')')\r\n // .attr('fill', (d, i) => this.color[i]);\r\n\r\n // Add values to the charts\r\n // paths.append('text')\r\n // .attr('transform', d => 'translate(' + arc_outer_value.centroid(d) + ')')\r\n // .attr('font-family', 'sans-serif')\r\n // .attr('font-size', '12px')\r\n // .attr('fill', '#B0B0B0')\r\n // .attr('dy', '.35em')\r\n // .attr('text-anchor', 'middle')\r\n // .text(d => d.value + '%');\r\n\r\n paths.append('path')\r\n .attr('d', mainArc)\r\n .attr('fill', (d, i) => this.color[i])\r\n .append('svg:title')\r\n .text(d =>\r\n Math.round(+d.data.label.substr(d.data.label.indexOf(' ') + 1, 10))\r\n );\r\n }\r\n\r\n renderCenterTotalCountText() {\r\n this.svg.append('text')\r\n .attr('font-family', 'sans-serif Black')\r\n .attr('font-size', '35px')\r\n .attr('dy', '0.25em')\r\n .attr('fill', '#000000')\r\n .attr('text-anchor', 'middle')\r\n .text(this.totalCount);\r\n }\r\n\r\n getMainArc() {\r\n return d3.arc()\r\n .innerRadius(d => this.radius * 0.7)\r\n .outerRadius(d => this.radius)\r\n .padAngle(0.025);\r\n }\r\n\r\n\r\n getSVG() {\r\n return common.getSVG(this.selector, this.width, this.height)\r\n .append('g')\r\n .attr('transform', 'translate(' + (this.width / 2) +\r\n ',' + (this.height / 2.5) + ')');\r\n }\r\n\r\n getData() {\r\n this.totalCount = this.ajWebService.backlogList.length + this.ajWebService.inProgressList.length + this.ajWebService.completedList.length + this.ajWebService.cancelledList.length;\r\n return [\r\n { percentage: Math.round(this.ajWebService.backlogList.length / this.totalCount * 100), label: 'Backlogs ' + this.ajWebService.backlogList.length },\r\n { percentage: Math.round(this.ajWebService.inProgressList.length / this.totalCount * 100), label: 'In-Progress ' + this.ajWebService.inProgressList.length },\r\n { percentage: Math.round(this.ajWebService.completedList.length / this.totalCount * 100), label: 'Completed ' + this.ajWebService.completedList.length },\r\n { percentage: Math.round(this.ajWebService.cancelledList.length / this.totalCount * 100), label: 'Cancelled ' + this.ajWebService.cancelledList.length }\r\n ];\r\n }\r\n\r\n // @HostListener('window:resize', ['$event'])\r\n // onResize(event) {\r\n // if (event) {\r\n // common.clearSVG(this.selector);\r\n // this.drawGraph();\r\n // }\r\n // }\r\n}\r\n","
\r\n
\r\n
\r\n\r\n","import { Component, HostListener, Input, OnInit } from '@angular/core';\r\nimport { common } from 'src/app/common/common';\r\nimport { AJWebService } from '../services/ajWeb.service';\r\nimport * as d3 from 'd3';\r\n\r\n@Component({\r\n selector: 'mri-multiline-tickvol-trending-assets',\r\n templateUrl: './multiline-tickvol-trending-assets.component.html',\r\n styleUrls: ['./multiline-tickvol-trending-assets.component.scss']\r\n})\r\nexport class MultilineTickVolTrendingAssetsComponent implements OnInit {\r\n data: any;\r\n viewData = [];\r\n svg: any;\r\n margin = { top: 20, bottom: 180, left: 70, right: 50 };\r\n selector = 'top-trending-assets-tickvol';\r\n yAxisText = \"No of Occurances\";\r\n xAxisText = \"\";\r\n svgWidth: any;\r\n width: number;\r\n height: number;\r\n svgHeight = 360;\r\n barnumber = 7;\r\n page = 1;\r\n xScale: any;\r\n yScale: any;\r\n chart: any;\r\n barWidth = 24;\r\n bars: any;\r\n line_stroke_width = 2;\r\n circle_stroke_width = 3;\r\n radius = 3;\r\n cat1_color = \"#DCDC67\";\r\n cat2_color = \"#DC67CE\";\r\n cat3_color = \"#67B7DC\";\r\n legendColors = [\"#67B7DC\", \"#DC67CE\", \"#DCDC67\"];\r\n legends = [\"Automated Fully\", \"Automated Partially\", \"Total Occurences\"];\r\n\r\n @Input() monthsList: any;\r\n @Input() yearsList: any;\r\n @Input() currentDate: any;\r\n @Input() opportunityId: any;\r\n public highestValue: number = 0;\r\n\r\n public automatedFullyValues: any[];\r\n public automatedPartiallyValues: any[];\r\n public totalOccurencesValues: any[];\r\n\r\n constructor(public ajWebService: AJWebService) { }\r\n\r\n ngOnInit() {\r\n //common.clearSVG(this.selector);\r\n this.ajWebService.displayTicketVolumeGraphPopUp.subscribe(opportunityId => {\r\n this.opportunityId = opportunityId;\r\n this.getData();\r\n }, error => {\r\n this.ajWebService.showErrorMessage(error);\r\n })\r\n }\r\n\r\n drawGraph() {\r\n //this.viewData = this.transformData();\r\n this.viewData = this.data;\r\n let elem = document.getElementsByClassName(this.selector)[0];\r\n elem.innerHTML = \"\";\r\n this.svgWidth = 1150; //elem.offsetWidth;\r\n this.width = this.svgWidth;\r\n\r\n //this.width = elem.offsetWidth - this.margin.left - this.margin.right + 40;\r\n this.height = this.svgHeight - this.margin.top - this.margin.bottom;\r\n this.svg = this.getSVG();\r\n this.xScale = this.getXScale();\r\n this.yScale = this.getYScale();\r\n this.chart = this.svg.append('g')\r\n .attr('class', 'svgstyle')\r\n .attr('transform', 'translate(' + [this.margin.left - 20, this.margin.top + 12] + ')')\r\n .style('overflow', 'visible');\r\n this.renderXAxis();\r\n this.renderYAxis();\r\n this.renderYGridLines();\r\n this.renderXAxisText();\r\n this.renderYAxisText();\r\n this.renderLine();\r\n this.renderShadowpath();\r\n this.renderLineCircles();\r\n this.renderLegendText();\r\n this.renderLegendCircle();\r\n }\r\n\r\n // Line circles\r\n renderLineCircles() {\r\n const line_circles = this.chart.selectAll()\r\n .data(this.viewData)\r\n .enter()\r\n .append('g');\r\n\r\n // circles for category 1\r\n line_circles.append('circle')\r\n .attr('cx', d => this.xScale(d.time) + this.xScale.bandwidth() / 2)\r\n .attr('cy', d => this.yScale(d.category_1))\r\n .attr('r', this.radius)\r\n .attr('fill', d => {\r\n let color = 'none';\r\n if (d.cat1_cir == 0) {\r\n color = 'none';\r\n }\r\n else if (d.cat1_cir == 1) {\r\n color = this.cat1_color;\r\n }\r\n return color;\r\n })\r\n .attr('stroke', d => {\r\n let color = 'none';\r\n if (d.cat1_cir == 0) {\r\n color = 'none';\r\n }\r\n else if (d.cat1_cir == 1) {\r\n color = this.cat1_color;\r\n }\r\n return color;\r\n })\r\n .attr('stroke-width', 3)\r\n .append('svg:title')\r\n .text((d) => d[\"category_1\"]);\r\n\r\n // circles for category 2\r\n line_circles.append('circle')\r\n .attr('cx', d => this.xScale(d.time) + this.xScale.bandwidth() / 2)\r\n .attr('cy', d => this.yScale(d.category_2))\r\n .attr('r', this.radius)\r\n .attr('fill', d => {\r\n let color = 'none';\r\n if (d.cat2_cir == 0) {\r\n color = 'none';\r\n }\r\n else if (d.cat2_cir == 1) {\r\n color = this.cat2_color;\r\n }\r\n return color;\r\n })\r\n .attr('stroke', d => {\r\n let color = 'none';\r\n if (d.cat2_cir == 0) {\r\n color = 'none';\r\n }\r\n else if (d.cat2_cir == 1) {\r\n color = this.cat2_color;\r\n }\r\n return color;\r\n })\r\n .attr('stroke-width', 3)\r\n .append('svg:title')\r\n .text((d, i) => d[\"category_2\"]);\r\n\r\n // circles for category 3\r\n line_circles.append('circle')\r\n .attr('cx', d => this.xScale(d.time) + this.xScale.bandwidth() / 2)\r\n .attr('cy', d => this.yScale(d.category_3))\r\n .attr('r', this.radius)\r\n .attr('fill', d => {\r\n let color = 'none';\r\n if (d.cat3_cir == 0) {\r\n color = 'none';\r\n }\r\n else if (d.cat3_cir == 1) {\r\n color = this.cat3_color;\r\n }\r\n return color;\r\n })\r\n .attr('stroke', d => {\r\n let color = 'none';\r\n if (d.cat3_cir == 0) {\r\n color = 'none';\r\n }\r\n else if (d.cat3_cir == 1) {\r\n color = this.cat3_color;\r\n }\r\n return color;\r\n })\r\n .attr('stroke-width', 3)\r\n .append('svg:title')\r\n .text((d, i) => d[\"category_3\"]);\r\n }\r\n\r\n // Lines\r\n renderLine() {\r\n // const lineGroups = this.chart.selectAll()\r\n // .data(this.viewData)\r\n // .enter()\r\n // .append('g');\r\n\r\n var temp = this.chart.selectAll(\".temp\")\r\n .data(this.viewData)\r\n .enter().append(\"g\")\r\n .attr(\"class\", \"temp\");\r\n\r\n let line = d3.line()\r\n .x((d: any) => this.xScale(d.time) + this.xScale.bandwidth() / 2)\r\n .y((d: any) => this.yScale(d.category_1));\r\n // .curve(d3.curveCatmullRom.alpha(1));\r\n\r\n // Category line 1 STARTS\r\n const line_category1 = line.y((d: any) => this.yScale(d.category_1));\r\n this.chart.append(\"path\")\r\n .attr(\"fill\", \"none\")\r\n .attr(\"stroke-width\", this.line_stroke_width)\r\n .attr(\"opacity\", \"1\")\r\n .attr(\"stroke\", this.cat1_color)\r\n .attr(\"d\", line_category1(this.viewData))\r\n .attr(\"filter\", \"url(#dropshadow)\");\r\n \r\n // Category line 2 STARTS\r\n const line_category2 = line.y((d: any) => this.yScale(d.category_2));\r\n this.chart.append(\"path\")\r\n .attr(\"fill\", \"none\")\r\n .attr(\"stroke-width\", this.line_stroke_width)\r\n .attr(\"opacity\", \"1\")\r\n .attr(\"stroke\", this.cat2_color)\r\n .attr(\"d\", line_category2(this.viewData))\r\n .attr(\"filter\", \"url(#dropshadow)\");\r\n \r\n // Category line 3 STARTS\r\n const line_category3 = line.y((d: any) => this.yScale(d.category_3));\r\n this.chart.append(\"path\")\r\n .attr(\"fill\", \"none\")\r\n .attr(\"stroke-width\", this.line_stroke_width)\r\n .attr(\"opacity\", \"1\")\r\n .attr(\"stroke\", this.cat3_color)\r\n .attr(\"d\", line_category3(this.viewData))\r\n .attr(\"filter\", \"url(#dropshadow)\");\r\n\r\n }\r\n\r\n renderXAxis() {\r\n this.chart.append('g')\r\n .attr('transform', `translate(0, ${this.height + 4})`)\r\n .call(d3.axisBottom(this.xScale).tickSizeOuter(0))\r\n .call(d => {\r\n d.selectAll(\"path\").remove();\r\n d.selectAll(\"line\").remove();\r\n d.selectAll(\"text\")\r\n //.each(this.insertLinebreak)\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"font-size\", \"10px\");\r\n });\r\n\r\n }\r\n\r\n renderShadowpath() {\r\n /* For the drop shadow filter... */\r\n var defs = this.svg.append(\"defs\");\r\n var filter = defs.append(\"filter\")\r\n .attr(\"id\", \"dropshadow\");\r\n filter.append(\"feGaussianBlur\")\r\n .attr(\"in\", \"SourceAlpha\")\r\n .attr(\"stdDeviation\", 1)\r\n .attr(\"result\", \"blur\");\r\n filter.append(\"feOffset\")\r\n .attr(\"in\", \"blur\")\r\n .attr(\"dx\", 3)\r\n .attr(\"dy\", 3)\r\n .attr(\"result\", \"offsetBlur\");\r\n\r\n filter.append(\"feFlood\")\r\n .attr(\"in\", \"offsetBlur\")\r\n .attr(\"flood-color\", \"#00000017\")\r\n .attr(\"flood-opacity\", \"1\")\r\n .attr(\"result\", \"offsetColor\");\r\n\r\n filter.append(\"feComposite\")\r\n .attr(\"in\", \"offsetColor\")\r\n .attr(\"in2\", \"offsetBlur\")\r\n .attr(\"operator\", \"in\")\r\n .attr(\"result\", \"offsetBlur\");\r\n\r\n var feMerge = filter.append(\"feMerge\");\r\n\r\n feMerge.append(\"feMergeNode\")\r\n .attr(\"in\", \"offsetBlur\")\r\n feMerge.append(\"feMergeNode\")\r\n .attr(\"in\", \"SourceGraphic\");\r\n }\r\n\r\n renderYAxis() {\r\n this.chart.append('g')\r\n .attr('transform', `translate(${this.svgWidth}, 0)`)\r\n .attr('class', 'y-axis')\r\n // .call(d3.axisLeft(this.yScale).tickPadding(10).tickSizeOuter(0))\r\n .call(d => {\r\n d.selectAll(\"path\")\r\n .attr(\"stroke\", \"#E4E4E4\")\r\n d.selectAll(\"line\").remove();\r\n d.selectAll(\"text\").remove();\r\n });\r\n }\r\n\r\n renderYGridLines() {\r\n const makeYLines = () => d3.axisLeft(this.yScale).tickPadding(10)\r\n .ticks(6);\r\n const grid = this.chart.append('g')\r\n .attr('class', 'grid')\r\n .call(makeYLines().tickSize(-this.width))\r\n .call(d => d.select(\".domain\").attr(\"stroke\", \"#E4E4E4\"));\r\n\r\n grid.selectAll(\"line\")\r\n .attr(\"stroke\", \"#E4E4E4\");\r\n\r\n grid.selectAll(\"text\")\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"font-size\", \"10px\");\r\n\r\n }\r\n\r\n renderXAxisText() {\r\n this.chart.append(\"text\")\r\n .attr(\"transform\",\r\n \"translate(\" + ((this.width / 2) - 70) + \" ,\" +\r\n (this.height + this.margin.top + 25) + \")\")\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"font-family\", \"sans-serif Medium\")\r\n .attr(\"font-size\", \"14px\")\r\n .text(this.xAxisText);\r\n }\r\n\r\n renderYAxisText() {\r\n this.chart.append(\"text\")\r\n .attr(\"transform\", \"rotate(-90)\")\r\n .attr(\"y\", 0 - this.margin.left + 25)\r\n .attr(\"x\", 0 - (this.height / 2))\r\n .attr(\"dy\", \"1em\")\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"font-family\", \"sans-serif Medium\")\r\n .attr(\"font-size\", \"14px\")\r\n .text(this.yAxisText);\r\n }\r\n\r\n renderLegendCircle() {\r\n this.svg.append(\"g\")\r\n .attr(\"transform\", `translate(${this.width / 3 + 145} , ${this.height + 90})`)\r\n .selectAll(\"myLegends\")\r\n .data(this.legends)\r\n .join(\"circle\")\r\n .attr(\"cx\", (d, i) => -i * 120 + 60)\r\n .attr(\"cy\", 5)\r\n .attr(\"r\", 5)\r\n .style(\"fill\", (d, i) => this.legendColors[i])\r\n }\r\n\r\n renderLegendText() {\r\n this.svg\r\n .append(\"g\")\r\n .attr(\"transform\", `translate(${this.width / 3 + 150} , ${this.height + 90})`)\r\n .selectAll(\"mylabels\")\r\n .data(this.legends)\r\n .join(\"text\")\r\n .attr(\"x\", (d, i) => -i * 120 + 60)\r\n .attr(\"y\", 5)\r\n .text((d, i) => d)\r\n .attr(\"text-anchor\", \"left\")\r\n .style(\"alignment-baseline\", \"central\")\r\n .style(\"font-size\", \"12px\")\r\n .style(\"font-family\", \"sans-serif\")\r\n }\r\n\r\n getXScale() {\r\n return d3.scaleBand()\r\n .range([0, this.width])\r\n .domain(this.viewData.map((d) => d.time))\r\n .padding(0.4);\r\n }\r\n\r\n getYScale() {\r\n return d3.scaleLinear()\r\n .rangeRound([this.height, 0])\r\n .domain([0, Math.round(Math.max(Math.max(...this.data.map(o => o.category_1), 0), Math.max(...this.data.map(o => o.category_2), 0), Math.max(...this.data.map(o => o.category_3), 0)) * 1.2)]);\r\n }\r\n\r\n getSVG() {\r\n return common.getSVG(this.selector, this.svgWidth, this.svgHeight);\r\n }\r\n\r\n transformData(): any[] {\r\n return this.data.slice((this.page - 1) * this.barnumber, this.page * this.barnumber);\r\n }\r\n\r\n nextPage(pageCount: number) {\r\n this.page = pageCount;\r\n this.viewData = this.data.slice((this.page - 1) * this.barnumber, this.page * this.barnumber);\r\n this.drawGraph();\r\n }\r\n\r\n prevPage(pageCount: number) {\r\n this.page = pageCount;\r\n this.viewData = this.data.slice((this.page - 1) * this.barnumber, this.page * this.barnumber);\r\n this.drawGraph();\r\n }\r\n\r\n getData(): any {\r\n this.ajWebService.getTicketVolume(this.opportunityId).subscribe(usageData => {\r\n if (usageData != undefined) {\r\n this.totalOccurencesValues = usageData[\"AttributeUsage\"].find(x => x.AttributeName == \"Total Occurrences\")[\"UsageValues\"];\r\n this.automatedPartiallyValues = usageData[\"AttributeUsage\"].find(x => x.AttributeName == \"Automated Partially\")[\"UsageValues\"];\r\n this.automatedFullyValues = usageData[\"AttributeUsage\"].find(x => x.AttributeName == \"Automated Fully\")[\"UsageValues\"];\r\n\r\n let monthYear: String = '';\r\n let finalData = [];\r\n for (var i = 1; i <= 12; i++) {\r\n monthYear = this.monthsList[this.currentDate.getMonth() + i] != undefined ? this.monthsList[this.currentDate.getMonth() + i] + this.yearsList[0] : this.monthsList[this.currentDate.getMonth() + i - 12] + this.yearsList[1];\r\n finalData.push({\r\n \"time\": monthYear.substr(0, 3) + \" \" + monthYear.substr(3, 2),\r\n \"value\": 0,\r\n \"category_1\": this.totalOccurencesValues.find(x => x.Month == monthYear.substr(0, 3) + \" \" + monthYear.substr(3, 2)) != undefined ? this.totalOccurencesValues.find(x => x.Month == monthYear.substr(0, 3) + \" \" + monthYear.substr(3, 2)).Value : 0,\r\n \"cat1_cir\": 1,\r\n \"category_2\": this.automatedPartiallyValues.find(x => x.Month == monthYear.substr(0, 3) + \" \" + monthYear.substr(3, 2)) != undefined ? this.automatedPartiallyValues.find(x => x.Month == monthYear.substr(0, 3) + \" \" + monthYear.substr(3, 2)).Value : 0,\r\n \"cat2_cir\": 1,\r\n \"category_3\": this.automatedFullyValues.find(x => x.Month == monthYear.substr(0, 3) + \" \" + monthYear.substr(3, 2)) != undefined ? this.automatedFullyValues.find(x => x.Month == monthYear.substr(0, 3) + \" \" + monthYear.substr(3, 2)).Value : 0,\r\n \"cat3_cir\": 1\r\n })\r\n }\r\n this.data = finalData;\r\n this.drawGraph();\r\n }\r\n },\r\n error => {\r\n this.ajWebService.showInfoMessage(error.toString());\r\n })\r\n }\r\n\r\n // @HostListener('window:resize', ['$event'])\r\n // onResize(event) {\r\n // common.clearSVG(this.selector);\r\n // this.drawGraph();\r\n // }\r\n}\r\n","\n\n
\n \n
","import { Component, OnDestroy, ViewChild, Input } from '@angular/core';\n\n\nimport { MsalService, MsalBroadcastService } from '@azure/msal-angular';\nimport { AJWebService } from '../services/ajWeb.service';\nimport { Subject, Subscription } from 'Rxjs';\nimport * as jwt_decode from \"jwt-decode\";\nimport { NgxSpinnerService } from \"ngx-spinner\";\n\ndeclare var bootbox: any;\n\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AppConfigService } from 'src/services/app-config.service';\nimport { HomeComponent } from 'src/components/home/home.component';\nimport { filter, sample, takeUntil } from 'rxjs/operators';\nimport { AuthenticationResult, AuthError, EventMessage, EventType } from '@azure/msal-browser';\nimport { data } from 'jquery';\n\ndeclare var userNotification: any;\n\nenum UserRoleType {\n AdminSuper = 'AA',\n AdminAccenture = 'AC',\n AdminAvanade = 'AV',\n PortfolioEditor = 'PE',\n PortfolioViewer = 'PV',\n DeliveryLeadEditor = 'DE',\n DeliveryLeadViewer = 'DV',\n ProjectManager = 'PM',\n TeamMember = 'TM',\n ConfigurationManager = 'CM'\n}\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.css']\n})\nexport class AppComponent implements OnDestroy {\n\n\n private readonly _destroying$ = new Subject();\n private subscription: Subscription;\n\n\n public E2E: any;\n\n\n\n public ProjectId: string;\n public isAuthorised: boolean;\n public isActive: boolean;\n public IsScopeApplied: boolean;\n\n public scopeSelectortoggle: boolean = false;\n //public roleType: UserRoleType;\n public contractOpportunityInitiativeGroups: any;\n public currentSelectedEndToEnd: any;\n public currentSelectedCMS: any;\n public currentSelectedWorkstream: any;\n public showReviewPortfolio: boolean;\n public showManageProject: boolean;\n public showExecuteTasks: boolean;\n public DeliveryConstructAttributeForCMS: any;\n\n public showScopeSelector: string = \"\";\n public clickedonheadervalues: boolean = true;\n public token: any;\n public environmentDetails: any;\n\n public isIframe: boolean;\n public payload_token: any;\n clientNameLimit: string;\n endToEndNameLimit: string;\n scopeDisplayTitleLimit: string;\n public AccessToEndToEndUIds = [];\n public EndToEnds = [];\n public OGSelectedValue : any;\n public OUSelectedValue : any;\n public CSGSelectedValue : any;\n public SelectedOG = null;\n public SelectedOU = null;\n public SelectedCSG = null;\n public FilteredEndToEndUIds :any;\n public ClientList: any;\n public ddData :any;\n //public OG:any;\n // public selectedValue :any;\n public dropDownData:any;\n public OGOUCSGDetails :any;\n public OGKeys = [];\n public OUKeys = []; \n public CSGKeys = [];\n public OG: any;\n public OU:any;\n public CSG:any;\n\n public Contracts :any;\n public OperatingGroup: any;\n public OperatingUnit: any;\n public ClientServiceGroup: any;\n // public OGSelectedValue : string=null;\n // public OUSelectedValue : string= null;\n // public CSGSelectedValue : string= null;\n\n constructor(public ajWebService: AJWebService, private broadcastService: MsalBroadcastService, private authMSALService: MsalService, private SpinnerService: NgxSpinnerService, private route: Router, private activatedRoute: ActivatedRoute, private appConfig: AppConfigService) {\n // This is to avoid reload during acquireTokenSilent() because of hidden iframe\n //this.ajWebService.endToEndUId = window.location.href.substr(window.location.href.lastIndexOf(':') + 1, 10);\n //localStorage.setItem(\"endToEndUId\", this.ajWebService.endToEndUId);\n this.isIframe = window !== window.parent && !window.opener;\n\n this.ajWebService.CMSUId = ((this.currentSelectedCMS != undefined && this.currentSelectedCMS.CMSUId != undefined) ? this.currentSelectedCMS.CMSUId : \"null\");\n this.ajWebService.WorkstreamUId = ((this.currentSelectedWorkstream != undefined && this.currentSelectedWorkstream.WorkstreamUId != undefined) ? this.currentSelectedWorkstream.WorkstreamUId : \"null\");\n //Cofidentiality Popup\n //this.initializeUserNotificationContent();\n }\n isLoggedIn(): boolean {\n\n return this.authMSALService.instance.getActiveAccount() != null\n }\n delay(ms: number) {\n return new Promise(resolve => setTimeout(resolve, ms));\n }\n\n ngOnInit(): void {\n //userNotification.showUserNotificationModalPopup();\n\n this.environmentDetails = this.appConfig.environmentSettings;\n\n if (this.environmentDetails.MSALenabled == true) {\n console.log('************Welcome AJ PAM ******');\n //MSAL 2.0 code \n if (!this.isLoggedIn()) {\n console.log('************ user not logged in .. enter login details ******');\n this.authMSALService.instance.loginRedirect();\n this.authMSALService.instance.handleRedirectPromise().then(res => {\n if (res != null && res.account != null) {\n this.E2E='061eea39-86b2-4759-ad11-5f251f688d7f'\n sessionStorage.setItem('E2E', this.E2E);\n this.authMSALService.instance.setActiveAccount(res.account);\n console.log(res);\n const id_token = res.idToken;\n const access_token = res.accessToken;\n //'*****************....Sart....************************'\n\n //'******************...END....*************************'\n sessionStorage.setItem('token', JSON.stringify(id_token));\n this.payload_token = this.getDecodedAccessToken(id_token); // decodeing tokan here\n sessionStorage.setItem('userId', this.payload_token.preferred_username);\n //console.log('userName---', this.payload_token.preferred_username);\n this.ajWebService.enterpriseId = res.account.username.split('@')[0];\n localStorage.setItem('msal.idtoken', JSON.stringify(id_token));\n if (localStorage.getItem('msal.idtoken') != undefined && localStorage.getItem('msal.idtoken') != '')\n this.ajWebService.showConfidentialityMessage('You are using an Accenture proprietary tool (\"myWizard\"). You understand that this tool may contain ACCENTURE, CLIENT, OR VENDOR / PARTNER CONFIDENTIAL INFORMATION. You are obligated to adhere to applicable confidentiality obligations and Accenture’s policies, including Policy 69 – Confidentiality, when using the tool and information in the tool. Information in the tool can only be shared with those authorized to receive it. If you are downloading/exporting Confidential Information to another file or report, you must label that file or report as Accenture Confidential. If you have any questions, please email your question to confidentiality@accenture.com or contact your Leadership. Thank you!');\n\n if (id_token != undefined && id_token != '') {\n this.loadClientHierarchy();\n }\n else {\n console.log('*****id_token check id_token!=undefined && id_token************');\n }\n }\n }).catch(error => {\n console.error(error);\n });\n }\n else {\n console.log('*****User Already login************');\n this.E2E='061eea39-86b2-4759-ad11-5f251f688d7f'\n sessionStorage.setItem('E2E', this.E2E);\n if (localStorage.getItem('msal.idtoken') != undefined && localStorage.getItem('msal.idtoken') != '')\n this.ajWebService.showConfidentialityMessage('You are using an Accenture proprietary tool (\"myWizard\"). You understand that this tool may contain ACCENTURE, CLIENT, OR VENDOR / PARTNER CONFIDENTIAL INFORMATION. You are obligated to adhere to applicable confidentiality obligations and Accenture’s policies, including Policy 69 – Confidentiality, when using the tool and information in the tool. Information in the tool can only be shared with those authorized to receive it. If you are downloading/exporting Confidential Information to another file or report, you must label that file or report as Accenture Confidential. If you have any questions, please email your question to confidentiality@accenture.com or contact your Leadership. Thank you!');\n\n this.token = localStorage.getItem(\"msal.idtoken\");\n this.payload_token = this.getDecodedAccessToken(this.token); // decodeing tokan here\n this.ajWebService.enterpriseId = this.payload_token.preferred_username.split('@')[0];\n this.loadClientHierarchy();\n } \n }\n else {\n //this.E2E = window.location.href.split(\"/\").pop();\n this.E2E='061eea39-86b2-4759-ad11-5f251f688d7f'\n sessionStorage.setItem('E2E', this.E2E);\n this.ajWebService.enterpriseId = 'pravalika.pogula';\n this.loadClientHierarchy();\n // this.getOGOUCSG(this.ajWebService.enterpriseId);\n\n //this.populateClientDetails();\n //this.route.navigate([\"/home\"]);\n }\n //this.getOGOUCSG(this.ajWebService.enterpriseId);\n this.ddData= [{\"id\":1, Name:'pravalika'}, {\"id\":1, Name:\"pravalika1\"},{\"id\":1, \"Name\":\"pravalika2\"}]\n // this.selectedValue= \"1\";\n }\n\n getOGOUCSG(data) {\n this.SpinnerService.show();\n this.OGOUCSGDetails = data.OGOUCSGDetails;\n var obj=this;\n obj.OG = \"\";\n obj.OU=\"\";\n obj.CSG=\"\";\n obj.OGKeys=[]; \n obj.OUKeys=[];\n obj.CSGKeys=[];\n this.OGOUCSGDetails.forEach((item) => {\n if (obj.OG == \"\" && item.OG != \"\") {\n obj.OG = [item.OG];\n obj.OGKeys.push(item.OG);\n }\n if (obj.OGKeys.indexOf(item.OG) === -1 && item.OG != \"\") {\n obj.OGKeys.push(item.OG);\n obj.OG.push(item.OG);\n }\n\n if (obj.OU == \"\" && item.OU != \"\") {\n obj.OU = [item.OU];\n obj.OUKeys.push(item.OU);\n }\n if (obj.OUKeys.indexOf(item.OU) === -1 && item.OU != \"\") {\n obj.OUKeys.push(item.OU);\n obj.OU.push(item.OU);\n }\n\n if (obj.CSG == \"\" && item.CSG != \"\") {\n obj.CSG = [item.CSG];\n obj.CSGKeys.push(item.CSG);\n }\n\n if (obj.CSGKeys.indexOf(item.CSG) === -1 && item.CSG != \"\") {\n obj.CSGKeys.push(item.CSG);\n obj.CSG.push(item.CSG);\n } \n })\n\n \n this.OperatingGroup = obj.OG.sort();//OGOUCSGData;\n this.OperatingUnit =obj.OU.sort();//OGOUCSGData;;\n this.ClientServiceGroup =obj.CSG.sort(); \n }\n \n\n loadClientHierarchy() {\n this.getClientHierarchy(\"loadScopeSelector\");\n }\n getClientHierarchy(arg0: string) {\n var obj = this;\n this.SpinnerService.show();\n this.ajWebService.endToEndUId = this.E2E; \n this.ajWebService.getClientHierarchy(obj.ajWebService.enterpriseId, obj.ajWebService.endToEndUId.toLowerCase(), null)\n .subscribe(data => {\n this.Contracts = data;\n this.getALLEndToEnd(obj.Contracts);\n this.LoadSummaryGraphAndDDL(obj.EndToEnds,obj.AccessToEndToEndUIds, obj.OGSelectedValue, obj.OUSelectedValue, obj.CSGSelectedValue);\n this.SpinnerService.hide();\n },\n error => {\n this.SpinnerService.hide();\n console.log(error)\n })\n }\n LoadSummaryGraphAndDDL(EndToEnds,AccessToEndToEndUIds, selectedOG, selectedOU, selectedCSG) \n { \n this.SpinnerService.show();\n var obj= this;\n obj.ajWebService.GetSavingsDetails(AccessToEndToEndUIds, selectedOG, selectedOU, selectedCSG)\n .subscribe(data => {\n this.getOGOUCSG(data);\n this.SpinnerService.show();\n obj.ajWebService.getReport(EndToEnds.slice(0, 3)).subscribe(data => {\n this.ClientList=JSON.parse(data as string);\n this.SpinnerService.hide();\n },\n error => {\n this.SpinnerService.hide();\n console.log(error)\n })\n // this.SpinnerService.hide();\n },\n error => {\n this.SpinnerService.hide();\n console.log(error)\n })\n \n \n }\n\n getALLEndToEnd(Contracts: any) {\n var obj= this;\n Contracts.Clients.forEach((client, key) => {\n client.ContractOpportunityInitiativeGroups.forEach((COIG, key) => {\n if (COIG.IsGroup == true) {\n COIG.ContractOpportunityInitiatives.forEach((COI,key) => {\n if (obj.AccessToEndToEndUIds.indexOf(COI.EndToEndUId.toLowerCase()) == -1) {\n obj.AccessToEndToEndUIds.push(COI.EndToEndUId.toLowerCase());\n obj.EndToEnds.push({\n 'EndToEndUId': COI.EndToEndUId, 'EndToEndName': COI.EndToEndRefCode != '' ? COI.EndToEndName + '-' + COI.EndToEndRefCode: COI.EndToEndName, 'ClientName': client.Name\n });\n }\n \n })\n }\n else{\n if (obj.AccessToEndToEndUIds.indexOf(COIG.EndToEndUId.toLowerCase()) == -1) {\n obj.AccessToEndToEndUIds.push(COIG.EndToEndUId.toLowerCase());\n obj.EndToEnds.push({ 'EndToEndUId': COIG.EndToEndUId, 'EndToEndName': COIG.EndToEndRefCode != '' ? COIG.EndToEndName + '-' + COIG.EndToEndRefCode : COIG.EndToEndName, 'ClientName': client.Name });\n }\n\n }\n })\n }\n )}\n\n OGbehaviour(selectedData){\n this.OGSelectedValue = this.SelectedOG= selectedData;\n this.LoadSummaryGraphAndDDL(this.EndToEnds,this.AccessToEndToEndUIds, this.OGSelectedValue, this.OUSelectedValue, this.CSGSelectedValue);\n }\n\n OUbehaviour(selectedData){\n this.OUSelectedValue= this.SelectedOU = selectedData;\n this.LoadSummaryGraphAndDDL(this.EndToEnds,this.AccessToEndToEndUIds, this.OGSelectedValue, this.OUSelectedValue, this.CSGSelectedValue);\n }\n\n CSGbehaviour(selectedData){\n this.CSGSelectedValue =this.SelectedCSG=selectedData;\n this.LoadSummaryGraphAndDDL(this.EndToEnds,this.AccessToEndToEndUIds, this.OGSelectedValue, this.OUSelectedValue, this.CSGSelectedValue);\n }\n\n \n\n\n getDecodedAccessToken(token: string): any {\n try {\n return jwt_decode(token);\n } catch (e) {\n //console.log(e);\n return null;\n\n }\n }\n\n logout() {\n sessionStorage.clear();\n localStorage.clear();\n this.authMSALService.logout();\n }\n ngOnDestroy() {\n this.broadcastService.msalSubject$;\n if (this.subscription)\n this.subscription.unsubscribe();\n }\n\n\n \n}\n","\n\n
\n\n
\n\n \"accenture\"\n\n \"myWizard\"\n\n
\n\n
\n\n\n\n \n\n \n\n \n\n

{{ajWebService.enterpriseId}}

\n\n
\n\n \n\n
\n\n \n\n\n\n
\n\n\n
\n
\n Automation Value Portfolio Report\n
\n
\n\n\n
\n
\n \n
\n
\n\n\n\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n\n
\n
\n \n
\n
\n
\n
\n
\n
\n\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n
\n Clients\n \n End-to-end projects\n \n FTE's\n \n Opportunities\n
\n
\n
Plan | Actual | Total
\n
\n Savings (M$)\n
\n
\n
Plan | Actual | Total
\n
\n # of myWizard Assets\n
\n
\n {{opp.ClientName}}\n
\n
\n
\n {{opp.EndToEndName}}\n
\n
\n
\n {{opp.FTE}}\n
\n
\n
\n \n
{{opp.OpportunitiesPlan | number}} | {{opp.OpportunitiesActual | number}} | {{opp.OpportunitiesTotal | number}}
\n \n
\n
\n
\n \n
{{opp.SavingPlan | number : '1.2-2'}} | {{opp.SavingActual | number : '1.2-2'}} | {{opp.SavingTotal | number : '1.2-2'}}
\n \n \n
\n
\n
\n {{opp.Asset}}\n
\n
\n\n
\n
\n \n
\n \n \n
\n
\n
\n\n\n

Loading data...

\n\n
\n\n\n","import { Component, OnInit, HostListener } from '@angular/core';\r\nimport * as d3 from \"d3\";\r\nimport { common } from 'src/app/common/common';\r\n\r\n@Component({\r\n selector: 'mri-bulletsavinghrs-chart',\r\n templateUrl: './savinghrs-bullet-chart.component.html',\r\n styleUrls: ['./savinghrs-bullet-chart.component.scss']\r\n})\r\nexport class SavingHrsBulletChartComponent implements OnInit {\r\n\r\n data: any;\r\n selector = \"bullet-chart-section-savinghrs\";\r\n margin = { top: 10, bottom: 20, left: 10, right: 10 };\r\n svg: any;\r\n width: number;\r\n height: number;\r\n graphWidth: number;\r\n chart: any;\r\n bar_width =8;\r\n rx = this.bar_width / 2;\r\n ry = this.bar_width / 2;\r\n rangeVal = [50, 40, 30, 20, 10];\r\n rangeColor = ['#F0F0F1', '#e3e6e8', '#cbd0d6', '#bac0cc', '#aab0bd'];\r\n legendKey = [\"Planned\", \"Completed\"];\r\n legendColor = [\"#9657D5\", \"#B95FD2\"];\r\n xAxisLabel = \"Total Savings ($)\";\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n //common.clearSVG(this.selector);\r\n this.drawGraph();\r\n }\r\n\r\n getData() {\r\n return [{ \r\n \"title\":\"Actual\",\r\n \"measures\": 9,\r\n \"markers\": 15\r\n }];\r\n }\r\n\r\n renderSVGContainer() {\r\n let elem = (\r\n document.getElementsByClassName(this.selector)[0]\r\n );\r\n elem.innerHTML = \"\";\r\n this.width = 190; // elem.offsetWidth-20 ;\r\n\r\n this.height = 80 ;\r\n\r\n this.svg = common.getSVG(this.selector, this.width - 20, this.height-10);\r\n\r\n this.graphWidth = this.width;\r\n // this.svg = common.getSVG(this.selector, '80', '80');\r\n\r\n // this.width = 100 //elem.offsetWidth - this.margin.left - this.margin.right;\r\n // this.height = 100; //elem.offsetHeight - this.margin.top - this.margin.bottom;\r\n\r\n // this.graphWidth = 100;\r\n }\r\n\r\n xScale() {\r\n return d3.scaleLinear()\r\n .range([0, this.graphWidth])\r\n .domain([0, 50])\r\n .nice();\r\n }\r\n\r\n yScale() {\r\n return d3.scaleBand()\r\n .range([0, this.height])\r\n .padding(0.2);\r\n }\r\n\r\n renderChartContainer() {\r\n return this.chart = this.svg\r\n .append(\"g\")\r\n .attr(\r\n \"transform\",\r\n \"translate(\" + [this.margin.left , this.margin.top - 70] + \")\"\r\n );\r\n }\r\n\r\n renderXAxis() {\r\n this.renderChartContainer().append(\"g\")\r\n .attr(\"transform\", `translate(0 , ${this.height + 10})`)\r\n .call(d3.axisBottom(this.xScale()).tickSizeOuter(0)\r\n .ticks(6).tickFormat( d => d > 0 ? d + 'K': '0K'))\r\n .call((d) => {\r\n d.selectAll(\"path\").remove();\r\n d.selectAll(\"line\").remove();\r\n d.selectAll(\"text\")\r\n .attr(\"font-size\", \"10px\")\r\n });\r\n }\r\n\r\n renderRangeRect() { \r\n var range = this.renderChartContainer()\r\n .selectAll()\r\n .data(this.rangeVal)\r\n .enter() \r\n .append(\"g\")\r\n \r\n range.append('rect')\r\n .attr('class', 'in-range')\r\n .attr(\"x\", -5)\r\n .attr('y', this.yScale().bandwidth() - this.rx * 2 - 2)\r\n .attr('height', this.bar_width * 3)\r\n .attr('width', (d) => this.xScale()(d) + 8)\r\n .attr('fill', (d, i) => this.rangeColor[i]); \r\n\r\n range.append('rect')\r\n .attr('class', 'out-range')\r\n .attr(\"x\", -5)\r\n .attr('y', this.yScale().bandwidth() - this.rx * 2 - 2)\r\n .attr('rx', this.rx)\r\n .attr('ry', this.ry)\r\n .attr('height', this.bar_width * 3)\r\n .attr('width', this.graphWidth + 8)\r\n .attr('fill', 'none')\r\n .attr('stroke', 'white')\r\n .attr('stroke-width', 8);\r\n }\r\n\r\n renderMeasure() {\r\n var mes = this.renderChartContainer()\r\n .selectAll()\r\n .data(this.data)\r\n .enter() \r\n .append(\"g\")\r\n .attr(\"class\", \"measure\")\r\n .style(\"fill\", this.legendColor[1]);\r\n \r\n mes.append(\"path\")\r\n .attr(\"d\", (d, i) => {\r\n return `M${0} ${this.yScale().bandwidth() - this.ry + 4}\r\n h${this.xScale()(d.measures) - this.rx}\r\n a${this.rx} ${this.ry} 0 0 1 ${this.rx} ${this.ry}\r\n v 4\r\n a${this.rx} ${this.ry} 0 0 1 ${-this.rx} ${this.ry}\r\n h${-(this.xScale()(d.measures) - this.rx)}Z`\r\n }\r\n )\r\n }\r\n\r\n renderMark() {\r\n let mark = this.renderChartContainer()\r\n .selectAll(\".marker\")\r\n .data(this.data)\r\n .enter()\r\n .append('g') \r\n .attr(\"class\", \"marker\")\r\n\r\n mark.append(\"line\")\r\n .attr(\"x1\", d => this.xScale()(d.markers))\r\n .attr(\"x2\", d => this.xScale()(d.markers))\r\n .attr(\"y1\", this.yScale().bandwidth() - this.bar_width + 2)\r\n .attr(\"y2\", this.yScale().bandwidth() + this.bar_width + 10)\r\n .attr(\"stroke-width\", 3)\r\n .attr(\"stroke\", this.legendColor[0])\r\n .attr('fill', this.legendColor[0]);\r\n }\r\n\r\n renderAxisText() {\r\n this.renderChartContainer().append(\"text\")\r\n .attr(\"transform\",\r\n \"translate(\" + (this.graphWidth / 2) + \" ,\" + (this.height + 70) + \")\")\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"font-family\", \"sans-serif Medium\")\r\n .attr(\"font-size\", \"12px\")\r\n .text(this.xAxisLabel);\r\n }\r\n\r\n\r\n renderLegend() {\r\n var nodeWidth = (d) => d.getBBox().width;\r\n const legend = this.renderChartContainer().append('g')\r\n .attr('class', 'legend')\r\n .attr('transform', 'translate(0,0)');\r\n\r\n const lg = legend.selectAll('g')\r\n .data(this.legendKey)\r\n .enter()\r\n .append('g')\r\n .attr(\"class\", (d,i) => \"circlelegend\"+i)\r\n\r\n lg.append('circle')\r\n .attr(\"id\", (d,i) => \"circle\"+i)\r\n .attr('fill', (d, i) => this.legendColor[i])\r\n .attr('cx', 0)\r\n .attr('cy', 0)\r\n .attr('r', 5)\r\n\r\n lg.append('text')\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"font-size\", \"11px\")\r\n .attr('fill', '#515151')\r\n .attr('x', 10)\r\n .attr('y', 5)\r\n .attr('dy', -1)\r\n .text((d, i) => this.legendKey[i]);\r\n\r\n let offset = 0;\r\n const self = this;\r\n lg.attr('transform', function (d, i) {\r\n let x = offset;\r\n offset += nodeWidth(this) + 10;\r\n return `translate(${x},${self.height + 10})`;\r\n });\r\n\r\n legend.attr('transform', function () {\r\n return `translate(${(self.graphWidth - nodeWidth(this)) / 2},${90})`\r\n }); \r\n }\r\n\r\n drawGraph() {\r\n this.data = this.getData();\r\n this.renderSVGContainer();\r\n this.renderXAxis();\r\n this.renderRangeRect();\r\n this.renderMeasure();\r\n this.renderMark();\r\n this.renderAxisText();\r\n this.renderLegend(); \r\n }\r\n\r\n // @HostListener(\"window:resize\", [\"$event\"])\r\n // onResize(event) {\r\n // common.clearSVG(this.selector);\r\n // this.drawGraph();\r\n // }\r\n}\r\n","\r\n
\r\n
\r\n
","import { Component, OnInit, HostListener, Input } from '@angular/core';\r\nimport * as d3 from 'd3';\r\nimport { common } from 'src/app/common/common';\r\nimport { AJWebService } from 'src/services/ajWeb.service';\r\n\r\n@Component({\r\n selector: 'fte-line-chart',\r\n templateUrl: './fte-line-chart.component.html',\r\n styleUrls: ['./fte-line-chart.component.scss']\r\n})\r\nexport class FTELineChartComponent implements OnInit {\r\n\r\n data: any;\r\n viewData = [];\r\n barnumber = 7;\r\n page = 1;\r\n margin = { top: 20, bottom: 180, left: 70, right: 50 };\r\n width: any;\r\n height: any;\r\n xScale: any;\r\n yScale: any;\r\n selector = 'fte-line-chart-section';\r\n color = \"#00F3FF\";\r\n xAxisText = \"Months\";\r\n yAxisText = \"Value(FTE)\";\r\n xscale_bw = 24;\r\n circle_stroke_width = 3;\r\n line_stroke_width = 2;\r\n circle_radius = 4;\r\n chart: any;\r\n svg: any;\r\n\r\n @Input() monthsList: any;\r\n @Input() yearsList: any;\r\n @Input() currentDate: any;\r\n @Input() opportunityId: any;\r\n public highestValue: number = 0;\r\n\r\n public fteValues: any[];\r\n\r\n constructor(public ajWebService: AJWebService) { }\r\n\r\n ngOnInit() {\r\n //common.clearSVG(this.selector);\r\n this.ajWebService.displaySavingsGraphPopUp.subscribe(opportunityId => {\r\n this.opportunityId = opportunityId;\r\n this.getData();\r\n }, error => {\r\n this.ajWebService.showErrorMessage(error);\r\n })\r\n }\r\n\r\n drawGraph() {\r\n //this.viewData = this.transformData();\r\n this.viewData = this.data;\r\n let elem = document.getElementsByClassName(this.selector)[0];\r\n elem.innerHTML = \"\";\r\n this.svg = this.getSVG(700, 300);\r\n this.width = 600; //elem.offsetWidth - this.margin.left - this.margin.right;\r\n this.height = 180; //450 - this.margin.top - this.margin.bottom;\r\n this.xScale = this.getXScale();\r\n this.yScale = this.getYScale();\r\n this.renderXAxis();\r\n this.renderYAxis();\r\n this.renderYAxisText();\r\n this.renderXAxisText();\r\n this.renderLine();\r\n this.renderPointCircles();\r\n }\r\n\r\n renderPointCircles() {\r\n const circleGroups = this.chart.selectAll()\r\n .data(this.viewData)\r\n .enter()\r\n .append('g');\r\n\r\n const circle_category2 = circleGroups.append(\"circle\")\r\n .attr(\"cx\", d => this.xScale(d.created_date))\r\n .attr(\"cy\", d => this.yScale(d.line_val))\r\n .attr(\"r\", this.circle_radius)\r\n .attr(\"fill\", this.color)\r\n .attr(\"stroke-width\", this.circle_stroke_width)\r\n .append('svg:title')\r\n .text((d) => d[\"line_val\"]);\r\n }\r\n\r\n renderLine() {\r\n const lineGroups = this.chart.selectAll()\r\n .data(this.viewData)\r\n .enter()\r\n .append('g');\r\n\r\n let line = d3.line()\r\n .x((d: any) => this.xScale(d.created_date))\r\n .y((d: any) => this.yScale(d.line_val));\r\n //.curve(d3.curveCatmullRom.alpha(1));\r\n\r\n // Category line STARTS\r\n lineGroups.append(\"path\")\r\n .attr(\"fill\", \"none\")\r\n .attr(\"stroke-width\", this.line_stroke_width)\r\n .attr(\"opacity\", \"1\")\r\n .attr(\"stroke\", this.color)\r\n .attr(\"d\", line(this.viewData));\r\n }\r\n\r\n renderXAxisText() {\r\n this.chart.append(\"text\")\r\n .attr(\"transform\",\r\n \"translate(\" + (this.width / 2) + \" ,\" +\r\n (this.height + this.margin.top + 50) + \")\")\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"font-family\", \"sans-serif Medium\")\r\n .attr(\"font-size\", \"12px\")\r\n .text(this.xAxisText);\r\n }\r\n\r\n renderYAxisText() {\r\n this.chart.append(\"text\")\r\n .attr(\"transform\", \"rotate(-90)\")\r\n .attr(\"y\", 0 - this.margin.left)\r\n .attr(\"x\", 0 - (this.height / 2))\r\n .attr(\"dy\", \"1em\")\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"font-family\", \"sans-serif Medium\")\r\n .attr(\"font-size\", \"12px\")\r\n .text(this.yAxisText);\r\n }\r\n\r\n renderXAxis() {\r\n this.chart = this.svg.append('g')\r\n .attr('class', 'svgstyle')\r\n .attr('transform', 'translate(' + [this.margin.left, this.margin.top] + ')');\r\n\r\n this.chart.append('g')\r\n .attr('transform', `translate(0, ${this.height})`)\r\n .call(d3.axisBottom(this.xScale).tickSizeOuter(0))\r\n .call(d => {\r\n d.selectAll(\"path\").remove();\r\n d.selectAll(\"line\").remove();\r\n d.selectAll(\"text\")\r\n .each(this.insertLinebreak)\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"font-size\", \"10px\");\r\n });\r\n }\r\n\r\n renderYAxis() {\r\n\r\n this.chart.append('g')\r\n .attr('transform', `translate(${this.width}, 0)`)\r\n .attr('class', 'y-axis')\r\n .call(d3.axisRight(this.yScale).tickPadding(10).tickSizeOuter(0))\r\n .call(d => {\r\n d.selectAll(\"path\")\r\n .attr(\"stroke\", \"#E4E4E4\")\r\n d.selectAll(\"line\").remove();\r\n d.selectAll(\"text\").remove();\r\n });\r\n\r\n const makeYLines = () => d3.axisLeft(this.yScale).tickPadding(10)\r\n .ticks(5);\r\n\r\n const grid = this.chart.append('g')\r\n .attr('class', 'grid')\r\n .call(makeYLines().tickSize(-this.width))\r\n .call(d => d.select(\".domain\").attr(\"stroke\", \"#E4E4E4\"));\r\n\r\n grid.selectAll(\"line\")\r\n .attr(\"stroke\", \"#E4E4E4\");\r\n\r\n grid.selectAll(\"text\")\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"font-size\", \"10px\");\r\n\r\n }\r\n\r\n getYScale() {\r\n return d3.scaleLinear()\r\n .rangeRound([this.height, 0])\r\n .domain([0, Math.round(Math.max(...this.data.map(o => o.line_val), 0) * 1.2)]).nice();\r\n }\r\n\r\n getXScale() {\r\n return d3.scalePoint()\r\n .range([0, this.width])\r\n .domain(this.viewData.map((d) => d.created_date))\r\n .padding(0);\r\n }\r\n\r\n getSVG(width: number, height: number) {\r\n return common.getSVG(this.selector, width, height);\r\n }\r\n\r\n transformData(): any[] {\r\n return this.data.slice((this.page - 1) * this.barnumber, this.page * this.barnumber);\r\n }\r\n\r\n getData(): any {\r\n this.ajWebService.GetSavingsValue(this.opportunityId).subscribe(savingsData => {\r\n if (savingsData != undefined) {\r\n this.fteValues = savingsData[\"AttributeValue\"].find(x => x.AttributeName == \"FTE\")[\"Values\"];\r\n\r\n let monthYear: String = '';\r\n let finalData = [];\r\n for (var i = 1; i <= 12; i++) {\r\n monthYear = this.monthsList[this.currentDate.getMonth() + i] != undefined ? this.monthsList[this.currentDate.getMonth() + i] + this.yearsList[0] : this.monthsList[this.currentDate.getMonth() + i - 12] + this.yearsList[1];\r\n finalData.push({\r\n \"created_date\": monthYear.substr(0, 3) + \" \" + monthYear.substr(3, 2),\r\n \"line_val\": this.fteValues.find(x => x.Month == monthYear.substr(0, 3) + \" \" + monthYear.substr(3, 2)) != undefined ? this.fteValues.find(x => x.Month == monthYear.substr(0, 3) + \" \" + monthYear.substr(3, 2)).Value : 0\r\n })\r\n }\r\n this.data = finalData;\r\n this.drawGraph();\r\n }\r\n },\r\n error => {\r\n console.log(error)\r\n })\r\n }\r\n\r\n insertLinebreak(d) {\r\n let labels = d3.select(this.selector);\r\n let words = d;\r\n labels.text('');\r\n\r\n let index = words.indexOf(' ', words.indexOf(' '))\r\n let title = words.substr(0, index)\r\n let subtitle = words.substr(index + 1)\r\n\r\n let tspantitle = labels.append('tspan').text(title)\r\n let tspansubtitle = labels.append('tspan').text(subtitle)\r\n tspantitle\r\n .attr('x', 0)\r\n .attr('dy', '15')\r\n tspansubtitle\r\n .attr('x', 0)\r\n .attr('dy', '16')\r\n };\r\n\r\n nextPage(pageCount: number) {\r\n this.page = pageCount;\r\n this.viewData = this.transformData();\r\n this.drawGraph();\r\n }\r\n\r\n prevPage(pageCount: number) {\r\n this.page = pageCount;\r\n this.viewData = this.transformData();\r\n this.drawGraph();\r\n }\r\n\r\n // @HostListener('window:resize', ['$event'])\r\n // onResize(event) {\r\n // common.clearSVG(this.selector);\r\n // this.drawGraph();\r\n // }\r\n}\r\n","\r\n
\r\n
\r\n
","import { Injectable } from '@angular/core';\r\nimport { HttpBackend, HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n//import { AppConfig } from '../auth/app.config';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppConfigService {\r\n public environmentSettings: any;\r\n private http: HttpClient;\r\n\r\n constructor(private readonly httpHandler: HttpBackend) {\r\n this.http = new HttpClient(httpHandler);\r\n }\r\n\r\n public init(endpoint: string): Promise {\r\n return new Promise((resolve, reject) => {\r\n this.http.get(endpoint).pipe(map(res => res)).subscribe(value => {\r\n this.environmentSettings = value;\r\n resolve(true);\r\n },\r\n (error) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n\r\n getSettings(key?: string | Array): any {\r\n if (!key || (Array.isArray(key) && !key[0]))\r\n return this.environmentSettings;\r\n\r\n if (!Array.isArray(key))\r\n key = key.split('.');\r\n\r\n let result = key.reduce((acc: any, current: string) => acc && acc[current], this.environmentSettings);\r\n return result;\r\n }\r\n}","import { BrowserModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\n// import { MsalModule, MsalInterceptor, MsalService } from '@azure/msal-angular';\nimport {\n MSAL_GUARD_CONFIG,\n // MSAL_CONFIG_ANGULAR,\n MsalGuardConfiguration\n , MsalService, MsalModule, MsalInterceptor, MSAL_INSTANCE, MsalGuard, MsalInterceptorConfiguration, MSAL_INTERCEPTOR_CONFIG, MsalBroadcastService\n} from '@azure/msal-angular';\nimport { Configuration } from 'msal';\nimport { HashLocationStrategy, LocationStrategy } from '@angular/common';\n\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\nimport { AJWebService } from '../services/ajWeb.service';\n\nimport { HomeComponent } from '../components/home/home.component';\nimport { DonutChartComponent } from '../DoNutGraph/donut-chart.component';\nimport { DonutChartTicketComponent } from '../DoNutTicketGraph/donut-chart.component';\nimport { BulletChartComponent } from '../BulletGraph/bullet-chart.component';\nimport { MultilineTopTrendingAssetsComponent } from '../Multiline-top-trending-assets/multiline-top-trending-assets.component';\nimport { StandardLineChartComponent } from '../4.0-standard-line-chart/standard-line-chart.component';\nimport { outcomes_TotSaving_BulletChartComponent } from '../outcomes_bulletChart/outcomes_TotSaving_bullet-chart.component';\nimport { UseCasesImplementationComponent } from '../useCasesImplementationChart/use-cases-implementation.component';\nimport { outcomes_TotEffort_BulletChartComponent } from '../outcomes_bulletChart/outcomes_TotEffort_bullet-chart.component';\nimport { ClusterBarChartTwoComponent } from '../use-Case-Imp-cluster-bar-chart-popup/useCasePopUp-cluster-bar-chart-two.component';\nimport { SavingHrsBulletChartComponent } from '../savinghrs-bullet-graph/savinghrs-bullet-chart.component';\nimport { MultilineTickVolTrendingAssetsComponent } from '../ticket-vol-multiline-graph/multiline-tickvol-trending-assets.component'\nimport { FTELineChartComponent } from '../fte-line-chart/fte-line-chart.component';\nimport { NgxSpinnerModule } from \"ngx-spinner\";\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { Ng2SearchPipeModule } from 'ng2-search-filter';\nimport { DatePickerModule } from '@syncfusion/ej2-angular-calendars';\nimport { SearchOLPipeComponent } from '../searchFilterPipe';\nimport { HeatMapChartComponent } from '../heat-map-chart/heat-map-chart.component';\nimport { HeatMapPopUpChartComponent } from '../heat-map-chart-popUp/heat-map-popup-chart.component';\nimport { CacheInterceptor } from '../shared/cache-interceptor';\nimport { TooltipModule } from 'node_modules/ng2-tooltip-directive';\nimport { SavingHrsBulletChartComponentCompSec } from '../BulletGraph_savinghrs-UnderCompletedSection/savinghrs-bullet-chart.CompSec.component';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { ClickOutsideModule } from 'ng-click-outside';\nimport { GovernanceComponent } from './governance/governance.component';\nimport { MsalApplicationModule } from './msal-application.module';\nimport { CommentBoxComponent } from '../comment-box/comment-box.component';\nimport { AssetProvisioningStatusComponent } from '../asset-provisioning-status/asset-provisioning-status.component';\n\n@NgModule({\n declarations: [\n AppComponent,\n HomeComponent,\n DonutChartComponent,\n DonutChartTicketComponent,\n outcomes_TotSaving_BulletChartComponent,\n MultilineTopTrendingAssetsComponent,\n StandardLineChartComponent,\n BulletChartComponent,\n outcomes_TotEffort_BulletChartComponent,\n UseCasesImplementationComponent,\n ClusterBarChartTwoComponent,\n MultilineTopTrendingAssetsComponent,\n StandardLineChartComponent,\n SavingHrsBulletChartComponent,\n MultilineTickVolTrendingAssetsComponent,\n FTELineChartComponent,\n SearchOLPipeComponent,\n HeatMapChartComponent,\n HeatMapPopUpChartComponent,\n SavingHrsBulletChartComponentCompSec,\n GovernanceComponent,\n CommentBoxComponent,\n AssetProvisioningStatusComponent\n ],\n imports: [\n MsalApplicationModule.forRoot('config/config.json'),\n FormsModule,\n BrowserModule,\n BrowserAnimationsModule,\n AppRoutingModule,\n HttpClientModule,\n MsalModule,\n DragDropModule,\n DatePickerModule,\n Ng2SearchPipeModule,\n NgxSpinnerModule,\n TooltipModule,\n ClickOutsideModule\n ],\n providers: [\n // {\n // provide: LocationStrategy,\n // useClass: HashLocationStrategy\n // },\n // {\n // provide: HTTP_INTERCEPTORS,\n // useClass: MsalInterceptor,\n // multi: true\n // },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: CacheInterceptor,\n multi: true\n },\n MsalService,\n AJWebService\n ],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","import { Component, HostListener, OnInit } from '@angular/core';\r\nimport { common } from 'src/app/common/common';\r\nimport * as d3 from 'd3';\r\nimport { json } from 'd3';\r\nimport { AJWebService } from 'src/services/ajWeb.service';\r\n\r\n@Component({\r\n selector: 'mri-use-cases-implementation',\r\n templateUrl: './use-cases-implementation.component.html',\r\n styleUrls: ['./use-cases-implementation.component.scss']\r\n})\r\nexport class UseCasesImplementationComponent implements OnInit {\r\n leftData: number[];\r\n rightData: number[];\r\n svg: any;\r\n viewData = [];\r\n type: any;\r\n selector = 'use-cases-implementation';\r\n selectorLegend = 'use-cases-implementation-legend';\r\n selector1 = 'x-axis__wrapper';\r\n total: any[];\r\n chart: any;\r\n data: any;\r\n xFrom: any;\r\n y: any;\r\n yScale: any;\r\n width: number;\r\n height: number;\r\n slice: any;\r\n slices: any;\r\n margin = { top: 20, bottom: 80, left: 70, right: 20 };\r\n maxValue = 0;\r\n public dataPresent: boolean = false;\r\n\r\n constructor(public ajWebService: AJWebService) { }\r\n\r\n ngOnInit() {\r\n let element = document.getElementsByClassName(this.selector)[0];\r\n this.width = element.offsetWidth - 20;\r\n this.height = 100;\r\n this.dataPresent = false;\r\n\r\n this.ajWebService.opportunityQueuesLoaded.subscribe(opportunityQueues => {\r\n this.data = this.ajWebService.opportunityQueues;\r\n let finalData = [];\r\n if (this.data != undefined && this.data.length > 0) {\r\n this.dataPresent = true;\r\n for (var i = 0; i < (this.data.length >= 4 ? 4 : this.data.length); i++) {\r\n finalData.push({\r\n \"type\": this.data[i][\"queueName\"],\r\n \"values\": [\r\n {\r\n \"value\": this.data[i].Complete.length,\r\n \"category\": \"Category 1\",\r\n \"recordNo\": i\r\n },\r\n {\r\n \"value\": this.data[i].Complete.length + this.data[i].InProgress.length,\r\n \"category\": \"Category 2\",\r\n \"recordNo\": i\r\n }\r\n ],\r\n \"volume\": this.data[i].InProgress.length + this.data[i].Complete.length,\r\n \"turnAroundTime\": this.data[i].Complete.length,\r\n \"total\": \"\"\r\n })\r\n if (this.data[i].InProgress.length + this.data[i].Complete.length > this.maxValue)\r\n this.maxValue = this.data[i].InProgress.length + this.data[i].Complete.length;\r\n }\r\n\r\n finalData = finalData.sort((a, b) => a.volume > b.volume ? 1 : -1);\r\n finalData.reverse();\r\n for (var i = 0; i < finalData.length; i++) {\r\n finalData[i][\"recordNo\"] = i;\r\n finalData[i].values[0][\"recordNo\"] = i;\r\n finalData[i].values[1][\"recordNo\"] = i;\r\n }\r\n finalData = finalData.sort((a, b) => a.recordNo > b.recordNo ? -1 : 1)\r\n var result = finalData.reduce((unique, o) => {\r\n if (!unique.some(obj => obj.type === o.type))\r\n unique.push(o);\r\n return unique;\r\n }, []);\r\n this.data = result;\r\n this.drawGraph();\r\n }\r\n else\r\n {\r\n element.innerHTML=\"\";\r\n }\r\n }, error => {\r\n this.ajWebService.showErrorMessage(error);\r\n })\r\n }\r\n\r\n drawGraph() {\r\n this.prepareData();\r\n this.renderXYaxis();\r\n this.renderBars();\r\n this.renderBarText();\r\n }\r\n\r\n renderXYaxis() {\r\n let noOfData = this.type.length ? this.type.length : 1;\r\n let chartHeight = 5 * noOfData;\r\n let elem_wrapper = document.getElementsByClassName(this.selector)[0];\r\n let elem = document.getElementsByClassName(this.selector)[0];\r\n elem.innerHTML = \"\";\r\n this.chart = common.getSVG(this.selector, elem_wrapper.offsetWidth + 50, elem_wrapper.offsetHeight);\r\n this.width = elem_wrapper.offsetWidth;\r\n this.height = chartHeight + 120;\r\n\r\n this.xFrom = d3.scaleLinear()\r\n .domain([d3.max(this.leftData) + 10, 0])\r\n .range([0, this.width / 2])\r\n .nice();\r\n\r\n this.yScale = d3.scaleBand()\r\n .domain(this.type)\r\n .rangeRound([10, this.height])\r\n .paddingInner(0.6);\r\n this.xFrom.range([0, this.width / 2]);\r\n }\r\n\r\n prepareData() {\r\n this.leftData = [];\r\n this.rightData = [];\r\n this.type = [];\r\n this.total = [];\r\n this.data.forEach(element => {\r\n this.leftData.push(element.volume);\r\n this.rightData.push(element.turnAroundTime);\r\n this.type.push(element.type);\r\n this.total.push(element.total);\r\n });\r\n\r\n }\r\n\r\n renderBars() {\r\n const rx = 6;\r\n const ry = 6;\r\n const gap = 22;\r\n this.chart.selectAll(\"rect.left\")\r\n .data(this.data)\r\n .enter().append('path')\r\n .attr('class', 'bar-left')\r\n .attr(\"d\", d => `\r\n M${this.width / 2 - gap - 2},${(d.recordNo * 45) + 22}\r\n h${d.volume > 0 ? ((rx - (this.width / 2 - this.xFrom(d.volume)))<=(-100)?(-100):((((rx - (this.width / 2 - this.xFrom(d.volume))) )<0 ?(rx - (this.width / 2 - this.xFrom(d.volume))):(-(rx - (this.width / 2 - this.xFrom(d.volume))))))) : 0}\r\n a${d.volume > 0 ? rx : 0},${d.volume > 0 ? ry : 0} 0 0 0 ${d.volume > 0 ? -rx : 0},${d.volume > 0 ? ry : 0}\r\n v 2\r\n a${d.volume > 0 ? rx : 0},${d.volume > 0 ? ry : 0} 0 0 0 ${d.volume > 0 ? rx : 0},${d.volume > 0 ? ry : 0}\r\n h${-(d.volume > 0 ? ((rx - (this.width / 2 - this.xFrom(d.volume)))<=(-100)?(-100):((((rx - (this.width / 2 - this.xFrom(d.volume))) )<0 ?(rx - (this.width / 2 - this.xFrom(d.volume))):(-(rx - (this.width / 2 - this.xFrom(d.volume))))))) : 0)}Z\r\n `)\r\n .attr('fill', \"#7235B1\");\r\n\r\n var xTo = d3.scaleLinear()\r\n .domain([0, d3.max(this.rightData) + 20])\r\n .range([0, this.width / 2])\r\n .nice();\r\n\r\n xTo.range([0, this.width / 2]);\r\n\r\n this.chart.selectAll(\"rect.right\")\r\n .data(this.data)\r\n .enter().append('path')\r\n .attr('class', 'bar')\r\n .attr(\"d\", d => `\r\n M${this.width / 2 + gap + 4},${(d.recordNo * 45) + 22}\r\n h${xTo(d.turnAroundTime) - (d.turnAroundTime > 0 ? rx : 0)}\r\n a${d.turnAroundTime > 0 ? rx : 0},${d.turnAroundTime > 0 ? ry : 0} 1 0 1 ${d.turnAroundTime > 0 ? rx : 0},${d.turnAroundTime > 0 ? ry : 0}\r\n v 2\r\n a${d.turnAroundTime > 0 ? rx : 0},${d.turnAroundTime > 0 ? ry : 0} 1 0 1 ${d.turnAroundTime > 0 ? -rx : 0},${d.turnAroundTime > 0 ? ry : 0}\r\n h${(d.turnAroundTime > 0 ? rx : 0) - (xTo(d.turnAroundTime))}Z\r\n `)\r\n .attr('fill', \"#DC30C5\");\r\n }\r\n\r\n renderBarText() {\r\n this.chart.selectAll(\"text.type\")\r\n .data(this.data)\r\n .enter().append(\"text\")\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"font-size\", \"9.5px\")\r\n .attr(\"x\", d => (this.width / 2))\r\n .attr(\"y\", d => (d.recordNo * 45) + 15)\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr('class', 'type-text')\r\n .attr('fill', '#4D4F5C')\r\n .text(d =>\r\n d.type + \"\" + d.total + \"\"\r\n );\r\n\r\n // this.chart.selectAll(\"text.total\")\r\n // .data(this.data)\r\n // .enter().append(\"text\")\r\n // .attr(\"font-family\", \"sans-serif\")\r\n // .attr(\"font-size\", \"10px\")\r\n // .attr(\"x\", d => (this.width / 2) + 23)\r\n // .attr(\"y\", d => this.yScale(d.type) + (this.yScale.bandwidth() / 2) + 15)\r\n // .attr(\"text-anchor\", \"end\")\r\n // .attr('class', 'type-text')\r\n // .attr('fill', '#4D4F5C')\r\n //.text(d => 'Total' + \" \" + d.total)\r\n\r\n this.renderSlices()\r\n .append(\"text\")\r\n .attr('transform', (d, i) => {\r\n if (d.category == 'Category 1')\r\n if (d.recordNo == 4)\r\n return `translate(${72} ${-12})`\r\n else\r\n return `translate(${72} ${-12})`\r\n else if (d.category == 'Category 2')\r\n if (d.recordNo == 4)\r\n return `translate(${52} ${-12})`\r\n else\r\n return `translate(${52} ${-12})`\r\n })\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"font-size\", \"12px\")\r\n .attr('fill', 'black')\r\n .text(d => {\r\n if (d[\"category\"] == \"Category 2\")\r\n return `${d.value + \" | \"}`\r\n else\r\n return `${d.value}`\r\n })\r\n }\r\n\r\n renderSlices() {\r\n return this.slices = this.renderSlice().selectAll(\"path\")\r\n .data(\r\n d => d.values\r\n )\r\n .enter();\r\n }\r\n\r\n renderSlice() {\r\n this.viewData = this.data;\r\n return this.slice = this.chart.selectAll(\".slice\")\r\n .data(this.viewData)\r\n .enter().append(\"g\")\r\n .attr(\"class\", \"g\")\r\n .attr(\"id\", \"groups\")\r\n .attr(\"transform\", d =>\r\n \"translate(\" + [this.margin.left + 5] + \",\" + (d.recordNo + 1) * 45 + \")\"\r\n )\r\n }\r\n\r\n xScale() {\r\n return d3.scaleLinear()\r\n .domain([0, 1.2 * this.maxValue]).nice()\r\n .range([0, this.width]);\r\n }\r\n\r\n y0Scale() {\r\n return d3.scaleBand()\r\n .range([this.height, 0])\r\n .domain(this.viewData.map((s) => s.month))\r\n .padding(0.1);\r\n }\r\n\r\n public getLegendSVG() {\r\n return d3.select(`#${this.selectorLegend}​​`)\r\n .append('svg')\r\n .attr('id', 'app-legend-svg')\r\n .attr('class', 'svg-legend-style')\r\n .attr('width', 100)\r\n .attr('height', 100)\r\n .append('g');\r\n }\r\n\r\n renderLegends() {\r\n let lables = [\"Defect\", \"Flag\", \"Good\"];\r\n let colors = [\"black\", \"red\", \"grey\"];\r\n\r\n const svg = this.getLegendSVG()\r\n .selectAll('lables')\r\n .data(lables)\r\n .enter()\r\n .attr(\"class\", \"legend\")\r\n .attr(\"transform\", \"translate(50,30)\")\r\n .style(\"font-family\", \"sans-serif\")\r\n .style(\"font-size\", \"12px\");\r\n\r\n let xPosition = 10;\r\n let yPosition = 20;\r\n let size = 20;\r\n svg.append('circle')\r\n .attr('cx', xPosition)\r\n .attr('cy', (d, i) => yPosition + i * (size + 5))\r\n .attr('r', 7)\r\n .style('fill', (d) => 'black');\r\n\r\n svg.append('text')\r\n .attr('x', xPosition + size * 1.2)\r\n .attr('y', (d, i) => yPosition + i * (size + 5) + (size / 2.5))\r\n .style('fill', 'black').text((d) => d).attr('text-anchor', 'left')\r\n .style('alignment-baseline', 'middle');\r\n }\r\n\r\n // @HostListener('window:resize', ['$event'])\r\n // onResize(event) {\r\n // common.clearSVG(this.selector);\r\n // this.drawGraph();\r\n // }\r\n}\r\n","\r\n
\r\n
\r\n
\r\n
    \r\n
  • Planned
  • \r\n
  • Completed
  • \r\n
\r\n
\r\n
","import { Component, HostListener, Input, OnInit } from '@angular/core';\r\nimport * as d3 from 'd3';\r\nimport { common } from 'src/app/common/common';\r\nimport { AJWebService } from 'src/services/ajWeb.service';\r\n\r\n@Component({\r\n selector: 'app-donut-chart-ticket',\r\n templateUrl: './donut-chart-ticket.component.html',\r\n styleUrls: ['./donut-chart-ticket.component.scss']\r\n})\r\n\r\nexport class DonutChartTicketComponent implements OnInit {\r\n dataset: any;\r\n @Input() chartIdSelector: string;\r\n @Input() opportunityId: number;\r\n\r\n public totalOccurencesCount: number;\r\n public fullyAutomatedCount: number;\r\n public partiallyAutomatedCount: number;\r\n public notAutomatedCount: number;\r\n\r\n width = 450;\r\n height = 450;\r\n margin = 30;\r\n radius: any;\r\n svg: any;\r\n labelValue = 'Total Resources';\r\n color = ['#67B7DC', '#DC67CE', '#DCDC67']; // automated fully, automated partially, not automated\r\n constructor(public ajWebService: AJWebService) { }\r\n\r\n ngOnInit() {\r\n this.opportunityId = +this.chartIdSelector.substring(this.chartIdSelector.lastIndexOf('-') + 1);\r\n this.displayGraph();\r\n this.ajWebService.ticketVolumeDataUpdated.subscribe(queueIdAndopportunityId => {\r\n this.chartIdSelector = queueIdAndopportunityId;\r\n this.opportunityId = +this.chartIdSelector.substring(this.chartIdSelector.lastIndexOf('-') + 1);\r\n this.displayGraph();\r\n }, error => {\r\n this.ajWebService.showErrorMessage(error);\r\n })\r\n }\r\n\r\n displayGraph() {\r\n common.clearSVG(this.chartIdSelector);\r\n this.width = 100;\r\n this.height = 100;\r\n this.getData();\r\n }\r\n\r\n getData() {\r\n this.ajWebService.getTicketVolume(this.opportunityId).subscribe(data => {\r\n if (data != undefined) {\r\n this.totalOccurencesCount = data[\"AttributeUsage\"].find(x => x.AttributeName == \"Total Occurrences\")[\"UsageValues\"].map(item => item.Value).reduce((prev, next) => prev + next);\r\n this.fullyAutomatedCount = data[\"AttributeUsage\"].find(x => x.AttributeName == \"Automated Fully\")[\"UsageValues\"].map(item => item.Value).reduce((prev, next) => prev + next);\r\n this.partiallyAutomatedCount = data[\"AttributeUsage\"].find(x => x.AttributeName == \"Automated Partially\")[\"UsageValues\"].map(item => item.Value).reduce((prev, next) => prev + next);\r\n this.notAutomatedCount = this.totalOccurencesCount - this.fullyAutomatedCount - this.partiallyAutomatedCount;\r\n this.dataset = [\r\n { count: this.fullyAutomatedCount, label: 'Automated Fully' },\r\n { count: this.partiallyAutomatedCount, label: 'Automated Partially' },\r\n { count: this.notAutomatedCount, label: 'Not Automated' },\r\n ];\r\n this.drawGraph();\r\n }\r\n },\r\n error => {\r\n this.ajWebService.showInfoMessage(error.toString());\r\n })\r\n }\r\n\r\n drawGraph() {\r\n //this.radius = (Math.min(this.width, this.height) / 2) - this.margin;\r\n this.radius = 30;\r\n this.svg = this.getSVG();\r\n this.renderPolyLineCircles();\r\n this.renderCenterTotalCountText();\r\n //this.renderCenterLable();\r\n this.renderLegends();\r\n\r\n let list = document.getElementsByClassName(\"ticketVolume\");\r\n if (list.length > 0)\r\n for (var i = 0; i < list.length; i++)\r\n if (i != 0)\r\n list.item(i).remove();\r\n }\r\n\r\n renderLegends() {\r\n let nodeWidth = (d) => d.getBBox().width;\r\n\r\n // adding outer g element\r\n const legend1And2 = this.svg.append('g')\r\n .attr('transform', 'translate(0,0)');\r\n const legend3 = this.svg.append('g')\r\n .attr('transform', 'translate(0,0)');\r\n\r\n // adding individual g elements for each legend\r\n const g1And2 = legend1And2.selectAll('g')\r\n .data(this.dataset)\r\n .enter()\r\n .append('g')\r\n \r\n\r\n // adding circles for legends\r\n let legendRadius1And2 = 5;\r\n g1And2.append('circle')\r\n .attr('fill', (d, i) => this.color[i])\r\n .attr('r', legendRadius1And2)\r\n .attr('id', (d, i) => \"legend1And2Circle-\" + i);\r\n \r\n // adding texts for legends\r\n g1And2.append('text')\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"font-size\", \"10px\")\r\n .attr('fill', '#000000')\r\n .attr(\"text-align\", \"centre\")\r\n .attr(\"x\", legendRadius1And2 + 2)\r\n .attr(\"dy\", \"0.3em\")\r\n .text(d => d.label)\r\n .attr('id', (d, i) => \"legend1And2Text-\" + i);\r\n \r\n let offset1And2 = -15;\r\n let height1And2 = this.height - 10;\r\n g1And2.attr('transform', function (d, i) {\r\n let y = offset1And2;\r\n offset1And2 += 10;\r\n return `translate(${65},${y + offset1And2})`;\r\n });\r\n \r\n }\r\n\r\n renderCenterLable() {\r\n this.svg.append('text')\r\n .attr('font-family', 'sans-serif Medium')\r\n .attr('font-size', '9px')\r\n .attr('dy', '2em')\r\n .attr('fill', '#B0B0B0')\r\n .attr('text-anchor', 'middle')\r\n .text(this.labelValue);\r\n }\r\n\r\n renderPolyLineCircles() {\r\n const mainArc = this.getMainArc();\r\n // Another arc that won't be drawn. Just for labels positioning\r\n let line_length = this.radius + 30,\r\n arc_outer_line = d3.arc()\r\n .innerRadius(line_length)\r\n .outerRadius(line_length);\r\n\r\n let arc_outer_value = d3.arc()\r\n .innerRadius(line_length + 18)\r\n .outerRadius(line_length + 18);\r\n\r\n const pie = d3.pie()\r\n .value((d: any) => d.count)\r\n .sort(null);\r\n\r\n const paths = this.svg.selectAll('g')\r\n .data(pie(this.dataset))\r\n .enter();\r\n\r\n // Add the polylines between chart and labels:\r\n // paths.append('polyline')\r\n // .attr('stroke', 'black')\r\n // .style('fill', 'none')\r\n // .attr('stroke-width', 1)\r\n // .attr('points', (d) => {\r\n // const posA = mainArc.centroid(d), posB = arc_outer_line.centroid(d);\r\n // return [posA, posB];\r\n // });\r\n\r\n // Add circle to the polyline\r\n // paths.append('circle')\r\n // .attr('r', 3)\r\n // .attr('transform', d => 'translate(' + arc_outer_line.centroid(d) + ')')\r\n // .attr('fill', (d, i) => this.color[i]);\r\n\r\n // Add values to the charts\r\n // paths.append('text')\r\n // .attr('transform', d => 'translate(' + arc_outer_value.centroid(d) + ')')\r\n // .attr('font-family', 'sans-serif')\r\n // .attr('font-size', '12px')\r\n // .attr('fill', '#B0B0B0')\r\n // .attr('dy', '.35em')\r\n // .attr('text-anchor', 'middle')\r\n // .text(d => d.value + '%');\r\n\r\n paths.append('path')\r\n .attr('d', mainArc)\r\n .attr('fill', (d, i) => this.color[i])\r\n .append('svg:title')\r\n .text(d =>\r\n Math.round(d.value)\r\n );\r\n }\r\n\r\n renderCenterTotalCountText() {\r\n this.svg.append('text')\r\n .attr('font-family', 'sans-serif Black')\r\n .attr('font-size', '15px')\r\n .attr('dy', '0.25em')\r\n .attr('fill', '#000000')\r\n .attr('text-anchor', 'middle')\r\n .text(this.totalOccurencesCount)\r\n .append('svg:title')\r\n .text(d =>\r\n \"Total Occurences\"\r\n );\r\n }\r\n\r\n getMainArc() {\r\n return d3.arc()\r\n .innerRadius(d => this.radius * 0.7)\r\n .outerRadius(d => this.radius - 0.2)\r\n .padAngle(0.025);\r\n }\r\n\r\n getSVG() {\r\n return common.getSVG(this.chartIdSelector, this.width + 200, this.height)\r\n .attr('class', 'ticketVolume')\r\n .append('g')\r\n .attr('transform', 'translate(' + (this.width - 60) +\r\n ',' + (this.height / 2.5) + ')');\r\n }\r\n // @HostListener('window:resize', ['$event'])\r\n // onResize(event) {\r\n // if (event) {\r\n // common.clearSVG(this.chartIdSelector);\r\n // this.drawGraph();\r\n // }\r\n // }\r\n}\r\n","
\r\n
\r\n
\r\n\r\n","import { Component, OnInit, Input } from '@angular/core';\nimport { AJWebService } from 'src/services/ajWeb.service';\n\n@Component({\n selector: 'app-comment-box',\n templateUrl: './comment-box.component.html',\n styleUrls: ['./comment-box.component.css']\n})\nexport class CommentBoxComponent implements OnInit {\n public comment:string=\"\";\n public existingComment:string=\"\";\n @Input() opportunityId: any;\n\n\n constructor(public ajWebService: AJWebService) { }\n\n ngOnInit(): void {\n this.ajWebService.displayComment.subscribe(opportunityId=>{\n this.opportunityId=opportunityId;\n this.getdata();\n },error=>{\n this.ajWebService.showErrorMessage(error);\n })\n }\n\n getdata(){\n this.ajWebService.GetComment(this.opportunityId).subscribe(response=>{\n this.comment=response;\n }, error=>{\n this.ajWebService.showErrorMessage(error);\n })\n }\n\n addComment(comment:string){\n if (comment.length<=500){\n this.ajWebService.AddComment(this.opportunityId,comment).subscribe(response=>{\n this.ajWebService.showSuccessMessage(\"Comment Saved\")\n }, error=>{\n this.ajWebService.showErrorMessage(error);\n }); \n }\n else{\n this.ajWebService.showErrorMessage(\"Comment Exceeds 500 Characters\")\n }\n }\n\n clearComment(){\n if(this.comment!=\"\"){\n this.comment = \"\";\n this.ajWebService.AddComment(this.opportunityId,this.comment).subscribe(response=>{\n var data = response;\n this.ajWebService.showSuccessMessage(\"Comment Cleared\");\n }, error=>{\n this.ajWebService.showErrorMessage(error);\n })\n }\n }\n}\n","
\n
Add comment
\n
\n \n \n \n
\n
","import { Component, OnInit, HostListener, Input } from '@angular/core';\r\nimport * as d3 from \"d3\";\r\nimport { common } from 'src/app/common/common';\r\n\r\n@Component({\r\n selector: 'mri-bulletsavinghrs-chart-cmpSec',\r\n templateUrl: './savinghrs-bullet-chart.CompSec.component.html',\r\n styleUrls: ['./savinghrs-bullet-chart.CompSec.component.scss']\r\n})\r\nexport class SavingHrsBulletChartComponentCompSec implements OnInit {\r\n @Input() chartIdSelector;\r\n data: any;\r\n //selector = \"bullet-chart-section-savinghrs\";\r\n margin = { top: 10, bottom: 20, left: 10, right: 10 };\r\n svg: any;\r\n width: number;\r\n height: number;\r\n graphWidth: number;\r\n chart: any;\r\n bar_width =8;\r\n rx = this.bar_width / 2;\r\n ry = this.bar_width / 2;\r\n rangeVal = [50, 40, 30, 20, 10];\r\n rangeColor = ['#F0F0F1', '#e3e6e8', '#cbd0d6', '#bac0cc', '#aab0bd'];\r\n legendKey = [\"Planned\", \"Completed\"];\r\n legendColor = [\"#9657D5\", \"#B95FD2\"];\r\n xAxisLabel = \"Total Savings ($)\";\r\n\r\n constructor() { }\r\n \r\n ngOnInit() {\r\n //common.clearSVG(this.chartIdSelector);\r\n this.drawGraph();\r\n }\r\n\r\n getData() {\r\n return [{ \r\n \"title\":\"Actual\",\r\n \"measures\": 9,\r\n \"markers\": 15\r\n }];\r\n }\r\n\r\n renderSVGContainer() {\r\n \r\n let elem = document.getElementById(this.chartIdSelector);\r\n // let elem = (\r\n // document.getElementsByClassName(this.chartIdSelector)[0]\r\n // );\r\n elem.innerHTML = \"\";\r\n this.width = 190; // elem.offsetWidth-20 ;\r\n //this.height = 170 ;\r\n this.height= this.height = elem.offsetHeight;\r\n this.svg = common.getSVG(this.chartIdSelector, this.width - 20, this.height);\r\n this.graphWidth = this.width;\r\n // this.svg = common.getSVG(this.selector, '80', '80');\r\n\r\n // this.width = 100 //elem.offsetWidth - this.margin.left - this.margin.right;\r\n // this.height = 100; //elem.offsetHeight - this.margin.top - this.margin.bottom;\r\n\r\n // this.graphWidth = 100;\r\n }\r\n\r\n xScale() {\r\n return d3.scaleLinear()\r\n .range([0, this.graphWidth])\r\n .domain([0, 50])\r\n .nice();\r\n }\r\n\r\n yScale() {\r\n return d3.scaleBand()\r\n .range([0, this.height])\r\n .padding(0.2);\r\n }\r\n\r\n renderChartContainer() {\r\n return this.chart = this.svg\r\n .append(\"g\")\r\n .attr(\r\n \"transform\",\r\n \"translate(\" + [this.margin.left , this.margin.top - 70] + \")\"\r\n );\r\n }\r\n\r\n renderXAxis() {\r\n this.renderChartContainer().append(\"g\")\r\n .attr(\"transform\", `translate(0 , ${this.height + 10})`)\r\n .call(d3.axisBottom(this.xScale()).tickSizeOuter(0)\r\n .ticks(6).tickFormat( d => d > 0 ? d + 'K': '0K'))\r\n .call((d) => {\r\n d.selectAll(\"path\").remove();\r\n d.selectAll(\"line\").remove();\r\n d.selectAll(\"text\")\r\n .attr(\"font-size\", \"10px\")\r\n });\r\n }\r\n\r\n renderRangeRect() { \r\n var range = this.renderChartContainer()\r\n .selectAll()\r\n .data(this.rangeVal)\r\n .enter() \r\n .append(\"g\")\r\n \r\n range.append('rect')\r\n .attr('class', 'in-range')\r\n .attr(\"x\", -5)\r\n .attr('y', this.yScale().bandwidth() - this.rx * 2 - 2)\r\n .attr('height', this.bar_width * 3)\r\n .attr('width', (d) => this.xScale()(d) + 8)\r\n .attr('fill', (d, i) => this.rangeColor[i]); \r\n\r\n range.append('rect')\r\n .attr('class', 'out-range')\r\n .attr(\"x\", -5)\r\n .attr('y', this.yScale().bandwidth() - this.rx * 2 - 2)\r\n .attr('rx', this.rx)\r\n .attr('ry', this.ry)\r\n .attr('height', this.bar_width * 3)\r\n .attr('width', this.graphWidth + 8)\r\n .attr('fill', 'none')\r\n .attr('stroke', 'white')\r\n .attr('stroke-width', 8);\r\n }\r\n\r\n renderMeasure() {\r\n var mes = this.renderChartContainer()\r\n .selectAll()\r\n .data(this.data)\r\n .enter() \r\n .append(\"g\")\r\n .attr(\"class\", \"measure\")\r\n .style(\"fill\", this.legendColor[1]);\r\n \r\n mes.append(\"path\")\r\n .attr(\"d\", (d, i) => {\r\n return `M${0} ${this.yScale().bandwidth() - this.ry + 4}\r\n h${this.xScale()(d.measures) - this.rx}\r\n a${this.rx} ${this.ry} 0 0 1 ${this.rx} ${this.ry}\r\n v 4\r\n a${this.rx} ${this.ry} 0 0 1 ${-this.rx} ${this.ry}\r\n h${-(this.xScale()(d.measures) - this.rx)}Z`\r\n }\r\n )\r\n }\r\n\r\n renderMark() {\r\n let mark = this.renderChartContainer()\r\n .selectAll(\".marker\")\r\n .data(this.data)\r\n .enter()\r\n .append('g') \r\n .attr(\"class\", \"marker\")\r\n\r\n mark.append(\"line\")\r\n .attr(\"x1\", d => this.xScale()(d.markers))\r\n .attr(\"x2\", d => this.xScale()(d.markers))\r\n .attr(\"y1\", this.yScale().bandwidth() - this.bar_width + 2)\r\n .attr(\"y2\", this.yScale().bandwidth() + this.bar_width + 10)\r\n .attr(\"stroke-width\", 3)\r\n .attr(\"stroke\", this.legendColor[0])\r\n .attr('fill', this.legendColor[0]);\r\n }\r\n\r\n renderAxisText() {\r\n this.renderChartContainer().append(\"text\")\r\n .attr(\"transform\",\r\n \"translate(\" + (this.graphWidth / 2) + \" ,\" + (this.height + 70) + \")\")\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"font-family\", \"sans-serif Medium\")\r\n .attr(\"font-size\", \"12px\")\r\n .text(this.xAxisLabel);\r\n }\r\n\r\n\r\n renderLegend() {\r\n var nodeWidth = (d) => d.getBBox().width;\r\n const legend = this.renderChartContainer().append('g')\r\n .attr('class', 'legend')\r\n .attr('transform', 'translate(0,0)');\r\n\r\n const lg = legend.selectAll('g')\r\n .data(this.legendKey)\r\n .enter()\r\n .append('g')\r\n .attr(\"class\", (d,i) => \"circlelegend\"+i)\r\n\r\n lg.append('circle')\r\n .attr(\"id\", (d,i) => \"circle\"+i)\r\n .attr('fill', (d, i) => this.legendColor[i])\r\n .attr('cx', 0)\r\n .attr('cy', 0)\r\n .attr('r', 5)\r\n\r\n lg.append('text')\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"font-size\", \"11px\")\r\n .attr('fill', '#515151')\r\n .attr('x', 10)\r\n .attr('y', 5)\r\n .attr('dy', -1)\r\n .text((d, i) => this.legendKey[i]);\r\n\r\n let offset = 0;\r\n const self = this;\r\n lg.attr('transform', function (d, i) {\r\n let x = offset;\r\n offset += nodeWidth(this) + 10;\r\n return `translate(${x},${self.height + 10})`;\r\n });\r\n\r\n legend.attr('transform', function () {\r\n return `translate(${(self.graphWidth - nodeWidth(this)) / 2},${90})`\r\n }); \r\n }\r\n\r\n drawGraph() {\r\n this.data = this.getData();\r\n this.renderSVGContainer();\r\n this.renderXAxis();\r\n this.renderRangeRect();\r\n this.renderMeasure();\r\n this.renderMark();\r\n this.renderAxisText();\r\n this.renderLegend(); \r\n }\r\n\r\n // @HostListener(\"window:resize\", [\"$event\"])\r\n // onResize(event) {\r\n // common.clearSVG(this.chartIdSelector);\r\n // this.drawGraph();\r\n // }\r\n\r\n}\r\n","\r\n\r\n\r\n
\r\n
\r\n
","import { Component, OnInit, HostListener, Input } from '@angular/core';\r\n//import { debug } from 'console';\r\nimport * as d3 from \"d3\";\r\nimport { common } from 'src/app/common/common';\r\nimport { AJWebService } from 'src/services/ajWeb.service';\r\n\r\n@Component({\r\n selector: 'mri-bullet-chart',\r\n templateUrl: './outcomes_TotSaving_bullet-chart.component.html',\r\n styleUrls: ['./outcomes_TotSaving_bullet-chart.component.scss']\r\n})\r\nexport class outcomes_TotSaving_BulletChartComponent implements OnInit {\r\n\r\n data: any;\r\n @Input() savedCostTotal: any;\r\n @Input() savedEffortTotal: any;\r\n\r\n selector = \"bullet-chart-section\";\r\n //margin = { top: 10, bottom: 40, left: 70, right: 20 };\r\n margin = { top: 5, bottom: 40, left: 2, right: 2 };\r\n svg: any;\r\n width: number;\r\n height: number;\r\n graphWidth: number;\r\n chart: any;\r\n bar_width = 14;\r\n rx = this.bar_width / 2;\r\n ry = this.bar_width / 2;\r\n rangeVal = [];\r\n rangeColor = ['#F0F0F1', '#e3e6e8', '#cbd0d6', '#bac0cc', '#aab0bd', '#FFFFFF'];\r\n widthVal = [196, 158.4, 120.8, 83.2, 45.6, 8]\r\n legendKey = [\"Planned\", \"Completed\"];\r\n legendColor = [\"#7235B1\", \"#DC30C5\"];\r\n xAxisLabel = \"Total Savings ($)\";\r\n maxValue: any;\r\n\r\n constructor(public ajWebService: AJWebService) { }\r\n\r\n ngOnInit() {\r\n this.ajWebService.outcomesDataCalculationCompleted.subscribe(opportunityQueues => {\r\n common.clearSVG(this.selector)\r\n this.drawGraph();\r\n }, error => {\r\n this.ajWebService.showErrorMessage(error);\r\n })\r\n }\r\n\r\n drawGraph() {\r\n this.data = this.getData();\r\n this.renderSVGContainer();\r\n this.renderRangeRect();\r\n this.renderXAxis();\r\n this.renderMeasure();\r\n this.renderMark();\r\n this.renderAxisText();\r\n //this.renderLegend(); \r\n }\r\n\r\n getData() {\r\n return [{\r\n \"title\": \"Actual\",\r\n \"measures\": Math.round(this.ajWebService.actualTotalSavings),\r\n \"markers\": Math.round(this.ajWebService.plannedTotalSavings)\r\n }];\r\n }\r\n\r\n renderSVGContainer() {\r\n let elem = (\r\n document.getElementsByClassName(this.selector)[0]\r\n );\r\n elem.innerHTML = \"\";\r\n this.svg = common.getSVG(this.selector, '100%', '100%');\r\n\r\n this.width = elem.offsetWidth - this.margin.left - this.margin.right;\r\n this.height = elem.offsetHeight - this.margin.top - this.margin.bottom;\r\n\r\n this.graphWidth = this.width - 100;\r\n }\r\n\r\n xScale() {\r\n return d3.scaleLinear()\r\n .range([0, this.graphWidth])\r\n // .domain([0, Math.round(1.2 * Math.max(this.ajWebService.actualTotalSavings, this.ajWebService.plannedTotalSavings))])\r\n .domain([0, this.maxValue])\r\n .nice();\r\n }\r\n\r\n yScale() {\r\n return d3.scaleBand()\r\n .range([0, this.height])\r\n .padding(0.2);\r\n }\r\n\r\n renderChartContainer() {\r\n return this.chart = this.svg\r\n .append(\"g\")\r\n .attr(\r\n \"transform\",\r\n \"translate(\" + [this.margin.left + 50, this.margin.top - 70] + \")\"\r\n );\r\n }\r\n\r\n renderXAxis() {\r\n this.renderChartContainer().append(\"g\")\r\n .attr(\"transform\", `translate(0 , ${this.height + 17})`)\r\n .call(d3.axisBottom(this.xScale())\r\n .tickSizeOuter(0)\r\n .ticks(6)\r\n .tickValues(this.rangeVal)\r\n .tickFormat(d => d >= 1000000 ? +d / 1000000 + 'M' : d >= 1000 ? +d / 1000 + 'K' : d + ''))\r\n .call((d) => {\r\n d.selectAll(\"path\").remove();\r\n d.selectAll(\"line\").remove();\r\n d.selectAll(\"text\")\r\n .attr(\"font-size\", \"10px\")\r\n });\r\n }\r\n\r\n renderRangeRect() {\r\n let maxValue = Math.round(1.2 * Math.max(this.ajWebService.actualTotalSavings, this.ajWebService.plannedTotalSavings));\r\n if (maxValue >= 1000000)\r\n maxValue = Math.ceil(maxValue / 100000) * 100000\r\n else if (maxValue >= 100000)\r\n maxValue = Math.ceil(maxValue / 10000) * 10000\r\n else if (maxValue >= 10000)\r\n maxValue = Math.ceil(maxValue / 1000) * 1000\r\n else if (maxValue >= 1000)\r\n maxValue = Math.ceil(maxValue / 100) * 100\r\n\r\n if ((maxValue - (maxValue % 5000)) > Math.max(Math.round(this.ajWebService.costPerHour != 0 ? this.ajWebService.actualTotalSavings / this.ajWebService.costPerHour : 0), Math.round(this.ajWebService.plannedTotalEfforts)))\r\n maxValue = maxValue - (maxValue % 5000);\r\n else\r\n maxValue = maxValue - (maxValue % 5000) + 5000;\r\n\r\n this.maxValue = maxValue;\r\n\r\n this.rangeVal = [];\r\n for (var i = 5; i >= 0; i--)\r\n this.rangeVal.push(maxValue * i / 5);\r\n\r\n var range = this.renderChartContainer()\r\n .selectAll()\r\n .data(this.rangeVal)\r\n .enter()\r\n .append(\"g\")\r\n\r\n range.append('rect')\r\n .attr('class', 'in-range')\r\n .attr(\"x\", -8)\r\n .attr('y', this.yScale().bandwidth() - this.rx * 2 + 12)\r\n .attr('height', this.bar_width * 3)\r\n .attr('width', (d) => this.xScale()(d) + 8)\r\n .attr('fill', (d, i) => this.rangeColor[i]);\r\n\r\n range.append('rect')\r\n .attr('class', 'out-range')\r\n .attr(\"x\", -5)\r\n .attr('y', this.yScale().bandwidth() - this.rx * 2 + 12)\r\n .attr('rx', this.rx)\r\n .attr('ry', this.ry)\r\n .attr('height', this.bar_width * 3)\r\n .attr('width', this.graphWidth + 8)\r\n .attr('fill', 'none')\r\n .attr('stroke', 'white')\r\n .attr('stroke-width', 8);\r\n }\r\n\r\n renderMeasure() {\r\n var mes = this.renderChartContainer()\r\n .selectAll()\r\n .data(this.data)\r\n .enter()\r\n .append(\"g\")\r\n .attr(\"class\", \"measure\")\r\n .style(\"fill\", this.legendColor[1]);\r\n\r\n mes.append(\"path\")\r\n .attr(\"d\", (d, i) => {\r\n return `M${0} ${this.yScale().bandwidth() - this.ry + 18}\r\n h${(this.xScale()(d.measures) < this.rx ? this.rx - this.xScale()(d.measures) : this.xScale()(d.measures) - this.rx)}\r\n a${this.rx} ${this.ry} 0 0 1 ${this.rx} ${this.ry}\r\n v 4\r\n a${this.rx} ${this.ry} 0 0 1 ${-this.rx} ${this.ry}\r\n h${(this.xScale()(d.measures) < this.rx ? this.xScale()(d.measures) - this.rx : this.rx - this.xScale()(d.measures))}Z`\r\n }\r\n ).append('svg:title')\r\n .text(function (d, i) { return \"$\" + d[\"measures\"]; })\r\n // .text(d =>\r\n // d[\"measures\"]\r\n // )\r\n }\r\n\r\n renderMark() {\r\n let mark = this.renderChartContainer()\r\n .selectAll(\".marker\")\r\n .data(this.data)\r\n .enter()\r\n .append('g')\r\n .attr(\"class\", \"marker\")\r\n\r\n mark.append(\"line\")\r\n .attr(\"x1\", d => this.xScale()(d.markers))\r\n .attr(\"x2\", d => this.xScale()(d.markers))\r\n .attr(\"y1\", this.yScale().bandwidth() - this.bar_width + 17)\r\n .attr(\"y2\", this.yScale().bandwidth() + this.bar_width + 21)\r\n .attr(\"stroke-width\", 3)\r\n .attr(\"stroke\", this.legendColor[0])\r\n .attr('fill', this.legendColor[0])\r\n .append('svg:title')\r\n .text(function (d, i) { return \"$\" + d[\"markers\"]; });\r\n // .text(d =>\r\n // d[\"markers\"] + \"hrs\"\r\n // );\r\n }\r\n\r\n renderAxisText() {\r\n this.renderChartContainer().append(\"text\")\r\n .attr(\"transform\",\r\n \"translate(\" + (this.graphWidth / 2) + \" ,\" + (this.height - 30) + \")\")\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"font-family\", \"sans-serif Strong\")\r\n .attr(\"font-size\", \"12px\")\r\n .attr(\"font-weight\", \"bold\")\r\n .text(this.xAxisLabel);\r\n }\r\n\r\n renderLegend() {\r\n var nodeWidth = (d) => d.getBBox().width;\r\n const legend = this.renderChartContainer().append('g')\r\n .attr('class', 'legend')\r\n .attr('transform', 'translate(0,0)');\r\n\r\n const lg = legend.selectAll('g')\r\n .data(this.legendKey)\r\n .enter()\r\n .append('g')\r\n .attr(\"class\", (d, i) => \"circlelegend\" + i)\r\n\r\n lg.append('circle')\r\n .attr(\"id\", (d, i) => \"circle\" + i)\r\n .attr('fill', (d, i) => this.legendColor[i])\r\n .attr('cx', 0)\r\n .attr('cy', 0)\r\n .attr('r', 5)\r\n\r\n lg.append('text')\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"font-size\", \"11px\")\r\n .attr('fill', '#515151')\r\n .attr('x', 10)\r\n .attr('y', 5)\r\n .attr('dy', -1)\r\n .text((d, i) => this.legendKey[i]);\r\n\r\n let offset = 0;\r\n const self = this;\r\n lg.attr('transform', function (d, i) {\r\n let x = offset;\r\n offset += nodeWidth(this) + 10;\r\n return `translate(${x},${self.height + 10})`;\r\n });\r\n\r\n legend.attr('transform', function () {\r\n return `translate(${(self.graphWidth - nodeWidth(this)) / 2},${90})`\r\n });\r\n }\r\n\r\n // @HostListener(\"window:resize\", [\"$event\"])\r\n // onResize(event) {\r\n // common.clearSVG(this.selector);\r\n // this.drawGraph();\r\n // }\r\n}\r\n","\r\n \r\n
\r\n
","import { Component, OnInit, HostListener } from '@angular/core';\r\nimport * as d3 from \"d3\";\r\nimport { common } from 'src/app/common/common';\r\nimport { AJWebService } from 'src/services/ajWeb.service';\r\n\r\n@Component({\r\n selector: 'effort-bullet-chart',\r\n templateUrl: './outcomes_TotEffort_bullet-chart.component.html',\r\n styleUrls: ['./outcomes_TotEffort_bullet-chart.component.scss']\r\n})\r\nexport class outcomes_TotEffort_BulletChartComponent implements OnInit {\r\n\r\n data: any;\r\n selector = \"bullet-chart-section1\";\r\n //margin = { top: 10, bottom: 40, left: 70, right: 20 };\r\n margin = { top: 5, bottom: 40, left: 2, right: 2 };\r\n svg: any;\r\n width: number;\r\n height: number;\r\n graphWidth: number;\r\n chart: any;\r\n bar_width = 14;\r\n rx = this.bar_width / 2;\r\n ry = this.bar_width / 2;\r\n rangeVal = [];\r\n rangeColor = ['#F0F0F1', '#e3e6e8', '#cbd0d6', '#bac0cc', '#aab0bd', '#FFFFFF'];\r\n legendKey = [\"Planned\", \"Completed\"];\r\n legendColor = [\"#7235B1\", \"#DC30C5\"];\r\n xAxisLabel = \"Total Effort (Hrs)\";\r\n maxValue: any;\r\n\r\n constructor(public ajWebService: AJWebService) { }\r\n\r\n ngOnInit() {\r\n this.ajWebService.outcomesDataCalculationCompleted.subscribe(opportunityQueues => {\r\n common.clearSVG(this.selector)\r\n this.drawGraph();\r\n }, error => {\r\n this.ajWebService.showErrorMessage(error);\r\n })\r\n }\r\n\r\n drawGraph() {\r\n this.data = this.getData();\r\n this.renderSVGContainer();\r\n this.renderRangeRect();\r\n this.renderXAxis();\r\n this.renderMeasure();\r\n this.renderMark();\r\n this.renderAxisText();\r\n this.renderLegend();\r\n }\r\n\r\n getData() {\r\n return [{\r\n \"title\": \"Actual\",\r\n \"measures\": Math.round(this.ajWebService.costPerHour != 0 ? this.ajWebService.actualTotalSavings / this.ajWebService.costPerHour : 0),\r\n \"markers\": Math.round(this.ajWebService.plannedTotalEfforts)\r\n }];\r\n }\r\n\r\n renderSVGContainer() {\r\n let elem = (\r\n document.getElementsByClassName(this.selector)[0]\r\n );\r\n elem.innerHTML = \"\";\r\n this.svg = common.getSVG(this.selector, '100%', '100%');\r\n\r\n this.width = elem.offsetWidth - this.margin.left - this.margin.right;\r\n this.height = elem.offsetHeight - this.margin.top - this.margin.bottom;\r\n\r\n this.graphWidth = this.width - 100;\r\n }\r\n\r\n xScale() {\r\n return d3.scaleLinear()\r\n .range([0, this.graphWidth])\r\n .domain([0, this.maxValue])\r\n .nice();\r\n }\r\n\r\n yScale() {\r\n return d3.scaleBand()\r\n .range([0, this.height])\r\n .padding(0.2);\r\n }\r\n\r\n renderChartContainer() {\r\n return this.chart = this.svg\r\n .append(\"g\")\r\n .attr(\r\n \"transform\",\r\n \"translate(\" + [this.margin.left + 50, this.margin.top - 70] + \")\"\r\n );\r\n }\r\n\r\n renderXAxis() {\r\n this.renderChartContainer().append(\"g\")\r\n .attr(\"transform\", `translate(0 , ${this.height + 17})`)\r\n .call(d3.axisBottom(this.xScale()).tickSizeOuter(0)\r\n .ticks(6).tickValues(this.rangeVal).tickFormat(d => d >= 1000000 ? +d / 1000000 + 'M' : d >= 1000 ? +d / 1000 + 'K' : d + ''))\r\n .call((d) => {\r\n d.selectAll(\"path\").remove();\r\n d.selectAll(\"line\").remove();\r\n d.selectAll(\"text\")\r\n .attr(\"font-size\", \"10px\")\r\n });\r\n }\r\n\r\n renderRangeRect() {\r\n let maxValue = Math.round(1.2 * Math.max(Math.round(this.ajWebService.costPerHour != 0 ? this.ajWebService.actualTotalSavings / this.ajWebService.costPerHour : 0), Math.round(this.ajWebService.plannedTotalEfforts)));\r\n if (maxValue >= 1000000)\r\n maxValue = Math.ceil(maxValue / 100000) * 100000\r\n else if (maxValue >= 100000)\r\n maxValue = Math.ceil(maxValue / 10000) * 10000\r\n else if (maxValue >= 10000)\r\n maxValue = Math.ceil(maxValue / 1000) * 1000\r\n else if (maxValue >= 1000)\r\n maxValue = Math.ceil(maxValue / 100) * 100\r\n\r\n if ((maxValue - (maxValue % 5000)) > Math.max(Math.round(this.ajWebService.costPerHour != 0 ? this.ajWebService.actualTotalSavings / this.ajWebService.costPerHour : 0), Math.round(this.ajWebService.plannedTotalEfforts)))\r\n maxValue = maxValue - (maxValue % 5000);\r\n else\r\n maxValue = maxValue - (maxValue % 5000) + 5000;\r\n\r\n this.maxValue = maxValue;\r\n\r\n this.rangeVal = [];\r\n for (var i = 5; i >= 0; i--)\r\n this.rangeVal.push(maxValue * i / 5);\r\n\r\n var range = this.renderChartContainer()\r\n .selectAll()\r\n .data(this.rangeVal)\r\n .enter()\r\n .append(\"g\")\r\n\r\n range.append('rect')\r\n .attr('class', 'in-range')\r\n .attr(\"x\", -8)\r\n .attr('y', this.yScale().bandwidth() - this.rx * 2 + 12)\r\n .attr('height', this.bar_width * 3)\r\n .attr('width', (d) => this.xScale()(d) + 8)\r\n .attr('fill', (d, i) => this.rangeColor[i]);\r\n\r\n range.append('rect')\r\n .attr('class', 'out-range')\r\n .attr(\"x\", -5)\r\n .attr('y', this.yScale().bandwidth() - this.rx * 2 + 12)\r\n .attr('rx', this.rx)\r\n .attr('ry', this.ry)\r\n .attr('height', this.bar_width * 3)\r\n .attr('width', this.graphWidth + 8)\r\n .attr('fill', 'none')\r\n .attr('stroke', 'white')\r\n .attr('stroke-width', 8);\r\n }\r\n\r\n renderMeasure() {\r\n var mes = this.renderChartContainer()\r\n .selectAll()\r\n .data(this.data)\r\n .enter()\r\n .append(\"g\")\r\n .attr(\"class\", \"measure\")\r\n .style(\"fill\", this.legendColor[1]);\r\n mes.append(\"path\")\r\n .attr(\"d\", (d, i) => {\r\n return `M${0} ${this.yScale().bandwidth() - this.ry + 18}\r\n h${(this.xScale()(d.measures) < this.rx ? this.rx - this.xScale()(d.measures) : this.xScale()(d.measures) - this.rx)}\r\n a${this.rx} ${this.ry} 0 0 1 ${this.rx} ${this.ry}\r\n v 4\r\n a${this.rx} ${this.ry} 0 0 1 ${-this.rx} ${this.ry}\r\n h${(this.xScale()(d.measures) < this.rx ? this.xScale()(d.measures) - this.rx : this.rx - this.xScale()(d.measures))}Z`\r\n }\r\n ).append('svg:title')\r\n .text(function (d, i) { return d[\"measures\"] + \"hrs\"; })\r\n // .text(d =>\r\n // d[\"measures\"]\r\n // )\r\n }\r\n\r\n renderMark() {\r\n let mark = this.renderChartContainer()\r\n .selectAll(\".marker\")\r\n .data(this.data)\r\n .enter()\r\n .append('g')\r\n .attr(\"class\", \"marker\")\r\n\r\n mark.append(\"line\")\r\n .attr(\"x1\", d => this.xScale()(d.markers))\r\n .attr(\"x2\", d => this.xScale()(d.markers))\r\n .attr(\"y1\", this.yScale().bandwidth() - this.bar_width + 17)\r\n .attr(\"y2\", this.yScale().bandwidth() + this.bar_width + 21)\r\n .attr(\"stroke-width\", 3)\r\n .attr(\"stroke\", this.legendColor[0])\r\n .attr('fill', this.legendColor[0])\r\n .append('svg:title')\r\n .text(function (d, i) { return d[\"markers\"] + \"hrs\"; })\r\n // .text(d =>\r\n // d[\"markers\"]\r\n // );\r\n }\r\n\r\n renderAxisText() {\r\n this.renderChartContainer().append(\"text\")\r\n .attr(\"transform\",\r\n \"translate(\" + (this.graphWidth / 2) + \" ,\" + (this.height - 30) + \")\")\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"font-family\", \"sans-serif Strong\")\r\n .attr(\"font-size\", \"12px\")\r\n .attr(\"font-weight\", \"bold\")\r\n .text(this.xAxisLabel);\r\n }\r\n\r\n\r\n renderLegend() {\r\n var nodeWidth = (d) => d.getBBox().width;\r\n const legend = this.renderChartContainer().append('g')\r\n .attr('class', 'legend')\r\n .attr('transform', 'translate(0,0)');\r\n\r\n const lg = legend.selectAll('g')\r\n .data(this.legendKey)\r\n .enter()\r\n .append('g')\r\n .attr(\"class\", (d, i) => \"circlelegend\" + i)\r\n\r\n lg.append('circle')\r\n .attr(\"id\", (d, i) => \"circle\" + i)\r\n .attr('fill', (d, i) => this.legendColor[i])\r\n .attr('cx', 0)\r\n .attr('cy', -20)\r\n .attr('r', 5)\r\n\r\n lg.append('text')\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"font-size\", \"11px\")\r\n .attr('fill', '#515151')\r\n .attr('x', 10)\r\n .attr('y', -15)\r\n .attr('dy', -1)\r\n .text((d, i) => this.legendKey[i]);\r\n\r\n let offset = 0;\r\n const self = this;\r\n lg.attr('transform', function (d, i) {\r\n let x = offset;\r\n offset += nodeWidth(this) + 10;\r\n return `translate(${x},${self.height + 10})`;\r\n });\r\n\r\n legend.attr('transform', function () {\r\n return `translate(${(self.graphWidth - nodeWidth(this)) / 2},${81})`\r\n });\r\n }\r\n\r\n // @HostListener(\"window:resize\", [\"$event\"])\r\n // onResize(event) {\r\n // common.clearSVG(this.selector);\r\n // this.drawGraph();\r\n // }\r\n}\r\n","\r\n \r\n
\r\n
","import { InjectionToken, NgModule, APP_INITIALIZER } from '@angular/core';\r\nimport {\r\n MSAL_GUARD_CONFIG,\r\n // MSAL_CONFIG_ANGULAR,\r\n MsalGuardConfiguration\r\n , MsalService, MsalModule, MsalInterceptor, MSAL_INSTANCE, MsalGuard, MsalInterceptorConfiguration, MSAL_INTERCEPTOR_CONFIG, MsalBroadcastService\r\n} from '@azure/msal-angular';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { AppConfigService } from '../services/app-config.service';\r\nimport { Configuration } from 'msal';\r\nimport { BrowserCacheLocation, InteractionType, IPublicClientApplication, LogLevel, PublicClientApplication } from '@azure/msal-browser';\r\nimport { environment } from 'src/environments/environment';\r\nimport { env } from 'process';\r\nimport { HttpTokenInterceptor } from 'src/services/HttpTokenInterceptor';\r\n\r\nconst AUTH_CONFIG_URL_TOKEN = new InjectionToken('AUTH_CONFIG_URL');\r\n\r\nconst isIE = window.navigator.userAgent.indexOf(\"MSIE \") > -1 || window.navigator.userAgent.indexOf(\"Trident/\") > -1;\r\n\r\nexport function initializerFactory(env: AppConfigService, configUrl: string): any {\r\n // APP_INITIALIZER, except a function return which will return a promise\r\n // APP_INITIALIZER, angular doesnt starts application untill it completes\r\n const promise = env.init(configUrl).then((value) => {\r\n //console.log(env);\r\n });\r\n return () => promise;\r\n}\r\nexport function loggerCallback(logLevel: LogLevel, message: string) {\r\n console.log(message);\r\n}\r\n///END \r\nexport function MSALInstanceFactory(config: AppConfigService): IPublicClientApplication {\r\n return new PublicClientApplication({\r\n auth: {\r\n clientId: config.getSettings('webClientID'),\r\n authority: config.getSettings('authority'),\r\n redirectUri: config.getSettings('azureRedirectURL'),\r\n postLogoutRedirectUri: config.getSettings(\"azureRedirectURL\"),\r\n //navigateToLoginRequestUrl: true,\r\n },\r\n cache: {\r\n cacheLocation: \"localStorage\",\r\n storeAuthStateInCookie: isIE, // set to true for IE 11. Remove this line to use Angular Universal\r\n },\r\n system: {\r\n allowRedirectInIframe: true,\r\n loggerOptions: {\r\n loggerCallback,\r\n logLevel: LogLevel.Info,\r\n piiLoggingEnabled: false\r\n }\r\n }\r\n });\r\n}\r\nexport function MSALInterceptorConfigFactory(config: AppConfigService): MsalInterceptorConfiguration {\r\n\r\n var apiid = config.getSettings('apiClientID');\r\n var msalurls = config.getSettings('msalurl');\r\n console.log(apiid);\r\n console.log(msalurls);\r\n\r\n const protectedResourceMap = new Map>();\r\n protectedResourceMap.set('https://graph.microsoft.com/v1.0/me', ['user.read']);\r\n protectedResourceMap.set(msalurls, [apiid + '/user_impersonation', apiid + '/user_profile']);\r\n\r\n return {\r\n interactionType: InteractionType.Redirect,\r\n protectedResourceMap\r\n };\r\n}\r\nexport function MSALGuardConfigFactory(): MsalGuardConfiguration {\r\n\r\n return {\r\n interactionType: InteractionType.Redirect,\r\n // authRequest: {\r\n // scopes: [\r\n // 'User.Read'\r\n // ]\r\n // }\r\n };\r\n}\r\n\r\n@NgModule({\r\n providers: [\r\n ],\r\n imports: [MsalModule]\r\n})\r\nexport class MsalApplicationModule {\r\n static forRoot(configFile: string) {\r\n return {\r\n ngModule: MsalApplicationModule,\r\n providers: [\r\n AppConfigService,\r\n { provide: AUTH_CONFIG_URL_TOKEN, useValue: configFile },\r\n {\r\n provide: APP_INITIALIZER, useFactory: initializerFactory,\r\n deps: [AppConfigService, AUTH_CONFIG_URL_TOKEN], multi: true\r\n },\r\n MsalService,\r\n MsalGuard,\r\n MsalBroadcastService,\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: MsalInterceptor,\r\n //useClass: HttpTokenInterceptor,\r\n multi: true\r\n },\r\n\r\n {\r\n provide: MSAL_INSTANCE,\r\n useFactory: MSALInstanceFactory,\r\n deps: [AppConfigService]\r\n },\r\n {\r\n provide: MSAL_GUARD_CONFIG,\r\n useFactory: MSALGuardConfigFactory\r\n },\r\n {\r\n provide: MSAL_INTERCEPTOR_CONFIG,\r\n useFactory: MSALInterceptorConfigFactory,\r\n deps: [AppConfigService]\r\n },\r\n ]\r\n };\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { HomeComponent } from 'src/components/home/home.component';\nimport { MsalGuard } from '@azure/msal-angular';\nimport { environment } from 'src/environments/environment';\n//import { AppComponent } from './app.component';\nimport { GovernanceComponent } from 'src/app/governance/governance.component';\n\nconst activateMSALGuard = environment.MSALenabled ? [MsalGuard] : [];\n\nconst routes: Routes = [\n {\n path: '', pathMatch: 'full', redirectTo: 'home'\n },\n {\n path: 'home', component: HomeComponent\n },\n {\n path: 'home', component: HomeComponent\n },\n // {\n // path: 'home/MW/:endToEndId', component: HomeComponent\n // },\n // {\n // path: 'home/mw/:endToEndId', component: HomeComponent\n // },\n {\n path: 'gov', component: HomeComponent\n },\n\n //TODO hhave to look at it\n // {\n // path: 'gov', component: GovernanceComponent\n // }\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","import { Component, OnInit } from '@angular/core';\nimport { WindowUtils } from 'msal';\n\n@Component({\n selector: 'app-governance',\n templateUrl: './governance.component.html',\n styleUrls: ['./governance.component.css']\n})\nexport class GovernanceComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n if(window.location.hostname.includes(\"ciostage\")){\n if(window.location.hostname == \"mywizardajnextgen.ciostage.accenture.com\"){\n window.location.href=\"https://mywizardajgov.ciostage.accenture.com/gov\";\n }\n else if (window.location.hostname == \"mywizardajeunextgen.ciostage.accenture.com\"){\n window.location.href=\"https://mywizardajeugov.ciostage.accenture.com/gov\";\n } \n }\n else if(window.location.hostname.includes(\"demo\")){\n window.location.href=\"https://mywizardajgovdemo.accenture.com/gov\";\n }\n else{\n if(window.location.hostname == \"mywizardaj.accenture.com\"){\n window.location.href=\"https://mywizardajgov.accenture.com/gov\";\n }\n else if (window.location.hostname == \"mywizardajeu.accenture.com\"){\n window.location.href=\"https://mywizardajeugov.accenture.com/gov\";\n } \n }\n }\n\n}\n","import { Component, HostListener, Input, OnInit } from '@angular/core';\r\nimport { common } from 'src/app/common/common';\r\nimport * as d3 from 'd3';\r\nimport { AJWebService } from 'src/services/ajWeb.service';\r\n\r\n@Component({\r\n selector: 'mri-multiline-top-trending-assets',\r\n templateUrl: './multiline-top-trending-assets.component.html',\r\n styleUrls: ['./multiline-top-trending-assets.component.scss']\r\n})\r\nexport class MultilineTopTrendingAssetsComponent implements OnInit {\r\n data: any;\r\n @Input() chartIdSelector: string;\r\n viewData = [];\r\n svg: any;\r\n margin = { top: 20, bottom: 180, left: 70, right: 50 };\r\n selector = 'top-trending-assets';\r\n yAxisText = \"No. of Occurances\";\r\n xAxisText = \"\";\r\n svgWidth: any;\r\n num: any;\r\n width: number;\r\n height: number;\r\n svgHeight = 380;\r\n barnumber = 7;\r\n page = 1;\r\n xScale: any;\r\n yScale: any;\r\n chart: any;\r\n barWidth = 24;\r\n bars: any;\r\n line_stroke_width = 2;\r\n circle_stroke_width = 3;\r\n radius = 3;\r\n cat2_color = \"#DCDC67\";\r\n cat1_color = \"#DC67CE\";\r\n legendColors = [\"#DC67CE\", \"#DCDC67\"];\r\n legends = [\"Actual savings\", \"Asset Implementation cost\"];\r\n\r\n @Input() monthsList: any;\r\n @Input() yearsList: any;\r\n @Input() currentDate: any;\r\n @Input() opportunityId: any;\r\n public highestValue: number = 0;\r\n\r\n public actualSavings: any[];\r\n public actualImplementation: any[];\r\n\r\n constructor(public ajWebService: AJWebService) { }\r\n\r\n ngOnInit() {\r\n //common.clearSVG(this.selector);\r\n this.ajWebService.displayROIGraphPopUp.subscribe(opportunityId => {\r\n this.opportunityId = opportunityId;\r\n this.getData();\r\n }, error => {\r\n this.ajWebService.showErrorMessage(error);\r\n })\r\n }\r\n\r\n getData(): any {\r\n this.ajWebService.GetSavingsValue(this.opportunityId).subscribe(roiData => {\r\n if (roiData != undefined) {\r\n this.actualSavings = roiData[\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"];\r\n //this.actualImplementation = roiData[\"AttributeUsage\"].find(x => x.AttributeName == \"Automated Partially\")[\"UsageValues\"];\r\n\r\n let totalValueTillDate = 0;\r\n let monthYear: String = '';\r\n let finalData = [];\r\n\r\n let assetImplementationCost = 0;\r\n if (roiData[\"AssetImplementationCost\"] != undefined) {\r\n for (var i = 0; i < roiData[\"AssetImplementationCost\"].length; i++)\r\n assetImplementationCost += roiData[\"AssetImplementationCost\"][i];\r\n\r\n for (var i = 1; i <= 12; i++) {\r\n monthYear = this.monthsList[this.currentDate.getMonth() + i] != undefined ? this.monthsList[this.currentDate.getMonth() + i] + this.yearsList[0] : this.monthsList[this.currentDate.getMonth() + i - 12] + this.yearsList[1];\r\n totalValueTillDate += this.actualSavings.find(x => x.Month == monthYear.substr(0, 3) + \" \" + monthYear.substr(3, 2)) != undefined ? this.actualSavings.find(x => x.Month == monthYear.substr(0, 3) + \" \" + monthYear.substr(3, 2)).Value : 0;\r\n\r\n finalData.push({\r\n \"time\": monthYear.substr(0, 3) + \" \" + monthYear.substr(3, 2),\r\n \"value\": 0,\r\n \"category_1\": totalValueTillDate,\r\n \"cat1_cir\": 1,\r\n \"category_2\": assetImplementationCost,\r\n \"cat2_cir\": 1\r\n })\r\n }\r\n this.data = finalData;\r\n this.drawGraph();\r\n } else {\r\n this.ajWebService.showInfoMessage(\"No data for asset implementation cost for this opportunity.\");\r\n let elem = document.getElementsByClassName(this.selector)[0];\r\n if (elem != undefined)\r\n elem.innerHTML = \"\";\r\n }\r\n } else {\r\n this.ajWebService.showInfoMessage(\"No ROI data for this opportunity.\");\r\n let elem = document.getElementsByClassName(this.selector)[0];\r\n if (elem != undefined)\r\n elem.innerHTML = \"\";\r\n }\r\n },\r\n error => {\r\n this.ajWebService.showInfoMessage(error.toString());\r\n })\r\n }\r\n\r\n FormatNumber(num) {\r\n if (num >= 100000000)\r\n return (num / 1000000) + \"M\";\r\n\r\n if (num >= 10000000)\r\n return (num / 1000000) + \"M\";\r\n\r\n if (num >= 100000)\r\n return (num / 1000) + \"K\";\r\n\r\n if (num >= 10000)\r\n return (num / 1000) + \"K\";\r\n\r\n return num.ToString(\"#,0\");\r\n }\r\n\r\n\r\n drawGraph() {\r\n //this.viewData = this.transformData();\r\n this.viewData = this.data;\r\n let elem = document.getElementsByClassName(this.selector)[0];\r\n elem.innerHTML = \"\";\r\n this.svgWidth = 950; //elem.offsetWidth;\r\n this.width = this.svgWidth;\r\n\r\n //this.width = elem.offsetWidth - this.margin.left - this.margin.right + 40;\r\n this.height = this.svgHeight - this.margin.top - this.margin.bottom;\r\n this.svg = this.getSVG();\r\n //alert(elem);\r\n this.xScale = this.getXScale();\r\n this.yScale = this.getYScale();\r\n this.chart = this.svg.append('g')\r\n .attr('class', 'svgstyle')\r\n .attr('transform', 'translate(' + [this.margin.left, this.margin.top + 12] + ')')\r\n .style('overflow', 'visible');\r\n this.renderXAxis();\r\n this.renderYAxis();\r\n this.renderYGridLines();\r\n this.renderXAxisText();\r\n this.renderYAxisText();\r\n this.renderLine();\r\n this.renderShadowpath();\r\n this.renderLineCircles();\r\n this.renderLegendText();\r\n this.renderLegendCircle();\r\n }\r\n\r\n // Line circles\r\n renderLineCircles() {\r\n const line_circles = this.chart.selectAll()\r\n .data(this.viewData)\r\n .enter()\r\n .append('g');\r\n\r\n // circles for category 1\r\n line_circles.append('circle')\r\n .attr('cx', d => this.xScale(d.time) + this.xScale.bandwidth() / 20)\r\n .attr('cy', d => this.yScale(d.category_1))\r\n .attr('r', this.radius)\r\n .attr('fill', d => {\r\n let color = 'none';\r\n if (d.cat1_cir == 0) {\r\n color = 'none';\r\n }\r\n else if (d.cat1_cir == 1) {\r\n color = this.cat1_color;\r\n }\r\n return color;\r\n })\r\n .attr('stroke', d => {\r\n let color = 'none';\r\n if (d.cat1_cir == 0) {\r\n color = 'none';\r\n }\r\n else if (d.cat1_cir == 1) {\r\n color = this.cat1_color;\r\n }\r\n return color;\r\n })\r\n .attr('stroke-width', 3)\r\n .append('svg:title')\r\n .text(d =>\r\n d.category_1\r\n );\r\n\r\n // circles for category 2\r\n line_circles.append('circle')\r\n .attr('cx', d => this.xScale(d.time) + this.xScale.bandwidth() / 20)\r\n .attr('cy', d => this.yScale(d.category_2))\r\n .attr('r', this.radius)\r\n .attr('fill', d => {\r\n let color = 'none';\r\n if (d.cat2_cir == 0) {\r\n color = 'none';\r\n }\r\n else if (d.cat2_cir == 1) {\r\n color = this.cat2_color;\r\n }\r\n return color;\r\n })\r\n .attr('stroke', d => {\r\n let color = 'none';\r\n if (d.cat2_cir == 0) {\r\n color = 'none';\r\n }\r\n else if (d.cat2_cir == 1) {\r\n color = this.cat2_color;\r\n }\r\n return color;\r\n })\r\n .attr('stroke-width', 3)\r\n .append('svg:title')\r\n .text(d =>\r\n d.category_2\r\n );\r\n }\r\n\r\n // Lines\r\n renderLine() {\r\n // const lineGroups = this.chart.selectAll()\r\n // .data(this.viewData)\r\n // .enter()\r\n // .append('g');\r\n\r\n var temp = this.chart.selectAll(\".temp\")\r\n .data(this.viewData)\r\n .enter().append(\"g\")\r\n .attr(\"class\", \"temp\");\r\n\r\n let line = d3.line()\r\n .x((d: any) => this.xScale(d.time) + this.xScale.bandwidth() / 20)\r\n .y((d: any) => this.yScale(d.category_1));\r\n //.curve(d3.curveCatmullRom.alpha(1));\r\n\r\n // Category line 1 STARTS\r\n const line_category1 = line.y((d: any) => this.yScale(d.category_1));\r\n this.chart.append(\"path\")\r\n .attr(\"fill\", \"none\")\r\n .attr(\"stroke-width\", this.line_stroke_width)\r\n .attr(\"opacity\", \"1\")\r\n .attr(\"stroke\", this.cat1_color)\r\n .attr(\"d\", line_category1(this.viewData))\r\n .attr(\"filter\", \"url(#dropshadow1)\");\r\n\r\n // Category line 2 STARTS\r\n const line_category2 = line.y((d: any) => this.yScale(d.category_2));\r\n this.chart.append(\"path\")\r\n .attr(\"fill\", \"none\")\r\n .attr(\"stroke-width\", this.line_stroke_width)\r\n .attr(\"opacity\", \"1\")\r\n .attr(\"stroke\", this.cat2_color)\r\n .attr(\"d\", line_category2(this.viewData))\r\n .attr(\"filter\", \"url(#dropshadow1)\");\r\n }\r\n\r\n renderXAxis() {\r\n this.chart.append('g')\r\n .attr('transform', `translate(-20, ${this.height + 4})`)\r\n .call(d3.axisBottom(this.xScale).tickSizeOuter(0))\r\n .call(d => {\r\n d.selectAll(\"path\").remove();\r\n d.selectAll(\"line\").remove();\r\n d.selectAll(\"text\")\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"font-size\", \"10px\");\r\n });\r\n\r\n }\r\n\r\n renderShadowpath() {\r\n /* For the drop shadow filter... */\r\n var defs = this.svg.append(\"defs\");\r\n var filter = defs.append(\"filter\")\r\n .attr(\"id\", \"dropshadow1\");\r\n filter.append(\"feGaussianBlur\")\r\n .attr(\"in\", \"SourceAlpha\")\r\n .attr(\"stdDeviation\", 1)\r\n .attr(\"result\", \"blur\");\r\n filter.append(\"feOffset\")\r\n .attr(\"in\", \"blur\")\r\n .attr(\"dx\", 3)\r\n .attr(\"dy\", 3)\r\n .attr(\"result\", \"offsetBlur\");\r\n\r\n filter.append(\"feFlood\")\r\n .attr(\"in\", \"offsetBlur\")\r\n .attr(\"flood-color\", \"#00000017\")\r\n .attr(\"flood-opacity\", \"1\")\r\n .attr(\"result\", \"offsetColor\");\r\n\r\n filter.append(\"feComposite\")\r\n .attr(\"in\", \"offsetColor\")\r\n .attr(\"in2\", \"offsetBlur\")\r\n .attr(\"operator\", \"in\")\r\n .attr(\"result\", \"offsetBlur\");\r\n\r\n var feMerge = filter.append(\"feMerge\");\r\n\r\n feMerge.append(\"feMergeNode\")\r\n .attr(\"in\", \"offsetBlur\")\r\n feMerge.append(\"feMergeNode\")\r\n .attr(\"in\", \"SourceGraphic\");\r\n }\r\n\r\n renderYAxis() {\r\n this.chart.append('g')\r\n .attr('transform', `translate(${this.svgWidth}, 0)`)\r\n .attr('class', 'y-axis')\r\n // .call(d3.axisLeft(this.yScale).tickPadding(10).tickSizeOuter(0))\r\n .call(d => {\r\n d.selectAll(\"path\")\r\n .attr(\"stroke\", \"#E4E4E4\")\r\n d.selectAll(\"line\").remove();\r\n d.selectAll(\"text\").remove();\r\n });\r\n }\r\n\r\n renderYGridLines() {\r\n const makeYLines = () => d3.axisLeft(this.yScale).tickPadding(10)\r\n .ticks(6);\r\n const grid = this.chart.append('g')\r\n .attr('class', 'grid')\r\n .call(makeYLines().tickSize(-this.width))\r\n .call(d => d.select(\".domain\").attr(\"stroke\", \"#E4E4E4\"));\r\n\r\n grid.selectAll(\"line\")\r\n .attr(\"stroke\", \"#E4E4E4\");\r\n\r\n grid.selectAll(\"text\")\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"font-size\", \"10px\");\r\n\r\n }\r\n\r\n renderXAxisText() {\r\n this.chart.append(\"text\")\r\n .attr(\"transform\",\r\n \"translate(\" + ((this.width / 4) - 200) + \" ,\" +\r\n (this.height + this.margin.top + 25) + \")\")\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"font-family\", \"sans-serif Medium\")\r\n .attr(\"font-size\", \"14px\")\r\n .text(this.xAxisText);\r\n }\r\n\r\n renderYAxisText() {\r\n this.chart.append(\"text\")\r\n .attr(\"transform\", \"rotate(360)\")\r\n .attr(\"y\", 0 - this.margin.left + 40)\r\n .attr(\"x\", 0 - (this.height / 2) + 75)\r\n .attr(\"dy\", \"1em\")\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"font-family\", \"sans-serif Medium\")\r\n .attr(\"font-size\", \"10px\")\r\n .text(this.yAxisText);\r\n }\r\n\r\n renderLegendCircle() {\r\n this.svg.append(\"g\")\r\n .attr(\"transform\", `translate(${this.width / 3} , ${this.height + 90})`)\r\n .selectAll(\"myLegends\")\r\n .data(this.legends)\r\n .join(\"circle\")\r\n .attr(\"cx\", (d, i) => 45 + i * 150)\r\n .attr(\"cy\", 5)\r\n .attr(\"r\", 5)\r\n .style(\"fill\", (d, i) => this.legendColors[i])\r\n }\r\n\r\n renderLegendText() {\r\n this.svg\r\n .append(\"g\")\r\n .attr(\"transform\", `translate(${this.width / 3} , ${this.height + 90})`)\r\n .selectAll(\"mylabels\")\r\n .data(this.legends)\r\n .join(\"text\")\r\n .attr(\"x\", (d, i) => 50 + i * 150)\r\n .attr(\"y\", 5)\r\n .text((d, i) => d)\r\n .attr(\"text-anchor\", \"left\")\r\n .style(\"alignment-baseline\", \"central\")\r\n .style(\"font-size\", \"12px\")\r\n .style(\"font-family\", \"sans-serif\")\r\n }\r\n\r\n getXScale() {\r\n return d3.scaleBand()\r\n .range([0, this.width])\r\n .domain(this.viewData.map((d) => d.time))\r\n .padding(0.4);\r\n }\r\n\r\n getYScale() {\r\n return d3.scaleLinear()\r\n .rangeRound([this.height, 0])\r\n .domain([0, Math.round(Math.max(Math.max(...this.data.map(o => o.category_1), 0), Math.max(...this.data.map(o => o.category_2), 0)) * 1.2)]);\r\n }\r\n\r\n getSVG() {\r\n return common.getSVG(this.selector, this.svgWidth + 20, this.svgHeight);\r\n }\r\n\r\n transformData(): any[] {\r\n return this.data.slice((this.page - 1) * this.barnumber, this.page * this.barnumber);\r\n }\r\n\r\n nextPage(pageCount: number) {\r\n this.page = pageCount;\r\n this.viewData = this.data.slice((this.page - 1) * this.barnumber, this.page * this.barnumber);\r\n this.drawGraph();\r\n }\r\n\r\n prevPage(pageCount: number) {\r\n this.page = pageCount;\r\n this.viewData = this.data.slice((this.page - 1) * this.barnumber, this.page * this.barnumber);\r\n this.drawGraph();\r\n }\r\n\r\n // @HostListener('window:resize', ['$event'])\r\n // onResize(event) {\r\n // common.clearSVG(this.selector);\r\n // this.drawGraph();\r\n // }\r\n}\r\n","\n\n
\n \n
","import { Component, OnInit, HostListener, Input } from '@angular/core';\r\nimport * as d3 from 'd3';\r\nimport { common } from 'src/app/common/common';\r\nimport { AJWebService } from 'src/services/ajWeb.service';\r\n\r\n@Component({\r\n selector: 'app-standard-line-chart',\r\n templateUrl: './standard-line-chart.component.html',\r\n styleUrls: ['./standard-line-chart.component.scss']\r\n})\r\nexport class StandardLineChartComponent implements OnInit {\r\n\r\n data: any;\r\n viewData = [];\r\n barnumber = 7;\r\n page = 1;\r\n margin = { top: 20, bottom: 180, left: 70, right: 50 };\r\n width: any;\r\n height: any;\r\n xScale: any;\r\n yScale: any;\r\n selector = 'standard-line-chart-section';\r\n color = \"#00F3FF\";\r\n xAxisText = \"Months\";\r\n yAxisText = \"Value($k)\";\r\n xscale_bw = 24;\r\n circle_stroke_width = 3;\r\n line_stroke_width = 2;\r\n circle_radius = 4;\r\n chart: any;\r\n svg: any;\r\n\r\n @Input() monthsList: any;\r\n @Input() yearsList: any;\r\n @Input() currentDate: any;\r\n @Input() opportunityId: any;\r\n public highestValue: number = 0;\r\n\r\n public savingsValues: any[];\r\n\r\n constructor(public ajWebService: AJWebService) { }\r\n\r\n ngOnInit() {\r\n //common.clearSVG(this.selector);\r\n this.ajWebService.displaySavingsGraphPopUp.subscribe(opportunityId => {\r\n this.opportunityId = opportunityId;\r\n this.getData();\r\n }, error => {\r\n this.ajWebService.showErrorMessage(error);\r\n })\r\n }\r\n\r\n getData(): any {\r\n this.ajWebService.GetSavingsValue(this.opportunityId).subscribe(savingsData => {\r\n if (savingsData != undefined) {\r\n this.savingsValues = savingsData[\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"];\r\n\r\n let monthYear: String = '';\r\n let finalData = [];\r\n for (var i = 1; i <= 12; i++) {\r\n monthYear = this.monthsList[this.currentDate.getMonth() + i] != undefined ? this.monthsList[this.currentDate.getMonth() + i] + this.yearsList[0] : this.monthsList[this.currentDate.getMonth() + i - 12] + this.yearsList[1];\r\n finalData.push({\r\n \"created_date\": monthYear.substr(0, 3) + \" \" + monthYear.substr(3, 2),\r\n \"line_val\": this.savingsValues.find(x => x.Month == monthYear.substr(0, 3) + \" \" + monthYear.substr(3, 2)) != undefined ? this.savingsValues.find(x => x.Month == monthYear.substr(0, 3) + \" \" + monthYear.substr(3, 2)).Value : 0\r\n })\r\n }\r\n this.data = finalData;\r\n this.drawGraph();\r\n }\r\n },\r\n error => {\r\n console.log(error)\r\n })\r\n }\r\n\r\n drawGraph() {\r\n //this.viewData = this.transformData();\r\n this.viewData = this.data;\r\n let elem = document.getElementsByClassName(this.selector)[0];\r\n elem.innerHTML = \"\";\r\n this.svg = this.getSVG(700, 300);\r\n this.width = 600; //elem.offsetWidth - this.margin.left - this.margin.right;\r\n this.height = 180; //450 - this.margin.top - this.margin.bottom;\r\n this.xScale = this.getXScale();\r\n this.yScale = this.getYScale();\r\n this.renderXAxis();\r\n this.renderYAxis();\r\n this.renderYAxisText();\r\n this.renderXAxisText();\r\n this.renderLine();\r\n this.renderPointCircles();\r\n }\r\n\r\n renderPointCircles() {\r\n const circleGroups = this.chart.selectAll()\r\n .data(this.viewData)\r\n .enter()\r\n .append('g');\r\n\r\n const circle_category2 = circleGroups.append(\"circle\")\r\n .attr(\"cx\", d => this.xScale(d.created_date))\r\n .attr(\"cy\", d => this.yScale(d.line_val))\r\n .attr(\"r\", this.circle_radius)\r\n .attr(\"fill\", this.color)\r\n .attr(\"stroke-width\", this.circle_stroke_width)\r\n .append('svg:title')\r\n .text((d) => d[\"line_val\"]);\r\n }\r\n\r\n renderLine() {\r\n const lineGroups = this.chart.selectAll()\r\n .data(this.viewData)\r\n .enter()\r\n .append('g');\r\n\r\n let line = d3.line()\r\n .x((d: any) => this.xScale(d.created_date))\r\n .y((d: any) => this.yScale(d.line_val));\r\n //.curve(d3.curveCatmullRom.alpha(1));\r\n\r\n // Category line STARTS\r\n lineGroups.append(\"path\")\r\n .attr(\"fill\", \"none\")\r\n .attr(\"stroke-width\", this.line_stroke_width)\r\n .attr(\"opacity\", \"1\")\r\n .attr(\"stroke\", this.color)\r\n .attr(\"d\", line(this.viewData));\r\n }\r\n\r\n renderXAxisText() {\r\n this.chart.append(\"text\")\r\n .attr(\"transform\",\r\n \"translate(\" + (this.width / 2) + \" ,\" +\r\n (this.height + this.margin.top + 50) + \")\")\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"font-family\", \"sans-serif Medium\")\r\n .attr(\"font-size\", \"12px\")\r\n .text(this.xAxisText);\r\n }\r\n\r\n renderYAxisText() {\r\n this.chart.append(\"text\")\r\n .attr(\"transform\", \"rotate(-90)\")\r\n .attr(\"y\", 0 - this.margin.left)\r\n .attr(\"x\", 0 - (this.height / 2))\r\n .attr(\"dy\", \"1em\")\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"font-family\", \"sans-serif Medium\")\r\n .attr(\"font-size\", \"12px\")\r\n .text(this.yAxisText);\r\n }\r\n\r\n renderXAxis() {\r\n this.chart = this.svg.append('g')\r\n .attr('class', 'svgstyle')\r\n .attr('transform', 'translate(' + [this.margin.left, this.margin.top] + ')');\r\n\r\n this.chart.append('g')\r\n .attr('transform', `translate(0, ${this.height})`)\r\n .call(d3.axisBottom(this.xScale).tickSizeOuter(0))\r\n .call(d => {\r\n d.selectAll(\"path\").remove();\r\n d.selectAll(\"line\").remove();\r\n d.selectAll(\"text\")\r\n .each(this.insertLinebreak)\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"font-size\", \"10px\");\r\n });\r\n }\r\n\r\n renderYAxis() {\r\n\r\n this.chart.append('g')\r\n .attr('transform', `translate(${this.width}, 0)`)\r\n .attr('class', 'y-axis')\r\n .call(d3.axisRight(this.yScale).tickPadding(10).tickSizeOuter(0))\r\n .call(d => {\r\n d.selectAll(\"path\")\r\n .attr(\"stroke\", \"#E4E4E4\")\r\n d.selectAll(\"line\").remove();\r\n d.selectAll(\"text\").remove();\r\n });\r\n\r\n const makeYLines = () => d3.axisLeft(this.yScale).tickPadding(10)\r\n .ticks(5);\r\n\r\n const grid = this.chart.append('g')\r\n .attr('class', 'grid')\r\n .call(makeYLines().tickSize(-this.width))\r\n .call(d => d.select(\".domain\").attr(\"stroke\", \"#E4E4E4\"));\r\n\r\n grid.selectAll(\"line\")\r\n .attr(\"stroke\", \"#E4E4E4\");\r\n\r\n grid.selectAll(\"text\")\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"font-size\", \"10px\");\r\n\r\n }\r\n\r\n getYScale() {\r\n return d3.scaleLinear()\r\n .rangeRound([this.height, 0])\r\n .domain([0, Math.round(Math.max(...this.data.map(o => o.line_val), 0) * 1.2)]).nice();\r\n }\r\n\r\n getXScale() {\r\n return d3.scalePoint()\r\n .range([0, this.width])\r\n .domain(this.viewData.map((d) => d.created_date))\r\n .padding(0);\r\n }\r\n\r\n getSVG(width: number, height: number) {\r\n return common.getSVG(this.selector, width, height);\r\n }\r\n\r\n transformData(): any[] {\r\n return this.data.slice((this.page - 1) * this.barnumber, this.page * this.barnumber);\r\n }\r\n\r\n insertLinebreak(d) {\r\n let labels = d3.select(this.selector);\r\n let words = d;\r\n labels.text('');\r\n\r\n let index = words.indexOf(' ', words.indexOf(' '))\r\n let title = words.substr(0, index)\r\n let subtitle = words.substr(index + 1)\r\n\r\n let tspantitle = labels.append('tspan').text(title)\r\n let tspansubtitle = labels.append('tspan').text(subtitle)\r\n tspantitle\r\n .attr('x', 0)\r\n .attr('dy', '15')\r\n tspansubtitle\r\n .attr('x', 0)\r\n .attr('dy', '16')\r\n };\r\n\r\n nextPage(pageCount: number) {\r\n this.page = pageCount;\r\n this.viewData = this.transformData();\r\n this.drawGraph();\r\n }\r\n\r\n prevPage(pageCount: number) {\r\n this.page = pageCount;\r\n this.viewData = this.transformData();\r\n this.drawGraph();\r\n }\r\n\r\n // @HostListener('window:resize', ['$event'])\r\n // onResize(event) {\r\n // common.clearSVG(this.selector);\r\n // this.drawGraph();\r\n // }\r\n}\r\n","\r\n
\r\n
\r\n
","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(\"This is exception Error\"));\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"zn8P\";","import { Component, OnInit, HostListener, Input } from '@angular/core';\r\nimport * as d3 from \"d3\";\r\nimport { common } from 'src/app/common/common';\r\nimport { AJWebService } from 'src/services/ajWeb.service';\r\n\r\n@Component({\r\n selector: 'mri-bullet-chart3',\r\n templateUrl: './bullet-chart.component.html',\r\n styleUrls: ['./bullet-chart.component.scss']\r\n})\r\nexport class BulletChartComponent implements OnInit {\r\n data: any;\r\n @Input() chartIdSelector;\r\n @Input() opportunityId: number;\r\n measures: number;\r\n markers: number;\r\n\r\n margin = { top: 10, bottom: 20, left: 5, right: 10 };\r\n svg: any;\r\n width: number;\r\n height: number;\r\n graphWidth: number;\r\n chart: any;\r\n bar_width = 8;\r\n rx = this.bar_width / 2;\r\n ry = this.bar_width / 2;\r\n rangeVal = [];\r\n rangeColor = ['#F0F0F1', '#e3e6e8', '#cbd0d6', '#bac0cc', '#aab0bd'];\r\n legendKey = [\"Planned\", \"Completed\"];\r\n legendColor = [\"#9657D5\", \"#B95FD2\"];\r\n xAxisLabel = \"Total Savings ($)\";\r\n\r\n constructor(public ajWebService: AJWebService) { }\r\n\r\n ngOnInit() {\r\n this.opportunityId = +this.chartIdSelector.substring(this.chartIdSelector.lastIndexOf('-') + 1);\r\n this.displayGraph();\r\n this.ajWebService.savingsAndFTEDataUpdated.subscribe(opportunityId => {\r\n this.opportunityId = +opportunityId;\r\n this.displayGraph();\r\n }, error => {\r\n this.ajWebService.showErrorMessage(error);\r\n })\r\n }\r\n\r\n displayGraph() {\r\n common.clearSVG(this.chartIdSelector);\r\n this.getData();\r\n //this.getUsage();\r\n }\r\n\r\n getUsage() {\r\n this.ajWebService.GetUsage(this.opportunityId).subscribe(data => {\r\n console.log(data)\r\n },\r\n error => {\r\n console.log(error)\r\n })\r\n }\r\n\r\n getData() {\r\n this.ajWebService.GetSavingsValue(this.opportunityId).subscribe(data => {\r\n if (data != undefined) {\r\n this.measures = data[\"AttributeValue\"].find(x => x.AttributeName == \"Values ($k)\")[\"Values\"].map(item => item.Value).reduce((prev, next) => prev + next);\r\n for (var i = 0; i < this.ajWebService.opportunityQueues.length; i++)\r\n if (this.ajWebService.opportunityQueues[i][\"Complete\"] != undefined && this.ajWebService.opportunityQueues[i][\"Complete\"].length > 0)\r\n for (var j = 0; j < this.ajWebService.opportunityQueues[i][\"Complete\"].length; j++)\r\n if (this.ajWebService.opportunityQueues[i][\"Complete\"][j][\"OpportunityId\"] == this.opportunityId) {\r\n this.markers = (data[\"SavedCost\"] / 12) * this.monthDiff(new Date(this.ajWebService.opportunityQueues[i][\"Complete\"][j][\"PlannedStartDate\"]), new Date());\r\n break;\r\n }\r\n\r\n this.data = [{\r\n \"title\": \"Actual\",\r\n \"measures\": this.measures,\r\n \"markers\": this.markers\r\n }];\r\n this.drawGraph();\r\n }\r\n },\r\n error => {\r\n console.log(error)\r\n })\r\n }\r\n\r\n monthDiff(date, currentDate) {\r\n var months = (currentDate.getFullYear() - date.getFullYear()) * 12;\r\n months -= date.getMonth();\r\n months += currentDate.getMonth();\r\n return months <= 0 ? 0 : months;\r\n }\r\n\r\n drawGraph() {\r\n this.renderSVGContainer();\r\n this.renderXAxis();\r\n this.renderRangeRect();\r\n this.renderMeasure();\r\n this.renderMark();\r\n this.renderAxisText();\r\n //this.renderLegend();\r\n }\r\n\r\n renderSVGContainer() {\r\n let elem = document.getElementById(this.chartIdSelector);\r\n if (elem != undefined)\r\n elem.innerHTML = \"\";\r\n \r\n this.width = 220;\r\n this.height = 80;\r\n this.svg = common.getSVG(this.chartIdSelector, this.width + 19, this.height - 10);\r\n this.graphWidth = this.width - 10;\r\n // this.svg = common.getSVG(this.selector, '80', '80');\r\n\r\n // this.width = 100 //elem.offsetWidth - this.margin.left - this.margin.right;\r\n // this.height = 100; //elem.offsetHeight - this.margin.top - this.margin.bottom;\r\n\r\n // this.graphWidth = 100;\r\n }\r\n\r\n xScale() {\r\n return d3.scaleLinear()\r\n .range([0, this.graphWidth])\r\n .domain([0, Math.round(1.2 * Math.max(this.measures, this.markers))])\r\n .nice();\r\n }\r\n\r\n yScale() {\r\n return d3.scaleBand()\r\n .range([0, this.height])\r\n .padding(0.2);\r\n }\r\n\r\n renderChartContainer() {\r\n return this.chart = this.svg\r\n .append(\"g\")\r\n .attr(\r\n \"transform\",\r\n \"translate(\" + [this.margin.left, this.margin.top - 70] + \")\"\r\n );\r\n }\r\n\r\n renderXAxis() {\r\n\r\n if (this.data.length == 1 && this.data[0].measures == 0 && this.data[0].markers == 0) {\r\n this.renderChartContainer().append(\"g\")\r\n .attr(\"transform\", `translate(-105, ${this.height + 10})`)\r\n .call(d3.axisBottom(this.xScale()).tickSizeOuter(0)\r\n .ticks(4).tickFormat(\r\n d => d >= 1000 ? +d / 1000 + 'K' : d + ''\r\n ))\r\n .call((d) => {\r\n d.selectAll(\"path\").remove();\r\n d.selectAll(\"line\").remove();\r\n d.selectAll(\"text\")\r\n .attr(\"font-size\", \"10px\")\r\n });\r\n }\r\n else {\r\n this.renderChartContainer().append(\"g\")\r\n .attr(\"transform\", `translate(0, ${this.height + 10})`)\r\n .call(d3.axisBottom(this.xScale()).tickSizeOuter(0)\r\n .ticks(4).tickFormat(\r\n d => d >= 1000 ? +d / 1000 + 'K' : d + ''\r\n ))\r\n .call((d) => {\r\n d.selectAll(\"path\").remove();\r\n d.selectAll(\"line\").remove();\r\n d.selectAll(\"text\")\r\n .attr(\"font-size\", \"10px\")\r\n });\r\n }\r\n }\r\n\r\n renderRangeRect() {\r\n let maxValue = Math.round(1.2 * Math.max(this.measures, this.markers));\r\n this.rangeVal = [];\r\n for (var i = 5; i >= 1; i--)\r\n this.rangeVal.push(maxValue * i / 5);\r\n\r\n var range = this.renderChartContainer()\r\n .selectAll()\r\n .data(this.rangeVal)\r\n .enter()\r\n .append(\"g\")\r\n\r\n range.append('rect')\r\n .attr('class', 'in-range')\r\n .attr(\"x\", -5)\r\n .attr('y', this.yScale().bandwidth() - this.rx * 2 + 2)\r\n .attr('height', this.bar_width * 3)\r\n .attr('width', (d) => this.xScale()(d) + 8)\r\n .attr('fill', (d, i) => this.rangeColor[i]);\r\n\r\n range.append('rect')\r\n .attr('class', 'out-range')\r\n .attr(\"x\", -5)\r\n .attr('y', this.yScale().bandwidth() - this.rx * 2 + 2)\r\n .attr('rx', this.rx)\r\n .attr('ry', this.ry)\r\n .attr('height', this.bar_width * 3)\r\n .attr('width', this.graphWidth + 8)\r\n .attr('fill', 'none')\r\n .attr('stroke', 'white')\r\n .attr('stroke-width', 8);\r\n }\r\n\r\n renderMeasure() {\r\n var mes = this.renderChartContainer()\r\n .selectAll()\r\n .data(this.data)\r\n .enter()\r\n .append(\"g\")\r\n .attr(\"class\", \"measure\")\r\n .style(\"fill\", this.legendColor[1]);\r\n\r\n if (this.data.length == 1 && this.data[0].measures == 0 && this.data[0].markers == 0) {\r\n mes.append(\"path\")\r\n .attr(\"d\", (d, i) => {\r\n return `M${0} ${this.yScale().bandwidth() - this.ry + 4}\r\n h${2.359375}\r\n a${this.rx} ${this.ry} 0 0 1 ${this.rx} ${this.ry}\r\n v 4\r\n a${this.rx} ${this.ry} 0 0 1 ${-this.rx} ${this.ry}\r\n h${-2.359375}Z`\r\n }\r\n ).append('svg:title')\r\n .text(d =>\r\n d[\"measures\"]\r\n );\r\n }\r\n else {\r\n mes.append(\"path\")\r\n .attr(\"d\", (d, i) => {\r\n return `M${0} ${this.yScale().bandwidth() - this.ry + 4}\r\n h${(this.xScale()(d.measures) < this.rx ? this.rx - this.xScale()(d.measures) : this.xScale()(d.measures) - this.rx)}\r\n a${this.rx} ${this.ry} 0 0 1 ${this.rx} ${this.ry}\r\n v 4\r\n a${this.rx} ${this.ry} 0 0 1 ${-this.rx} ${this.ry}\r\n h${(this.xScale()(d.measures) < this.rx ? this.xScale()(d.measures) - this.rx : this.rx - this.xScale()(d.measures))}Z`\r\n }\r\n ).append('svg:title')\r\n .text(d =>\r\n d[\"measures\"]\r\n );\r\n }\r\n }\r\n\r\n renderMark() {\r\n\r\n if (this.data.length == 1 && this.data[0].measures == 0 && this.data[0].markers == 0) {\r\n let mark = this.renderChartContainer()\r\n .selectAll(\".marker\")\r\n .data(this.data)\r\n .enter()\r\n .append('g')\r\n .attr(\"transform\",\r\n \"translate(-105,0)\")\r\n .attr(\"class\", \"marker\")\r\n\r\n mark.append(\"line\")\r\n .attr(\"x1\", d => this.xScale()(d.markers))\r\n .attr(\"x2\", d => this.xScale()(d.markers))\r\n .attr(\"y1\", this.yScale().bandwidth() - this.bar_width + 6)\r\n .attr(\"y2\", this.yScale().bandwidth() + this.bar_width + 6)\r\n .attr(\"stroke-width\", 3)\r\n .attr(\"stroke\", this.legendColor[0])\r\n .attr('fill', this.legendColor[0])\r\n .append('svg:title')\r\n .text(d =>\r\n d[\"markers\"]\r\n );\r\n }\r\n else {\r\n let mark = this.renderChartContainer()\r\n .selectAll(\".marker\")\r\n .data(this.data)\r\n .enter()\r\n .append('g')\r\n .attr(\"class\", \"marker\")\r\n\r\n mark.append(\"line\")\r\n .attr(\"x1\", d => this.xScale()(d.markers))\r\n .attr(\"x2\", d => this.xScale()(d.markers))\r\n .attr(\"y1\", this.yScale().bandwidth() - this.bar_width + 6)\r\n .attr(\"y2\", this.yScale().bandwidth() + this.bar_width + 6)\r\n .attr(\"stroke-width\", 3)\r\n .attr(\"stroke\", this.legendColor[0])\r\n .attr('fill', this.legendColor[0])\r\n .append('svg:title')\r\n .text(d =>\r\n d[\"markers\"]\r\n );\r\n }\r\n }\r\n\r\n renderAxisText() {\r\n this.renderChartContainer().append(\"text\")\r\n .attr(\"transform\",\r\n \"translate(\" + (this.graphWidth / 2) + \" ,\" + (this.height + 70) + \")\")\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"font-family\", \"sans-serif Medium\")\r\n .attr(\"font-size\", \"12px\")\r\n .text();\r\n }\r\n\r\n\r\n renderLegend() {\r\n var nodeWidth = (d) => d.getBoundingClientRect().width;\r\n const legend = this.renderChartContainer().append('g')\r\n .attr('class', 'legend')\r\n .attr('transform', 'translate(-50,0)');\r\n\r\n const lg = legend.selectAll('g')\r\n .data(this.legendKey)\r\n .enter()\r\n .append('g')\r\n .attr(\"class\", (d, i) => \"circlelegend\" + i)\r\n\r\n lg.append('circle')\r\n .attr(\"id\", (d, i) => \"circle\" + i)\r\n .attr('fill', (d, i) => this.legendColor[i])\r\n .attr('cx', 0)\r\n .attr('cy', 0)\r\n .attr('r', 5)\r\n\r\n lg.append('text')\r\n .attr(\"font-family\", \"sans-serif\")\r\n .attr(\"font-size\", \"11px\")\r\n .attr('fill', '#515151')\r\n .attr('x', 10)\r\n .attr('y', 5)\r\n .attr('dy', -1)\r\n .text((d, i) => this.legendKey[i]);\r\n\r\n let offset = 0;\r\n const self = this;\r\n lg.attr('transform', function (d, i) {\r\n let x = offset;\r\n offset += nodeWidth(this) + 10;\r\n return `translate(${x - 67},${self.height + 10})`;\r\n });\r\n\r\n legend.attr('transform', function () {\r\n return `translate(${(self.graphWidth - nodeWidth(this) - 5)},${30})`\r\n });\r\n }\r\n\r\n // @HostListener(\"window:resize\", [\"$event\"])\r\n // onResize(event) {\r\n // common.clearSVG(this.chartIdSelector);\r\n // this.drawGraph();\r\n // }\r\n}\r\n","
\r\n
\r\n
"],"sourceRoot":"webpack:///"}