@fusedashlabs/widgets 0.4.0 → 0.4.1
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/CHANGELOG.md +15 -0
- package/README.md +1 -1
- package/dist/components/chart-renderer/element/ui9000-chart-renderer.d.ts +1 -0
- package/dist/components/chart-renderer/element/ui9000-chart-renderer.d.ts.map +1 -1
- package/dist/components/chart-renderer/element/ui9000-chart-renderer.js +11 -1
- package/dist/components/chart-renderer/element/ui9000-chart-renderer.js.map +1 -1
- package/dist/components/chart-renderer/lib/registry.d.ts.map +1 -1
- package/dist/components/chart-renderer/lib/registry.js +3 -1
- package/dist/components/chart-renderer/lib/registry.js.map +1 -1
- package/dist/components/kpi-widget/element/styles.d.ts.map +1 -1
- package/dist/components/kpi-widget/element/styles.js +268 -5
- package/dist/components/kpi-widget/element/styles.js.map +1 -1
- package/dist/components/kpi-widget/element/ui9000-kpi-widget.d.ts +10 -1
- package/dist/components/kpi-widget/element/ui9000-kpi-widget.d.ts.map +1 -1
- package/dist/components/kpi-widget/element/ui9000-kpi-widget.js +154 -27
- package/dist/components/kpi-widget/element/ui9000-kpi-widget.js.map +1 -1
- package/dist/components/kpi-widget/index.d.ts +1 -1
- package/dist/components/kpi-widget/index.d.ts.map +1 -1
- package/dist/components/kpi-widget/index.js +7 -4
- package/dist/components/kpi-widget/lib/extract.d.ts +5 -1
- package/dist/components/kpi-widget/lib/extract.d.ts.map +1 -1
- package/dist/components/kpi-widget/lib/extract.js +110 -34
- package/dist/components/kpi-widget/lib/extract.js.map +1 -1
- package/dist/components/kpi-widget/lib/format.d.ts +5 -0
- package/dist/components/kpi-widget/lib/format.d.ts.map +1 -1
- package/dist/components/kpi-widget/lib/format.js +10 -1
- package/dist/components/kpi-widget/lib/format.js.map +1 -1
- package/dist/components/kpi-widget/lib/grid.d.ts +5 -0
- package/dist/components/kpi-widget/lib/grid.d.ts.map +1 -1
- package/dist/components/kpi-widget/lib/grid.js +18 -0
- package/dist/components/kpi-widget/lib/grid.js.map +1 -1
- package/dist/components/kpi-widget/lib/index.d.ts +5 -5
- package/dist/components/kpi-widget/lib/index.d.ts.map +1 -1
- package/dist/components/kpi-widget/lib/normalize.d.ts +2 -0
- package/dist/components/kpi-widget/lib/normalize.d.ts.map +1 -1
- package/dist/components/kpi-widget/lib/normalize.js +73 -12
- package/dist/components/kpi-widget/lib/normalize.js.map +1 -1
- package/dist/components/kpi-widget/lib/types.d.ts +41 -0
- package/dist/components/kpi-widget/lib/types.d.ts.map +1 -1
- package/dist/components/kpi-widget/metadata.json.d.ts +1 -1
- package/dist/components/kpi-widget/metadata.json.js +1 -1
- package/dist/components/map-chart/metadata.json.d.ts +1 -1
- package/dist/components/map-chart/metadata.json.js +1 -1
- package/dist/components/map-chart/render/draw.d.ts.map +1 -1
- package/dist/components/map-chart/render/draw.js +2 -1
- package/dist/components/map-chart/render/draw.js.map +1 -1
- package/dist/components/partial-dependence-chart/element/styles.d.ts +2 -0
- package/dist/components/partial-dependence-chart/element/styles.d.ts.map +1 -0
- package/dist/components/partial-dependence-chart/element/styles.js +48 -0
- package/dist/components/partial-dependence-chart/element/styles.js.map +1 -0
- package/dist/components/partial-dependence-chart/element/ui9000-partial-dependence-chart.d.ts +30 -0
- package/dist/components/partial-dependence-chart/element/ui9000-partial-dependence-chart.d.ts.map +1 -0
- package/dist/components/partial-dependence-chart/element/ui9000-partial-dependence-chart.js +163 -0
- package/dist/components/partial-dependence-chart/element/ui9000-partial-dependence-chart.js.map +1 -0
- package/dist/components/partial-dependence-chart/index.d.ts +5 -0
- package/dist/components/partial-dependence-chart/index.d.ts.map +1 -0
- package/dist/components/partial-dependence-chart/index.js +18 -0
- package/dist/components/partial-dependence-chart/index.js.map +1 -0
- package/dist/components/partial-dependence-chart/lib/domain.d.ts +6 -0
- package/dist/components/partial-dependence-chart/lib/domain.d.ts.map +1 -0
- package/dist/components/partial-dependence-chart/lib/domain.js +16 -0
- package/dist/components/partial-dependence-chart/lib/domain.js.map +1 -0
- package/dist/components/partial-dependence-chart/lib/index.d.ts +5 -0
- package/dist/components/partial-dependence-chart/lib/index.d.ts.map +1 -0
- package/dist/components/partial-dependence-chart/lib/normalize.d.ts +4 -0
- package/dist/components/partial-dependence-chart/lib/normalize.d.ts.map +1 -0
- package/dist/components/partial-dependence-chart/lib/normalize.js +167 -0
- package/dist/components/partial-dependence-chart/lib/normalize.js.map +1 -0
- package/dist/components/partial-dependence-chart/lib/series.d.ts +15 -0
- package/dist/components/partial-dependence-chart/lib/series.d.ts.map +1 -0
- package/dist/components/partial-dependence-chart/lib/series.js +63 -0
- package/dist/components/partial-dependence-chart/lib/series.js.map +1 -0
- package/dist/components/partial-dependence-chart/lib/types.d.ts +50 -0
- package/dist/components/partial-dependence-chart/lib/types.d.ts.map +1 -0
- package/dist/components/partial-dependence-chart/metadata.json.d.ts +80 -0
- package/dist/components/partial-dependence-chart/metadata.json.js +42 -0
- package/dist/components/partial-dependence-chart/metadata.json.js.map +1 -0
- package/dist/components/partial-dependence-chart/render/draw.d.ts +34 -0
- package/dist/components/partial-dependence-chart/render/draw.d.ts.map +1 -0
- package/dist/components/partial-dependence-chart/render/draw.js +95 -0
- package/dist/components/partial-dependence-chart/render/draw.js.map +1 -0
- package/dist/components/partial-dependence-chart/render/index.d.ts +2 -0
- package/dist/components/partial-dependence-chart/render/index.d.ts.map +1 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -10
- package/dist/index.js.map +1 -1
- package/dist/lazy/index.d.ts +2 -1
- package/dist/lazy/index.d.ts.map +1 -1
- package/dist/lazy/index.js +8 -0
- package/dist/lazy/index.js.map +1 -1
- package/dist/lazy/partial-dependence-chart.d.ts +4 -0
- package/dist/lazy/partial-dependence-chart.d.ts.map +1 -0
- package/dist/lazy/partial-dependence-chart.js +5 -0
- package/dist/lazy/partial-dependence-chart.js.map +1 -0
- package/dist/utils/chart-helpers.d.ts +2 -0
- package/dist/utils/chart-helpers.d.ts.map +1 -1
- package/dist/utils/chart-helpers.js +15 -0
- package/dist/utils/chart-helpers.js.map +1 -1
- package/dist/utils/fusedash-visual.d.ts +12 -0
- package/dist/utils/fusedash-visual.d.ts.map +1 -1
- package/dist/utils/fusedash-visual.js +7 -0
- package/dist/utils/fusedash-visual.js.map +1 -1
- package/package.json +11 -2
- package/dist/node_modules/lit-html/directive.js +0 -28
- package/dist/node_modules/lit-html/directive.js.map +0 -1
- package/dist/node_modules/lit-html/directives/style-map.js +0 -37
- package/dist/node_modules/lit-html/directives/style-map.js.map +0 -1
- package/dist/node_modules/lit-html/lit-html.js +0 -231
- package/dist/node_modules/lit-html/lit-html.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.4.1 — 2026-09-07
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- KPI widget layouts now match FuseDash: **single**, **grid**, and **advanced** (nested chart + supporting KPIs underneath). Storybook stories are the client types: `single_value`, `trend`, `overall`, `comparison`, `high/low`, `high/low_overall`, `high/low_trend`, plus advanced with supporting KPIs.
|
|
10
|
+
- `<ui9000-partial-dependence-chart>` — D3 port of FuseDash PartialDependenceChart (ICE curves + dashed average) for MCP chat (FUS-4004).
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- Map `usageConditions.hostReady` is now `true`. `canRenderChartType('mapChart' | 'UniversalMap')` is open so MCP hosts can inline `<ui9000-map-chart>` once they pass `mapbox-token` / `geojson-base-url` / `pmtiles-base-url`.
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- Keep every `lit` / `lit/*` import external in the published dist. KPI's `style-map` directive was missing from the Rollup externals list, so Vite rewrote it to `../../../node_modules/lit-html/...` and FuseDash / pnpm hosts failed to resolve it.
|
|
19
|
+
|
|
5
20
|
## 0.4.0 — 2026-09-04
|
|
6
21
|
|
|
7
22
|
### Removed
|
package/README.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui9000-chart-renderer.d.ts","sourceRoot":"","sources":["../../../../src/components/chart-renderer/element/ui9000-chart-renderer.ts"],"names":[],"mappings":"AAsBA,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"ui9000-chart-renderer.d.ts","sourceRoot":"","sources":["../../../../src/components/chart-renderer/element/ui9000-chart-renderer.ts"],"names":[],"mappings":"AAsBA,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAcxC;IAED,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,WAAW,CAAK;IAExB,iBAAiB,IAAI,IAAI;IAqBzB,wBAAwB,IAAI,IAAI;IAIhC,OAAO,KAAK,QAAQ,GAEnB;IAED,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,KAAK,KAAK,GAEhB;IAED,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,SAAS;YAgBH,UAAU;CAgFzB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,uBAAuB,EAAE,mBAAmB,CAAC;KAC9C;CACF;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAI5C"}
|
|
@@ -29,6 +29,7 @@ class Ui9000ChartRenderer extends HTMLElement {
|
|
|
29
29
|
"show-grid",
|
|
30
30
|
"show-legend",
|
|
31
31
|
"show-tooltip",
|
|
32
|
+
"show-header",
|
|
32
33
|
"chart-title",
|
|
33
34
|
"mapbox-token",
|
|
34
35
|
"geojson-base-url",
|
|
@@ -64,6 +65,11 @@ class Ui9000ChartRenderer extends HTMLElement {
|
|
|
64
65
|
get scale() {
|
|
65
66
|
return this.getAttribute("scale") || "default";
|
|
66
67
|
}
|
|
68
|
+
applyBoolProp(el, attr, prop) {
|
|
69
|
+
if (!this.hasAttribute(attr)) return;
|
|
70
|
+
const on = this.getAttribute(attr) !== "false";
|
|
71
|
+
el[prop] = on;
|
|
72
|
+
}
|
|
67
73
|
copyHostAttr(el, name) {
|
|
68
74
|
const value = this.getAttribute(name);
|
|
69
75
|
if (value) el.setAttribute(name, value);
|
|
@@ -114,7 +120,7 @@ class Ui9000ChartRenderer extends HTMLElement {
|
|
|
114
120
|
}
|
|
115
121
|
if (token !== this._mountToken) return;
|
|
116
122
|
const widget = parseJsonAttr(this.dataJson, null);
|
|
117
|
-
const title = ((_a = this.getAttribute("chart-title")) == null ? void 0 : _a.trim()) || (widget && typeof widget === "object" ? (_b = widget.name) == null ? void 0 : _b.trim() : "") || "";
|
|
123
|
+
const title = this.getAttribute("show-header") === "false" ? "" : ((_a = this.getAttribute("chart-title")) == null ? void 0 : _a.trim()) || (widget && typeof widget === "object" ? (_b = widget.name) == null ? void 0 : _b.trim() : "") || "";
|
|
118
124
|
let el = this._host.firstElementChild;
|
|
119
125
|
if (!el || el.tagName.toLowerCase() !== target.tag) {
|
|
120
126
|
this._host.replaceChildren();
|
|
@@ -140,6 +146,10 @@ class Ui9000ChartRenderer extends HTMLElement {
|
|
|
140
146
|
if (showTooltip) el.setAttribute("show-tooltip", "");
|
|
141
147
|
else el.setAttribute("show-tooltip", "false");
|
|
142
148
|
}
|
|
149
|
+
this.applyBoolProp(el, "show-header", "showHeader");
|
|
150
|
+
this.applyBoolProp(el, "show-grid", "showGrid");
|
|
151
|
+
this.applyBoolProp(el, "show-legend", "showLegend");
|
|
152
|
+
this.applyBoolProp(el, "show-tooltip", "showTooltip");
|
|
143
153
|
applyTargetAttrs(el, target.attrs);
|
|
144
154
|
this.copyHostAttr(el, "mapbox-token");
|
|
145
155
|
this.copyHostAttr(el, "geojson-base-url");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui9000-chart-renderer.js","sources":["../../../../src/components/chart-renderer/element/ui9000-chart-renderer.ts"],"sourcesContent":["import { loadChart } from '../../../lazy/index.js';\nimport type { WidgetScale } from '../../../types/index.js';\nimport { parseJsonAttr } from '../../../utils/chart-helpers.js';\nimport {\n resolveChartTarget,\n resolveWidgetChartType,\n type ChartTargetAttrs,\n} from '../lib/index.js';\nimport { chartRendererStyles } from './styles.js';\n\nfunction applyTargetAttrs(el: HTMLElement, attrs?: ChartTargetAttrs): void {\n if (!attrs) return;\n for (const [key, value] of Object.entries(attrs)) {\n if (typeof value === 'boolean') {\n if (value) el.setAttribute(key, '');\n else el.removeAttribute(key);\n } else {\n el.setAttribute(key, String(value));\n }\n }\n}\n\nexport class Ui9000ChartRenderer extends HTMLElement {\n static get observedAttributes(): string[] {\n return [\n 'data',\n 'chart-type',\n 'scale',\n 'show-grid',\n 'show-legend',\n 'show-tooltip',\n 'chart-title',\n 'mapbox-token',\n 'geojson-base-url',\n 'pmtiles-base-url',\n ];\n }\n\n private _host: HTMLDivElement | null = null;\n private _empty: HTMLDivElement | null = null;\n private _mountToken = 0;\n\n connectedCallback(): void {\n if (this._host) return;\n const root = this.attachShadow({ mode: 'open' });\n const style = document.createElement('style');\n style.textContent = chartRendererStyles.cssText;\n root.appendChild(style);\n\n this._host = document.createElement('div');\n this._host.className = 'host';\n this._host.part = 'chart';\n root.appendChild(this._host);\n\n this._empty = document.createElement('div');\n this._empty.className = 'empty';\n this._empty.part = 'empty';\n this._empty.hidden = true;\n root.appendChild(this._empty);\n\n void this.mountChart();\n }\n\n attributeChangedCallback(): void {\n if (this._host) void this.mountChart();\n }\n\n private get dataJson(): string {\n return this.getAttribute('data') ?? '{}';\n }\n\n private get chartTypeAttr(): string {\n return this.getAttribute('chart-type') ?? '';\n }\n\n private get scale(): WidgetScale {\n return (this.getAttribute('scale') as WidgetScale) || 'default';\n }\n\n private copyHostAttr(el: HTMLElement, name: string): void {\n const value = this.getAttribute(name);\n if (value) el.setAttribute(name, value);\n else el.removeAttribute(name);\n }\n\n private boolAttr(name: string): boolean | undefined {\n if (!this.hasAttribute(name)) return undefined;\n return this.getAttribute(name) !== 'false';\n }\n\n private showEmpty(message: string, detail?: string): void {\n if (!this._empty || !this._host) return;\n this._host.replaceChildren();\n this._host.hidden = true;\n this._empty.hidden = false;\n this._empty.replaceChildren();\n const strong = document.createElement('strong');\n strong.textContent = message;\n this._empty.appendChild(strong);\n if (detail) {\n const p = document.createElement('span');\n p.textContent = detail;\n this._empty.appendChild(p);\n }\n }\n\n private async mountChart(): Promise<void> {\n if (!this._host || !this._empty) return;\n const token = ++this._mountToken;\n\n const chartType = resolveWidgetChartType(this.dataJson, this.chartTypeAttr);\n if (!chartType) {\n this.showEmpty('No chart type', 'Pass chart-type or a widget payload with chartType.');\n return;\n }\n\n const target = resolveChartTarget(chartType);\n if (!target) {\n this.showEmpty(\n 'Unsupported chart type',\n `\"${chartType}\" is not available in @ui9000/widgets yet.`,\n );\n return;\n }\n\n try {\n await loadChart(target.kind);\n } catch {\n if (token !== this._mountToken) return;\n this.showEmpty('Failed to load chart', target.kind);\n return;\n }\n\n if (token !== this._mountToken) return;\n\n const widget = parseJsonAttr<{ name?: string } | null>(this.dataJson, null);\n const title =\n this.getAttribute('chart-title')?.trim() ||\n (widget && typeof widget === 'object' ? widget.name?.trim() : '') ||\n '';\n\n let el = this._host.firstElementChild as HTMLElement | null;\n if (!el || el.tagName.toLowerCase() !== target.tag) {\n this._host.replaceChildren();\n el = document.createElement(target.tag);\n this._host.appendChild(el);\n }\n\n el.setAttribute('data', this.dataJson);\n el.setAttribute('scale', this.scale);\n if (title) el.setAttribute('chart-title', title);\n else el.removeAttribute('chart-title');\n\n const showGrid = this.boolAttr('show-grid');\n const showLegend = this.boolAttr('show-legend');\n const showTooltip = this.boolAttr('show-tooltip');\n if (showGrid !== undefined) {\n if (showGrid) el.setAttribute('show-grid', '');\n else el.setAttribute('show-grid', 'false');\n }\n if (showLegend !== undefined) {\n if (showLegend) el.setAttribute('show-legend', '');\n else el.setAttribute('show-legend', 'false');\n }\n if (showTooltip !== undefined) {\n if (showTooltip) el.setAttribute('show-tooltip', '');\n else el.setAttribute('show-tooltip', 'false');\n }\n\n applyTargetAttrs(el, target.attrs);\n this.copyHostAttr(el, 'mapbox-token');\n this.copyHostAttr(el, 'geojson-base-url');\n this.copyHostAttr(el, 'pmtiles-base-url');\n el.style.display = 'block';\n el.style.width = '100%';\n el.style.height = '100%';\n\n this._empty.hidden = true;\n this._host.hidden = false;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ui9000-chart-renderer': Ui9000ChartRenderer;\n }\n}\n\nexport function registerChartRenderer(): void {\n if (!customElements.get('ui9000-chart-renderer')) {\n customElements.define('ui9000-chart-renderer', Ui9000ChartRenderer);\n }\n}\n\nregisterChartRenderer();\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ui9000-chart-renderer.js","sources":["../../../../src/components/chart-renderer/element/ui9000-chart-renderer.ts"],"sourcesContent":["import { loadChart } from '../../../lazy/index.js';\nimport type { WidgetScale } from '../../../types/index.js';\nimport { parseJsonAttr } from '../../../utils/chart-helpers.js';\nimport {\n resolveChartTarget,\n resolveWidgetChartType,\n type ChartTargetAttrs,\n} from '../lib/index.js';\nimport { chartRendererStyles } from './styles.js';\n\nfunction applyTargetAttrs(el: HTMLElement, attrs?: ChartTargetAttrs): void {\n if (!attrs) return;\n for (const [key, value] of Object.entries(attrs)) {\n if (typeof value === 'boolean') {\n if (value) el.setAttribute(key, '');\n else el.removeAttribute(key);\n } else {\n el.setAttribute(key, String(value));\n }\n }\n}\n\nexport class Ui9000ChartRenderer extends HTMLElement {\n static get observedAttributes(): string[] {\n return [\n 'data',\n 'chart-type',\n 'scale',\n 'show-grid',\n 'show-legend',\n 'show-tooltip',\n 'show-header',\n 'chart-title',\n 'mapbox-token',\n 'geojson-base-url',\n 'pmtiles-base-url',\n ];\n }\n\n private _host: HTMLDivElement | null = null;\n private _empty: HTMLDivElement | null = null;\n private _mountToken = 0;\n\n connectedCallback(): void {\n if (this._host) return;\n const root = this.attachShadow({ mode: 'open' });\n const style = document.createElement('style');\n style.textContent = chartRendererStyles.cssText;\n root.appendChild(style);\n\n this._host = document.createElement('div');\n this._host.className = 'host';\n this._host.part = 'chart';\n root.appendChild(this._host);\n\n this._empty = document.createElement('div');\n this._empty.className = 'empty';\n this._empty.part = 'empty';\n this._empty.hidden = true;\n root.appendChild(this._empty);\n\n void this.mountChart();\n }\n\n attributeChangedCallback(): void {\n if (this._host) void this.mountChart();\n }\n\n private get dataJson(): string {\n return this.getAttribute('data') ?? '{}';\n }\n\n private get chartTypeAttr(): string {\n return this.getAttribute('chart-type') ?? '';\n }\n\n private get scale(): WidgetScale {\n return (this.getAttribute('scale') as WidgetScale) || 'default';\n }\n\n private applyBoolProp(el: HTMLElement, attr: string, prop: string): void {\n if (!this.hasAttribute(attr)) return;\n const on = this.getAttribute(attr) !== 'false';\n (el as unknown as Record<string, unknown>)[prop] = on;\n }\n\n private copyHostAttr(el: HTMLElement, name: string): void {\n const value = this.getAttribute(name);\n if (value) el.setAttribute(name, value);\n else el.removeAttribute(name);\n }\n\n private boolAttr(name: string): boolean | undefined {\n if (!this.hasAttribute(name)) return undefined;\n return this.getAttribute(name) !== 'false';\n }\n\n private showEmpty(message: string, detail?: string): void {\n if (!this._empty || !this._host) return;\n this._host.replaceChildren();\n this._host.hidden = true;\n this._empty.hidden = false;\n this._empty.replaceChildren();\n const strong = document.createElement('strong');\n strong.textContent = message;\n this._empty.appendChild(strong);\n if (detail) {\n const p = document.createElement('span');\n p.textContent = detail;\n this._empty.appendChild(p);\n }\n }\n\n private async mountChart(): Promise<void> {\n if (!this._host || !this._empty) return;\n const token = ++this._mountToken;\n\n const chartType = resolveWidgetChartType(this.dataJson, this.chartTypeAttr);\n if (!chartType) {\n this.showEmpty('No chart type', 'Pass chart-type or a widget payload with chartType.');\n return;\n }\n\n const target = resolveChartTarget(chartType);\n if (!target) {\n this.showEmpty(\n 'Unsupported chart type',\n `\"${chartType}\" is not available in @ui9000/widgets yet.`,\n );\n return;\n }\n\n try {\n await loadChart(target.kind);\n } catch {\n if (token !== this._mountToken) return;\n this.showEmpty('Failed to load chart', target.kind);\n return;\n }\n\n if (token !== this._mountToken) return;\n\n const widget = parseJsonAttr<{ name?: string } | null>(this.dataJson, null);\n const title =\n this.getAttribute('show-header') === 'false'\n ? ''\n : this.getAttribute('chart-title')?.trim() ||\n (widget && typeof widget === 'object' ? widget.name?.trim() : '') ||\n '';\n\n let el = this._host.firstElementChild as HTMLElement | null;\n if (!el || el.tagName.toLowerCase() !== target.tag) {\n this._host.replaceChildren();\n el = document.createElement(target.tag);\n this._host.appendChild(el);\n }\n\n el.setAttribute('data', this.dataJson);\n el.setAttribute('scale', this.scale);\n if (title) el.setAttribute('chart-title', title);\n else el.removeAttribute('chart-title');\n\n const showGrid = this.boolAttr('show-grid');\n const showLegend = this.boolAttr('show-legend');\n const showTooltip = this.boolAttr('show-tooltip');\n if (showGrid !== undefined) {\n if (showGrid) el.setAttribute('show-grid', '');\n else el.setAttribute('show-grid', 'false');\n }\n if (showLegend !== undefined) {\n if (showLegend) el.setAttribute('show-legend', '');\n else el.setAttribute('show-legend', 'false');\n }\n if (showTooltip !== undefined) {\n if (showTooltip) el.setAttribute('show-tooltip', '');\n else el.setAttribute('show-tooltip', 'false');\n }\n this.applyBoolProp(el, 'show-header', 'showHeader');\n this.applyBoolProp(el, 'show-grid', 'showGrid');\n this.applyBoolProp(el, 'show-legend', 'showLegend');\n this.applyBoolProp(el, 'show-tooltip', 'showTooltip');\n\n applyTargetAttrs(el, target.attrs);\n this.copyHostAttr(el, 'mapbox-token');\n this.copyHostAttr(el, 'geojson-base-url');\n this.copyHostAttr(el, 'pmtiles-base-url');\n el.style.display = 'block';\n el.style.width = '100%';\n el.style.height = '100%';\n\n this._empty.hidden = true;\n this._host.hidden = false;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ui9000-chart-renderer': Ui9000ChartRenderer;\n }\n}\n\nexport function registerChartRenderer(): void {\n if (!customElements.get('ui9000-chart-renderer')) {\n customElements.define('ui9000-chart-renderer', Ui9000ChartRenderer);\n }\n}\n\nregisterChartRenderer();\n"],"names":[],"mappings":";;;;;AAUA,SAAS,iBAAiB,IAAiB,OAAgC;AACzE,MAAI,CAAC,MAAO;AACZ,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AAChD,QAAI,OAAO,UAAU,WAAW;AAC9B,UAAI,MAAO,IAAG,aAAa,KAAK,EAAE;AAAA,UAC7B,IAAG,gBAAgB,GAAG;AAAA,IAC7B,OAAO;AACL,SAAG,aAAa,KAAK,OAAO,KAAK,CAAC;AAAA,IACpC;AAAA,EACF;AACF;AAEO,MAAM,4BAA4B,YAAY;AAAA,EAA9C,cAAA;AAAA,UAAA,GAAA,SAAA;AAiBL,SAAQ,QAA+B;AACvC,SAAQ,SAAgC;AACxC,SAAQ,cAAc;AAAA,EAAA;AAAA,EAlBtB,WAAW,qBAA+B;AACxC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AAAA,EAMA,oBAA0B;AACxB,QAAI,KAAK,MAAO;AAChB,UAAM,OAAO,KAAK,aAAa,EAAE,MAAM,QAAQ;AAC/C,UAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,UAAM,cAAc,oBAAoB;AACxC,SAAK,YAAY,KAAK;AAEtB,SAAK,QAAQ,SAAS,cAAc,KAAK;AACzC,SAAK,MAAM,YAAY;AACvB,SAAK,MAAM,OAAO;AAClB,SAAK,YAAY,KAAK,KAAK;AAE3B,SAAK,SAAS,SAAS,cAAc,KAAK;AAC1C,SAAK,OAAO,YAAY;AACxB,SAAK,OAAO,OAAO;AACnB,SAAK,OAAO,SAAS;AACrB,SAAK,YAAY,KAAK,MAAM;AAE5B,SAAK,KAAK,WAAA;AAAA,EACZ;AAAA,EAEA,2BAAiC;AAC/B,QAAI,KAAK,MAAO,MAAK,KAAK,WAAA;AAAA,EAC5B;AAAA,EAEA,IAAY,WAAmB;AAC7B,WAAO,KAAK,aAAa,MAAM,KAAK;AAAA,EACtC;AAAA,EAEA,IAAY,gBAAwB;AAClC,WAAO,KAAK,aAAa,YAAY,KAAK;AAAA,EAC5C;AAAA,EAEA,IAAY,QAAqB;AAC/B,WAAQ,KAAK,aAAa,OAAO,KAAqB;AAAA,EACxD;AAAA,EAEQ,cAAc,IAAiB,MAAc,MAAoB;AACvE,QAAI,CAAC,KAAK,aAAa,IAAI,EAAG;AAC9B,UAAM,KAAK,KAAK,aAAa,IAAI,MAAM;AACtC,OAA0C,IAAI,IAAI;AAAA,EACrD;AAAA,EAEQ,aAAa,IAAiB,MAAoB;AACxD,UAAM,QAAQ,KAAK,aAAa,IAAI;AACpC,QAAI,MAAO,IAAG,aAAa,MAAM,KAAK;AAAA,QACjC,IAAG,gBAAgB,IAAI;AAAA,EAC9B;AAAA,EAEQ,SAAS,MAAmC;AAClD,QAAI,CAAC,KAAK,aAAa,IAAI,EAAG,QAAO;AACrC,WAAO,KAAK,aAAa,IAAI,MAAM;AAAA,EACrC;AAAA,EAEQ,UAAU,SAAiB,QAAuB;AACxD,QAAI,CAAC,KAAK,UAAU,CAAC,KAAK,MAAO;AACjC,SAAK,MAAM,gBAAA;AACX,SAAK,MAAM,SAAS;AACpB,SAAK,OAAO,SAAS;AACrB,SAAK,OAAO,gBAAA;AACZ,UAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,WAAO,cAAc;AACrB,SAAK,OAAO,YAAY,MAAM;AAC9B,QAAI,QAAQ;AACV,YAAM,IAAI,SAAS,cAAc,MAAM;AACvC,QAAE,cAAc;AAChB,WAAK,OAAO,YAAY,CAAC;AAAA,IAC3B;AAAA,EACF;AAAA,EAEA,MAAc,aAA4B;;AACxC,QAAI,CAAC,KAAK,SAAS,CAAC,KAAK,OAAQ;AACjC,UAAM,QAAQ,EAAE,KAAK;AAErB,UAAM,YAAY,uBAAuB,KAAK,UAAU,KAAK,aAAa;AAC1E,QAAI,CAAC,WAAW;AACd,WAAK,UAAU,iBAAiB,qDAAqD;AACrF;AAAA,IACF;AAEA,UAAM,SAAS,mBAAmB,SAAS;AAC3C,QAAI,CAAC,QAAQ;AACX,WAAK;AAAA,QACH;AAAA,QACA,IAAI,SAAS;AAAA,MAAA;AAEf;AAAA,IACF;AAEA,QAAI;AACF,YAAM,UAAU,OAAO,IAAI;AAAA,IAC7B,QAAQ;AACN,UAAI,UAAU,KAAK,YAAa;AAChC,WAAK,UAAU,wBAAwB,OAAO,IAAI;AAClD;AAAA,IACF;AAEA,QAAI,UAAU,KAAK,YAAa;AAEhC,UAAM,SAAS,cAAwC,KAAK,UAAU,IAAI;AAC1E,UAAM,QACJ,KAAK,aAAa,aAAa,MAAM,UACjC,OACA,UAAK,aAAa,aAAa,MAA/B,mBAAkC,YACjC,UAAU,OAAO,WAAW,YAAW,YAAO,SAAP,mBAAa,SAAS,OAC9D;AAEN,QAAI,KAAK,KAAK,MAAM;AACpB,QAAI,CAAC,MAAM,GAAG,QAAQ,YAAA,MAAkB,OAAO,KAAK;AAClD,WAAK,MAAM,gBAAA;AACX,WAAK,SAAS,cAAc,OAAO,GAAG;AACtC,WAAK,MAAM,YAAY,EAAE;AAAA,IAC3B;AAEA,OAAG,aAAa,QAAQ,KAAK,QAAQ;AACrC,OAAG,aAAa,SAAS,KAAK,KAAK;AACnC,QAAI,MAAO,IAAG,aAAa,eAAe,KAAK;AAAA,QAC1C,IAAG,gBAAgB,aAAa;AAErC,UAAM,WAAW,KAAK,SAAS,WAAW;AAC1C,UAAM,aAAa,KAAK,SAAS,aAAa;AAC9C,UAAM,cAAc,KAAK,SAAS,cAAc;AAChD,QAAI,aAAa,QAAW;AAC1B,UAAI,SAAU,IAAG,aAAa,aAAa,EAAE;AAAA,UACxC,IAAG,aAAa,aAAa,OAAO;AAAA,IAC3C;AACA,QAAI,eAAe,QAAW;AAC5B,UAAI,WAAY,IAAG,aAAa,eAAe,EAAE;AAAA,UAC5C,IAAG,aAAa,eAAe,OAAO;AAAA,IAC7C;AACA,QAAI,gBAAgB,QAAW;AAC7B,UAAI,YAAa,IAAG,aAAa,gBAAgB,EAAE;AAAA,UAC9C,IAAG,aAAa,gBAAgB,OAAO;AAAA,IAC9C;AACA,SAAK,cAAc,IAAI,eAAe,YAAY;AAClD,SAAK,cAAc,IAAI,aAAa,UAAU;AAC9C,SAAK,cAAc,IAAI,eAAe,YAAY;AAClD,SAAK,cAAc,IAAI,gBAAgB,aAAa;AAEpD,qBAAiB,IAAI,OAAO,KAAK;AACjC,SAAK,aAAa,IAAI,cAAc;AACpC,SAAK,aAAa,IAAI,kBAAkB;AACxC,SAAK,aAAa,IAAI,kBAAkB;AACxC,OAAG,MAAM,UAAU;AACnB,OAAG,MAAM,QAAQ;AACjB,OAAG,MAAM,SAAS;AAElB,SAAK,OAAO,SAAS;AACrB,SAAK,MAAM,SAAS;AAAA,EACtB;AACF;AAQO,SAAS,wBAA8B;AAC5C,MAAI,CAAC,eAAe,IAAI,uBAAuB,GAAG;AAChD,mBAAe,OAAO,yBAAyB,mBAAmB;AAAA,EACpE;AACF;AAEA,sBAAA;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/components/chart-renderer/lib/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/components/chart-renderer/lib/registry.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAqB,WAAW,EAAoB,MAAM,YAAY,CAAC;AAEnF,6FAA6F;AAC7F,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgB/D,CAAC;AA+EF,eAAO,MAAM,qBAAqB,mBAA8C,CAAC;AAEjF,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAI3F;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAI3F;AAMD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAIhF"}
|
|
@@ -28,6 +28,7 @@ import stepLineMeta from "../../step-line-chart/metadata.json.js";
|
|
|
28
28
|
import treemapMeta from "../../treemap-chart/metadata.json.js";
|
|
29
29
|
import violinMeta from "../../violin-chart/metadata.json.js";
|
|
30
30
|
import waterfallMeta from "../../waterfall-chart/metadata.json.js";
|
|
31
|
+
import partialDependenceMeta from "../../partial-dependence-chart/metadata.json.js";
|
|
31
32
|
const CHART_TYPE_ALIASES = {
|
|
32
33
|
barGroupedChart: "barGrouped",
|
|
33
34
|
barStackedChart: "barStacked",
|
|
@@ -75,7 +76,8 @@ const METADATA = [
|
|
|
75
76
|
stepLineMeta,
|
|
76
77
|
treemapMeta,
|
|
77
78
|
violinMeta,
|
|
78
|
-
waterfallMeta
|
|
79
|
+
waterfallMeta,
|
|
80
|
+
partialDependenceMeta
|
|
79
81
|
];
|
|
80
82
|
function toDomAttr(camelKey) {
|
|
81
83
|
return camelKey.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sources":["../../../../src/components/chart-renderer/lib/registry.ts"],"sourcesContent":["import type { ChartKind } from '../../../lazy/index.js';\nimport areaChartMeta from '../../area-chart/metadata.json';\nimport areaGroupedBarMeta from '../../area-grouped-bar-chart/metadata.json';\nimport barChartMeta from '../../bar-chart/metadata.json';\nimport biasVarianceTradeoffMeta from '../../bias-variance-tradeoff-chart/metadata.json';\nimport boxPlotMeta from '../../box-plot-chart/metadata.json';\nimport bubbleMeta from '../../bubble-chart/metadata.json';\nimport donutMeta from '../../donut-chart/metadata.json';\nimport giniImpurityEntropyMeta from '../../gini-impurity-entropy-chart/metadata.json';\nimport histogramMeta from '../../histogram-chart/metadata.json';\nimport kpiMeta from '../../kpi-widget/metadata.json';\nimport lineMeta from '../../line-chart/metadata.json';\nimport lollipopMeta from '../../lollipop/metadata.json';\nimport mapChartMeta from '../../map-chart/metadata.json';\nimport matrixMeta from '../../matrix-chart/metadata.json';\nimport networkGraphMeta from '../../network-graph/metadata.json';\nimport parallelCoordinatesMeta from '../../parallel-coordinates-chart/metadata.json';\nimport pieMeta from '../../pie-chart/metadata.json';\nimport polarAreaMeta from '../../polar-area-chart/metadata.json';\nimport punchcardMeta from '../../punchcard-chart/metadata.json';\nimport radarMeta from '../../radar-chart/metadata.json';\nimport radialBarMeta from '../../radial-bar-chart/metadata.json';\nimport sankeyMeta from '../../sankey-chart/metadata.json';\nimport scatterPlotMeta from '../../scatter-plot-chart/metadata.json';\nimport scatterSparklineMeta from '../../scatter-sparkline-chart/metadata.json';\nimport sparkAreaMeta from '../../spark-area-chart/metadata.json';\nimport sparkLineMeta from '../../spark-line-chart/metadata.json';\nimport stepLineMeta from '../../step-line-chart/metadata.json';\nimport treemapMeta from '../../treemap-chart/metadata.json';\nimport violinMeta from '../../violin-chart/metadata.json';\nimport waterfallMeta from '../../waterfall-chart/metadata.json';\nimport type { ChartMetadataLike, ChartTarget, ChartTargetAttrs } from './types.js';\n\n/** FuseDash variant / legacy chartType → registry key (mirrors client chartTypeRegistry). */\nexport const CHART_TYPE_ALIASES: Readonly<Record<string, string>> = {\n barGroupedChart: 'barGrouped',\n barStackedChart: 'barStacked',\n cumulativeBarChart: 'cumulativeBar',\n barHorizontalChart: 'barHorizontal',\n barHorizontalGroupedChart: 'barHorizontalGrouped',\n barHorizontalStackedChart: 'barHorizontalStacked',\n lollipopGroupedChart: 'lollipopGroupedChart',\n lollipopStackedChart: 'lollipopStackedChart',\n lineGroupedChart: 'lineGroupedChart',\n areaStackedChart: 'areaStackedChart',\n qqPlot: 'qqPlot',\n radarChartGrouped: 'radarGroupedChart',\n /** Client charts mock / MCP spelling */\n rocPlotChart: 'rocCurveChart',\n UniversalMap: 'mapChart',\n};\n\nconst METADATA: ChartMetadataLike[] = [\n areaChartMeta,\n areaGroupedBarMeta,\n barChartMeta,\n biasVarianceTradeoffMeta,\n boxPlotMeta,\n bubbleMeta,\n donutMeta,\n giniImpurityEntropyMeta,\n histogramMeta,\n kpiMeta,\n lineMeta,\n lollipopMeta,\n mapChartMeta,\n matrixMeta,\n networkGraphMeta,\n parallelCoordinatesMeta,\n pieMeta,\n polarAreaMeta,\n punchcardMeta,\n radarMeta,\n radialBarMeta,\n sankeyMeta,\n scatterPlotMeta,\n scatterSparklineMeta,\n sparkAreaMeta,\n sparkLineMeta,\n stepLineMeta,\n treemapMeta,\n violinMeta,\n waterfallMeta,\n];\n\nfunction toDomAttr(camelKey: string): string {\n return camelKey.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`);\n}\n\nfunction attrsFromMap(raw?: Record<string, unknown>): ChartTargetAttrs | undefined {\n if (!raw) return undefined;\n const out: ChartTargetAttrs = {};\n for (const [key, value] of Object.entries(raw)) {\n if (typeof value === 'string' || typeof value === 'boolean' || typeof value === 'number') {\n out[toDomAttr(key)] = value;\n }\n }\n return Object.keys(out).length ? out : undefined;\n}\n\nfunction entriesFromMeta(meta: ChartMetadataLike): Record<string, ChartTarget> {\n const kind = meta.id as ChartKind;\n const out: Record<string, ChartTarget> = {};\n for (const chartType of meta.chartTypeKeys ?? []) {\n out[chartType] = {\n kind,\n tag: meta.tag,\n attrs: attrsFromMap(meta.chartTypeMap?.[chartType]),\n };\n }\n return out;\n}\n\nconst REGISTRY: Record<string, ChartTarget> = METADATA.reduce(\n (acc, meta) => Object.assign(acc, entriesFromMeta(meta)),\n {} as Record<string, ChartTarget>,\n);\n\n/** KS / ROC overlays map to step-line `graf-type`. */\nREGISTRY.ksPlotChart = {\n ...REGISTRY.ksPlotChart,\n attrs: { 'graf-type': 'curve' },\n};\nREGISTRY.rocCurveChart = {\n ...REGISTRY.rocCurveChart,\n attrs: { 'graf-type': 'line' },\n};\n\nexport const SUPPORTED_CHART_TYPES = Object.freeze(Object.keys(REGISTRY).sort());\n\nexport function resolveRegistryKey(chartType: string | undefined | null): string | undefined {\n if (!chartType?.trim()) return undefined;\n const trimmed = chartType.trim();\n return CHART_TYPE_ALIASES[trimmed] ?? trimmed;\n}\n\n/** Resolve FuseDash chartType → lazy ChartKind + host tag + optional attrs. */\nexport function resolveChartTarget(chartType: string | undefined | null): ChartTarget | null {\n const key = resolveRegistryKey(chartType);\n if (!key) return null;\n return REGISTRY[key] ?? null;\n}\n\nconst HOST_NOT_READY = new Set(\n METADATA.filter((meta) => meta.usageConditions?.hostReady === false).map((meta) => meta.id),\n);\n\nexport function canRenderChartType(chartType: string | undefined | null): boolean {\n const target = resolveChartTarget(chartType);\n if (!target) return false;\n return !HOST_NOT_READY.has(target.kind);\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.js","sources":["../../../../src/components/chart-renderer/lib/registry.ts"],"sourcesContent":["import type { ChartKind } from '../../../lazy/index.js';\nimport areaChartMeta from '../../area-chart/metadata.json';\nimport areaGroupedBarMeta from '../../area-grouped-bar-chart/metadata.json';\nimport barChartMeta from '../../bar-chart/metadata.json';\nimport biasVarianceTradeoffMeta from '../../bias-variance-tradeoff-chart/metadata.json';\nimport boxPlotMeta from '../../box-plot-chart/metadata.json';\nimport bubbleMeta from '../../bubble-chart/metadata.json';\nimport donutMeta from '../../donut-chart/metadata.json';\nimport giniImpurityEntropyMeta from '../../gini-impurity-entropy-chart/metadata.json';\nimport histogramMeta from '../../histogram-chart/metadata.json';\nimport kpiMeta from '../../kpi-widget/metadata.json';\nimport lineMeta from '../../line-chart/metadata.json';\nimport lollipopMeta from '../../lollipop/metadata.json';\nimport mapChartMeta from '../../map-chart/metadata.json';\nimport matrixMeta from '../../matrix-chart/metadata.json';\nimport networkGraphMeta from '../../network-graph/metadata.json';\nimport parallelCoordinatesMeta from '../../parallel-coordinates-chart/metadata.json';\nimport pieMeta from '../../pie-chart/metadata.json';\nimport polarAreaMeta from '../../polar-area-chart/metadata.json';\nimport punchcardMeta from '../../punchcard-chart/metadata.json';\nimport radarMeta from '../../radar-chart/metadata.json';\nimport radialBarMeta from '../../radial-bar-chart/metadata.json';\nimport sankeyMeta from '../../sankey-chart/metadata.json';\nimport scatterPlotMeta from '../../scatter-plot-chart/metadata.json';\nimport scatterSparklineMeta from '../../scatter-sparkline-chart/metadata.json';\nimport sparkAreaMeta from '../../spark-area-chart/metadata.json';\nimport sparkLineMeta from '../../spark-line-chart/metadata.json';\nimport stepLineMeta from '../../step-line-chart/metadata.json';\nimport treemapMeta from '../../treemap-chart/metadata.json';\nimport violinMeta from '../../violin-chart/metadata.json';\nimport waterfallMeta from '../../waterfall-chart/metadata.json';\nimport partialDependenceMeta from '../../partial-dependence-chart/metadata.json';\nimport type { ChartMetadataLike, ChartTarget, ChartTargetAttrs } from './types.js';\n\n/** FuseDash variant / legacy chartType → registry key (mirrors client chartTypeRegistry). */\nexport const CHART_TYPE_ALIASES: Readonly<Record<string, string>> = {\n barGroupedChart: 'barGrouped',\n barStackedChart: 'barStacked',\n cumulativeBarChart: 'cumulativeBar',\n barHorizontalChart: 'barHorizontal',\n barHorizontalGroupedChart: 'barHorizontalGrouped',\n barHorizontalStackedChart: 'barHorizontalStacked',\n lollipopGroupedChart: 'lollipopGroupedChart',\n lollipopStackedChart: 'lollipopStackedChart',\n lineGroupedChart: 'lineGroupedChart',\n areaStackedChart: 'areaStackedChart',\n qqPlot: 'qqPlot',\n radarChartGrouped: 'radarGroupedChart',\n /** Client charts mock / MCP spelling */\n rocPlotChart: 'rocCurveChart',\n UniversalMap: 'mapChart',\n};\n\nconst METADATA: ChartMetadataLike[] = [\n areaChartMeta,\n areaGroupedBarMeta,\n barChartMeta,\n biasVarianceTradeoffMeta,\n boxPlotMeta,\n bubbleMeta,\n donutMeta,\n giniImpurityEntropyMeta,\n histogramMeta,\n kpiMeta,\n lineMeta,\n lollipopMeta,\n mapChartMeta,\n matrixMeta,\n networkGraphMeta,\n parallelCoordinatesMeta,\n pieMeta,\n polarAreaMeta,\n punchcardMeta,\n radarMeta,\n radialBarMeta,\n sankeyMeta,\n scatterPlotMeta,\n scatterSparklineMeta,\n sparkAreaMeta,\n sparkLineMeta,\n stepLineMeta,\n treemapMeta,\n violinMeta,\n waterfallMeta,\n partialDependenceMeta,\n];\n\nfunction toDomAttr(camelKey: string): string {\n return camelKey.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`);\n}\n\nfunction attrsFromMap(raw?: Record<string, unknown>): ChartTargetAttrs | undefined {\n if (!raw) return undefined;\n const out: ChartTargetAttrs = {};\n for (const [key, value] of Object.entries(raw)) {\n if (typeof value === 'string' || typeof value === 'boolean' || typeof value === 'number') {\n out[toDomAttr(key)] = value;\n }\n }\n return Object.keys(out).length ? out : undefined;\n}\n\nfunction entriesFromMeta(meta: ChartMetadataLike): Record<string, ChartTarget> {\n const kind = meta.id as ChartKind;\n const out: Record<string, ChartTarget> = {};\n for (const chartType of meta.chartTypeKeys ?? []) {\n out[chartType] = {\n kind,\n tag: meta.tag,\n attrs: attrsFromMap(meta.chartTypeMap?.[chartType]),\n };\n }\n return out;\n}\n\nconst REGISTRY: Record<string, ChartTarget> = METADATA.reduce(\n (acc, meta) => Object.assign(acc, entriesFromMeta(meta)),\n {} as Record<string, ChartTarget>,\n);\n\n/** KS / ROC overlays map to step-line `graf-type`. */\nREGISTRY.ksPlotChart = {\n ...REGISTRY.ksPlotChart,\n attrs: { 'graf-type': 'curve' },\n};\nREGISTRY.rocCurveChart = {\n ...REGISTRY.rocCurveChart,\n attrs: { 'graf-type': 'line' },\n};\n\nexport const SUPPORTED_CHART_TYPES = Object.freeze(Object.keys(REGISTRY).sort());\n\nexport function resolveRegistryKey(chartType: string | undefined | null): string | undefined {\n if (!chartType?.trim()) return undefined;\n const trimmed = chartType.trim();\n return CHART_TYPE_ALIASES[trimmed] ?? trimmed;\n}\n\n/** Resolve FuseDash chartType → lazy ChartKind + host tag + optional attrs. */\nexport function resolveChartTarget(chartType: string | undefined | null): ChartTarget | null {\n const key = resolveRegistryKey(chartType);\n if (!key) return null;\n return REGISTRY[key] ?? null;\n}\n\nconst HOST_NOT_READY = new Set(\n METADATA.filter((meta) => meta.usageConditions?.hostReady === false).map((meta) => meta.id),\n);\n\nexport function canRenderChartType(chartType: string | undefined | null): boolean {\n const target = resolveChartTarget(chartType);\n if (!target) return false;\n return !HOST_NOT_READY.has(target.kind);\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/components/kpi-widget/element/styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/components/kpi-widget/element/styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,yBAoZ3B,CAAC"}
|
|
@@ -11,22 +11,43 @@ const kpiWidgetStyles = css`
|
|
|
11
11
|
box-sizing: border-box;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
.kpi-root[data-
|
|
14
|
+
.kpi-root[data-layout='single'] {
|
|
15
15
|
min-height: 120px;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
.kpi-root[data-layout='advanced'] {
|
|
19
|
+
min-height: 220px;
|
|
20
|
+
}
|
|
21
|
+
|
|
18
22
|
.kpi-root {
|
|
19
23
|
display: flex;
|
|
20
24
|
flex-direction: column;
|
|
21
25
|
width: 100%;
|
|
22
26
|
height: 100%;
|
|
23
27
|
min-height: inherit;
|
|
28
|
+
min-width: 0;
|
|
29
|
+
overflow: hidden;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.kpi-section-title {
|
|
33
|
+
flex: 0 0 auto;
|
|
34
|
+
width: 100%;
|
|
35
|
+
min-width: 0;
|
|
36
|
+
padding: 8px 14px 4px;
|
|
37
|
+
font-size: 14px;
|
|
38
|
+
line-height: 20px;
|
|
39
|
+
font-weight: 600;
|
|
40
|
+
color: var(--ui9000-color-text, #111827);
|
|
41
|
+
white-space: nowrap;
|
|
42
|
+
overflow: hidden;
|
|
43
|
+
text-overflow: ellipsis;
|
|
24
44
|
}
|
|
25
45
|
|
|
26
46
|
.kpi-grid {
|
|
27
47
|
flex: 1;
|
|
28
48
|
min-height: 0;
|
|
29
49
|
width: 100%;
|
|
50
|
+
scrollbar-width: thin;
|
|
30
51
|
}
|
|
31
52
|
|
|
32
53
|
.kpi-grid[data-layout='grid'] {
|
|
@@ -57,10 +78,109 @@ const kpiWidgetStyles = css`
|
|
|
57
78
|
overflow: auto;
|
|
58
79
|
}
|
|
59
80
|
|
|
60
|
-
.kpi-
|
|
81
|
+
.kpi-advanced {
|
|
82
|
+
display: flex;
|
|
83
|
+
flex-direction: column;
|
|
84
|
+
flex: 1;
|
|
85
|
+
min-width: 0;
|
|
86
|
+
min-height: 0;
|
|
87
|
+
overflow: hidden;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.kpi-advanced-main {
|
|
91
|
+
display: flex;
|
|
92
|
+
flex-direction: column;
|
|
93
|
+
flex: 1 1 0;
|
|
94
|
+
width: 100%;
|
|
95
|
+
min-width: 0;
|
|
96
|
+
min-height: 80px;
|
|
97
|
+
overflow: hidden;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.kpi-advanced-main .kpi-card {
|
|
101
|
+
flex: 1;
|
|
102
|
+
min-height: 0;
|
|
103
|
+
padding: 14px 16px 8px;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.kpi-advanced-split {
|
|
107
|
+
display: flex;
|
|
108
|
+
flex: 1;
|
|
109
|
+
min-width: 0;
|
|
110
|
+
min-height: 0;
|
|
111
|
+
align-items: stretch;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.kpi-advanced-split[data-split='horizontal'] {
|
|
115
|
+
flex-direction: row;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.kpi-advanced-split[data-split='stacked'] {
|
|
119
|
+
flex-direction: column;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.kpi-advanced-value {
|
|
123
|
+
display: flex;
|
|
124
|
+
flex-direction: column;
|
|
125
|
+
justify-content: center;
|
|
126
|
+
min-width: 0;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.kpi-advanced-split[data-split='horizontal'] .kpi-advanced-value {
|
|
130
|
+
flex: 0 0 25%;
|
|
131
|
+
width: 25%;
|
|
132
|
+
padding-right: 8px;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.kpi-advanced-split[data-split='stacked'] .kpi-advanced-value {
|
|
136
|
+
flex: 0 0 auto;
|
|
137
|
+
width: 100%;
|
|
138
|
+
margin-bottom: 8px;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.kpi-advanced-chart {
|
|
142
|
+
min-width: 0;
|
|
143
|
+
min-height: 0;
|
|
144
|
+
flex: 1 1 0;
|
|
145
|
+
position: relative;
|
|
146
|
+
overflow: hidden;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.kpi-advanced-chart ui9000-chart-renderer {
|
|
150
|
+
display: block;
|
|
151
|
+
width: 100%;
|
|
152
|
+
height: 100%;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.kpi-supporting {
|
|
156
|
+
display: grid;
|
|
157
|
+
grid-auto-rows: minmax(72px, 1fr);
|
|
158
|
+
gap: 0;
|
|
159
|
+
flex: 0 1 auto;
|
|
160
|
+
min-width: 0;
|
|
161
|
+
min-height: 72px;
|
|
162
|
+
max-height: 50%;
|
|
163
|
+
width: 100%;
|
|
164
|
+
align-content: start;
|
|
165
|
+
border-top: 1px solid var(--ui9000-color-border, #e5e7eb);
|
|
166
|
+
padding-top: 4px;
|
|
61
167
|
scrollbar-width: thin;
|
|
62
168
|
}
|
|
63
169
|
|
|
170
|
+
.kpi-supporting[data-scroll='vertical'] {
|
|
171
|
+
overflow-x: hidden;
|
|
172
|
+
overflow-y: auto;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.kpi-supporting[data-scroll='horizontal'] {
|
|
176
|
+
overflow-x: auto;
|
|
177
|
+
overflow-y: hidden;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.kpi-supporting[data-scroll='both'] {
|
|
181
|
+
overflow: auto;
|
|
182
|
+
}
|
|
183
|
+
|
|
64
184
|
.kpi-card {
|
|
65
185
|
display: flex;
|
|
66
186
|
flex-direction: column;
|
|
@@ -74,15 +194,78 @@ const kpiWidgetStyles = css`
|
|
|
74
194
|
padding: 14px;
|
|
75
195
|
}
|
|
76
196
|
|
|
197
|
+
.kpi-header {
|
|
198
|
+
display: flex;
|
|
199
|
+
justify-content: space-between;
|
|
200
|
+
align-items: center;
|
|
201
|
+
width: 100%;
|
|
202
|
+
min-width: 0;
|
|
203
|
+
gap: 8px;
|
|
204
|
+
margin-bottom: 6px;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
.kpi-grid[data-layout='single'] .kpi-header,
|
|
208
|
+
.kpi-advanced-main .kpi-header {
|
|
209
|
+
margin-bottom: 10px;
|
|
210
|
+
}
|
|
211
|
+
|
|
77
212
|
.kpi-name {
|
|
78
|
-
margin: 0
|
|
213
|
+
margin: 0;
|
|
79
214
|
font-size: 12px;
|
|
80
|
-
font-weight:
|
|
215
|
+
font-weight: 600;
|
|
81
216
|
line-height: 1.3;
|
|
82
217
|
color: var(--ui9000-color-text-muted, #6b7280);
|
|
83
218
|
overflow: hidden;
|
|
84
219
|
text-overflow: ellipsis;
|
|
85
220
|
white-space: nowrap;
|
|
221
|
+
flex: 1;
|
|
222
|
+
min-width: 0;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
.kpi-grid[data-layout='single'] .kpi-name,
|
|
226
|
+
.kpi-advanced-main .kpi-name {
|
|
227
|
+
font-size: 14px;
|
|
228
|
+
line-height: 20px;
|
|
229
|
+
color: var(--ui9000-color-text, #111827);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
.kpi-badge {
|
|
233
|
+
flex-shrink: 0;
|
|
234
|
+
width: fit-content;
|
|
235
|
+
display: inline-flex;
|
|
236
|
+
align-items: center;
|
|
237
|
+
justify-content: center;
|
|
238
|
+
font-size: 12px;
|
|
239
|
+
line-height: 16px;
|
|
240
|
+
font-weight: 400;
|
|
241
|
+
padding: 1px 6px;
|
|
242
|
+
border-radius: 14px;
|
|
243
|
+
color: var(--ui9000-color-text-muted, #6b7280);
|
|
244
|
+
background: var(--ui9000-color-surface-muted, #f3f4f6);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
.kpi-grid[data-layout='single'] .kpi-badge,
|
|
248
|
+
.kpi-advanced-main .kpi-badge {
|
|
249
|
+
font-size: 14px;
|
|
250
|
+
line-height: 20px;
|
|
251
|
+
padding: 3px 9px;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
.kpi-badge[data-variant='Good'],
|
|
255
|
+
.kpi-badge[data-variant='OnTarget'] {
|
|
256
|
+
color: #0e8a5b;
|
|
257
|
+
background: rgba(14, 138, 91, 0.12);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
.kpi-badge[data-variant='Low'],
|
|
261
|
+
.kpi-badge[data-variant='OffTarget'] {
|
|
262
|
+
color: #d92d20;
|
|
263
|
+
background: rgba(217, 45, 32, 0.12);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
.kpi-badge[data-variant='Mission'] {
|
|
267
|
+
color: #fff;
|
|
268
|
+
background: #111827;
|
|
86
269
|
}
|
|
87
270
|
|
|
88
271
|
.kpi-value-row {
|
|
@@ -92,6 +275,10 @@ const kpiWidgetStyles = css`
|
|
|
92
275
|
flex-wrap: wrap;
|
|
93
276
|
}
|
|
94
277
|
|
|
278
|
+
.kpi-advanced-main .kpi-value-row {
|
|
279
|
+
flex-wrap: nowrap;
|
|
280
|
+
}
|
|
281
|
+
|
|
95
282
|
.kpi-value {
|
|
96
283
|
margin: 0;
|
|
97
284
|
font-size: 24px;
|
|
@@ -100,17 +287,63 @@ const kpiWidgetStyles = css`
|
|
|
100
287
|
color: var(--ui9000-color-text, #111827);
|
|
101
288
|
}
|
|
102
289
|
|
|
103
|
-
.kpi-
|
|
290
|
+
.kpi-grid[data-layout='single'] .kpi-value {
|
|
291
|
+
font-size: clamp(28px, 8vw, 48px);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
.kpi-advanced-main .kpi-value {
|
|
295
|
+
font-size: clamp(18px, 5vw, 42px);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
:host([scale='compact']) .kpi-value {
|
|
299
|
+
font-size: 18px;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
:host([scale='compact']) .kpi-grid[data-layout='single'] .kpi-value {
|
|
303
|
+
font-size: clamp(20px, 6vw, 32px);
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
:host([scale='comfortable']) .kpi-value {
|
|
307
|
+
font-size: 28px;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
:host([scale='comfortable']) .kpi-grid[data-layout='single'] .kpi-value {
|
|
311
|
+
font-size: clamp(32px, 9vw, 56px);
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
.kpi-unit,
|
|
315
|
+
.kpi-suffix {
|
|
104
316
|
font-size: 14px;
|
|
105
317
|
font-weight: 300;
|
|
318
|
+
color: var(--ui9000-color-text, #111827);
|
|
106
319
|
}
|
|
107
320
|
|
|
108
321
|
.kpi-indicator {
|
|
322
|
+
display: inline-flex;
|
|
323
|
+
align-items: center;
|
|
324
|
+
gap: 2px;
|
|
109
325
|
font-size: 12px;
|
|
110
326
|
font-weight: 600;
|
|
111
327
|
color: var(--ui9000-color-text-muted, #6b7280);
|
|
112
328
|
}
|
|
113
329
|
|
|
330
|
+
.kpi-indicator-arrow {
|
|
331
|
+
font-size: 11px;
|
|
332
|
+
line-height: 1;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
.kpi-subtitle-row {
|
|
336
|
+
display: flex;
|
|
337
|
+
align-items: center;
|
|
338
|
+
gap: 6px;
|
|
339
|
+
min-width: 0;
|
|
340
|
+
margin-top: 4px;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
.kpi-subtitle-row .kpi-subtitle {
|
|
344
|
+
margin-top: 0;
|
|
345
|
+
}
|
|
346
|
+
|
|
114
347
|
.kpi-subtitle {
|
|
115
348
|
margin: 6px 0 0;
|
|
116
349
|
padding-left: 15px;
|
|
@@ -132,6 +365,36 @@ const kpiWidgetStyles = css`
|
|
|
132
365
|
background: var(--ui9000-color-text-muted, #6b7280);
|
|
133
366
|
}
|
|
134
367
|
|
|
368
|
+
.kpi-footer {
|
|
369
|
+
flex: 0 0 auto;
|
|
370
|
+
display: flex;
|
|
371
|
+
justify-content: space-between;
|
|
372
|
+
align-items: center;
|
|
373
|
+
gap: 12px;
|
|
374
|
+
width: 100%;
|
|
375
|
+
padding: 6px 14px 8px;
|
|
376
|
+
border-top: 1px solid var(--ui9000-color-border, #e5e7eb);
|
|
377
|
+
box-sizing: border-box;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
.kpi-footer-block {
|
|
381
|
+
display: flex;
|
|
382
|
+
gap: 4px;
|
|
383
|
+
min-width: 0;
|
|
384
|
+
font-size: 13px;
|
|
385
|
+
line-height: 20px;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
.kpi-footer-label {
|
|
389
|
+
font-weight: 400;
|
|
390
|
+
color: var(--ui9000-color-text-muted, #6b7280);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
.kpi-footer-value {
|
|
394
|
+
font-weight: 400;
|
|
395
|
+
color: var(--ui9000-color-text, #111827);
|
|
396
|
+
}
|
|
397
|
+
|
|
135
398
|
.empty {
|
|
136
399
|
display: grid;
|
|
137
400
|
place-items: center;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sources":["../../../../src/components/kpi-widget/element/styles.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const kpiWidgetStyles = css`\n :host {\n display: block;\n position: relative;\n width: 100%;\n height: 100%;\n min-height: 95px;\n color: var(--ui9000-color-text, #111827);\n font-family: var(--ui9000-font-family, system-ui, sans-serif);\n box-sizing: border-box;\n }\n\n .kpi-root[data-single='true'] {\n min-height: 120px;\n }\n\n .kpi-root {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n min-height: inherit;\n }\n\n .kpi-grid {\n flex: 1;\n min-height: 0;\n width: 100%;\n }\n\n .kpi-grid[data-layout='grid'] {\n display: grid;\n grid-auto-rows: minmax(72px, 1fr);\n gap: 0;\n align-content: start;\n }\n\n .kpi-grid[data-layout='single'] {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: stretch;\n }\n\n .kpi-grid[data-scroll='vertical'] {\n overflow-x: hidden;\n overflow-y: auto;\n }\n\n .kpi-grid[data-scroll='horizontal'] {\n overflow-x: auto;\n overflow-y: hidden;\n }\n\n .kpi-grid[data-scroll='both'] {\n overflow: auto;\n }\n\n .kpi-grid {\n scrollbar-width: thin;\n }\n\n .kpi-card {\n display: flex;\n flex-direction: column;\n justify-content: center;\n min-width: 0;\n padding: 10px 12px;\n box-sizing: border-box;\n }\n\n .kpi-grid[data-layout='single'] .kpi-card {\n padding: 14px;\n }\n\n .kpi-name {\n margin: 0 0 4px;\n font-size: 12px;\n font-weight: 500;\n line-height: 1.3;\n color: var(--ui9000-color-text-muted, #6b7280);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .kpi-value-row {\n display: flex;\n align-items: baseline;\n gap: 4px;\n flex-wrap: wrap;\n }\n\n .kpi-value {\n margin: 0;\n font-size: 24px;\n font-weight: 700;\n line-height: 1.15;\n color: var(--ui9000-color-text, #111827);\n }\n\n .kpi-unit {\n font-size: 14px;\n font-weight: 300;\n }\n\n .kpi-indicator {\n font-size: 12px;\n font-weight: 600;\n color: var(--ui9000-color-text-muted, #6b7280);\n }\n\n .kpi-subtitle {\n margin: 6px 0 0;\n padding-left: 15px;\n position: relative;\n font-size: 12px;\n line-height: 1.35;\n color: var(--ui9000-color-text-muted, #6b7280);\n }\n\n .kpi-subtitle::before {\n content: '';\n position: absolute;\n left: 0;\n top: 50%;\n width: 10px;\n height: 10px;\n border-radius: 50%;\n transform: translateY(-50%);\n background: var(--ui9000-color-text-muted, #6b7280);\n }\n\n .empty {\n display: grid;\n place-items: center;\n flex: 1;\n min-height: 72px;\n color: var(--ui9000-color-text-muted, #6b7280);\n font-size: 13px;\n }\n`;\n"],"names":[],"mappings":";AAEO,MAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
|
|
1
|
+
{"version":3,"file":"styles.js","sources":["../../../../src/components/kpi-widget/element/styles.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const kpiWidgetStyles = css`\n :host {\n display: block;\n position: relative;\n width: 100%;\n height: 100%;\n min-height: 95px;\n color: var(--ui9000-color-text, #111827);\n font-family: var(--ui9000-font-family, system-ui, sans-serif);\n box-sizing: border-box;\n }\n\n .kpi-root[data-layout='single'] {\n min-height: 120px;\n }\n\n .kpi-root[data-layout='advanced'] {\n min-height: 220px;\n }\n\n .kpi-root {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n min-height: inherit;\n min-width: 0;\n overflow: hidden;\n }\n\n .kpi-section-title {\n flex: 0 0 auto;\n width: 100%;\n min-width: 0;\n padding: 8px 14px 4px;\n font-size: 14px;\n line-height: 20px;\n font-weight: 600;\n color: var(--ui9000-color-text, #111827);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .kpi-grid {\n flex: 1;\n min-height: 0;\n width: 100%;\n scrollbar-width: thin;\n }\n\n .kpi-grid[data-layout='grid'] {\n display: grid;\n grid-auto-rows: minmax(72px, 1fr);\n gap: 0;\n align-content: start;\n }\n\n .kpi-grid[data-layout='single'] {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: stretch;\n }\n\n .kpi-grid[data-scroll='vertical'] {\n overflow-x: hidden;\n overflow-y: auto;\n }\n\n .kpi-grid[data-scroll='horizontal'] {\n overflow-x: auto;\n overflow-y: hidden;\n }\n\n .kpi-grid[data-scroll='both'] {\n overflow: auto;\n }\n\n .kpi-advanced {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-width: 0;\n min-height: 0;\n overflow: hidden;\n }\n\n .kpi-advanced-main {\n display: flex;\n flex-direction: column;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: 80px;\n overflow: hidden;\n }\n\n .kpi-advanced-main .kpi-card {\n flex: 1;\n min-height: 0;\n padding: 14px 16px 8px;\n }\n\n .kpi-advanced-split {\n display: flex;\n flex: 1;\n min-width: 0;\n min-height: 0;\n align-items: stretch;\n }\n\n .kpi-advanced-split[data-split='horizontal'] {\n flex-direction: row;\n }\n\n .kpi-advanced-split[data-split='stacked'] {\n flex-direction: column;\n }\n\n .kpi-advanced-value {\n display: flex;\n flex-direction: column;\n justify-content: center;\n min-width: 0;\n }\n\n .kpi-advanced-split[data-split='horizontal'] .kpi-advanced-value {\n flex: 0 0 25%;\n width: 25%;\n padding-right: 8px;\n }\n\n .kpi-advanced-split[data-split='stacked'] .kpi-advanced-value {\n flex: 0 0 auto;\n width: 100%;\n margin-bottom: 8px;\n }\n\n .kpi-advanced-chart {\n min-width: 0;\n min-height: 0;\n flex: 1 1 0;\n position: relative;\n overflow: hidden;\n }\n\n .kpi-advanced-chart ui9000-chart-renderer {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .kpi-supporting {\n display: grid;\n grid-auto-rows: minmax(72px, 1fr);\n gap: 0;\n flex: 0 1 auto;\n min-width: 0;\n min-height: 72px;\n max-height: 50%;\n width: 100%;\n align-content: start;\n border-top: 1px solid var(--ui9000-color-border, #e5e7eb);\n padding-top: 4px;\n scrollbar-width: thin;\n }\n\n .kpi-supporting[data-scroll='vertical'] {\n overflow-x: hidden;\n overflow-y: auto;\n }\n\n .kpi-supporting[data-scroll='horizontal'] {\n overflow-x: auto;\n overflow-y: hidden;\n }\n\n .kpi-supporting[data-scroll='both'] {\n overflow: auto;\n }\n\n .kpi-card {\n display: flex;\n flex-direction: column;\n justify-content: center;\n min-width: 0;\n padding: 10px 12px;\n box-sizing: border-box;\n }\n\n .kpi-grid[data-layout='single'] .kpi-card {\n padding: 14px;\n }\n\n .kpi-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n min-width: 0;\n gap: 8px;\n margin-bottom: 6px;\n }\n\n .kpi-grid[data-layout='single'] .kpi-header,\n .kpi-advanced-main .kpi-header {\n margin-bottom: 10px;\n }\n\n .kpi-name {\n margin: 0;\n font-size: 12px;\n font-weight: 600;\n line-height: 1.3;\n color: var(--ui9000-color-text-muted, #6b7280);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex: 1;\n min-width: 0;\n }\n\n .kpi-grid[data-layout='single'] .kpi-name,\n .kpi-advanced-main .kpi-name {\n font-size: 14px;\n line-height: 20px;\n color: var(--ui9000-color-text, #111827);\n }\n\n .kpi-badge {\n flex-shrink: 0;\n width: fit-content;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n line-height: 16px;\n font-weight: 400;\n padding: 1px 6px;\n border-radius: 14px;\n color: var(--ui9000-color-text-muted, #6b7280);\n background: var(--ui9000-color-surface-muted, #f3f4f6);\n }\n\n .kpi-grid[data-layout='single'] .kpi-badge,\n .kpi-advanced-main .kpi-badge {\n font-size: 14px;\n line-height: 20px;\n padding: 3px 9px;\n }\n\n .kpi-badge[data-variant='Good'],\n .kpi-badge[data-variant='OnTarget'] {\n color: #0e8a5b;\n background: rgba(14, 138, 91, 0.12);\n }\n\n .kpi-badge[data-variant='Low'],\n .kpi-badge[data-variant='OffTarget'] {\n color: #d92d20;\n background: rgba(217, 45, 32, 0.12);\n }\n\n .kpi-badge[data-variant='Mission'] {\n color: #fff;\n background: #111827;\n }\n\n .kpi-value-row {\n display: flex;\n align-items: baseline;\n gap: 4px;\n flex-wrap: wrap;\n }\n\n .kpi-advanced-main .kpi-value-row {\n flex-wrap: nowrap;\n }\n\n .kpi-value {\n margin: 0;\n font-size: 24px;\n font-weight: 700;\n line-height: 1.15;\n color: var(--ui9000-color-text, #111827);\n }\n\n .kpi-grid[data-layout='single'] .kpi-value {\n font-size: clamp(28px, 8vw, 48px);\n }\n\n .kpi-advanced-main .kpi-value {\n font-size: clamp(18px, 5vw, 42px);\n }\n\n :host([scale='compact']) .kpi-value {\n font-size: 18px;\n }\n\n :host([scale='compact']) .kpi-grid[data-layout='single'] .kpi-value {\n font-size: clamp(20px, 6vw, 32px);\n }\n\n :host([scale='comfortable']) .kpi-value {\n font-size: 28px;\n }\n\n :host([scale='comfortable']) .kpi-grid[data-layout='single'] .kpi-value {\n font-size: clamp(32px, 9vw, 56px);\n }\n\n .kpi-unit,\n .kpi-suffix {\n font-size: 14px;\n font-weight: 300;\n color: var(--ui9000-color-text, #111827);\n }\n\n .kpi-indicator {\n display: inline-flex;\n align-items: center;\n gap: 2px;\n font-size: 12px;\n font-weight: 600;\n color: var(--ui9000-color-text-muted, #6b7280);\n }\n\n .kpi-indicator-arrow {\n font-size: 11px;\n line-height: 1;\n }\n\n .kpi-subtitle-row {\n display: flex;\n align-items: center;\n gap: 6px;\n min-width: 0;\n margin-top: 4px;\n }\n\n .kpi-subtitle-row .kpi-subtitle {\n margin-top: 0;\n }\n\n .kpi-subtitle {\n margin: 6px 0 0;\n padding-left: 15px;\n position: relative;\n font-size: 12px;\n line-height: 1.35;\n color: var(--ui9000-color-text-muted, #6b7280);\n }\n\n .kpi-subtitle::before {\n content: '';\n position: absolute;\n left: 0;\n top: 50%;\n width: 10px;\n height: 10px;\n border-radius: 50%;\n transform: translateY(-50%);\n background: var(--ui9000-color-text-muted, #6b7280);\n }\n\n .kpi-footer {\n flex: 0 0 auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n width: 100%;\n padding: 6px 14px 8px;\n border-top: 1px solid var(--ui9000-color-border, #e5e7eb);\n box-sizing: border-box;\n }\n\n .kpi-footer-block {\n display: flex;\n gap: 4px;\n min-width: 0;\n font-size: 13px;\n line-height: 20px;\n }\n\n .kpi-footer-label {\n font-weight: 400;\n color: var(--ui9000-color-text-muted, #6b7280);\n }\n\n .kpi-footer-value {\n font-weight: 400;\n color: var(--ui9000-color-text, #111827);\n }\n\n .empty {\n display: grid;\n place-items: center;\n flex: 1;\n min-height: 72px;\n color: var(--ui9000-color-text-muted, #6b7280);\n font-size: 13px;\n }\n`;\n"],"names":[],"mappings":";AAEO,MAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
|
|
@@ -4,16 +4,25 @@ import { WidgetScale } from '../../../types/index.js';
|
|
|
4
4
|
export declare class Ui9000KpiWidget extends Ui9000ChartElement {
|
|
5
5
|
static styles: import('lit').CSSResult[];
|
|
6
6
|
scale: WidgetScale;
|
|
7
|
-
private
|
|
7
|
+
private _model;
|
|
8
8
|
private _gridColumns;
|
|
9
9
|
private _scrollAxis;
|
|
10
|
+
private _advancedSplit;
|
|
10
11
|
private _resizeObserver?;
|
|
12
|
+
private _raf;
|
|
13
|
+
private _rendererLoading;
|
|
11
14
|
connectedCallback(): void;
|
|
12
15
|
disconnectedCallback(): void;
|
|
13
16
|
updated(changed: PropertyValues): void;
|
|
17
|
+
/** Nested viz uses `<ui9000-chart-renderer>` — load it only for advanced KPIs. */
|
|
18
|
+
private ensureChartRenderer;
|
|
19
|
+
private scheduleLayout;
|
|
14
20
|
private updateGridLayout;
|
|
21
|
+
private renderBadge;
|
|
15
22
|
private renderValue;
|
|
16
23
|
private renderCard;
|
|
24
|
+
private renderFooter;
|
|
25
|
+
private renderAdvanced;
|
|
17
26
|
render(): import('lit-html').TemplateResult<1>;
|
|
18
27
|
}
|
|
19
28
|
export declare function registerKpiWidget(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui9000-kpi-widget.d.ts","sourceRoot":"","sources":["../../../../src/components/kpi-widget/element/ui9000-kpi-widget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAIzD,OAAO,EAAoB,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"ui9000-kpi-widget.d.ts","sourceRoot":"","sources":["../../../../src/components/kpi-widget/element/ui9000-kpi-widget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAIzD,OAAO,EAAoB,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAkB3D,qBACa,eAAgB,SAAQ,kBAAkB;IACrD,OAAgB,MAAM,4BAAuC;IAG7D,KAAK,EAAE,WAAW,CAAa;IAG/B,OAAO,CAAC,MAAM,CAAkE;IAGhF,OAAO,CAAC,YAAY,CAAK;IAGzB,OAAO,CAAC,WAAW,CAAiC;IAGpD,OAAO,CAAC,cAAc,CAAqC;IAE3D,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,gBAAgB,CAAS;IAExB,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAM5B,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAQ/C,kFAAkF;IAClF,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,WAAW;IAwBnB,OAAO,CAAC,UAAU;IA4BlB,OAAO,CAAC,YAAY;IA+BpB,OAAO,CAAC,cAAc;IA2Db,MAAM;CAqChB;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAIxC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,eAAe,CAAC;KACtC;CACF"}
|