{"version":3,"file":"B6qwWlWo.js","sources":["../../../../src/components/charts/Legend.vue","../../../../src/config/FiltersColors.ts","../../../../src/utils/utilGraph.ts"],"sourcesContent":["\n\n","export interface IFilterColors {\n\tbackground: string\n\tnonInteractiveBackground: string\n\tfilter: string\n}\n\nexport const filterColors: IFilterColors[] = [\n\t{\n\t\tbackground: 'bg-warm-grey-100 hover:bg-warm-grey-200',\n\t\tnonInteractiveBackground: 'bg-warm-grey-100',\n\t\tfilter: '#9191FF',\n\t},\n\t{\n\t\tbackground: 'bg-warning-100 hover:bg-warning-200',\n\t\tnonInteractiveBackground: 'bg-warning-100',\n\t\tfilter: '#BC8714',\n\t},\n]\n","import { TranslationKey } from '~/i18n/TranslationKeys'\nimport { filterColors } from '../config/FiltersColors'\nimport { IChartDataPoint } from './../types/IChartDataPoint'\nimport { INamedArray } from './../types/INamedArray'\nclass UtilGraph {\n\tpublic readonly defaultGrid = {\n\t\t// this is needed in order not to 'cut' the last text value\n\t\ttop: 5,\n\t\tright: 5,\n\t\tbottom: 0,\n\t\tleft: 0,\n\t\tcontainLabel: true,\n\t}\n\n\tpublic defaultYAxis(dataValues: INamedArray>[]): any {\n\t\treturn dataValues.map((entry, index) => ({\n\t\t\ttype: 'value',\n\t\t}))\n\t}\n\n\tpublic defaultToolbox() {\n\t\treturn {\n\t\t\tfeature: {\n\t\t\t\tdataZoom: {\n\t\t\t\t\tyAxisIndex: 'none',\n\t\t\t\t\tfilterMode: 'none',\n\t\t\t\t},\n\t\t\t\trestore: {},\n\t\t\t},\n\t\t}\n\t}\n\n\tpublic defaultXaxis(\n\t\tdataValues: INamedArray>[],\n\t\tmapLabel: (entry: K[], index: number) => string,\n\t\tmapData: (entry: IChartDataPoint[]) => any = (entry: any[]) => entry.map((val) => val.x),\n\t\tsplitNumber: number = 12\n\t) {\n\t\treturn dataValues.map((entry, index) => {\n\t\t\tconst interval = this.getInterval(entry.entries, splitNumber)\n\n\t\t\treturn {\n\t\t\t\t// show only 1 x axis per time\n\t\t\t\tshow: index == 0,\n\t\t\t\ttype: 'category',\n\t\t\t\tdata: mapData(entry.entries),\n\t\t\t\tsplitNumber,\n\t\t\t\taxisLabel: {\n\t\t\t\t\tinterval,\n\t\t\t\t\tformatter: mapLabel,\n\t\t\t\t},\n\t\t\t\tsplitLine: {\n\t\t\t\t\tshow: true,\n\t\t\t\t},\n\t\t\t\taxisTick: {\n\t\t\t\t\talignWithLabel: true,\n\t\t\t\t\tinterval,\n\t\t\t\t},\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic defaultSeries(\n\t\tdataValues: INamedArray>[],\n\t\tgetData: (dataPoints: IChartDataPoint[], index: number) => any[],\n\t\ttype: string = 'line',\n\t\tareaStyle: Object | undefined = undefined,\n\t\tshowSymbol: boolean = false\n\t) {\n\t\treturn dataValues.map((entry, index) => ({\n\t\t\tname: useLocale().translate(entry.name as TranslationKey),\n\t\t\ttype,\n\t\t\tareaStyle,\n\t\t\tshowSymbol,\n\t\t\tdata: getData(entry.entries, index),\n\t\t\txAxisIndex: index,\n\t\t\titemStyle: {\n\t\t\t\tcolor: filterColors[index % filterColors.length].filter,\n\t\t\t},\n\t\t}))\n\t}\n\n\tpublic defaultTooltip(\n\t\tformatX: (entry: any, seriesIndex: number) => string,\n\t\tformatY: (entry: any, seriesIndex: number) => string\n\t) {\n\t\treturn {\n\t\t\ttrigger: 'axis',\n\t\t\tvalueFormatter: formatY,\n\t\t\taxisPointer: {\n\t\t\t\ttype: 'cross',\n\t\t\t\tlabel: {\n\t\t\t\t\t// while it doesn't show, the formatting is used for the tooltip\n\t\t\t\t\tshow: false,\n\t\t\t\t\tformatter: (entry: any) => {\n\t\t\t\t\t\tconst axis = entry.axisDimension\n\t\t\t\t\t\tconst data = entry.value\n\n\t\t\t\t\t\tswitch (axis) {\n\t\t\t\t\t\t\tcase 'x': {\n\t\t\t\t\t\t\t\treturn formatX(data, entry.axisIndex)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcase 'y': {\n\t\t\t\t\t\t\t\treturn formatY(data, entry.axisIndex)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\treturn ''\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},\n\t\t\t},\n\t\t}\n\t}\n\n\tpublic getInterval(dataset: IChartDataPoint[], splitNumber: number) {\n\t\t// TODO: switch on Date, number (max - min)\n\t\treturn Math.round(dataset.length / splitNumber)\n\t}\n\n\t// TODO: simplify\n\tpublic alignData(dataToAlign: INamedArray>[], defaultValue: T) {\n\t\tconst isDate = this.isXDate(dataToAlign)\n\t\tconst allXValues = new Set()\n\n\t\t// reminder: if you change this, keep in mind the complexity:\n\t\t// in this case, thanks to the use of set it is only O(N*M),\n\t\t// if you cancel the set, it skyrockets to O(N*M)^2\n\t\tdataToAlign.forEach((filterData) => {\n\t\t\tfilterData.entries.forEach((dataPoint) => {\n\t\t\t\tif (isDate) {\n\t\t\t\t\tallXValues.add((dataPoint.x as Date).valueOf())\n\t\t\t\t} else {\n\t\t\t\t\tallXValues.add(dataPoint.x)\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\n\t\treturn dataToAlign.map((arr) => {\n\t\t\tlet iterator = 0\n\t\t\tconst xArray = Array.from(allXValues)\n\n\t\t\tif (arr.entries.length == 0) {\n\t\t\t\treturn xArray.map((x) => ({\n\t\t\t\t\tx,\n\t\t\t\t\ty: defaultValue,\n\t\t\t\t}))\n\t\t\t}\n\n\t\t\tlet currentDataPoint = arr.entries[0]\n\n\t\t\tconst entries = xArray.map((xVal: any) => {\n\t\t\t\tlet val = defaultValue\n\t\t\t\tconst actualX = isDate ? new Date(xVal) : xVal\n\t\t\t\tconst currentX = isDate ? (currentDataPoint.x as Date).valueOf() : xVal\n\n\t\t\t\tif (currentX === actualX) {\n\t\t\t\t\tval = currentDataPoint.y\n\t\t\t\t\titerator++\n\t\t\t\t\tif (iterator < arr.entries.length) {\n\t\t\t\t\t\tcurrentDataPoint = arr.entries[iterator]\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tx: isDate ? new Date(actualX as number) : actualX,\n\t\t\t\t\ty: val,\n\t\t\t\t}\n\t\t\t})\n\n\t\t\treturn {\n\t\t\t\tname: arr.name,\n\t\t\t\tentries,\n\t\t\t}\n\t\t})\n\t}\n\n\tisXDate(data: INamedArray>[]) {\n\t\tconst element = data.find((el) => el.entries.length > 0)?.entries\n\n\t\tif (element == undefined) {\n\t\t\treturn false\n\t\t}\n\n\t\treturn element[0].x instanceof Date\n\t}\n\n\tpublic isDataComparable(data: INamedArray>[]) {\n\t\tconst lengthsCounter = new Set()\n\t\tdata.forEach((entry) => lengthsCounter.add(entry.entries.length))\n\n\t\treturn lengthsCounter.size == 1\n\t}\n}\n\nexport const utilGraph = new UtilGraph()\n"],"names":["props","__props","color","text","isEnabled","legendOverride","hideFilter","toRefs","internalState","ref","watch","getIcon","computed","SpSvg","emit","__emit","onClick","EmitsEnum","iconStyle","filterColors","UtilGraph","__publicField","dataValues","entry","index","mapLabel","mapData","val","splitNumber","interval","getData","type","areaStyle","showSymbol","useLocale","formatX","formatY","axis","data","dataset","dataToAlign","defaultValue","isDate","allXValues","filterData","dataPoint","arr","iterator","xArray","x","currentDataPoint","entries","xVal","actualX","element","_a","el","lengthsCounter","utilGraph"],"mappings":"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"}