@agorapulse/ui-charts 20.1.6 → 20.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Binary file
@@ -1,5 +1,5 @@
1
1
  import * as Highcharts from 'highcharts';
2
- import { dateFormat, Chart, numberFormat } from 'highcharts';
2
+ import { numberFormat, setOptions, dateFormat, Chart } from 'highcharts';
3
3
  import * as i0 from '@angular/core';
4
4
  import { Input, ViewChild, Directive, Component, input, EventEmitter, Output, effect, ChangeDetectionStrategy, signal, afterNextRender } from '@angular/core';
5
5
  import { mapChart } from 'highcharts/highmaps';
@@ -237,6 +237,7 @@ class AbstractChartComponent {
237
237
  chartOptions = {}; // https://api.highcharts.com/highcharts/
238
238
  color = ChartColor.ElectricBlue;
239
239
  labelDateFormat = '%m/%d';
240
+ locale = 'en';
240
241
  series = [];
241
242
  chart;
242
243
  lastWidth = 0;
@@ -244,6 +245,7 @@ class AbstractChartComponent {
244
245
  if ((changes.series && !changes.series.firstChange) ||
245
246
  (changes.color && !changes.color.firstChange) ||
246
247
  (changes.chartOptions && !changes.chartOptions.firstChange) ||
248
+ (changes.locale && !changes.locale.firstChange) ||
247
249
  (changes.metricFormat && !changes.metricFormat.firstChange)) {
248
250
  this.initChart();
249
251
  }
@@ -260,7 +262,7 @@ class AbstractChartComponent {
260
262
  }
261
263
  }
262
264
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AbstractChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
263
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.3", type: AbstractChartComponent, isStandalone: true, inputs: { chartOptions: "chartOptions", color: "color", labelDateFormat: "labelDateFormat", series: "series" }, viewQueries: [{ propertyName: "chartRef", first: true, predicate: ["chart"], descendants: true }], usesOnChanges: true, ngImport: i0 });
265
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.3", type: AbstractChartComponent, isStandalone: true, inputs: { chartOptions: "chartOptions", color: "color", labelDateFormat: "labelDateFormat", locale: "locale", series: "series" }, viewQueries: [{ propertyName: "chartRef", first: true, predicate: ["chart"], descendants: true }], usesOnChanges: true, ngImport: i0 });
264
266
  }
265
267
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AbstractChartComponent, decorators: [{
266
268
  type: Directive
@@ -273,10 +275,55 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
273
275
  type: Input
274
276
  }], labelDateFormat: [{
275
277
  type: Input
278
+ }], locale: [{
279
+ type: Input
276
280
  }], series: [{
277
281
  type: Input
278
282
  }] } });
279
283
 
284
+ /**
285
+ * Builds Highcharts locale options (lang + tooltip date formats) from a locale string.
286
+ * Uses the browser's Intl API to generate translated month/weekday names and number formatting rules.
287
+ */
288
+ function buildHighchartsLocaleOptions(locale) {
289
+ const { decimalPoint, thousandsSep } = buildNumberSeparators(locale);
290
+ return {
291
+ lang: {
292
+ decimalPoint,
293
+ thousandsSep,
294
+ weekdays: buildWeekdays(locale),
295
+ shortMonths: buildShortMonths(locale),
296
+ },
297
+ tooltip: {
298
+ dateTimeLabelFormats: {
299
+ day: locale === 'en' ? '%A, %b %e, %Y' : '%A %e %b %Y',
300
+ week: locale === 'en' ? '%A, %b %e, %Y' : '%A %e %b %Y',
301
+ },
302
+ },
303
+ };
304
+ }
305
+ function buildNumberSeparators(locale) {
306
+ const parts = new Intl.NumberFormat(locale).formatToParts(12345.6);
307
+ const decimalPoint = parts.find(p => p.type === 'decimal')?.value ?? '.';
308
+ const thousandsSep = parts.find(p => p.type === 'group')?.value ?? ',';
309
+ return { decimalPoint, thousandsSep };
310
+ }
311
+ function buildWeekdays(locale) {
312
+ const formatter = new Intl.DateTimeFormat(locale, { weekday: 'long' });
313
+ // Jan 4, 1970 is a Sunday
314
+ return Array.from({ length: 7 }, (_, i) => {
315
+ const name = formatter.format(new Date(1970, 0, 4 + i));
316
+ return name.charAt(0).toUpperCase() + name.slice(1);
317
+ });
318
+ }
319
+ function buildShortMonths(locale) {
320
+ const formatter = new Intl.DateTimeFormat(locale, { month: 'short' });
321
+ return Array.from({ length: 12 }, (_, i) => {
322
+ const name = formatter.format(new Date(2000, i, 1));
323
+ return name.charAt(0).toUpperCase() + name.slice(1);
324
+ });
325
+ }
326
+
280
327
  class ChartOptions {
281
328
  static DEFAULT_DATE_FORMAT = '%A, %b %e, %Y';
282
329
  static DEFAULT_OPTIONS = {
@@ -365,10 +412,7 @@ class ChartOptions {
365
412
  backgroundColor: ChartColors.WHITE_COLOR,
366
413
  borderRadius: 4,
367
414
  borderWidth: 0,
368
- dateTimeLabelFormats: {
369
- day: ChartOptions.DEFAULT_DATE_FORMAT,
370
- week: ChartOptions.DEFAULT_DATE_FORMAT,
371
- },
415
+ dateTimeLabelFormats: {},
372
416
  shadow: {
373
417
  color: ChartColors.BLACK_COLOR,
374
418
  offsetX: 0,
@@ -408,6 +452,12 @@ class ChartOptions {
408
452
  text: undefined,
409
453
  },
410
454
  labels: {
455
+ formatter: function () {
456
+ if (typeof this.value === 'string') {
457
+ return this.value;
458
+ }
459
+ return numberFormat(this.value, -1);
460
+ },
411
461
  style: {
412
462
  color: ChartColors.GREY_COLORS[85],
413
463
  fontSize: '12px',
@@ -415,8 +465,10 @@ class ChartOptions {
415
465
  },
416
466
  },
417
467
  };
418
- static build(options) {
419
- return mergeDeep(ChartOptions.DEFAULT_OPTIONS, options);
468
+ static build(options, locale) {
469
+ const localeOptions = buildHighchartsLocaleOptions(locale);
470
+ setOptions({ lang: localeOptions.lang });
471
+ return mergeDeep(mergeDeep(ChartOptions.DEFAULT_OPTIONS, localeOptions), options);
420
472
  }
421
473
  static configure(series, options, color, labelDateFormat) {
422
474
  // Configure axis
@@ -550,7 +602,7 @@ function deepCopy(source) {
550
602
  }
551
603
 
552
604
  class ChartBarOptions extends ChartOptions {
553
- static buildBars(options, stacked, opposite) {
605
+ static buildBars(options, stacked, opposite, locale) {
554
606
  const bar = {
555
607
  maxPointWidth: 20,
556
608
  };
@@ -606,7 +658,7 @@ class ChartBarOptions extends ChartOptions {
606
658
  }
607
659
  },
608
660
  };
609
- return super.build(mergeDeep(defaultBarOptions, options));
661
+ return super.build(mergeDeep(defaultBarOptions, options), locale);
610
662
  }
611
663
  static configureBar(series, categories, options, opposite, color, labelDateFormat) {
612
664
  ChartOptions.configure(series, options, color, labelDateFormat);
@@ -656,7 +708,7 @@ class ChartBarComponent extends AbstractChartComponent {
656
708
  series = [];
657
709
  initChart() {
658
710
  if (this.series) {
659
- const chartOptions = ChartBarOptions.buildBars(this.chartOptions, this.stacked, this.opposite);
711
+ const chartOptions = ChartBarOptions.buildBars(this.chartOptions, this.stacked, this.opposite, this.locale);
660
712
  ChartBarOptions.configureBar(this.series, this.categories, chartOptions, this.opposite, this.color, this.labelDateFormat);
661
713
  this.chart = new Chart(this.chartRef.nativeElement, chartOptions);
662
714
  if (this.chart && this.stacked && !this.opposite) {
@@ -681,7 +733,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
681
733
  }] } });
682
734
 
683
735
  class ChartColumnOptions extends ChartOptions {
684
- static buildColumn(options, stacked) {
736
+ static buildColumn(options, stacked, locale) {
685
737
  const column = {
686
738
  borderWidth: 0,
687
739
  maxPointWidth: 20
@@ -715,7 +767,7 @@ class ChartColumnOptions extends ChartOptions {
715
767
  minTickInterval: 1,
716
768
  },
717
769
  };
718
- return super.build(mergeDeep(defaultColumnOptions, options));
770
+ return super.build(mergeDeep(defaultColumnOptions, options), locale);
719
771
  }
720
772
  }
721
773
 
@@ -725,7 +777,7 @@ class ChartColumnComponent extends AbstractChartComponent {
725
777
  chartInitialized = new EventEmitter();
726
778
  initChart() {
727
779
  if (this.series) {
728
- const chartOptions = ChartColumnOptions.buildColumn(this.chartOptions, this.stacked());
780
+ const chartOptions = ChartColumnOptions.buildColumn(this.chartOptions, this.stacked(), this.locale);
729
781
  ChartColumnOptions.configure(this.series, chartOptions, this.color, this.labelDateFormat);
730
782
  this.chart = new Chart(this.chartRef.nativeElement, chartOptions);
731
783
  if (this.chart && this.stacked()) {
@@ -768,7 +820,7 @@ const COLORS = {
768
820
  DEFAULT_FONT_COLOR: '#858FA1',
769
821
  };
770
822
  class ChartHeatmapOptions extends ChartOptions {
771
- static build(options) {
823
+ static build(options, locale) {
772
824
  const defaultHeatmapOptions = {
773
825
  chart: {
774
826
  type: 'heatmap',
@@ -828,7 +880,7 @@ class ChartHeatmapOptions extends ChartOptions {
828
880
  visible: true,
829
881
  },
830
882
  };
831
- return super.build(mergeDeep(defaultHeatmapOptions, options));
883
+ return super.build(mergeDeep(defaultHeatmapOptions, options), locale);
832
884
  }
833
885
  static createColorAxisFormatter(leastLabel, mostLabel) {
834
886
  return function () {
@@ -908,7 +960,7 @@ class ChartHeatmapComponent extends AbstractChartComponent {
908
960
  }, ...(ngDevMode ? [{ debugName: "legendLabelsEffect" }] : []));
909
961
  initChart() {
910
962
  if (this.series && this.chartRef) {
911
- const chartOptions = ChartHeatmapOptions.build(this.chartOptions);
963
+ const chartOptions = ChartHeatmapOptions.build(this.chartOptions, this.locale);
912
964
  ChartHeatmapOptions.configureHeatmap(this.categoriesX, this.categoriesY, this.series, chartOptions, this.color, this.legendLabels()?.least, this.legendLabels()?.most, this.labelDateFormat);
913
965
  mapChart(this.chartRef.nativeElement, chartOptions);
914
966
  }
@@ -960,7 +1012,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
960
1012
  }] } });
961
1013
 
962
1014
  class ChartMixedOptions extends ChartOptions {
963
- static buildMixed(options, singleDayEnabled) {
1015
+ static buildMixed(options, singleDayEnabled, locale) {
964
1016
  const defaultOptions = {
965
1017
  chart: {
966
1018
  type: 'column',
@@ -995,7 +1047,7 @@ class ChartMixedOptions extends ChartOptions {
995
1047
  type: 'datetime',
996
1048
  },
997
1049
  };
998
- return super.build(mergeDeep(defaultOptions, options));
1050
+ return super.build(mergeDeep(defaultOptions, options), locale);
999
1051
  }
1000
1052
  }
1001
1053
 
@@ -1004,7 +1056,7 @@ class ChartMixedComponent extends AbstractChartComponent {
1004
1056
  initChart() {
1005
1057
  if (this.series) {
1006
1058
  const singleDayEnabled = this.series.find(serie => serie.type === 'spline')?.data?.length === 1;
1007
- const chartOptions = ChartMixedOptions.buildMixed(this.chartOptions, singleDayEnabled);
1059
+ const chartOptions = ChartMixedOptions.buildMixed(this.chartOptions, singleDayEnabled, this.locale);
1008
1060
  ChartMixedOptions.configure(this.series, chartOptions, this.color, this.labelDateFormat);
1009
1061
  this.chart = new Chart(this.chartRef.nativeElement, chartOptions);
1010
1062
  if (this.chart) {
@@ -1026,7 +1078,7 @@ const NAME_MAX_LENGTH = 30;
1026
1078
  const RIGHT_TO_LEFT_CHARACTERS = /[\p{Script=Arabic}\p{Script=Hebrew}\p{Script=Syriac}\p{Script=Thaana}\p{Script=Nko}\p{Script=Samaritan}\p{Script=Mandaic}]/u; // Hebrew, Arabic, and other RTL characters
1027
1079
  const RIGHT_TO_LEFT_EMBEDDING_CHARACTER = '\u202B'; // Right-to-left embedding character
1028
1080
  class ChartPieOptions extends ChartOptions {
1029
- static buildPie(options, innerLabels, metricFormat) {
1081
+ static buildPie(options, innerLabels, metricFormat, locale) {
1030
1082
  const defaultPieOptions = {
1031
1083
  chart: {
1032
1084
  type: 'pie',
@@ -1059,7 +1111,7 @@ class ChartPieOptions extends ChartOptions {
1059
1111
  ? this.name.substring(0, NAME_MAX_LENGTH) + '...'
1060
1112
  : this.name;
1061
1113
  const displayValue = metricFormat === 'percentage'
1062
- ? Math.round((this.percentage ?? 0) * 10) / 10 + '%'
1114
+ ? numberFormat(Math.round((this.percentage ?? 0) * 10) / 10, 1) + '%'
1063
1115
  : numberFormat(this.y ?? 0, -1);
1064
1116
  // Add right-to-left embedding character only if the first character is a right-to-left character
1065
1117
  const prefix = RIGHT_TO_LEFT_CHARACTERS.test(this.name.charAt(0))
@@ -1090,7 +1142,7 @@ class ChartPieOptions extends ChartOptions {
1090
1142
  }
1091
1143
  : {},
1092
1144
  };
1093
- return super.build(mergeDeep(defaultPieOptions, options));
1145
+ return super.build(mergeDeep(defaultPieOptions, options), locale);
1094
1146
  }
1095
1147
  static configurePie(series, options, colors, labelDateFormat, innerLabels, mouseEventEnabled = true) {
1096
1148
  super.configure(series, options, undefined, labelDateFormat);
@@ -1208,7 +1260,7 @@ class ChartPieComponent extends AbstractChartComponent {
1208
1260
  initChart() {
1209
1261
  if (this.series) {
1210
1262
  const dataAvailable = this.series[0]?.data && this.series[0].data.length > 0;
1211
- const chartOptions = ChartPieOptions.buildPie(this.chartOptions, this.innerLabels, this.metricFormat());
1263
+ const chartOptions = ChartPieOptions.buildPie(this.chartOptions, this.innerLabels, this.metricFormat(), this.locale);
1212
1264
  // Add placeholder series when there's no data
1213
1265
  const updatedSeries = dataAvailable
1214
1266
  ? this.series
@@ -1252,7 +1304,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
1252
1304
  }] } });
1253
1305
 
1254
1306
  class ChartSplineOptions extends ChartOptions {
1255
- static buildSpline(options, singleDayEnabled) {
1307
+ static buildSpline(options, singleDayEnabled, locale) {
1256
1308
  const defaultSplineOptions = {
1257
1309
  chart: {
1258
1310
  type: 'spline',
@@ -1271,7 +1323,7 @@ class ChartSplineOptions extends ChartOptions {
1271
1323
  type: 'datetime',
1272
1324
  },
1273
1325
  };
1274
- return super.build(mergeDeep(defaultSplineOptions, options));
1326
+ return super.build(mergeDeep(defaultSplineOptions, options), locale);
1275
1327
  }
1276
1328
  }
1277
1329
 
@@ -1280,7 +1332,7 @@ class ChartSplineComponent extends AbstractChartComponent {
1280
1332
  chartInitialized = new EventEmitter();
1281
1333
  initChart() {
1282
1334
  if (this.series) {
1283
- const chartOptions = ChartSplineOptions.buildSpline(this.chartOptions, this.series[0]?.data?.length === 1);
1335
+ const chartOptions = ChartSplineOptions.buildSpline(this.chartOptions, this.series[0]?.data?.length === 1, this.locale);
1284
1336
  ChartSplineOptions.configure(this.series, chartOptions, this.color, this.labelDateFormat);
1285
1337
  this.chart = new Chart(this.chartRef.nativeElement, chartOptions);
1286
1338
  this.chartInitialized.emit(this.chart);
@@ -1 +1 @@
1
- {"version":3,"file":"agorapulse-ui-charts.mjs","sources":["../../../libs/ui-charts/src/lib/highcharts-border-radius-plugin.ts","../../../libs/ui-charts/src/lib/chart-colors.ts","../../../libs/ui-charts/src/lib/abstract-chart.component.ts","../../../libs/ui-charts/src/lib/chart-options.ts","../../../libs/ui-charts/src/lib/chart-bar/chart-bar-options.model.ts","../../../libs/ui-charts/src/lib/chart-bar/chart-bar.component.ts","../../../libs/ui-charts/src/lib/chart-bar/chart-bar.component.html","../../../libs/ui-charts/src/lib/chart-column/chart-column-options.model.ts","../../../libs/ui-charts/src/lib/chart-column/chart-column.component.ts","../../../libs/ui-charts/src/lib/chart-column/chart-column.component.html","../../../libs/ui-charts/src/lib/chart-heatmap/chart-heatmap-options.model.ts","../../../libs/ui-charts/src/lib/chart-heatmap/chart-heatmap.component.ts","../../../libs/ui-charts/src/lib/chart-heatmap/chart-heatmap.component.html","../../../libs/ui-charts/src/lib/chart-metric.ts","../../../libs/ui-charts/src/lib/chart-metrics-list/chart-metrics-list.component.ts","../../../libs/ui-charts/src/lib/chart-metrics-list/chart-metrics-list.component.html","../../../libs/ui-charts/src/lib/chart-mixed/chart-mixed-options.model.ts","../../../libs/ui-charts/src/lib/chart-mixed/chart-mixed.component.ts","../../../libs/ui-charts/src/lib/chart-mixed/chart-mixed.component.html","../../../libs/ui-charts/src/lib/chart-pie/chart-pie-options.model.ts","../../../libs/ui-charts/src/lib/chart-pie/chart-pie.component.ts","../../../libs/ui-charts/src/lib/chart-pie/chart-pie.component.html","../../../libs/ui-charts/src/lib/chart-spline/chart-spline-options.model.ts","../../../libs/ui-charts/src/lib/chart-spline/chart-spline.component.ts","../../../libs/ui-charts/src/lib/chart-spline/chart-spline.component.html","../../../libs/ui-charts/index.ts","../../../libs/ui-charts/agorapulse-ui-charts.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\nexport const borderRadiusPlugin = function (H: any) {\n if (H.borderRadiusPlugininitialized) {\n return;\n }\n H.borderRadiusPlugininitialized = true;\n\n H.wrap(H.seriesTypes.column.prototype, 'translate', function (proceed: any) {\n // @ts-ignore\n const options = this.options;\n const topMargin = options.topMargin || 0;\n const bottomMargin = options.bottomMargin || 0;\n const borderRadiusTopLeftSettings = options.borderRadiusTopLeft;\n const borderRadiusTopRightSettings = options.borderRadiusTopRight;\n const borderRadiusBottomLeftSettings = options.borderRadiusBottomLeft;\n const borderRadiusBottomRightSettings = options.borderRadiusBottomRight;\n // @ts-ignore\n proceed.call(this);\n\n // @ts-ignore\n if (!this.points) {\n return;\n }\n\n if (\n borderRadiusTopLeftSettings ||\n borderRadiusTopRightSettings ||\n borderRadiusBottomLeftSettings ||\n borderRadiusBottomRightSettings\n ) {\n // @ts-ignore\n this.points.forEach(function (point) {\n roundPoint(\n borderRadiusTopLeftSettings,\n borderRadiusTopRightSettings,\n borderRadiusBottomLeftSettings,\n borderRadiusBottomRightSettings,\n point,\n H,\n topMargin,\n bottomMargin\n );\n });\n }\n });\n};\n\nfunction roundPoint(\n borderRadiusTopLeftSettings: string | any[],\n borderRadiusTopRightSettings: string | any[],\n borderRadiusBottomLeftSettings: string | any[],\n borderRadiusBottomRightSettings: string | any[],\n point: { shapeArgs: { width?: any; height?: any; x?: any; y?: any; d?: any[] }; index: string | number; dlBox: any; shapeType: string },\n H: { relativeLength: (arg0: any, arg1: any) => any },\n topMargin: any,\n bottomMargin: any\n) {\n const w = point.shapeArgs.width;\n const h = point.shapeArgs.height;\n const x = point.shapeArgs.x;\n const y = point.shapeArgs.y;\n const borderRadiusTopLeft = borderRadiusTopLeftSettings?.length\n ? (borderRadiusTopLeftSettings as any)[point.index]\n : borderRadiusTopLeftSettings || 0;\n const borderRadiusTopRight = borderRadiusTopRightSettings?.length\n ? (borderRadiusTopRightSettings as any)[point.index]\n : borderRadiusTopRightSettings || 0;\n const borderRadiusBottomLeft = borderRadiusBottomLeftSettings?.length\n ? (borderRadiusBottomLeftSettings as any)[point.index]\n : borderRadiusBottomLeftSettings || 0;\n const borderRadiusBottomRight = borderRadiusBottomRightSettings?.length\n ? (borderRadiusBottomRightSettings as any)[point.index]\n : borderRadiusBottomRightSettings || 0;\n\n let radiusTopLeft = H.relativeLength(borderRadiusTopLeft, w);\n let radiusTopRight = H.relativeLength(borderRadiusTopRight, w);\n let radiusBottomRight = H.relativeLength(borderRadiusBottomRight, w);\n let radiusBottomLeft = H.relativeLength(borderRadiusBottomLeft, w);\n\n const maxR = Math.min(w, h) / 2;\n\n radiusTopLeft = radiusTopLeft > maxR ? maxR : radiusTopLeft;\n radiusTopRight = radiusTopRight > maxR ? maxR : radiusTopRight;\n radiusBottomRight = radiusBottomRight > maxR ? maxR : radiusBottomRight;\n radiusBottomLeft = radiusBottomLeft > maxR ? maxR : radiusBottomLeft;\n\n point.dlBox = point.shapeArgs;\n\n point.shapeType = 'path';\n point.shapeArgs = {\n d: [\n 'M',\n x + radiusTopLeft,\n y + topMargin,\n 'L',\n x + w - radiusTopRight,\n y + topMargin,\n 'C',\n x + w - radiusTopRight / 2,\n y,\n x + w,\n y + radiusTopRight / 2,\n x + w,\n y + radiusTopRight,\n 'L',\n x + w,\n y + h - radiusBottomRight,\n 'C',\n x + w,\n y + h - radiusBottomRight / 2,\n x + w - radiusBottomRight / 2,\n y + h,\n x + w - radiusBottomRight,\n y + h + bottomMargin,\n 'L',\n x + radiusBottomLeft,\n y + h + bottomMargin,\n 'C',\n x + radiusBottomLeft / 2,\n y + h,\n x,\n y + h - radiusBottomLeft / 2,\n x,\n y + h - radiusBottomLeft,\n 'L',\n x,\n y + radiusTopLeft,\n 'C',\n x,\n y + radiusTopLeft / 2,\n x + radiusTopLeft / 2,\n y,\n x + radiusTopLeft,\n y,\n 'Z',\n ],\n };\n}\n","export enum ChartColor {\n Grey,\n Orange,\n SoftBlue,\n ElectricBlue,\n Purple,\n Green,\n}\n\nexport class ChartColors {\n static readonly SOFT_BLUE_COLORS = {\n '10': '#EFF5FC',\n '20': '#DFEDFA',\n '40': '#C0DBF4',\n '60': '#A0C8EF',\n '85': '#78B1E8',\n '100': '#61A4E4',\n '150': '#2873BA',\n };\n static readonly ELECTRIC_BLUE_COLORS = {\n '10': '#e8f4ff',\n '20': '#d1e8ff',\n '40': '#a2d1ff',\n '60': '#74bbfe',\n '85': '#3a9efe',\n '100': '#178dfe',\n '150': '#0e72d6',\n };\n static readonly ORANGE_COLORS = {\n '10': '#FFEFE9',\n '20': '#FFE1D4',\n '40': '#FFC2A8',\n '60': '#FFA47D',\n '85': '#FF7E46',\n '100': '#FF6726',\n '150': '#C83E07',\n };\n static readonly GREEN_COLORS = {\n '10': '#ECF7ED',\n '20': '#DAF1DD',\n '40': '#B5E3BB',\n '60': '#8FD498',\n '85': '#61C26D',\n '100': '#45B854',\n '150': '#0F821D',\n };\n static readonly PURPLE_COLORS = {\n '10': '#EFEDF8',\n '20': '#E0DDF2',\n '40': '#C1BBE6',\n '60': '#A398D9',\n '85': '#7C6DC9',\n '100': '#6554C0',\n '150': '#3C2C95',\n };\n static readonly GREY_COLORS = {\n '5': '#F5F5F7',\n '10': '#EAECEF',\n '20': '#D6DAE0',\n '40': '#AEB5C1',\n '60': '#858FA1',\n '85': '#5D6A82',\n '100': '#344563',\n '150': '#212E44',\n };\n\n static readonly RED_COLORS = {\n '80': '#F17171',\n '150': '#D80505'\n };\n\n static readonly SOFT_RED_COLORS = {\n 100: '#ff5353',\n 85: '#ff6d6d',\n 60: '#ff9898',\n 10: '#fff9f9',\n };\n\n static readonly BLACK_COLOR: string = '#000000';\n static readonly LIMIT_COLOR: string = '#E81313';\n static readonly WHITE_COLOR: string = '#FFFFFF';\n\n static getChartColors(color: ChartColor | undefined): { [shade: string]: string } {\n switch (color) {\n case ChartColor.Orange:\n return this.ORANGE_COLORS;\n case ChartColor.SoftBlue:\n return this.SOFT_BLUE_COLORS;\n case ChartColor.ElectricBlue:\n return this.ELECTRIC_BLUE_COLORS;\n case ChartColor.Purple:\n return this.PURPLE_COLORS;\n case ChartColor.Green:\n return this.GREEN_COLORS;\n default:\n return this.GREY_COLORS;\n }\n }\n\n static getColors(seriesCount: number, color: ChartColor | undefined): string[] {\n const colors = this.getChartColors(color);\n switch (seriesCount) {\n case 1:\n return [colors[100]];\n case 2:\n return [colors[40], colors[100]];\n case 3:\n return [colors[20], colors[60], colors[100]];\n case 4:\n return [colors[20], colors[40], colors[60], colors[100]];\n case 5:\n return [colors[20], colors[40], colors[60], colors[100], colors[150]];\n default:\n return [colors[20], colors[40], colors[60], colors[85], colors[100], colors[150]];\n }\n }\n}\n","import { AfterViewChecked, Directive, ElementRef, Input, OnChanges, SimpleChanges, ViewChild } from '@angular/core';\nimport { Chart, Options, SeriesOptions } from 'highcharts';\nimport { ChartColor } from './chart-colors';\n\n@Directive() // Required since Angular10 for DI to work (must be decorated to use Angular features)\nexport abstract class AbstractChartComponent implements AfterViewChecked, OnChanges {\n @ViewChild('chart') chartRef!: ElementRef;\n\n @Input() chartOptions: Options = {}; // https://api.highcharts.com/highcharts/\n @Input() color: ChartColor = ChartColor.ElectricBlue;\n @Input() labelDateFormat = '%m/%d';\n @Input() series: SeriesOptions[] = [];\n\n protected chart!: Chart;\n private lastWidth = 0;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n (changes.series && !changes.series.firstChange) ||\n (changes.color && !changes.color.firstChange) ||\n (changes.chartOptions && !changes.chartOptions.firstChange) ||\n (changes.metricFormat && !changes.metricFormat.firstChange)\n ) {\n this.initChart();\n }\n }\n\n ngAfterViewChecked(): void {\n if (this.chartRef && (this.chartRef.nativeElement.clientWidth !== this.lastWidth || this.lastWidth === 0)) {\n this.lastWidth = this.chartRef.nativeElement.clientWidth;\n if (this.chart) {\n this.chart.reflow();\n } else if (this.series && this.series.length) {\n this.initChart();\n }\n }\n }\n\n abstract initChart(): void;\n}\n","import { Chart, dateFormat, Options, Series, SeriesOptionsType } from 'highcharts';\nimport { ChartColor, ChartColors } from './chart-colors';\nimport { SeriesRoundedColumnOptions } from './highchart-series.model';\n\nexport class ChartOptions {\n static readonly DEFAULT_DATE_FORMAT: string = '%A, %b %e, %Y';\n static readonly DEFAULT_OPTIONS: Options = {\n /*lang: {\n decimalPoint: (manager && manager.locale !== 'en') ? ',' : '.',\n resetZoom: resetZoomLabel,\n resetZoomTitle: resetZoomHtmlTitle,\n shortMonths: [\n shortJanuary, shortFebruary, shortMarch, shortApril, shortMay, shortJune,\n shortJuly, shortAugust, shortSeptember, shortOctober, shortNovember, shortDecember\n ],\n thousandsSep: (manager && manager.locale !== 'en') ? ' ' : ',',\n weekdays: this.weekDays,\n zoomIn: zoomInHtmlTitle,\n zoomOut: zoomOutHtmlTitle\n },*/\n chart: {\n spacingRight: 20,\n zooming: {\n type: 'xy',\n resetButton: {\n theme: {\n fill: ChartColors.WHITE_COLOR,\n r: 4,\n style: {\n color: ChartColors.GREY_COLORS[100],\n fontSize: '12px',\n },\n states: {\n hover: {\n fill: ChartColors.GREY_COLORS[5],\n },\n },\n },\n },\n },\n panning: {\n enabled: true,\n },\n panKey: 'shift',\n style: {\n fontFamily: \"Averta, 'Open Sans', Helvetica, sans-serif\",\n },\n },\n colorAxis: {\n labels: {\n style: {\n color: ChartColors.GREY_COLORS[60],\n },\n },\n },\n credits: {\n enabled: false,\n },\n legend: {\n borderWidth: 0,\n itemStyle: {\n color: ChartColors.GREY_COLORS[60],\n fontSize: '14px',\n fontWeight: 'normal',\n },\n itemHoverStyle: {\n color: ChartColors.GREY_COLORS[100],\n fontWeight: 'bold',\n },\n },\n plotOptions: {\n series: {\n states: {\n hover: {\n brightness: 0,\n },\n },\n connectNulls: true,\n },\n },\n navigation: {\n buttonOptions: {\n y: 0,\n },\n },\n title: {\n text: undefined,\n },\n tooltip: {\n backgroundColor: ChartColors.WHITE_COLOR,\n borderRadius: 4,\n borderWidth: 0,\n dateTimeLabelFormats: {\n day: ChartOptions.DEFAULT_DATE_FORMAT,\n week: ChartOptions.DEFAULT_DATE_FORMAT,\n },\n shadow: {\n color: ChartColors.BLACK_COLOR,\n offsetX: 0,\n offsetY: 2,\n opacity: 0.02,\n width: 6,\n },\n split: false,\n shared: true,\n useHTML: true,\n headerFormat:\n `<div style=\"border-bottom: 1px solid ${ChartColors.GREY_COLORS[10]}; padding: 0 8px 7px\">` +\n `<span style=\"font-size: 12px; color: ${ChartColors.GREY_COLORS[60]}\">{point.key}</span></div>`,\n pointFormat:\n `<div style=\"font-size: 14px; color: ${ChartColors.GREY_COLORS[100]}; margin: 6px 8px 0 8px;\">` +\n '<span style=\"color:{point.color}\">\\u25CF</span> {series.name}: <b>{point.y}</b> {point.custom.details}</div>',\n },\n xAxis: {\n gridLineColor: ChartColors.GREY_COLORS[10],\n lineColor: ChartColors.GREY_COLORS[10],\n tickColor: ChartColors.GREY_COLORS[10],\n gridLineWidth: 1,\n title: {\n text: null,\n },\n labels: {\n style: {\n color: ChartColors.GREY_COLORS[85],\n fontSize: '12px',\n },\n },\n },\n yAxis: {\n allowDecimals: false,\n gridLineColor: ChartColors.GREY_COLORS[10],\n lineColor: ChartColors.GREY_COLORS[10],\n gridLineWidth: 1,\n title: {\n text: undefined,\n },\n labels: {\n style: {\n color: ChartColors.GREY_COLORS[85],\n fontSize: '12px',\n },\n },\n },\n };\n\n static build(options: Options): Options {\n return mergeDeep(ChartOptions.DEFAULT_OPTIONS, options);\n }\n\n static configure(series: SeriesOptionsType[], options: Options, color: ChartColor | undefined, labelDateFormat?: string) {\n // Configure axis\n options.xAxis = mergeDeep(\n {\n labels: {\n formatter: function (): string {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return dateFormat(labelDateFormat ?? '%m/%d', this.value);\n },\n },\n //minTickInterval: 24 * 60 * 60 * 1000 // One day\n },\n options.xAxis\n );\n // Configure series\n if (series?.length) {\n options.series = series;\n if (options.legend) {\n options.legend.enabled = options.legend.enabled ?? series.length >= 2;\n }\n options.colors = ChartColors.getColors(series.length, color);\n }\n }\n\n static redrawWithHighestEdgesRounded(chart: Chart): void {\n chart.series.forEach((serie, serieIndex: number, arr) => {\n ChartOptions.roundHighestSerie(arr, serie.options as SeriesRoundedColumnOptions, serieIndex);\n });\n chart.redraw(true);\n }\n\n static roundHighestSerie(series: Series[], serie: SeriesRoundedColumnOptions, serieIndex: number): void {\n const roundedTopMap: number[] = [];\n const roundedBottomMap: number[] = [];\n if (serie.data) {\n serie.data.forEach((point, columnIndex) => {\n const pointValue = ChartOptions.getPointValue(point);\n const pointX = ChartOptions.getPointX(point);\n const isNegative = pointValue !== null && pointValue < 0;\n\n if (isNegative) {\n // Negative bars go downward: the visual tip is the physical bottom.\n // Round bottom corners if no higher-index visible series has a negative value here\n // (meaning this series is the bottommost segment of the negative stack).\n const isBottommost = series.slice(serieIndex + 1).every(otherSerie => {\n if (!otherSerie.visible) return true;\n const otherPoint = ChartOptions.findPointAtAbscissa(\n (otherSerie.options as SeriesRoundedColumnOptions).data,\n pointX,\n columnIndex\n );\n if (otherPoint === undefined) return true;\n const val = ChartOptions.getPointValue(otherPoint);\n return val === null || val >= 0;\n });\n roundedTopMap[columnIndex] = 0;\n roundedBottomMap[columnIndex] = isBottommost ? 100 : 0;\n } else {\n // Positive bars go upward: the visual tip is the physical top.\n // Round top corners if all lower-index visible series are 0/missing here\n // (meaning this series is the topmost segment of the positive stack).\n const isTopmost = series.slice(0, serieIndex).every(otherSerie => {\n if (!otherSerie.visible) return true;\n const otherPoint = ChartOptions.findPointAtAbscissa(\n (otherSerie.options as SeriesRoundedColumnOptions).data,\n pointX,\n columnIndex\n );\n return otherPoint === undefined || ChartOptions.getPointValue(otherPoint) === 0;\n });\n roundedTopMap[columnIndex] = isTopmost ? 100 : 0;\n roundedBottomMap[columnIndex] = 0;\n }\n });\n serie.borderRadiusTopLeft = roundedTopMap;\n serie.borderRadiusTopRight = roundedTopMap;\n serie.borderRadiusBottomLeft = roundedBottomMap;\n serie.borderRadiusBottomRight = roundedBottomMap;\n }\n }\n\n private static getPointX(point: unknown): number | null {\n if (Array.isArray(point)) return point[0] as number;\n if (point && typeof point === 'object') return (point as { x?: number }).x ?? null;\n return null;\n }\n\n private static findPointAtAbscissa(data: unknown[] | undefined, x: number | null, fallbackIndex: number): unknown {\n if (!data) return undefined;\n if (x !== null) {\n return data.find(p => ChartOptions.getPointX(p) === x);\n }\n return data[fallbackIndex];\n }\n\n private static getPointValue(point: unknown): number | null {\n if (typeof point === 'number') return point;\n if (Array.isArray(point)) return point[1] as number;\n if (point && typeof point === 'object') return (point as { y?: number }).y ?? null;\n return null;\n }\n}\n\nexport function isObject(item: any) {\n return item && typeof item === 'object' && !Array.isArray(item);\n}\n\nexport function mergeDeep(target: any, source: any) {\n const output = deepCopy(target);\n if (isObject(target) && isObject(source)) {\n Object.keys(source).forEach(key => {\n if (isObject(source[key])) {\n if (!(key in target)) Object.assign(output, { [key]: source[key] });\n else output[key] = mergeDeep(target[key], source[key]);\n } else {\n Object.assign(output, { [key]: source[key] });\n }\n });\n }\n return output;\n}\n\nfunction deepCopy(source: any) {\n if (typeof source !== 'object' || source === null) {\n return source; // Return the value if source is not an object\n }\n // Create an array or object to hold the values\n const newObject = Array.isArray(source) ? [] : {};\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n // Recursively (deep) copy for nested objects, including arrays\n (newObject as any)[key] = deepCopy(source[key]);\n }\n }\n return newObject;\n}\n","import { Options, PlotBarOptions, SeriesBarOptions, XAxisOptions, YAxisOptions } from 'highcharts';\nimport { ChartOptions, mergeDeep } from '../chart-options';\nimport { ChartColor } from './../chart-colors';\nimport { SeriesRoundedBarOptions } from './../highchart-series.model';\n\nexport class ChartBarOptions extends ChartOptions {\n static buildBars(options: Options, stacked: boolean, opposite: boolean): Options {\n const bar: PlotBarOptions = {\n maxPointWidth: 20,\n }\n if (stacked && !opposite) {\n bar.stacking = 'normal';\n bar.events = {\n hide(): void {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n },\n show(): void {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n },\n };\n } else {\n bar.borderRadius = 100;\n }\n\n const defaultBarOptions: Options = {\n chart: {\n type: 'bar',\n },\n legend: {\n symbolHeight: 10,\n },\n xAxis: {\n categories: undefined,\n gridLineWidth: 0,\n lineWidth: 0,\n reversed: false,\n tickWidth: 0,\n labels: {\n align: 'center',\n formatter(): string {\n if (this.value && this.value.toString().length > 16) {\n return this.value.toString().substring(0, 15) + '...';\n }\n return this.value.toString();\n },\n style: {\n width: 100,\n },\n },\n type: 'category',\n },\n yAxis: {\n type: 'linear',\n minTickInterval: 1,\n },\n plotOptions: {\n bar,\n series: {\n borderWidth: 0,\n }\n },\n };\n return super.build(mergeDeep(defaultBarOptions, options));\n }\n\n static configureBar(\n series: SeriesBarOptions[],\n categories: string[],\n options: Options,\n opposite: boolean,\n color: ChartColor,\n labelDateFormat?: string\n ): void {\n ChartOptions.configure(series, options, color, labelDateFormat);\n if (categories && categories.length) {\n (options.xAxis as XAxisOptions).categories = categories;\n }\n if (opposite && series.length === 2) {\n const negativeSerie = series[0] as SeriesRoundedBarOptions;\n negativeSerie.borderRadiusBottomLeft = 100;\n negativeSerie.borderRadiusBottomRight = 100;\n negativeSerie.borderRadiusTopLeft = 0;\n negativeSerie.borderRadiusTopRight = 0;\n negativeSerie.data = negativeSerie.data?.map((point: any) => {\n if (point && isNaN(point)) {\n return {\n ...point,\n y: -Math.abs(point.y),\n };\n } else if (!isNaN(point)) {\n return -Math.abs(point);\n }\n return point;\n });\n if (options.plotOptions?.series) {\n options.plotOptions.series.stacking = 'normal';\n }\n const yAxisLabels = (options.yAxis as YAxisOptions).labels;\n if (yAxisLabels) {\n yAxisLabels.formatter = function (): string {\n return Math.abs(+this.value) + '%';\n };\n }\n if (options.tooltip) {\n options.tooltip.pointFormatter = function (): string {\n return `<div style=\"font-size: 14px; color: #344563; margin: 6px 8px 0 8px;\"><span style=\"color:${\n this.color\n };\">\\u25CF</span> ${this.series.name}: <b>${Math.abs(this.y ?? 0) + '%'}</b></div>`;\n };\n }\n }\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Chart, SeriesBarOptions } from 'highcharts';\nimport { ChartOptions } from '../../..';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartBarOptions } from './chart-bar-options.model';\n\n@Component({\n selector: 'ap-chart-bar',\n templateUrl: './chart-bar.component.html',\n standalone: true,\n})\nexport class ChartBarComponent extends AbstractChartComponent {\n @Input() categories: string[] = [];\n @Input() opposite: boolean = false;\n @Input() stacked: boolean = false;\n @Input() override series: SeriesBarOptions[] = [];\n\n initChart(): void {\n if (this.series) {\n const chartOptions = ChartBarOptions.buildBars(this.chartOptions, this.stacked, this.opposite);\n ChartBarOptions.configureBar(this.series, this.categories, chartOptions, this.opposite, this.color, this.labelDateFormat);\n this.chart = new Chart(this.chartRef.nativeElement, chartOptions);\n if (this.chart && this.stacked && !this.opposite) {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n }\n }\n }\n}\n","<div #chart></div>\n","import { Options, PlotColumnOptions } from 'highcharts';\nimport { ChartOptions, mergeDeep } from '../chart-options';\n\nexport class ChartColumnOptions extends ChartOptions {\n static buildColumn(options: Options, stacked: boolean): Options {\n const column: PlotColumnOptions = {\n borderWidth: 0,\n maxPointWidth: 20\n }\n if (stacked) {\n column.stacking = 'normal';\n column.events = {\n hide(): void {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n },\n show(): void {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n },\n };\n } else {\n column.borderRadius = 100;\n }\n\n const defaultColumnOptions: Options = {\n chart: {\n type: 'column',\n },\n legend: {\n symbolHeight: 10,\n },\n plotOptions: {\n column,\n },\n xAxis: {\n type: 'datetime',\n minTickInterval: 1,\n },\n };\n return super.build(mergeDeep(defaultColumnOptions, options));\n }\n}\n","import { Component, EventEmitter, input, Input, Output } from '@angular/core';\nimport { Chart, SeriesColumnOptions } from 'highcharts';\nimport { ChartOptions } from '../../..';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartColumnOptions } from './chart-column-options.model';\n\n@Component({\n selector: 'ap-chart-column',\n templateUrl: './chart-column.component.html',\n standalone: true,\n})\nexport class ChartColumnComponent extends AbstractChartComponent {\n @Input() override series: SeriesColumnOptions[] = [];\n stacked = input<boolean>(false);\n @Output() chartInitialized: EventEmitter<Chart> = new EventEmitter();\n\n initChart(): void {\n if (this.series) {\n const chartOptions = ChartColumnOptions.buildColumn(this.chartOptions, this.stacked());\n ChartColumnOptions.configure(this.series, chartOptions, this.color, this.labelDateFormat);\n this.chart = new Chart(this.chartRef.nativeElement, chartOptions);\n if (this.chart && this.stacked()) {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n }\n this.chartInitialized.emit(this.chart);\n }\n }\n}\n","<div #chart></div>\n","import type {\n AxisLabelsFormatterCallbackFunction,\n ColorAxisOptions,\n Options,\n SeriesLineOptions,\n SeriesOptionsType,\n XAxisOptions,\n YAxisOptions,\n} from 'highcharts';\nimport { ChartColor, ChartColors } from '../chart-colors';\nimport { ChartOptions, mergeDeep } from '../chart-options';\n\nconst HEATMAP_CONSTANTS = {\n CHART_HEIGHT: 680,\n GRID_LINE_WIDTH: 2,\n BORDER_WIDTH: 1,\n FONT_SIZE: '13px',\n HEADER_FONT_SIZE: '12px',\n TOOLTIP_FONT_SIZE: '14px',\n LEGEND_SYMBOL_WIDTH: 300,\n LEGEND_SYMBOL_HEIGHT: 10,\n TICK_INTERVAL: 3,\n DEFAULT_TICK_AMOUNT: 6,\n DEFAULT_MAX_VALUE: 3,\n MIN_VALUE: 0,\n FONT_WEIGHT: 'normal',\n} as const;\n\nconst COLORS = {\n WHITE: '#FFFFFF',\n GRID_LINE: 'white',\n NULL_COLOR: 'white',\n DEFAULT_FONT_COLOR: '#858FA1',\n} as const;\n\nexport class ChartHeatmapOptions extends ChartOptions {\n static override build(options: Options): Options {\n const defaultHeatmapOptions: Options = {\n chart: {\n type: 'heatmap',\n height: HEATMAP_CONSTANTS.CHART_HEIGHT,\n },\n colorAxis: {\n allowDecimals: false,\n gridLineWidth: HEATMAP_CONSTANTS.GRID_LINE_WIDTH,\n gridLineColor: COLORS.GRID_LINE,\n min: HEATMAP_CONSTANTS.MIN_VALUE,\n minColor: COLORS.WHITE,\n labels: {\n style: {\n fontWeight: HEATMAP_CONSTANTS.FONT_WEIGHT,\n fontSize: HEATMAP_CONSTANTS.FONT_SIZE,\n color: COLORS.DEFAULT_FONT_COLOR,\n },\n overflow: 'allow',\n },\n },\n legend: {\n enabled: true,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'bottom',\n symbolWidth: HEATMAP_CONSTANTS.LEGEND_SYMBOL_WIDTH,\n symbolHeight: HEATMAP_CONSTANTS.LEGEND_SYMBOL_HEIGHT,\n },\n plotOptions: {\n heatmap: {\n borderColor: ChartColors.GREY_COLORS[10],\n borderWidth: HEATMAP_CONSTANTS.BORDER_WIDTH,\n nullColor: COLORS.NULL_COLOR,\n },\n },\n tooltip: {\n headerFormat: '',\n pointFormat:\n `<div style=\"border-bottom: 1px solid ${ChartColors.GREY_COLORS[10]}; padding: 0 8px 7px\">` +\n `<span style=\"font-size: ${HEATMAP_CONSTANTS.HEADER_FONT_SIZE}; color: ${ChartColors.GREY_COLORS[60]}\">{point.tooltipHeaderLabel}</span></div>` +\n `<div style=\"font-size: ${HEATMAP_CONSTANTS.TOOLTIP_FONT_SIZE}; color: ${ChartColors.GREY_COLORS[100]}; margin: 6px 8px 0 8px;\">` +\n `<span style=\"color:{point.color}\">\\u25CF</span> {series.name}: <b>{point.value}{point.unit}</b></div>`,\n },\n xAxis: {\n labels: {\n formatter: this.createXAxisFormatter(),\n },\n lineWidth: 1,\n tickWidth: 0,\n visible: true,\n },\n yAxis: {\n lineWidth: 0,\n labels: {\n step: 3,\n },\n reversed: true,\n visible: true,\n },\n };\n return super.build(mergeDeep(defaultHeatmapOptions, options));\n }\n\n private static createColorAxisFormatter(leastLabel: string, mostLabel: string): AxisLabelsFormatterCallbackFunction {\n return function () {\n if (this.value === this.axis.min) {\n return leastLabel;\n }\n if (this.value === this.axis.max) {\n return mostLabel;\n }\n return '';\n };\n }\n\n private static createXAxisFormatter(): AxisLabelsFormatterCallbackFunction {\n return function () {\n return this.value.toString();\n };\n }\n\n static configureHeatmap(\n categoriesX: string[],\n categoriesY: string[],\n series: SeriesOptionsType[],\n options: Options,\n color: ChartColor,\n leastLabel?: string,\n mostLabel?: string,\n labelDateFormat?: string\n ): void {\n super.configure(series, options, color, labelDateFormat);\n\n this.setAxisCategories(options, categoriesX, categoriesY);\n\n const points = (series[0] as SeriesLineOptions).data as { x: number; y: number; value: number }[];\n const maxValue = points.reduce((max, point) => Math.max(max, point.value), 0) || HEATMAP_CONSTANTS.DEFAULT_MAX_VALUE;\n\n this.configureColorAxis(options, color, maxValue, leastLabel, mostLabel);\n\n this.configureLegend(options);\n }\n\n private static setAxisCategories(options: Options, categoriesX: string[], categoriesY: string[]): void {\n if (categoriesX?.length) {\n (options.xAxis as XAxisOptions).categories = categoriesX;\n }\n if (categoriesY?.length) {\n (options.yAxis as YAxisOptions).categories = categoriesY;\n }\n }\n\n private static configureColorAxis(\n options: Options,\n color: ChartColor,\n maxValue: number,\n leastLabel?: string,\n mostLabel?: string\n ): void {\n const tickPositions = this.buildTickPositions(maxValue);\n const labelsEnabled = !!(leastLabel && mostLabel);\n\n options.colorAxis = {\n ...(options.colorAxis || {}),\n visible: labelsEnabled,\n min: HEATMAP_CONSTANTS.MIN_VALUE,\n max: HEATMAP_CONSTANTS.DEFAULT_MAX_VALUE,\n tickPositions,\n maxColor: ChartColors.getChartColors(color)[100],\n };\n\n if (labelsEnabled) {\n options.colorAxis.labels = {\n ...((options.colorAxis as ColorAxisOptions)?.labels || {}),\n formatter: this.createColorAxisFormatter(leastLabel, mostLabel),\n };\n }\n }\n\n private static configureLegend(options: Options): void {\n options.legend = {\n ...options.legend,\n enabled: true,\n };\n }\n\n private static buildTickPositions(maxValue: number): number[] {\n const tickAmount = HEATMAP_CONSTANTS.DEFAULT_TICK_AMOUNT;\n\n // Calculate the step between each tick\n // We subtract 1 from tickAmount so that the last tick is exactly at maxValue\n const step = maxValue / (tickAmount - 1);\n\n // Generate an array of positions for the ticks\n // Each position is calculated as i * step and rounded to 2 decimal places\n return Array.from({ length: tickAmount }, (_, i) => parseFloat((i * step).toFixed(2)));\n }\n}\n","import { Component, effect, input, Input } from '@angular/core';\nimport { SeriesHeatmapOptions } from 'highcharts';\nimport { mapChart } from 'highcharts/highmaps';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartHeatmapOptions } from './chart-heatmap-options.model';\n\ntype LabelKeys = 'least' | 'most';\n\n@Component({\n selector: 'ap-chart-heatmap',\n templateUrl: './chart-heatmap.component.html',\n standalone: true,\n})\nexport class ChartHeatmapComponent extends AbstractChartComponent {\n @Input() categoriesX: string[] = [];\n @Input() categoriesY: string[] = [];\n @Input() override series: SeriesHeatmapOptions[] = [];\n\n legendLabels = input<Record<LabelKeys, string>>();\n\n private readonly legendLabelsEffect = effect(() => {\n this.legendLabels();\n this.initChart();\n });\n\n initChart(): void {\n if (this.series && this.chartRef) {\n const chartOptions = ChartHeatmapOptions.build(this.chartOptions);\n ChartHeatmapOptions.configureHeatmap(\n this.categoriesX,\n this.categoriesY,\n this.series,\n chartOptions,\n this.color,\n this.legendLabels()?.least,\n this.legendLabels()?.most,\n this.labelDateFormat\n );\n mapChart(this.chartRef.nativeElement, chartOptions);\n }\n }\n}\n","<div #chart></div>\n","export enum ChartMetricType {\n default,\n total,\n}\n\nexport class ChartMetric {\n children?: ChartMetric[];\n name = '';\n type?: ChartMetricType;\n value = 0;\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatListModule } from '@angular/material/list';\nimport { ChartMetric, ChartMetricType } from '../chart-metric';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'ap-chart-metrics-list',\n styleUrls: ['chart-metrics-list.component.scss'],\n templateUrl: 'chart-metrics-list.component.html',\n imports: [CommonModule, MatListModule, MatDividerModule],\n})\nexport class ChartMetricsListComponent {\n @Input({\n required: true,\n })\n metrics: ChartMetric[] = [];\n @Input() locale = 'en';\n\n ChartMetricType = ChartMetricType;\n digitsInfo = '1.0-1';\n}\n","<mat-list>\n @if (metrics) {\n @for (metric of metrics; track metric; let i = $index) {\n <mat-list-item [ngClass]=\"{ 'chart-metric-total': metric.type === ChartMetricType.total }\">\n @if (!metric.children) {\n <div class=\"chart-metric-name metric-label\">\n {{ metric.name }}\n </div>\n }\n @if (metric.children) {\n <div class=\"chart-metric-name\">\n <span class=\"metric-label\">\n {{ metric.name }}\n </span>\n <span class=\"chart-metric-children\">\n @for (item of metric.children; track item) {\n <span>\n <span class=\"child-label\">{{ item.name }}</span>\n :\n <span class=\"child-value\">{{ item.value }}</span>\n </span>\n }\n </span>\n </div>\n }\n <div class=\"chart-metric-value metric-label\">\n {{ metric.value | number: digitsInfo : locale }}\n </div>\n </mat-list-item>\n }\n }\n</mat-list>\n","import { Options } from 'highcharts';\nimport { ChartOptions, mergeDeep } from '../chart-options';\n\nexport class ChartMixedOptions extends ChartOptions {\n static buildMixed(options: Options, singleDayEnabled: boolean): Options {\n const defaultOptions: Options = {\n chart: {\n type: 'column',\n },\n legend: {\n symbolHeight: 10,\n },\n plotOptions: {\n series: {\n marker: {\n enabled: singleDayEnabled,\n radius: singleDayEnabled ? 5 : 2,\n symbol: 'circle',\n },\n lineWidth: 4\n },\n column: {\n stacking: 'normal',\n borderWidth: 0,\n maxPointWidth: 20,\n events: {\n hide(): void {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n },\n show(): void {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n },\n },\n },\n },\n xAxis: {\n type: 'datetime',\n },\n };\n return super.build(mergeDeep(defaultOptions, options));\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Chart, SeriesOptionsType, SeriesSplineOptions } from 'highcharts';\nimport { ChartOptions } from '../../..';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartMixedOptions } from './chart-mixed-options.model';\n\n@Component({\n selector: 'ap-chart-mixed',\n templateUrl: './chart-mixed.component.html',\n standalone: true,\n})\nexport class ChartMixedComponent extends AbstractChartComponent {\n @Input() override series: SeriesOptionsType[] = [];\n\n initChart(): void {\n if (this.series) {\n const singleDayEnabled = (this.series.find(serie => serie.type === 'spline') as SeriesSplineOptions)?.data?.length === 1;\n const chartOptions = ChartMixedOptions.buildMixed(this.chartOptions, singleDayEnabled);\n ChartMixedOptions.configure(this.series, chartOptions, this.color, this.labelDateFormat);\n this.chart = new Chart(this.chartRef.nativeElement, chartOptions);\n if (this.chart) {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n }\n }\n }\n}\n","<div #chart></div>\n","import { numberFormat, Options, PointOptionsObject, SeriesPieDataLabelsOptionsObject, SeriesPieOptions } from 'highcharts';\nimport { ChartColors } from '../chart-colors';\nimport { ChartOptions, mergeDeep } from '../chart-options';\n\nconst NAME_MAX_LENGTH = 30;\nconst RIGHT_TO_LEFT_CHARACTERS =\n /[\\p{Script=Arabic}\\p{Script=Hebrew}\\p{Script=Syriac}\\p{Script=Thaana}\\p{Script=Nko}\\p{Script=Samaritan}\\p{Script=Mandaic}]/u; // Hebrew, Arabic, and other RTL characters\nconst RIGHT_TO_LEFT_EMBEDDING_CHARACTER = '\\u202B'; // Right-to-left embedding character\n\nexport class ChartPieOptions extends ChartOptions {\n static buildPie(options: Options, innerLabels: boolean, metricFormat: 'percentage' | 'value'): Options {\n const defaultPieOptions: Options = {\n chart: {\n type: 'pie',\n plotBackgroundColor: undefined,\n plotBorderWidth: undefined,\n plotShadow: false,\n },\n plotOptions: {\n pie: {\n dataLabels: {\n distance: innerLabels ? -40 : 30,\n useHTML: true,\n },\n innerSize: '50%',\n },\n series: {\n allowPointSelect: !innerLabels,\n dataLabels: innerLabels\n ? {\n format: metricFormat === 'percentage' ? '{point.percentage:.1f}%' : '{point.y}',\n style: {\n fontSize: '16px',\n color: 'white',\n textOutline: '0',\n },\n }\n : {\n formatter: function () {\n const name =\n this.name.length > NAME_MAX_LENGTH\n ? this.name.substring(0, NAME_MAX_LENGTH) + '...'\n : this.name;\n const displayValue =\n metricFormat === 'percentage'\n ? Math.round((this.percentage ?? 0) * 10) / 10 + '%'\n : numberFormat(this.y ?? 0, -1);\n // Add right-to-left embedding character only if the first character is a right-to-left character\n const prefix = RIGHT_TO_LEFT_CHARACTERS.test(this.name.charAt(0))\n ? RIGHT_TO_LEFT_EMBEDDING_CHARACTER\n : '';\n return prefix + name + ': ' + displayValue;\n },\n style: {\n fontSize: '12px',\n color: ChartColors.GREY_COLORS[60],\n },\n },\n showInLegend: innerLabels,\n states: {\n inactive: {\n opacity: 1,\n },\n },\n },\n },\n tooltip: {\n outside: true,\n },\n legend: innerLabels\n ? {\n symbolHeight: 10,\n enabled: true,\n }\n : {},\n };\n return super.build(mergeDeep(defaultPieOptions, options));\n }\n\n static configurePie(\n series: SeriesPieOptions[],\n options: Options,\n colors: string[],\n labelDateFormat: string,\n innerLabels: boolean,\n mouseEventEnabled = true\n ): void {\n super.configure(series, options, undefined, labelDateFormat);\n if (innerLabels && options.legend) {\n options.legend.enabled = true;\n }\n if (series && series.length > 0 && series[0]) {\n options.colors = colors;\n if (mouseEventEnabled && options.plotOptions?.pie) {\n this.resetColors(series[0].data as PointOptionsObject[], innerLabels);\n options.plotOptions.pie.point ??= {};\n options.plotOptions.pie.point.events ??= {};\n options.plotOptions.pie.events ??= {};\n this.configureEnteringASlice(options, innerLabels);\n this.configureLeavingASlice(options, innerLabels);\n this.configureLeavingTheWholePie(options, innerLabels);\n }\n }\n }\n\n private static resetColors(points: PointOptionsObject[], innerLabels: boolean) {\n points?.forEach(point => {\n delete point?.color;\n if (innerLabels) {\n delete (point.dataLabels as SeriesPieDataLabelsOptionsObject)?.style?.color;\n }\n });\n }\n\n private static configureEnteringASlice(options: Options, innerLabels: boolean) {\n if (options.plotOptions?.pie?.point?.events) {\n options.plotOptions.pie.point.events.mouseOver = function (): void {\n this.series.chart.series[0].points.forEach(point => {\n if (point.index !== this.index) {\n point.update(\n {\n color: ChartColors.GREY_COLORS[5],\n },\n false\n );\n if (innerLabels) {\n point.update(\n {\n dataLabels: {\n style: {\n color: ChartColors.GREY_COLORS[20],\n },\n },\n },\n false\n );\n }\n }\n });\n this.series.chart.redraw(false);\n };\n }\n }\n\n private static configureLeavingASlice(options: Options, innerLabels: boolean) {\n if (options.plotOptions?.pie?.point?.events) {\n options.plotOptions.pie.point.events.mouseOut = function (): void {\n this.series.chart.series[0].points.forEach((point, i) => {\n if (point.index !== this.index) {\n point.update(\n {\n color: options.colors?.[i % options.colors.length],\n },\n false\n );\n if (innerLabels) {\n point.update(\n {\n dataLabels: {\n style: {\n color: 'white',\n },\n },\n },\n false\n );\n }\n }\n });\n };\n }\n }\n\n private static configureLeavingTheWholePie(options: Options, innerLabels: boolean) {\n if (options.plotOptions?.pie?.events) {\n options.plotOptions.pie.events.mouseOut = function (): void {\n this.chart.series[0].points.forEach((point, i) => {\n point.update(\n {\n color: options.colors?.[i % options.colors.length],\n },\n false\n );\n if (innerLabels) {\n point.update(\n {\n dataLabels: {\n style: {\n color: 'white',\n },\n },\n },\n false\n );\n }\n });\n this.chart.redraw();\n };\n }\n }\n}\n","import { afterNextRender, Component, effect, input, Input, signal } from '@angular/core';\nimport { Chart, SeriesPieOptions } from 'highcharts';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartColors } from '../chart-colors';\nimport { ChartPieOptions } from './chart-pie-options.model';\n\n@Component({\n selector: 'ap-chart-pie',\n templateUrl: './chart-pie.component.html',\n standalone: true,\n})\nexport class ChartPieComponent extends AbstractChartComponent {\n @Input() innerLabels = false;\n @Input() mouseEventEnabled = true;\n @Input() override series: SeriesPieOptions[] = [];\n colors = input<string[]>();\n metricFormat = input<'percentage' | 'value'>('percentage');\n\n private domReady = signal(false);\n constructor() {\n super();\n effect(() => {\n if (this.domReady()) {\n this.colors();\n this.initChart();\n }\n });\n\n afterNextRender(() => {\n this.domReady.set(true);\n });\n }\n\n initChart(): void {\n if (this.series) {\n const dataAvailable = this.series[0]?.data && this.series[0].data.length > 0;\n const chartOptions = ChartPieOptions.buildPie(this.chartOptions, this.innerLabels, this.metricFormat());\n\n // Add placeholder series when there's no data\n const updatedSeries = dataAvailable\n ? this.series\n : [\n {\n type: 'pie' as const,\n data: [\n {\n y: 1,\n dataLabels: {\n enabled: false,\n },\n },\n ],\n enableMouseTracking: false,\n },\n ];\n\n let colors = this.colors();\n if (!dataAvailable) {\n colors = [ChartColors.GREY_COLORS[10]];\n } else if (!colors?.length) {\n colors = ChartColors.getColors(this.series[0]?.data?.length ?? 0, this.color);\n }\n ChartPieOptions.configurePie(\n updatedSeries,\n chartOptions,\n colors,\n this.labelDateFormat,\n this.innerLabels,\n this.mouseEventEnabled\n );\n this.chart = new Chart(this.chartRef.nativeElement, chartOptions);\n }\n }\n}\n","<div #chart></div>\n","import { Options } from 'highcharts';\nimport { ChartOptions, mergeDeep } from '../chart-options';\n\nexport class ChartSplineOptions extends ChartOptions {\n static buildSpline(options: Options, singleDayEnabled: boolean): Options {\n const defaultSplineOptions: Options = {\n chart: {\n type: 'spline',\n },\n plotOptions: {\n series: {\n marker: {\n enabled: singleDayEnabled,\n radius: singleDayEnabled ? 5 : 2,\n symbol: 'circle',\n },\n lineWidth: 4\n },\n },\n xAxis: {\n type: 'datetime',\n },\n };\n return super.build(mergeDeep(defaultSplineOptions, options));\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Chart, SeriesSplineOptions } from 'highcharts';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartSplineOptions } from './chart-spline-options.model';\n\n@Component({\n selector: 'ap-chart-spline',\n templateUrl: './chart-spline.component.html',\n standalone: true,\n})\nexport class ChartSplineComponent extends AbstractChartComponent {\n @Input() override series: SeriesSplineOptions[] = [];\n @Output() chartInitialized: EventEmitter<Chart> = new EventEmitter();\n\n initChart(): void {\n if (this.series) {\n const chartOptions = ChartSplineOptions.buildSpline(this.chartOptions, this.series[0]?.data?.length === 1);\n ChartSplineOptions.configure(this.series, chartOptions, this.color, this.labelDateFormat);\n this.chart = new Chart(this.chartRef.nativeElement, chartOptions);\n this.chartInitialized.emit(this.chart);\n }\n }\n}\n","<div #chart></div>\n","/*\n * Public API Surface of ui-charts\n */\n\nimport * as Highcharts from 'highcharts';\nimport { borderRadiusPlugin } from './src/lib/highcharts-border-radius-plugin';\n\nborderRadiusPlugin(Highcharts);\n\nexport { AbstractChartComponent } from './src/lib/abstract-chart.component';\nexport { ChartBarComponent } from './src/lib/chart-bar/chart-bar.component';\nexport { ChartColor, ChartColors } from './src/lib/chart-colors';\nexport { ChartColumnComponent } from './src/lib/chart-column/chart-column.component';\nexport { ChartHeatmapComponent } from './src/lib/chart-heatmap/chart-heatmap.component';\nexport { ChartMetric, ChartMetricType } from './src/lib/chart-metric';\nexport { ChartMetricsListComponent } from './src/lib/chart-metrics-list/chart-metrics-list.component';\nexport { ChartMixedComponent } from './src/lib/chart-mixed/chart-mixed.component';\nexport { ChartOptions, mergeDeep } from './src/lib/chart-options';\nexport { ChartPieComponent } from './src/lib/chart-pie/chart-pie.component';\nexport { ChartSplineComponent } from './src/lib/chart-spline/chart-spline.component';\n\nexport { borderRadiusPlugin } from './src/lib/highcharts-border-radius-plugin';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agorapulse-ui-charts.mjs","sources":["../../../libs/ui-charts/src/lib/highcharts-border-radius-plugin.ts","../../../libs/ui-charts/src/lib/chart-colors.ts","../../../libs/ui-charts/src/lib/abstract-chart.component.ts","../../../libs/ui-charts/src/lib/chart-locale.ts","../../../libs/ui-charts/src/lib/chart-options.ts","../../../libs/ui-charts/src/lib/chart-bar/chart-bar-options.model.ts","../../../libs/ui-charts/src/lib/chart-bar/chart-bar.component.ts","../../../libs/ui-charts/src/lib/chart-bar/chart-bar.component.html","../../../libs/ui-charts/src/lib/chart-column/chart-column-options.model.ts","../../../libs/ui-charts/src/lib/chart-column/chart-column.component.ts","../../../libs/ui-charts/src/lib/chart-column/chart-column.component.html","../../../libs/ui-charts/src/lib/chart-heatmap/chart-heatmap-options.model.ts","../../../libs/ui-charts/src/lib/chart-heatmap/chart-heatmap.component.ts","../../../libs/ui-charts/src/lib/chart-heatmap/chart-heatmap.component.html","../../../libs/ui-charts/src/lib/chart-metric.ts","../../../libs/ui-charts/src/lib/chart-metrics-list/chart-metrics-list.component.ts","../../../libs/ui-charts/src/lib/chart-metrics-list/chart-metrics-list.component.html","../../../libs/ui-charts/src/lib/chart-mixed/chart-mixed-options.model.ts","../../../libs/ui-charts/src/lib/chart-mixed/chart-mixed.component.ts","../../../libs/ui-charts/src/lib/chart-mixed/chart-mixed.component.html","../../../libs/ui-charts/src/lib/chart-pie/chart-pie-options.model.ts","../../../libs/ui-charts/src/lib/chart-pie/chart-pie.component.ts","../../../libs/ui-charts/src/lib/chart-pie/chart-pie.component.html","../../../libs/ui-charts/src/lib/chart-spline/chart-spline-options.model.ts","../../../libs/ui-charts/src/lib/chart-spline/chart-spline.component.ts","../../../libs/ui-charts/src/lib/chart-spline/chart-spline.component.html","../../../libs/ui-charts/index.ts","../../../libs/ui-charts/agorapulse-ui-charts.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\nexport const borderRadiusPlugin = function (H: any) {\n if (H.borderRadiusPlugininitialized) {\n return;\n }\n H.borderRadiusPlugininitialized = true;\n\n H.wrap(H.seriesTypes.column.prototype, 'translate', function (proceed: any) {\n // @ts-ignore\n const options = this.options;\n const topMargin = options.topMargin || 0;\n const bottomMargin = options.bottomMargin || 0;\n const borderRadiusTopLeftSettings = options.borderRadiusTopLeft;\n const borderRadiusTopRightSettings = options.borderRadiusTopRight;\n const borderRadiusBottomLeftSettings = options.borderRadiusBottomLeft;\n const borderRadiusBottomRightSettings = options.borderRadiusBottomRight;\n // @ts-ignore\n proceed.call(this);\n\n // @ts-ignore\n if (!this.points) {\n return;\n }\n\n if (\n borderRadiusTopLeftSettings ||\n borderRadiusTopRightSettings ||\n borderRadiusBottomLeftSettings ||\n borderRadiusBottomRightSettings\n ) {\n // @ts-ignore\n this.points.forEach(function (point) {\n roundPoint(\n borderRadiusTopLeftSettings,\n borderRadiusTopRightSettings,\n borderRadiusBottomLeftSettings,\n borderRadiusBottomRightSettings,\n point,\n H,\n topMargin,\n bottomMargin\n );\n });\n }\n });\n};\n\nfunction roundPoint(\n borderRadiusTopLeftSettings: string | any[],\n borderRadiusTopRightSettings: string | any[],\n borderRadiusBottomLeftSettings: string | any[],\n borderRadiusBottomRightSettings: string | any[],\n point: { shapeArgs: { width?: any; height?: any; x?: any; y?: any; d?: any[] }; index: string | number; dlBox: any; shapeType: string },\n H: { relativeLength: (arg0: any, arg1: any) => any },\n topMargin: any,\n bottomMargin: any\n) {\n const w = point.shapeArgs.width;\n const h = point.shapeArgs.height;\n const x = point.shapeArgs.x;\n const y = point.shapeArgs.y;\n const borderRadiusTopLeft = borderRadiusTopLeftSettings?.length\n ? (borderRadiusTopLeftSettings as any)[point.index]\n : borderRadiusTopLeftSettings || 0;\n const borderRadiusTopRight = borderRadiusTopRightSettings?.length\n ? (borderRadiusTopRightSettings as any)[point.index]\n : borderRadiusTopRightSettings || 0;\n const borderRadiusBottomLeft = borderRadiusBottomLeftSettings?.length\n ? (borderRadiusBottomLeftSettings as any)[point.index]\n : borderRadiusBottomLeftSettings || 0;\n const borderRadiusBottomRight = borderRadiusBottomRightSettings?.length\n ? (borderRadiusBottomRightSettings as any)[point.index]\n : borderRadiusBottomRightSettings || 0;\n\n let radiusTopLeft = H.relativeLength(borderRadiusTopLeft, w);\n let radiusTopRight = H.relativeLength(borderRadiusTopRight, w);\n let radiusBottomRight = H.relativeLength(borderRadiusBottomRight, w);\n let radiusBottomLeft = H.relativeLength(borderRadiusBottomLeft, w);\n\n const maxR = Math.min(w, h) / 2;\n\n radiusTopLeft = radiusTopLeft > maxR ? maxR : radiusTopLeft;\n radiusTopRight = radiusTopRight > maxR ? maxR : radiusTopRight;\n radiusBottomRight = radiusBottomRight > maxR ? maxR : radiusBottomRight;\n radiusBottomLeft = radiusBottomLeft > maxR ? maxR : radiusBottomLeft;\n\n point.dlBox = point.shapeArgs;\n\n point.shapeType = 'path';\n point.shapeArgs = {\n d: [\n 'M',\n x + radiusTopLeft,\n y + topMargin,\n 'L',\n x + w - radiusTopRight,\n y + topMargin,\n 'C',\n x + w - radiusTopRight / 2,\n y,\n x + w,\n y + radiusTopRight / 2,\n x + w,\n y + radiusTopRight,\n 'L',\n x + w,\n y + h - radiusBottomRight,\n 'C',\n x + w,\n y + h - radiusBottomRight / 2,\n x + w - radiusBottomRight / 2,\n y + h,\n x + w - radiusBottomRight,\n y + h + bottomMargin,\n 'L',\n x + radiusBottomLeft,\n y + h + bottomMargin,\n 'C',\n x + radiusBottomLeft / 2,\n y + h,\n x,\n y + h - radiusBottomLeft / 2,\n x,\n y + h - radiusBottomLeft,\n 'L',\n x,\n y + radiusTopLeft,\n 'C',\n x,\n y + radiusTopLeft / 2,\n x + radiusTopLeft / 2,\n y,\n x + radiusTopLeft,\n y,\n 'Z',\n ],\n };\n}\n","export enum ChartColor {\n Grey,\n Orange,\n SoftBlue,\n ElectricBlue,\n Purple,\n Green,\n}\n\nexport class ChartColors {\n static readonly SOFT_BLUE_COLORS = {\n '10': '#EFF5FC',\n '20': '#DFEDFA',\n '40': '#C0DBF4',\n '60': '#A0C8EF',\n '85': '#78B1E8',\n '100': '#61A4E4',\n '150': '#2873BA',\n };\n static readonly ELECTRIC_BLUE_COLORS = {\n '10': '#e8f4ff',\n '20': '#d1e8ff',\n '40': '#a2d1ff',\n '60': '#74bbfe',\n '85': '#3a9efe',\n '100': '#178dfe',\n '150': '#0e72d6',\n };\n static readonly ORANGE_COLORS = {\n '10': '#FFEFE9',\n '20': '#FFE1D4',\n '40': '#FFC2A8',\n '60': '#FFA47D',\n '85': '#FF7E46',\n '100': '#FF6726',\n '150': '#C83E07',\n };\n static readonly GREEN_COLORS = {\n '10': '#ECF7ED',\n '20': '#DAF1DD',\n '40': '#B5E3BB',\n '60': '#8FD498',\n '85': '#61C26D',\n '100': '#45B854',\n '150': '#0F821D',\n };\n static readonly PURPLE_COLORS = {\n '10': '#EFEDF8',\n '20': '#E0DDF2',\n '40': '#C1BBE6',\n '60': '#A398D9',\n '85': '#7C6DC9',\n '100': '#6554C0',\n '150': '#3C2C95',\n };\n static readonly GREY_COLORS = {\n '5': '#F5F5F7',\n '10': '#EAECEF',\n '20': '#D6DAE0',\n '40': '#AEB5C1',\n '60': '#858FA1',\n '85': '#5D6A82',\n '100': '#344563',\n '150': '#212E44',\n };\n\n static readonly RED_COLORS = {\n '80': '#F17171',\n '150': '#D80505'\n };\n\n static readonly SOFT_RED_COLORS = {\n 100: '#ff5353',\n 85: '#ff6d6d',\n 60: '#ff9898',\n 10: '#fff9f9',\n };\n\n static readonly BLACK_COLOR: string = '#000000';\n static readonly LIMIT_COLOR: string = '#E81313';\n static readonly WHITE_COLOR: string = '#FFFFFF';\n\n static getChartColors(color: ChartColor | undefined): { [shade: string]: string } {\n switch (color) {\n case ChartColor.Orange:\n return this.ORANGE_COLORS;\n case ChartColor.SoftBlue:\n return this.SOFT_BLUE_COLORS;\n case ChartColor.ElectricBlue:\n return this.ELECTRIC_BLUE_COLORS;\n case ChartColor.Purple:\n return this.PURPLE_COLORS;\n case ChartColor.Green:\n return this.GREEN_COLORS;\n default:\n return this.GREY_COLORS;\n }\n }\n\n static getColors(seriesCount: number, color: ChartColor | undefined): string[] {\n const colors = this.getChartColors(color);\n switch (seriesCount) {\n case 1:\n return [colors[100]];\n case 2:\n return [colors[40], colors[100]];\n case 3:\n return [colors[20], colors[60], colors[100]];\n case 4:\n return [colors[20], colors[40], colors[60], colors[100]];\n case 5:\n return [colors[20], colors[40], colors[60], colors[100], colors[150]];\n default:\n return [colors[20], colors[40], colors[60], colors[85], colors[100], colors[150]];\n }\n }\n}\n","import { AfterViewChecked, Directive, ElementRef, Input, OnChanges, SimpleChanges, ViewChild } from '@angular/core';\nimport { Chart, Options, SeriesOptions } from 'highcharts';\nimport { ChartColor } from './chart-colors';\n\n@Directive() // Required since Angular10 for DI to work (must be decorated to use Angular features)\nexport abstract class AbstractChartComponent implements AfterViewChecked, OnChanges {\n @ViewChild('chart') chartRef!: ElementRef;\n\n @Input() chartOptions: Options = {}; // https://api.highcharts.com/highcharts/\n @Input() color: ChartColor = ChartColor.ElectricBlue;\n @Input() labelDateFormat = '%m/%d';\n @Input() locale = 'en';\n @Input() series: SeriesOptions[] = [];\n\n protected chart!: Chart;\n private lastWidth = 0;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n (changes.series && !changes.series.firstChange) ||\n (changes.color && !changes.color.firstChange) ||\n (changes.chartOptions && !changes.chartOptions.firstChange) ||\n (changes.locale && !changes.locale.firstChange) ||\n (changes.metricFormat && !changes.metricFormat.firstChange)\n ) {\n this.initChart();\n }\n }\n\n ngAfterViewChecked(): void {\n if (this.chartRef && (this.chartRef.nativeElement.clientWidth !== this.lastWidth || this.lastWidth === 0)) {\n this.lastWidth = this.chartRef.nativeElement.clientWidth;\n if (this.chart) {\n this.chart.reflow();\n } else if (this.series && this.series.length) {\n this.initChart();\n }\n }\n }\n\n abstract initChart(): void;\n}\n","import { Options } from 'highcharts';\n\n/**\n * Builds Highcharts locale options (lang + tooltip date formats) from a locale string.\n * Uses the browser's Intl API to generate translated month/weekday names and number formatting rules.\n */\nexport function buildHighchartsLocaleOptions(locale: string): Options {\n const { decimalPoint, thousandsSep } = buildNumberSeparators(locale);\n\n return {\n lang: {\n decimalPoint,\n thousandsSep,\n weekdays: buildWeekdays(locale),\n shortMonths: buildShortMonths(locale),\n },\n tooltip: {\n dateTimeLabelFormats: {\n day: locale === 'en' ? '%A, %b %e, %Y' : '%A %e %b %Y',\n week: locale === 'en' ? '%A, %b %e, %Y' : '%A %e %b %Y',\n },\n },\n };\n}\n\nfunction buildNumberSeparators(locale: string): { decimalPoint: string; thousandsSep: string } {\n const parts = new Intl.NumberFormat(locale).formatToParts(12345.6);\n const decimalPoint = parts.find(p => p.type === 'decimal')?.value ?? '.';\n const thousandsSep = parts.find(p => p.type === 'group')?.value ?? ',';\n return { decimalPoint, thousandsSep };\n}\n\nfunction buildWeekdays(locale: string): string[] {\n const formatter = new Intl.DateTimeFormat(locale, { weekday: 'long' });\n // Jan 4, 1970 is a Sunday\n return Array.from({ length: 7 }, (_, i) => {\n const name = formatter.format(new Date(1970, 0, 4 + i));\n return name.charAt(0).toUpperCase() + name.slice(1);\n });\n}\n\nfunction buildShortMonths(locale: string): string[] {\n const formatter = new Intl.DateTimeFormat(locale, { month: 'short' });\n return Array.from({ length: 12 }, (_, i) => {\n const name = formatter.format(new Date(2000, i, 1));\n return name.charAt(0).toUpperCase() + name.slice(1);\n });\n}","import { Chart, dateFormat, numberFormat, Options, Series, SeriesOptionsType, setOptions } from 'highcharts';\nimport { ChartColor, ChartColors } from './chart-colors';\nimport { buildHighchartsLocaleOptions } from './chart-locale';\nimport { SeriesRoundedColumnOptions } from './highchart-series.model';\n\nexport class ChartOptions {\n static readonly DEFAULT_DATE_FORMAT: string = '%A, %b %e, %Y';\n static readonly DEFAULT_OPTIONS: Options = {\n /*lang: {\n decimalPoint: (manager && manager.locale !== 'en') ? ',' : '.',\n resetZoom: resetZoomLabel,\n resetZoomTitle: resetZoomHtmlTitle,\n shortMonths: [\n shortJanuary, shortFebruary, shortMarch, shortApril, shortMay, shortJune,\n shortJuly, shortAugust, shortSeptember, shortOctober, shortNovember, shortDecember\n ],\n thousandsSep: (manager && manager.locale !== 'en') ? ' ' : ',',\n weekdays: this.weekDays,\n zoomIn: zoomInHtmlTitle,\n zoomOut: zoomOutHtmlTitle\n },*/\n chart: {\n spacingRight: 20,\n zooming: {\n type: 'xy',\n resetButton: {\n theme: {\n fill: ChartColors.WHITE_COLOR,\n r: 4,\n style: {\n color: ChartColors.GREY_COLORS[100],\n fontSize: '12px',\n },\n states: {\n hover: {\n fill: ChartColors.GREY_COLORS[5],\n },\n },\n },\n },\n },\n panning: {\n enabled: true,\n },\n panKey: 'shift',\n style: {\n fontFamily: \"Averta, 'Open Sans', Helvetica, sans-serif\",\n },\n },\n colorAxis: {\n labels: {\n style: {\n color: ChartColors.GREY_COLORS[60],\n },\n },\n },\n credits: {\n enabled: false,\n },\n legend: {\n borderWidth: 0,\n itemStyle: {\n color: ChartColors.GREY_COLORS[60],\n fontSize: '14px',\n fontWeight: 'normal',\n },\n itemHoverStyle: {\n color: ChartColors.GREY_COLORS[100],\n fontWeight: 'bold',\n },\n },\n plotOptions: {\n series: {\n states: {\n hover: {\n brightness: 0,\n },\n },\n connectNulls: true,\n },\n },\n navigation: {\n buttonOptions: {\n y: 0,\n },\n },\n title: {\n text: undefined,\n },\n tooltip: {\n backgroundColor: ChartColors.WHITE_COLOR,\n borderRadius: 4,\n borderWidth: 0,\n dateTimeLabelFormats: {},\n shadow: {\n color: ChartColors.BLACK_COLOR,\n offsetX: 0,\n offsetY: 2,\n opacity: 0.02,\n width: 6,\n },\n split: false,\n shared: true,\n useHTML: true,\n headerFormat:\n `<div style=\"border-bottom: 1px solid ${ChartColors.GREY_COLORS[10]}; padding: 0 8px 7px\">` +\n `<span style=\"font-size: 12px; color: ${ChartColors.GREY_COLORS[60]}\">{point.key}</span></div>`,\n pointFormat:\n `<div style=\"font-size: 14px; color: ${ChartColors.GREY_COLORS[100]}; margin: 6px 8px 0 8px;\">` +\n '<span style=\"color:{point.color}\">\\u25CF</span> {series.name}: <b>{point.y}</b> {point.custom.details}</div>',\n },\n xAxis: {\n gridLineColor: ChartColors.GREY_COLORS[10],\n lineColor: ChartColors.GREY_COLORS[10],\n tickColor: ChartColors.GREY_COLORS[10],\n gridLineWidth: 1,\n title: {\n text: null,\n },\n labels: {\n style: {\n color: ChartColors.GREY_COLORS[85],\n fontSize: '12px',\n },\n },\n },\n yAxis: {\n allowDecimals: false,\n gridLineColor: ChartColors.GREY_COLORS[10],\n lineColor: ChartColors.GREY_COLORS[10],\n gridLineWidth: 1,\n title: {\n text: undefined,\n },\n labels: {\n formatter: function () {\n if (typeof this.value === 'string') {\n return this.value;\n }\n return numberFormat(this.value, -1);\n },\n style: {\n color: ChartColors.GREY_COLORS[85],\n fontSize: '12px',\n },\n },\n },\n };\n\n static build(options: Options, locale: string): Options {\n const localeOptions = buildHighchartsLocaleOptions(locale);\n setOptions({ lang: localeOptions.lang });\n return mergeDeep(mergeDeep(ChartOptions.DEFAULT_OPTIONS, localeOptions), options);\n }\n\n static configure(series: SeriesOptionsType[], options: Options, color: ChartColor | undefined, labelDateFormat?: string) {\n // Configure axis\n options.xAxis = mergeDeep(\n {\n labels: {\n formatter: function (): string {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return dateFormat(labelDateFormat ?? '%m/%d', this.value);\n },\n },\n //minTickInterval: 24 * 60 * 60 * 1000 // One day\n },\n options.xAxis\n );\n // Configure series\n if (series?.length) {\n options.series = series;\n if (options.legend) {\n options.legend.enabled = options.legend.enabled ?? series.length >= 2;\n }\n options.colors = ChartColors.getColors(series.length, color);\n }\n }\n\n static redrawWithHighestEdgesRounded(chart: Chart): void {\n chart.series.forEach((serie, serieIndex: number, arr) => {\n ChartOptions.roundHighestSerie(arr, serie.options as SeriesRoundedColumnOptions, serieIndex);\n });\n chart.redraw(true);\n }\n\n static roundHighestSerie(series: Series[], serie: SeriesRoundedColumnOptions, serieIndex: number): void {\n const roundedTopMap: number[] = [];\n const roundedBottomMap: number[] = [];\n if (serie.data) {\n serie.data.forEach((point, columnIndex) => {\n const pointValue = ChartOptions.getPointValue(point);\n const pointX = ChartOptions.getPointX(point);\n const isNegative = pointValue !== null && pointValue < 0;\n\n if (isNegative) {\n // Negative bars go downward: the visual tip is the physical bottom.\n // Round bottom corners if no higher-index visible series has a negative value here\n // (meaning this series is the bottommost segment of the negative stack).\n const isBottommost = series.slice(serieIndex + 1).every(otherSerie => {\n if (!otherSerie.visible) return true;\n const otherPoint = ChartOptions.findPointAtAbscissa(\n (otherSerie.options as SeriesRoundedColumnOptions).data,\n pointX,\n columnIndex\n );\n if (otherPoint === undefined) return true;\n const val = ChartOptions.getPointValue(otherPoint);\n return val === null || val >= 0;\n });\n roundedTopMap[columnIndex] = 0;\n roundedBottomMap[columnIndex] = isBottommost ? 100 : 0;\n } else {\n // Positive bars go upward: the visual tip is the physical top.\n // Round top corners if all lower-index visible series are 0/missing here\n // (meaning this series is the topmost segment of the positive stack).\n const isTopmost = series.slice(0, serieIndex).every(otherSerie => {\n if (!otherSerie.visible) return true;\n const otherPoint = ChartOptions.findPointAtAbscissa(\n (otherSerie.options as SeriesRoundedColumnOptions).data,\n pointX,\n columnIndex\n );\n return otherPoint === undefined || ChartOptions.getPointValue(otherPoint) === 0;\n });\n roundedTopMap[columnIndex] = isTopmost ? 100 : 0;\n roundedBottomMap[columnIndex] = 0;\n }\n });\n serie.borderRadiusTopLeft = roundedTopMap;\n serie.borderRadiusTopRight = roundedTopMap;\n serie.borderRadiusBottomLeft = roundedBottomMap;\n serie.borderRadiusBottomRight = roundedBottomMap;\n }\n }\n\n private static getPointX(point: unknown): number | null {\n if (Array.isArray(point)) return point[0] as number;\n if (point && typeof point === 'object') return (point as { x?: number }).x ?? null;\n return null;\n }\n\n private static findPointAtAbscissa(data: unknown[] | undefined, x: number | null, fallbackIndex: number): unknown {\n if (!data) return undefined;\n if (x !== null) {\n return data.find(p => ChartOptions.getPointX(p) === x);\n }\n return data[fallbackIndex];\n }\n\n private static getPointValue(point: unknown): number | null {\n if (typeof point === 'number') return point;\n if (Array.isArray(point)) return point[1] as number;\n if (point && typeof point === 'object') return (point as { y?: number }).y ?? null;\n return null;\n }\n}\n\nexport function isObject(item: any) {\n return item && typeof item === 'object' && !Array.isArray(item);\n}\n\nexport function mergeDeep(target: any, source: any) {\n const output = deepCopy(target);\n if (isObject(target) && isObject(source)) {\n Object.keys(source).forEach(key => {\n if (isObject(source[key])) {\n if (!(key in target)) Object.assign(output, { [key]: source[key] });\n else output[key] = mergeDeep(target[key], source[key]);\n } else {\n Object.assign(output, { [key]: source[key] });\n }\n });\n }\n return output;\n}\n\nfunction deepCopy(source: any) {\n if (typeof source !== 'object' || source === null) {\n return source; // Return the value if source is not an object\n }\n // Create an array or object to hold the values\n const newObject = Array.isArray(source) ? [] : {};\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n // Recursively (deep) copy for nested objects, including arrays\n (newObject as any)[key] = deepCopy(source[key]);\n }\n }\n return newObject;\n}\n","import { Options, PlotBarOptions, SeriesBarOptions, XAxisOptions, YAxisOptions } from 'highcharts';\nimport { ChartOptions, mergeDeep } from '../chart-options';\nimport { ChartColor } from './../chart-colors';\nimport { SeriesRoundedBarOptions } from './../highchart-series.model';\n\nexport class ChartBarOptions extends ChartOptions {\n static buildBars(options: Options, stacked: boolean, opposite: boolean, locale: string): Options {\n const bar: PlotBarOptions = {\n maxPointWidth: 20,\n }\n if (stacked && !opposite) {\n bar.stacking = 'normal';\n bar.events = {\n hide(): void {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n },\n show(): void {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n },\n };\n } else {\n bar.borderRadius = 100;\n }\n\n const defaultBarOptions: Options = {\n chart: {\n type: 'bar',\n },\n legend: {\n symbolHeight: 10,\n },\n xAxis: {\n categories: undefined,\n gridLineWidth: 0,\n lineWidth: 0,\n reversed: false,\n tickWidth: 0,\n labels: {\n align: 'center',\n formatter(): string {\n if (this.value && this.value.toString().length > 16) {\n return this.value.toString().substring(0, 15) + '...';\n }\n return this.value.toString();\n },\n style: {\n width: 100,\n },\n },\n type: 'category',\n },\n yAxis: {\n type: 'linear',\n minTickInterval: 1,\n },\n plotOptions: {\n bar,\n series: {\n borderWidth: 0,\n }\n },\n };\n return super.build(mergeDeep(defaultBarOptions, options), locale);\n }\n\n static configureBar(\n series: SeriesBarOptions[],\n categories: string[],\n options: Options,\n opposite: boolean,\n color: ChartColor,\n labelDateFormat?: string\n ): void {\n ChartOptions.configure(series, options, color, labelDateFormat);\n if (categories && categories.length) {\n (options.xAxis as XAxisOptions).categories = categories;\n }\n if (opposite && series.length === 2) {\n const negativeSerie = series[0] as SeriesRoundedBarOptions;\n negativeSerie.borderRadiusBottomLeft = 100;\n negativeSerie.borderRadiusBottomRight = 100;\n negativeSerie.borderRadiusTopLeft = 0;\n negativeSerie.borderRadiusTopRight = 0;\n negativeSerie.data = negativeSerie.data?.map((point: any) => {\n if (point && isNaN(point)) {\n return {\n ...point,\n y: -Math.abs(point.y),\n };\n } else if (!isNaN(point)) {\n return -Math.abs(point);\n }\n return point;\n });\n if (options.plotOptions?.series) {\n options.plotOptions.series.stacking = 'normal';\n }\n const yAxisLabels = (options.yAxis as YAxisOptions).labels;\n if (yAxisLabels) {\n yAxisLabels.formatter = function (): string {\n return Math.abs(+this.value) + '%';\n };\n }\n if (options.tooltip) {\n options.tooltip.pointFormatter = function (): string {\n return `<div style=\"font-size: 14px; color: #344563; margin: 6px 8px 0 8px;\"><span style=\"color:${\n this.color\n };\">\\u25CF</span> ${this.series.name}: <b>${Math.abs(this.y ?? 0) + '%'}</b></div>`;\n };\n }\n }\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Chart, SeriesBarOptions } from 'highcharts';\nimport { ChartOptions } from '../../..';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartBarOptions } from './chart-bar-options.model';\n\n@Component({\n selector: 'ap-chart-bar',\n templateUrl: './chart-bar.component.html',\n standalone: true,\n})\nexport class ChartBarComponent extends AbstractChartComponent {\n @Input() categories: string[] = [];\n @Input() opposite: boolean = false;\n @Input() stacked: boolean = false;\n @Input() override series: SeriesBarOptions[] = [];\n\n initChart(): void {\n if (this.series) {\n const chartOptions = ChartBarOptions.buildBars(this.chartOptions, this.stacked, this.opposite, this.locale);\n ChartBarOptions.configureBar(this.series, this.categories, chartOptions, this.opposite, this.color, this.labelDateFormat);\n this.chart = new Chart(this.chartRef.nativeElement, chartOptions);\n if (this.chart && this.stacked && !this.opposite) {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n }\n }\n }\n}\n","<div #chart></div>\n","import { Options, PlotColumnOptions } from 'highcharts';\nimport { ChartOptions, mergeDeep } from '../chart-options';\n\nexport class ChartColumnOptions extends ChartOptions {\n static buildColumn(options: Options, stacked: boolean, locale: string): Options {\n const column: PlotColumnOptions = {\n borderWidth: 0,\n maxPointWidth: 20\n }\n if (stacked) {\n column.stacking = 'normal';\n column.events = {\n hide(): void {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n },\n show(): void {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n },\n };\n } else {\n column.borderRadius = 100;\n }\n\n const defaultColumnOptions: Options = {\n chart: {\n type: 'column',\n },\n legend: {\n symbolHeight: 10,\n },\n plotOptions: {\n column,\n },\n xAxis: {\n type: 'datetime',\n minTickInterval: 1,\n },\n };\n return super.build(mergeDeep(defaultColumnOptions, options), locale);\n }\n}\n","import { Component, EventEmitter, input, Input, Output } from '@angular/core';\nimport { Chart, SeriesColumnOptions } from 'highcharts';\nimport { ChartOptions } from '../../..';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartColumnOptions } from './chart-column-options.model';\n\n@Component({\n selector: 'ap-chart-column',\n templateUrl: './chart-column.component.html',\n standalone: true,\n})\nexport class ChartColumnComponent extends AbstractChartComponent {\n @Input() override series: SeriesColumnOptions[] = [];\n stacked = input<boolean>(false);\n @Output() chartInitialized: EventEmitter<Chart> = new EventEmitter();\n\n initChart(): void {\n if (this.series) {\n const chartOptions = ChartColumnOptions.buildColumn(this.chartOptions, this.stacked(), this.locale);\n ChartColumnOptions.configure(this.series, chartOptions, this.color, this.labelDateFormat);\n this.chart = new Chart(this.chartRef.nativeElement, chartOptions);\n if (this.chart && this.stacked()) {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n }\n this.chartInitialized.emit(this.chart);\n }\n }\n}\n","<div #chart></div>\n","import type {\n AxisLabelsFormatterCallbackFunction,\n ColorAxisOptions,\n Options,\n SeriesLineOptions,\n SeriesOptionsType,\n XAxisOptions,\n YAxisOptions,\n} from 'highcharts';\nimport { ChartColor, ChartColors } from '../chart-colors';\nimport { ChartOptions, mergeDeep } from '../chart-options';\n\nconst HEATMAP_CONSTANTS = {\n CHART_HEIGHT: 680,\n GRID_LINE_WIDTH: 2,\n BORDER_WIDTH: 1,\n FONT_SIZE: '13px',\n HEADER_FONT_SIZE: '12px',\n TOOLTIP_FONT_SIZE: '14px',\n LEGEND_SYMBOL_WIDTH: 300,\n LEGEND_SYMBOL_HEIGHT: 10,\n TICK_INTERVAL: 3,\n DEFAULT_TICK_AMOUNT: 6,\n DEFAULT_MAX_VALUE: 3,\n MIN_VALUE: 0,\n FONT_WEIGHT: 'normal',\n} as const;\n\nconst COLORS = {\n WHITE: '#FFFFFF',\n GRID_LINE: 'white',\n NULL_COLOR: 'white',\n DEFAULT_FONT_COLOR: '#858FA1',\n} as const;\n\nexport class ChartHeatmapOptions extends ChartOptions {\n static override build(options: Options, locale: string): Options {\n const defaultHeatmapOptions: Options = {\n chart: {\n type: 'heatmap',\n height: HEATMAP_CONSTANTS.CHART_HEIGHT,\n },\n colorAxis: {\n allowDecimals: false,\n gridLineWidth: HEATMAP_CONSTANTS.GRID_LINE_WIDTH,\n gridLineColor: COLORS.GRID_LINE,\n min: HEATMAP_CONSTANTS.MIN_VALUE,\n minColor: COLORS.WHITE,\n labels: {\n style: {\n fontWeight: HEATMAP_CONSTANTS.FONT_WEIGHT,\n fontSize: HEATMAP_CONSTANTS.FONT_SIZE,\n color: COLORS.DEFAULT_FONT_COLOR,\n },\n overflow: 'allow',\n },\n },\n legend: {\n enabled: true,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'bottom',\n symbolWidth: HEATMAP_CONSTANTS.LEGEND_SYMBOL_WIDTH,\n symbolHeight: HEATMAP_CONSTANTS.LEGEND_SYMBOL_HEIGHT,\n },\n plotOptions: {\n heatmap: {\n borderColor: ChartColors.GREY_COLORS[10],\n borderWidth: HEATMAP_CONSTANTS.BORDER_WIDTH,\n nullColor: COLORS.NULL_COLOR,\n },\n },\n tooltip: {\n headerFormat: '',\n pointFormat:\n `<div style=\"border-bottom: 1px solid ${ChartColors.GREY_COLORS[10]}; padding: 0 8px 7px\">` +\n `<span style=\"font-size: ${HEATMAP_CONSTANTS.HEADER_FONT_SIZE}; color: ${ChartColors.GREY_COLORS[60]}\">{point.tooltipHeaderLabel}</span></div>` +\n `<div style=\"font-size: ${HEATMAP_CONSTANTS.TOOLTIP_FONT_SIZE}; color: ${ChartColors.GREY_COLORS[100]}; margin: 6px 8px 0 8px;\">` +\n `<span style=\"color:{point.color}\">\\u25CF</span> {series.name}: <b>{point.value}{point.unit}</b></div>`,\n },\n xAxis: {\n labels: {\n formatter: this.createXAxisFormatter(),\n },\n lineWidth: 1,\n tickWidth: 0,\n visible: true,\n },\n yAxis: {\n lineWidth: 0,\n labels: {\n step: 3,\n },\n reversed: true,\n visible: true,\n },\n };\n return super.build(mergeDeep(defaultHeatmapOptions, options), locale);\n }\n\n private static createColorAxisFormatter(leastLabel: string, mostLabel: string): AxisLabelsFormatterCallbackFunction {\n return function () {\n if (this.value === this.axis.min) {\n return leastLabel;\n }\n if (this.value === this.axis.max) {\n return mostLabel;\n }\n return '';\n };\n }\n\n private static createXAxisFormatter(): AxisLabelsFormatterCallbackFunction {\n return function () {\n return this.value.toString();\n };\n }\n\n static configureHeatmap(\n categoriesX: string[],\n categoriesY: string[],\n series: SeriesOptionsType[],\n options: Options,\n color: ChartColor,\n leastLabel?: string,\n mostLabel?: string,\n labelDateFormat?: string\n ): void {\n super.configure(series, options, color, labelDateFormat);\n\n this.setAxisCategories(options, categoriesX, categoriesY);\n\n const points = (series[0] as SeriesLineOptions).data as { x: number; y: number; value: number }[];\n const maxValue = points.reduce((max, point) => Math.max(max, point.value), 0) || HEATMAP_CONSTANTS.DEFAULT_MAX_VALUE;\n\n this.configureColorAxis(options, color, maxValue, leastLabel, mostLabel);\n\n this.configureLegend(options);\n }\n\n private static setAxisCategories(options: Options, categoriesX: string[], categoriesY: string[]): void {\n if (categoriesX?.length) {\n (options.xAxis as XAxisOptions).categories = categoriesX;\n }\n if (categoriesY?.length) {\n (options.yAxis as YAxisOptions).categories = categoriesY;\n }\n }\n\n private static configureColorAxis(\n options: Options,\n color: ChartColor,\n maxValue: number,\n leastLabel?: string,\n mostLabel?: string\n ): void {\n const tickPositions = this.buildTickPositions(maxValue);\n const labelsEnabled = !!(leastLabel && mostLabel);\n\n options.colorAxis = {\n ...(options.colorAxis || {}),\n visible: labelsEnabled,\n min: HEATMAP_CONSTANTS.MIN_VALUE,\n max: HEATMAP_CONSTANTS.DEFAULT_MAX_VALUE,\n tickPositions,\n maxColor: ChartColors.getChartColors(color)[100],\n };\n\n if (labelsEnabled) {\n options.colorAxis.labels = {\n ...((options.colorAxis as ColorAxisOptions)?.labels || {}),\n formatter: this.createColorAxisFormatter(leastLabel, mostLabel),\n };\n }\n }\n\n private static configureLegend(options: Options): void {\n options.legend = {\n ...options.legend,\n enabled: true,\n };\n }\n\n private static buildTickPositions(maxValue: number): number[] {\n const tickAmount = HEATMAP_CONSTANTS.DEFAULT_TICK_AMOUNT;\n\n // Calculate the step between each tick\n // We subtract 1 from tickAmount so that the last tick is exactly at maxValue\n const step = maxValue / (tickAmount - 1);\n\n // Generate an array of positions for the ticks\n // Each position is calculated as i * step and rounded to 2 decimal places\n return Array.from({ length: tickAmount }, (_, i) => parseFloat((i * step).toFixed(2)));\n }\n}\n","import { Component, effect, input, Input } from '@angular/core';\nimport { SeriesHeatmapOptions } from 'highcharts';\nimport { mapChart } from 'highcharts/highmaps';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartHeatmapOptions } from './chart-heatmap-options.model';\n\ntype LabelKeys = 'least' | 'most';\n\n@Component({\n selector: 'ap-chart-heatmap',\n templateUrl: './chart-heatmap.component.html',\n standalone: true,\n})\nexport class ChartHeatmapComponent extends AbstractChartComponent {\n @Input() categoriesX: string[] = [];\n @Input() categoriesY: string[] = [];\n @Input() override series: SeriesHeatmapOptions[] = [];\n\n legendLabels = input<Record<LabelKeys, string>>();\n\n private readonly legendLabelsEffect = effect(() => {\n this.legendLabels();\n this.initChart();\n });\n\n initChart(): void {\n if (this.series && this.chartRef) {\n const chartOptions = ChartHeatmapOptions.build(this.chartOptions, this.locale);\n ChartHeatmapOptions.configureHeatmap(\n this.categoriesX,\n this.categoriesY,\n this.series,\n chartOptions,\n this.color,\n this.legendLabels()?.least,\n this.legendLabels()?.most,\n this.labelDateFormat\n );\n mapChart(this.chartRef.nativeElement, chartOptions);\n }\n }\n}\n","<div #chart></div>\n","export enum ChartMetricType {\n default,\n total,\n}\n\nexport class ChartMetric {\n children?: ChartMetric[];\n name = '';\n type?: ChartMetricType;\n value = 0;\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatListModule } from '@angular/material/list';\nimport { ChartMetric, ChartMetricType } from '../chart-metric';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'ap-chart-metrics-list',\n styleUrls: ['chart-metrics-list.component.scss'],\n templateUrl: 'chart-metrics-list.component.html',\n imports: [CommonModule, MatListModule, MatDividerModule],\n})\nexport class ChartMetricsListComponent {\n @Input({\n required: true,\n })\n metrics: ChartMetric[] = [];\n @Input() locale = 'en';\n\n ChartMetricType = ChartMetricType;\n digitsInfo = '1.0-1';\n}\n","<mat-list>\n @if (metrics) {\n @for (metric of metrics; track metric; let i = $index) {\n <mat-list-item [ngClass]=\"{ 'chart-metric-total': metric.type === ChartMetricType.total }\">\n @if (!metric.children) {\n <div class=\"chart-metric-name metric-label\">\n {{ metric.name }}\n </div>\n }\n @if (metric.children) {\n <div class=\"chart-metric-name\">\n <span class=\"metric-label\">\n {{ metric.name }}\n </span>\n <span class=\"chart-metric-children\">\n @for (item of metric.children; track item) {\n <span>\n <span class=\"child-label\">{{ item.name }}</span>\n :\n <span class=\"child-value\">{{ item.value }}</span>\n </span>\n }\n </span>\n </div>\n }\n <div class=\"chart-metric-value metric-label\">\n {{ metric.value | number: digitsInfo : locale }}\n </div>\n </mat-list-item>\n }\n }\n</mat-list>\n","import { Options } from 'highcharts';\nimport { ChartOptions, mergeDeep } from '../chart-options';\n\nexport class ChartMixedOptions extends ChartOptions {\n static buildMixed(options: Options, singleDayEnabled: boolean, locale: string): Options {\n const defaultOptions: Options = {\n chart: {\n type: 'column',\n },\n legend: {\n symbolHeight: 10,\n },\n plotOptions: {\n series: {\n marker: {\n enabled: singleDayEnabled,\n radius: singleDayEnabled ? 5 : 2,\n symbol: 'circle',\n },\n lineWidth: 4\n },\n column: {\n stacking: 'normal',\n borderWidth: 0,\n maxPointWidth: 20,\n events: {\n hide(): void {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n },\n show(): void {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n },\n },\n },\n },\n xAxis: {\n type: 'datetime',\n },\n };\n return super.build(mergeDeep(defaultOptions, options), locale);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Chart, SeriesOptionsType, SeriesSplineOptions } from 'highcharts';\nimport { ChartOptions } from '../../..';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartMixedOptions } from './chart-mixed-options.model';\n\n@Component({\n selector: 'ap-chart-mixed',\n templateUrl: './chart-mixed.component.html',\n standalone: true,\n})\nexport class ChartMixedComponent extends AbstractChartComponent {\n @Input() override series: SeriesOptionsType[] = [];\n\n initChart(): void {\n if (this.series) {\n const singleDayEnabled = (this.series.find(serie => serie.type === 'spline') as SeriesSplineOptions)?.data?.length === 1;\n const chartOptions = ChartMixedOptions.buildMixed(this.chartOptions, singleDayEnabled, this.locale);\n ChartMixedOptions.configure(this.series, chartOptions, this.color, this.labelDateFormat);\n this.chart = new Chart(this.chartRef.nativeElement, chartOptions);\n if (this.chart) {\n ChartOptions.redrawWithHighestEdgesRounded(this.chart);\n }\n }\n }\n}\n","<div #chart></div>\n","import { numberFormat, Options, PointOptionsObject, SeriesPieDataLabelsOptionsObject, SeriesPieOptions } from 'highcharts';\nimport { ChartColors } from '../chart-colors';\nimport { ChartOptions, mergeDeep } from '../chart-options';\n\nconst NAME_MAX_LENGTH = 30;\nconst RIGHT_TO_LEFT_CHARACTERS =\n /[\\p{Script=Arabic}\\p{Script=Hebrew}\\p{Script=Syriac}\\p{Script=Thaana}\\p{Script=Nko}\\p{Script=Samaritan}\\p{Script=Mandaic}]/u; // Hebrew, Arabic, and other RTL characters\nconst RIGHT_TO_LEFT_EMBEDDING_CHARACTER = '\\u202B'; // Right-to-left embedding character\n\nexport class ChartPieOptions extends ChartOptions {\n static buildPie(options: Options, innerLabels: boolean, metricFormat: 'percentage' | 'value', locale: string): Options {\n const defaultPieOptions: Options = {\n chart: {\n type: 'pie',\n plotBackgroundColor: undefined,\n plotBorderWidth: undefined,\n plotShadow: false,\n },\n plotOptions: {\n pie: {\n dataLabels: {\n distance: innerLabels ? -40 : 30,\n useHTML: true,\n },\n innerSize: '50%',\n },\n series: {\n allowPointSelect: !innerLabels,\n dataLabels: innerLabels\n ? {\n format: metricFormat === 'percentage' ? '{point.percentage:.1f}%' : '{point.y}',\n style: {\n fontSize: '16px',\n color: 'white',\n textOutline: '0',\n },\n }\n : {\n formatter: function () {\n const name =\n this.name.length > NAME_MAX_LENGTH\n ? this.name.substring(0, NAME_MAX_LENGTH) + '...'\n : this.name;\n const displayValue =\n metricFormat === 'percentage'\n ? numberFormat(Math.round((this.percentage ?? 0) * 10) / 10, 1) + '%'\n : numberFormat(this.y ?? 0, -1);\n // Add right-to-left embedding character only if the first character is a right-to-left character\n const prefix = RIGHT_TO_LEFT_CHARACTERS.test(this.name.charAt(0))\n ? RIGHT_TO_LEFT_EMBEDDING_CHARACTER\n : '';\n return prefix + name + ': ' + displayValue;\n },\n style: {\n fontSize: '12px',\n color: ChartColors.GREY_COLORS[60],\n },\n },\n showInLegend: innerLabels,\n states: {\n inactive: {\n opacity: 1,\n },\n },\n },\n },\n tooltip: {\n outside: true,\n },\n legend: innerLabels\n ? {\n symbolHeight: 10,\n enabled: true,\n }\n : {},\n };\n return super.build(mergeDeep(defaultPieOptions, options), locale);\n }\n\n static configurePie(\n series: SeriesPieOptions[],\n options: Options,\n colors: string[],\n labelDateFormat: string,\n innerLabels: boolean,\n mouseEventEnabled = true\n ): void {\n super.configure(series, options, undefined, labelDateFormat);\n if (innerLabels && options.legend) {\n options.legend.enabled = true;\n }\n if (series && series.length > 0 && series[0]) {\n options.colors = colors;\n if (mouseEventEnabled && options.plotOptions?.pie) {\n this.resetColors(series[0].data as PointOptionsObject[], innerLabels);\n options.plotOptions.pie.point ??= {};\n options.plotOptions.pie.point.events ??= {};\n options.plotOptions.pie.events ??= {};\n this.configureEnteringASlice(options, innerLabels);\n this.configureLeavingASlice(options, innerLabels);\n this.configureLeavingTheWholePie(options, innerLabels);\n }\n }\n }\n\n private static resetColors(points: PointOptionsObject[], innerLabels: boolean) {\n points?.forEach(point => {\n delete point?.color;\n if (innerLabels) {\n delete (point.dataLabels as SeriesPieDataLabelsOptionsObject)?.style?.color;\n }\n });\n }\n\n private static configureEnteringASlice(options: Options, innerLabels: boolean) {\n if (options.plotOptions?.pie?.point?.events) {\n options.plotOptions.pie.point.events.mouseOver = function (): void {\n this.series.chart.series[0].points.forEach(point => {\n if (point.index !== this.index) {\n point.update(\n {\n color: ChartColors.GREY_COLORS[5],\n },\n false\n );\n if (innerLabels) {\n point.update(\n {\n dataLabels: {\n style: {\n color: ChartColors.GREY_COLORS[20],\n },\n },\n },\n false\n );\n }\n }\n });\n this.series.chart.redraw(false);\n };\n }\n }\n\n private static configureLeavingASlice(options: Options, innerLabels: boolean) {\n if (options.plotOptions?.pie?.point?.events) {\n options.plotOptions.pie.point.events.mouseOut = function (): void {\n this.series.chart.series[0].points.forEach((point, i) => {\n if (point.index !== this.index) {\n point.update(\n {\n color: options.colors?.[i % options.colors.length],\n },\n false\n );\n if (innerLabels) {\n point.update(\n {\n dataLabels: {\n style: {\n color: 'white',\n },\n },\n },\n false\n );\n }\n }\n });\n };\n }\n }\n\n private static configureLeavingTheWholePie(options: Options, innerLabels: boolean) {\n if (options.plotOptions?.pie?.events) {\n options.plotOptions.pie.events.mouseOut = function (): void {\n this.chart.series[0].points.forEach((point, i) => {\n point.update(\n {\n color: options.colors?.[i % options.colors.length],\n },\n false\n );\n if (innerLabels) {\n point.update(\n {\n dataLabels: {\n style: {\n color: 'white',\n },\n },\n },\n false\n );\n }\n });\n this.chart.redraw();\n };\n }\n }\n}\n","import { afterNextRender, Component, effect, input, Input, signal } from '@angular/core';\nimport { Chart, SeriesPieOptions } from 'highcharts';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartColors } from '../chart-colors';\nimport { ChartPieOptions } from './chart-pie-options.model';\n\n@Component({\n selector: 'ap-chart-pie',\n templateUrl: './chart-pie.component.html',\n standalone: true,\n})\nexport class ChartPieComponent extends AbstractChartComponent {\n @Input() innerLabels = false;\n @Input() mouseEventEnabled = true;\n @Input() override series: SeriesPieOptions[] = [];\n colors = input<string[]>();\n metricFormat = input<'percentage' | 'value'>('percentage');\n\n private domReady = signal(false);\n constructor() {\n super();\n effect(() => {\n if (this.domReady()) {\n this.colors();\n this.initChart();\n }\n });\n\n afterNextRender(() => {\n this.domReady.set(true);\n });\n }\n\n initChart(): void {\n if (this.series) {\n const dataAvailable = this.series[0]?.data && this.series[0].data.length > 0;\n const chartOptions = ChartPieOptions.buildPie(this.chartOptions, this.innerLabels, this.metricFormat(), this.locale);\n\n // Add placeholder series when there's no data\n const updatedSeries = dataAvailable\n ? this.series\n : [\n {\n type: 'pie' as const,\n data: [\n {\n y: 1,\n dataLabels: {\n enabled: false,\n },\n },\n ],\n enableMouseTracking: false,\n },\n ];\n\n let colors = this.colors();\n if (!dataAvailable) {\n colors = [ChartColors.GREY_COLORS[10]];\n } else if (!colors?.length) {\n colors = ChartColors.getColors(this.series[0]?.data?.length ?? 0, this.color);\n }\n ChartPieOptions.configurePie(\n updatedSeries,\n chartOptions,\n colors,\n this.labelDateFormat,\n this.innerLabels,\n this.mouseEventEnabled\n );\n this.chart = new Chart(this.chartRef.nativeElement, chartOptions);\n }\n }\n}\n","<div #chart></div>\n","import { Options } from 'highcharts';\nimport { ChartOptions, mergeDeep } from '../chart-options';\n\nexport class ChartSplineOptions extends ChartOptions {\n static buildSpline(options: Options, singleDayEnabled: boolean, locale: string): Options {\n const defaultSplineOptions: Options = {\n chart: {\n type: 'spline',\n },\n plotOptions: {\n series: {\n marker: {\n enabled: singleDayEnabled,\n radius: singleDayEnabled ? 5 : 2,\n symbol: 'circle',\n },\n lineWidth: 4\n },\n },\n xAxis: {\n type: 'datetime',\n },\n };\n return super.build(mergeDeep(defaultSplineOptions, options), locale);\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Chart, SeriesSplineOptions } from 'highcharts';\nimport { AbstractChartComponent } from '../abstract-chart.component';\nimport { ChartSplineOptions } from './chart-spline-options.model';\n\n@Component({\n selector: 'ap-chart-spline',\n templateUrl: './chart-spline.component.html',\n standalone: true,\n})\nexport class ChartSplineComponent extends AbstractChartComponent {\n @Input() override series: SeriesSplineOptions[] = [];\n @Output() chartInitialized: EventEmitter<Chart> = new EventEmitter();\n\n initChart(): void {\n if (this.series) {\n const chartOptions = ChartSplineOptions.buildSpline(this.chartOptions, this.series[0]?.data?.length === 1, this.locale);\n ChartSplineOptions.configure(this.series, chartOptions, this.color, this.labelDateFormat);\n this.chart = new Chart(this.chartRef.nativeElement, chartOptions);\n this.chartInitialized.emit(this.chart);\n }\n }\n}\n","<div #chart></div>\n","/*\n * Public API Surface of ui-charts\n */\n\nimport * as Highcharts from 'highcharts';\nimport { borderRadiusPlugin } from './src/lib/highcharts-border-radius-plugin';\n\nborderRadiusPlugin(Highcharts);\n\nexport { AbstractChartComponent } from './src/lib/abstract-chart.component';\nexport { ChartBarComponent } from './src/lib/chart-bar/chart-bar.component';\nexport { ChartColor, ChartColors } from './src/lib/chart-colors';\nexport { ChartColumnComponent } from './src/lib/chart-column/chart-column.component';\nexport { ChartHeatmapComponent } from './src/lib/chart-heatmap/chart-heatmap.component';\nexport { ChartMetric, ChartMetricType } from './src/lib/chart-metric';\nexport { ChartMetricsListComponent } from './src/lib/chart-metrics-list/chart-metrics-list.component';\nexport { ChartMixedComponent } from './src/lib/chart-mixed/chart-mixed.component';\nexport { ChartOptions, mergeDeep } from './src/lib/chart-options';\nexport { ChartPieComponent } from './src/lib/chart-pie/chart-pie.component';\nexport { ChartSplineComponent } from './src/lib/chart-spline/chart-spline.component';\n\nexport { borderRadiusPlugin } from './src/lib/highcharts-border-radius-plugin';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -90,6 +90,7 @@ declare abstract class AbstractChartComponent implements AfterViewChecked, OnCha
90
90
  chartOptions: Options;
91
91
  color: ChartColor;
92
92
  labelDateFormat: string;
93
+ locale: string;
93
94
  series: SeriesOptions[];
94
95
  protected chart: Chart;
95
96
  private lastWidth;
@@ -97,7 +98,7 @@ declare abstract class AbstractChartComponent implements AfterViewChecked, OnCha
97
98
  ngAfterViewChecked(): void;
98
99
  abstract initChart(): void;
99
100
  static ɵfac: i0.ɵɵFactoryDeclaration<AbstractChartComponent, never>;
100
- static ɵdir: i0.ɵɵDirectiveDeclaration<AbstractChartComponent, never, never, { "chartOptions": { "alias": "chartOptions"; "required": false; }; "color": { "alias": "color"; "required": false; }; "labelDateFormat": { "alias": "labelDateFormat"; "required": false; }; "series": { "alias": "series"; "required": false; }; }, {}, never, never, true, never>;
101
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AbstractChartComponent, never, never, { "chartOptions": { "alias": "chartOptions"; "required": false; }; "color": { "alias": "color"; "required": false; }; "labelDateFormat": { "alias": "labelDateFormat"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "series": { "alias": "series"; "required": false; }; }, {}, never, never, true, never>;
101
102
  }
102
103
 
103
104
  declare class ChartBarComponent extends AbstractChartComponent {
@@ -169,7 +170,7 @@ interface SeriesRoundedColumnOptions extends SeriesColumnOptions {
169
170
  declare class ChartOptions {
170
171
  static readonly DEFAULT_DATE_FORMAT: string;
171
172
  static readonly DEFAULT_OPTIONS: Options;
172
- static build(options: Options): Options;
173
+ static build(options: Options, locale: string): Options;
173
174
  static configure(series: SeriesOptionsType[], options: Options, color: ChartColor | undefined, labelDateFormat?: string): void;
174
175
  static redrawWithHighestEdgesRounded(chart: Chart): void;
175
176
  static roundHighestSerie(series: Series[], serie: SeriesRoundedColumnOptions, serieIndex: number): void;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@agorapulse/ui-charts",
3
3
  "description": "Agorapulse UI Charts Components Library",
4
- "version": "20.1.6",
4
+ "version": "20.1.7",
5
5
  "author": "Benoit Hediard",
6
6
  "repository": {
7
7
  "type": "git",
Binary file