{"version":3,"file":"992.1796b3a6d780e3fc.js","mappings":"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","names":["LimeGearCharts","LimeGearChart","constructor","router","reusableFunctions","decimalPipe","userAccessService","incentivesService","navigationHelpService","this","createKPIScatterPlot","title","xAxisText","yAxisText","seriesData","seriesColor","dataLabelsEnabled","roleName","urlSegment","_this","chart","spacingBottom","spacingLeft","marginRight","spacingRight","spacingTop","type","zooming","height","text","align","useHTML","x","credits","enabled","series","data","turboThreshold","color","marker","symbol","point","events","click","navigate","queryParams","id","value","level","exporting","xAxis","labels","style","fontSize","yAxis","legend","plotOptions","scatter","dataLabels","format","radius","states","hover","lineColor","lineWidth","maxPointWidth","groupPadding","gridLineWidth","minorGridLineWidth","pointStart","dataGrouping","cursor","tooltip","fontFamily","opacity","borderColor","backgroundColor","borderRadius","borderWidth","shared","formatter","tooltipTitle","properties","titlePart","length","unitsLabel","units","y","transform","formatMoney","nbr","createKPISparkline","time","unit","seriesType","dataType","margin","width","overflow","startOnTick","endOnTick","tickPositions","shadow","hideDelay","outside","yValue","toLocaleString","animation","column","negativeColor","createKPINewSparkline","periodDates","zIndex","label","date","formatPeriodData","formatDayPeriods","createRevenueSparkline","periodData","fillColor","setColorAxis","colorAxis","min","minColor","maxColor","createNewAAGStackedChart","initialSeriesData","currentPeriodDates","comparePeriodDates","isBPS","route","compareTo","lineSeriesTitle","purpose","loanType","hFilterJson","clickablePoints","hasAccessToPage","categoryGroup","forEach","i","push","getShortDateFormat","load","xTicks","ticks","points","pointInf","element","buttons","contextButton","categories","tickInterval","pointIntervalUnit","verticalAlign","stacking","minPointLength","brightness","radiusPlus","lineWidthPlus","e","isPriorPeriod","name","amount","alternateY","bps","toFixed","openAAGModal","yearMonthCalendar","replace","datePeriodDescription","previousPeriodLine","tooltipTotalName","propertyTotal","alternatePropertyTotal","reduce","s","index","toolText","seriesName","isPreviousPeriod","toLowerCase","alternateYValue","abbrevMonthDate","tootipTotalName","lang","noData","fontWeight","createECloseAdoptionTrendsStackedChart","formatPeriodDataFromAbbrvMonth","onclick","item","navigateTo","selectedPeriod","period","titleSuffix","itemStyle","symbolHeight","includes","eCloseOptionKey","a","unitsWidth","volumeWidth","b","getFullDateFormat","dateArr","split","Number","slice","chartTitleString","comparisonValue","ComparisonPercent","isComparable","estimatedValue","mainValue","isEstimateVisisble","comparison","getCaret","caret_icon","getPurpose","getLoanType","setLineChartSeriesOptions","markerSymbol","legendIndex","getQueryParams","periodGroup","search","falloutType"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./src/app/modules/shared/classes/chart-data.ts"],"sourcesContent":["import * as Highcharts from 'highcharts';\nimport { CategoryGroup, ReusableFunctions } from './reusable-functions';\nimport { Router } from '@angular/router';\nimport { Chart } from 'highcharts';\nimport { DecimalPipe } from '@angular/common';\nimport { UserAccessService } from '../services/user-access.service';\nimport { IncentivesService } from 'app/modules/incentives/services/incentives.service';\nimport { NavigationHelpService } from '../services/navigation-help.service';\n\nexport namespace LimeGearCharts {\n export interface ChartData {\n currentDate: Date;\n yCurrent: number;\n yPredict?: number;\n previousDate?: Date;\n yPreviousMonth: number;\n }\n\n export interface DonutChartSeriesData {\n name: string;\n y: number;\n color: string;\n }\n\n export interface ChartDataPoint {\n x?: number | string;\n y: number;\n color?: string;\n name?: string;\n properties?: any;\n category?: number | string;\n }\n\n export interface ChartDataSeparation {\n current: Array;\n line: Array;\n prediction: Array;\n }\n\n export class LimeGearChart {\n constructor(\n private router: Router,\n private reusableFunctions: ReusableFunctions,\n private decimalPipe?: DecimalPipe,\n private userAccessService?: UserAccessService,\n private incentivesService?: IncentivesService,\n private navigationHelpService?: NavigationHelpService\n ) {}\n\n public createKPIScatterPlot(\n title: string,\n xAxisText: string,\n yAxisText: string,\n seriesData: any[],\n seriesColor: string,\n dataLabelsEnabled: boolean,\n roleName,\n urlSegment: string = 'branch'\n ): Highcharts.Options {\n const _this = this;\n return {\n chart: {\n spacingBottom: 0,\n spacingLeft: 0,\n marginRight: 0,\n spacingRight: 0,\n spacingTop: 0,\n type: 'scatter',\n zooming: {\n type: 'xy',\n },\n height: 700,\n },\n title: {\n text: title,\n align: 'left',\n useHTML: true,\n x: 5,\n },\n credits: {\n enabled: false,\n },\n series: [\n {\n data: seriesData,\n turboThreshold: 0,\n type: 'scatter',\n color: seriesColor,\n marker: {\n symbol: 'circle',\n },\n point: {\n events: {\n click: function (point) {\n if (roleName && roleName == 'Employee') {\n _this.router.navigate(\n ['/performance/scorecards', urlSegment],\n {\n queryParams: {\n id: this.value,\n },\n }\n );\n } else if (roleName && roleName !== 'Employee') {\n _this.router.navigate(\n ['/performance/scorecards', urlSegment],\n {\n queryParams: {\n level: roleName,\n id: this.value,\n },\n }\n );\n }\n },\n },\n },\n },\n ],\n exporting: {\n enabled: false,\n },\n xAxis: [\n {\n labels: {\n enabled: true,\n style: {\n fontSize: '1em',\n },\n },\n title: {\n text: xAxisText,\n style: {\n fontSize: '1em',\n },\n },\n } as Highcharts.XAxisOptions,\n ],\n yAxis: [\n {\n title: {\n text: yAxisText,\n style: {\n fontSize: '1em',\n },\n },\n labels: {\n enabled: true,\n style: {\n fontSize: '1em',\n },\n },\n } as Highcharts.YAxisOptions,\n ],\n legend: {\n enabled: false,\n },\n plotOptions: {\n scatter: {\n dataLabels: {\n format: '{point.name}',\n enabled: dataLabelsEnabled,\n },\n marker: {\n radius: 5,\n states: {\n hover: {\n enabled: true,\n lineColor: 'rgb(100,100,100)',\n lineWidth: 0,\n },\n },\n },\n states: {\n hover: {},\n },\n },\n series: {\n maxPointWidth: 52,\n groupPadding: 0,\n gridLineWidth: 0,\n minorGridLineWidth: 0,\n pointStart: 0,\n dataGrouping: {\n enabled: false,\n },\n cursor: 'pointer',\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: 'white',\n backgroundColor: 'white',\n borderRadius: 7,\n borderWidth: 1,\n shared: true,\n useHTML: true,\n formatter: function () {\n const tooltipTitle = this.point?.properties?.titlePart;\n const isTitleLong = tooltipTitle?.length > 17 ? true : false;\n return `
\n
\n
\n ${\n isTitleLong\n ? `
${tooltipTitle}
`\n : `
${tooltipTitle}
`\n }\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
${\n this.point?.properties?.unitsLabel ?? ''\n }: ${\n this.point?.properties?.units ?? ''\n }
% of Target: ${\n this.y > 999 ? _this.decimalPipe.transform(this.y, '1.0-0') : this.y\n }
Volume: ${_this.reusableFunctions.formatMoney(\n +this.x\n )}
Units: ${\n this.point?.properties?.nbr\n }
\n
`;\n },\n } as Highcharts.TooltipOptions,\n };\n }\n\n public createKPISparkline(\n seriesData: any[],\n time: string,\n unit: string,\n seriesType: string,\n dataType: 'currency' | 'number' | string = 'number'\n ): Highcharts.Options {\n let _this = this;\n return {\n chart: {\n backgroundColor: null,\n borderWidth: 0,\n type: 'area',\n margin: [2, 4, 4, 4],\n width: 180,\n height: 50,\n style: {\n overflow: 'visible',\n },\n },\n title: {\n text: '',\n },\n credits: {\n enabled: false,\n },\n xAxis: {\n labels: {\n enabled: false,\n },\n title: {\n text: null,\n },\n startOnTick: false,\n endOnTick: false,\n tickPositions: [],\n },\n yAxis: {\n endOnTick: false,\n startOnTick: false,\n labels: {\n enabled: false,\n },\n title: {\n text: null,\n },\n tickPositions: [0],\n },\n legend: {\n enabled: false,\n },\n tooltip: {\n useHTML: true,\n backgroundColor: null,\n borderWidth: 0,\n shadow: false,\n hideDelay: 0,\n outside: true,\n shared: true,\n formatter: function () {\n let yValue = this.y;\n let value = '';\n if (yValue && dataType === 'currency') {\n value = _this.reusableFunctions.formatMoney(yValue);\n } else if (yValue) {\n value = yValue.toLocaleString();\n }\n return `
\n \n \n \n \n \n
${time} ${+this.x + 1}: ${value}
\n
`;\n },\n },\n exporting: {\n enabled: false,\n },\n series: [\n {\n type: seriesType === 'area' ? 'area' : 'column',\n data: seriesData,\n },\n ],\n plotOptions: {\n series: {\n animation: false,\n lineWidth: 1,\n shadow: false,\n states: {\n hover: {\n lineWidth: 1,\n },\n },\n marker: {\n radius: 4,\n states: {\n hover: {\n radius: 5,\n },\n },\n },\n },\n column: {\n negativeColor: '#910000',\n borderColor: 'silver',\n },\n },\n };\n }\n\n public createKPINewSparkline(\n seriesData: any[],\n time: string,\n unit: string,\n seriesType: string,\n dataType: 'currency' | 'number' | string = 'number',\n periodDates?: string[],\n seriesColor?: string\n ): Highcharts.Options {\n // 6/16/23 TODO: Merge KPISparkline functions when all sparklines are updated. Keeping old version alive for now since multiple charts use old function.\n let _this = this;\n return {\n chart: {\n backgroundColor: null,\n borderWidth: 0,\n type: 'area',\n margin: [2, 4, 4, 4],\n width: 180,\n height: 50,\n style: {\n overflow: 'visible',\n },\n },\n title: {\n text: '',\n },\n credits: {\n enabled: false,\n },\n xAxis: {\n labels: {\n enabled: false,\n },\n title: {\n text: null,\n },\n startOnTick: false,\n endOnTick: false,\n tickPositions: [],\n },\n yAxis: {\n endOnTick: false,\n startOnTick: false,\n labels: {\n enabled: false,\n },\n title: {\n text: null,\n },\n tickPositions: [0],\n },\n legend: {\n enabled: false,\n },\n tooltip: {\n style: {\n color: '#223540',\n fontFamily: 'Roboto',\n fontSize: '12',\n height: 12,\n zIndex: 1,\n },\n borderColor: 'white',\n backgroundColor: 'white',\n borderRadius: 7,\n borderWidth: 1,\n shared: true,\n useHTML: true,\n outside: true,\n hideDelay: 0,\n formatter: function () {\n let yValue = this.y;\n let value = '';\n let label = 'Amount';\n\n if ((yValue || yValue === 0) && dataType === 'currency') {\n value = _this.reusableFunctions.formatMoney(yValue);\n } else if (yValue || yValue === 0) {\n value = yValue.toLocaleString();\n label = 'Units';\n }\n\n const date =\n time === 'Month' || time === ''\n ? _this.formatPeriodData(+this.x, periodDates)\n : _this.formatDayPeriods(periodDates[+this.x]);\n const defaultColor = 'rgb(124, 181, 236)';\n const color = seriesColor ? seriesColor : defaultColor;\n return `
\n
\n
\n
${date}
\n
\n \n \n \n \n \n
${label}:${value}
\n
`;\n },\n },\n exporting: {\n enabled: false,\n },\n series: [\n {\n type: seriesType === 'area' ? 'area' : 'column',\n data: seriesData,\n },\n ],\n plotOptions: {\n series: {\n animation: false,\n lineWidth: 1,\n shadow: false,\n states: {\n hover: {\n lineWidth: 1,\n },\n },\n marker: {\n radius: 4,\n states: {\n hover: {\n radius: 5,\n },\n },\n },\n },\n column: {\n negativeColor: '#910000',\n borderColor: 'silver',\n },\n },\n };\n }\n\n public createRevenueSparkline(\n seriesData: any[],\n periodData: any[],\n seriesType: string,\n dataType: 'currency' | 'number' | string = 'number'\n ): Highcharts.Options {\n let _this = this;\n return {\n chart: {\n backgroundColor: null,\n borderWidth: 0,\n type: 'area',\n margin: [2, 4, 4, 4],\n width: 180,\n height: 50,\n style: {\n overflow: 'visible',\n },\n },\n title: {\n text: '',\n },\n credits: {\n enabled: false,\n },\n xAxis: {\n labels: {\n enabled: false,\n },\n title: {\n text: null,\n },\n startOnTick: false,\n endOnTick: false,\n tickPositions: [],\n },\n yAxis: {\n endOnTick: false,\n startOnTick: false,\n labels: {\n enabled: false,\n },\n title: {\n text: null,\n },\n tickPositions: [0],\n },\n legend: {\n enabled: false,\n },\n tooltip: {\n style: {\n color: '#223540',\n fontFamily: 'Roboto',\n fontSize: '12',\n height: 12,\n zIndex: 1,\n },\n borderColor: 'white',\n backgroundColor: 'white',\n borderRadius: 7,\n borderWidth: 1,\n shared: true,\n useHTML: true,\n outside: true,\n hideDelay: 0,\n formatter: function () {\n let yValue = this.y;\n let value = '';\n if ((yValue || yValue === 0) && dataType === 'currency') {\n value = _this.reusableFunctions.formatMoney(yValue);\n } else if (yValue || yValue === 0) {\n value = yValue.toLocaleString();\n }\n\n return ``;\n },\n },\n exporting: {\n enabled: false,\n },\n series: [\n {\n type: seriesType === 'area' ? 'area' : 'column',\n data: seriesData,\n lineColor: 'rgb(0,138,119)',\n },\n ],\n plotOptions: {\n series: {\n animation: false,\n lineWidth: 1,\n shadow: false,\n color: 'rgb(65,214,195)',\n states: {\n hover: {\n lineWidth: 1,\n },\n },\n marker: {\n fillColor: 'rgb(0,138,119)',\n radius: 4,\n states: {\n hover: {\n radius: 5,\n },\n },\n },\n },\n column: {\n negativeColor: '#910000',\n borderColor: 'silver',\n },\n },\n };\n }\n\n //if it passes in colarAxis, use it. Otherwise, use default gradient\n public setColorAxis(colorAxis): any {\n if (colorAxis != '') {\n return colorAxis;\n } else {\n return {\n min: 0,\n minColor: '#E6E7E8',\n maxColor: '#005645',\n };\n }\n }\n\n public createNewAAGStackedChart(\n xAxisText: string,\n yAxisText: string,\n initialSeriesData: any,\n currentPeriodDates: string[],\n comparePeriodDates: string[],\n isBPS: boolean,\n route: string,\n urlSegment: string,\n compareTo: string,\n lineSeriesTitle: string,\n purpose: string,\n loanType: string,\n hFilterJson: string\n ): Highcharts.Options {\n const _this = this;\n let clickablePoints = this.userAccessService.hasAccessToPage(route + '/' + urlSegment);\n const categoryGroup: string[] = [];\n currentPeriodDates.forEach((date, i) => {\n categoryGroup.push(\n this.reusableFunctions.getShortDateFormat(\n _this.formatPeriodData(i, currentPeriodDates)\n )\n );\n });\n return {\n chart: {\n spacingBottom: 0,\n spacingLeft: 0,\n marginRight: 0,\n spacingRight: 0,\n spacingTop: 5,\n height: 330,\n events: {\n load: function () {\n if (clickablePoints) {\n var xAxis = this.xAxis[0];\n var xTicks = xAxis.ticks;\n var yAxis = this.yAxis[0];\n var points = this.series[0].points;\n points.forEach((pointInf, i) => {\n if (xTicks[i]) {\n var label = xTicks[i].label.element;\n label.style.cursor = 'pointer';\n }\n });\n }\n },\n },\n },\n title: {\n text: '',\n },\n credits: {\n enabled: false,\n },\n series: initialSeriesData,\n exporting: {\n enabled: false,\n buttons: {\n contextButton: {\n //menuItems: Highcharts.defaultOptions.exporting.buttons.contextButton.menuItems.slice(0, 10)\n },\n },\n },\n xAxis: [\n {\n type: 'category',\n categories: categoryGroup,\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 } 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: true,\n align: 'center',\n verticalAlign: 'bottom',\n },\n plotOptions: {\n column: {\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: true,\n states: {\n hover: {\n radius: 4,\n enabled: true,\n radiusPlus: 0,\n lineWidthPlus: 0,\n lineWidth: 0,\n },\n },\n },\n events: {\n click: function (e) {\n const isPriorPeriod = e.point.series.name === 'Prior Period';\n if (isPriorPeriod) {\n const amount =\n e.point.properties.type === 'amount'\n ? e.point.y\n : e.point.properties.alternateY;\n const bps =\n e.point.properties.type === 'amount'\n ? e.point.properties.alternateY.toFixed(3)\n : e.point.y.toFixed(3);\n _this.incentivesService.openAAGModal(\n e.point.properties.yearMonthCalendar,\n this.xAxis.series[0].name.replace('Loan', 'Total'),\n amount,\n bps,\n isPriorPeriod,\n hFilterJson\n );\n }\n },\n },\n point: {\n events: {\n click: function (e) {\n const amount =\n this.properties.units === 'amount'\n ? this.y\n : this.properties.alternateY;\n const bps =\n this.properties.units === 'amount'\n ? this.properties.alternateY.toFixed(3)\n : this.y.toFixed(3);\n _this.incentivesService.openAAGModal(\n this.properties.datePeriodDescription,\n this.series.name,\n amount,\n bps,\n false,\n hFilterJson\n );\n },\n },\n },\n cursor: 'pointer',\n } as Highcharts.PlotSeriesOptions,\n },\n tooltip: {\n style: {\n fontFamily: 'Roboto',\n fontSize: '12',\n height: 12,\n },\n borderColor: 'white',\n backgroundColor: 'white',\n borderRadius: 7,\n borderWidth: 1,\n shared: true,\n useHTML: true,\n outside: false,\n formatter: function () {\n let tooltip = '';\n let length = this.points.length;\n let previousPeriodLine = '';\n let tooltipTotalName = '';\n let propertyTotal: string | number =\n this.points[0].point.y + this.points[1].point.y;\n propertyTotal = isBPS\n ? propertyTotal.toFixed(3) + ' BPS'\n : _this.reusableFunctions.formatMoney(propertyTotal, 0, true);\n let alternatePropertyTotal =\n this.points[0].point.properties.alternateY +\n this.points[1].point.properties.alternateY;\n alternatePropertyTotal = isBPS\n ? _this.reusableFunctions.formatMoney(alternatePropertyTotal, 0, true)\n : alternatePropertyTotal.toFixed(3) + ' BPS';\n tooltip =\n '' +\n this.points.reduce(function (s, point, index) {\n let toolText = '';\n let value = isBPS\n ? `${point.y.toFixed(3) + ' BPS'}`\n : _this.reusableFunctions.formatMoney(point.y, 0, true);\n let seriesName = point.series.name;\n let color = `color: ${point.color}`;\n let isPreviousPeriod =\n seriesName.replace('Prior', 'Previous').toLowerCase() ===\n lineSeriesTitle.toLowerCase();\n const alternateYValue = isBPS\n ? _this.reusableFunctions.formatMoney(\n point.point.properties.alternateY,\n 0,\n true\n )\n : point.point.properties.alternateY.toFixed(3) + ' BPS';\n const abbrevMonthDate = isPreviousPeriod\n ? _this.reusableFunctions.getShortDateFormat(\n _this.formatPeriodData(\n point.point.index,\n comparePeriodDates\n )\n )\n : null;\n if (index === 0) {\n s += `
\n
\n
${_this.formatPeriodData(\n point.point.index,\n currentPeriodDates\n )}
\n
`;\n tooltipTotalName = point.point.properties.tootipTotalName;\n }\n if (!isPreviousPeriod) {\n toolText =\n s +\n `
\n \n \n `;\n }\n if (isPreviousPeriod) {\n toolText = s;\n previousPeriodLine = `\n \n \n `;\n }\n if (index === length - 1) {\n toolText =\n s +\n `\n \n \n ` +\n previousPeriodLine;\n }\n return toolText;\n }, '') +\n '
\n
\n
\n
${seriesName}:
\n
\n
\n ${value}\n | \n ${alternateYValue}\n
\n
\n
Compared to ${abbrevMonthDate}:
\n
\n ${value}\n | \n ${alternateYValue}\n
\n
Total ${tooltipTotalName}:
\n
\n ${propertyTotal} \n | \n ${alternatePropertyTotal}\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\n public createECloseAdoptionTrendsStackedChart(\n xAxisText: string,\n yAxisText: string,\n initialSeriesData: any,\n currentPeriodDates: string[],\n route: string,\n urlSegment: string,\n title: string\n ): Highcharts.Options {\n const _this = this;\n let clickablePoints = this.userAccessService.hasAccessToPage(route + '/' + urlSegment);\n const categoryGroup: string[] = [];\n currentPeriodDates.forEach((date) =>\n categoryGroup.push(_this.formatPeriodDataFromAbbrvMonth(date))\n );\n\n return {\n chart: {\n spacingBottom: 0,\n spacingLeft: 0,\n marginRight: 0,\n spacingRight: 0,\n spacingTop: 5,\n height: 570,\n events: {\n load: function () {\n if (clickablePoints) {\n var xAxis = this.xAxis[0];\n var xTicks = xAxis.ticks;\n var yAxis = this.yAxis[0];\n var points = this.series[0].points;\n points.forEach((pointInf, i) => {\n if (xTicks[i]) {\n var label = xTicks[i].label.element;\n label.style.cursor = 'pointer';\n label.onclick = function (item) {\n let queryParams = {\n selectedPeriod: pointInf.properties.period,\n titleSuffix:\n title +\n ': ' +\n pointInf.properties.datePeriodDescription,\n };\n\n _this.navigationHelpService.navigateTo(\n ['/reporting/production/loans-funded-by'],\n queryParams,\n true\n );\n };\n }\n });\n }\n },\n },\n },\n title: {\n text: '',\n y: 40,\n x: 10,\n },\n credits: {\n enabled: false,\n },\n series: initialSeriesData,\n exporting: {\n enabled: false,\n buttons: {\n contextButton: {\n //menuItems: Highcharts.defaultOptions.exporting.buttons.contextButton.menuItems.slice(0, 10)\n },\n },\n },\n xAxis: [\n {\n type: 'category',\n categories: categoryGroup,\n tickInterval: 1,\n startOnTick: false,\n pointIntervalUnit: xAxisText,\n labels: {\n enabled: true,\n style: {\n fontSize: '10px',\n color: '#666666',\n align: 'top',\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: true,\n align: 'left',\n verticalAlign: 'top',\n itemStyle: {\n fontSize: '14px',\n fontWeight: 'normal',\n },\n margin: 30,\n y: -10,\n symbolHeight: 12,\n },\n plotOptions: {\n column: {\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: true,\n states: {\n hover: {\n radius: 4,\n enabled: true,\n radiusPlus: 0,\n lineWidthPlus: 0,\n lineWidth: 0,\n },\n },\n },\n events: {\n click: function (e) {},\n },\n point: {\n events: {\n click: function (e) {\n const date = this.properties.datePeriodDescription.includes('/')\n ? this.properties.datePeriodDescription\n : _this.formatPeriodDataFromAbbrvMonth(\n this.properties.datePeriodDescription\n );\n if (clickablePoints) {\n let queryParams = {\n selectedPeriod: this.properties.period,\n titleSuffix: `${title}: ${this.series.name} ${date}`,\n eCloseOptionKey: this.properties.eCloseOptionKey,\n };\n\n _this.navigationHelpService.navigateTo(\n ['reporting/production/loans-funded-by'],\n queryParams,\n true\n );\n }\n },\n },\n },\n cursor: 'pointer',\n } as Highcharts.PlotSeriesOptions,\n },\n tooltip: {\n style: {\n fontFamily: 'Roboto',\n fontSize: '12',\n height: 12,\n },\n borderColor: 'white',\n backgroundColor: 'white',\n borderRadius: 7,\n borderWidth: 1,\n shared: true,\n useHTML: true,\n outside: false,\n formatter: function () {\n let tooltip = '';\n let length = this.points.length;\n let previousPeriodLine = '';\n let tooltipTotalName = '';\n let propertyTotal = `${this.points.reduce((a, { y }) => a + y, 0)} units`;\n const unitsWidth = propertyTotal.length > 9 ? '65px' : '50px';\n const volumeWidth = propertyTotal.length > 9 ? '85px' : '75px';\n\n let alternatePropertyTotal = this.points.reduce(\n (a, b) => a + b.point.properties.alternateY,\n 0\n );\n alternatePropertyTotal = _this.reusableFunctions.formatMoney(\n alternatePropertyTotal,\n 0,\n true\n );\n\n tooltip =\n '' +\n this.points.reduce(function (s, point, index) {\n let toolText = '';\n let value = point.y === 0 ? '-' : `${point.y} units`;\n let seriesName = point.series.name;\n let color = `color: ${point.color}`;\n const alternateYValue =\n point.point.properties.alternateY === 0\n ? '-'\n : _this.reusableFunctions.formatMoney(\n point.point.properties.alternateY,\n 0,\n true\n );\n\n const tooltipTitle =\n point.point.properties.datePeriodDescription.includes('/')\n ? point.point.properties.datePeriodDescription\n : _this.reusableFunctions.getFullDateFormat(\n point.point.properties.datePeriodDescription\n );\n // Tooltip title\n if (index === 0) {\n s += `\n \n \n `;\n }\n\n // Totals\n if (index === length - 1) {\n toolText =\n s +\n `\n \n \n ` +\n previousPeriodLine;\n }\n return toolText;\n }, '') +\n '
\n
\n
\n
${seriesName}:
\n
\n
\n ${value}\n | \n ${alternateYValue}\n
\n
${tooltipTotalName}:
\n
\n ${propertyTotal} \n | \n ${alternatePropertyTotal}\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\n // Expected Period Format = ['YYYY-MM']\n formatPeriodData(index: number, periodData: string[]) {\n if (!periodData.length) return '';\n const months = [\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 const dateArr = periodData[index].split('-');\n const month = months[Number(dateArr[1]) - 1];\n const year = dateArr[0];\n return `${month} ${year}`;\n }\n\n // Expected Period Input = ['YYYY-MM-DD'], Output = ['MM/DD/YYYY']\n formatDayPeriods(date: string) {\n const dateArr = date.split('-');\n return `${dateArr[1]}/${dateArr[2]}/${dateArr[0]}`;\n }\n\n formatPeriodDataFromAbbrvMonth(date) {\n if (date.includes('/')) return date;\n const dateArr = date.split('-');\n return `${dateArr[0]} '${dateArr[1].slice(-2)}`;\n }\n\n chartTitleString(\n title: string,\n comparisonValue: number,\n ComparisonPercent: number,\n isComparable: boolean,\n estimatedValue: number,\n mainValue: number,\n isEstimateVisisble: string = 'none'\n ): string {\n let plot_title: string = `\n
\n
\n \n
\n
\n  PlotComparisonValue\n
\n
\n
\n
\n \n
\n `;\n let comparison = this.reusableFunctions.getCaret(\n comparisonValue,\n false,\n ComparisonPercent,\n isComparable\n );\n\n if (estimatedValue === null) {\n isEstimateVisisble = 'none';\n }\n\n let replaceString: string = plot_title\n .replace('ChartTile', title)\n .replace('PlotComparisonValue', comparison.comparison)\n .replace('PlotEstimatedValue', this.reusableFunctions.formatMoney(estimatedValue))\n .replace('PlotMainValue', this.reusableFunctions.formatMoney(mainValue))\n .replace('caret_icon', comparison.caret_icon)\n .replace('label_color', comparison.color)\n .replace('isEstimateVisisble', isEstimateVisisble);\n return replaceString;\n }\n\n getPurpose(\n urlSegment: string,\n name: string,\n purpose: string,\n lineSeriesTitle: string\n ): any {\n if (urlSegment.includes('purpose')) {\n if (name.toLowerCase() === lineSeriesTitle.toLowerCase()) {\n return purpose;\n }\n return name;\n } else {\n return purpose;\n }\n }\n\n getLoanType(\n urlSegment: string,\n name: string,\n loanType: string,\n lineSeriesTitle: string\n ): any {\n if (urlSegment.includes('loan-type') || urlSegment.includes('sold-to-investor')) {\n if (name.toLowerCase() === lineSeriesTitle.toLowerCase()) {\n return loanType;\n }\n return name;\n } else {\n return loanType;\n }\n }\n\n setLineChartSeriesOptions(\n data,\n type: string,\n color: string,\n markerSymbol: string,\n clickablePoints: boolean = false,\n compareTo: string,\n route: string,\n urlSegment,\n name: string,\n purpose: string,\n loanType: string\n ) {\n const _this = this;\n return {\n data: data,\n type: type,\n color: color,\n marker: {\n symbol: markerSymbol,\n },\n name: name,\n legendIndex: 20,\n point: {\n events: {\n click: function () {\n if (clickablePoints) {\n let queryParams = _this.getQueryParams(\n urlSegment,\n this.series.name,\n this.properties.period,\n compareTo,\n 'C',\n purpose,\n loanType,\n this.series.name\n );\n\n _this.router.navigate([route, urlSegment], {\n queryParams: queryParams,\n });\n }\n },\n },\n },\n } as Highcharts.SeriesOptionsType;\n }\n\n public getQueryParams(\n urlSegment: string,\n seriesName,\n period: string,\n compareTo: string,\n periodGroup: string,\n purpose,\n loanType,\n lineSeriesTitle: string\n ) {\n let queryParams: Object;\n if (urlSegment.search('fall-out') > -1) {\n queryParams = {\n selectedPeriod: period,\n periodGroup: periodGroup,\n falloutType:\n seriesName.toLowerCase() === lineSeriesTitle.toLowerCase()\n ? 'All'\n : seriesName,\n compareTo: compareTo,\n titleSuffix: seriesName === 'All' ? '' : ': ' + seriesName,\n };\n } else {\n queryParams = {\n purpose: this.getPurpose(urlSegment, seriesName, purpose, lineSeriesTitle),\n loanType: this.getLoanType(urlSegment, seriesName, loanType, lineSeriesTitle),\n compareTo: compareTo,\n selectedPeriod: period,\n periodGroup: periodGroup,\n titleSuffix: seriesName === 'All' ? '' : ': ' + seriesName,\n };\n }\n return queryParams;\n }\n }\n}\n"],"x_google_ignoreList":[]}