@lieselthuriot/widget-renderer 0.1.0 → 0.2.0
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.
- package/README.md +299 -244
- package/fesm2022/{lieselthuriot-widget-renderer-chart-accessibility-CXEeXwdH.mjs → lieselthuriot-widget-renderer-chart-accessibility-BzH2alxy.mjs} +23 -16
- package/fesm2022/lieselthuriot-widget-renderer-chart-accessibility-BzH2alxy.mjs.map +1 -0
- package/fesm2022/lieselthuriot-widget-renderer-chart-element-renderer-wVHdIYuJ.mjs +993 -0
- package/fesm2022/lieselthuriot-widget-renderer-chart-element-renderer-wVHdIYuJ.mjs.map +1 -0
- package/fesm2022/lieselthuriot-widget-renderer.mjs +299 -37
- package/fesm2022/lieselthuriot-widget-renderer.mjs.map +1 -1
- package/package.json +10 -8
- package/types/lieselthuriot-widget-renderer.d.ts +42 -8
- package/types/lieselthuriot-widget-renderer.d.ts.map +1 -1
- package/fesm2022/lieselthuriot-widget-renderer-chart-accessibility-CXEeXwdH.mjs.map +0 -1
- package/fesm2022/lieselthuriot-widget-renderer-chart-element-renderer-BO3V-jYo.mjs +0 -722
- package/fesm2022/lieselthuriot-widget-renderer-chart-element-renderer-BO3V-jYo.mjs.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
|
-
import { Injectable, signal } from "@angular/core";
|
|
2
|
+
import { Injectable, signal, untracked } from "@angular/core";
|
|
3
3
|
const chart = {
|
|
4
4
|
progressAriaLabel: (title, value, range) => `${title || "Progress"}, ${value} of ${range}.`,
|
|
5
5
|
gaugeAriaLabel: (title, value, max) => `${title || "Gauge"}, ${value} of ${max}.`,
|
|
@@ -11,6 +11,8 @@ const chart = {
|
|
|
11
11
|
noSegmentsSummary: " No segments.",
|
|
12
12
|
morePoints: (count) => `${count} more points.`,
|
|
13
13
|
progressSegmentLabel: (label, value) => `${label}: ${value}`,
|
|
14
|
+
dataPointLabel: (label, value) => `${label}: ${value}`,
|
|
15
|
+
gaugeValueLabel: "Value",
|
|
14
16
|
progressBreakdown: (label, start, end) => `${label}: ${start} to ${end}`
|
|
15
17
|
};
|
|
16
18
|
const defaultWidgetRendererLocale = { aria: {
|
|
@@ -43,6 +45,7 @@ const germanWidgetRendererLocale = locale({
|
|
|
43
45
|
noDataSummary: (title) => `${title ? `${title}: ` : ""}keine Daten.`,
|
|
44
46
|
noSegmentsSummary: " Keine Segmente.",
|
|
45
47
|
morePoints: (count) => `${count} weitere Datenpunkte.`,
|
|
48
|
+
gaugeValueLabel: "Wert",
|
|
46
49
|
progressSegmentLabel: (label, value) => `${label}: ${value}`,
|
|
47
50
|
progressBreakdown: (label, start, end) => `${label}: ${start} bis ${end}`
|
|
48
51
|
});
|
|
@@ -63,6 +66,8 @@ const frenchWidgetRendererLocale = locale({
|
|
|
63
66
|
noSegmentsSummary: " Aucun segment.",
|
|
64
67
|
morePoints: (count) => `${count} points de données supplémentaires.`,
|
|
65
68
|
progressSegmentLabel: (label, value) => `${label} : ${value}`,
|
|
69
|
+
dataPointLabel: (label, value) => `${label} : ${value}`,
|
|
70
|
+
gaugeValueLabel: "Valeur",
|
|
66
71
|
progressBreakdown: (label, start, end) => `${label} : de ${start} à ${end}`
|
|
67
72
|
});
|
|
68
73
|
const dutchWidgetRendererLocale = locale({
|
|
@@ -81,36 +86,38 @@ const dutchWidgetRendererLocale = locale({
|
|
|
81
86
|
noDataSummary: (title) => `${title ? `${title}: ` : ""}geen gegevens.`,
|
|
82
87
|
noSegmentsSummary: " Geen segmenten.",
|
|
83
88
|
morePoints: (count) => `${count} extra gegevenspunten.`,
|
|
89
|
+
gaugeValueLabel: "Waarde",
|
|
84
90
|
progressSegmentLabel: (label, value) => `${label}: ${value}`,
|
|
85
91
|
progressBreakdown: (label, start, end) => `${label}: ${start} tot ${end}`
|
|
86
92
|
});
|
|
87
93
|
var WidgetTooltip = class WidgetTooltip {
|
|
88
|
-
|
|
94
|
+
state = signal(null, ...ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []);
|
|
89
95
|
overlay = signal(null, ...ngDevMode ? [{ debugName: "overlay" }] : /* istanbul ignore next */ []);
|
|
90
|
-
|
|
96
|
+
currentOwner = signal(null, ...ngDevMode ? [{ debugName: "currentOwner" }] : /* istanbul ignore next */ []);
|
|
97
|
+
owner = this.currentOwner.asReadonly();
|
|
91
98
|
setOverlay(overlay) {
|
|
92
99
|
this.overlay.set(overlay);
|
|
93
100
|
}
|
|
94
101
|
overlayElement() {
|
|
95
102
|
return this.overlay();
|
|
96
103
|
}
|
|
97
|
-
|
|
98
|
-
this.
|
|
99
|
-
this.
|
|
104
|
+
show(owner, state) {
|
|
105
|
+
this.currentOwner.set(owner);
|
|
106
|
+
this.state.set(state);
|
|
100
107
|
}
|
|
101
|
-
|
|
102
|
-
if (this.
|
|
103
|
-
this.
|
|
104
|
-
this.
|
|
108
|
+
hide(owner) {
|
|
109
|
+
if (untracked(this.currentOwner) !== owner) return;
|
|
110
|
+
this.currentOwner.set(null);
|
|
111
|
+
this.state.set(null);
|
|
105
112
|
}
|
|
106
113
|
clear() {
|
|
107
|
-
this.
|
|
108
|
-
this.
|
|
114
|
+
this.currentOwner.set(null);
|
|
115
|
+
this.state.set(null);
|
|
109
116
|
this.overlay.set(null);
|
|
110
117
|
}
|
|
111
118
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
112
119
|
minVersion: "12.0.0",
|
|
113
|
-
version: "22.2.
|
|
120
|
+
version: "22.2.4",
|
|
114
121
|
ngImport: i0,
|
|
115
122
|
type: WidgetTooltip,
|
|
116
123
|
deps: [],
|
|
@@ -118,14 +125,14 @@ var WidgetTooltip = class WidgetTooltip {
|
|
|
118
125
|
});
|
|
119
126
|
static ɵprov = i0.ɵɵngDeclareInjectable({
|
|
120
127
|
minVersion: "12.0.0",
|
|
121
|
-
version: "22.2.
|
|
128
|
+
version: "22.2.4",
|
|
122
129
|
ngImport: i0,
|
|
123
130
|
type: WidgetTooltip
|
|
124
131
|
});
|
|
125
132
|
};
|
|
126
133
|
i0.ɵɵngDeclareClassMetadata({
|
|
127
134
|
minVersion: "12.0.0",
|
|
128
|
-
version: "22.2.
|
|
135
|
+
version: "22.2.4",
|
|
129
136
|
ngImport: i0,
|
|
130
137
|
type: WidgetTooltip,
|
|
131
138
|
decorators: [{ type: Injectable }]
|
|
@@ -175,4 +182,4 @@ function chartAccessibilitySummary(element, locale = defaultWidgetRendererLocale
|
|
|
175
182
|
}
|
|
176
183
|
export { dutchWidgetRendererLocale as a, defaultWidgetRendererLocale as i, chartAriaLabel as n, frenchWidgetRendererLocale as o, WidgetTooltip as r, germanWidgetRendererLocale as s, chartAccessibilitySummary as t };
|
|
177
184
|
|
|
178
|
-
//# sourceMappingURL=lieselthuriot-widget-renderer-chart-accessibility-
|
|
185
|
+
//# sourceMappingURL=lieselthuriot-widget-renderer-chart-accessibility-BzH2alxy.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lieselthuriot-widget-renderer-chart-accessibility-BzH2alxy.mjs","names":[],"sources":["../../../projects/widget-renderer/src/lib/widget-locale.ts","../../../projects/widget-renderer/src/lib/widget-tooltip.ts","../../../projects/widget-renderer/src/lib/chart-accessibility.ts"],"sourcesContent":["export interface WidgetRendererChartLocale {\n progressAriaLabel: (title: string | undefined, value: string, range: string) => string;\n gaugeAriaLabel: (title: string | undefined, value: string, max: string) => string;\n chartAriaLabel: (title: string | undefined, chartType: string, pointCount: number) => string;\n progressSummary: (\n title: string | undefined,\n value: string,\n min: string,\n max: string,\n breakdown: string,\n ) => string;\n gaugeSummary: (\n title: string | undefined,\n value: string,\n max: string,\n percentage: string,\n ) => string;\n dataSummary: (title: string | undefined, points: string) => string;\n noDataSummary: (title: string | undefined) => string;\n noSegmentsSummary: string;\n morePoints: (count: number) => string;\n progressSegmentLabel: (label: string, value: string) => string;\n dataPointLabel: (label: string, value: string) => string;\n gaugeValueLabel: string;\n progressBreakdown: (label: string, start: string, end: string) => string;\n}\n\nexport interface WidgetRendererAriaLocale {\n toolbarActions: string;\n loading: string;\n showSensitiveData: string;\n hideSensitiveData: string;\n imageUnavailable: string;\n chart: WidgetRendererChartLocale;\n}\n\nexport interface WidgetRendererLocale {\n aria: WidgetRendererAriaLocale;\n}\n\nexport interface WidgetRendererLocaleOverrides {\n aria?: Partial<Omit<WidgetRendererAriaLocale, 'chart'>> & {\n chart?: Partial<WidgetRendererChartLocale>;\n };\n}\n\nconst chart = {\n progressAriaLabel: (title: string | undefined, value: string, range: string) =>\n `${title || 'Progress'}, ${value} of ${range}.`,\n gaugeAriaLabel: (title: string | undefined, value: string, max: string) =>\n `${title || 'Gauge'}, ${value} of ${max}.`,\n chartAriaLabel: (title: string | undefined, chartType: string, pointCount: number) =>\n `${title || chartType} chart, ${pointCount} data points.`,\n progressSummary: (\n title: string | undefined,\n value: string,\n min: string,\n max: string,\n breakdown: string,\n ) => `${title || 'Progress'}: ${value} of ${max}; range ${min} to ${max}.${breakdown}`,\n gaugeSummary: (title: string | undefined, value: string, max: string, percentage: string) =>\n `${title || 'Gauge'}: value ${value} of ${max}, ${percentage} percent.`,\n dataSummary: (title: string | undefined, points: string) =>\n `${title ? `${title}: ` : ''}${points}.`,\n noDataSummary: (title: string | undefined) => `${title ? `${title}: ` : ''}no data.`,\n noSegmentsSummary: ' No segments.',\n morePoints: (count: number) => `${count} more points.`,\n progressSegmentLabel: (label: string, value: string) => `${label}: ${value}`,\n dataPointLabel: (label: string, value: string) => `${label}: ${value}`,\n gaugeValueLabel: 'Value',\n progressBreakdown: (label: string, start: string, end: string) => `${label}: ${start} to ${end}`,\n} satisfies WidgetRendererChartLocale;\n\nexport const defaultWidgetRendererLocale: WidgetRendererLocale = {\n aria: {\n toolbarActions: 'Widget actions',\n loading: 'Widget loading',\n showSensitiveData: 'Show sensitive data',\n hideSensitiveData: 'Hide sensitive data',\n imageUnavailable: 'Image unavailable',\n chart,\n },\n};\n\nfunction locale(\n aria: Omit<WidgetRendererAriaLocale, 'chart'>,\n chartLocale: WidgetRendererChartLocale,\n): WidgetRendererLocale {\n return { aria: { ...aria, chart: chartLocale } };\n}\n\nexport const germanWidgetRendererLocale = locale(\n {\n toolbarActions: 'Widget-Aktionen',\n loading: 'Widget wird geladen',\n showSensitiveData: 'Sensible Daten anzeigen',\n hideSensitiveData: 'Sensible Daten ausblenden',\n imageUnavailable: 'Bild nicht verfügbar',\n },\n {\n ...chart,\n progressAriaLabel: (title, value, range) => `${title || 'Fortschritt'}, ${value} von ${range}.`,\n gaugeAriaLabel: (title, value, max) => `${title || 'Messwert'}, ${value} von ${max}.`,\n chartAriaLabel: (title, type, count) => `${title || `${type}-Diagramm`}, ${count} Datenpunkte.`,\n progressSummary: (title, value, min, max, breakdown) =>\n `${title || 'Fortschritt'}: ${value} von ${max}; Bereich ${min} bis ${max}.${breakdown}`,\n gaugeSummary: (title, value, max, percentage) =>\n `${title || 'Messwert'}: Wert ${value} von ${max}, ${percentage} Prozent.`,\n noDataSummary: (title) => `${title ? `${title}: ` : ''}keine Daten.`,\n noSegmentsSummary: ' Keine Segmente.',\n morePoints: (count) => `${count} weitere Datenpunkte.`,\n gaugeValueLabel: 'Wert',\n progressSegmentLabel: (label, value) => `${label}: ${value}`,\n progressBreakdown: (label, start, end) => `${label}: ${start} bis ${end}`,\n },\n);\n\nexport const frenchWidgetRendererLocale = locale(\n {\n toolbarActions: 'Actions du widget',\n loading: 'Chargement du widget',\n showSensitiveData: 'Afficher les données sensibles',\n hideSensitiveData: 'Masquer les données sensibles',\n imageUnavailable: 'Image indisponible',\n },\n {\n ...chart,\n progressAriaLabel: (title, value, range) => `${title || 'Progression'}, ${value} sur ${range}.`,\n gaugeAriaLabel: (title, value, max) => `${title || 'Jauge'}, ${value} sur ${max}.`,\n chartAriaLabel: (title, type, count) =>\n `${title || `Graphique ${type}`}, ${count} points de données.`,\n progressSummary: (title, value, min, max, breakdown) =>\n `${title || 'Progression'} : ${value} sur ${max} ; plage de ${min} à ${max}.${breakdown}`,\n gaugeSummary: (title, value, max, percentage) =>\n `${title || 'Jauge'} : valeur ${value} sur ${max}, ${percentage} pour cent.`,\n noDataSummary: (title) => `${title ? `${title} : ` : ''}aucune donnée.`,\n noSegmentsSummary: ' Aucun segment.',\n morePoints: (count) => `${count} points de données supplémentaires.`,\n progressSegmentLabel: (label, value) => `${label} : ${value}`,\n dataPointLabel: (label, value) => `${label} : ${value}`,\n gaugeValueLabel: 'Valeur',\n progressBreakdown: (label, start, end) => `${label} : de ${start} à ${end}`,\n },\n);\n\nexport const dutchWidgetRendererLocale = locale(\n {\n toolbarActions: 'Widgetacties',\n loading: 'Widget wordt geladen',\n showSensitiveData: 'Gevoelige gegevens tonen',\n hideSensitiveData: 'Gevoelige gegevens verbergen',\n imageUnavailable: 'Afbeelding niet beschikbaar',\n },\n {\n ...chart,\n progressAriaLabel: (title, value, range) => `${title || 'Voortgang'}, ${value} van ${range}.`,\n gaugeAriaLabel: (title, value, max) => `${title || 'Meter'}, ${value} van ${max}.`,\n chartAriaLabel: (title, type, count) =>\n `${title || `${type}-grafiek`}, ${count} gegevenspunten.`,\n progressSummary: (title, value, min, max, breakdown) =>\n `${title || 'Voortgang'}: ${value} van ${max}; bereik ${min} tot ${max}.${breakdown}`,\n gaugeSummary: (title, value, max, percentage) =>\n `${title || 'Meter'}: waarde ${value} van ${max}, ${percentage} procent.`,\n noDataSummary: (title) => `${title ? `${title}: ` : ''}geen gegevens.`,\n noSegmentsSummary: ' Geen segmenten.',\n morePoints: (count) => `${count} extra gegevenspunten.`,\n gaugeValueLabel: 'Waarde',\n progressSegmentLabel: (label, value) => `${label}: ${value}`,\n progressBreakdown: (label, start, end) => `${label}: ${start} tot ${end}`,\n },\n);\n","import { Injectable, signal, untracked } from '@angular/core';\n\nexport interface ChartTooltipState {\n x: number;\n y: number;\n label: string;\n value: number;\n color?: string;\n}\n\n@Injectable()\nexport class WidgetTooltip {\n readonly state = signal<ChartTooltipState | null>(null);\n private readonly overlay = signal<HTMLElement | null>(null);\n private readonly currentOwner = signal<object | null>(null);\n readonly owner = this.currentOwner.asReadonly();\n\n setOverlay(overlay: HTMLElement): void {\n this.overlay.set(overlay);\n }\n\n overlayElement(): HTMLElement | null {\n return this.overlay();\n }\n\n show(owner: object, state: ChartTooltipState): void {\n this.currentOwner.set(owner);\n this.state.set(state);\n }\n\n hide(owner: object): void {\n if (untracked(this.currentOwner) !== owner) return;\n this.currentOwner.set(null);\n this.state.set(null);\n }\n\n clear(): void {\n this.currentOwner.set(null);\n this.state.set(null);\n this.overlay.set(null);\n }\n}\n","import { ChartElement, ProgressElement, ProgressSegment } from './widget.model';\nimport { defaultWidgetRendererLocale, WidgetRendererChartLocale } from './widget-locale';\n\nconst MAX_POINTS = 20;\n\nfunction number(value: number): string {\n return Number.isInteger(value)\n ? `${value}`\n : value.toFixed(2).replace(/0+$/, '').replace(/\\.$/, '');\n}\n\nfunction points(\n data: { label: string; value: number }[],\n locale: WidgetRendererChartLocale,\n): string {\n const visible = data\n .slice(0, MAX_POINTS)\n .map((point) => `${point.label}: ${number(point.value)}`);\n const remaining = data.length - visible.length;\n return remaining > 0\n ? `${visible.join('; ')}; ${locale.morePoints(remaining)}`\n : visible.join('; ');\n}\n\nfunction progressSegments(\n element: ProgressElement,\n): { segment: ProgressSegment; start: number; end: number }[] {\n let position = element.data.min;\n return element.data.items.flatMap((item) => {\n const start = position;\n position += item.value;\n return item.kind === 'segment' ? [{ segment: item, start, end: position }] : [];\n });\n}\n\nfunction progressValue(element: ProgressElement): number {\n return element.data.items.reduce(\n (total, item) => total + (item.kind === 'segment' ? item.value : 0),\n 0,\n );\n}\n\nexport function chartAriaLabel(\n element: ChartElement | ProgressElement,\n locale = defaultWidgetRendererLocale.aria.chart,\n): string {\n if (element.type === 'progress') {\n return locale.progressAriaLabel(\n element.title,\n number(progressValue(element)),\n number(element.data.max - element.data.min),\n );\n }\n if (element.type === 'gauge') {\n return locale.gaugeAriaLabel(\n element.title,\n number(element.data.value),\n number(element.data.max),\n );\n }\n return locale.chartAriaLabel(element.title, element.type, element.data.length);\n}\n\nexport function chartAccessibilitySummary(\n element: ChartElement | ProgressElement,\n locale = defaultWidgetRendererLocale.aria.chart,\n): string {\n if (element.type === 'progress') {\n const segments = progressSegments(element);\n const breakdown = segments.length\n ? ` ${segments.map(({ segment, start, end }) => locale.progressBreakdown(segment.label, number(start), number(end))).join('; ')}.`\n : locale.noSegmentsSummary;\n return locale.progressSummary(\n element.title,\n number(progressValue(element)),\n number(element.data.min),\n number(element.data.max),\n breakdown,\n );\n }\n if (element.type === 'gauge') {\n const range = element.data.max - element.data.min;\n const percentage = Math.max(\n 0,\n Math.min(100, ((element.data.value - element.data.min) / range) * 100),\n );\n return locale.gaugeSummary(\n element.title,\n number(element.data.value),\n number(element.data.max),\n number(percentage),\n );\n }\n if (!element.data.length) return locale.noDataSummary(element.title);\n return locale.dataSummary(element.title, points(element.data, locale));\n}\n"],"mappings":"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"}
|