@engie-group/ngx-gem-spaas
Version:
This library contains services, components, images and styles to provide a unified look and way-of-working throughout GEM SPaaS.
1 lines • 24.5 kB
Source Map (JSON)
{"version":3,"file":"engie-group-ngx-gem-spaas-charts.mjs","sources":["../../../projects/ngx-gem-spaas/charts/src/_services/amcharts.service.ts","../../../projects/ngx-gem-spaas/charts/src/public-api.ts","../../../projects/ngx-gem-spaas/charts/src/engie-group-ngx-gem-spaas-charts.ts"],"sourcesContent":["import * as am4charts from '@amcharts/amcharts4/charts';\r\nimport {PieChart} from '@amcharts/amcharts4/charts';\r\nimport * as am4core from '@amcharts/amcharts4/core';\r\nimport {Tooltip} from '@amcharts/amcharts4/core';\r\nimport {Injectable, OnDestroy} from '@angular/core';\r\nimport {ThemeModel, ThemeService} from \"@engie-group/ngx-gem-spaas\";\r\nimport {Subject} from \"rxjs\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {AxisItemLocation} from \"@amcharts/amcharts4/.internal/charts/axes/Axis\";\r\n\r\nam4core.addLicense('CH222128706');\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AmchartsService implements OnDestroy {\r\n\r\n private theme: ThemeModel | null = null;\r\n private onDestroy$: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private themeService: ThemeService,\r\n ) {\r\n this.onNewTheme();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.onDestroy$.next();\r\n this.onDestroy$.complete();\r\n }\r\n\r\n private onNewTheme(): void {\r\n this.themeService.onNewActiveTheme()\r\n .pipe(takeUntil(this.onDestroy$))\r\n .subscribe((theme: ThemeModel) => {\r\n this.theme = theme;\r\n }\r\n );\r\n }\r\n\r\n // create xy chart\r\n createChartXY(chartDiv: string, withLegend = true): am4charts.XYChart {\r\n\r\n const chart = am4core.create(chartDiv, am4charts.XYChart);\r\n\r\n chart.paddingBottom = 5;\r\n chart.paddingRight = 4;\r\n chart.paddingLeft = 18;\r\n\r\n // @ts-ignore\r\n chart.preloader.background.fill = am4core.color(this.theme?.getRgb('bg'));\r\n\r\n chart.zoomOutButton.background.fill = am4core.color(this.theme?.getRgb('color'));\r\n chart.zoomOutButton.icon.stroke = am4core.color(this.theme?.getRgb('bg'));\r\n chart.zoomOutButton.icon.strokeWidth = 2;\r\n chart.zoomOutButton.parent = chart.tooltipContainer;\r\n chart.zoomOutButton.background.cornerRadius(4, 4, 4, 4);\r\n chart.zoomOutButton.padding(0, 6, 0, 6);\r\n // @ts-ignore\r\n chart.zoomOutButton.background.states.getKey('hover').properties.fill = am4core.color(this.theme?.getRgb('primary'));\r\n // @ts-ignore\r\n chart.zoomOutButton.background.states.getKey('down').properties.fill = am4core.color(this.theme?.getRgb('primary'));\r\n\r\n chart.cursor = new am4charts.XYCursor();\r\n chart.cursor.behavior = 'zoomX';\r\n chart.cursor.lineX.fill = am4core.color(this.theme?.getRgb('color'));\r\n chart.cursor.lineX.stroke = am4core.color(this.theme?.getRgb('color'));\r\n chart.cursor.lineY.disabled = true;\r\n\r\n if (withLegend) {\r\n chart.legend = new am4charts.Legend();\r\n chart.legend.position = 'top';\r\n const markerTemplate = chart.legend.markers.template;\r\n markerTemplate.width = 10;\r\n markerTemplate.height = 10;\r\n\r\n chart.legend.labels.template.fill = am4core.color(this.theme?.getRgb('color'));\r\n chart.legend.valueLabels.template.fill = am4core.color(this.theme?.getRgb('color'));\r\n\r\n chart.legend.labels.template.textDecoration = 'none';\r\n chart.legend.valueLabels.template.textDecoration = 'none';\r\n chart.legend.fontSize = '85%';\r\n\r\n const as = chart.legend.labels.template.states.getKey('active');\r\n // @ts-ignore\r\n as.properties.textDecoration = 'line-through';\r\n // @ts-ignore\r\n as.properties.fill = am4core.color(this.theme?.getRgb('color', 0.4));\r\n\r\n const as2 = chart.legend.valueLabels.template.states.getKey('active');\r\n // @ts-ignore\r\n as2.properties.textDecoration = 'line-through';\r\n // @ts-ignore\r\n as2.properties.fill = am4core.color(this.theme?.getRgb('color', 0.4));\r\n }\r\n\r\n return chart;\r\n }\r\n\r\n // create pie chart\r\n createChartPie(\r\n chartDiv: string,\r\n innerRadius: number = 0,\r\n startAngle: number = 0,\r\n endAngle: number = 360\r\n ): am4charts.PieChart {\r\n const chart = am4core.create(chartDiv, am4charts.PieChart);\r\n\r\n chart.innerRadius = innerRadius;\r\n chart.startAngle = startAngle;\r\n chart.endAngle = endAngle;\r\n\r\n return chart;\r\n }\r\n\r\n destroyChart(chart: am4charts.XYChart | am4charts.PieChart | undefined): void {\r\n if (chart) {\r\n chart.dispose();\r\n }\r\n }\r\n\r\n // AXES\r\n\r\n addCategoryAxis(\r\n chart: am4charts.XYChart,\r\n xOrY: 'x' | 'y',\r\n category: string,\r\n withTooltip: boolean,\r\n withGrid: boolean,\r\n withLabels: boolean,\r\n ): am4charts.CategoryAxis {\r\n const axes = xOrY === 'x' ? chart.xAxes : chart.yAxes;\r\n const axis = axes.push(new am4charts.CategoryAxis());\r\n this.setAxisTooltip(axis, withTooltip);\r\n this.setGenericAxisProps(axis, withGrid, withLabels);\r\n axis.dataFields.category = category;\r\n axis.renderer.minGridDistance = 1;\r\n axis.renderer.labels.template.location = 0.5; // 0 & 1 IS ON TICK, 0.5 CENTERS BETWEEN TICKS\r\n return axis;\r\n }\r\n\r\n addDateAxis(\r\n chart: am4charts.XYChart,\r\n xOrY: 'x' | 'y',\r\n date: string,\r\n withTooltip: boolean = true,\r\n withGrid: boolean = false,\r\n withLabels: boolean = true,\r\n ): am4charts.DateAxis {\r\n const axes = xOrY === 'x' ? chart.xAxes : chart.yAxes;\r\n const axis = axes.push(new am4charts.DateAxis());\r\n this.setAxisTooltip(axis, withTooltip);\r\n this.setGenericAxisProps(axis, withGrid, withLabels);\r\n // axis.baseInterval = {'timeUnit': 'hour', 'count': 1};\r\n axis.dataFields.date = date;\r\n axis.renderer.labels.template.location = AxisItemLocation.Start + 0.1; // 0.5 CENTERS BETWEEN TICKS\r\n axis.renderer.minGridDistance = 40;\r\n return axis;\r\n }\r\n\r\n addValueAxis(\r\n chart: am4charts.XYChart,\r\n xOrY: 'x' | 'y',\r\n title: string = '',\r\n withTooltip: boolean = false,\r\n withGrid: boolean = true,\r\n withLabels: boolean = true,\r\n ): am4charts.ValueAxis {\r\n const axes = xOrY === 'x' ? chart.xAxes : chart.yAxes;\r\n const axis = axes.push(new am4charts.ValueAxis());\r\n this.setAxisTooltip(axis, withTooltip);\r\n this.setGenericAxisProps(axis, withGrid, withLabels);\r\n axis.extraMax = .0;\r\n axis.extraMin = .0;\r\n axis.title.text = title;\r\n return axis;\r\n }\r\n\r\n private setAxisTooltip(axis: any, withToolTip: boolean, dy: number = 5): void {\r\n axis.tooltip.disabled = !withToolTip;\r\n if (withToolTip) {\r\n const axisTooltip = axis.tooltip;\r\n axisTooltip.background.fill = am4core.color(this.theme?.getRgb('primary'));\r\n axisTooltip.label.fill = am4core.color(this.theme?.getRgb('bg'));\r\n axisTooltip.background.strokeWidth = 0;\r\n axisTooltip.background.cornerRadius = 4;\r\n axisTooltip.dy = dy;\r\n }\r\n }\r\n\r\n private setGenericAxisProps(\r\n axis: am4charts.CategoryAxis | am4charts.ValueAxis | am4charts.DateAxis,\r\n withGrid: boolean,\r\n withLabels: boolean\r\n ): void {\r\n axis.cursorTooltipEnabled = true;\r\n axis.renderer.fontSize = '0.7em';\r\n axis.renderer.grid.template.disabled = !withGrid;\r\n axis.renderer.grid.template.location = 1; // THIS ALSO IMPACTS TOOLTIP LOCATION !!\r\n axis.renderer.grid.template.stroke = am4core.color(this.theme?.getRgb('color'));\r\n axis.renderer.labels.template.disabled = !withLabels;\r\n axis.renderer.labels.template.fill = am4core.color(this.theme?.getRgb('color'));\r\n axis.renderer.minWidth = 10; // IMPACTS SPACE FOR Y-AXIS LABELS\r\n axis.title.fill = am4core.color(this.theme?.getRgb('color'));\r\n }\r\n\r\n // SERIES\r\n\r\n addSeriesXY(\r\n chart: am4charts.XYChart,\r\n type: 'line' | 'bar' | 'stepline',\r\n dataType: 'category' | 'date' | 'value',\r\n name: string,\r\n valueX: string,\r\n valueY: string,\r\n openValueY: string,\r\n stacked: boolean = false,\r\n color: string = '',\r\n defToolTipColor: boolean = false,\r\n tooltipText: string = '',\r\n strokeWidth: number = 2,\r\n ): am4charts.LineSeries | am4charts.ColumnSeries | am4charts.StepLineSeries {\r\n\r\n let series;\r\n switch (type) {\r\n case 'line':\r\n series = new am4charts.LineSeries();\r\n break;\r\n case 'bar':\r\n series = new am4charts.ColumnSeries();\r\n break;\r\n case 'stepline':\r\n series = new am4charts.StepLineSeries();\r\n break;\r\n }\r\n\r\n series.name = name;\r\n\r\n switch (dataType) {\r\n case 'category':\r\n series.dataFields.categoryX = valueX;\r\n break;\r\n case 'date':\r\n series.dataFields.dateX = valueX;\r\n if (!(series instanceof am4charts.ColumnSeries)) {\r\n series.dataItems.template.locations['dateX'] = 0;\r\n }\r\n break;\r\n case 'value':\r\n series.dataFields.valueX = valueX;\r\n break;\r\n }\r\n\r\n series.dataFields.valueY = valueY;\r\n if (!(series instanceof am4charts.ColumnSeries)) {\r\n series.connect = false;\r\n }\r\n series.stacked = stacked;\r\n\r\n if (openValueY) {\r\n\r\n // RANGE SERIES: UPPER AND LOWER BAND WITH FILL\r\n series.dataFields.openValueY = openValueY;\r\n series.strokeWidth = 0;\r\n if (color) {\r\n series.fill = am4core.color(color);\r\n series.stroke = am4core.color(color);\r\n }\r\n series.sequencedInterpolation = false;\r\n series.fillOpacity = 0.1;\r\n if (!(series instanceof am4charts.ColumnSeries)) {\r\n series.tensionX = 5;\r\n }\r\n series.tooltipText = tooltipText || '[bold]' + name + ': [/]{openValueY.value} to {valueY}';\r\n\r\n } else {\r\n\r\n // NORMAL SERIES\r\n if (color) {\r\n series.fill = am4core.color(color);\r\n series.stroke = am4core.color(color);\r\n }\r\n series.strokeWidth = strokeWidth;\r\n if (series instanceof am4charts.ColumnSeries) {\r\n series.fillOpacity = 0.4;\r\n series.strokeWidth = 1; // keep this default of 1 ? Under evaluation\r\n }\r\n series.tooltipText = tooltipText || '[bold]' + name + ':[/] {valueY}';\r\n }\r\n\r\n // TOOLTIP STUFF\r\n series.tooltip = new Tooltip();\r\n series.tooltip.background.filters.clear(); // NO SHADOW\r\n series.tooltip.background.stroke = am4core.color(this.theme?.getRgb('bg'));\r\n if (defToolTipColor) {\r\n series.tooltip.getFillFromObject = false;\r\n series.tooltip.background.fill = am4core.color(this.theme?.getRgb('color'));\r\n series.tooltip.label.fill = am4core.color(this.theme?.getRgb('bg'));\r\n }\r\n\r\n chart.series.push(series);\r\n return series;\r\n\r\n }\r\n\r\n addSeriesPie(\r\n chart: PieChart,\r\n cat: string,\r\n value: string,\r\n colorAttr: string = '',\r\n color: string = '',\r\n withLabels: boolean = true,\r\n tooltipText: string = '',\r\n ): am4charts.PieSeries {\r\n const series = new am4charts.PieSeries();\r\n series.dataFields.category = cat;\r\n series.dataFields.value = value;\r\n\r\n series.slices.template.stroke = am4core.color(this.theme?.getRgb('bg'));\r\n series.slices.template.strokeWidth = 2;\r\n series.slices.template.strokeOpacity = 1;\r\n\r\n series.labels.template.disabled = !withLabels;\r\n series.labels.template.text = tooltipText || '[bold]{category}:[/] {value.percent.formatNumber(\\'#\\')}% ';\r\n series.labels.template.fill = am4core.color(this.theme?.getRgb('color'));\r\n series.ticks.template.stroke = am4core.color(this.theme?.getRgb('color'));\r\n series.ticks.template.strokeWidth = 2;\r\n\r\n // disable sliding out of slices\r\n // @ts-ignore\r\n series.slices.template.states.getKey('hover').properties.shiftRadius = 0;\r\n // @ts-ignore\r\n series.slices.template.states.getKey('hover').properties.scale = 1;\r\n\r\n if (colorAttr) {\r\n series.slices.template.propertyFields.fill = colorAttr;\r\n }\r\n\r\n if (color) {\r\n series.slices.template.fill = am4core.color(color);\r\n const cs = series.colors;\r\n cs.list = [am4core.color(new am4core.ColorSet().getIndex(0))];\r\n cs.stepOptions = {\r\n lightness: -0.05,\r\n hue: 0\r\n };\r\n cs.wrap = false;\r\n }\r\n\r\n // TOOLTIP STUFF\r\n series.slices.template.tooltipText = tooltipText || '[bold]{category}:[/] {value.percent.formatNumber(\\'#\\')}% ';\r\n series.tooltip = new Tooltip();\r\n series.tooltip.background.filters.clear(); // NO SHADOW\r\n series.tooltip.background.stroke = am4core.color(this.theme?.getRgb('bg'));\r\n\r\n chart.series.push(series);\r\n return series;\r\n }\r\n\r\n}\r\n","// SERVICES\r\nexport * from './_services/amcharts.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}