{"version":3,"file":"908.a3dd43ebf813b1d9.js","mappings":"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","names":["i0","PipelineComponent_div_7_ng_template_1_Template","cardId_r1","PipelineComponent_div_9_ng_template_1_Template","cardId_r2","PipelineComponent","constructor","cd","customDashboardsService","componentsOutletDirectiveService","this","pageTitle","hFilterJSON","dashboard","ngOnInit","destroyCharts","detectChange","NoDataActionType","pageStart","smallCardIdArray","largeCardIdArray","updateComponent","detectViewChanges","loadContents","dashboardOutlet","onResize","event","reCreateExistingCharts","applyNewFilters","displayOptions","filter","applyDisplayOptions","ngOnDestroy","unsubscribeFilters","i1","i2","selectors","viewQuery","rf","ctx","CustomDashboardsOutletDirective","$event","PipelineComponent_div_7_Template","PipelineComponent_div_9_Template","PipelineTransitionComponent","decls","vars","consts","template","PipelineInsightsComponent","PipelineReportsComponent","_r1","ctx_r1","prev","next","startData","totalData","stopData","enablePrev","enableNext","_r3","m_r4","$implicit","clickOnStatusSummary","PipelineActivityTrackerComponent_div_13_div_4_span_3_Template","loanListStatusCountStyle","totalLoanVolume","reusableFunctions","formatMoney","loanCount","toLocaleString","activity_r6","ptF90","application","PipelineActivityTrackerComponent_div_13_div_6_span_34_ng_container_1_Template","estClosingDate","PipelineActivityTrackerComponent_div_13_div_6_span_35_ng_container_1_Template","expiration","PipelineActivityTrackerComponent_div_13_div_6_span_36_ng_container_1_Template","PipelineActivityTrackerComponent_div_13_div_6_div_44_i_1_Template","PipelineActivityTrackerComponent_div_13_div_6_div_44_i_2_Template","PipelineActivityTrackerComponent_div_13_div_6_div_44_i_3_Template","PipelineActivityTrackerComponent_div_13_div_6_div_44_i_4_Template","PipelineActivityTrackerComponent_div_13_div_6_div_44_i_5_Template","lockStatus","_r5","updateCardBookmark","activityCardMenu_r7","cardMenuOpen","clickMilestoneCard","PipelineActivityTrackerComponent_div_13_div_6_span_17_Template","PipelineActivityTrackerComponent_div_13_div_6_span_18_Template","updateCardSnooze","PipelineActivityTrackerComponent_div_13_div_6_span_20_Template","PipelineActivityTrackerComponent_div_13_div_6_span_21_Template","PipelineActivityTrackerComponent_div_13_div_6_div_30_Template","PipelineActivityTrackerComponent_div_13_div_6_span_34_Template","PipelineActivityTrackerComponent_div_13_div_6_span_35_Template","PipelineActivityTrackerComponent_div_13_div_6_span_36_Template","PipelineActivityTrackerComponent_div_13_div_6_span_37_Template","PipelineActivityTrackerComponent_div_13_div_6_span_38_Template","PipelineActivityTrackerComponent_div_13_div_6_span_39_Template","PipelineActivityTrackerComponent_div_13_div_6_span_43_Template","PipelineActivityTrackerComponent_div_13_div_6_div_44_Template","_c1","numberofDays","targetDays","_c2","bookarked","bookmark","employee","_c3","snooze","borrower","loanAmount","lastActivity","lastActivityDt","getFirstAndLastName","primaryIdentifier","selectedSortOption","_c4","PipelineActivityTrackerComponent_div_13_div_4_Template","PipelineActivityTrackerComponent_div_13_spin_loader_5_Template","PipelineActivityTrackerComponent_div_13_div_6_Template","milestone","isColumnLoaded","pipelineActivityData","_c0","maxNumberOfCards","currentPage","maxTotalCardsInColumns","noDataType","size_r9","_r8","handlePageSizeChange","PipelineActivityTrackerComponent_div_15_div_1_option_5_Template","pageSizes","_r10","handleGotoPage","gotoPageNumber","_r11","pageChanged","PipelineActivityTrackerComponent_div_15_div_1_Template","PipelineActivityTrackerComponent_div_15_div_2_Template","PipelineActivityTrackerComponent_div_15_div_3_Template","PipelineActivityTrackerComponent","_activityService","_el","_router","_activatedRoute","listOfLoansService","_bookmarkService","_employeeService","currentUser","defaultCardWidth","activityModal","search","firstLoad","previousHFilterJSON","clickedCard","isPagination","milestonesListAll","milestoneColumnsData","adjustedMilestoneList","checkForLoanDetailsDialogChange","params","subscribe","p","loanNumber","openLoanDetails","action","searchTerm","componentTitle","inputSource","NoDataSourceType","table","pageHeadline","module","moduleIcon","linkArray","moduleLink","linkTitle","showLink","isHome","getCurrentDisplayOptions","getHierarchyFilters","isPageLoaded","topCardNumber","isBookmarkOrSnoozeChanged","isOnstart","navigate","outlets","modal","ngAfterViewInit","loadData","newUrl","url","replace","navigateByUrl","isLoggedIn","scroll","setCardDisplay","displayViewBy","find","item","optionKey","selectedOptions","orderBy","channel","loanType","loanPurpose","isMilestoneListAdjusted","setForLoadingMilestoneData","setCompletionCondision","getMaxCardCount","isSearching","addColumnCardData","colData","d","milstone","columnData","displayOrder","orderIndex","milestoneKey","Object","assign","innitializeMilestoneColumnData","tempMilestoneList","setEmptyName","forEach","m","idx","maxColumnsPerPage","push","milestoneName","setParameters","allBookmarks","filterBy","toString","bookmarkSnoozeJson","topLimit","getMilestoneCarddata","runningMilestoneList","isFreshRun","getBookmarksJson","iteration","restOfNonEmtyData","getActivityCardsDataByMilestone","itm","length","sort","a","b","map","obj","handleMilestoneNavigation","numberOfColsTobeAdded","nonEmptyDataToAdd","slice","concat","restNonEmpty","nonEmpty","error","combinedFilterString","combinedDisplayFilterStringPrevious","setTopCardNumber","getMilestones","res","showLoadMore","trimmedMilestones","getMaxValue","card","currentStatus","changeLoanBookmarkStatus","result","column","originalDataItem","queryParamMap","bookmarkValue","get","handleSearch","data","clickActivityControl","activityItem","tempStop","parseInt","key","totalPages","Math","ceil","largeCard","nativeElement","querySelector","floor","clientWidth","name","responsibleParty","nameTokens","split","changeListOfLoans","getListOfLoansTracker","loanNumbers","dataItem","loanIndex","findIndex","index","menu","toggle","queryParams","titleSuffix","navFromUrl","i3","i4","i5","i6","i7","PipelineActivityTrackerComponent_div_9_Template","PipelineActivityTrackerComponent_spin_loader_11_Template","PipelineActivityTrackerComponent_div_13_Template","PipelineActivityTrackerComponent_div_14_Template","PipelineActivityTrackerComponent_div_15_Template","PipelineUpgradeComponent","setUpgradePage","headline","shortOverview","selligPointHeader","logoPlaceholder","moduleShortDescription","backgroundColor","PipelineInsightsMilestoneStatusComponent_div_7_ng_template_1_Template","PipelineInsightsMilestoneStatusComponent_div_10_ng_template_1_Template","PipelineInsightsMilestoneStatusComponent","simpleTableCardIdList","lockStatusCardIdList","lockExpiringCard","PipelineInsightsMilestoneStatusComponent_div_7_Template","PipelineInsightsMilestoneStatusComponent_div_10_Template","PipelineInsightsMilestoneStatusComponent_ng_template_13_Template","PipelineUpcomingClosingChartOptions","router","getPositionAssignmentsOptions","charttitle","xAxisText","yAxisText","processedSeriesData","route","urlSegment","showLegend","hasDrilldownAccess","isAxisClickable","position","_this","isInialLoadCompleted","chart","spacingTop","events","render","xTicks","xAxis","ticks","tickKeys","keys","points","series","i","xTick","label","pointInf","point","element","textContent","toLowerCase","trim","style","cursor","onclick","loanCategory","closerId","properties","empId","staffingId","positionIdentifier","title","text","align","fontSize","color","fontFamily","credits","enabled","exporting","buttons","contextButton","type","tickInterval","startOnTick","pointIntervalUnit","labels","yAxis","lineWidth","legend","verticalAlign","plotOptions","stacking","minPointLength","states","hover","brightness","bar","groupPadding","gridLineWidth","minorGridLineWidth","dataGrouping","maxPointWidth","marker","radius","radiusPlus","lineWidthPlus","click","tooltip","height","opacity","borderColor","borderRadius","useHTML","shared","followPointer","distance","formatter","thisPeriodTotal","thisPeriodUnitTotal","reduce","s","toolText","value","volume","seriesName","toUpperCase","units","lang","noData","fontWeight","getCalendarOptions","calendarBaseDataset","routerUrl","spacingLeft","spacingRight","categories","opposite","tickWidth","reversed","accessibility","colorAxis","min","minColor","maxColor","layout","margin","transform","itemStyle","y","symbolWidth","floating","custom","dayString","borderWidth","dataLabels","shadow","inside","animation","textOutline","x","options","dateTextColor","date","Date","closingDay","getDate","closingMonth","getMonth","closingYear","getFullYear","ctx_r0","closerCalendarChartCard","simpleDataTableData","PipelineWithPositionAssignedComponent","_pipelineServices","_reusableFunctions","_userAccessService","drilldownBaseUrl","maxAssignedEmps","weekInfo","dayId","dayAbbr","monthArray","isDataready","hasData","hasDrilldown","rowItems","headerItems","footerItems","baseUrl","hasAccess","cardData","cardId","isChartCard","setCaladerbaseDataSet","getComponentData","yValue","dayInf","month","year","dayOfWeek","isPlaceholderDate","daysToExpiration","innitializeCards","simpleTableList","isDataReady","chartCardInfo","closerAssignedChartCard","showTitle","accessToUrl","uniqueId","calendarChartCardInfo","calendarBase","chartTitleData","showChartCustomTitle","chartTile","chartMainValue","chartSecondaryValue","left","right","mainTitle","setAndGetParams","selectedPosition","getPosition","fromDatePeriod","assignmentStatus","staffingKey","console","log","parameters","getCloserAssignedData","setUpcomingClosingCalendarCard","setPositionAssignmentsCard","setSimpleTableCard","setCloserAssinedChartHeightAfterFullLoad","err","setBaseCalendarDates","JSON","parse","stringify","firstDate","lastDate","firstDateNextMonth","lastDatePreviousMon","dateNextMonth","lastMonth","nextMonth","lastMonthPlaceholderStarDate","getDay","hasSetFirstDay","dateOfMonth","dateInf","closingDate","dataExpand","loanUnits","loanVolume","uniqueMonths","getUniqueItemList","uniqueYears","yearCurrent","yearNext","monthCurrent","monthNext","fullMonth_this","fullMonth_next","calendarBaseDatasetThisMonth","calendarBaseDatasetNextMonth","setBaseChart","thisMonthData","setCalendarData","nextMonthData","monthData","calendarBaseDatasetToUpdate","chartSide","interiorData","dataInfo","calDateItem","volumeTotal","calculateSumByProperty","unitTotal","unitTotalFormated","volumeTotalformatted","monthBaseData","checkAccess","drawCalendarChart","calendarDataset","hasDrillDownAccess","chartOptions","setTimeout","Highcharts","fullMonth","chartTitle","setStackChartData","upcomingClosingChartOptions","closerAssignedChartCardOptions","setCloserAssinedChartHeight","useLGScroll","areSimplecardsLoaded","undefined","timeout","closerAssignContainer","document","getElementById","chartHeightTobe","clientHeight","minHeightTobe","width","scrollablePlotArea","minHeight","xDataProperty","xVisibleProperty","seriesProperty","chartType","seriesNames","dataSet","lengendItemsIndex","CONV","REVENUE","GOVT","OTHER","chartItemsIndex","uniqueDataList","stackColumnsData","completeClassDataList","classData","classDataComplete","category","intermediateData","employeeIdentifier","placeHolderData","lfName","loanTypeCategory","purpose","clientOrder","completeClassDataSet","completeData","seriesData","setPointData","legendIndex","getLoanTypeColor","turboThreshold","purposeItems","changeCase","caseType","fieldId","rowData","totalVolume","totalUnits","loanTypeData","sumVolume","sumUnits","addDataTableRowData","simpleCard","toCamelCase","hasAccessToPage","clickTitleValue","applySelectedPosition","PipelineWithPositionAssignedComponent_div_16_Template","PipelineWithPositionAssignedComponent_div_17_Template","PipelineWithPositionAssignedComponent_simple_table_card_44_Template","PipelineInsightsSalesFunnelComponent","pipelineSalesFunnelId","pipelineSalesTableId","PipelineInsightsSalesFunnelComponent_ng_template_7_Template","PipelineInsightsSalesFunnelComponent_ng_template_9_Template","PipelineProductDistributionComponent_ng_template_11_div_0_Template","loading","noDataForCompany","rank","product","dataItem_r6","curVol","volPctTotal","volTotal","volPct","dataItem_r8","curUnits","unitPctTotal","unitPct","PipelineProductDistributionComponent","_pipelineService","_navigationHelper","productSearchTerm","displayOptionValues","status","skip","pageSize","sortable","mode","allowUnsort","gridState","take","scrollable","pageable","refresh","info","previousNext","setNoDataType","getPipelineProduct","calculatePercents","updateGrid","Error","localData","searchResults","orderedData","gridView","total","volumeArr","volumeMax","max","unitArr","unitMax","pageChange","sortChange","cellClickHandler","routeName","navigateTo","searchRows","searchedData","searchCategories","filters","field","operator","ignoreCase","searchTermTokens","logic","PipelineProductDistributionComponent_ng_template_11_Template","PipelineProductDistributionComponent_ng_template_13_Template","PipelineProductDistributionComponent_ng_template_15_Template","PipelineProductDistributionComponent_ng_template_17_Template","PipelineProductDistributionComponent_ng_template_19_Template","PipelineProductDistributionComponent_ng_template_20_Template","PipelineProductDistributionComponent_ng_template_22_Template","PipelineProductDistributionComponent_ng_template_24_Template","PipelineProductDistributionComponent_ng_template_25_Template","PipelineProductDistributionComponent_ng_template_27_Template","PipelineBorrowerCharacteristicsComponent_div_7_ng_template_1_Template","chartId_r1","PipelineBorrowerCharacteristicsComponent_div_9_ng_template_1_Template","chartId_r2","PipelineBorrowerCharacteristicsComponent","donutChartIdList","barChartIdList","PipelineBorrowerCharacteristicsComponent_div_7_Template","PipelineBorrowerCharacteristicsComponent_div_9_Template","PipelineLoanCharacteristicsComponent_div_7_ng_template_1_Template","PipelineLoanCharacteristicsComponent_div_9_ng_template_1_Template","PipelineLoanCharacteristicsComponent","PipelineLoanCharacteristicsComponent_div_7_Template","PipelineLoanCharacteristicsComponent_div_9_Template","PipelineInsightsOperationsAssignmentsComponent_div_7_ng_template_1_Template","PipelineInsightsOperationsAssignmentsComponent","selectedDisplayOptions","loanStatus","PipelineInsightsOperationsAssignmentsComponent_div_7_Template","PipelineInsightsOperationsPipelineComponent_div_8_ng_template_1_Template","PipelineInsightsOperationsPipelineComponent_div_10_ng_template_1_Template","PipelineInsightsOperationsPipelineComponent_div_16_ng_template_1_Template","cardId_r3","PipelineInsightsOperationsPipelineComponent","smallCardIdList","tableIdList","PipelineInsightsOperationsPipelineComponent_div_8_Template","PipelineInsightsOperationsPipelineComponent_div_10_Template","PipelineInsightsOperationsPipelineComponent_ng_template_13_Template","PipelineInsightsOperationsPipelineComponent_div_16_Template","PipelineInsightsTrendsComponent_div_7_ng_template_1_Template","PipelineInsightsTrendsComponent","PipelineInsightsTrendsComponent_div_7_Template","PipelineLoanCategoryDistributionComponent_ng_template_10_div_0_Template","dataItem_r5","dataItem_r7","PipelineLoanCategoryDistributionComponent","pipelineService","getData","displayActivePipelineLoanCategoryDistribution","PipelineLoanCategoryDistributionComponent_ng_template_10_Template","PipelineLoanCategoryDistributionComponent_ng_template_12_Template","PipelineLoanCategoryDistributionComponent_ng_template_14_Template","PipelineLoanCategoryDistributionComponent_ng_template_16_Template","PipelineLoanCategoryDistributionComponent_ng_template_17_Template","PipelineLoanCategoryDistributionComponent_ng_template_19_Template","PipelineLoanCategoryDistributionComponent_ng_template_21_Template","PipelineLoanCategoryDistributionComponent_ng_template_22_Template","PipelineLoanCategoryDistributionComponent_ng_template_24_Template","legend_r2","ctx_r2","PipelineByLoanCategoryComponent_ng_template_16_div_0_Template","PipelineByLoanCategoryComponent_ng_template_31_div_0_Template","dataItem_r11","dataItem_r13","pipelineRoutes","path","component","canActivate","AuthGuardService","PipelineByLoanCategoryComponent","navigationHelper","userAccessService","entitySort","dir","largeDataCard","tableDataProperties","gridData","initialPageSize","initialSkip","maxHeight","recordSelection","kendoGridSelectById","isDataLoaded","getChartData","combinedParams","loanTypeGroup","displayPipelineLoanTypeGroupDistribution","prepareDonutData","prepareGridData","categoryColors","prepareCategoryColors","allLoanTypes","loanTypeColors","prepareClosingMixCenterText","donutChartData","setDonutChartData","unitDonutChartData","donutLegend","getLargeCurrencyFormat","description","unitDonutLegend","filterType","dataType","loanTypeCat","filterValue","percentage","alternatePercentage","upperGridView","lowerGridView","addedTypes","colors","getRandomHexColor","PipelineByLoanCategoryComponent_div_9_Template","PipelineByLoanCategoryComponent_ng_template_16_Template","PipelineByLoanCategoryComponent_ng_template_18_Template","PipelineByLoanCategoryComponent_ng_template_19_Template","PipelineByLoanCategoryComponent_ng_template_21_Template","PipelineByLoanCategoryComponent_ng_template_23_Template","PipelineByLoanCategoryComponent_ng_template_24_Template","PipelineByLoanCategoryComponent_ng_template_26_Template","PipelineByLoanCategoryComponent_ng_template_27_Template","PipelineByLoanCategoryComponent_ng_template_31_Template","PipelineByLoanCategoryComponent_ng_template_33_Template","PipelineByLoanCategoryComponent_ng_template_35_Template","PipelineByLoanCategoryComponent_ng_template_37_Template","PipelineByLoanCategoryComponent_ng_template_39_Template","PipelineByLoanCategoryComponent_ng_template_40_Template","PipelineByLoanCategoryComponent_ng_template_42_Template","PipelineByLoanCategoryComponent_ng_template_44_Template","PipelineByLoanCategoryComponent_ng_template_45_Template","PipelineByLoanCategoryComponent_ng_template_47_Template","PipelineRoutingModule","RouterModule","forChild","PipelineModule","PipelineService","PipelineActivityService","PipelineLoanCharacteristicsService","PipelineLockStatusService","PipelineOperationService","PipelineSalesService","imports","CommonModule","SharedModule","GridModule","ThirdPartyModule","SearchDialogComponent","resetSearch","clearSearchTerm","searchTimeoutStorage","placeHolder","clickAwayClose","popupTop","searchIconFontSize","searchIconActionColors","searchBoxHeight","timeoutDuration","searchOutput","EventEmitter","isPopupBoxOpen","isSearchEmpty","searchIcon","suffix","popupBox","visibility","top","dialogSearchTerm","_dialogSearchTerm","clearTimeout","emitSearchOutput","setClearIcon","onKeydownHandler","closePopupDialog","openPopupDialog","openSearchDialog","setPopupboxPosition","getPopupDialogStatus","cancelButtonClick","sufx","clearButtonClick","emit","clearIcon","pageWidth","documentElement","popoupParantContainer","getBoundingClientRect","hostBindings"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./src/app/modules/pipeline/components/pipeline-at-a-glance/pipeline.component.html","./src/app/modules/pipeline/components/pipeline-at-a-glance/pipeline.component.ts","./src/app/modules/pipeline/components/pipeline-transition/pipeline-transition.component.ts","./src/app/modules/pipeline/components/pipeline-transition/pipeline-transition.component.html","./src/app/modules/pipeline/components/pipeline-insights/pipeline-insights.component.ts","./src/app/modules/pipeline/components/pipeline-insights/pipeline-insights.component.html","./src/app/modules/pipeline/components/pipeline-reports/pipeline-reports.component.ts","./src/app/modules/pipeline/components/pipeline-reports/pipeline-reports.component.html","./src/app/modules/pipeline/components/pipeline-activity-tracker/pipeline-activity-tracker.component.html","./src/app/modules/pipeline/components/pipeline-activity-tracker/pipeline-activity-tracker.component.ts","./src/app/modules/pipeline/components/pipeline-upgrade/pipeline-upgrade.component.ts","./src/app/modules/pipeline/components/pipeline-upgrade/pipeline-upgrade.component.html","./src/app/modules/pipeline/components/pipeline-insights-milestones-status/pipeline-insights-milestones.component.html","./src/app/modules/pipeline/components/pipeline-insights-milestones-status/pipeline-insights-milestones.component.ts","./src/app/modules/shared/classes/pipeline-upcoming-closing-chart-options.ts","./src/app/modules/pipeline/components/pipeline-with-position-assigned/pipeline-with-position-assigned.component.html","./src/app/modules/pipeline/components/pipeline-with-position-assigned/pipeline-with-position-assigned.component.ts","./src/app/modules/pipeline/components/pipeline-insights-sales-funnel/pipeline-insights-sales-funnel.component.ts","./src/app/modules/pipeline/components/pipeline-insights-sales-funnel/pipeline-insights-sales-funnel.component.html","./src/app/modules/pipeline/components/pipeline-product-distribution/pipeline-product-distribution.component.html","./src/app/modules/pipeline/components/pipeline-product-distribution/pipeline-product-distribution.component.ts","./src/app/modules/pipeline/components/pipeline-borrower-characteristics/pipeline-borrower-characteristics.component.html","./src/app/modules/pipeline/components/pipeline-borrower-characteristics/pipeline-borrower-characteristics.component.ts","./src/app/modules/pipeline/components/pipeline-loan-characteristics/pipeline-loan-characteristics.component.html","./src/app/modules/pipeline/components/pipeline-loan-characteristics/pipeline-loan-characteristics.component.ts","./src/app/modules/pipeline/components/pipeline-insights-operations-assignments/pipeline-insights-operations-assignments.component.html","./src/app/modules/pipeline/components/pipeline-insights-operations-assignments/pipeline-insights-operations-assignments.component.ts","./src/app/modules/pipeline/components/pipeline-insights-operations-pipeline/pipeline-insights-operations-pipeline.component.html","./src/app/modules/pipeline/components/pipeline-insights-operations-pipeline/pipeline-insights-operations-pipeline.component.ts","./src/app/modules/pipeline/components/pipeline-insights-trends/pipeline-insights-trends.component.html","./src/app/modules/pipeline/components/pipeline-insights-trends/pipeline-insights-trends.component.ts","./src/app/modules/pipeline/components/pipeline-loan-category-distribution/pipeline-loan-category-distribution.component.html","./src/app/modules/pipeline/components/pipeline-loan-category-distribution/pipeline-loan-category-distribution.component.ts","./src/app/modules/pipeline/components/pipeline-by-loan-category/pipeline-by-loan-category.component.html","./src/app/modules/pipeline/pipeline.routing.module.ts","./src/app/modules/pipeline/components/pipeline-by-loan-category/pipeline-by-loan-category.component.ts","./src/app/modules/pipeline/pipeline.module.ts","./src/app/modules/shared/components/search-dialog/search-dialog.component.ts","./src/app/modules/shared/components/search-dialog/search-dialog.component.html"],"sourcesContent":["\n\n
\n \n
\n \n \n \n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n","import {\n ChangeDetectorRef,\n Component,\n HostListener,\n OnInit,\n QueryList,\n ViewChildren,\n} from '@angular/core';\nimport { DisplayOptions } from '../../../shared/interfaces/display-options';\nimport { NoDataActionType } from '../../../shared/interfaces/no-data';\nimport { CustomDashboardsOutletDirective } from '../../../my-limegear/my-limegear-outlet.directive';\nimport { CustomDashboardsService } from '../../../my-limegear/services/my-limegear.service';\nimport { ComponentsOutletDirectiveService } from '../../../my-limegear/services/component-outlet-directive.service';\n\n@Component({\n selector: 'app-pipeline',\n templateUrl: './pipeline.component.html',\n styleUrls: ['./pipeline.component.scss'],\n})\nexport class PipelineComponent implements OnInit {\n pageTitle = 'Pipeline At a Glance';\n displayOptions: DisplayOptions[];\n hFilterJSON = '';\n smallCardIdArray: Array;\n largeCardIdArray: Array;\n dashboard = 'pipeline';\n\n constructor(\n private cd: ChangeDetectorRef,\n private customDashboardsService: CustomDashboardsService,\n private componentsOutletDirectiveService: ComponentsOutletDirectiveService\n ) {}\n\n @ViewChildren(CustomDashboardsOutletDirective)\n dashboardOutlet: QueryList;\n\n ngOnInit() {\n this.customDashboardsService.destroyCharts();\n this.customDashboardsService.detectChange(\n '',\n [],\n false,\n false,\n NoDataActionType.pageStart,\n this.dashboard\n );\n this.smallCardIdArray = [\n 'new-apps',\n 'submit-proc',\n 'submit-uw',\n 'new-locks',\n 'expiring',\n 'expired-locks',\n ];\n\n this.largeCardIdArray = [\n 'new-applications-per-period',\n 'new-locks-per-period',\n 'pipeline_sales_funnel',\n 'pipeline_sales',\n ];\n this.updateComponent();\n }\n\n updateComponent() {\n this.componentsOutletDirectiveService.detectViewChanges(this.cd);\n this.componentsOutletDirectiveService.loadContents(this.dashboardOutlet);\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.customDashboardsService.reCreateExistingCharts();\n }\n\n applyNewFilters(event: string) {\n this.customDashboardsService.destroyCharts();\n this.hFilterJSON = event;\n this.updateComponent();\n this.customDashboardsService.detectChange(\n this.hFilterJSON,\n this.displayOptions,\n true,\n false,\n NoDataActionType.filter,\n this.dashboard\n );\n }\n\n applyDisplayOptions(event: DisplayOptions[]) {\n this.customDashboardsService.destroyCharts();\n this.displayOptions = event;\n this.updateComponent();\n this.customDashboardsService.detectChange(\n this.hFilterJSON,\n this.displayOptions,\n false,\n true,\n NoDataActionType.filter,\n this.dashboard\n );\n }\n\n ngOnDestroy() {\n this.customDashboardsService.unsubscribeFilters();\n this.customDashboardsService.destroyCharts();\n }\n}\n","import { Component, OnInit, AfterViewInit } from '@angular/core';\n\n@Component({\n selector: 'app-pipeline-transition',\n templateUrl: './pipeline-transition.component.html',\n styleUrls: ['./pipeline-transition.component.scss'],\n})\nexport class PipelineTransitionComponent implements OnInit {\n constructor() {}\n ngOnInit() {}\n}\n","\n\n\n\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-pipeline-insights',\n templateUrl: './pipeline-insights.component.html',\n styleUrls: ['./pipeline-insights.component.scss'],\n})\nexport class PipelineInsightsComponent implements OnInit {\n constructor() {}\n\n ngOnInit() {}\n}\n","\n\n\n\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-pipeline-reports',\n templateUrl: './pipeline-reports.component.html',\n styleUrls: ['./pipeline-reports.component.scss'],\n})\nexport class PipelineReportsComponent implements OnInit {\n constructor() {}\n\n ngOnInit() {}\n}\n","\n\n\n

\n This page is a placeholder.\n

\n","\n\n\n
\n
\n
\n \n \n \n
\n
\n
\n \n \n
\n
\n
\n Viewing Status\n \n {{ startData + (totalData > 0 ? 1 : 0) }}-{{ stopData }}\n of\n {{ totalData }}\n \n
\n
\n \n Prev\n \n  \n \n Next\n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n {{ m.milestone }}\n
\n \n \n {{\n m.totalLoanVolume !== null\n ? reusableFunctions.formatMoney(m.totalLoanVolume)\n : '$0'\n }}\n \n / \n \n {{ m.loanCount !== null ? m.loanCount.toLocaleString() : '0' }}\n \n
\n
\n \n \n \n activity.targetDays\n }\"\n >
\n
\n
\n \n \n  \n {{ activity.employee }}\n \n \n \n
\n \n \n Open Loan\n \n \n \n Bookmark Loan\n Unbookmark Loan\n \n \n \n Snooze Loan\n Unsnooze Loan\n \n \n
\n
\n
\n
\n\n
\n
\n {{ activity.borrower }} -\n {{ activity.loanAmount | currency : 'USD' : 'symbol' : '1.0' }}\n
\n
\n {{ activity.lastActivity }} -\n {{ activity.lastActivityDt | date : 'MM/dd/yyyy' : 'UTC' }}\n
\n
\n
\n \n \n
\n
\n \n \n
\n \n \n \n Application:\n {{ activity.application | date : 'MM/dd/yyyy' : 'UTC' }}\n \n \n \n \n Est Close:\n {{\n activity.estClosingDate\n | date : 'MM/dd/yyyy' : 'UTC'\n }}\n \n \n \n \n Expiration:\n {{ activity.expiration | date : 'MM/dd/yyyy' : 'UTC' }}\n \n \n \n \n \n
\n
\n activity.targetDays\n }\"\n >\n {{ activity.numberofDays }} day 1 ||\n activity.numberofDays == 0\n \"\n >s\n \n \n
\n \n \n \n \n \n \n
\n
\n
\n
\n \n \n \n \n
\n \n
\n
\n \n
Items per column:
\n
\n \n
\n
\n
\n
Go to page:
\n
\n \n
\n
\n
\n \n \n
\n \n \n\n","import { Component, OnInit, ElementRef, OnDestroy } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport {\n IMilestoneActivityData,\n IActivityDetail,\n IMilestone,\n IMiestoneActivityParams,\n IMilestoneActivityCard,\n} from '../../interfaces/pipeline-activity-data';\nimport { PipelineActivityService } from '../../services/pipeline-activity.service';\nimport { ReusableFunctions } from '../../../shared/classes/reusable-functions';\nimport { DisplayOptions } from '../../../shared/interfaces/display-options';\nimport { LoanDetailsListOfLoansService } from '../../../shared/loan-details-modal/loan-details-list-of-loans.service';\nimport { LoanDetailsListTracker } from '../../../shared/loan-details-modal/loan-details-data';\nimport {\n NoDataTypes,\n NoDataActionType,\n NoDataSourceType,\n} from '../../../shared/interfaces/no-data';\nimport { IPageHeadline } from '../../../shared/classes/page-title-parameters';\nimport { BookmarkService } from '../../../shared/services/bookmark.service';\nimport { EmployeeService } from 'app/modules/shared/services/employee.service';\nimport { IProfilePicture } from 'app/modules/shared/interfaces/profile-picture';\nimport { CurrentUserStateService } from '../../../shared/services/current-user-state.service';\nimport { MatMenuTrigger } from '@angular/material/menu';\n\n@Component({\n selector: 'app-pipeline-activity-tracker',\n templateUrl: './pipeline-activity-tracker.component.html',\n styleUrls: ['./pipeline-activity-tracker.component.scss'],\n})\nexport class PipelineActivityTrackerComponent implements OnInit, OnDestroy {\n maxColumnsPerPage: number;\n maxNumberOfCards: number = 10;\n defaultCardWidth: number = 350;\n startData: number = 0;\n stopData: number;\n totalData: number;\n enableNext: boolean = false;\n enablePrev: boolean = false;\n activityModal: boolean = false;\n activityItem: IMilestoneActivityData;\n activityDetail: IActivityDetail;\n search: string = '';\n hFilterJSON = '';\n displayOptions: DisplayOptions[];\n firstLoad: boolean = true;\n selectedSortOption: any;\n isPageLoaded: boolean;\n noDataType: NoDataTypes;\n pageHeadline: IPageHeadline;\n showLoadMore: boolean;\n displayViewBy: string;\n combinedDisplayFilterStringPrevious: string;\n orderBy: string;\n clickedCard: IMilestoneActivityData;\n milestonesListAll: IMilestone[];\n milestonesToDispay: IMilestone[];\n topCardNumber: number;\n milestoneColumnsData: IMilestoneActivityCard[];\n previousHFilterJSON = '';\n currentDisplayMilestonePlaceHolder: IMilestoneActivityCard[];\n isSearching: boolean;\n isPagination: boolean;\n currentPage: number;\n maxTotalCardsInColumns: number;\n pageSizes = [10, 20, 30, 40, 50];\n gotoPageNumber: string;\n isMilestoneListAdjusted: boolean;\n adjustedMilestoneList: IMilestone[];\n isBookmarkOrSnoozeChanged: boolean;\n isOnstart: boolean;\n profilePictures: IProfilePicture[];\n channel: string;\n loanType: string;\n loanPurpose: string;\n\n constructor(\n private _activityService: PipelineActivityService,\n private _el: ElementRef,\n private _router: Router,\n private _activatedRoute: ActivatedRoute,\n private reusableFunctions: ReusableFunctions,\n private listOfLoansService: LoanDetailsListOfLoansService,\n private _bookmarkService: BookmarkService,\n private _employeeService: EmployeeService,\n private currentUser: CurrentUserStateService\n ) {}\n\n ngOnInit() {\n this.clickedCard = {} as IMilestoneActivityData;\n this.isPagination = false;\n this.milestonesListAll = [];\n this.milestoneColumnsData = [];\n this.adjustedMilestoneList = [];\n this.checkForLoanDetailsDialogChange();\n this._activatedRoute.params.subscribe((p) => {\n if (p && p['loanNumber']) {\n this.openLoanDetails(p['loanNumber']);\n }\n });\n const pageTitle = 'Sales Pipeline Activity';\n this.noDataType = {\n action: NoDataActionType.pageStart,\n searchTerm: this.search,\n componentTitle: pageTitle,\n inputSource: NoDataSourceType.table,\n };\n\n this.pageHeadline = {\n module: 'pipeline',\n moduleIcon: 'fa-bolt',\n pageTitle: pageTitle,\n linkArray: [\n {\n moduleLink: 'pipeline',\n linkTitle: 'Pipeline Home',\n showLink: true,\n isHome: true,\n },\n ],\n };\n\n this.displayOptions = this.reusableFunctions.getCurrentDisplayOptions(\n '/pipeline/activity-tracker'\n );\n this.hFilterJSON = this.reusableFunctions.getHierarchyFilters();\n this.previousHFilterJSON = this.hFilterJSON;\n this.isPageLoaded = false;\n this.topCardNumber = 0;\n this.maxTotalCardsInColumns = 10;\n this.isBookmarkOrSnoozeChanged = false;\n this.isOnstart = true;\n }\n\n openLoanDetails(loanNumber: any) {\n this._router.navigate([{ outlets: { modal: 'loanDetails' + '/' + loanNumber } }]);\n }\n\n ngAfterViewInit() {\n this.search = '';\n this.loadData();\n }\n\n ngOnDestroy() {\n /* Remove modal params when navigating away from activity tracker */\n let newUrl = this._router.url.replace(/\\(modal.*\\)/, '');\n this._router.navigateByUrl(newUrl);\n }\n\n loadData() {\n if (this.currentUser.isLoggedIn()) {\n // Weird bug where page is trying to load when logged out & the error prevents redirect to login page\n scroll(0, 0);\n this.setCardDisplay();\n this.displayViewBy = this.displayOptions.find(\n (item) => item.optionKey === 'viewByMilestones'\n ).selectedOptions;\n this.orderBy = this.displayOptions.find(\n (item) => item.optionKey === 'sortByMilestones'\n ).selectedOptions;\n this.channel = this.displayOptions.find(\n (item) => item.optionKey === 'channel'\n ).selectedOptions;\n this.loanType = this.displayOptions.find(\n (item) => item.optionKey === 'loanCategory'\n ).selectedOptions;\n this.loanPurpose = this.displayOptions.find(\n (item) => item.optionKey === 'loanPurpose'\n ).selectedOptions;\n\n this.isMilestoneListAdjusted = false;\n this.setForLoadingMilestoneData();\n } else {\n this._router.navigate(['/login']);\n }\n }\n\n setCompletionCondision() {\n this.getMaxCardCount();\n this.isSearching = false;\n this.isPagination = false;\n this.isPageLoaded = true;\n this.isOnstart = false;\n this.isMilestoneListAdjusted = true;\n this.isBookmarkOrSnoozeChanged = false;\n }\n\n addColumnCardData(\n colData: IMilestoneActivityCard,\n d: IMilestoneActivityCard,\n milstone: IMilestone\n ) {\n let columnData = colData ? colData : ({} as IMilestoneActivityCard);\n columnData.pipelineActivityData = d.pipelineActivityData ? d.pipelineActivityData : [];\n columnData.displayOrder = milstone.orderIndex;\n columnData.loanCount = d.loanCount ? d.loanCount : 0;\n columnData.totalLoanVolume = d.totalLoanVolume ? d.totalLoanVolume : 0;\n columnData.isColumnLoaded = true;\n columnData.loanListStatusCountStyle =\n d.loanCount > 0 ? 'loan-list-status-count' : 'loan-list-status-zero-count';\n columnData.milestoneKey = milstone.milestoneKey;\n columnData.milestone = d.milestone;\n return Object.assign({}, columnData);\n }\n\n innitializeMilestoneColumnData(tempMilestoneList: IMilestone[], setEmptyName = false) {\n this.milestoneColumnsData = [];\n tempMilestoneList.forEach((m, idx) => {\n if (idx < this.maxColumnsPerPage) {\n this.milestoneColumnsData.push({\n milestone: setEmptyName ? null : m.milestoneName,\n displayOrder: m.orderIndex,\n totalLoanVolume: null,\n pipelineActivityData: [],\n loanCount: null,\n isColumnLoaded: false,\n milestoneKey: m.milestoneKey,\n });\n }\n });\n }\n\n setParameters(milstone: IMilestone, allBookmarks: string) {\n let params: IMiestoneActivityParams = {\n filterBy: this.displayViewBy,\n orderBy: this.orderBy,\n milestone: milstone.milestoneName,\n milestoneKey: milstone.milestoneKey.toString(),\n hFilterJSON: this.hFilterJSON,\n bookmarkSnoozeJson: allBookmarks === null || allBookmarks === '' ? null : allBookmarks,\n topLimit: this.topCardNumber.toString(),\n maxNumberOfCards: this.maxNumberOfCards.toString(),\n searchTerm: this.search,\n channel: this.channel,\n loanType: this.loanType,\n loanPurpose: this.loanPurpose,\n };\n return params;\n }\n\n getMilestoneCarddata(runningMilestoneList: IMilestone[], isFreshRun = false) {\n try {\n this.innitializeMilestoneColumnData(runningMilestoneList, true);\n // TODO: Add error handling for bookmarks. Without bookmarks, the other data can be obtained.\n // TODO: Always SHow Items per column\n // TODO: Replace search box with search-dialog component\n this._bookmarkService.getBookmarksJson().subscribe((allBookmarks: string) => {\n let iteration = 0;\n let restOfNonEmtyData: IMilestoneActivityCard[] = [];\n runningMilestoneList.forEach((milstone) => {\n let params = this.setParameters(milstone, allBookmarks);\n\n this._activityService.getActivityCardsDataByMilestone(params).subscribe(\n (d) => {\n let columnData = this.milestoneColumnsData.find(\n (itm) => itm.milestoneKey === milstone.milestoneKey\n );\n\n if (d) {\n if (d.loanCount > 0) {\n let colData = {} as IMilestoneActivityCard;\n this.addColumnCardData(\n columnData ? columnData : colData,\n d,\n milstone\n );\n\n if (!columnData) {\n restOfNonEmtyData.push(colData);\n }\n let adjustMilestone = this.adjustedMilestoneList.find(\n (itm) => itm.milestoneKey === milstone.milestoneKey\n );\n\n if (!adjustMilestone && !this.isMilestoneListAdjusted) {\n this.adjustedMilestoneList.push({\n milestoneName: d.milestone,\n milestoneKey: milstone.milestoneKey,\n orderIndex: milstone.orderIndex,\n });\n }\n } else {\n if (columnData) {\n this.milestoneColumnsData =\n this.milestoneColumnsData.filter(\n (itm) => itm.milestoneKey !== milstone.milestoneKey\n );\n }\n }\n }\n\n if (iteration === runningMilestoneList.length - 1) {\n this.adjustedMilestoneList.sort(\n (a, b) => a.orderIndex - b.orderIndex\n );\n\n restOfNonEmtyData.sort((a, b) => a.displayOrder - b.displayOrder);\n this.milestonesListAll = this.adjustedMilestoneList.map((obj) => ({\n ...obj,\n }));\n\n if (isFreshRun) {\n this.handleMilestoneNavigation(this.adjustedMilestoneList);\n }\n\n let numberOfColsTobeAdded =\n this.maxColumnsPerPage - this.milestoneColumnsData.length;\n\n if (numberOfColsTobeAdded > 0) {\n let nonEmptyDataToAdd = restOfNonEmtyData.slice(\n 0,\n numberOfColsTobeAdded\n );\n this.milestoneColumnsData =\n this.milestoneColumnsData.concat(nonEmptyDataToAdd);\n restOfNonEmtyData = restOfNonEmtyData.filter((restNonEmpty) => {\n let itemToExclude = nonEmptyDataToAdd.find(\n (nonEmpty) =>\n restNonEmpty.milestone === nonEmpty.milestone\n );\n return itemToExclude ? false : true;\n });\n }\n this.milestoneColumnsData.sort(\n (a, b) => a.displayOrder - b.displayOrder\n );\n this.setCompletionCondision();\n }\n iteration += 1;\n },\n // TODO: Add error for individual milstone\n () => {\n this.noDataType.action = NoDataActionType.error;\n this.milestoneColumnsData = [];\n this.isPageLoaded = true;\n }\n );\n });\n });\n } catch (e) {}\n }\n\n setForLoadingMilestoneData() {\n this.isPageLoaded = false;\n let combinedFilterString =\n this.displayViewBy + this.channel + this.loanPurpose + this.loanType;\n let hasFiltersChanged = this.combinedDisplayFilterStringPrevious !== combinedFilterString;\n let isHierarchyFilterChanged = this.hFilterJSON !== this.previousHFilterJSON;\n\n let isFreshRun =\n hasFiltersChanged ||\n isHierarchyFilterChanged ||\n this.isBookmarkOrSnoozeChanged ||\n this.isSearching ||\n this.isOnstart;\n\n if (isFreshRun) {\n this.adjustedMilestoneList = [];\n this.currentPage = 1;\n this.setTopCardNumber();\n this.combinedDisplayFilterStringPrevious = combinedFilterString;\n this.previousHFilterJSON = this.hFilterJSON;\n\n if (!this.isSearching) {\n this.search = '';\n this.isSearching = false;\n }\n }\n\n this.gotoPageNumber = this.currentPage.toString();\n this.isPageLoaded = false;\n this.selectedSortOption = this.orderBy;\n\n if (!isFreshRun) {\n let trimmedMilestones = this.adjustedMilestoneList\n .map((obj) => ({ ...obj }))\n .slice(this.startData, this.stopData);\n\n this.getMilestoneCarddata(trimmedMilestones);\n } else {\n this._activityService.getMilestones(this.displayViewBy).subscribe(\n (res) => {\n this.getMilestoneCarddata(res, isFreshRun);\n if (res.length === 0) {\n this.isPageLoaded = true;\n this.showLoadMore = false;\n } else {\n this.showLoadMore = true;\n }\n },\n () => {\n this.noDataType.action = NoDataActionType.error;\n this.milestoneColumnsData = [];\n this.isPageLoaded = true;\n }\n );\n }\n }\n\n getMaxCardCount() {\n this.maxTotalCardsInColumns = this.reusableFunctions.getMaxValue(\n this.milestoneColumnsData,\n 'loanCount'\n );\n }\n\n updateCardBookmark(card: IMilestoneActivityData) {\n const currentStatus = card.bookmark;\n card.bookmark = !currentStatus;\n\n this._bookmarkService\n .changeLoanBookmarkStatus(card.loanNumber, null, card.bookmark)\n .subscribe(\n (result) => {\n if (result < 1) {\n card.bookmark = currentStatus;\n } else {\n this.milestoneColumnsData.forEach((column) => {\n if (column.pipelineActivityData) {\n let originalDataItem = column.pipelineActivityData.find(\n (d) => d.loanNumber === card.loanNumber\n );\n if (originalDataItem) {\n originalDataItem.bookmark = card.bookmark;\n }\n }\n });\n\n if (this.displayViewBy === 'Bookmarked') {\n this.isBookmarkOrSnoozeChanged = true;\n this.loadData();\n }\n }\n },\n (error) => {}\n );\n }\n\n updateCardSnooze(card: IMilestoneActivityData) {\n const currentStatus = card.snooze;\n card.snooze = !currentStatus;\n this._bookmarkService\n .changeLoanBookmarkStatus(card.loanNumber, card.snooze, null)\n .subscribe(\n (result) => {\n if (result < 1) {\n card.snooze = currentStatus;\n } else {\n this.milestoneColumnsData.forEach((column) => {\n if (column.pipelineActivityData) {\n let originalDataItem = column.pipelineActivityData.find(\n (d) => d.loanNumber === card.loanNumber\n );\n if (originalDataItem) {\n originalDataItem.snooze = card.snooze;\n }\n }\n });\n if (this.displayViewBy === 'Snoozed') {\n this.isBookmarkOrSnoozeChanged = true;\n this.loadData();\n }\n }\n },\n (error) => {\n throw error;\n }\n );\n }\n\n checkForLoanDetailsDialogChange() {\n this._activatedRoute.queryParamMap.subscribe(\n (params) => {\n let bookmarkValue = params.get('bookmarkValue');\n if (this.clickedCard && params.get('isLoanDetails') === 'true' && bookmarkValue) {\n this.clickedCard.bookmark =\n bookmarkValue === 'true'\n ? true\n : bookmarkValue === 'false'\n ? false\n : this.clickedCard.bookmark;\n }\n },\n (error) => {\n throw error;\n }\n );\n }\n\n handleSearch(searchTerm) {\n this.search = searchTerm;\n this.currentPage = 1;\n this.setTopCardNumber();\n this.noDataType.action = NoDataActionType.search;\n this.noDataType.searchTerm = this.search;\n this.isSearching = true;\n this.loadData();\n }\n\n handleMilestoneNavigation(data: Array) {\n if (data) {\n this.startData = 0;\n this.totalData = data.length;\n this.stopData =\n data.length < this.maxColumnsPerPage ? data.length : this.maxColumnsPerPage;\n\n this.enableNext = this.stopData < this.totalData;\n this.enablePrev = this.startData > 0;\n\n if (data.length === 0) {\n this.startData = 0;\n this.stopData = 0;\n }\n }\n }\n\n handlePageSizeChange() {\n this.currentPage = 1;\n this.isPagination = true;\n this.setTopCardNumber();\n this.loadData();\n }\n\n clickActivityControl() {\n this.activityModal = !this.activityModal;\n if (this.activityItem) {\n this.activityItem = null;\n }\n }\n\n next() {\n const tempStop = this.stopData;\n this.startData = tempStop;\n\n if (this.milestonesListAll.length <= this.maxColumnsPerPage + this.startData) {\n this.stopData = this.milestonesListAll.length;\n } else {\n this.stopData = this.maxColumnsPerPage + this.startData;\n }\n this.enablePrev = this.startData > 0;\n this.enableNext = this.stopData < this.totalData;\n this.currentPage = 1;\n this.setTopCardNumber();\n this.loadData();\n }\n\n prev() {\n const tempStop = this.startData;\n this.stopData = tempStop;\n this.startData = tempStop - this.maxColumnsPerPage;\n this.enablePrev = this.startData > 0;\n this.enableNext = this.stopData < this.totalData;\n this.currentPage = 1;\n this.setTopCardNumber();\n this.loadData();\n }\n\n pageChanged(event) {\n this.currentPage = event;\n this.setTopCardNumber();\n this.isPagination = true;\n this.loadData();\n }\n\n handleGotoPage(event: KeyboardEvent) {\n if (+this.gotoPageNumber === parseInt(this.gotoPageNumber) && event.key === 'Enter') {\n let totalPages = Math.ceil(this.maxTotalCardsInColumns / this.maxNumberOfCards);\n if (parseInt(this.gotoPageNumber) > 0 && parseInt(this.gotoPageNumber) <= totalPages) {\n this.currentPage = parseInt(this.gotoPageNumber);\n this.setTopCardNumber();\n this.isPagination = true;\n this.loadData();\n }\n }\n }\n\n setTopCardNumber() {\n this.topCardNumber = this.maxNumberOfCards * (this.currentPage - 1);\n }\n\n setCardDisplay() {\n /// TODO: Add flag to prevent multiple calls\n const largeCard = this._el.nativeElement.querySelector('.large-card');\n\n if (largeCard) {\n let clientPageWidth = largeCard.clientWidth - 40;\n let floor = Math.floor(clientPageWidth / this.defaultCardWidth);\n\n this.maxColumnsPerPage = floor < 1 ? 1 : floor;\n }\n }\n\n onResize(event) {\n this.loadData();\n }\n\n getFirstAndLastName(item: IMilestoneActivityData) {\n let name;\n\n if (item.responsibleParty) {\n name = item.responsibleParty;\n } else {\n name = item.employee;\n }\n\n if (name) {\n const nameTokens = name.split(', ', 2);\n if (nameTokens.length > 1) {\n return nameTokens[1].split(' ', 1) + ' ' + nameTokens[0].split(' ', 1);\n }\n return name;\n }\n }\n\n clickMilestoneCard(item: IMilestoneActivityData) {\n this.clickedCard = item;\n this.listOfLoansService.changeListOfLoans(this.getListOfLoansTracker(item));\n this._router.navigate([{ outlets: { modal: 'loanDetails' + '/' + item.loanNumber } }]);\n }\n\n getListOfLoansTracker(item: IMilestoneActivityData): LoanDetailsListTracker {\n const loanNumbers: string[] = this.milestoneColumnsData\n .find((d) => d.milestone == item.milestone)\n .pipelineActivityData.map((dataItem) => dataItem.loanNumber);\n const loanIndex = loanNumbers.findIndex((loanNumber) => loanNumber === item.loanNumber);\n return {\n loanNumbers: loanNumbers,\n index: loanIndex,\n };\n }\n\n cardMenuOpen(menu, toggle: boolean) {\n // Disabled for now\n }\n\n clickOnStatusSummary(m: IMilestoneActivityCard) {\n if (m.loanCount > 0) {\n let queryParams = {\n milestone: m.milestone,\n titleSuffix: ': ' + m.milestone,\n navFromUrl: 'pipeline/activity-tracker',\n };\n\n this._router.navigate(['/reporting/pipeline/activity-tracker'], {\n queryParams: queryParams,\n });\n }\n }\n\n applyDisplayOptions(event: DisplayOptions[]) {\n this.noDataType.action = NoDataActionType.filter;\n this.displayOptions = event;\n this.loadData();\n }\n\n applyNewFilters(event: string) {\n this.hFilterJSON = event;\n this.noDataType.action = NoDataActionType.filter;\n this.loadData();\n }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-pipeline-upgrade',\n templateUrl: './pipeline-upgrade.component.html',\n styleUrls: ['./pipeline-upgrade.component.scss'],\n})\nexport class PipelineUpgradeComponent implements OnInit {\n headline: string;\n shortOverview: string;\n selligPointHeader: string;\n logoPlaceholder: string;\n moduleShortDescription: string;\n backgroundColor: string;\n\n constructor() {}\n ngOnInit() {\n this.setUpgradePage();\n }\n\n setUpgradePage() {\n this.headline = 'Save time and money by tracking and closing loans faster';\n this.shortOverview =\n 'To manage and move your pipeline, you need accessibility to an organized, clean and condensed view of your active pipeline.';\n this.selligPointHeader =\n 'Empower your producers with the knowledge they need to outperform their competition';\n this.logoPlaceholder = 'src/assets/images/upgrade_thumbnails/pipeline_upgrade.png';\n this.moduleShortDescription =\n 'nCino Mortgage Analytics Pipeline is the necessary daily view of your activity as loans move from Application to Underwriting to Closing. ';\n this.backgroundColor = '#fff3ed';\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","import { ChangeDetectorRef, Component, OnInit, QueryList, ViewChildren } from '@angular/core';\nimport { DisplayOptions } from 'app/modules/shared/interfaces/display-options';\nimport { IPageHeadline } from '../../../shared/classes/page-title-parameters';\nimport { NoDataActionType } from '../../../shared/interfaces/no-data';\nimport { CustomDashboardsOutletDirective } from '../../../my-limegear/my-limegear-outlet.directive';\nimport { CustomDashboardsService } from '../../../my-limegear/services/my-limegear.service';\nimport { ComponentsOutletDirectiveService } from '../../../my-limegear/services/component-outlet-directive.service';\n\n@Component({\n selector: 'pipeline-insights-days-in-status',\n templateUrl: './pipeline-insights-milestones.component.html',\n styleUrls: ['./pipeline-insights-milestones.component.scss'],\n})\nexport class PipelineInsightsMilestoneStatusComponent implements OnInit {\n constructor(\n private cd: ChangeDetectorRef,\n private customDashboardsService: CustomDashboardsService,\n private componentsOutletDirectiveService: ComponentsOutletDirectiveService\n ) {}\n\n @ViewChildren(CustomDashboardsOutletDirective)\n dashboardOutlet: QueryList;\n\n action: NoDataActionType;\n pageHeadline: IPageHeadline;\n displayOptions: DisplayOptions[];\n dashboard = 'milestone-status';\n hFilterJSON = '';\n simpleTableCardIdList: string[];\n lockStatusCardIdList: string[];\n lockExpiringCard: string;\n\n ngOnInit() {\n this.pageHeadline = {\n module: 'pipeline',\n moduleIcon: 'fa-bolt',\n pageTitle: 'Active Pipeline Lock Status',\n linkArray: [\n {\n moduleLink: 'pipeline',\n linkTitle: 'Pipeline Home',\n showLink: true,\n isHome: true,\n },\n {\n moduleLink: 'pipeline/insights',\n linkTitle: 'Pipeline Insights',\n showLink: true,\n },\n ],\n };\n\n this.simpleTableCardIdList = [\n 'insights_pipelineByLoanStatus',\n 'insights_pipelineByLoanType',\n ];\n\n this.lockStatusCardIdList = [\n 'insights_lockStatusByMilestone',\n 'insights_lockStatusByLoanType',\n ];\n this.lockExpiringCard = 'insights_locksExpiringInDays';\n this.customDashboardsService.detectChange(\n '',\n [],\n false,\n false,\n NoDataActionType.pageStart,\n this.dashboard\n );\n\n this.action = NoDataActionType.pageStart;\n this.updateComponent();\n }\n\n updateComponent() {\n this.componentsOutletDirectiveService.detectViewChanges(this.cd);\n this.componentsOutletDirectiveService.loadContents(this.dashboardOutlet); \n } \n\n applyNewFilters(event: string) {\n this.customDashboardsService.destroyCharts();\n this.action = NoDataActionType.filter;\n this.hFilterJSON = event;\n this.updateComponent();\n this.customDashboardsService.detectChange(\n this.hFilterJSON,\n this.displayOptions,\n true,\n false,\n this.action,\n this.dashboard\n );\n }\n\n applyDisplayOptions(event: DisplayOptions[]) {\n this.customDashboardsService.destroyCharts();\n this.action = NoDataActionType.filter;\n this.displayOptions = event;\n this.updateComponent();\n this.customDashboardsService.detectChange(\n this.hFilterJSON,\n this.displayOptions,\n false,\n true,\n this.action,\n this.dashboard\n );\n }\n\n ngOnDestroy() {\n this.customDashboardsService.unsubscribeFilters();\n this.customDashboardsService.destroyCharts();\n }\n}\n\n\n","import { ReusableFunctions } from './reusable-functions';\nimport { Router } from '@angular/router';\nimport * as Highcharts from 'highcharts';\nimport { IPosition } from '../../production/interfaces/production-turn-times/production-turn-times';\n//import { Position } from '../../production/components/production-turn-times/production-turn-times.component';\n//import { Position } from '../../production/components/production-turn-times/turn-times-page/turn-times-page.component';\n\nexport interface ICalendarData {\n x: number;\n y: number;\n value: number;\n date: number;\n month: number;\n year: number;\n dayFull?: string;\n dayOfWeek: number;\n volume?: number;\n custom?: object;\n dateTextColor?: string;\n isPlaceholderDate: boolean;\n}\nexport class PipelineUpcomingClosingChartOptions {\n constructor(private router: Router, private reusableFunctions: ReusableFunctions) {}\n\n getPositionAssignmentsOptions(\n charttitle: string,\n xAxisText: string,\n yAxisText: string,\n processedSeriesData: any,\n route: string,\n urlSegment: string,\n showLegend: boolean,\n hasDrilldownAccess: boolean,\n isAxisClickable,\n navFromUrl: string,\n position?: IPosition\n ): Highcharts.Options {\n const _this = this;\n let isInialLoadCompleted = false;\n let chartOpt: Highcharts.Options = {\n chart: {\n spacingTop: 0,\n events: {\n render: function () {\n if (isAxisClickable) {\n var xAxis = this.xAxis[0];\n var xTicks = xAxis.ticks;\n if (isInialLoadCompleted) {\n let tickKeys = Object.keys(xTicks);\n let points: Highcharts.Point[] = [];\n this.series.forEach((series) => {\n points = points.concat(series.points);\n });\n try {\n tickKeys.forEach((key, i) => {\n let xTick = xTicks[key];\n if (xTick && xTick.label) {\n let pointInf = points.find((point) => {\n return (\n point.name &&\n xTick.label.element.textContent &&\n point.name.toLowerCase().trim() ===\n xTick.label.element.textContent\n .toLowerCase()\n .trim()\n );\n });\n\n var label = xTick.label.element;\n label.style.cursor = 'pointer';\n label.onclick = function (item) {\n let queryParams = {\n titleSuffix:\n charttitle +\n ': ' +\n (pointInf ? pointInf.name : ''),\n loanCategory: 'All',\n closerId: pointInf\n ? pointInf.properties.empId\n : '',\n navFromUrl: navFromUrl,\n staffingId: position\n ? position.positionIdentifier\n : '',\n };\n\n _this.router.navigate([route, urlSegment], {\n queryParams: queryParams,\n });\n };\n }\n });\n } catch (error) {\n throw error;\n }\n }\n }\n isInialLoadCompleted = true;\n },\n },\n },\n title: {\n text: charttitle,\n align: 'left',\n style: {\n fontSize: '27px',\n color: '#223540',\n fontFamily: 'Roboto',\n },\n },\n credits: {\n enabled: false,\n },\n series: processedSeriesData,\n exporting: {\n enabled: false,\n buttons: {\n contextButton: {},\n },\n },\n xAxis: [\n {\n type: 'category',\n tickInterval: 1,\n startOnTick: false,\n pointIntervalUnit: xAxisText,\n labels: {\n enabled: true,\n style: {\n fontSize: '10px',\n color: '#666666',\n },\n },\n title: {\n text: xAxisText,\n style: {\n fontSize: '10px',\n color: '#666666',\n },\n },\n } as Highcharts.XAxisOptions,\n ],\n yAxis: [\n {\n title: {\n text: yAxisText,\n style: {\n fontSize: '10px',\n color: '#666666',\n },\n },\n\n labels: {\n enabled: true,\n style: {\n fontSize: '10px',\n color: '#666666',\n },\n },\n lineWidth: 1,\n } as Highcharts.YAxisOptions,\n ],\n legend: {\n enabled: showLegend,\n align: 'left',\n verticalAlign: 'top',\n },\n plotOptions: {\n column: {\n stacking: 'normal',\n minPointLength: 3,\n states: {\n hover: {\n brightness: -0.3,\n },\n },\n },\n bar: {\n stacking: 'normal',\n minPointLength: 3,\n states: {\n hover: {\n brightness: -0.3,\n },\n },\n },\n series: {\n groupPadding: 0,\n lineWidth: 3,\n gridLineWidth: 0,\n minorGridLineWidth: 0,\n dataGrouping: {\n enabled: false,\n },\n maxPointWidth: 50,\n marker: {\n enabled: false,\n states: {\n hover: {\n radius: 4,\n enabled: true,\n radiusPlus: 0,\n lineWidthPlus: 0,\n lineWidth: 0,\n },\n },\n },\n point: {\n events: {\n click: function (event) {\n let point = event.point;\n if (hasDrilldownAccess && point) {\n let queryParams = {\n titleSuffix:\n charttitle +\n ': ' +\n point.name +\n ', ' +\n point.series.name,\n loanCategory: point.series.name,\n closerId: point.properties.empId,\n staffingId: position.positionIdentifier,\n navFromUrl: navFromUrl,\n };\n _this.router.navigate([route, urlSegment], {\n queryParams: queryParams,\n });\n }\n },\n },\n },\n cursor: hasDrilldownAccess ? 'pointer' : 'default',\n } as Highcharts.PlotSeriesOptions,\n },\n tooltip: {\n style: {\n color: '#223540',\n fontFamily: 'Roboto',\n fontSize: '12',\n height: 12,\n opacity: 1,\n },\n borderColor: '#223540',\n backgroundColor: 'white',\n borderRadius: 6,\n useHTML: true,\n shared: true,\n followPointer: true,\n distance: 15,\n\n formatter: function () {\n let tooltip = '';\n if (showLegend) {\n let length = this.points.length;\n let thisPeriodTotal = 0;\n let thisPeriodUnitTotal = 0;\n\n tooltip =\n '' +\n this.points.reduce(function (s, point, index) {\n let toolText = '';\n let value = _this.reusableFunctions.formatMoney(\n point.point.properties.volume\n );\n let seriesName = point.series.name;\n if (index === 0) {\n s =\n s +\n '';\n }\n\n thisPeriodUnitTotal += point.point.properties.units;\n thisPeriodTotal += point.point.properties.volume;\n toolText =\n s +\n '' +\n '' +\n '';\n if (index === length - 1) {\n toolText =\n toolText +\n '' +\n '' +\n '';\n }\n\n return toolText;\n }, '') +\n '
' +\n point.point.name.toUpperCase() +\n '
' +\n seriesName +\n ' ' +\n value +\n '/' +\n point.point.properties.units.toLocaleString() +\n '
Total ' +\n '' +\n _this.reusableFunctions.formatMoney(thisPeriodTotal) +\n '/' +\n thisPeriodUnitTotal.toLocaleString() +\n '
';\n }\n return tooltip;\n },\n } as Highcharts.TooltipOptions,\n lang: {\n noData: 'There are no data results.',\n },\n noData: {\n style: {\n fontWeight: 'bold',\n fontSize: '15px',\n color: '#303030',\n },\n },\n };\n\n return chartOpt;\n }\n\n getCalendarOptions(\n calendarBaseDataset,\n routerUrl: string,\n position: IPosition,\n hasDrilldownAccess = true\n ) {\n let _this = this;\n let calenderOpt = {\n chart: {\n type: 'heatmap',\n spacingTop: 20,\n spacingLeft: 0,\n spacingRight: 0,\n },\n\n title: {\n text: null,\n },\n\n xAxis: {\n categories: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n style: {\n fontSize: '10px',\n color: '#666666',\n },\n labels: {\n enabled: true,\n style: {\n //cursor: hasDrilldownAccess ? 'pointer' : '',\n },\n },\n opposite: true,\n lineWidth: 0,\n gridLineWidth: 0,\n minorGridLineWidth: 0,\n tickWidth: 0,\n },\n\n yAxis: {\n title: null,\n reversed: true,\n style: {\n fontSize: '10px',\n color: '#666666',\n },\n labels: {\n enabled: false,\n style: {\n //cursor: hasDrilldownAccess ? 'pointer' : '',\n },\n },\n },\n\n plotOptions: {\n series: {},\n },\n\n accessibility: {\n enabled: true,\n point: {},\n },\n\n colorAxis: {\n min: 0,\n minColor: '#eeeeee',\n maxColor: '#4EB6B6',\n },\n\n legend: {\n enabled: false,\n align: 'right',\n layout: 'horizontal',\n margin: 0,\n verticalAlign: 'top',\n title: {\n text: '# of Locks Expiring',\n style: {\n fontSize: '14px',\n color: '#223540',\n fontFamily: 'Roboto',\n transform: 'translate(-135px, 28px)',\n },\n },\n itemStyle: {\n fontSize: '10px',\n color: '#223540',\n fontFamily: 'Roboto',\n },\n y: -24,\n symbolWidth: 250,\n //width: 350,\n floating: true,\n },\n tooltip: {\n style: {\n fontFamily: 'Roboto',\n fontSize: '12',\n height: 12,\n },\n borderRadius: 6,\n useHTML: true,\n formatter: function () {\n let point = this.point as Highcharts.PointOptionsObject;\n let tooltip =\n '' +\n '' +\n '' +\n '' +\n (point.value != null\n ? '
' +\n point.custom.dayString +\n '
' +\n (point.custom.volume != null\n ? _this.reusableFunctions.formatMoney(point.custom.volume)\n : '') +\n '/' +\n point.value.toLocaleString()\n : '') +\n '
';\n return tooltip;\n },\n },\n exporting: {\n enabled: false,\n },\n credits: {\n enabled: false,\n },\n series: [\n {\n name: 'Closer Assigned',\n type: 'heatmap',\n data: calendarBaseDataset,\n borderColor: '#ffffff',\n borderWidth: 2,\n dataLabels: [\n {\n enabled: true,\n color: 'lightgrey',\n shadow: false,\n inside: true,\n animation: false,\n\n style: {\n textOutline: 'none',\n fontSize: '9px',\n },\n\n align: 'left',\n verticalAlign: 'top',\n x: 3,\n y: 3,\n\n formatter: function () {\n var options = this.point.options as ICalendarData;\n return (\n '' +\n options.date.toString() +\n ''\n );\n },\n },\n {\n enabled: true,\n color: '#223540',\n shadow: false,\n inside: true,\n style: {\n textOutline: 'none',\n },\n },\n ],\n cursor: hasDrilldownAccess ? 'pointer' : '',\n point: {\n events: {\n click: function (event) {\n let point = event.point as Highcharts.PointOptionsObject;\n let date = new Date(point.custom.dayString);\n if (hasDrilldownAccess) {\n routerUrl;\n let queryParams = {\n closingDay: date.getDate(),\n closingMonth: date.getMonth() + 1,\n closingYear: date.getFullYear(),\n titleSuffix:\n ': ' + position.position + ' ' + point.custom.dayString,\n staffingId: position.positionIdentifier,\n navFromUrl:\n 'pipeline/insights/pipeline-with-position-assigned',\n };\n\n _this.router.navigate([routerUrl], {\n queryParams: queryParams,\n });\n }\n },\n },\n },\n },\n ],\n } as Highcharts.Options;\n return calenderOpt;\n }\n}\n","\n\n\n
\n
\n \n
\n
\n \n \n \n
\n
\n
\n
\n
\n \n
\n \n
\n
\n {{ closerCalendarChartCard.mainTitle }}\n
\n \n \n
\n \n \n \n
\n
\n
\n \n
\n
\n
\n {{\n closerCalendarChartCard.left.chartTitleData\n .chartTile\n }}\n
\n
\n
\n \n {{\n closerCalendarChartCard.left.chartTitleData\n .chartMainValue\n }}{{\n ' | ' +\n closerCalendarChartCard.left.chartTitleData\n .chartSecondaryValue\n }} \n
\n
\n
\n
\n \n
\n
\n
\n {{\n closerCalendarChartCard.right.chartTitleData\n .chartTile\n }}\n
\n
\n
\n \n {{\n closerCalendarChartCard.right.chartTitleData\n .chartMainValue\n }}{{\n ' | ' +\n closerCalendarChartCard.right.chartTitleData\n .chartSecondaryValue\n }} \n
\n
\n
\n
\n
\n \n \n \n \n
\n
\n \n \n
\n
\n \n \n\n
\n \n
\n\n","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport * as Highcharts from 'highcharts';\nimport { IPosition } from '../../../production/interfaces/production-turn-times/production-turn-times';\nimport { IPageHeadline } from '../../../shared/classes/page-title-parameters';\nimport {\n ICalendarData,\n PipelineUpcomingClosingChartOptions,\n} from '../../../shared/classes/pipeline-upcoming-closing-chart-options';\nimport { ReusableFunctions } from '../../../shared/classes/reusable-functions';\nimport {\n ISimpleTableData,\n ITableDataItems,\n} from '../../../shared/components/simple-table-card/simple-table-card.component';\nimport { IChartTitleData, ILargeCardInteriorOptions } from '../../../shared/interfaces/card-data';\nimport { DisplayOptions } from '../../../shared/interfaces/display-options';\nimport { NoDataActionType, NoDataSourceType } from '../../../shared/interfaces/no-data';\nimport { UserAccessService } from '../../../shared/services/user-access.service';\nimport {\n ChartDataPoint,\n ChartdataSeries,\n ICardData,\n ICloserAssignedData,\n IPipelineParameters,\n} from '../../interfaces/pipeline-data';\nimport { PipelineService } from '../../services/pipeline.service';\ninterface IWeekInfo {\n dayId: number;\n dayAbbr: string;\n}\n\ninterface IDataFullDetails {\n month: number;\n year: number;\n date: number;\n dayOfWeek: number;\n loanUnits: number;\n loanVolume: number;\n}\n\ninterface ICalendarCard {\n left: ILargeCardInteriorOptions;\n right: ILargeCardInteriorOptions;\n hasData: boolean;\n isDataReady: boolean;\n action: NoDataActionType;\n mainTitle: string;\n}\n\ninterface ISimpleCard extends ICardData {\n isDataReady?: boolean;\n}\n\n@Component({\n selector: 'pipeline-with-position-assigned',\n templateUrl: './pipeline-with-position-assigned.component.html',\n styleUrls: ['./pipeline-with-position-assigned.component.scss'],\n})\nexport class PipelineWithPositionAssignedComponent implements OnInit {\n constructor(\n private _pipelineServices: PipelineService,\n private _router: Router,\n private _reusableFunctions: ReusableFunctions,\n private _userAccessService: UserAccessService\n ) {}\n\n pageHeadline: IPageHeadline;\n displayOptions: DisplayOptions[];\n hFilterJSON: string;\n action: NoDataActionType;\n cardData: ICardData[];\n drilldownBaseUrl = '/reporting/pipeline/';\n simpleTableList: ISimpleCard[];\n closerAssignedChartCard: ILargeCardInteriorOptions;\n closerCalendarChartCard: ICalendarCard;\n weekInfo: IWeekInfo[];\n calendarBaseDataset: ICalendarData[];\n monthArray: string[];\n selectedPosition: IPosition;\n maxAssignedEmps = 0;\n closerAssignedChartCardOptions: Highcharts.Options;\n\n ngOnInit() {\n this.pageHeadline = {\n module: 'pipeline',\n moduleIcon: 'fa-bolt',\n pageTitle: '',\n linkArray: [\n {\n moduleLink: 'pipeline',\n linkTitle: 'Pipeline Home',\n showLink: true,\n isHome: true,\n },\n {\n moduleLink: 'pipeline/insights',\n linkTitle: 'Pipeline Insights',\n showLink: true,\n },\n ],\n };\n\n this.weekInfo = [\n { dayId: 0, dayAbbr: 'Su' },\n { dayId: 1, dayAbbr: 'Mo' },\n { dayId: 2, dayAbbr: 'Tu' },\n { dayId: 3, dayAbbr: 'We' },\n { dayId: 4, dayAbbr: 'Th' },\n { dayId: 5, dayAbbr: 'Fr' },\n { dayId: 6, dayAbbr: 'Sa' },\n ];\n\n this.monthArray = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ];\n\n let simpleDataTableData: ISimpleTableData = {\n title: '',\n isDataready: false,\n hasData: false,\n hasDrilldown: false,\n rowItems: [],\n headerItems: [],\n footerItems: [],\n noDataType: {\n action: this.action,\n searchTerm: '',\n componentTitle: '',\n inputSource: NoDataSourceType.table,\n },\n baseUrl: this.drilldownBaseUrl,\n urlSegment: '',\n navFromUrl: 'pipeline/insights/pipeline-with-position-assigned',\n hasAccess: false,\n };\n\n this.cardData = [\n {\n cardId: 'upcomingAssignments',\n title: 'Upcoming Closings',\n isChartCard: false,\n urlSegment: 'insights_upcomingAssignments',\n type: 'calendar',\n },\n {\n cardId: 'positionAssignments',\n title: ' Assignments',\n isChartCard: false,\n urlSegment: 'insights_positionAssignments',\n type: 'chart',\n },\n {\n cardId: 'positionAssignmentsByLoanStatus',\n title: 'By Loan Status',\n isChartCard: false,\n urlSegment: 'insights_positionAssignmentsByLoanStatus',\n simpleDataTableData: Object.assign({}, simpleDataTableData),\n type: 'loanStatusGroup',\n },\n {\n cardId: 'positionAssignmentsByLoanType',\n title: 'By Loan Type',\n isChartCard: false,\n urlSegment: 'insights_positionAssignmentsByLoanType',\n simpleDataTableData: Object.assign({}, simpleDataTableData),\n type: 'loanCategoryGroup',\n },\n {\n cardId: 'positionAssignmentsByLockStatus',\n title: 'By Lock Status',\n isChartCard: false,\n urlSegment: 'insights_positionAssignmentsByLockStatus',\n simpleDataTableData: Object.assign({}, simpleDataTableData),\n type: 'loanCategoryGroup',\n },\n {\n cardId: 'positionAssignmentsByLoanPurpose',\n title: 'By Loan Purpose',\n isChartCard: false,\n urlSegment: 'insights_positionAssignmentsByLoanPurpose',\n simpleDataTableData: Object.assign({}, simpleDataTableData),\n type: 'loanCategoryGroup',\n },\n ];\n\n this.action = NoDataActionType.pageStart;\n this.hFilterJSON = this._reusableFunctions.getHierarchyFilters();\n this.displayOptions = this._reusableFunctions.getCurrentDisplayOptions(this._router.url);\n this.setCaladerbaseDataSet();\n this.getComponentData();\n }\n\n setCaladerbaseDataSet() {\n this.calendarBaseDataset = [];\n let yValues = [0, 1, 2, 3, 4, 5];\n\n yValues.forEach((yValue) => {\n this.weekInfo.forEach((dayInf) => {\n this.calendarBaseDataset.push({\n x: dayInf.dayId,\n y: yValue,\n value: null,\n date: null,\n month: null,\n year: null,\n dayOfWeek: null,\n volume: null,\n dateTextColor: 'grey',\n isPlaceholderDate: false,\n custom: {\n volume: null,\n seriesName: null,\n daysToExpiration: null,\n dayString: '',\n },\n });\n });\n });\n }\n\n innitializeCards() {\n this.simpleTableList = this.cardData.filter(\n (item) => item.type === 'loanStatusGroup' || item.type === 'loanCategoryGroup'\n );\n\n this.simpleTableList.forEach((card) => {\n card.isDataReady = false;\n let simpleDataTableData = card.simpleDataTableData;\n if (simpleDataTableData) {\n simpleDataTableData.hasData = false;\n simpleDataTableData.isDataready = false;\n }\n });\n\n let chartCardInfo = this.cardData.find((item) => item.type === 'chart');\n this.closerAssignedChartCard = {\n action: this.action,\n componentTitle: chartCardInfo.title,\n searchTerm: '',\n hasData: false,\n isDataReady: false,\n showTitle: true,\n accessToUrl: '',\n uniqueId: chartCardInfo.cardId,\n };\n\n let calendarChartCardInfo = this.cardData.find((item) => item.type === 'calendar');\n let calendarTitle = {\n showChartCustomTitle: true,\n chartTile: '',\n chartMainValue: '',\n chartSecondaryValue: '',\n };\n let calendarBase: ILargeCardInteriorOptions = {\n action: this.action,\n componentTitle: calendarChartCardInfo.title,\n searchTerm: '',\n hasData: false,\n isDataReady: false,\n showTitle: true,\n accessToUrl: this.drilldownBaseUrl + calendarChartCardInfo.urlSegment,\n uniqueId: calendarChartCardInfo.cardId,\n chartTitleData: Object.assign({}, calendarTitle),\n hasAccess: false,\n };\n\n this.closerCalendarChartCard = {\n left: Object.assign({}, calendarBase),\n right: Object.assign({}, calendarBase),\n hasData: false,\n isDataReady: false,\n action: this.action,\n mainTitle: calendarChartCardInfo.title,\n };\n }\n\n setAndGetParams(): IPipelineParameters {\n this.hFilterJSON = this._reusableFunctions.getHierarchyFilters();\n this.selectedPosition = this._reusableFunctions.getPosition(0).selectedPosition;\n\n if (this.displayOptions && this.displayOptions.length > 0) {\n try {\n let options: IPipelineParameters = {\n channel: '',\n loanPurpose: '',\n loanType: '',\n lockStatus: '',\n hFilterJSON: '[]',\n fromDatePeriod: '',\n milestone: 'All',\n assignmentStatus: '',\n staffingKey: '',\n };\n\n options.hFilterJSON = this.hFilterJSON;\n options.channel = this.displayOptions.find(\n (item) => item.optionKey === 'channel'\n ).selectedOptions;\n options.loanType = this.displayOptions.find(\n (item) => item.optionKey === 'loanCategory'\n ).selectedOptions;\n options.loanPurpose = this.displayOptions.find(\n (item) => item.optionKey === 'loanPurpose'\n ).selectedOptions;\n options.lockStatus = this.displayOptions.find(\n (item) => item.optionKey === 'loanLockStatus'\n ).selectedOptions;\n options.fromDatePeriod = this.displayOptions.find(\n (item) => item.optionKey === 'dateRangeCloserAssign'\n ).selectedOptions;\n options.assignmentStatus = this.displayOptions.find(\n (x) => x.optionKey === 'assignmentStatus'\n ).selectedOptions;\n options.milestone = this.displayOptions.find(\n (x) => x.optionKey === 'activeMilestones'\n ).selectedOptions;\n\n options.staffingKey = this.selectedPosition.positionIdentifier;\n return options;\n } catch (error) {\n console.log(error);\n return;\n }\n }\n return;\n }\n\n getComponentData() {\n this.innitializeCards();\n this.selectedPosition = this._reusableFunctions.getPosition(0).selectedPosition;\n this.pageHeadline.pageTitle = this.selectedPosition.position + ' Assignments';\n let params = this.setAndGetParams();\n\n this.cardData.forEach((card) => {\n let parameters = Object.assign({}, params);\n parameters.type = card.type;\n this._pipelineServices.getCloserAssignedData(parameters).subscribe(\n (res) => {\n if (card.type === 'calendar') {\n this.setUpcomingClosingCalendarCard(res, card);\n } else if (card.type === 'chart') {\n card.title = this.selectedPosition.position + ' Assignments';\n this.setPositionAssignmentsCard(res, card);\n } else {\n this.setSimpleTableCard(res, card);\n }\n this.setCloserAssinedChartHeightAfterFullLoad();\n },\n (err) => {\n //TODO: Test error handling\n this.action = NoDataActionType.error;\n if (card.type === 'calendar') {\n this.setUpcomingClosingCalendarCard([], card);\n } else if (card.type === 'chart') {\n this.setPositionAssignmentsCard([], card);\n } else {\n this.setSimpleTableCard([], card);\n }\n }\n );\n });\n }\n\n setBaseCalendarDates(year: number, month: number) {\n let calendarBaseDataset: ICalendarData[] = JSON.parse(\n JSON.stringify(this.calendarBaseDataset)\n );\n let firstDate = new Date(year, month, 1);\n let lastDate = new Date(year, month + 1, 0);\n let firstDateNextMonth = new Date(year, month + 1, 1);\n let lastDatePreviousMon = new Date(year, month, 0);\n let dateNextMonth = 1;\n\n let lastMonth = month === 0 ? 11 : month - 1;\n let nextMonth = month === 11 ? 0 : month + 1;\n\n let lastMonthPlaceholderStarDate = lastDatePreviousMon.getDate() - firstDate.getDay() + 1;\n let hasSetFirstDay = false;\n\n let dateOfMonth = 1;\n calendarBaseDataset.forEach((dateInf) => {\n if (dateInf.x === firstDate.getDay() && dateInf.y === 0) {\n hasSetFirstDay = true;\n }\n\n if (!hasSetFirstDay && dateInf.y === 0) {\n dateInf.date = lastMonthPlaceholderStarDate;\n dateInf.dateTextColor = 'lightgrey';\n lastMonthPlaceholderStarDate += 1;\n dateInf.isPlaceholderDate = true;\n dateInf.month = lastMonth;\n dateInf.year = lastDatePreviousMon.getFullYear();\n }\n\n if (hasSetFirstDay && dateOfMonth <= lastDate.getDate()) {\n dateInf.date = dateOfMonth;\n dateOfMonth += 1;\n dateInf.month = month;\n dateInf.year = year;\n } else if (hasSetFirstDay) {\n dateInf.date = dateNextMonth;\n dateInf.dateTextColor = 'lightgrey';\n dateNextMonth += 1;\n dateInf.isPlaceholderDate = true;\n dateInf.month = nextMonth;\n dateInf.year = firstDateNextMonth.getFullYear();\n }\n dateInf.custom['dayString'] =\n (dateInf.month + 1).toString() +\n '/' +\n dateInf.date.toString() +\n '/' +\n dateInf.year.toString();\n });\n return calendarBaseDataset;\n }\n\n setUpcomingClosingCalendarCard(data: ICloserAssignedData[], card: ICardData) {\n data = data.sort((a, b) => {\n let aDate = new Date(a.closingDate);\n let bDate = new Date(b.closingDate);\n let compare = aDate < bDate;\n return compare ? -1 : 0;\n });\n\n let hasData = data.length > 0;\n let dataExpand: IDataFullDetails[] = [];\n data.forEach((item) => {\n let date = new Date(item.closingDate);\n\n let m = date.getMonth();\n dataExpand.push({\n loanUnits: item.loanUnits,\n loanVolume: item.loanVolume,\n year: date.getFullYear(),\n month: m,\n dayOfWeek: date.getDay(),\n date: date.getDate(),\n });\n });\n\n if (hasData && dataExpand.length > 0) {\n let uniqueMonths = this._reusableFunctions.getUniqueItemList(dataExpand, 'month');\n let uniqueYears = this._reusableFunctions.getUniqueItemList(dataExpand, 'year');\n let date = new Date(data[0].closingDate);\n let yearCurrent = date.getFullYear();\n let yearNext = yearCurrent;\n let monthCurrent = date.getMonth();\n let monthNext = monthCurrent === 11 ? 0 : monthCurrent + 1;\n\n if (uniqueYears.length > 1) {\n yearCurrent = uniqueYears[0];\n yearNext = uniqueYears[1];\n }\n let fullMonth_this = this.monthArray[monthCurrent];\n let fullMonth_next = this.monthArray[monthNext];\n\n let calendarBaseDatasetThisMonth = this.setBaseCalendarDates(yearCurrent, monthCurrent);\n let calendarBaseDatasetNextMonth = this.setBaseCalendarDates(yearNext, monthNext);\n this.setBaseChart(\n calendarBaseDatasetThisMonth,\n yearCurrent,\n 'left',\n fullMonth_this,\n this.closerCalendarChartCard.left\n );\n this.setBaseChart(\n calendarBaseDatasetNextMonth,\n yearNext,\n 'right',\n fullMonth_next,\n this.closerCalendarChartCard.right\n );\n\n if (uniqueMonths[0] != null) {\n let thisMonthData = dataExpand.filter((item) => item.month === uniqueMonths[0]);\n this.setCalendarData(\n thisMonthData,\n calendarBaseDatasetThisMonth,\n 'left',\n this.closerCalendarChartCard.left\n );\n }\n\n if (uniqueMonths[1] != null) {\n let nextMonthData = dataExpand.filter((item) => item.month === uniqueMonths[1]);\n this.setCalendarData(\n nextMonthData,\n calendarBaseDatasetNextMonth,\n 'right',\n this.closerCalendarChartCard.right\n );\n }\n }\n this.closerCalendarChartCard.hasData = hasData;\n this.closerCalendarChartCard.isDataReady = true;\n this.closerCalendarChartCard = Object.assign({}, this.closerCalendarChartCard);\n }\n\n setCalendarData(\n monthData: IDataFullDetails[],\n calendarBaseDatasetToUpdate: ICalendarData[],\n chartSide: 'left' | 'right',\n interiorData: ILargeCardInteriorOptions\n ) {\n monthData.forEach((dataInfo) => {\n let calDateItem = calendarBaseDatasetToUpdate.find(\n (dateInf) => dateInf.date === dataInfo.date && !dateInf.isPlaceholderDate\n );\n\n if (calDateItem && !calDateItem.isPlaceholderDate) {\n calDateItem.value = dataInfo.loanUnits;\n calDateItem.volume = dataInfo.loanVolume;\n calDateItem.custom['volume'] = dataInfo.loanVolume;\n }\n });\n let volumeTotal = this._reusableFunctions.calculateSumByProperty(monthData, 'loanVolume');\n let unitTotal = this._reusableFunctions.calculateSumByProperty(monthData, 'loanUnits');\n\n let unitTotalFormated = unitTotal != null ? unitTotal.toLocaleString() : '0';\n let volumeTotalformatted =\n volumeTotal != null ? this._reusableFunctions.formatMoney(volumeTotal, 0) : '$0';\n interiorData.chartTitleData.chartMainValue = volumeTotalformatted;\n interiorData.chartTitleData.chartSecondaryValue = unitTotalFormated;\n\n let monthBaseData = calendarBaseDatasetToUpdate.find(\n (dateInf) => dateInf.isPlaceholderDate === false\n );\n let queryParams = {\n closingYear: monthBaseData.year,\n closingMonth: monthBaseData.month + 1,\n closingDay: null,\n titleSuffix:\n ': ' + this.selectedPosition.position + ' ' + interiorData.chartTitleData.chartTile,\n navFromUrl: 'pipeline/insights/pipeline-with-position-assigned',\n staffingId: this.selectedPosition.positionIdentifier,\n };\n\n interiorData.queryParams = Object.assign({}, queryParams);\n interiorData.hasAccess = this.checkAccess(interiorData.accessToUrl);\n\n this.drawCalendarChart(calendarBaseDatasetToUpdate, chartSide, interiorData.hasAccess);\n }\n\n drawCalendarChart(\n calendarDataset: ICalendarData[],\n chartSide: 'left' | 'right',\n hasDrillDownAccess: boolean\n ) {\n let upcomingClosingChartOptions = new PipelineUpcomingClosingChartOptions(\n this._router,\n this._reusableFunctions\n );\n\n let url = this.drilldownBaseUrl + 'insights_upcomingAssignments';\n let chartOptions = upcomingClosingChartOptions.getCalendarOptions(\n calendarDataset,\n url,\n this.selectedPosition,\n hasDrillDownAccess\n );\n\n setTimeout(() => {\n this.closerCalendarChartCard[chartSide].chart = new Highcharts.Chart(\n this.closerCalendarChartCard[chartSide].uniqueId + chartSide,\n chartOptions\n );\n }, 0);\n }\n\n setBaseChart(\n calendarBaseDataset: ICalendarData[],\n year: number,\n chartSide: 'left' | 'right',\n fullMonth: string,\n interiorData: ILargeCardInteriorOptions\n ) {\n let chartTitle = fullMonth + '-' + year.toString();\n interiorData.componentTitle = chartTitle;\n\n let chartTitleData: IChartTitleData = {\n chartMainValue: '$0',\n chartSecondaryValue: '0',\n chartTile: chartTitle,\n showChartCustomTitle: true,\n };\n\n interiorData.chartTitleData = Object.assign({}, chartTitleData);\n this.drawCalendarChart(calendarBaseDataset, chartSide, interiorData.hasAccess);\n }\n\n setPositionAssignmentsCard(data: ICloserAssignedData[], card: ICardData) {\n let hasData = data.length > 0;\n let processedSeriesData = this.setStackChartData(\n data,\n 'employeeIdentifier',\n 'lfName',\n 'loanTypeCategory',\n 'bar',\n );\n\n let upcomingClosingChartOptions = new PipelineUpcomingClosingChartOptions(\n this._router,\n this._reusableFunctions\n );\n card.hasAccess = this.checkAccess(this.drilldownBaseUrl + card.urlSegment);\n\n this.closerAssignedChartCardOptions =\n upcomingClosingChartOptions.getPositionAssignmentsOptions(\n card.title,\n '',\n 'Units',\n processedSeriesData,\n this.drilldownBaseUrl,\n card.urlSegment,\n true,\n card.hasAccess,\n true,\n 'pipeline/insights/pipeline-with-position-assigned',\n this.selectedPosition\n );\n\n if (hasData) {\n this.setCloserAssinedChartHeight();\n }\n this.closerAssignedChartCard.useLGScroll = true;\n this.closerAssignedChartCard.hasData = hasData;\n this.closerAssignedChartCard.isDataReady = true;\n this.closerAssignedChartCard = Object.assign({}, this.closerAssignedChartCard);\n }\n\n setCloserAssinedChartHeightAfterFullLoad() {\n let areSimplecardsLoaded = true;\n this.simpleTableList.forEach((card) => {\n if (card.isDataReady === undefined || !card.isDataReady) {\n areSimplecardsLoaded = false;\n }\n });\n\n if (\n this.closerCalendarChartCard.isDataReady &&\n this.closerAssignedChartCard.isDataReady &&\n areSimplecardsLoaded\n ) {\n let timeout = null;\n timeout = setTimeout(() => {\n this.setCloserAssinedChartHeight();\n }, 5);\n }\n }\n\n setCloserAssinedChartHeight() {\n let closerAssignContainer = document.getElementById('position-AssignedChartCard-container');\n if (closerAssignContainer && this.closerAssignedChartCardOptions) {\n let chartHeightTobe = closerAssignContainer.clientHeight - 25;\n let minHeightTobe = this.maxAssignedEmps * 15;\n if (chartHeightTobe <= minHeightTobe) {\n this.closerAssignedChartCardOptions.chart.width =\n closerAssignContainer.clientWidth - 30;\n this.closerAssignedChartCardOptions.chart.scrollablePlotArea = {\n minHeight: minHeightTobe,\n opacity: 1,\n };\n }\n this.closerAssignedChartCardOptions.chart.height = chartHeightTobe;\n this.closerAssignedChartCard.chart = new Highcharts.Chart(\n this.closerAssignedChartCard.uniqueId,\n this.closerAssignedChartCardOptions\n );\n }\n }\n\n setStackChartData(\n data: ICloserAssignedData[],\n xDataProperty: string,\n xVisibleProperty: string,\n seriesProperty: string,\n chartType: string,\n ) {\n let seriesNames: string[] = this._reusableFunctions.getUniqueItemList(data, seriesProperty);\n this.maxAssignedEmps = 0;\n let dataSet = data.map((obj) => ({ ...obj }));\n let lengendItemsIndex = {\n CONV: 0,\n 'NON-CONF': 1,\n REVENUE: 2,\n GOVT: 3,\n OTHER: 4,\n };\n\n let chartItemsIndex = {\n CONV: 4,\n 'NON-CONF': 3,\n REVENUE: 2,\n GOVT: 1,\n OTHER: 0,\n };\n\n let uniqueDataList = this._reusableFunctions.getUniqueItemList(dataSet, xDataProperty);\n let stackColumnsData: ChartdataSeries[] = [];\n let completeClassDataList: Array<{seriesName: string, completeClassDataSet: ICloserAssignedData[]}> = [];\n \n seriesNames.forEach((seriesName) => {\n if (chartType === 'bar' || chartType === 'column') {\n let classData = dataSet.filter((item) => item[seriesProperty] === seriesName);\n let classDataComplete:ICloserAssignedData[] = [];\n uniqueDataList.forEach((category) => {\n let intermediateData = classData.find((item) => item.employeeIdentifier === category);\n\n if (intermediateData) {\n classDataComplete.push(intermediateData); \n } \n else {\n let placeHolderData = dataSet.find((item) => item.employeeIdentifier === category);\n classDataComplete.push({\n lfName: placeHolderData.lfName,\n loanVolume: null,\n loanUnits: null,\n employeeIdentifier: placeHolderData.employeeIdentifier,\n loanTypeCategory: seriesName,\n loanType: null,\n milestone: null,\n closingDate: null, \n purpose: null,\n lockStatus: null,\n clientOrder: null,\n });\n }\n });\n classDataComplete.sort((a, b) => a.lfName > b.lfName ? 1 : 0);\n completeClassDataList.push({seriesName: seriesName, completeClassDataSet: classDataComplete });\n }\n });\n \n completeClassDataList.forEach((completeData) => {\n let seriesData = this.setPointData(completeData.completeClassDataSet);\n\n if (seriesData && this.maxAssignedEmps < seriesData.length) {\n this.maxAssignedEmps = seriesData.length;\n }\n\n stackColumnsData.push({\n name: completeData.seriesName,\n data: seriesData,\n legendIndex: lengendItemsIndex[completeData.seriesName.toUpperCase()],\n index: chartItemsIndex[completeData.seriesName.toUpperCase()],\n color: this._reusableFunctions.getLoanTypeColor(completeData.seriesName),\n type: chartType,\n turboThreshold:10000,\n });\n \n });\n \n return stackColumnsData;\n }\n\n setPointData(\n classData: ICloserAssignedData[],\n ) {\n let purposeItems: ChartDataPoint[] = [];\n classData.forEach((item) => {\n let units = item.loanUnits;\n purposeItems.push({\n y: units,\n name: item.lfName,\n properties: {\n empId: item.employeeIdentifier ?? '',\n units: units,\n volume: item.loanVolume,\n },\n });\n });\n return purposeItems;\n }\n\n changeCase(dataSet: ICloserAssignedData[], caseType: 'upper' | 'lower', fieldId: string) {\n dataSet.map((item) => {\n if (item && item[fieldId]) {\n let value = item[fieldId].toString();\n if (caseType === 'upper') {\n item[fieldId] = value.toUpperCase();\n } else {\n item[fieldId] = value.toLowerCase();\n }\n }\n });\n }\n\n setSimpleTableCard(data: ICloserAssignedData[], card: ICardData) {\n let fieldId = 'milestone';\n if (card.cardId.toLowerCase().search('loantype') > -1) {\n fieldId = 'loanType';\n } else if (card.cardId.toLowerCase().search('lockstatus') > -1) {\n fieldId = 'lockStatus';\n } else if (card.cardId.toLowerCase().search('purpose') > -1) {\n fieldId = 'purpose';\n }\n\n // TO do: make this section reusable\n let simpleDataTableData = card.simpleDataTableData;\n if (card.simpleDataTableData) {\n simpleDataTableData.isDataready = true;\n simpleDataTableData.hasData = data.length > 0;\n simpleDataTableData.hasDrilldown = false;\n simpleDataTableData.noDataType.componentTitle = card.title;\n simpleDataTableData.urlSegment = card.urlSegment;\n simpleDataTableData.hasAccess = this.checkAccess(\n this.drilldownBaseUrl + card.urlSegment\n );\n simpleDataTableData.title = card.title;\n simpleDataTableData.queryParams = {\n titleSuffix: ': ' + this.selectedPosition.position,\n staffingId: this.selectedPosition.positionIdentifier,\n };\n simpleDataTableData.headerItems = [\n {\n fieldId: '',\n value: '',\n type: 'string',\n style: {\n 'text-align': 'left',\n width: '30%',\n color: '#223540',\n },\n },\n {\n fieldId: '',\n value: 'Units',\n type: 'number',\n style: {\n 'text-align': 'right',\n width: '30%',\n color: '#223540',\n },\n },\n {\n fieldId: '',\n value: 'Volume',\n type: 'money',\n style: {\n 'text-align': 'right',\n width: '30%',\n color: '#223540',\n },\n },\n ];\n simpleDataTableData.rowItems = [];\n\n let rowData = simpleDataTableData.rowItems;\n let totalVolume = 0;\n let totalUnits = 0;\n\n let uniqueNames = this._reusableFunctions.getUniqueItemList(data, fieldId);\n uniqueNames.forEach((series) => {\n let loanTypeData = data.filter((item) => item[fieldId] === series);\n let sumVolume = this._reusableFunctions.calculateSumByProperty(\n loanTypeData,\n 'loanVolume'\n );\n let sumUnits = this._reusableFunctions.calculateSumByProperty(\n loanTypeData,\n 'loanUnits'\n );\n totalVolume += sumVolume;\n totalUnits += sumUnits;\n this.addDataTableRowData(rowData, series, sumVolume, sumUnits);\n });\n\n simpleDataTableData.footerItems = [\n {\n fieldId: '',\n value: 'Total',\n type: 'string',\n style: {\n 'text-align': 'left',\n width: '30%',\n 'border-top': '2px solid grey',\n color: '#223540',\n 'font-weight': 'bold',\n },\n },\n {\n fieldId: '',\n value: totalUnits ? totalUnits.toLocaleString() : '',\n type: 'number',\n style: {\n 'text-align': 'right',\n width: '30%',\n 'border-top': '2px solid grey',\n color: '#223540',\n 'font-weight': 'bold',\n },\n },\n {\n fieldId: '',\n value: totalVolume ? this._reusableFunctions.formatMoney(totalVolume) : '',\n type: 'money',\n style: {\n 'text-align': 'right',\n width: '30%',\n 'border-top': '2px solid grey',\n color: '#223540',\n 'font-weight': 'bold',\n },\n },\n ];\n }\n\n let simpleCard = this.simpleTableList.find((item) => item.cardId === card.cardId);\n simpleCard.simpleDataTableData = card.simpleDataTableData;\n simpleCard.isDataReady = true;\n }\n\n addDataTableRowData(\n rowData: Array,\n seriesName: string,\n sumVolume: number,\n sumUnits: number\n ) {\n rowData.push([\n {\n fieldId: '',\n value: this._reusableFunctions.toCamelCase(seriesName ? seriesName : ''),\n type: 'money',\n style: {\n 'text-align': 'left',\n width: '30%',\n },\n },\n {\n fieldId: '',\n value: sumUnits ? sumUnits.toLocaleString() : '',\n type: 'money',\n style: {\n 'text-align': 'right',\n width: '30%',\n },\n },\n {\n fieldId: '',\n value: sumVolume ? this._reusableFunctions.formatMoney(sumVolume) : '',\n type: 'money',\n style: {\n 'text-align': 'right',\n width: '30%',\n },\n },\n ]);\n }\n\n checkAccess(url: string) {\n return this._userAccessService.hasAccessToPage(url);\n }\n\n clickTitleValue(cardData: ILargeCardInteriorOptions) {\n this._router.navigate([cardData.accessToUrl], {\n queryParams: cardData.queryParams,\n });\n }\n\n applyNewFilters(event: string) {\n this.hFilterJSON = event;\n this.action = NoDataActionType.filter;\n this.getComponentData();\n }\n\n applyDisplayOptions(event: DisplayOptions[]) {\n this.displayOptions = event;\n this.action = NoDataActionType.filter;\n this.getComponentData();\n }\n\n applySelectedPosition(position: IPosition) {\n this.action = NoDataActionType.filter;\n this.getComponentData();\n }\n}\n","import {ChangeDetectorRef, Component, HostListener, OnInit, QueryList, ViewChildren} from '@angular/core';\nimport { IPageHeadline } from '../../../shared/classes/page-title-parameters';\nimport { DisplayOptions } from '../../../shared/interfaces/display-options';\nimport {NoDataActionType} from '../../../shared/interfaces/no-data';\nimport {IPipelineSalesFunnel} from '../../interfaces/pipeline-data';\nimport {CustomDashboardsService} from \"app/modules/my-limegear/services/my-limegear.service\";\nimport {ComponentsOutletDirectiveService} from \"app/modules/my-limegear/services/component-outlet-directive.service\";\nimport {CustomDashboardsOutletDirective} from \"app/modules/my-limegear/my-limegear-outlet.directive\";\n\n@Component({\n selector: 'app-pipeline-insights-sales-funnel',\n templateUrl: './pipeline-insights-sales-funnel.component.html',\n styleUrls: ['./pipeline-insights-sales-funnel.component.scss'],\n})\nexport class PipelineInsightsSalesFunnelComponent implements OnInit {\n data: IPipelineSalesFunnel[];\n hFilterJSON = '';\n displayOptions: DisplayOptions[];\n pageHeadline: IPageHeadline = {\n module: 'pipeline',\n moduleIcon: 'fa-bolt',\n pageTitle: 'Sales Pipeline Funnel',\n linkArray: [\n {\n moduleLink: 'pipeline',\n linkTitle: 'Pipeline Home',\n showLink: true,\n isHome: true,\n },\n {\n moduleLink: 'pipeline/insights',\n linkTitle: 'Pipeline Insights',\n showLink: true,\n },\n ],\n };\n\n pipelineSalesFunnelId: string;\n pipelineSalesTableId: string;\n dashboard = 'sales-funnel';\n\n constructor(\n private cd: ChangeDetectorRef,\n private customDashboardsService: CustomDashboardsService,\n private componentsOutletDirectiveService: ComponentsOutletDirectiveService,\n ) {}\n\n @ViewChildren(CustomDashboardsOutletDirective)\n dashboardOutlet: QueryList;\n\n ngOnInit() {\n this.customDashboardsService.destroyCharts();\n this.customDashboardsService.detectChange(\n '',\n [],\n false,\n false,\n NoDataActionType.pageStart,\n this.dashboard\n );\n this.pipelineSalesFunnelId = 'sales-pipeline-volume-funnel';\n this.pipelineSalesTableId = 'sales-pipeline-volume-table';\n this.updateComponent();\n }\n\n updateComponent() {\n this.componentsOutletDirectiveService.detectViewChanges(this.cd);\n this.componentsOutletDirectiveService.loadContents(this.dashboardOutlet);\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.customDashboardsService.reCreateExistingCharts();\n }\n\n applyNewFilters(event: string) {\n this.customDashboardsService.destroyCharts();\n this.hFilterJSON = event;\n this.updateComponent();\n this.customDashboardsService.detectChange(\n this.hFilterJSON,\n this.displayOptions,\n true,\n false,\n NoDataActionType.filter,\n this.dashboard\n );\n }\n\n applyDisplayOptions(event: DisplayOptions[]) {\n this.customDashboardsService.destroyCharts();\n this.displayOptions = event;\n this.updateComponent();\n this.customDashboardsService.detectChange(\n this.hFilterJSON,\n this.displayOptions,\n false,\n true,\n NoDataActionType.filter,\n this.dashboard\n );\n }\n\n ngOnDestroy() {\n this.customDashboardsService.unsubscribeFilters();\n this.customDashboardsService.destroyCharts();\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 {{ dataItem.rank }}\n \n \n \n \n {{ dataItem.loanType }}\n \n \n \n \n {{ dataItem.product }}\n \n \n \n \n \n \n \n \n {{ volTotal | currency: 'USD':'symbol':'1.0-0' }}\n \n \n \n \n {{ (dataItem.volPct | number: '1.0-0') + '%' }}\n \n \n \n \n \n \n \n \n {{ unitTotal }}\n \n \n \n \n {{ (dataItem.unitPct | number: '1.0-0') + '%' }}\n \n \n \n
\n","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { GridDataResult, PageChangeEvent } from '@progress/kendo-angular-grid';\nimport { filterBy, orderBy, SortDescriptor, State } from '@progress/kendo-data-query';\nimport { IPageHeadline } from 'app/modules/shared/classes/page-title-parameters';\nimport { ReusableFunctions } from 'app/modules/shared/classes/reusable-functions';\nimport { DisplayOptions } from 'app/modules/shared/interfaces/display-options';\nimport {\n NoDataActionType,\n NoDataSourceType,\n NoDataTypes,\n} from 'app/modules/shared/interfaces/no-data';\nimport { UserAccessService } from 'app/modules/shared/services/user-access.service';\nimport { IPipelineProductData, IPipelineProductParameters } from '../../interfaces/pipeline-data';\nimport { PipelineService } from '../../services/pipeline.service';\nimport {NavigationHelpService} from \"app/modules/shared/services/navigation-help.service\";\n\n@Component({\n selector: 'app-pipeline-product-distribution',\n templateUrl: './pipeline-product-distribution.component.html',\n styleUrls: ['./pipeline-product-distribution.component.scss'],\n})\nexport class PipelineProductDistributionComponent implements OnInit {\n data: IPipelineProductData[];\n loading: boolean;\n noDataType: NoDataTypes;\n noDataForCompany: boolean;\n hFilterJSON = '';\n unitTotal: number = 0;\n volTotal: number = 0;\n pageHeadline: IPageHeadline = {\n module: 'pipeline',\n moduleIcon: 'fa-bolt',\n pageTitle: 'Active Pipeline Product Distribution',\n linkArray: [\n {\n moduleLink: 'pipeline',\n linkTitle: 'Pipeline Home',\n showLink: true,\n isHome: true,\n },\n {\n moduleLink: 'pipeline/insights',\n linkTitle: 'Pipeline Insights',\n showLink: true,\n },\n ],\n };\n productSearchTerm: string = '';\n\n /* Display Options */\n displayOptions: DisplayOptions[];\n displayOptionValues = {\n channel: null,\n loanType: null,\n loanPurpose: null,\n lockStatus: null,\n status: null,\n };\n\n /* Kendo Grid */\n gridView: GridDataResult;\n skip = 0;\n pageSize = 10;\n sort: SortDescriptor[] = [];\n sortable = {\n mode: 'single',\n allowUnsort: true,\n };\n gridState: State = {\n sort: [],\n skip: 0,\n take: 10,\n };\n scrollable = 'scrollable';\n type: 'numeric' | 'input' = 'input';\n pageable = {\n refresh: true,\n info: true,\n type: this.type,\n previousNext: true,\n pageSizes: [10, 20, 50],\n };\n\n constructor(\n private reusableFunctions: ReusableFunctions,\n private _pipelineService: PipelineService,\n private _navigationHelper: NavigationHelpService,\n private _userAccessService: UserAccessService\n ) {}\n\n ngOnInit() {\n this.noDataType = {\n action: NoDataActionType.pageStart,\n searchTerm: '',\n componentTitle: this.pageHeadline.pageTitle,\n inputSource: NoDataSourceType.table,\n };\n this.displayOptions = this.reusableFunctions.getCurrentDisplayOptions(\n '/pipeline/insights/product-distribution'\n );\n this.hFilterJSON = this.reusableFunctions.getHierarchyFilters();\n this.loadData();\n }\n\n applyDisplayOptions(event: DisplayOptions[]) {\n this.displayOptions = event;\n this.setNoDataType(NoDataActionType.filter);\n this.loadData();\n }\n\n applyNewFilters(event: string) {\n this.hFilterJSON = event;\n this.setNoDataType(NoDataActionType.filter);\n this.loadData();\n }\n\n setNoDataType(action: NoDataActionType) {\n if (this.productSearchTerm && this.productSearchTerm.length > 0) {\n this.noDataType.action = NoDataActionType.search;\n } else {\n this.noDataType.action = action;\n }\n }\n\n setAndGetParams(): IPipelineProductParameters {\n this.displayOptionValues.channel = this.displayOptions.find(\n (item) => item.optionKey === 'channel'\n ).selectedOptions;\n this.displayOptionValues.loanType = this.displayOptions.find(\n (item) => item.optionKey === 'loanCategory'\n ).selectedOptions;\n this.displayOptionValues.loanPurpose = this.displayOptions.find(\n (item) => item.optionKey === 'loanPurpose'\n ).selectedOptions;\n this.displayOptionValues.lockStatus = this.displayOptions.find(\n (item) => item.optionKey === 'loanLockStatus'\n ).selectedOptions;\n this.displayOptionValues.status = this.displayOptions.find(\n (item) => item.optionKey === 'activeMilestones'\n ).selectedOptions;\n\n return {\n channel: this.displayOptionValues.channel,\n loanType: this.displayOptionValues.loanType,\n loanPurpose: this.displayOptionValues.loanPurpose,\n lockStatus: this.displayOptionValues.lockStatus,\n status: this.displayOptionValues.status,\n hFilterJSON: this.hFilterJSON,\n } as IPipelineProductParameters;\n }\n\n loadData() {\n const params = this.setAndGetParams();\n\n this.loading = true;\n this._pipelineService.getPipelineProduct(params).subscribe(\n (data) => {\n this.loading = false;\n this.noDataForCompany = data && data.length != 0 ? false : true;\n this.data = data;\n this.calculatePercents(data);\n this.updateGrid();\n },\n (error) => {\n this.loading = false;\n this.noDataForCompany = true;\n this.noDataType.action = NoDataActionType.error;\n throw new Error(error);\n }\n );\n }\n\n updateGrid() {\n let localData = this.searchResults();\n let orderedData = orderBy(localData, this.sort).slice(this.skip, this.skip + this.pageSize);\n this.gridView = {\n data: orderedData,\n total: localData.length,\n };\n }\n\n calculatePercents(data: IPipelineProductData[]) {\n this.volTotal = 0;\n this.unitTotal = 0;\n\n let volumeArr = data.map((obj) => obj.curVol);\n let volumeMax = Math.max(...volumeArr);\n\n let unitArr = data.map((obj) => obj.curUnits);\n let unitMax = Math.max(...unitArr);\n\n for (let product of data) {\n // Calculate percentages for inline bar graph\n product.volPctTotal = (product.curVol / volumeMax) * 100;\n product.unitPctTotal = (product.curUnits / unitMax) * 100;\n\n // Calculate the totals\n this.volTotal += product.curVol;\n this.unitTotal += product.curUnits;\n }\n }\n\n pageChange(event: PageChangeEvent): void {\n this.pageSize = event.take;\n this.skip = event.skip;\n this.updateGrid();\n }\n\n sortChange(sort: SortDescriptor[]): void {\n this.sort = sort;\n this.skip = 0;\n this.updateGrid();\n }\n\n cellClickHandler({ dataItem, type }) {\n let routeName = '/reporting/pipeline/product-distribution';\n if (type != 'contextmenu' && dataItem?.product && this.checkAccess(routeName)) {\n let queryParams = {\n product: dataItem.product,\n titleSuffix: ': ' + dataItem.product,\n //navFromUrl: 'pipeline/insights/product-distribution',\n };\n this._navigationHelper.navigateTo([routeName], queryParams, true);\n }\n }\n\n searchRows(event) {\n this.skip = 0;\n this.productSearchTerm = event;\n this.setNoDataType(NoDataActionType.search);\n this.noDataType.searchTerm = this.productSearchTerm;\n this.updateGrid();\n }\n\n searchResults() {\n let searchedData: IPipelineProductData[] = [];\n let searchCategories: string[] = ['loanType', 'product'];\n\n let filters = [];\n for (let category of searchCategories) {\n filters.push({\n field: category,\n operator: 'contains',\n value: null,\n ignoreCase: true,\n });\n }\n\n if (this.productSearchTerm && this.productSearchTerm.length > 0) {\n let searchTermTokens = this.productSearchTerm.split(' ');\n filters.map((filter) => (filter.value = searchTermTokens[0]));\n searchedData = filterBy(this.data, {\n logic: 'or',\n filters: filters,\n });\n\n if (searchTermTokens.length > 1) {\n filters.map((filter) => (filter.value = searchTermTokens[1]));\n searchedData = filterBy(searchedData, {\n logic: 'or',\n filters: filters,\n });\n }\n } else {\n searchedData = this.data;\n }\n\n if (searchedData?.length === 0) {\n this.noDataForCompany = true;\n }\n\n return searchedData;\n }\n\n checkAccess(url: string) {\n return this._userAccessService.hasAccessToPage(url);\n }\n}\n","\n\n\n
\n \n
\n \n \n \n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n","import {ChangeDetectorRef, Component, HostListener, OnInit, QueryList, ViewChildren} from '@angular/core';\nimport {IPageHeadline} from 'app/modules/shared/classes/page-title-parameters';\nimport {DisplayOptions} from 'app/modules/shared/interfaces/display-options';\nimport {NoDataActionType} from 'app/modules/shared/interfaces/no-data';\nimport {CustomDashboardsService} from \"app/modules/my-limegear/services/my-limegear.service\";\nimport {ComponentsOutletDirectiveService} from \"app/modules/my-limegear/services/component-outlet-directive.service\";\nimport {CustomDashboardsOutletDirective} from \"app/modules/my-limegear/my-limegear-outlet.directive\";\n\n@Component({\n selector: 'pipeline-borrower-characteristics',\n templateUrl: './pipeline-borrower-characteristics.component.html',\n styleUrls: ['./pipeline-borrower-characteristics.component.scss'],\n})\nexport class PipelineBorrowerCharacteristicsComponent implements OnInit {\n displayOptions: DisplayOptions[];\n pageHeadline: IPageHeadline = {\n module: 'pipeline',\n moduleIcon: 'fa-bolt',\n pageTitle: 'Active Pipeline Borrower Characteristics',\n linkArray: [\n {\n moduleLink: 'pipeline',\n linkTitle: 'Pipeline Home',\n showLink: true,\n isHome: true,\n },\n {\n moduleLink: 'pipeline/insights',\n linkTitle: 'Pipeline Insights',\n showLink: true,\n },\n ],\n };\n hFilterJSON = '';\n donutChartIdList: Array;\n barChartIdList: Array;\n dashboard = 'borrower-characteristics';\n\n constructor(\n private cd: ChangeDetectorRef,\n private customDashboardsService: CustomDashboardsService,\n private componentsOutletDirectiveService: ComponentsOutletDirectiveService,\n ) {}\n\n @ViewChildren(CustomDashboardsOutletDirective)\n dashboardOutlet: QueryList;\n\n ngOnInit() {\n this.donutChartIdList = [\n 'loan-character-property-type',\n 'loan-character-occupan-type',\n 'borrower-characteristics-doc-type',\n 'borrower-characteristics-self-employed',\n ];\n\n this.barChartIdList = [\n 'borrower-characteristics-fico',\n 'borrower-characteristics-months-reserves',\n 'borrower-characteristics-housing-to-income',\n 'borrower-characteristics-debt-to-income',\n ];\n\n this.customDashboardsService.destroyCharts();\n this.customDashboardsService.detectChange(\n '',\n [],\n false,\n false,\n NoDataActionType.pageStart,\n this.dashboard\n );\n this.updateComponent(); \n }\n\n updateComponent() {\n this.componentsOutletDirectiveService.detectViewChanges(this.cd);\n this.componentsOutletDirectiveService.loadContents(this.dashboardOutlet);\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.customDashboardsService.reCreateExistingCharts();\n }\n\n applyNewFilters(event: string) {\n this.customDashboardsService.destroyCharts();\n this.hFilterJSON = event;\n this.updateComponent();\n this.customDashboardsService.detectChange(\n this.hFilterJSON,\n this.displayOptions,\n true,\n false,\n NoDataActionType.filter,\n this.dashboard\n );\n }\n\n applyDisplayOptions(event: DisplayOptions[]) {\n this.customDashboardsService.destroyCharts();\n this.displayOptions = event;\n this.updateComponent();\n this.customDashboardsService.detectChange(\n this.hFilterJSON,\n this.displayOptions,\n false,\n true,\n NoDataActionType.filter,\n this.dashboard\n );\n }\n\n ngOnDestroy() {\n this.customDashboardsService.unsubscribeFilters();\n this.customDashboardsService.destroyCharts();\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","import {ChangeDetectorRef, Component, HostListener, OnInit, QueryList, ViewChildren} from '@angular/core';\nimport {IPageHeadline} from 'app/modules/shared/classes/page-title-parameters';\nimport {DisplayOptions} from 'app/modules/shared/interfaces/display-options';\nimport {NoDataActionType} from 'app/modules/shared/interfaces/no-data';\nimport {CustomDashboardsService} from \"app/modules/my-limegear/services/my-limegear.service\";\nimport {ComponentsOutletDirectiveService} from \"app/modules/my-limegear/services/component-outlet-directive.service\";\nimport {CustomDashboardsOutletDirective} from \"app/modules/my-limegear/my-limegear-outlet.directive\";\n\n@Component({\n selector: 'app-pipeline-loan-characteristics',\n templateUrl: './pipeline-loan-characteristics.component.html',\n styleUrls: ['./pipeline-loan-characteristics.component.scss'],\n})\nexport class PipelineLoanCharacteristicsComponent implements OnInit {\n displayOptions: DisplayOptions[];\n pageHeadline: IPageHeadline = {\n module: 'pipeline',\n moduleIcon: 'fa-bolt',\n pageTitle: 'Active Pipeline Loan Characteristics',\n linkArray: [\n {\n moduleLink: 'pipeline',\n linkTitle: 'Pipeline Home',\n showLink: true,\n isHome: true,\n },\n {\n moduleLink: 'pipeline/insights',\n linkTitle: 'Pipeline Insights',\n showLink: true,\n },\n ],\n };\n hFilterJSON = '';\n donutChartIdList: Array;\n barChartIdList: Array;\n dashboard = 'loan-characteristics';\n\n constructor(\n private cd: ChangeDetectorRef,\n private customDashboardsService: CustomDashboardsService,\n private componentsOutletDirectiveService: ComponentsOutletDirectiveService,\n ) {}\n\n @ViewChildren(CustomDashboardsOutletDirective)\n dashboardOutlet: QueryList;\n \n ngOnInit() {\n this.donutChartIdList = [\n 'loan-character-loan-type',\n 'loan-character-loan-purpose',\n 'loan-character-refi-type',\n 'loan-character-property-type',\n 'loan-character-occupan-type',\n 'loan-character-amort-type',\n ];\n\n this.barChartIdList = [\n 'loan-character-loan-amount',\n 'loan-character-channel',\n 'loan-character-loan-to-value',\n 'loan-character-interest-rate',\n ];\n \n this.customDashboardsService.destroyCharts();\n this.customDashboardsService.detectChange(\n '',\n [],\n false,\n false,\n NoDataActionType.pageStart,\n this.dashboard\n );\n this.updateComponent();\n }\n\n updateComponent() {\n this.componentsOutletDirectiveService.detectViewChanges(this.cd);\n this.componentsOutletDirectiveService.loadContents(this.dashboardOutlet);\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.customDashboardsService.reCreateExistingCharts();\n }\n\n applyNewFilters(event: string) {\n this.customDashboardsService.destroyCharts();\n this.hFilterJSON = event;\n this.updateComponent();\n this.customDashboardsService.detectChange(\n this.hFilterJSON,\n this.displayOptions,\n true,\n false,\n NoDataActionType.filter,\n this.dashboard\n );\n }\n\n applyDisplayOptions(event: DisplayOptions[]) {\n this.customDashboardsService.destroyCharts();\n this.displayOptions = event;\n this.updateComponent();\n this.customDashboardsService.detectChange(\n this.hFilterJSON,\n this.displayOptions,\n false,\n true,\n NoDataActionType.filter,\n this.dashboard\n );\n }\n\n ngOnDestroy() {\n this.customDashboardsService.unsubscribeFilters();\n this.customDashboardsService.destroyCharts();\n }\n}\n","\n\n
\n \n
\n
\n \n \n \n \n
\n
\n
\n \n
\n
\n","import {ChangeDetectorRef, Component, HostListener, OnInit, QueryList, ViewChildren} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { IPageHeadline } from 'app/modules/shared/classes/page-title-parameters';\nimport { ReusableFunctions } from 'app/modules/shared/classes/reusable-functions';\nimport { DisplayOptions } from 'app/modules/shared/interfaces/display-options';\nimport { NoDataActionType } from 'app/modules/shared/interfaces/no-data';\nimport {\n OperationsAssignmentsDisplayOptions,\n} from '../../interfaces/pipeline-data';\nimport {CustomDashboardsService} from \"app/modules/my-limegear/services/my-limegear.service\";\nimport {ComponentsOutletDirectiveService} from \"app/modules/my-limegear/services/component-outlet-directive.service\";\nimport {CustomDashboardsOutletDirective} from \"app/modules/my-limegear/my-limegear-outlet.directive\";\n\n@Component({\n selector: 'pipeline-insights-operations-assignments',\n templateUrl: './pipeline-insights-operations-assignments.component.html',\n styleUrls: ['./pipeline-insights-operations-assignments.component.scss'],\n})\nexport class PipelineInsightsOperationsAssignmentsComponent implements OnInit {\n pageHeadline: IPageHeadline = {\n module: 'pipeline',\n moduleIcon: 'fa-bolt',\n pageTitle: 'Operations Assignments',\n linkArray: [\n {\n moduleLink: 'pipeline',\n linkTitle: 'Pipeline Home',\n showLink: true,\n isHome: true,\n },\n {\n moduleLink: 'pipeline/insights',\n linkTitle: 'Pipeline Insights',\n showLink: true,\n },\n ],\n };\n displayOptions: DisplayOptions[];\n selectedDisplayOptions: OperationsAssignmentsDisplayOptions = {\n loanStatus: '',\n loanPurpose: '',\n loanCategory: '',\n channel: '',\n hFilterJSON: '',\n };\n largeCardIdArray: Array;\n dashboard = 'operations-assignments';\n\n hFilterJSON = '';\n constructor( \n private reusableFunctions: ReusableFunctions,\n private router: Router,\n private cd: ChangeDetectorRef,\n private customDashboardsService: CustomDashboardsService,\n private componentsOutletDirectiveService: ComponentsOutletDirectiveService\n ) {}\n\n @ViewChildren(CustomDashboardsOutletDirective)\n dashboardOutlet: QueryList;\n \n ngOnInit() {\n this.customDashboardsService.destroyCharts();\n this.customDashboardsService.detectChange(\n '',\n [],\n false,\n false,\n NoDataActionType.pageStart,\n this.dashboard\n );\n \n this.largeCardIdArray = [\n 'ops-processor-status',\n 'ops-underwriter-status',\n 'ops-closer-status',\n 'ops-processor-assignments',\n 'ops-underwriter-assignments', \n 'ops-closer-assignments',\n ];\n \n this.updateComponent(); \n this.displayOptions = this.reusableFunctions.getCurrentDisplayOptions(this.router.url);\n this.selectedDisplayOptions.hFilterJSON = this.reusableFunctions.getHierarchyFilters();\n }\n\n updateComponent() {\n this.componentsOutletDirectiveService.detectViewChanges(this.cd);\n this.componentsOutletDirectiveService.loadContents(this.dashboardOutlet);\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.customDashboardsService.reCreateExistingCharts();\n }\n\n applyNewFilters(event: string) {\n this.customDashboardsService.destroyCharts();\n this.hFilterJSON = event;\n this.updateComponent();\n this.customDashboardsService.detectChange(\n this.hFilterJSON,\n this.displayOptions,\n true,\n false,\n NoDataActionType.filter,\n this.dashboard\n );\n }\n\n applyDisplayOptions(event: DisplayOptions[]) {\n this.customDashboardsService.destroyCharts();\n this.displayOptions = event;\n this.updateComponent();\n this.customDashboardsService.detectChange(\n this.hFilterJSON,\n this.displayOptions,\n false,\n true,\n NoDataActionType.filter,\n this.dashboard\n );\n }\n\n ngOnDestroy() {\n this.customDashboardsService.unsubscribeFilters();\n this.customDashboardsService.destroyCharts();\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","import {ChangeDetectorRef, Component, HostListener, OnInit, QueryList, ViewChildren} from '@angular/core';\nimport {IPageHeadline} from 'app/modules/shared/classes/page-title-parameters';\nimport {DisplayOptions} from 'app/modules/shared/interfaces/display-options';\nimport {NoDataActionType} from 'app/modules/shared/interfaces/no-data';\nimport {CustomDashboardsService} from \"app/modules/my-limegear/services/my-limegear.service\";\nimport {ComponentsOutletDirectiveService} from \"app/modules/my-limegear/services/component-outlet-directive.service\";\nimport {CustomDashboardsOutletDirective} from \"app/modules/my-limegear/my-limegear-outlet.directive\";\n\n@Component({\n selector: 'pipeline-insights-operations-pipeline',\n templateUrl: './pipeline-insights-operations-pipeline.component.html',\n styleUrls: ['./pipeline-insights-operations-pipeline.component.scss'],\n})\nexport class PipelineInsightsOperationsPipelineComponent implements OnInit {\n pageHeadline: IPageHeadline = {\n module: 'pipeline',\n moduleIcon: 'fa-bolt',\n pageTitle: 'Operations Pipeline',\n linkArray: [\n {\n moduleLink: 'pipeline',\n linkTitle: 'Pipeline Home',\n showLink: true,\n isHome: true,\n },\n {\n moduleLink: 'pipeline/insights',\n linkTitle: 'Pipeline Insights',\n showLink: true,\n },\n ],\n };\n displayOptions: DisplayOptions[];\n donutChartIdList: Array;\n barChartIdList: Array;\n smallCardIdList: Array;\n tableIdList: Array;\n dashboard = 'operations-pipeline';\n hFilterJSON = '';\n\n constructor(\n private cd: ChangeDetectorRef,\n private customDashboardsService: CustomDashboardsService,\n private componentsOutletDirectiveService: ComponentsOutletDirectiveService,\n ) { }\n\n @ViewChildren(CustomDashboardsOutletDirective)\n dashboardOutlet: QueryList;\n \n ngOnInit(): void {\n this.donutChartIdList = [\n 'loan-character-loan-type',\n 'loan-character-loan-purpose',\n ];\n\n this.barChartIdList = [\n 'pipeline-ops-disclosure',\n 'pipeline-ops-expires-7days'\n ];\n \n this.smallCardIdList = [\n 'pipeline-ops-estimated-not-ctc',\n 'pipeline-ops-lender-credits',\n 'pipeline-ops-tolerance-cures',\n ];\n this.tableIdList = [\n 'pipeline-ops-active-pipeline',\n ];\n\n this.customDashboardsService.destroyCharts();\n this.customDashboardsService.detectChange(\n '',\n [],\n false,\n false,\n NoDataActionType.pageStart,\n this.dashboard\n );\n this.updateComponent();\n }\n \n updateComponent() {\n this.componentsOutletDirectiveService.detectViewChanges(this.cd);\n this.componentsOutletDirectiveService.loadContents(this.dashboardOutlet);\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.customDashboardsService.reCreateExistingCharts();\n }\n\n applyNewFilters(event: string) {\n this.customDashboardsService.destroyCharts();\n this.hFilterJSON = event;\n this.updateComponent();\n this.customDashboardsService.detectChange(\n this.hFilterJSON,\n this.displayOptions,\n true,\n false,\n NoDataActionType.filter,\n this.dashboard\n );\n }\n\n applyDisplayOptions(event: DisplayOptions[]) {\n this.customDashboardsService.destroyCharts();\n this.displayOptions = event;\n this.updateComponent();\n this.customDashboardsService.detectChange(\n this.hFilterJSON,\n this.displayOptions,\n false,\n true,\n NoDataActionType.filter,\n this.dashboard\n ); \n }\n\n ngOnDestroy() {\n this.customDashboardsService.unsubscribeFilters();\n this.customDashboardsService.destroyCharts();\n }\n}\n","\n\n
\n \n
\n \n \n \n
\n
\n
\n \n
\n
\n
\n","import {\n ChangeDetectorRef,\n Component,\n HostListener,\n OnInit,\n QueryList,\n ViewChildren,\n} from '@angular/core';\nimport { CustomDashboardsOutletDirective } from 'app/modules/my-limegear/my-limegear-outlet.directive';\nimport { ComponentsOutletDirectiveService } from 'app/modules/my-limegear/services/component-outlet-directive.service';\nimport { CustomDashboardsService } from 'app/modules/my-limegear/services/my-limegear.service';\nimport { DisplayOptions } from 'app/modules/shared/interfaces/display-options';\nimport { NoDataActionType } from 'app/modules/shared/interfaces/no-data';\nimport { IPageHeadline } from 'app/modules/shared/classes/page-title-parameters';\n\n@Component({\n selector: 'app-pipeline-insights-trends',\n templateUrl: './pipeline-insights-trends.component.html',\n styleUrls: ['./pipeline-insights-trends.component.scss'],\n})\nexport class PipelineInsightsTrendsComponent implements OnInit {\n pageTitle = 'Pipeline Trends';\n dashboard = 'pipeline';\n pageHeadline: IPageHeadline;\n\n constructor(\n private cd: ChangeDetectorRef,\n private customDashboardsService: CustomDashboardsService,\n private componentsOutletDirectiveService: ComponentsOutletDirectiveService\n ) {}\n\n @ViewChildren(CustomDashboardsOutletDirective)\n dashboardOutlet: QueryList;\n largeCardIdArray: Array;\n displayOptions: DisplayOptions[];\n hFilterJSON = '';\n\n ngOnInit() {\n this.customDashboardsService.destroyCharts();\n this.customDashboardsService.detectChange(\n '',\n [],\n false,\n false,\n NoDataActionType.pageStart,\n this.dashboard\n );\n this.pageHeadline = {\n module: 'pipeline',\n moduleIcon: 'fa-bolt',\n pageTitle: this.pageTitle,\n linkArray: [\n {\n moduleLink: 'pipeline',\n linkTitle: 'Pipeline Home',\n showLink: true,\n isHome: true,\n },\n {\n moduleLink: 'pipeline/insights',\n linkTitle: 'Pipeline Insights',\n showLink: true,\n },\n ],\n };\n\n this.largeCardIdArray = ['locked-pipeline', 'total-pipeline'];\n this.updateComponent();\n }\n\n updateComponent() {\n this.componentsOutletDirectiveService.detectViewChanges(this.cd);\n this.componentsOutletDirectiveService.loadContents(this.dashboardOutlet);\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.customDashboardsService.reCreateExistingCharts();\n }\n\n applyNewFilters(event: string) {\n this.customDashboardsService.destroyCharts();\n this.hFilterJSON = event;\n this.updateComponent();\n this.customDashboardsService.detectChange(\n this.hFilterJSON,\n this.displayOptions,\n true,\n false,\n NoDataActionType.filter,\n this.dashboard\n );\n }\n\n applyDisplayOptions(event: DisplayOptions[]) {\n this.customDashboardsService.destroyCharts();\n this.displayOptions = event;\n this.updateComponent();\n this.customDashboardsService.detectChange(\n this.hFilterJSON,\n this.displayOptions,\n false,\n true,\n NoDataActionType.filter,\n this.dashboard\n );\n }\n\n ngOnDestroy() {\n this.customDashboardsService.unsubscribeFilters();\n this.customDashboardsService.destroyCharts();\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 {{ dataItem.rank }}\n \n \n \n \n {{ dataItem.loanCategory }}\n \n \n \n \n \n \n \n \n {{ volTotal | currency: 'USD':'symbol':'1.0-0' }}\n \n \n \n \n {{ (dataItem.volPct | number: '1.0-0') + '%' }}\n \n \n \n \n \n \n \n \n {{ unitTotal }}\n \n \n \n \n {{ (dataItem.unitPct | number: '1.0-0') + '%' }}\n \n \n \n
\n","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { LargeCardService } from 'app/modules/my-limegear/components/standalone-components/services/large-card.service';\nimport { IPageHeadline } from 'app/modules/shared/classes/page-title-parameters';\nimport { ReusableFunctions } from 'app/modules/shared/classes/reusable-functions';\nimport { DisplayOptions } from 'app/modules/shared/interfaces/display-options';\nimport {\n NoDataActionType,\n NoDataSourceType,\n NoDataTypes,\n} from 'app/modules/shared/interfaces/no-data';\nimport { NavigationHelpService } from 'app/modules/shared/services/navigation-help.service';\nimport { PipelineService } from '../../services/pipeline.service';\nimport { filterBy, orderBy, SortDescriptor, State } from '@progress/kendo-data-query';\nimport { GridDataResult, PageChangeEvent } from '@progress/kendo-angular-grid';\nimport { UserAccessService } from 'app/modules/shared/services/user-access.service';\nimport { ILoanCategoryDistData, IPipelineProductParameters } from '../../interfaces/pipeline-data';\n\n@Component({\n selector: 'app-pipeline-loan-category-distribution',\n templateUrl: './pipeline-loan-category-distribution.component.html',\n styleUrls: ['./pipeline-loan-category-distribution.component.scss'],\n})\nexport class PipelineLoanCategoryDistributionComponent implements OnInit {\n pageHeadline: IPageHeadline = {\n module: 'pipeline',\n moduleIcon: 'fa-bolt',\n pageTitle: 'Active Pipeline Loan Category Distribution',\n linkArray: [\n {\n moduleLink: 'pipeline',\n linkTitle: 'Pipeline Home',\n showLink: true,\n isHome: true,\n },\n {\n moduleLink: 'pipeline/insights',\n linkTitle: 'Pipeline Insights',\n showLink: true,\n },\n ],\n };\n noDataType: NoDataTypes;\n hFilterJSON = '';\n displayOptions: DisplayOptions[];\n displayOptionValues = {\n channel: null,\n loanType: null,\n loanPurpose: null,\n lockStatus: null,\n status: null,\n };\n productSearchTerm: string = '';\n loading: boolean;\n noDataForCompany: boolean;\n data: ILoanCategoryDistData[];\n unitTotal: number = 0;\n volTotal: number = 0;\n gridView: GridDataResult;\n skip = 0;\n pageSize = 10;\n sort: SortDescriptor[] = [];\n sortable = {\n mode: 'single',\n allowUnsort: true,\n };\n gridState: State = {\n sort: [],\n skip: 0,\n take: 10,\n };\n scrollable = 'scrollable';\n type: 'numeric' | 'input' = 'input';\n pageable = {\n refresh: true,\n info: true,\n type: this.type,\n previousNext: true,\n pageSizes: [10, 20, 50],\n };\n\n constructor(\n private pipelineService: PipelineService,\n private reusableFunctions: ReusableFunctions,\n private _navigationHelper: NavigationHelpService,\n private _userAccessService: UserAccessService\n ) {}\n\n ngOnInit(): void {\n this.noDataType = {\n action: NoDataActionType.pageStart,\n searchTerm: '',\n componentTitle: this.pageHeadline.pageTitle,\n inputSource: NoDataSourceType.table,\n };\n this.displayOptions = this.reusableFunctions.getCurrentDisplayOptions(\n '/pipeline/insights/loan-category-distribution'\n );\n this.hFilterJSON = this.reusableFunctions.getHierarchyFilters();\n this.getData();\n }\n\n getData() {\n const params = this.setAndGetParams();\n\n this.pipelineService.displayActivePipelineLoanCategoryDistribution(params).subscribe(\n (data) => {\n this.loading = false;\n this.noDataForCompany = data && data.length != 0 ? false : true;\n this.data = data;\n this.calculatePercents(data);\n this.updateGrid();\n },\n (error) => {\n this.loading = false;\n this.noDataForCompany = true;\n this.noDataType.action = NoDataActionType.error;\n throw new Error(error);\n }\n );\n }\n\n setAndGetParams(): IPipelineProductParameters {\n this.displayOptionValues.channel = this.displayOptions.find(\n (item) => item.optionKey === 'channel'\n ).selectedOptions;\n this.displayOptionValues.loanType = this.displayOptions.find(\n (item) => item.optionKey === 'loanCategory'\n ).selectedOptions;\n this.displayOptionValues.loanPurpose = this.displayOptions.find(\n (item) => item.optionKey === 'loanPurpose'\n ).selectedOptions;\n this.displayOptionValues.lockStatus = this.displayOptions.find(\n (item) => item.optionKey === 'lockStatus'\n ).selectedOptions;\n this.displayOptionValues.status = this.displayOptions.find(\n (item) => item.optionKey === 'activeMilestones'\n ).selectedOptions;\n\n return {\n channel: this.displayOptionValues.channel,\n loanType: this.displayOptionValues.loanType,\n loanPurpose: this.displayOptionValues.loanPurpose,\n lockStatus: this.displayOptionValues.lockStatus,\n status: this.displayOptionValues.status,\n hFilterJSON: this.hFilterJSON,\n } as IPipelineProductParameters;\n }\n\n applyDisplayOptions(event: DisplayOptions[]) {\n this.displayOptions = event;\n this.setNoDataType(NoDataActionType.filter);\n this.getData();\n }\n\n applyNewFilters(event: string) {\n this.hFilterJSON = event;\n this.setNoDataType(NoDataActionType.filter);\n this.getData();\n }\n\n setNoDataType(action: NoDataActionType) {\n if (this.productSearchTerm && this.productSearchTerm.length > 0) {\n this.noDataType.action = NoDataActionType.search;\n } else {\n this.noDataType.action = action;\n }\n }\n\n calculatePercents(data: ILoanCategoryDistData[]) {\n this.volTotal = 0;\n this.unitTotal = 0;\n\n let volumeArr = data.map((obj) => obj.curVol);\n let volumeMax = Math.max(...volumeArr);\n\n let unitArr = data.map((obj) => obj.curUnits);\n let unitMax = Math.max(...unitArr);\n\n for (let product of data) {\n // Calculate percentages for inline bar graph\n product.volPctTotal = (product.curVol / volumeMax) * 100;\n product.unitPctTotal = (product.curUnits / unitMax) * 100;\n\n // Calculate the totals\n this.volTotal += product.curVol;\n this.unitTotal += product.curUnits;\n }\n }\n\n updateGrid() {\n let localData = this.searchResults();\n let orderedData = orderBy(localData, this.sort).slice(this.skip, this.skip + this.pageSize);\n this.gridView = {\n data: orderedData,\n total: localData.length,\n };\n }\n\n searchResults() {\n let searchedData: ILoanCategoryDistData[] = [];\n let searchCategories: string[] = ['loanType', 'product'];\n\n let filters = [];\n for (let category of searchCategories) {\n filters.push({\n field: category,\n operator: 'contains',\n value: null,\n ignoreCase: true,\n });\n }\n\n if (this.productSearchTerm && this.productSearchTerm.length > 0) {\n let searchTermTokens = this.productSearchTerm.split(' ');\n filters.map((filter) => (filter.value = searchTermTokens[0]));\n searchedData = filterBy(this.data, {\n logic: 'or',\n filters: filters,\n });\n\n if (searchTermTokens.length > 1) {\n filters.map((filter) => (filter.value = searchTermTokens[1]));\n searchedData = filterBy(searchedData, {\n logic: 'or',\n filters: filters,\n });\n }\n } else {\n searchedData = this.data;\n }\n\n if (searchedData?.length === 0) {\n this.noDataForCompany = true;\n }\n\n return searchedData;\n }\n\n pageChange(event: PageChangeEvent): void {\n this.pageSize = event.take;\n this.skip = event.skip;\n this.updateGrid();\n }\n\n sortChange(sort: SortDescriptor[]): void {\n this.sort = sort;\n this.skip = 0;\n this.updateGrid();\n }\n\n cellClickHandler({ dataItem, type }) {\n let routeName = '/reporting/pipeline/loan-category-distribution';\n if (type != 'contextmenu' && dataItem?.loanCategory && this.checkAccess(routeName)) {\n let queryParams = {\n category: dataItem.loanCategory,\n titleSuffix: ': ' + dataItem.loanCategory,\n };\n this._navigationHelper.navigateTo([routeName], queryParams, true);\n }\n }\n\n searchRows(event) {\n this.skip = 0;\n this.productSearchTerm = event;\n this.setNoDataType(NoDataActionType.search);\n this.noDataType.searchTerm = this.productSearchTerm;\n this.updateGrid();\n }\n\n checkAccess(url: string) {\n return this._userAccessService.hasAccessToPage(url);\n }\n}\n","\n\n\n
\n
\n \n
\n \n \n
\n
\n
\n \n
\n
\n
\n
{{ legend.name }}
\n
\n
\n
\n \n \n \n \n
\n
\n\n \n \n \n
\n \n
\n
\n \n \n {{ dataItem.category }}\n \n Total \n \n \n \n {{ dataItem.type }}\n \n \n \n \n {{ dataItem.units }}\n \n \n {{ totalUnits }}\n \n \n \n \n {{ dataItem.volume | currency : 'USD' : 'symbol' : '1.0-0' }}\n \n \n {{ totalVolume | currency : 'USD' : 'symbol' : '1.0-0' }}\n \n \n \n
\n
\n \n \n \n
\n \n
\n
\n \n \n {{ dataItem.rank }}\n \n \n \n \n {{ dataItem.category }}\n \n \n \n \n {{ dataItem.type }}\n \n \n \n \n \n \n \n \n {{\n totalVolume | currency : 'USD' : 'symbol' : '1.0-0'\n }}\n \n \n \n \n {{ (dataItem.volPctTotal | number : '1.0-0') + '%' }}\n \n \n \n \n \n \n \n \n {{ totalUnits }}\n \n \n \n \n {{ (dataItem.unitPctTotal | number : '1.0-0') + '%' }}\n \n \n \n
\n
\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { PipelineComponent } from './components/pipeline-at-a-glance/pipeline.component';\nimport { PipelineTransitionComponent } from './components/pipeline-transition/pipeline-transition.component';\nimport { PipelineInsightsComponent } from './components/pipeline-insights/pipeline-insights.component';\nimport { PipelineReportsComponent } from './components/pipeline-reports/pipeline-reports.component';\nimport { PipelineActivityTrackerComponent } from './components/pipeline-activity-tracker/pipeline-activity-tracker.component';\nimport { PipelineUpgradeComponent } from './components/pipeline-upgrade/pipeline-upgrade.component';\nimport { PipelineInsightsMilestoneStatusComponent } from './components/pipeline-insights-milestones-status/pipeline-insights-milestones.component';\nimport { AuthGuardService } from '../shared/services/auth-guard.service';\nimport { PipelineWithPositionAssignedComponent } from './components/pipeline-with-position-assigned/pipeline-with-position-assigned.component';\nimport { PipelineInsightsSalesFunnelComponent } from './components/pipeline-insights-sales-funnel/pipeline-insights-sales-funnel.component';\nimport { PipelineProductDistributionComponent } from './components/pipeline-product-distribution/pipeline-product-distribution.component';\nimport { PipelineBorrowerCharacteristicsComponent } from './components/pipeline-borrower-characteristics/pipeline-borrower-characteristics.component';\nimport { PipelineLoanCharacteristicsComponent } from './components/pipeline-loan-characteristics/pipeline-loan-characteristics.component';\nimport { PipelineInsightsOperationsAssignmentsComponent } from './components/pipeline-insights-operations-assignments/pipeline-insights-operations-assignments.component';\nimport { PipelineInsightsOperationsPipelineComponent } from './components/pipeline-insights-operations-pipeline/pipeline-insights-operations-pipeline.component';\nimport { PipelineInsightsTrendsComponent } from './components/pipeline-insights-trends/pipeline-insights-trends.component';\nimport { PipelineLoanCategoryDistributionComponent } from './components/pipeline-loan-category-distribution/pipeline-loan-category-distribution.component';\nimport { PipelineByLoanCategoryComponent } from './components/pipeline-by-loan-category/pipeline-by-loan-category.component';\n\nconst pipelineRoutes: Routes = [\n {\n path: '',\n component: PipelineTransitionComponent,\n canActivate: [AuthGuardService],\n },\n {\n path: 'at-a-glance',\n component: PipelineComponent,\n canActivate: [AuthGuardService],\n },\n {\n path: 'insights',\n component: PipelineInsightsComponent,\n canActivate: [AuthGuardService],\n },\n {\n path: 'reports',\n component: PipelineReportsComponent,\n canActivate: [AuthGuardService],\n },\n {\n path: 'activity-tracker',\n component: PipelineActivityTrackerComponent,\n canActivate: [AuthGuardService],\n },\n {\n path: 'activity-tracker/:loanNumber',\n component: PipelineActivityTrackerComponent,\n },\n {\n path: 'insights/milestone-status',\n component: PipelineInsightsMilestoneStatusComponent,\n canActivate: [AuthGuardService],\n },\n {\n path: 'insights/pipeline-with-position-assigned',\n component: PipelineWithPositionAssignedComponent,\n canActivate: [AuthGuardService],\n },\n {\n path: 'insights/sales-funnel',\n component: PipelineInsightsSalesFunnelComponent,\n canActivate: [AuthGuardService],\n },\n {\n path: 'insights/product-distribution',\n component: PipelineProductDistributionComponent,\n canActivate: [AuthGuardService],\n },\n {\n path: 'insights/loan-characteristics',\n component: PipelineLoanCharacteristicsComponent,\n canActivate: [AuthGuardService],\n },\n {\n path: 'insights/borrower-characteristics',\n component: PipelineBorrowerCharacteristicsComponent,\n canActivate: [AuthGuardService],\n },\n {\n path: 'insights/operations-assignments',\n component: PipelineInsightsOperationsAssignmentsComponent,\n canActivate: [AuthGuardService],\n },\n {\n path: 'insights/operations-pipeline',\n component: PipelineInsightsOperationsPipelineComponent,\n canActivate: [AuthGuardService],\n },\n {\n path: 'insights/pipeline-trends',\n component: PipelineInsightsTrendsComponent,\n canActivate: [AuthGuardService],\n },\n {\n path: 'insights/loan-category-distribution',\n component: PipelineLoanCategoryDistributionComponent,\n canActivate: [AuthGuardService],\n },\n {\n path: 'insights/pipeline-by-loan-category',\n component: PipelineByLoanCategoryComponent,\n canActivate: [AuthGuardService],\n },\n { path: 'upgrade', component: PipelineUpgradeComponent },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(pipelineRoutes)],\n exports: [RouterModule],\n})\nexport class PipelineRoutingModule {}\n","import { Component, OnInit } from '@angular/core';\nimport { IPageHeadline } from 'app/modules/shared/classes/page-title-parameters';\nimport { PipelineService } from '../../services/pipeline.service';\nimport { DisplayOptions } from 'app/modules/shared/interfaces/display-options';\nimport { ReusableFunctions } from 'app/modules/shared/classes/reusable-functions';\nimport { NoDataActionType, NoDataSourceType } from 'app/modules/shared/interfaces/no-data';\nimport {\n ITableColumnProperties,\n ITableDataProperties,\n} from 'app/modules/shared/components/common-kendo-table/common-kendo-table.component';\nimport { GridDataResult, PageChangeEvent } from '@progress/kendo-angular-grid';\nimport { orderBy, SortDescriptor } from '@progress/kendo-data-query';\nimport { IPipelineCategoryDistData, IPipelineParameters } from '../../interfaces/pipeline-data';\nimport { NavigationHelpService } from 'app/modules/shared/services/navigation-help.service';\nimport { UserAccessService } from 'app/modules/shared/services/user-access.service';\n\n@Component({\n selector: 'app-pipeline-by-loan-category',\n templateUrl: './pipeline-by-loan-category.component.html',\n styleUrls: ['./pipeline-by-loan-category.component.scss'],\n})\nexport class PipelineByLoanCategoryComponent implements OnInit {\n pageHeadline: IPageHeadline = {\n module: 'pipeline',\n moduleIcon: 'fa-bolt',\n pageTitle: 'Active Pipeline By Loan Category',\n linkArray: [\n {\n moduleLink: 'pipeline',\n linkTitle: 'Pipeline Home',\n showLink: true,\n isHome: true,\n },\n {\n moduleLink: 'pipeline/insights',\n linkTitle: 'Pipeline Insights',\n showLink: true,\n },\n ],\n };\n displayOptions: DisplayOptions[];\n displayOptionValues = {\n channel: null,\n loanType: null,\n loanPurpose: null,\n lockStatus: null,\n status: null,\n };\n hFilterJSON = '[]';\n donutData: any;\n donutLegend: any;\n unitDonutLegend: any;\n donutChartData: any;\n unitDonutChartData: any;\n noDataType: any;\n tableDataProperties: ITableDataProperties;\n tableColumnProperties: ITableColumnProperties;\n action: NoDataActionType = NoDataActionType.pageStart;\n loading: boolean = true;\n upperGridView: GridDataResult;\n lowerGridView: GridDataResult;\n\n gridData: any;\n noDataForCompany: boolean;\n skip = 0;\n pageSize = 5;\n sort: SortDescriptor[] = [];\n sortable = {\n mode: 'single',\n allowUnsort: true,\n };\n scrollable = 'scrollable';\n type: 'numeric' | 'input' = 'input';\n pageable = {\n refresh: true,\n info: true,\n type: this.type,\n previousNext: true,\n pageSizes: [5, 10, 20],\n };\n totalUnits: number;\n totalVolume: number;\n isDataReady: boolean;\n hasData: boolean;\n pageTitle: string;\n data: IPipelineCategoryDistData[];\n entitySort: SortDescriptor[];\n allLoanTypes: any;\n loanTypeColors: any;\n categoryColors: any;\n\n constructor(\n private pipelineService: PipelineService,\n private reusableFunctions: ReusableFunctions,\n private navigationHelper: NavigationHelpService,\n private userAccessService: UserAccessService\n ) {}\n\n ngOnInit(): void {\n this.pageTitle = 'Active Pipeline By Loan Category';\n this.displayOptions = this.reusableFunctions.getCurrentDisplayOptions(\n '/pipeline/insights/pipeline-by-loan-category'\n );\n this.entitySort = [{ field: 'rank', dir: 'asc' }];\n\n this.noDataType = {\n action: NoDataActionType.pageStart,\n searchTerm: '',\n componentTitle: 'Prduction Mix',\n inputSource: NoDataSourceType.largeDataCard,\n };\n this.tableDataProperties = {\n action: this.action,\n gridData: [],\n searchTerm: '',\n componentTitle: 'Loan Pipeline',\n initialPageSize: 10,\n initialSkip: 0,\n maxHeight: 700,\n recordSelection: [],\n kendoGridSelectById: '',\n hasData: false,\n isDataLoaded: true,\n pageable: false,\n useLGScroll: true,\n };\n this.getChartData();\n }\n\n applyNewFilters(event) {\n this.action = NoDataActionType.filter;\n this.hFilterJSON = event;\n this.getChartData();\n }\n\n applyDisplayOptions(event) {\n this.displayOptions = event;\n this.getChartData();\n }\n\n getChartData() {\n const displayOptionParams = this.setAndGetParams();\n const otherParams = {\n loanTypeCategory: 'All',\n loanTypeGroup: 'All',\n loanType: 'All',\n };\n\n const combinedParams = { ...displayOptionParams, ...otherParams };\n this.hasData = false;\n this.isDataReady = false;\n\n this.pipelineService.displayPipelineLoanTypeGroupDistribution(combinedParams).subscribe({\n next: (data: IPipelineCategoryDistData[]) => {\n this.loading = false;\n this.hasData = true;\n this.isDataReady = true;\n if (data.length > 0) {\n this.data = data;\n this.prepareDonutData();\n this.gridData = this.prepareGridData(this.data);\n this.updateGrid();\n this.tableDataProperties.gridData = this.gridData;\n this.tableDataProperties.hasData = true;\n this.tableDataProperties.isDataLoaded = true;\n this.tableDataProperties = Object.assign({}, this.tableDataProperties);\n } else {\n this.noDataForCompany = true;\n this.tableDataProperties.gridData = [];\n this.tableDataProperties.hasData = true;\n this.tableDataProperties.isDataLoaded = true;\n this.tableDataProperties.action = NoDataActionType.error;\n this.tableDataProperties = Object.assign({}, this.tableDataProperties);\n }\n },\n error: (error) => {\n console.log('error: ', error);\n this.tableDataProperties.gridData = [];\n this.tableDataProperties.hasData = false;\n this.tableDataProperties.isDataLoaded = true;\n this.tableDataProperties.action = NoDataActionType.error;\n this.tableDataProperties = Object.assign({}, this.tableDataProperties);\n },\n });\n }\n\n setAndGetParams(): IPipelineParameters {\n this.displayOptionValues.channel = this.displayOptions.find(\n (item) => item.optionKey === 'channel'\n ).selectedOptions;\n this.displayOptionValues.loanPurpose = this.displayOptions.find(\n (item) => item.optionKey === 'loanPurpose'\n ).selectedOptions;\n this.displayOptionValues.lockStatus = this.displayOptions.find(\n (item) => item.optionKey === 'lockStatus'\n ).selectedOptions;\n this.displayOptionValues.status = this.displayOptions.find(\n (item) => item.optionKey === 'activeMilestones'\n ).selectedOptions;\n\n return {\n channel: this.displayOptionValues.channel,\n purpose: this.displayOptionValues.loanPurpose,\n lockStatus: this.displayOptionValues.lockStatus,\n status: this.displayOptionValues.status,\n hFilterJSON: this.hFilterJSON,\n } as IPipelineParameters;\n }\n\n prepareDonutData() {\n this.categoryColors = this.prepareCategoryColors();\n this.allLoanTypes = this.reusableFunctions.getUniqueItemList(this.data, 'loanType');\n this.loanTypeColors = this.allLoanTypes.map((type) => ({\n name: type,\n color: this.categoryColors[type],\n }));\n const { totalVolume, totalUnits } = this.prepareClosingMixCenterText();\n this.donutChartData = this.setDonutChartData(\n this.data,\n 'Pipeline by Category - Distribution',\n 'curVol',\n totalVolume,\n totalUnits\n );\n\n this.unitDonutChartData = this.setDonutChartData(\n this.data,\n 'Pipeline by Category - Distribution',\n 'curUnits',\n totalUnits,\n totalUnits\n );\n\n this.isDataReady = true;\n this.hasData = true;\n }\n\n prepareClosingMixCenterText() {\n let totalVolume = this.data.reduce((a, { curVol }) => a + curVol, 0);\n let totalUnits = this.data.reduce((a, { curUnits }) => a + curUnits, 0);\n\n this.donutLegend = {\n title: this.reusableFunctions.getLargeCurrencyFormat(totalVolume).toString(),\n description: 'Total',\n type: 'Volume',\n };\n\n this.unitDonutLegend = {\n title: totalUnits.toString(),\n description: 'Total',\n type: 'Units',\n };\n\n return {\n totalVolume,\n totalUnits,\n };\n }\n\n setDonutChartData(\n data: any[],\n filterType: string,\n dataType: string,\n totalVolume: number,\n totalUnits: number\n ): any[] {\n return data.map((i) => {\n return {\n name: i.loanType,\n color: this.categoryColors[i.loanType],\n y: i[dataType],\n properties: {\n units: i.curUnits,\n volume: i.curVol,\n milestone: 'all',\n loanTypeCat: i.loanTypeCat ?? 'all',\n loanTypeGroup: i.loanTypeGroup ?? 'all',\n filterType: filterType,\n filterValue: i.category,\n navFromUrl: '',\n percentage: 100 * (i.curUnits / totalUnits),\n alternatePercentage: 100 * (i.curVol / totalVolume),\n },\n };\n });\n }\n\n updateGrid() {\n this.loading = false;\n let orderedData = orderBy(this.gridData, this.entitySort);\n if (this.gridData.length < 1) {\n this.noDataForCompany = true;\n } else {\n this.upperGridView = {\n data: this.gridData,\n total: this.gridData.length,\n };\n this.lowerGridView = {\n data: orderedData,\n total: this.gridData.length,\n };\n }\n }\n\n prepareGridData(data) {\n this.totalUnits = data.reduce((a, b) => a + b.curUnits, 0);\n this.totalVolume = data.reduce((a, b) => a + b.curVol, 0);\n const addedTypes = [];\n const gridData = [];\n for (let i of data) {\n addedTypes.push(i.loanTypeGroup);\n const rowData = {\n rank: i.rank,\n type: i.loanTypeGroup,\n category: i.loanType,\n units: i.curUnits,\n volume: i.curVol,\n unitPctTotal: (i.curUnits / this.totalUnits) * 100,\n volPctTotal: (i.curVol / this.totalVolume) * 100,\n };\n gridData.push(rowData);\n }\n gridData.sort((a, b) => a.rank - b.rank);\n return gridData;\n }\n\n pageChange(event: PageChangeEvent): void {\n this.pageSize = event.take;\n this.skip = event.skip;\n this.updateGrid();\n }\n\n sortChange(sort: SortDescriptor[]): void {\n this.entitySort = sort;\n this.updateGrid();\n }\n\n cellClickHandler({ dataItem, type }) {\n let routeName = '/reporting/pipeline/loan-category-distribution';\n if (type != 'contextmenu' && dataItem?.category && this.checkAccess(routeName)) {\n let queryParams = {\n category: dataItem.category,\n loanCategory: dataItem.type,\n titleSuffix: ': ' + dataItem.category,\n };\n this.navigationHelper.navigateTo([routeName], queryParams, true);\n }\n }\n\n checkAccess(url: string) {\n return this.userAccessService.hasAccessToPage(url);\n }\n\n prepareCategoryColors() {\n const colors = {};\n for (let category of this.data) {\n colors[category.loanType] = this.reusableFunctions.getRandomHexColor();\n }\n\n return colors;\n }\n}\n","import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PipelineComponent } from './components/pipeline-at-a-glance/pipeline.component';\nimport { PipelineService } from './services/pipeline.service';\nimport { PipelineRoutingModule } from './pipeline.routing.module';\nimport { SharedModule } from '../shared/shared.module';\nimport { ThirdPartyModule } from '../third-party/third-party.module';\nimport { PipelineTransitionComponent } from './components/pipeline-transition/pipeline-transition.component';\nimport { PipelineInsightsComponent } from './components/pipeline-insights/pipeline-insights.component';\nimport { PipelineReportsComponent } from './components/pipeline-reports/pipeline-reports.component';\nimport { PipelineActivityTrackerComponent } from './components/pipeline-activity-tracker/pipeline-activity-tracker.component';\n\nimport { PipelineUpgradeComponent } from './components/pipeline-upgrade/pipeline-upgrade.component';\nimport { PipelineInsightOptionComponent } from './components/pipeline-insight-option/pipeline-insight-option.component';\nimport { PipelineInsightsMilestoneStatusComponent } from './components/pipeline-insights-milestones-status/pipeline-insights-milestones.component';\nimport { PipelineWithPositionAssignedComponent } from './components/pipeline-with-position-assigned/pipeline-with-position-assigned.component';\nimport { PipelineInsightsSalesFunnelComponent } from './components/pipeline-insights-sales-funnel/pipeline-insights-sales-funnel.component';\nimport { PipelineProductDistributionComponent } from './components/pipeline-product-distribution/pipeline-product-distribution.component';\nimport { PipelineBorrowerCharacteristicsComponent } from './components/pipeline-borrower-characteristics/pipeline-borrower-characteristics.component';\nimport { PipelineLoanCharacteristicsComponent } from './components/pipeline-loan-characteristics/pipeline-loan-characteristics.component';\nimport { PipelineInsightsOperationsAssignmentsComponent } from './components/pipeline-insights-operations-assignments/pipeline-insights-operations-assignments.component';\nimport { PipelineInsightsOperationsPipelineComponent } from './components/pipeline-insights-operations-pipeline/pipeline-insights-operations-pipeline.component';\nimport { PipelineInsightsTrendsComponent } from './components/pipeline-insights-trends/pipeline-insights-trends.component';\nimport { PipelineLoanCategoryDistributionComponent } from './components/pipeline-loan-category-distribution/pipeline-loan-category-distribution.component';\nimport { PipelineByLoanCategoryComponent } from './components/pipeline-by-loan-category/pipeline-by-loan-category.component';\nimport { GridModule } from '@progress/kendo-angular-grid';\nimport { PipelineActivityService } from './services/pipeline-activity.service';\nimport { PipelineLoanCharacteristicsService } from './services/pipeline-loan-characteristics.service';\nimport { PipelineLockStatusService } from './services/pipeline-lock-status.service';\nimport { PipelineOperationService } from './services/pipeline-operation.service';\nimport { PipelineSalesService } from './services/pipeline-sales.service';\n\n@NgModule({\n declarations: [\n PipelineComponent,\n PipelineTransitionComponent,\n PipelineInsightsComponent,\n PipelineReportsComponent,\n PipelineActivityTrackerComponent,\n PipelineUpgradeComponent,\n PipelineInsightOptionComponent,\n PipelineInsightsMilestoneStatusComponent,\n PipelineWithPositionAssignedComponent,\n PipelineInsightsSalesFunnelComponent,\n PipelineProductDistributionComponent,\n PipelineLoanCharacteristicsComponent,\n PipelineBorrowerCharacteristicsComponent,\n PipelineInsightsOperationsAssignmentsComponent,\n PipelineInsightsOperationsPipelineComponent,\n PipelineInsightsTrendsComponent,\n PipelineLoanCategoryDistributionComponent,\n PipelineByLoanCategoryComponent,\n ],\n imports: [CommonModule, PipelineRoutingModule, SharedModule, GridModule, ThirdPartyModule],\n providers: [\n PipelineService,\n PipelineActivityService,\n PipelineLoanCharacteristicsService,\n PipelineLockStatusService,\n PipelineOperationService,\n PipelineSalesService,\n PipelineService,\n ],\n schemas: [NO_ERRORS_SCHEMA],\n})\nexport class PipelineModule {}\n","import {\n Component,\n OnInit,\n Output,\n EventEmitter,\n HostListener,\n Input,\n AfterViewInit,\n} from '@angular/core';\n\n@Component({\n selector: 'search-dialog',\n templateUrl: './search-dialog.component.html',\n styleUrls: ['./search-dialog.component.scss'],\n})\nexport class SearchDialogComponent implements OnInit, AfterViewInit {\n private _dialogSearchTerm: string;\n clearIcon: any;\n popupBox;\n isPopupBoxOpen: boolean;\n searchIcon;\n isSearchEmpty: boolean;\n searchTimeoutStorage = null;\n @Input() placeHolder? = 'Search text';\n @Input() clickAwayClose? = true;\n @Input('locationTop') popupTop? = -110;\n @Input() searchIconFontSize? = 16;\n @Input() searchIconActionColors? = ['#223540', '#223540'];\n @Input() searchBoxHeight?: number = 56;\n @Input('searchId') suffix;\n @Input() timeoutDuration = 1000;\n @Output() searchOutput: EventEmitter = new EventEmitter();\n @Input() set resetSearch(value: boolean) {\n if (value) {\n this.clearSearchTerm();\n }\n }\n\n constructor() {}\n\n ngOnInit() {\n this.isPopupBoxOpen = false;\n this.isSearchEmpty = true;\n }\n\n ngAfterViewInit() {\n this.searchIcon = document.getElementById('search-dialog-icon-' + this.suffix);\n if (this.searchIcon) {\n this.searchIcon.style.fontSize = this.searchIconFontSize.toString() + 'px';\n this.searchIcon.style.color = this.searchIconActionColors[0];\n }\n\n this.popupBox = document.getElementById('simple-popuup-' + this.suffix);\n if (this.popupBox) {\n this.popupBox.style.visibility = 'hidden';\n this.popupBox.style.top = this.popupTop.toString() + 'px';\n }\n }\n\n get dialogSearchTerm(): string {\n return this._dialogSearchTerm;\n }\n\n set dialogSearchTerm(value: string) {\n this._dialogSearchTerm = value;\n clearTimeout(this.searchTimeoutStorage);\n this.searchTimeoutStorage = setTimeout(() => {\n this.emitSearchOutput();\n this.setClearIcon();\n }, this.timeoutDuration);\n }\n\n @HostListener('document:keydown.escape', ['$event']) onKeydownHandler(event: KeyboardEvent) {\n if (event.key === 'Escape' && this.isPopupBoxOpen) {\n this.clearSearchTerm();\n this.closePopupDialog();\n this.setClearIcon();\n }\n }\n\n closePopupDialog() {\n this.searchIcon.style.color = this.searchIconActionColors[0];\n this.popupBox.style.visibility = 'hidden';\n this.isPopupBoxOpen = false;\n }\n\n openPopupDialog() {\n this.searchIcon.style.color = this.searchIconActionColors[1];\n this.popupBox.style.visibility = 'visible';\n this.isPopupBoxOpen = true;\n }\n\n openSearchDialog() {\n this.setPopupboxPosition();\n this.setClearIcon();\n\n if (this.clickAwayClose) {\n if (this.getPopupDialogStatus() === 'hidden') {\n this.openPopupDialog();\n } else if (this.getPopupDialogStatus() === 'visible') {\n this.closePopupDialog();\n }\n } else {\n this.openPopupDialog();\n }\n }\n\n getPopupDialogStatus() {\n return this.popupBox.style.visibility;\n }\n\n clearSearchTerm() {\n if (this._dialogSearchTerm !== '' || !this._dialogSearchTerm) {\n this._dialogSearchTerm = '';\n this.isSearchEmpty = true;\n }\n }\n\n cancelButtonClick(sufx: string) {\n if (sufx === this.suffix) {\n this.clearSearchTerm();\n this.emitSearchOutput();\n this.setClearIcon();\n if (this.popupBox) {\n this.closePopupDialog();\n }\n }\n }\n\n clearButtonClick(sufx: string) {\n if (!this.isSearchEmpty && sufx === this.suffix) {\n this.clearSearchTerm();\n this.setClearIcon();\n this.emitSearchOutput();\n }\n }\n\n emitSearchOutput() {\n this.searchOutput.emit(this._dialogSearchTerm);\n }\n\n setClearIcon() {\n this.clearIcon = document.getElementById('clear-icon-' + this.suffix);\n\n if (this.clearIcon) {\n if (this._dialogSearchTerm == '' || !this._dialogSearchTerm) {\n this.clearIcon.style.visibility = 'hidden';\n } else {\n this.clearIcon.style.visibility = 'visible';\n }\n }\n\n if (this._dialogSearchTerm == '' || !this._dialogSearchTerm) {\n this.isSearchEmpty = true;\n } else {\n this.isSearchEmpty = false;\n }\n }\n\n setPopupboxPosition() {\n let pageWidth = document.documentElement.clientWidth;\n let popoupParantContainer = document.getElementById(\n 'search-dialog-main-container-' + this.suffix\n );\n\n if (this.popupBox) {\n if (popoupParantContainer.getBoundingClientRect().left + 320 > pageWidth) {\n this.popupBox.style.right = '2px';\n } else {\n this.popupBox.style.right = null;\n }\n }\n }\n}\n","
\n
\n \n \n \n
\n
\n"],"x_google_ignoreList":[]}