UNPKG

systelab-charts

Version:
1 lines 145 kB
{"version":3,"file":"systelab-charts.mjs","sources":["../../../projects/systelab-charts/src/lib/utils/array-to-object.util.ts","../../../projects/systelab-charts/src/lib/utils/ticks.ts","../../../projects/systelab-charts/src/lib/chart-legacy/services/decimal-format.service.ts","../../../projects/systelab-charts/src/lib/chart-legacy/services/tooltip-legacy.service.ts","../../../projects/systelab-charts/src/lib/chart-legacy/chart-legacy.component.ts","../../../projects/systelab-charts/src/lib/chart-legacy/chart-legacy.component.html","../../../projects/systelab-charts/src/lib/chart/interfaces/annotation.ts","../../../projects/systelab-charts/src/lib/chart/interfaces/chart-configuration.ts","../../../projects/systelab-charts/src/lib/chart/interfaces/legend.ts","../../../projects/systelab-charts/src/lib/chart/chart-default-configuration.ts","../../../projects/systelab-charts/src/lib/chart/services/axes.service.ts","../../../projects/systelab-charts/src/lib/chart/services/dataset.service.ts","../../../projects/systelab-charts/src/lib/chart/services/annotation.service.ts","../../../projects/systelab-charts/src/lib/chart/services/legend.service.ts","../../../projects/systelab-charts/src/lib/chart/services/tooltip.service.ts","../../../projects/systelab-charts/src/lib/chart/services/click.service.ts","../../../projects/systelab-charts/src/lib/chart/services/chart.service.ts","../../../projects/systelab-charts/src/lib/chart/chart.component.ts","../../../projects/systelab-charts/src/lib/chart/chart.component.html","../../../projects/systelab-charts/src/lib/systelab-charts.module.ts","../../../projects/systelab-charts/src/systelab-charts.ts"],"sourcesContent":["type KeySelector<T> = (item: T) => string;\n\nexport const arrayToObject = <T, K>(array: Iterable<T>, keySelector: KeySelector<T>): Record<string, T> => {\n    const result: Record<string, T> = { };\n    for(const item of array) {\n        result[keySelector(item)] = item;\n    }\n    return result;\n};\n","export class Ticks {\n    public static removeInitialAndFinalTick(value, index, values): string {\n        return index === 0 || index === values.length - 1 ? '' : value;\n    }\n\n    public static removeFinalTick(value, index): string {\n        return index === 0 ? '' : value;\n    }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n\tprovidedIn: 'root',\n})\nexport class DecimalFormatService {\n\n\t/**\n\t * @fieldOf decimalFormat\n\t * @type String\n\t */\n\tprefix = '';\n\t/**\n\t * @fieldOf decimalFormat\n\t * @type String\n\t */\n\tsuffix = '';\n\t/**\n\t * @description Grouping size\n\t * @fieldOf decimalFormat\n\t * @type String\n\t */\n\tcomma = 0;\n\t/**\n\t * @description Minimum integer digits to be displayed\n\t * @fieldOf decimalFormat\n\t * @type Number\n\t */\n\tminInt = 1;\n\t/**\n\t * @description Minimum fractional digits to be displayed\n\t * @fieldOf decimalFormat\n\t * @type String\n\t */\n\tminFrac = 0;\n\t/**\n\t * @description Maximum fractional digits to be displayed\n\t * @fieldOf decimalFormat\n\t * @type String\n\t */\n\tmaxFrac = 0;\n\n\t/**\n\t * @description Formats given value\n\t * @methodOf decimalFormat\n\t * @param numStr\n\t * @param formatStr\n\t * @return Formatted number\n\t * @author Oskan Savli\n\t */\n\tpublic execute(numStr, formatStr: string) {\n\t\tthis.configureService(formatStr);\n\t\t// 1223.06 --> $1,223.06\n\t\t// remove prefix, suffix and commas\n\t\tlet numberStr = this.formatBack(numStr)\n\t\t\t.toLowerCase();\n\n\t\t// do not format if not a number\n\t\tif (isNaN(numberStr) || numberStr.length === 0) {\n\t\t\treturn numStr;\n\t\t}\n\n\t\tconst indexE = numberStr.indexOf('e');\n\t\t//scientific numbers\n\t\tif (indexE !== -1) {\n\t\t\tif (numberStr.indexOf('e') !== -1) {\n\t\t\t\treturn numberStr;\n\t\t\t}\n\t\t}\n\n\t\tlet negative = false;\n\t\t// remove sign\n\t\tif (numberStr.charAt(0) === '-') {\n\t\t\tnegative = true;\n\t\t\tnumberStr = numberStr.substring(1);\n\t\t} else if (numberStr.charAt(0) === '+') {\n\t\t\tnumberStr = numberStr.substring(1);\n\t\t}\n\n\t\tconst point = numberStr.indexOf('.'); // position of point character\n\t\tlet intStr: string;\n\t\tlet fracStr = '';\n\t\tif (point !== -1) {\n\t\t\tintStr = numberStr.substring(0, point);\n\t\t\tfracStr = numberStr.substring(point + 1);\n\t\t} else {\n\t\t\tintStr = numberStr;\n\t\t}\n\t\tfracStr = fracStr.replace(/[.]/, ''); // remove other point characters\n\n\t\tconst isPercentage = this.suffix && this.suffix.charAt(0) === '%';\n\t\t// if percentage, number will be multiplied by 100.\n\t\tconst minInt = this.minInt; const minFrac = this.minFrac; const maxFrac = this.maxFrac;\n\t\tif (isPercentage) {\n\t\t\t// copy two digits from frac to int\n\t\t\t// with padding cases: '1.' -> 100., '1.1' -> 110., '1.0111' -> 101.11\n\t\t\tintStr = intStr + ('00' + (fracStr + '00').substr(0, 2)).substr(-2);\n\t\t\tfracStr = fracStr.substr(2);\n\t\t}\n\n\t\tif (fracStr.length > maxFrac) { // round\n\t\t\t//case 6143\n\t\t\tlet num = Number('0.' + fracStr);\n\t\t\tnum = (maxFrac === 0) ? Math.round(num) : Number(num.toFixed(maxFrac));\n\t\t\t// toFixed method has bugs on IE (0.7 --> 0)\n\t\t\tfracStr = num.toString(10)\n\t\t\t\t.substr(2);\n\t\t\tlet c = (num >= 1) ? 1 : 0; //carry\n\t\t\tlet x;\n\t\t\tlet strLength = intStr.length - 1;\n\t\t\twhile (c) { //increment intStr\n\t\t\t\tif (strLength === -1) {\n\t\t\t\t\tintStr = '1' + intStr;\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\tx = intStr.charAt(strLength);\n\t\t\t\t\tif (x === 9) {\n\t\t\t\t\t\tx = '0';\n\t\t\t\t\t\tc = 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tx = (++x) + '';\n\t\t\t\t\t\tc = 0;\n\t\t\t\t\t}\n\t\t\t\t\tintStr = intStr.substring(0, strLength) + x + intStr.substring(strLength + 1, intStr.length);\n\t\t\t\t\tstrLength--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (let i = fracStr.length; i < minFrac; i++) { // if minFrac=4 then 1.12 --> 1.1200\n\t\t\tfracStr = fracStr + '0';\n\t\t}\n\t\twhile (fracStr.length > minFrac && fracStr.charAt(fracStr.length - 1) === '0') { // if minInt=4 then 00034 --> 0034)\n\t\t\tfracStr = fracStr.substring(0, fracStr.length - 1);\n\t\t}\n\n\t\tfor (let i = intStr.length; i < minInt; i++) { // if minInt=4 then 034 --> 0034\n\t\t\tintStr = '0' + intStr;\n\t\t}\n\t\twhile (intStr.length > minInt && intStr.charAt(0) === '0') { // if minInt=4 then 00034 --> 0034)\n\t\t\tintStr = intStr.substring(1);\n\t\t}\n\n\t\tlet j = 0;\n\t\tfor (let i = intStr.length; i > 0; i--) { // add commas\n\t\t\tif (j !== 0 && j % this.comma === 0) {\n\t\t\t\tintStr = intStr.substring(0, i) + ',' + intStr.substring(i);\n\t\t\t\tj = 0;\n\t\t\t}\n\t\t\tj++;\n\t\t}\n\n\t\tlet formattedValue;\n\t\tif (fracStr.length > 0) {\n\t\t\tformattedValue = this.prefix + intStr + '.' + fracStr + this.suffix;\n\t\t} else {\n\t\t\tformattedValue = this.prefix + intStr + this.suffix;\n\t\t}\n\n\t\tif (negative) {\n\t\t\tformattedValue = '-' + formattedValue;\n\t\t}\n\n\t\treturn formattedValue;\n\t}\n\n\tprivate configureService(formatStr: string) {\n\t\t// get prefix\n\t\tfor (let i = 0; i < formatStr.length; i++) {\n\t\t\tif (formatStr.charAt(i) === '#' || formatStr.charAt(i) === '0') {\n\t\t\t\tthis.prefix = formatStr.substring(0, i);\n\t\t\t\tformatStr = formatStr.substring(i);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// get suffix\n\t\tthis.suffix = formatStr.replace(/[#]|[0]|[,]|[.]/g, '');\n\n\t\t// get number as string\n\t\tconst numberStr = formatStr.replace(/[^0#,.]/g, '');\n\n\t\tlet intStr: string;\n\t\tlet fracStr = '';\n\t\tconst point = numberStr.indexOf('.');\n\t\tif (point !== -1) {\n\t\t\tintStr = numberStr.substring(0, point);\n\t\t\tfracStr = numberStr.substring(point + 1);\n\t\t} else {\n\t\t\tintStr = numberStr;\n\t\t}\n\n\t\tconst commaPos = intStr.lastIndexOf(',');\n\t\tif (commaPos !== -1) {\n\t\t\tthis.comma = intStr.length - 1 - commaPos;\n\t\t}\n\n\t\tintStr = intStr.replace(/[,]/g, ''); // remove commas\n\n\t\tfracStr = fracStr.replace(/[,]|[.]+/g, '');\n\n\t\tthis.maxFrac = fracStr.length;\n\t\tlet tmp = intStr.replace(/[^0]/g, ''); // remove all except zero\n\t\tif (tmp.length > this.minInt) {\n\t\t\tthis.minInt = tmp.length;\n\t\t}\n\t\ttmp = fracStr.replace(/[^0]/g, '');\n\t\tthis.minFrac = tmp.length;\n\t}\n\n\t/**\n\t * @description Converts formatted value back to non-formatted value\n\t * @methodOf decimalFormat\n\t * @param fNumStr Formatted number\n\t * @return Original number\n\t * @author Oskan Savli\n\t */\n\tprivate formatBack(fNumStr: string) { // $1,223.06 --> 1223.06\n\t\tfNumStr += ''; //ensure it is string\n\t\tif (!fNumStr) {\n\t\t\treturn '';\n\t\t} //do not return undefined or null\n\t\tif (!isNaN(Number(fNumStr))) {\n\t\t\treturn this.getNumericString(fNumStr);\n\t\t}\n\t\tlet fNumberStr = fNumStr;\n\t\tlet negative = false;\n\t\tif (fNumStr.charAt(0) === '-') {\n\t\t\tfNumberStr = fNumberStr.substr(1);\n\t\t\tnegative = true;\n\t\t}\n\t\tconst pIndex = fNumberStr.indexOf(this.prefix);\n\t\tconst sIndex = (this.suffix === '') ? fNumberStr.length : fNumberStr.indexOf(this.suffix, this.prefix.length + 1);\n\t\tif (pIndex === 0 && sIndex > 0) {\n\t\t\t// remove suffix\n\t\t\tfNumberStr = fNumberStr.substr(0, sIndex);\n\t\t\t// remove prefix\n\t\t\tfNumberStr = fNumberStr.substr(this.prefix.length);\n\t\t\t// remove commas\n\t\t\tfNumberStr = fNumberStr.replace(/,/g, '');\n\t\t\tif (negative) {\n\t\t\t\tfNumberStr = '-' + fNumberStr;\n\t\t\t}\n\t\t\tif (!isNaN(Number(fNumberStr))) {\n\t\t\t\treturn this.getNumericString(fNumberStr);\n\t\t\t}\n\t\t}\n\t\treturn fNumStr;\n\t}\n\n\t/**\n\t * @description We shouldn't return strings like 1.000 in formatBack method.\n\t * However, using only Number(str) is not enough, because it omits . in big numbers\n\t * like 23423423423342234.34 => 23423423423342236 . There's a conflict in cases\n\t * 6143 and 6541.\n\t * @methodOf decimalFormat\n\t * @param str Numberic string\n\t * @return Corrected numeric string\n\t * @author Serdar Bicer\n\t */\n\tprivate getNumericString(str) {\n\t\t//first convert to number\n\t\tconst num = Number(str);\n\t\t//check if there is a missing dot\n\t\tconst numStr = num + '';\n\t\tif (str.indexOf('.') > -1 && numStr.indexOf('.') < 0) {\n\t\t\t//check if original string has all zeros after dot or not\n\t\t\tfor (let i = str.indexOf('.') + 1; i < str.length; i++) {\n\t\t\t\t//if not, this means we lost precision\n\t\t\t\tif (str.charAt(i) !== '0') {\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn numStr;\n\t\t}\n\t\treturn str;\n\t}\n}\n","import { DecimalFormatService } from './decimal-format.service';\nimport { format } from 'date-fns';\nimport { Injectable } from '@angular/core';\n\nexport class ChartTooltipItem {\n    constructor(public title?: string, public label?: string, public afterLabel?: string, public valueInAfterLabel?: boolean,\n                public numberFormat?: string) {\n    }\n}\n\nexport class ChartTooltipSettings {\n    constructor(public backgroundColor?: string, public borderColor?: string, public borderWidth?: number, public bodyFontColor?: string,\n                public bodyFontSize?: number, public titleFontSize?: number, public titleFontColor?: string) {\n        this.bodyFontColor = '#ffffff';\n        this.borderColor = 'rgba(0,0,0,0)';\n        this.borderWidth = 0;\n        this.bodyFontSize = 12;\n        this.titleFontSize = 12;\n        this.titleFontColor = '#ffffff';\n        this.backgroundColor = 'rgba(0,0,0,0.8)';\n    }\n}\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class TooltipLegacyService {\n    constructor(private readonly decimalFormatService: DecimalFormatService) {\n    }\n\n    public title(tooltipItems) {\n        const item = tooltipItems[0].dataset;\n\n        if (item.chartTooltipItem) {\n            const chartTooltipItem = item.chartTooltipItem instanceof Array ?\n                item.chartTooltipItem[tooltipItems[0].dataIndex] : item.chartTooltipItem;\n            if (chartTooltipItem.title) {\n                return chartTooltipItem.title;\n            }\n        }\n    }\n\n    public tooltipLabel(tooltipItem, tooltipTimeFormatConstant) {\n        const item = tooltipItem.dataset;\n        let label = item.label;\n        // if (!label) {\n        //     label = data.labels[tooltipItem.index];\n        // }\n        const val = item.data[tooltipItem.dataIndex];\n        let rt;\n        let rtVal: number;\n        if (val instanceof Object) {\n            if (val.t) {\n                if(val.t instanceof Date){\n                    const dataValue = '(' + (val.x ? val.x + ',' : '') + val.y + ')';\n                    rt = format(val.t , tooltipTimeFormatConstant) + dataValue;\n                } else {\n                    rt = val.t;\n                }\n\n            } else {\n                rt = '(' + val.x + ',' + val.y + ')';\n            }\n        } else {\n            rt = val;\n            rtVal = val;\n        }\n        if (item.chartTooltipItem) {\n            const chartTooltipItem = item.chartTooltipItem instanceof Array ?\n                item.chartTooltipItem[tooltipItem.dataIndex] : item.chartTooltipItem;\n\n            if (!isNaN(rtVal) && chartTooltipItem.numberFormat) {\n                rt = this.decimalFormatService.execute(val, chartTooltipItem.numberFormat);\n            }\n\n            if (chartTooltipItem.label) {\n                label = chartTooltipItem.label;\n            }\n            if (!chartTooltipItem.valueInAfterLabel) {\n                label += ': ' + rt;\n            }\n        } else {\n            label += ': ' + rt;\n        }\n        return label;\n    }\n\n    public tooltipAfterLabel(tooltipItem) {\n        const item = tooltipItem.dataset;\n        let afterLabel = '';\n\n        if (item.chartTooltipItem) {\n            const chartTooltipItem = item.chartTooltipItem instanceof Array ?\n                item.chartTooltipItem[tooltipItem.dataIndex] : item.chartTooltipItem;\n            if (chartTooltipItem.afterLabel) {\n                afterLabel = chartTooltipItem.afterLabel;\n            }\n            if (chartTooltipItem.valueInAfterLabel) {\n                const val = item.data[tooltipItem.dataIndex];\n                let rt;\n                if (val instanceof Object) {\n                    if (val.t) {\n                        rt = val.t;\n                    } else {\n                        rt = '(' + val.x + ',' + val.y + ')';\n                    }\n                } else {\n                    if (!isNaN(val) && chartTooltipItem.numberFormat) {\n                        rt = this.decimalFormatService.execute(val, chartTooltipItem.numberFormat);\n                    } else {\n                        rt = val;\n                    }\n                }\n                afterLabel += ' (' + rt + ')';\n            }\n        }\n        return afterLabel;\n    }\n}\n","import {\n\tAfterViewInit,\n\tApplicationRef,\n\tComponent,\n\tElementRef,\n\tEventEmitter,\n\tInput,\n\tOutput,\n\tViewChild\n} from '@angular/core';\nimport { Chart, InteractionMode, registerables } from 'chart.js';\nimport 'chartjs-adapter-date-fns';\nimport annotationPlugin from 'chartjs-plugin-annotation';\nimport ChartDataLabels from 'chartjs-plugin-datalabels';\nimport 'chartjs-plugin-annotation';\nimport { arrayToObject } from '../utils/array-to-object.util';\nimport { Ticks } from '../utils/ticks';\nimport { ChartTooltipItem, ChartTooltipSettings, TooltipLegacyService } from './services/tooltip-legacy.service';\n\nChart.register(...registerables, ChartDataLabels, annotationPlugin);\n\ninterface MultipleAxis {\n\tid:         string;\n\ttype:       string;\n\tposition:   string;\n\tstacked:    boolean;\n\tmax: number;\n\tmin: number;\n\tticks: {\n\t\tmin: number;\n\t\tmax: number;\n\t\tstepSize?: number;\n\t\tdisplay?: boolean;\n\t\tcallbackFunction? (any): any;\n\t};\n\tborder: {\n\t\tdrawBorder: boolean;\n\t};\n\tgrid: {\n\t\tdisplay: boolean;\n\t};\n\ttitle: {\n\t\ttext: string;\n\t};\n}\n\n\nexport class ChartItem {\n\n\tconstructor(public label: string, public data: Array<any>, public borderColor?: string,\n\t\t\t\tpublic backgroundColor?: string, public fill?: boolean, public showLine?: boolean,\n\t\t\t\tpublic isGradient?: boolean, public borderWidth?: number,\n\t\t\t\tpublic chartType?: string, public chartTooltipItem?: ChartTooltipItem | Array<ChartTooltipItem>,\n\t\t\t\tpublic pointRadius?: number, public yAxisID?: string, public legendType?: string,\n\t\t\t\tpublic labelBorderColors?: Array<number[]>, public labelBackgroundColors?: Array<number[]>) {\n\t}\n}\n\nexport class Annotation {\n\tconstructor(public drawTime: string, public type: string, public borderColor?: string, public borderWidth?: number,\n\t\t\t\tpublic scaleId = 'y') {\n\t}\n}\n\nexport class ChartLineAnnotation extends Annotation {\n\tconstructor(public label: ChartLabelAnnotation, public value: number, public orientation: string, drawTime: string,\n\t\t\t\ttype: string, public borderDash?: Array<number>, borderColor?: string, borderWidth?: number, public endValue?: number) {\n\t\tsuper(drawTime, type, borderColor, borderWidth);\n\t}\n}\n\nexport class ChartLine {\n\tconstructor(public xMinValue: number, public yMinValue: number, public xMaxValue: number, public yMaxValue: number,\n\t\tpublic borderColor?: string, public borderWidth?: number) {\n\t}\n}\n\nexport class ChartBoxAnnotation extends Annotation {\n\tconstructor(drawTime: string, public xMin: number, public xMax: number, public yMin: number, public yMax: number,\n\t\t\t\ttype: string, public backgroundColor?: string, borderColor?: string, borderWidth?: number) {\n\t\tsuper(drawTime, type, borderColor, borderWidth);\n\t}\n}\n\nexport class ChartLabelAnnotation {\n\tconstructor(public text?: string, public position?: string, public backgroundColor?: string, public fontStyle?: string,\n\t\t\t\tpublic fontColor?: string) {\n\t}\n}\n\nexport class ChartLabelSettings {\n\tconstructor(public position?: ChartLabelPosition, public labelColors?: ChartLabelColor, public chartLabelFont?: ChartLabelFont,\n\t\t\t\tpublic chartLabelPadding?: ChartLabelPadding, public chartLabelText?: ChartLabelText,\n\t\t\t\tpublic formatter?: (value: any, context: any) => string) {\n\t\tthis.position = new ChartLabelPosition();\n\t\tthis.labelColors = new ChartLabelColor();\n\t\tthis.chartLabelFont = new ChartLabelFont();\n\t\tthis.chartLabelPadding = new ChartLabelPadding();\n\t\tthis.chartLabelText = new ChartLabelText();\n\t}\n\n}\n\nexport class ChartLabelPosition {\n\tconstructor(public align?: string | number, public anchor?: string, public clamp?: boolean, public clip?: boolean,\n\t\t\t\tpublic display?: ((context: any) => (boolean | string)) | boolean | string, public offset?: number,\n\t\t\t\tpublic rotation?: number) {\n\t}\n}\n\nexport class ChartLabelColor {\n\tconstructor(public backgroundColor?: string, public color?: string, public borderColor?: string, public borderRadius?: number,\n\t\t\t\tpublic borderWidth?: number, public opacity?: number) {\n\n\t}\n}\n\nexport class ChartLabelFont {\n\tconstructor(public font?: object, public family?: string, public size?: number, public style?: string, public weight?: string | number,\n\t\t\t\tpublic lineHeight?: string | number) {\n\n\t}\n}\n\nexport class ChartLabelPadding {\n\tconstructor(public padding?: number | object, public top?: number, public right?: number, public bottom?: number,\n\t\t\t\tpublic left?: number) {\n\n\t}\n}\n\nexport class ChartLabelText {\n\tconstructor(public textAlign?: string, public textStrokeColor?: string, public textShadowBlur?: number,\n\t\t\t\tpublic textStrokeWidth?: number, public textShadowColor?: string) {\n\n\t}\n}\n\nexport class ChartMultipleYAxisScales {\n\tconstructor(public id?: string, public type?: string, public position?: string,\n\t\t\t\tpublic stacked = false,\n\t\t\t\tpublic ticks?: { min: number; max: number; stepSize?: number; display?: boolean },\n\t\t\t\tpublic gridLines?: { display: boolean; drawBorder: boolean },\n\t\t\t\tpublic scaleLabel?: { display: boolean; labelString: string }) {\n\t}\n\n\tpublic getScaleDefinition(callbackFunction?: (value, index, values) => string): MultipleAxis {\n\t\tconst {display, drawBorder} = this.gridLines;\n\t\treturn {\n\t\t\tid:         this.id,\n\t\t\ttype:       this.type,\n\t\t\tposition:   this.position,\n\t\t\tstacked:    this.stacked,\n\t\t\tmax: this.ticks.max,\n\t\t\tmin: this.ticks.min,\n\t\t\tticks: {\n\t\t\t\t...this.ticks,\n\t\t\t\t...callbackFunction ? {\n\t\t\t\t\tcallback: callbackFunction\n\t\t\t\t} : {}\n\t\t\t},\n\t\t\tborder: {\n\t\t\t\tdrawBorder,\n\t\t\t},\n\t\t\tgrid: {\n\t\t\t\tdisplay,\n\t\t\t},\n\t\t\ttitle: {\n\t\t\t\ttext: this.scaleLabel.labelString,\n\t\t\t}\n\t\t};\n\t}\n}\n\nexport class ChartIntersectionSettings {\n\tpublic intersect: boolean;\n\tpublic mode: string;\n\n\tconstructor(intersect = false, mode: InteractionMode = 'index') {\n\t\tthis.intersect = intersect;\n\t\tthis.mode = mode;\n\t}\n}\n\n@Component({\n    selector: 'systelab-chart-legacy',\n    templateUrl: './chart-legacy.component.html',\n    standalone: false\n})\nexport class ChartLegacyComponent implements AfterViewInit {\n\n\t@ViewChild('canvas', {static: true}) canvas: ElementRef;\n\t@ViewChild('topLegend', {static: false}) topLegend: ElementRef;\n\t@ViewChild('bottomLegend', {static: false}) bottomLegend: ElementRef;\n\n\t@Input() labels: Array<any> = [];\n\t@Input() data: Array<ChartItem> = [];\n\t@Input() annotations: Array<Annotation | ChartLineAnnotation | ChartBoxAnnotation> = [];\n\t@Input() showLegend = true;\n\t@Input() legendPosition = 'top';\n\t@Input() intersectionSettings: ChartIntersectionSettings = new ChartIntersectionSettings();\n\t@Input() isHorizontal = false;\n\t@Input() yMinValue: any;\n\t@Input() yMaxValue: any;\n\t@Input() xMinValue: any;\n\t@Input() xMaxValue: any;\n\t@Input() xAutoSkip = true;\n\t@Input() yLabelAxis: string;\n\t@Input() xLabelAxis: string;\n\t@Input() lineTension: number;\n\t@Input() isBackgroundGrid = true;\n\t@Input() type: string;\n\t@Input() responsive = true;\n\t@Input() maintainAspectRatio = true;\n\t@Input() tooltipSettings: ChartTooltipSettings;\n\t@Input() chartLabelSettings: ChartLabelSettings;\n\t@Input() isStacked = false;\n\t@Input() animationDuration = 1000;\n\t@Input() minValueForRadar: number;\n\t@Input() maxValueForRadar: number;\n\t@Input() multipleYAxisScales: ChartMultipleYAxisScales[];\n\t@Input() timeScale = false;\n\t@Input() timeUnit = 'day';\n\t@Input() tooltipTimeFormat = 'd/M/yyyy';\n\t@Input() customLegend = false;\n\t@Input() legendWithoutBox = false;\n\t@Input() hideInitialAndFinalTick = false;\n\t@Input() hideFinalTick = false;\n\t@Input() chartLine: ChartLine;\n\t@Input() pointStyle: string | 'circle' | 'cross' | 'crossRot' | 'dash' | 'line' | 'rect' | 'rectRounded'\n\t\t| 'rectRot' | 'star' | 'triangle' = 'circle';\n\t@Input() canvasBackground = '';\n\n\t@Output() itemSelectedChange = new EventEmitter();\n\t@Output() action = new EventEmitter();\n\n\tpublic chart: Chart;\n\tpublic chartResized = false;\n\n\tprivate defaultColors: Array<number[]> = [\n\t\t[255, 99, 132],\n\t\t[54, 162, 235],\n\t\t[255, 206, 86],\n\t\t[75, 192, 192],\n\t\t[220, 220, 220],\n\t\t[247, 70, 74],\n\t\t[70, 191, 189],\n\t\t[253, 180, 92],\n\t\t[148, 159, 177],\n\t\t[151, 187, 205],\n\t\t[231, 233, 237],\n\t\t[77, 83, 96]];\n\tprivate _itemSelected: any;\n\tprivate dataset: Array<any> = [];\n\n\tprivate _annotations: Array<any> = [];\n\tprivate axesVisible = true;\n\tprivate yAxisLabelVisible = false;\n\tprivate xAxisLabelVisible = false;\n\n\tconstructor(private readonly appRef: ApplicationRef, private readonly tooltipsService: TooltipLegacyService) {\n\t\tChart.defaults.interaction.intersect = this.intersectionSettings.intersect;\n\t\t// @ts-ignore\n\t\tChart.defaults.interaction.mode = this.intersectionSettings.mode;\n\n\t\tconsole.warn(`❌ The selector <systelab-chart-legacy> is deprecated. Use the new <systelab-chart> \n\t\t\t\t\timplementation instead. <systelab-chart-legacy> will me removed in next versions.`);\n\t}\n\n\t@Input()\n\tget itemSelected(): any {\n\t\treturn this._itemSelected;\n\t}\n\tset itemSelected(value: any) {\n\t\tthis._itemSelected = value;\n\t\tthis.itemSelectedChange.emit(this._itemSelected);\n\t}\n\n\tpublic ngAfterViewInit(): void {\n\t\tlet cx: CanvasRenderingContext2D;\n\n\t\tif (!this.tooltipSettings) {\n\t\t\tthis.tooltipSettings = new ChartTooltipSettings();\n\t\t}\n\n\t\tif (this.canvas.nativeElement) {\n\t\t\tcx = this.canvas.nativeElement.getContext('2d');\n\t\t}\n\n\t\tif (this.customLegend) {\n\t\t\tthis.initCustomLegend();\n\t\t}\n\n\t\tthis.setData(cx);\n\n\t\tthis.setAxisVisibility();\n\n\t\tthis.addAnnotations();\n\t\tthis.drawChart(cx);\n\t\tif (this.customLegend && this.data.filter(obj => obj.legendType != null).length === this.data.length) {\n\t\t\tthis.buildCustomLegend();\n\t\t}\n\t}\n\n\tpublic rgba(colour: Array<number>, alpha: number): string {\n\t\treturn 'rgba(' + colour.concat(alpha)\n\t\t\t.join(',') + ')';\n\t}\n\n\tpublic getResizedBase64Image(height?: number, width?: number): string {\n\t\tlet base64ImageString: string;\n\t\tif (this.chart) {\n\t\t\tif (width || height) {\n\n\t\t\t\tconst canvasOffsetHeight = this.chart.canvas.parentElement.offsetHeight;\n\t\t\t\tconst canvasOffsetWidth = this.chart.canvas.parentElement.offsetWidth;\n\t\t\t\tconst originalAspectRatio = this.maintainAspectRatio;\n\t\t\t\tconst originalResponsive = this.responsive;\n\t\t\t\tthis.responsive = false;\n\t\t\t\tthis.maintainAspectRatio = false;\n\t\t\t\tthis.chart.resize();\n\t\t\t\tif (this.doResizeChart(height, width)) {\n\t\t\t\t\tthis.appRef.tick();\n\n\t\t\t\t\tthis.chart.resize();\n\t\t\t\t\tbase64ImageString = this.chart.toBase64Image();\n\t\t\t\t\tthis.maintainAspectRatio = originalAspectRatio;\n\t\t\t\t\tthis.responsive = originalResponsive;\n\t\t\t\t\tthis.chartResized = false;\n\t\t\t\t\tthis.doResizeChart(canvasOffsetHeight, canvasOffsetWidth);\n\t\t\t\t\tthis.doUpdate();\n\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbase64ImageString = this.chart.toBase64Image();\n\t\t\t}\n\t\t\treturn base64ImageString;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tpublic doResizeChart(height: number, width: number): boolean {\n\t\tconst elementToResize = this.chart.canvas.parentElement;\n\t\tlet doResize = false;\n\t\tif (height) {\n\t\t\tdoResize = true;\n\t\t\telementToResize.style.height = height + 'px';\n\t\t}\n\t\tif (width) {\n\t\t\tdoResize = true;\n\t\t\telementToResize.style.width = width + 'px';\n\t\t}\n\t\tthis.chartResized = doResize;\n\t\treturn doResize;\n\t}\n\n\tpublic doUpdate(): void {\n\t\tlet cx: CanvasRenderingContext2D;\n\t\tif (this.canvas.nativeElement) {\n\t\t\tcx = this.canvas.nativeElement.getContext('2d');\n\t\t}\n\t\tthis.chart.destroy();\n\n\t\tthis.setAxisVisibility();\n\n\t\tthis.dataset = [];\n\t\tthis._annotations = [];\n\t\tthis.setData(cx);\n\t\tthis.addAnnotations();\n\t\tthis.drawChart(cx);\n\t\tif (this.customLegend && this.data.filter(obj => obj.legendType != null).length === this.data.length) {\n\t\t\tthis.buildCustomLegend();\n\t\t}\n\t}\n\n\tpublic drawLine(chartData, chartLine: ChartLine) {\n\t\tconst scales = (chartData.chart as any).scales;\n\n\t\tlet cx: CanvasRenderingContext2D;\n\t\tif (this.canvas.nativeElement) {\n\t\t\tcx = this.canvas.nativeElement.getContext('2d');\n\t\t}\n\n\t\tlet xScale: any;\n\t\tlet yScale: any;\n\t\tObject.keys(scales)\n\t\t\t.forEach(\n\t\t\t\tk => (k[0] === 'x' && (xScale = scales[k])) || (yScale = scales[k])\n\t\t\t);\n\n\t\tconst getXY = (x: number, y: number) => ({\n\t\t\tx: xScale.getPixelForValue(x, undefined, undefined, true),\n\t\t\ty: yScale.getPixelForValue(y)\n\t\t});\n\n\t\tconst initPoint = getXY(chartLine.xMinValue, chartLine.yMinValue);\n\t\tconst endPoint = getXY(chartLine.xMaxValue, chartLine.yMaxValue);\n\n\t\tcx.beginPath();\n\t\tcx.lineWidth = chartLine.borderWidth || 1;\n\t\tcx.moveTo(initPoint.x, initPoint.y);\n\t\tcx.lineTo(endPoint.x, endPoint.y);\n\t\tcx.strokeStyle = chartLine.borderColor || 'black';\n\t\tcx.stroke();\n\t\tcx.closePath();\n\t\tcx.restore();\n\t}\n\n\tprivate initCustomLegend() {\n\t\tthis.showLegend = false;\n\t}\n\n\tprivate buildCustomLegend() {\n\t\tlet legendItems = [];\n\t\tif (this.legendPosition === 'top') {\n\t\t\tthis.topLegend.nativeElement.innerHTML = this.generateLegend();\n\t\t\tlegendItems = this.topLegend.nativeElement.getElementsByTagName('li');\n\t\t} else {\n\t\t\tthis.bottomLegend.nativeElement.innerHTML = this.generateLegend();\n\t\t\tlegendItems = this.bottomLegend.nativeElement.getElementsByTagName('li');\n\t\t}\n\t\tfor (let i = 0; i < legendItems.length; i += 1) {\n\t\t\tlegendItems[i].addEventListener('click', this.legendClickCallback.bind(this), false);\n\t\t}\n\t}\n\n\tprivate generateLegend(): string {\n\t\tlet listHtml = '<ul>';\n\t\tthis.data.forEach(chartItem => {\n\t\t\tlistHtml += `\n\t\t\t\t<li>\n\t\t\t\t  <span class=\"${chartItem.legendType}\" style=\"background-color: ${chartItem.backgroundColor !== 'transparent'? chartItem.backgroundColor : chartItem.borderColor}; border-color: ${chartItem.borderColor}\">\n\t\t\t\t  </span>\n\t\t\t\t  ${chartItem.label}\n\t\t\t\t</li>\n         \t `;\n\t\t});\n\t\tlistHtml += '</ul>';\n\t\treturn listHtml;\n\t}\n\n\tprivate drawChart(cx: CanvasRenderingContext2D) {\n\t\tconst tooltipTimeFormatConstant = this.tooltipTimeFormat;\n\t\t/* Draw the chart */\n\t\tif (this.canvas.nativeElement) {\n\t\t\tconst definition: any = {\n\t\t\t\ttype: this.type,\n\t\t\t\tdata: {\n\t\t\t\t\tlabels:   this.labels,\n\t\t\t\t\tdatasets: this.dataset\n\t\t\t\t},\n\n\t\t\t\toptions: {\n\t\t\t\t\tanimation: {\n\t\t\t\t\t\tduration: this.animationDuration,\n\t\t\t\t\t\tonComplete: (chartData) => {\n\t\t\t\t\t\t\tif (this.chartLine) {\n\t\t\t\t\t\t\t\tthis.drawLine(chartData, this.chartLine);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tresponsive:          this.responsive,\n\t\t\t\t\tmaintainAspectRatio: this.maintainAspectRatio,\n\t\t\t\t\tonClick:             (evt, item) => {\n\t\t\t\t\t\tconst e = item[0];\n\t\t\t\t\t\tif (e) {\n\t\t\t\t\t\t\tthis.itemSelected = e;\n\t\t\t\t\t\t\tthis.action.emit();\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\telements:            {\n\t\t\t\t\t\tline: {\n\t\t\t\t\t\t\ttension: this.lineTension\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpoint: {\n\t\t\t\t\t\t\tpointStyle: this.pointStyle,\n\t\t\t\t\t\t\thoverRadius: 8,\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tdisplay:             true,\n\t\t\t\t\tscales: this.type !== 'pie' ? this.scales() : {},\n\t\t\t\t\tplugins: {\n\t\t\t\t\t\tannotation:          {\n\t\t\t\t\t\t\tevents:      ['click'],\n\t\t\t\t\t\t\tannotations: arrayToObject(this._annotations, item => item.id),\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttooltip:            {\n\t\t\t\t\t\t\tposition:        this.type === 'bar' ? 'nearest' : 'average',\n\t\t\t\t\t\t\tcallbacks:       {\n\t\t\t\t\t\t\t\ttitle: (tooltipItem) => this.tooltipsService.title(tooltipItem),\n\t\t\t\t\t\t\t\tlabel: (tooltipItem) => this.tooltipsService.tooltipLabel(tooltipItem, tooltipTimeFormatConstant),\n\t\t\t\t\t\t\t\tafterLabel: (tooltipItem) => this.tooltipsService.tooltipAfterLabel(tooltipItem),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbackgroundColor: this.tooltipSettings.backgroundColor,\n\t\t\t\t\t\t\ttitleFont: {\n\t\t\t\t\t\t\t\tsize:   this.tooltipSettings.titleFontSize,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttitleColor:  this.tooltipSettings.titleFontColor,\n\t\t\t\t\t\t\tbodyColor:   this.tooltipSettings.bodyFontColor,\n\t\t\t\t\t\t\tbodyFont: {\n\t\t\t\t\t\t\t\tsize:    this.tooltipSettings.bodyFontSize,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tborderColor:     this.tooltipSettings.borderColor,\n\t\t\t\t\t\t\tborderWidth:     this.tooltipSettings.borderWidth,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlegend: {\n\t\t\t\t\t\t\tdisplay:  this.showLegend,\n\t\t\t\t\t\t\tposition: this.legendPosition,\n\t\t\t\t\t\t\t...this.legendWithoutBox ? {\n\t\t\t\t\t\t\t\tlabels: {\n\t\t\t\t\t\t\t\t\tboxWidth: 0\n\t\t\t\t\t\t\t\t}} : {},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t// Removed. We need to use htmlLegend. See ChartJS documentation\n\t\t\t\t\t\t// legendCallback: (chart) => this.legendCallback(chart),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tplugins: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid:         'customCanvasBackgroundColor',\n\t\t\t\t\t\tbeforeDraw: (chart, args, options) => {\n\t\t\t\t\t\t\tconst {ctx} = chart;\n\t\t\t\t\t\t\tctx.save();\n\t\t\t\t\t\t\tctx.globalCompositeOperation = 'destination-over';\n\t\t\t\t\t\t\tctx.fillStyle = options.color || 'transparent';\n\t\t\t\t\t\t\tctx.fillRect(0, 0, chart.width, chart.height);\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t};\n\n\t\t\tif (this.type === 'bar' && this.isHorizontal) {\n\t\t\t\tdefinition.options.indexAxis = 'y';\n\t\t\t}\n\n\t\t\tif (this.type === 'radar') {\n\t\t\t\tdefinition.options.scale = {\n\t\t\t\t\tticks: {\n\t\t\t\t\t\tmin: this.minValueForRadar,\n\t\t\t\t\t\tmax: this.maxValueForRadar\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (this.chartLabelSettings) {\n\t\t\t\tdefinition.options = {\n\t\t\t\t\t...definition.options,\n\t\t\t\t\tplugins: {\n\t\t\t\t\t\t...definition.options.plugins,\n\t\t\t\t\t\tdatalabels: {\n\t\t\t\t\t\t\talign:           this.chartLabelSettings.position.align,\n\t\t\t\t\t\t\tanchor:          this.chartLabelSettings.position.anchor,\n\t\t\t\t\t\t\tbackgroundColor: this.chartLabelSettings.labelColors.backgroundColor,\n\t\t\t\t\t\t\tborderColor:     this.chartLabelSettings.labelColors.borderColor,\n\t\t\t\t\t\t\tborderRadius:    this.chartLabelSettings.labelColors.borderRadius,\n\t\t\t\t\t\t\tborderWidth:     this.chartLabelSettings.labelColors.borderWidth,\n\t\t\t\t\t\t\tclamp:           this.chartLabelSettings.position.clamp,\n\t\t\t\t\t\t\tclip:            this.chartLabelSettings.position.clip,\n\t\t\t\t\t\t\tcolor:           this.chartLabelSettings.labelColors.color,\n\t\t\t\t\t\t\tdisplay:         this.chartLabelSettings.position.display,\n\t\t\t\t\t\t\tfont:            this.initDatalabelsFontProperties(this.chartLabelSettings.chartLabelFont),\n\t\t\t\t\t\t\tformatter:       this.chartLabelSettings.formatter,\n\t\t\t\t\t\t\toffset:          this.chartLabelSettings.position.offset,\n\t\t\t\t\t\t\topacity:         this.chartLabelSettings.labelColors.opacity,\n\t\t\t\t\t\t\tpadding:         this.initDatalabelsPaddingProperties(this.chartLabelSettings.chartLabelPadding),\n\t\t\t\t\t\t\trotation:        this.chartLabelSettings.position.rotation,\n\t\t\t\t\t\t\ttextAlign:       this.chartLabelSettings.chartLabelText.textAlign,\n\t\t\t\t\t\t\ttextStrokeColor: this.chartLabelSettings.chartLabelText.textStrokeColor,\n\t\t\t\t\t\t\ttextStrokeWidth: this.chartLabelSettings.chartLabelText.textStrokeWidth,\n\t\t\t\t\t\t\ttextShadowBlur:  this.chartLabelSettings.chartLabelText.textShadowBlur,\n\t\t\t\t\t\t\ttextShadowColor: this.chartLabelSettings.chartLabelText.textShadowColor\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tdefinition.options = {\n\t\t\t\t\t...definition.options,\n\t\t\t\t\tplugins: {\n\t\t\t\t\t\t...definition.options.plugins,\n\t\t\t\t\t\tdatalabels: {\n\t\t\t\t\t\t\tdisplay: false,\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (this.canvasBackground) {\n\t\t\t\tdefinition.options = {\n\t\t\t\t\t...definition.options,\n\t\t\t\t\tplugins: {\n\t\t\t\t\t\t...definition.options.plugins,\n\t\t\t\t\t\tcustomCanvasBackgroundColor: {\n\t\t\t\t\t\t\tcolor: this.canvasBackground\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.chart = new Chart(cx, definition);\n\t\t}\n\t}\n\n\tprivate legendCallback(chart) {\n\t\tconst text = [];\n\t\ttext.push('<ul class=\"' + chart.id + '-legend\">');\n\t\tconst data = chart.data;\n\t\tconst dataSets = data.datasets;\n\t\tif (dataSets.length) {\n\t\t\tfor (let i = 0; i < dataSets.length; i++) {\n\t\t\t\ttext.push('<li>');\n\t\t\t\tif (dataSets[i].legendType) {\n\t\t\t\t\tif (dataSets[i].borderColor && dataSets[i].backgroundColor) {\n\t\t\t\t\t\tif (dataSets[i].backgroundColor === 'transparent') {\n\t\t\t\t\t\t\ttext.push(`<span class=\"${dataSets[i].legendType}\" style=\"background-color: ${dataSets[i].borderColor};\n\t\t\t\t\t\t\t\tborder-color: ${dataSets[i].borderColor}\"></span>`);\n\t\t\t\t\t\t} else if (dataSets[i].borderColor === 'transparent') {\n\t\t\t\t\t\t\ttext.push(`<span class=\"${dataSets[i].legendType}\" style=\"background-color: ${dataSets[i].backgroundColor};\n\t\t\t\t\t\t\t\tborder-color: ${dataSets[i].backgroundColor}\"></span>`);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttext.push(`<span class=\"${dataSets[i].legendType}\" style=\"background-color: ${dataSets[i].backgroundColor};\n\t\t\t\t\t\t\t\tborder-color: ${dataSets[i].borderColor}\"></span>`);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (dataSets[i].borderColor) {\n\t\t\t\t\t\ttext.push(`<span class=\"${dataSets[i].legendType}\" style=\"border-color: ${dataSets[i].borderColor}\"></span>`);\n\t\t\t\t\t} else if (dataSets[i].backgroundColor) {\n\t\t\t\t\t\ttext.push(`<span class=\"${dataSets[i].legendType}\" \n\t\t\t\t\t\t\t\t\t\t style=\"background-color: ${dataSets[i].backgroundColor}\"></span>`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttext.push(dataSets[i].label);\n\t\t\t\ttext.push('</li>');\n\t\t\t}\n\t\t}\n\t\ttext.push('</ul>');\n\t\treturn text.join('');\n\t}\n\n\tprivate scales() {\n\t\tconst yAxisMultipleArray: MultipleAxis[] = this.multipleYAxisScales ?\n\t\t \tthis.multipleYAxisScales.map(y => y.getScaleDefinition(\n\t\t \t\tthis.hideInitialAndFinalTick ? Ticks.removeInitialAndFinalTick : this.hideFinalTick ? Ticks.removeFinalTick : null)\n\t\t\t) : null;\n\t\tconst yAxisMultiple = this.multipleYAxisScales ? arrayToObject(yAxisMultipleArray, i => i.id) : null;\n\t\tconst yAxis = {\n\t\t\tstacked:    this.isStacked,\n\t\t\tmin:     this.yMinValue,\n\t\t\tmax:     this.yMaxValue,\n\t\t\tticks:      {\n\t\t\t\tdisplay: this.axesVisible,\n\t\t\t\t...this.hideInitialAndFinalTick ? {\n\t\t\t\t\tcallback: Ticks.removeInitialAndFinalTick\n\t\t\t\t} : {},\n\t\t\t\t...this.hideFinalTick ? {\n\t\t\t\t\tcallback: Ticks.removeFinalTick\n\t\t\t\t} : {}\n\t\t\t},\n\t\t\tborder: {\n\t\t\t\tdrawBorder: this.axesVisible,\n\t\t\t},\n\t\t\tgrid:  {\n\t\t\t\tdisplay:    this.isBackgroundGrid,\n\t\t\t},\n\t\t\ttitle: {\n\t\t\t\tdisplay:     this.yAxisLabelVisible,\n\t\t\t\ttext: this.yLabelAxis\n\t\t\t}\n\t\t};\n\t\tconst timeScale = this.timeScale ? {\n\t\t\ttype: 'time',\n\t\t\tdistribution: 'linear',\n\t\t\ttime: {\n\t\t\t\tunit: this.timeUnit,\n\t\t\t\tminUnit: 'minute',\n\t\t\t}\n\t\t} : {};\n\t\tconst xAxis = {\n\t\t\tstacked:    this.isStacked,\n\t\t\tmin:      this.xMinValue,\n\t\t\tmax:      this.xMaxValue,\n\t\t\tticks:      {\n\t\t\t\tdisplay:  this.axesVisible,\n\t\t\t\tautoSkip: this.xAutoSkip,\n\t\t\t\t...this.hideInitialAndFinalTick ? {\n\t\t\t\t\tcallback: Ticks.removeInitialAndFinalTick\n\t\t\t\t} : {},\n\t\t\t\t...this.hideFinalTick ? {\n\t\t\t\t\tcallback: Ticks.removeFinalTick\n\t\t\t\t} : {}\n\t\t\t},\n\t\t\tborder: {\n\t\t\t\tdrawBorder: this.axesVisible,\n\t\t\t},\n\t\t\tgrid:  {\n\t\t\t\tdisplay:    this.isBackgroundGrid,\n\t\t\t},\n\t\t\ttitle: {\n\t\t\t\tdisplay:     this.xAxisLabelVisible,\n\t\t\t\ttext: this.xLabelAxis\n\t\t\t}\n\t\t};\n\n\t\tlet axisScales = {\n\t\t\tx: {\n\t\t\t\t...timeScale,\n\t\t\t\t...xAxis,\n\t\t\t},\n\t\t\ty: undefined\n\t\t};\n\n\t\tif (this.multipleYAxisScales) {\n\t\t\taxisScales = {\n\t\t\t\t...axisScales,\n\t\t\t\t...yAxisMultiple,\n\t\t\t};\n\t\t\tdelete axisScales.y\n\t\t} else {\n\t\t\taxisScales.y = yAxis;\n\t\t}\n\n\t\treturn axisScales;\n\t}\n\n\tprivate initDatalabelsFontProperties(chartLabelText: ChartLabelFont): object {\n\t\tlet font: any;\n\n\t\tif (chartLabelText.font) {\n\t\t\tfont = chartLabelText.font;\n\t\t} else {\n\t\t\tfont = {};\n\t\t}\n\n\t\tif (chartLabelText.family) {\n\t\t\tfont.family = chartLabelText.family;\n\t\t}\n\n\t\tif (chartLabelText.size) {\n\t\t\tfont.size = chartLabelText.size;\n\t\t}\n\n\t\tif (chartLabelText.style) {\n\t\t\tfont.style = chartLabelText.style;\n\t\t}\n\n\t\tif (chartLabelText.weight) {\n\t\t\tfont.weight = chartLabelText.weight;\n\t\t}\n\n\t\tif (chartLabelText.lineHeight) {\n\t\t\tfont.lineHeight = chartLabelText.lineHeight;\n\t\t}\n\n\t\treturn font;\n\t}\n\n\tprivate initDatalabelsPaddingProperties(chartLabelPadding: ChartLabelPadding): object {\n\n\t\tlet padding: any;\n\n\t\tif (chartLabelPadding.padding) {\n\t\t\tpadding = chartLabelPadding.padding;\n\t\t} else {\n\t\t\tpadding = {};\n\t\t}\n\n\t\tif (chartLabelPadding.top) {\n\t\t\tpadding.top = chartLabelPadding.top;\n\t\t}\n\n\t\tif (chartLabelPadding.right) {\n\t\t\tpadding.right = chartLabelPadding.right;\n\t\t}\n\n\t\tif (chartLabelPadding.bottom) {\n\t\t\tpadding.bottom = chartLabelPadding.bottom;\n\t\t}\n\n\t\tif (chartLabelPadding.left) {\n\t\t\tpadding.left = chartLabelPadding.left;\n\t\t}\n\n\t\treturn padding;\n\t}\n\n\tprivate setData(cx: CanvasRenderingContext2D) {\n\n\t\tlet borderColors: any;\n\t\tlet backgroundColors: any;\n\n\t\tif (this.data) {\n\t\t\tlet colorNumber = 0;\n\n\t\t\tfor (let i = 0; i < this.data.length; i++) {\n\t\t\t\tcolorNumber = i;\n\t\t\t\tif (this.data[i].isGradient) {\n\t\t\t\t\tconst gradientStroke = cx.createLinearGradient(500, 0, 100, 0);\n\t\t\t\t\tgradientStroke.addColorStop(0, this.rgba(this.defaultColors[0], 1));\n\t\t\t\t\tgradientStroke.addColorStop(1, this.rgba(this.defaultColors[1], 1));\n\t\t\t\t\tborderColors = gradientStroke;\n\t\t\t\t\tbackgroundColors = gradientStroke;\n\t\t\t\t} else if ((this.type === 'pie' || this.type === 'doughnut' || this.type === 'polarArea') && !this.data[i].chartType) {\n\t\t\t\t\tconst backgroundColorList: Array<any> = [];\n\t\t\t\t\tconst borderColorList: Array<any> = [];\n\t\t\t\t\tfor (let j = 0; j < this.data[i].data.length; j++) {\n\t\t\t\t\t\tif (this.data[i].labelBorderColors && this.data[i].labelBorderColors[j]) {\n\t\t\t\t\t\t\tborderColorList.push(this.rgba(this.data[i].labelBorderColors[j], 1));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tborderColorList.push(this.rgba(this.defaultColors[colorNumber], 1));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.data[i].labelBackgroundColors && this.data[i].labelBackgroundColors[j]) {\n\t\t\t\t\t\t\tbackgroundColorList.push(this.rgba(this.data[i].labelBackgroundColors[j], 1));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbackgroundColorList.push(this.rgba(this.defaultColors[colorNumber], 1));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcolorNumber++;\n\t\t\t\t\t\tif (colorNumber > (this.defaultColors.length - 1)) {\n\t\t\t\t\t\t\tcolorNumber = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tborderColors = borderColorList;\n\t\t\t\t\tbackgroundColors = backgroundColorList;\n\t\t\t\t} else {\n\t\t\t\t\tif (colorNumber > (this.defaultColors.length - 1)) {\n\t\t\t\t\t\tcolorNumber = 0;\n\t\t\t\t\t}\n\t\t\t\t\tif (!this.data[i].borderColor) {\n\t\t\t\t\t\tthis.data[i].borderColor = this.rgba(this.defaultColors[colorNumber], 1);\n\t\t\t\t\t}\n\t\t\t\t\tif (!this.data[i].backgroundColor) {\n\t\t\t\t\t\tif (this.data[i].fill) {\n\t\t\t\t\t\t\tthis.data[i].backgroundColor = this.rgba(this.defaultColors[colorNumber], 0.6);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.data[i].backgroundColor = 'transparent';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tborderColors = this.data[i].borderColor;\n\t\t\t\t\tbackgroundColors = this.data[i].backgroundColor;\n\t\t\t\t}\n\t\t\t\tthis.dataset.push({\n\t\t\t\t\tyAxisID:          this.data[i].yAxisID,\n\t\t\t\t\tlabel:            this.data[i].label,\n\t\t\t\t\tdata:             this.data[i].data,\n\t\t\t\t\tborderColor:      borderColors,\n\t\t\t\t\tbackgroundColor:  backgroundColors,\n\t\t\t\t\tfill:             this.data[i].fill,\n\t\t\t\t\ttype:             this.data[i].chartType,\n\t\t\t\t\tborderWidth:      this.data[i].borderWidth,\n\t\t\t\t\tshowLine:         this.data[i].showLine,\n\t\t\t\t\tpointRadius:      this.data[i].pointRadius,\n\t\t\t\t\tchartTooltipItem: this.data[i].chartTooltipItem,\n\t\t\t\t\tlegendType:       this.data[i].legendType\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t}\n\n\tprivate addAnnotations() {\n\t\tif (this.annotations) {\n\t\t\tfor (let i = 0; i < this.annotations.length; i++) {\n\t\t\t\tif (this.annotations[i] instanceof ChartLineAnnotation) {\n\t\t\t\t\tthis.addLineAnnotation(\n\t\t\t\t\t\tthis.annotations[i] as ChartLineAnnotation,\n\t\t\t\t\t\tthis.rgba(this.defaultColors[this.getColorNumber(i)], 1),\n\t\t\t\t\t\tthis.rgba(this.defaultColors[this.getColorNumber(i) + 1], 1));\n\t\t\t\t}\n\t\t\t\tif (this.annotations[i] instanceof ChartBoxAnnotation) {\n\t\t\t\t\tthis.addBoxAnnotation(\n\t\t\t\t\t\tthis.annotations[i] as ChartBoxAnnotation,\n\t\t\t\t\t\tthis.rgba(this.defaultColors[this.getColorNumber(i)], 1)\n\t\t\t\t\t);\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate addLineAnnotation(lineAnnotation: ChartLineAnnotation, defaultBorderColor: any, defaultBackgroundColor: any) {\n\n\t\tif (!lineAnnotation.borderColor) {\n\t\t\tlineAnnotation.borderColor = defaultBorderColor;\n\t\t}\n\t\tif (!lineAnnotation.borderWidth) {\n\t\t\tlineAnnotation.borderWidth = 2;\n\t\t}\n\n\t\tlineAnnotation.endValue = lineAnnotation.endValue ?? lineAnnotation.value;\n\n\t\tif (lineAnnotation.label) {\n\t\t\tif (!lineAnnotation.label.backgroundColor) {\n\t\t\t\tlineAnnotation.label.backgroundColor = defaultBackgroundColor;\n\t\t\t}\n\t\t\tif (!lineAnnotation.label.position) {\n\t\t\t\tlineAnnotation.label.position = 'center';\n\t\t\t}\n\t\t\tif (!lineAnnotation.label.fontColor) {\n\t\t\t\tlineAnnotation.label.fontColor = '#ffffff';\n\t\t\t}\n\t\t\tif (!lineAnnotation.label.fontStyle) {\n\t\t\t\tlineAnnotation.label.fontStyle = 'normal';\n\t\t\t}\n\t\t}\n\t\tconst annotations = {\n\t\t\tdrawTime:    lineAnnotation.drawTime,\n\t\t\tid: \t\t 'annotation' + (this._annotations.length + 1),\n\t\t\ttype:        lineAnnotation.type,\n\t\t\tvalue:\t\t lineAnnotation.value,\n\t\t\tendValue:\t lineAnnotation.endValue,\n\t\t\tborderColor: lineAnnotation.borderColor,\n\t\t\tborderWidth: lineAnnotation.borderWidth,\n\t\t\tborderDash:  lineAnnotation.borderDash,\n\t\t\tscaleID:     lineAnnotation.orientation === 'vertical' ? 'x' : lineAnnotation.scaleId,\n\t\t};\n\n\t\tlet label = {};\n\t\tif (lineAnnotation.label) {\n\t\t\tlabel = {\n\t\t\t\tdisplay:         true,\n\t\t\t\t\tbackgroundColor: lineAnnotation.label.backgroundColor,\n\t\t\t\t\tposition:        lineAnnotation.label.position,\n\t\t\t\t\tcontent:         lineAnnotation.label.text,\n\t\t\t\t\tfont: {\n\t\t\t\t\tcolor: lineAnnotation.label.fontColor,\n\t\t\t\t\t\tstyle: lineAnnotation.label.fontStyle,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tthis._annotations.push({\n\t\t\t...annotations,\n\t\t\tlabel,\n\t\t});\n\t}\n\n\tprivate getColorNumber(i: number): number {\n\t\tlet colorNumber = i;\n\t\tif (colorNumber > (this.defaultColors.length - 1)) {\n\t\t\tcolorNumber = 0;\n\t\t}\n\t\treturn colorNumber;\n\t}\n\n\tprivate addBoxAnnotation(boxAnnotation: ChartBoxAnnotation, defaultBorderColor: any) {\n\n\t\tif (!boxAnnotation.borderColor) {\n\t\t\tboxAnnotation.borderColor = defaultBorderColor;\n\t\t}\n\n\t\tif (!boxAnnotation.borderWidth) {\n\t\t\tboxAnnotation.borderWidth = 2;\n\t\t}\n\n\t\tif (!boxAnnotation.backgroundColor) {\n\t\t\tboxAnnotation.backgroundColor = 'transparent';\n\t\t}\n\n\t\tthis._annotations.push({\n\t\t\tdrawTime:        boxAnnotation.drawTime,\n\t\t\tid:              'annotation' + (this._annotations.length + 1),\n\t\t\ttype:            boxAnnotation.type,\n\t\t\tbackgroundColor: boxAnnotation.backgroundColor,\n\t\t\tborderWidth:     boxAnnotation.borderWidth,\n\t\t\tborderColor:     boxAnnotation.borderColor,\n\t\t\txMin:            boxAnnotation.xMin,\n\t\t\txMax:            boxAnnotation.xMax,\n\t\t\tyMin:            boxAnnotation.yMin,\n\t\t\tyMax:            boxAnnotation.yMax,\n\t\t\txScaleID:        'x',\n\t\t\tyScaleID:        boxAnnotation.scaleId\n\t\t});\n\n\t}\n\n\tprivate setAxisVisibility(): void {\n\t\t/* Axes Labels */\n\t\tthis.axesVisible = !(this.type === 'pie' || this.type === 'doughnut' || this.type === 'polarArea' || this.type === 'radar');\n\t\tthis.xAxisLabelVisible = !!this.xLabelAxis;\n\t\tthis.yAxisLabelVisible = !!this.yLabelAxis;\n\t}\n\n\tprivate legendClickCallback(event) {\n\t\tevent = event || window.event;\n\t\tlet target = event.target || event.srcElement;\n\t\twhile (target.nodeName !== 'LI') {\n\t\t\ttarget = target.parentElement;\n\t\t}\n\t\tconst parent = target.parentElement;\n\t\tconst chart: any = this.chart;\n\t\tconst index = Array.prototype.slice.call(parent.children)\n\t\t\t.indexOf(target);\n\n\t\tthis.chart.data.datasets[index].hidden = !this.chart.data.datasets[index].hidden;\n\t\tif (chart) {\n\t\t\tif (chart.isDatasetVisible(index)) {\n\t\t\t\ttarget.classList.remove('hidden');\n\t\t\t} else {\n\t\t\t\ttarget.classList.add('hidden');\n\t\t\t}\n\t\t\tchart.update();\n\t\t}\n\t}\n}\n","<div style=\"display:block;\" [class.h-100]=\"!maintainAspectRatio && !chartResized\">\n    <div #topLegend class=\"chart-legend\"></div>\n    <canvas #canvas id=\"canvas\" class=\"container-fluid\"></canvas>\n    <div #bottomLegend class=\"chart-legend\"></div>\n</div>\n","export type AnnotationTypes = LineAnnotation | BoxAnnotation | PointAnnotation;\n\ninterface Annotation {\n    type: AnnotationType;\n    axisID?: string;\n    drawTime?: AnnotationDrawTime;\n    backgroundColor?: string;\n}\n\nexport enum AnnotationType {\n    line = 'line',\n    box = 'box',\n    point = 'point',\n}\n\nexport enum AnnotationDrawTime {\n    afterDraw = 'afterDraw',\n    afterDatasetsDraw = 'afterDatasetsDraw',\n    beforeDraw = 'beforeDraw',\n    beforeDatasetsDraw = 'beforeDatasetsDraw',\n}\n\n\n// Line annotations\nexport interface LineAnnotation extends Annotation {\n    label?: AnnotationLabel;\n    value: number | string;\n    endValue?: number;\n    orientation?: LineAnnotationOrientation;\n    border?: {\n        width?: number;\n        color?: string;\n        dash?: boolean;\n    };\n}\n\nexport enum LineAnnotationOrientation {\n    vertical = 'vertical',\n    horizontal = 'horizontal',\n}\n\nexport interface LineAnnotationDefaultConfiguration extends Omit<LineAnnotation, 'value' | 'type' | 'label'> {\n    label?: Omit<AnnotationLabel, 'display' | 'text'>;\n}\n\nexport interface AnnotationLabel {\n    display: boolean;\n    text: string; // content\n    position?: AnnotationLabelLabelPosition;\n    backgroundColor?: string;\n    font?: {\n        style: string;\n        color: string;\n    };\n    border?: {\n        width?: number;\n        color?: string;\n        radius?: number;\n    };\n}\n\nexport enum AnnotationLabelLabelPosition {\n    start = 'start',\n    center = 'center',\n    end = 'end',\n}\n\n\n// Box annotations\nexport interface BoxAnnotation extends Annotation {\n    limits: {\n        x: {\n            min: number;\n            max: number;\n        };\n        y: {\n            min: number;\n            max: number;\n        };\n    };\n    xAxisID?: string;\n    yAxisID?: string;\n    border?: {\n        width?: number;\n        radius?: number;\n        color?: string;\n    };\n}\n\n\n// Point annotations\nexport interface PointAnnotation extends Annotation {\n    x: number;\n    y: number;\n    xAxisID?: string;\n    yAxisID?: string;\n    radius?: number;\n    border?: {\n        width?: number;\n        color?: string;\n    };\n}\n\n\n\n\n","import { Axes } from './axes';\nimport { Dataset } from './dataset';\nimport { AnnotationTypes } from './annotation';\nimport { Tooltip } from './tooltip';\nimport { Legend } from './legend';\nimport { Context } from 'chartjs-plugin-datalabels';\nimport { ClickPoint } from \"./click\";\n\n\nexport interface ChartConfiguration {\n    type: ChartType;\n    labels?: {\n        data: (string | Date)[];\n        skipItems?: number; // number the items to be skipped between labels\n        showOnlyIntegers?: boolean; // only show labels if there are no decimals\n    };\n    datasets: Dataset[];\n    annotations?: AnnotationTypes[];\n    tooltip?: Tooltip;\n    legend?: Legend;\n    grid?: {\n        enabled: boolean; // pie and doughnut\n        limits: {\n            x: {\n                max: number;\n                min: number;\n            };\n            y: {\n                max: number;\n                min: number;\n            };\n        };\n    };\n    axes?: Axes;\n    options?: {\n        responsive?: boolean;\n        line?: {\n            tension: number; // elements.line.tension\n        };\n        maintainAspectRatio?: boolean;\n        animations?: {\n            duration: number;\n        };\n        interaction?: {\n            intersect: boolean;\n            mode: InteractionMode; // default index\n        };\n        datalabels?: {\n            display: boolean | DatalabelsDisplayFunction;\n            formatter: DatalabelsFormatterFunction;\n            font?: {\n                color: string;\n                weight: string;\n            };\n        };\n        onClick?: OnClickCallbackFunction\n    };\n}\n\nexport type ChartJSContext = Context;\nexport type DatalabelsFormatterFunction = (value, context: ChartJSContext) => number | string;\nexport type DatalabelsDisplayFunction = (context: ChartJSContext) => boolean;\nexport type OnClickCallbackFunction = (data: ClickPoint) => void;\n\nexport enum ChartType {\n    line = 'line',\n    bar = 'bar',\n    pie = 'pie',\n    radar = 'radar',\n    doughnut = 'doughnut',\n    polarArea = 'polarArea',\n    scatter = 'scatter',\n    bubble = 'bubble',\n}\n\nexport enum InteractionMode {\n    point = 'point',\n    nearest = 'nearest',\n    index = 'index',\n    dataset = 'dataset',\n    x = 'x',\n    y = 'y',\n}\n","export interface Legend {\n    enabled?: boolean; // display\n    title?: {\n        enabled: boolean; // display\n        text: string;\n        color?: string;\n        font?: {\n            size?: number;\n            style?: string;\n            weight?: string;\n        };\n    };\n    labels?: {\n        enabled: boolean; // usePointStyle\n        pointStyle: LegendPointStyle | HTMLImageElement;\n    };\n    position?: LegendPosition;\n    align?: LegendAlign;\n    disabledClickEvent?: boolean;\n}\n\nexport enum LegendPointStyle {\n    circle = 'circle',\n    cross = 'cross',\n    crossRot = 'crossRot',\n    dash = 'dash',\n    line = 'line',\n    rect = 'rect',\n    rectRounded = 'rectRounded',\n    rectRot = 'rectRot',\n    star = 'star',\n    triangle = 'triangle',\n}\n\n\nexport enum LegendPosition {\n    top = 'top',\n    right = 'right',\n    bottom = 'bottom',\n    left = 'left',\n    chartArea = 'chartArea',\n}\n\nexport enum LegendAlign {\n    start = 'start',\n    center = 'center',\n    end = 'end',\n}\n\nexport enum LegendType {\n    line = 'line',\n}\n","import { ChartConfiguration, ChartType, InteractionMode } from './interfaces';\n\nexport const chartDefaultConfiguration: ChartConfiguration = {\n    type: ChartType.line,\n    labels: {\n        data: [],\n    },\n    datasets: [],\n    options: {\n        interaction: {\n            intersect: false,\n            mode: InteractionMode.index,\n        },\n        responsive: true,\n        maintainAspectRatio: true,\n        animations: {\n            duration: 2000,\n        }\n    }\n};\n","import { Injectable } from '@angular/core';\nimport { ChartConfiguration } from '../interfaces';\nimport { LinearScale, LogarithmicScale, TimeScale } from 'chart.js';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class AxesService {\n\n    public mapConfiguration(configuration: ChartConfiguration): (LinearScale | LogarithmicScale | TimeScale | undefined) {\n        const { labels, axes } = configuration;\n        const scales = axes?.dataAxes ?? {};\n\n        if (scales && !('x' in scales)) {\n            scales.x = {};\n        }\n        if (scales && !('ticks' in scales.x)) {\n            scales.x.ticks = {};\n        }\n        if (scales && labels?.skipItems) {\n            let count = 0;\n            scales.x.ticks.callback = (value, index): string => {\n                const skipItems = labels.skipItems ?? 0;\n                const labelValue = configuration.labels.data[index] ? configuration.labels.data[index] : value;\n                count = index % skipItems;\n                return skipItems ? (count === 0) ? labelValue : null : labelValue;\n            };\n        }\n        return scales as unknown as (LinearScale | LogarithmicScale | TimeScale | undefined);\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { ChartConfiguration, ChartType, Dataset, Legend, ScatterDataset } from '../interfaces';\nimport * as ChartJS from 'chart.js';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class DatasetService {\n\n    private defaultColors: Array<number[]> = [\n        [255, 99, 132],\n        [54, 162, 235],\n        [255, 206, 86],\n        [75, 192, 192],\n        [220, 220, 220],\n        [247, 70, 74],\n        [70, 191, 189],\n        [253, 180, 92],\n        [148, 159, 177],\n        [151, 187, 205],\n        [231, 233, 237],\n        [77, 83, 96]\n    ];\n\n    public mapDatasets(chartConfiguration: ChartConfiguration, cx: CanvasRenderingContext2D): any[] {\n        let colorNumber = 0;\n        const outputDatasets: any[] = [];\n\n        const { type: chartType, datasets, legend } = chartConfiguration;\n        const { enabled: pointStyleEnabled, pointStyle } = legend?.labels ?? { enabled: false, pointStyle: undefined };\n\n        for (const inputDataset of datasets) {\n            outputDatasets.push(this.mapDataset(chartType, inputDataset, colorNumber, legend, cx));\n            colorNumber++;\n            if (colorNumber > (this.defaultColors.length - 1)) {\n                colorNumber = 0;\n            }\n        }\n\n        return outputDatasets;\n    }\n\n    private mapDataset(chartType: ChartType, inputDataset: Dataset, colorNumber: number,\n                       legend: Legend, cx: CanvasRenderingContext2D): object {\n        let borderColor: any;\n        let backgroundColor: any;\n        if (inputDataset.isGradient) {\n            const gradientStroke = cx.createLinearGradient(500, 0, 100, 0);\n            gradientStroke.addColorStop(0, this.toRGBA(this.defaultColors[0], 1));\n            gradientStroke.addColorStop(1, this.toRGBA(this.defaultColors[1], 1));\n            borderColor = gradientStroke;\n            backgroundColor = gradientStroke;\n        } else if ((['pie','doughnut','polarArea'].includes(chartType)) && !inputDataset.type) {\n            const { borderColorList: computedBorderColorList,\n                backgroundColorList: computedBackgroundColorList} = this.getPieDoughnutPolarAreaColors(inputDataset);\n            borderColor = computedBorderColorList;\n            backgroundColor = computedBackgroundColorList;\n        } else {\n            borderColor = this.toRGBA(this.defaultColors[colorNumber], 1);\n            if (!!inputDataset.border) {\n                if (inputDataset.border[0]?.color) {\n                    borderColor = inputDataset.border[0].color;\n                } else if ((inputDataset.border as any).color) {\n                    borderColor = (inputDataset.border as any).color;\n                }\n            }\n\n            if (!inputDataset.backgroundColor) {\n                if (inputDataset.fill) {\n                    backgroundColor = this.toRGBA(this.defaultColors[colorNumber], 0.8);\n                } else {\n                    backgroundColor = 'transparent';\n                }\n            }\n        }\n\n        const { enabled: pointStyleEnabled, pointStyle } = legend?.labels ?? { enabled: false, pointStyle: undefined };\n\n        const outputDataset = {\n            type: inputDataset.type,\n            label: inputDataset.label,\n            data: inputDataset.data,\n            yAxisID: inputDataset.yAxisID,\n            fill: inputDataset.fill,\n            backgroundColor: inputDataset.backgroundColor ?? backgroundColor,\n            borderColor: ('border' in inputDataset && 'color' in inputDataset.border) ? (inputDataset.border as any).color : borderColor,\n            borderWidth: ('border' in inputDataset && 'width' in inputDataset.border) ? (inputDataset.border as any).width : 2,\n            pointRadius: inputDataset?.pointRadius ?? 5,\n            ...(pointStyleEnabled && pointStyle && { pointStyle }),\n            datalabels: inputDataset.datalabels,\n        };\n\n        this.fillForScatterChart(chartType, inputDataset, outputDataset);\n\n        return outputDataset;\n    }\n\n    // TODO: why to pass background colors similar to the legacy component\n    private getPieDoughnutPolarAreaColors(dataset: Dataset) {\n        const backgroundColorList: Array<any> = [];\n        const borderColorList: Array<any> = [];\n        let colorNumber = 0;\n        for (let j = 0; j < dataset.data.length; j++) {\n            if (colorNumber > (this.defaultColors.length - 1)) {\n                colorNumber = 0;\n            }\n            if (dataset.border && Array.isArray(dataset.border) &&  dataset.border[j] && 'color' in dataset.border[j]) {\n                borderColorList.push(this.toRGBA(dataset.border[j].color as number[], 1));\n            } else {\n                borderColorList.push(this.toRGBA(this.defaultColors[colorNumber], 1));\n            }\n            if (dataset.backgroundColor && Array.isArray(dataset.backgroundColor) &&  dataset.backgroundColor[j]) {\n                backgroundColorList.push(this.toRGBA(dataset.backgroundColor[j] as number[], 1));\n            } else {\n                backgroundColorList.push(this.toRGBA(this.defaultColors[colorNumber], 1));\n            }\n\n            colorNumber++;           \n        }\n\n        return { backgroundColorList, borderColorList };\n    }\n\n    private toRGBA(colour: number[], alpha: number = 1): string {\n        return `rgba(${colour.concat(alpha).join(',')})`;\n    }\n\n    private fillForScatterChart(chartType: ChartType, inputDataset: Dataset, outputDataset: object) {\n        if (chartType !== ChartType.scatter && inputDataset.type !== 'scatter') {\n            return;\n        }\n\n        const scatterInputDataset: ScatterDataset = inputDataset as ScatterDataset;\n        outputDataset['showLine'] = scatterInputDataset.showLine;\n    }\n}\n","import { Injectable } from '@angular/core';\nimport {\n    AnnotationDrawTime,\n    AnnotationLabelLabelPosition,\n    AnnotationType,\n    AnnotationTypes,\n    BoxAnnotation,\n    LineAnnotation,\n    LineAnnotationDefaultConfiguration,\n    LineAnnotationOrientation,\n    PointAnnotation\n} from '../interfaces';\n\nconst defaultAnnotationColor = 'rgb(229, 60, 41)';\nconst defaultAnnotationFontColor = 'rgb(255,255,255)';\nconst defaultLineAnnotationConfiguration: LineAnnotationDefaultConfiguration = {\n    axisID: 'y',\n    drawTime: AnnotationDrawTime.afterDatasetsDraw,\n    orientation: LineAnnotationOrientation.vertical,\n    border: {\n        width: 2,\n        color: defaultAnnotationColor,\n        dash: false,\n    },\n    label: {\n        border: {\n            width: 1,\n            color: defaultAnnotationColor,\n            radius: 3,\n        },\n        font: {\n            color: defaultAnnotationFontColor,\n            style: 'normal',\n        },\n        position: AnnotationLabelLabelPosition.center,\n        backgroundColor: defaultAnnotationColor,\n    }\n};\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class AnnotationService {\n\n    public mapAnnotations(annotations: AnnotationTypes[]) {\n        if (!annotations || annotations.length === 0) {\n            return undefined;\n        }\n\n        const computedAnnotations = [];\n        for (const annotation of annotations) {\n            if (this.isBoxAnnotation(annotation)) {\n                computedAnnotations.push(this.mapBoxAnnotation(annotation));\n            } else if(this.isPointAnnotation(annotation)) {\n                computedAnnotations.push(this.mapPointAnnotation(annotation));\n            } else if (this.isLineAnnotation(annotation)) {\n                computedAnnotations.push(this.mapLineAnnotation({\n                    ...defaultLineAnnotationConfiguration,\n                    ...annotation,\n                    border: {\n                        ...defaultLineAnnotationConfiguration.border,\n                        ...annotation.border,\n                    },\n                    label: {\n                        ...defaultLineAnnotationConfiguration.label,\n                        ...annotation.label ?? undefined,\n                        border: {\n                            ...defaultLineAnnotationConfiguration.label.border,\n                            ...annotation.label?.border ?? undefined,\n                        },\n                        font: {\n                            ...defaultLineAnnotationConfiguration.label.font,\n                            ...annotation.label?.font ?? undefined,\n                        }\n                    }\n                }));\n            } else {\n                // error\n            }\n        }\n\n        return computedAnnotations;\n    }\n\n    private mapBoxAnnotation(annotation: BoxAnnotation) {\n        return {\n            type: AnnotationType.box,\n            backgroundColor: annotation.backgroundColor ?? 'transparent',\n            borderColor: annotation.border?.color ?? undefined,\n            borderRadius: annotation.border?.radius ?? undefined,\n            borderWidth: annotation.border?.width ?? 2,\n            xMax: annotation.limits.x.max,\n            xMin: annotation.limits.x.min,\n            yMax: annotation.limits.y.max,\n            yMin: annotation.limits.y.min,\n            drawTime: annotation.drawTime ?? AnnotationDrawTime.afterDatasetsDraw,\n        };\n    }\n\n    private mapPointAnnotation(annotation: PointAnnotation) {\n        return {\n            type: AnnotationType.point,\n            xValue: annotation.x,\n            yValue: annotation.y,\n            xScaleID: annotation.xAxisID,\n            yScaleID: annotation.yAxisID,\n            radius: annotation.radius ?? 2,\n            backgroundColor: annotation.backgroundColor ?? 'transparent',\n            borderWidth: annotation.border?.width ?? 2,\n            borderColor: annotation.border?.color ?? undefined,\n            drawTime: annotation.drawTime ?? AnnotationDrawTime.afterDatasetsDraw,\n        };\n    }\n\n    private mapLineAnnotation(annotation: LineAnnotation) {\n        let computedLabel;\n        const isVertical = annotation.orientation === LineAnnotationOrientation.vertical;\n        const endValue = annotation.endValue ?? annotation.value;\n        const { label } = annotation;\n        if (label) {\n            computedLabel = {\n                display: label.display,\n                content: label.text,\n                backgroundColor: label.backgroundColor,\n                position: label.position,\n                borderColor: label.border.color,\n                borderWidth: label.border.width,\n                borderRadius: label.border.radius,\n                fontColor: label.font.color,\n                fontStyle: label.font.style,\n            };\n        }\n        return {\n            type: AnnotationType.line,\n            scaleID: isVertical ? 'x' : annotation.axisID,\n            backgroundColor: annotation.backgroundColor ?? undefined,\n            borderColor: annotation.border?.color ?? undefined,\n            borderWidth: annotation.border?.width ?? 2,\n            borderDash: annotation.border?.dash ? [5, 15] : undefined,\n            value: annotation.value,\n            endValue: endValue,\n            label: computedLabel,\n            drawTime: annotation.drawTime ?? AnnotationDrawTime.afterDatasetsDraw,\n        };\n    }\n\n    private isBoxAnnotation(annotation: AnnotationTypes): annotation is BoxAnnotation {\n        return 'limits' in annotation;\n    }\n\n    private isPointAnnotation(annotation: AnnotationTypes): annotation is PointAnnotation {\n        return 'type' in annotation && annotation.type === AnnotationType.point;\n    }\n\n    private isLineAnnotation(annotation: AnnotationTypes): annotation is LineAnnotation {\n        return 'type' in annotation && annotation.type === AnnotationType.line;\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { Legend, LegendAlign, LegendPosition } from '../interfaces';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class LegendService {\n\n    public mapLegend(legend: Legend) {\n        return {\n            display: legend?.enabled ?? true,\n            ...(legend?.title && {\n                title: {\n                    enabled: legend.title.enabled,\n                    text: legend.title.text,\n                }\n            }),\n            position: legend?.position ?? LegendPosition.top,\n            align: legend?.align ?? LegendAlign.center,\n            labels: {\n                usePointStyle: legend?.labels?.enabled ?? false,\n                pointStyle: legend?.labels?.pointStyle ?? undefined,\n            },\n            ...(legend?.disabledClickEvent && {onClick: () => {}}),\n        };\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { ChartConfiguration } from '../interfaces';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class TooltipService {\n\n    public mapTooltip(chartConfiguration: ChartConfiguration) {\n        const { tooltip } = chartConfiguration;\n        const { enabled: pointStyleEnabled} = chartConfiguration.legend?.labels ?? { enabled: false};\n\n        return {\n            enabled: tooltip?.enabled ?? true,\n            usePointStyle: pointStyleEnabled,\n            callbacks: {\n                title: (tooltipItems) => {\n                    const enabled = tooltip?.title?.enabled ?? false;\n                    if (!enabled) {\n                        return null;\n                    }\n\n                    let title = tooltip?.title?.text ?? undefined;\n                    const prefix = tooltip?.title?.prefix ?? undefined;\n                    if (!title) {\n                        title = tooltipItems[0].label;\n                    }\n                    return prefix ? `${prefix.trim()} ${title.trim()}` : title.trim();\n                }\n            }\n        };\n    }\n}\n","import { Injectable } from '@angular/core';\nimport * as ChartJS from 'chart.js';\nimport { ClickPoint, OnClickCallbackFunction } from '../interfaces';\n\nexport type ChartJSOnClick = (event: ChartJS.ChartEvent, elements: ChartJS.ActiveElement[], chart: ChartJS.Chart) => void;\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class ClickService {\n\n    public map(userOnClick: OnClickCallbackFunction): ChartJSOnClick {\n        if (userOnClick) {\n            return (event: ChartJS.ChartEvent, elements: ChartJS.ActiveElement[], chart: ChartJS.Chart) => {\n                const clickPoint: ClickPoint = this.toClickPoint(event, chart);\n                userOnClick(clickPoint);\n            };\n        }\n    }\n\n    private toClickPoint(event: ChartJS.ChartEvent, chart: ChartJS.Chart): ClickPoint {\n        return {\n            x: chart.scales.x.getValueForPixel(event.x),\n            y: chart.scales.y.getValueForPixel(event.y)\n        };\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { ChartConfiguration } from '../interfaces';\nimport { chartDefaultConfiguration } from '../chart-default-configuration';\nimport { AxesService } from './axes.service';\nimport * as ChartJS from 'chart.js';\nimport { DatasetService } from './dataset.service';\nimport { AnnotationService } from './annotation.service';\nimport { LegendService } from './legend.service';\nimport { TooltipService } from './tooltip.service';\nimport { ClickService } from './click.service';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class ChartService {\n    private _cx: CanvasRenderingContext2D;\n\n    constructor(private readonly axesService: AxesService, private readonly datasetService: DatasetService,\n                private readonly annotationService: AnnotationService, private readonly legendService: LegendService,\n                private readonly tooltipService: TooltipService, private readonly clickService: ClickService) {\n    }\n\n    public mapConfiguration(configuration: ChartConfiguration, cx: CanvasRenderingContext2D): ChartJS.ChartConfiguration {\n        this._cx = cx;\n\n        const outputConfiguration = this.mapBasicInformation(configuration);\n        const axes = this.axesService.mapConfiguration(configuration);\n        const indexAxis: 'x' | 'y' = configuration.axes ? configuration.axes.mainAxis : 'x';\n        return {\n            ...outputConfiguration,\n            options: {\n                ...outputConfiguration.options,\n                indexAxis,\n                scales: axes as any,\n            } as any,\n        };\n    }\n\n    private mapBasicInformation(configuration: ChartConfiguration): ChartJS.ChartConfiguration {\n        // Howto implement the fill flag\n        const chartConfiguration: ChartConfiguration = {\n            ...chartDefaultConfiguration,\n            ...configuration,\n            options: {\n                ...chartDefaultConfiguration.options,\n                ...configuration.options ?? undefined,\n                interaction: {\n                    ...chartDefaultConfiguration.options.interaction,\n                    ...configuration.options?.interaction ?? undefined,\n                },\n                animations: {\n                    ...chartDefaultConfiguration.options.animations,\n                    ...configuration.options?.animations ?? undefined,\n                },\n            }\n        };\n\n        const { options:{line, datalabels}} = chartConfiguration;\n        const datasets = this.datasetService.mapDatasets(chartConfiguration, this._cx);\n        const annotations = this.annotationService.mapAnnotations(chartConfiguration.annotations);\n        const legend = this.legendService.mapLegend(chartConfiguration.legend);\n        const tooltip = this.tooltipService.mapTooltip(chartConfiguration);\n        const onClick = this.clickService.map(chartConfiguration.options.onClick);\n\n        return {\n            type: chartConfiguration.type,\n            data: {\n                labels: chartConfiguration.labels?.data,\n                datasets,\n            },\n            options: {\n                elements: {\n                    line: {\n                        tension: line?.tension ?? 0,\n                    }\n                },\n                animation: {\n                    duration: chartConfiguration.options.animations.duration,\n                },\n                responsive: chartConfiguration.options.responsive,\n                maintainAspectRatio: chartConfiguration.options.maintainAspectRatio,\n                interaction: chartConfiguration.options.interaction,\n                plugins: {\n                    datalabels: {\n                        display: datalabels?.display ?? false,\n                        formatter: datalabels?.formatter ?? null,\n                    },\n                    annotation: {\n                        annotations,\n                    },\n                    legend,\n                    tooltip,\n                } as any,\n                onClick,\n            },\n        };\n    }\n}\n","import { AfterContentInit, Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { ChartConfiguration, InteractionMode } from './interfaces';\nimport * as ChartJS from 'chart.js';\nimport { ChartService } from './services/chart.service';\nimport ChartDataLabels from 'chartjs-plugin-datalabels';\nimport annotationPlugin from 'chartjs-plugin-annotation';\n\nconst afterRenderingDetectorPlugin = {\n  id: 'afterRenderingDetector',\n  afterInit: (chart, args, options) => options.afterInitCallback(),\n  afterUpdate: (chart, args, options) => options.afterUpdateCallback(),\n  defaults: {\n    afterInitCallback: () => {},\n    afterUpdateCallback: () => {},\n  }\n};\n\nChartJS.Chart.register(...ChartJS.registerables, ChartDataLabels, annotationPlugin, afterRenderingDetectorPlugin);\n\n\n@Component({\n    selector: 'systelab-chart',\n    templateUrl: './chart.component.html',\n    styleUrls: ['./chart.component.scss'],\n    standalone: false\n})\nexport class ChartComponent implements AfterContentInit {\n  @Input() config: ChartConfiguration;\n  @ViewChild('chartCanvas', {static: true}) chartCanvas: ElementRef;\n\n  public chart: ChartJS.Chart;\n  public drawing = true;\n\n  constructor(private readonly chartService: ChartService) {}\n\n  public ngAfterContentInit(): void {\n    ChartJS.Chart.defaults.interaction.intersect = this.config.options?.interaction?.intersect ?? false;\n    ChartJS.Chart.defaults.interaction.mode = this.config.options?.interaction?.mode ?? InteractionMode.index;\n    this.drawChart();\n  }\n\n  public refresh(): void {\n    this.drawChart();\n  }\n\n  private drawChart(): void {\n    if (!this.chartCanvas.nativeElement) {\n      return;\n    }\n\n    this.drawing = true;\n\n    if (this.chart) {\n      this.chart.destroy();\n    }\n\n    const cx: CanvasRenderingContext2D = this.chartCanvas.nativeElement.getContext('2d');\n    let chartConfiguration: ChartJS.ChartConfiguration = this.chartService.mapConfiguration(this.config, cx);\n    const animationEnabled: boolean = (chartConfiguration.options.animation as any).duration > 0;\n\n    chartConfiguration = {\n      ...chartConfiguration,\n      options: {\n        ...chartConfiguration.options,\n        animation: {\n          ...chartConfiguration.options.animation,\n          onComplete: () => {\n            this.drawing = false;\n          },\n        },\n        plugins: {\n          ...chartConfiguration.options.plugins,\n          afterRenderingDetector: {\n            afterInitCallback: () => {\n              if (!animationEnabled) {\n                this.drawing = false;\n              }\n            },\n            afterUpdateCallback: () => {\n              if (!animationEnabled) {\n                this.drawing = false;\n              }\n            },\n          },\n        } as any,\n      }\n    };\n\n    this.chart = new ChartJS.Chart(cx, chartConfiguration);\n  }\n}\n","<div class=\"chart-container\" [class.h-100]=\"!config?.options?.maintainAspectRatio\">\n    <canvas\n        #chartCanvas\n        id=\"chartCanvas\"\n        class=\"container-fluid\"\n        [class.drawing]=\"drawing\"\n    ></canvas>\n</div>\n","import { ModuleWithProviders, NgModule, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ChartLegacyComponent } from './chart-legacy/chart-legacy.component';\nimport { FormsModule } from '@angular/forms';\nimport { ChartComponent } from './chart/chart.component';\n\n@NgModule({\n\timports: [\n\t\tCommonModule,\n\t\tFormsModule,\n\t],\n\tdeclarations: [\n\t\tChartLegacyComponent,\n\t\tChartComponent,\n\t],\n\texports: [\n\t\tChartLegacyComponent,\n\t\tChartComponent,\n\t]\n})\nexport class SystelabChartsModule {\n\tstatic forRoot(entryComponents?: Array<Type<any> | any[]>): ModuleWithProviders<SystelabChartsModule> {\n\t\treturn {\n\t\t\tngModule: SystelabChartsModule\n\t\t};\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.DecimalFormatService","i1.TooltipLegacyService","i1.AxesService","i2.DatasetService","i3.AnnotationService","i4.LegendService","i5.TooltipService","i6.ClickService","i1.ChartService"],"mappings":"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"}