@fusedashlabs/widgets 0.3.1 → 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 +37 -0
- package/README.md +1 -1
- package/dist/components/chart-renderer/element/ui9000-chart-renderer.d.ts +2 -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 +23 -2
- 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 +20 -5
- package/dist/components/chart-renderer/lib/registry.js.map +1 -1
- package/dist/components/chart-renderer/lib/types.d.ts +5 -0
- package/dist/components/chart-renderer/lib/types.d.ts.map +1 -1
- package/dist/components/donut-chart/element/ui9000-donut-chart.js +1 -1
- package/dist/components/donut-chart/element/ui9000-donut-chart.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/lollipop/element/styles.d.ts.map +1 -1
- package/dist/components/lollipop/element/styles.js +19 -1
- package/dist/components/lollipop/element/styles.js.map +1 -1
- package/dist/components/lollipop/element/ui9000-lollipop.d.ts +6 -1
- package/dist/components/lollipop/element/ui9000-lollipop.d.ts.map +1 -1
- package/dist/components/lollipop/element/ui9000-lollipop.js +68 -7
- package/dist/components/lollipop/element/ui9000-lollipop.js.map +1 -1
- package/dist/components/lollipop/index.d.ts +1 -1
- package/dist/components/lollipop/index.d.ts.map +1 -1
- package/dist/components/lollipop/index.js +2 -0
- package/dist/components/lollipop/index.js.map +1 -1
- package/dist/components/lollipop/lib/domain.d.ts +16 -1
- package/dist/components/lollipop/lib/domain.d.ts.map +1 -1
- package/dist/components/lollipop/lib/domain.js +56 -1
- package/dist/components/lollipop/lib/domain.js.map +1 -1
- package/dist/components/lollipop/lib/index.d.ts +3 -2
- package/dist/components/lollipop/lib/index.d.ts.map +1 -1
- package/dist/components/lollipop/lib/layout.d.ts +16 -0
- package/dist/components/lollipop/lib/layout.d.ts.map +1 -0
- package/dist/components/lollipop/lib/layout.js +16 -0
- package/dist/components/lollipop/lib/layout.js.map +1 -0
- package/dist/components/lollipop/lib/types.d.ts +5 -0
- package/dist/components/lollipop/lib/types.d.ts.map +1 -1
- package/dist/components/lollipop/metadata.json.d.ts +10 -0
- package/dist/components/lollipop/metadata.json.js +4 -1
- package/dist/components/lollipop/metadata.json.js.map +1 -1
- package/dist/components/lollipop/render/draw.d.ts +8 -1
- package/dist/components/lollipop/render/draw.d.ts.map +1 -1
- package/dist/components/lollipop/render/draw.js +155 -84
- package/dist/components/lollipop/render/draw.js.map +1 -1
- package/dist/components/map-chart/element/styles.d.ts +2 -0
- package/dist/components/map-chart/element/styles.d.ts.map +1 -0
- package/dist/components/map-chart/element/styles.js +372 -0
- package/dist/components/map-chart/element/styles.js.map +1 -0
- package/dist/components/map-chart/element/ui9000-map-chart.d.ts +54 -0
- package/dist/components/map-chart/element/ui9000-map-chart.d.ts.map +1 -0
- package/dist/components/map-chart/element/ui9000-map-chart.js +539 -0
- package/dist/components/map-chart/element/ui9000-map-chart.js.map +1 -0
- package/dist/components/map-chart/index.d.ts +5 -0
- package/dist/components/map-chart/index.d.ts.map +1 -0
- package/dist/components/map-chart/index.js +29 -0
- package/dist/components/map-chart/index.js.map +1 -0
- package/dist/components/map-chart/lib/constants.d.ts +34 -0
- package/dist/components/map-chart/lib/constants.d.ts.map +1 -0
- package/dist/components/map-chart/lib/constants.js +122 -0
- package/dist/components/map-chart/lib/constants.js.map +1 -0
- package/dist/components/map-chart/lib/domain.d.ts +12 -0
- package/dist/components/map-chart/lib/domain.d.ts.map +1 -0
- package/dist/components/map-chart/lib/domain.js +105 -0
- package/dist/components/map-chart/lib/domain.js.map +1 -0
- package/dist/components/map-chart/lib/format.d.ts +8 -0
- package/dist/components/map-chart/lib/format.d.ts.map +1 -0
- package/dist/components/map-chart/lib/format.js +45 -0
- package/dist/components/map-chart/lib/format.js.map +1 -0
- package/dist/components/map-chart/lib/geo-index.d.ts +7 -0
- package/dist/components/map-chart/lib/geo-index.d.ts.map +1 -0
- package/dist/components/map-chart/lib/geo-index.js +200 -0
- package/dist/components/map-chart/lib/geo-index.js.map +1 -0
- package/dist/components/map-chart/lib/geojson.d.ts +5 -0
- package/dist/components/map-chart/lib/geojson.d.ts.map +1 -0
- package/dist/components/map-chart/lib/geojson.js +47 -0
- package/dist/components/map-chart/lib/geojson.js.map +1 -0
- package/dist/components/map-chart/lib/index.d.ts +13 -0
- package/dist/components/map-chart/lib/index.d.ts.map +1 -0
- package/dist/components/map-chart/lib/join.d.ts +7 -0
- package/dist/components/map-chart/lib/join.d.ts.map +1 -0
- package/dist/components/map-chart/lib/join.js +156 -0
- package/dist/components/map-chart/lib/join.js.map +1 -0
- package/dist/components/map-chart/lib/legend.d.ts +45 -0
- package/dist/components/map-chart/lib/legend.d.ts.map +1 -0
- package/dist/components/map-chart/lib/legend.js +108 -0
- package/dist/components/map-chart/lib/legend.js.map +1 -0
- package/dist/components/map-chart/lib/normalize.d.ts +3 -0
- package/dist/components/map-chart/lib/normalize.d.ts.map +1 -0
- package/dist/components/map-chart/lib/normalize.js +177 -0
- package/dist/components/map-chart/lib/normalize.js.map +1 -0
- package/dist/components/map-chart/lib/pmtiles.d.ts +41 -0
- package/dist/components/map-chart/lib/pmtiles.d.ts.map +1 -0
- package/dist/components/map-chart/lib/pmtiles.js +112 -0
- package/dist/components/map-chart/lib/pmtiles.js.map +1 -0
- package/dist/components/map-chart/lib/types.d.ts +128 -0
- package/dist/components/map-chart/lib/types.d.ts.map +1 -0
- package/dist/components/map-chart/metadata.json.d.ts +83 -0
- package/dist/components/map-chart/metadata.json.js +42 -0
- package/dist/components/map-chart/metadata.json.js.map +1 -0
- package/dist/components/map-chart/render/draw.d.ts +24 -0
- package/dist/components/map-chart/render/draw.d.ts.map +1 -0
- package/dist/components/map-chart/render/draw.js +456 -0
- package/dist/components/map-chart/render/draw.js.map +1 -0
- package/dist/components/map-chart/render/index.d.ts +2 -0
- package/dist/components/map-chart/render/index.d.ts.map +1 -0
- package/dist/components/matrix-chart/element/styles.d.ts +2 -0
- package/dist/components/matrix-chart/element/styles.d.ts.map +1 -0
- package/dist/components/matrix-chart/element/styles.js +97 -0
- package/dist/components/matrix-chart/element/styles.js.map +1 -0
- package/dist/components/matrix-chart/element/ui9000-matrix-chart.d.ts +39 -0
- package/dist/components/matrix-chart/element/ui9000-matrix-chart.d.ts.map +1 -0
- package/dist/components/matrix-chart/element/ui9000-matrix-chart.js +238 -0
- package/dist/components/matrix-chart/element/ui9000-matrix-chart.js.map +1 -0
- package/dist/components/matrix-chart/index.d.ts +5 -0
- package/dist/components/matrix-chart/index.d.ts.map +1 -0
- package/dist/components/matrix-chart/index.js +20 -0
- package/dist/components/matrix-chart/lib/domain.d.ts +7 -0
- package/dist/components/matrix-chart/lib/domain.d.ts.map +1 -0
- package/dist/components/matrix-chart/lib/domain.js +58 -0
- package/dist/components/matrix-chart/lib/domain.js.map +1 -0
- package/dist/components/matrix-chart/lib/format.d.ts +5 -0
- package/dist/components/matrix-chart/lib/format.d.ts.map +1 -0
- package/dist/components/matrix-chart/lib/format.js +16 -0
- package/dist/components/matrix-chart/lib/format.js.map +1 -0
- package/dist/components/matrix-chart/lib/index.d.ts +5 -0
- package/dist/components/matrix-chart/lib/index.d.ts.map +1 -0
- package/dist/components/matrix-chart/lib/normalize.d.ts +5 -0
- package/dist/components/matrix-chart/lib/normalize.d.ts.map +1 -0
- package/dist/components/matrix-chart/lib/normalize.js +165 -0
- package/dist/components/matrix-chart/lib/normalize.js.map +1 -0
- package/dist/components/matrix-chart/lib/types.d.ts +33 -0
- package/dist/components/matrix-chart/lib/types.d.ts.map +1 -0
- package/dist/components/matrix-chart/metadata.json.d.ts +110 -0
- package/dist/components/matrix-chart/metadata.json.js +42 -0
- package/dist/components/matrix-chart/metadata.json.js.map +1 -0
- package/dist/components/matrix-chart/render/draw.d.ts +63 -0
- package/dist/components/matrix-chart/render/draw.d.ts.map +1 -0
- package/dist/components/matrix-chart/render/draw.js +225 -0
- package/dist/components/matrix-chart/render/draw.js.map +1 -0
- package/dist/components/matrix-chart/render/index.d.ts +2 -0
- package/dist/components/matrix-chart/render/index.d.ts.map +1 -0
- package/dist/components/network-graph/element/styles.d.ts.map +1 -1
- package/dist/components/network-graph/element/styles.js +177 -57
- package/dist/components/network-graph/element/styles.js.map +1 -1
- package/dist/components/network-graph/element/ui9000-network-graph.d.ts +4 -0
- package/dist/components/network-graph/element/ui9000-network-graph.d.ts.map +1 -1
- package/dist/components/network-graph/element/ui9000-network-graph.js +116 -39
- package/dist/components/network-graph/element/ui9000-network-graph.js.map +1 -1
- package/dist/components/network-graph/lib/domain.d.ts +2 -2
- package/dist/components/network-graph/lib/domain.js.map +1 -1
- package/dist/components/network-graph/lib/index.d.ts +1 -0
- package/dist/components/network-graph/lib/index.d.ts.map +1 -1
- package/dist/components/network-graph/lib/legend.d.ts +15 -0
- package/dist/components/network-graph/lib/legend.d.ts.map +1 -0
- package/dist/components/network-graph/lib/legend.js +35 -0
- package/dist/components/network-graph/lib/legend.js.map +1 -0
- package/dist/components/network-graph/render/draw.d.ts +4 -1
- package/dist/components/network-graph/render/draw.d.ts.map +1 -1
- package/dist/components/network-graph/render/draw.js +34 -9
- package/dist/components/network-graph/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/components/pie-chart/element/styles.d.ts.map +1 -1
- package/dist/components/pie-chart/element/styles.js +34 -1
- package/dist/components/pie-chart/element/styles.js.map +1 -1
- package/dist/components/pie-chart/element/ui9000-pie-chart.d.ts +0 -2
- package/dist/components/pie-chart/element/ui9000-pie-chart.d.ts.map +1 -1
- package/dist/components/pie-chart/element/ui9000-pie-chart.js +2 -8
- package/dist/components/pie-chart/element/ui9000-pie-chart.js.map +1 -1
- package/dist/components/pie-chart/metadata.json.d.ts +1 -7
- package/dist/components/pie-chart/metadata.json.js +2 -2
- package/dist/components/polar-area-chart/element/styles.d.ts +1 -1
- package/dist/components/polar-area-chart/element/styles.d.ts.map +1 -1
- package/dist/components/{donut-group-chart → polar-area-chart}/element/styles.js +9 -27
- package/dist/components/polar-area-chart/element/styles.js.map +1 -0
- package/dist/components/polar-area-chart/element/ui9000-polar-area-chart.d.ts.map +1 -1
- package/dist/components/polar-area-chart/element/ui9000-polar-area-chart.js +4 -3
- package/dist/components/polar-area-chart/element/ui9000-polar-area-chart.js.map +1 -1
- package/dist/components/polar-area-chart/index.d.ts +1 -1
- package/dist/components/polar-area-chart/index.d.ts.map +1 -1
- package/dist/components/polar-area-chart/index.js +2 -1
- package/dist/components/polar-area-chart/lib/domain.d.ts +8 -0
- package/dist/components/polar-area-chart/lib/domain.d.ts.map +1 -1
- package/dist/components/polar-area-chart/lib/domain.js +20 -0
- package/dist/components/polar-area-chart/lib/domain.js.map +1 -1
- package/dist/components/polar-area-chart/lib/index.d.ts +1 -1
- package/dist/components/polar-area-chart/lib/index.d.ts.map +1 -1
- package/dist/components/polar-area-chart/lib/normalize.d.ts.map +1 -1
- package/dist/components/polar-area-chart/lib/normalize.js +72 -6
- package/dist/components/polar-area-chart/lib/normalize.js.map +1 -1
- package/dist/components/polar-area-chart/lib/types.d.ts +6 -1
- package/dist/components/polar-area-chart/lib/types.d.ts.map +1 -1
- package/dist/components/polar-area-chart/metadata.json.d.ts +1 -1
- package/dist/components/polar-area-chart/metadata.json.js +1 -1
- package/dist/components/polar-area-chart/render/draw.d.ts.map +1 -1
- package/dist/components/polar-area-chart/render/draw.js +2 -2
- package/dist/components/polar-area-chart/render/draw.js.map +1 -1
- package/dist/components/punchcard-chart/metadata.json.d.ts +1 -1
- package/dist/components/punchcard-chart/metadata.json.js +1 -1
- package/dist/components/sankey-chart/element/styles.d.ts.map +1 -1
- package/dist/components/sankey-chart/element/styles.js +7 -27
- package/dist/components/sankey-chart/element/styles.js.map +1 -1
- package/dist/components/sankey-chart/element/ui9000-sankey-chart.d.ts +5 -5
- package/dist/components/sankey-chart/element/ui9000-sankey-chart.d.ts.map +1 -1
- package/dist/components/sankey-chart/element/ui9000-sankey-chart.js +37 -35
- package/dist/components/sankey-chart/element/ui9000-sankey-chart.js.map +1 -1
- package/dist/components/treemap-chart/element/styles.d.ts +2 -0
- package/dist/components/treemap-chart/element/styles.d.ts.map +1 -0
- package/dist/components/treemap-chart/element/styles.js +141 -0
- package/dist/components/treemap-chart/element/styles.js.map +1 -0
- package/dist/components/treemap-chart/element/ui9000-treemap-chart.d.ts +35 -0
- package/dist/components/treemap-chart/element/ui9000-treemap-chart.d.ts.map +1 -0
- package/dist/components/treemap-chart/element/ui9000-treemap-chart.js +177 -0
- package/dist/components/treemap-chart/element/ui9000-treemap-chart.js.map +1 -0
- package/dist/components/treemap-chart/index.d.ts +5 -0
- package/dist/components/treemap-chart/index.d.ts.map +1 -0
- package/dist/components/treemap-chart/index.js +22 -0
- package/dist/components/treemap-chart/index.js.map +1 -0
- package/dist/components/treemap-chart/lib/color.d.ts +25 -0
- package/dist/components/treemap-chart/lib/color.d.ts.map +1 -0
- package/dist/components/treemap-chart/lib/color.js +67 -0
- package/dist/components/treemap-chart/lib/color.js.map +1 -0
- package/dist/components/treemap-chart/lib/format.d.ts +7 -0
- package/dist/components/treemap-chart/lib/format.d.ts.map +1 -0
- package/dist/components/treemap-chart/lib/format.js +9 -0
- package/dist/components/treemap-chart/lib/format.js.map +1 -0
- package/dist/components/treemap-chart/lib/index.d.ts +6 -0
- package/dist/components/treemap-chart/lib/index.d.ts.map +1 -0
- package/dist/components/treemap-chart/lib/layout.d.ts +18 -0
- package/dist/components/treemap-chart/lib/layout.d.ts.map +1 -0
- package/dist/components/treemap-chart/lib/layout.js +31 -0
- package/dist/components/treemap-chart/lib/layout.js.map +1 -0
- package/dist/components/treemap-chart/lib/normalize.d.ts +4 -0
- package/dist/components/treemap-chart/lib/normalize.d.ts.map +1 -0
- package/dist/components/treemap-chart/lib/normalize.js +182 -0
- package/dist/components/treemap-chart/lib/normalize.js.map +1 -0
- package/dist/components/treemap-chart/lib/types.d.ts +63 -0
- package/dist/components/treemap-chart/lib/types.d.ts.map +1 -0
- package/dist/components/treemap-chart/metadata.json.d.ts +126 -0
- package/dist/components/treemap-chart/metadata.json.js +45 -0
- package/dist/components/treemap-chart/render/draw.d.ts +24 -0
- package/dist/components/treemap-chart/render/draw.d.ts.map +1 -0
- package/dist/components/treemap-chart/render/draw.js +124 -0
- package/dist/components/treemap-chart/render/draw.js.map +1 -0
- package/dist/components/treemap-chart/render/index.d.ts +2 -0
- package/dist/components/treemap-chart/render/index.d.ts.map +1 -0
- package/dist/element/chart-legend-render.d.ts +5 -0
- package/dist/element/chart-legend-render.d.ts.map +1 -1
- package/dist/element/chart-legend-render.js +19 -1
- package/dist/element/chart-legend-render.js.map +1 -1
- package/dist/element/chart-shell-styles.d.ts.map +1 -1
- package/dist/element/chart-shell-styles.js +35 -0
- package/dist/element/chart-shell-styles.js.map +1 -1
- package/dist/index.d.ts +11 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +91 -42
- package/dist/index.js.map +1 -1
- package/dist/lazy/index.d.ts +5 -2
- package/dist/lazy/index.d.ts.map +1 -1
- package/dist/lazy/index.js +32 -8
- package/dist/lazy/index.js.map +1 -1
- package/dist/lazy/map-chart.d.ts +4 -0
- package/dist/lazy/map-chart.d.ts.map +1 -0
- package/dist/lazy/map-chart.js +5 -0
- package/dist/lazy/map-chart.js.map +1 -0
- package/dist/lazy/matrix-chart.d.ts +4 -0
- package/dist/lazy/matrix-chart.d.ts.map +1 -0
- package/dist/lazy/matrix-chart.js +5 -0
- package/dist/lazy/matrix-chart.js.map +1 -0
- 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/lazy/treemap-chart.d.ts +4 -0
- package/dist/lazy/treemap-chart.d.ts.map +1 -0
- package/dist/lazy/treemap-chart.js +5 -0
- package/dist/lazy/treemap-chart.js.map +1 -0
- package/dist/utils/axis-units.d.ts +15 -0
- package/dist/utils/axis-units.d.ts.map +1 -0
- package/dist/utils/axis-units.js +27 -0
- package/dist/utils/axis-units.js.map +1 -0
- package/dist/utils/chart-helpers.d.ts +6 -6
- package/dist/utils/chart-helpers.d.ts.map +1 -1
- package/dist/utils/chart-helpers.js +31 -15
- package/dist/utils/chart-helpers.js.map +1 -1
- package/dist/utils/format-text.d.ts +5 -0
- package/dist/utils/format-text.d.ts.map +1 -1
- package/dist/utils/format-text.js +7 -0
- package/dist/utils/format-text.js.map +1 -1
- package/dist/utils/fuse-palette.d.ts +12 -0
- package/dist/utils/fuse-palette.d.ts.map +1 -1
- package/dist/utils/fuse-palette.js +23 -1
- package/dist/utils/fuse-palette.js.map +1 -1
- package/dist/utils/fuse-widget.d.ts +13 -4
- package/dist/utils/fuse-widget.d.ts.map +1 -1
- package/dist/utils/fuse-widget.js.map +1 -1
- package/dist/utils/fusedash-visual.d.ts +77 -52
- package/dist/utils/fusedash-visual.d.ts.map +1 -1
- package/dist/utils/fusedash-visual.js +55 -29
- package/dist/utils/fusedash-visual.js.map +1 -1
- package/package.json +48 -12
- package/dist/components/donut-group-chart/element/styles.d.ts +0 -2
- package/dist/components/donut-group-chart/element/styles.d.ts.map +0 -1
- package/dist/components/donut-group-chart/element/styles.js.map +0 -1
- package/dist/components/donut-group-chart/element/ui9000-donut-group-chart.d.ts +0 -34
- package/dist/components/donut-group-chart/element/ui9000-donut-group-chart.d.ts.map +0 -1
- package/dist/components/donut-group-chart/element/ui9000-donut-group-chart.js +0 -169
- package/dist/components/donut-group-chart/element/ui9000-donut-group-chart.js.map +0 -1
- package/dist/components/donut-group-chart/index.d.ts +0 -5
- package/dist/components/donut-group-chart/index.d.ts.map +0 -1
- package/dist/components/donut-group-chart/index.js +0 -23
- package/dist/components/donut-group-chart/lib/domain.d.ts +0 -39
- package/dist/components/donut-group-chart/lib/domain.d.ts.map +0 -1
- package/dist/components/donut-group-chart/lib/domain.js +0 -51
- package/dist/components/donut-group-chart/lib/domain.js.map +0 -1
- package/dist/components/donut-group-chart/lib/format.d.ts +0 -7
- package/dist/components/donut-group-chart/lib/format.d.ts.map +0 -1
- package/dist/components/donut-group-chart/lib/format.js +0 -21
- package/dist/components/donut-group-chart/lib/format.js.map +0 -1
- package/dist/components/donut-group-chart/lib/index.d.ts +0 -5
- package/dist/components/donut-group-chart/lib/index.d.ts.map +0 -1
- package/dist/components/donut-group-chart/lib/normalize.d.ts +0 -14
- package/dist/components/donut-group-chart/lib/normalize.d.ts.map +0 -1
- package/dist/components/donut-group-chart/lib/normalize.js +0 -98
- package/dist/components/donut-group-chart/lib/normalize.js.map +0 -1
- package/dist/components/donut-group-chart/lib/types.d.ts +0 -49
- package/dist/components/donut-group-chart/lib/types.d.ts.map +0 -1
- package/dist/components/donut-group-chart/metadata.json.d.ts +0 -113
- package/dist/components/donut-group-chart/metadata.json.js +0 -45
- package/dist/components/donut-group-chart/render/draw.d.ts +0 -44
- package/dist/components/donut-group-chart/render/draw.d.ts.map +0 -1
- package/dist/components/donut-group-chart/render/draw.js +0 -194
- package/dist/components/donut-group-chart/render/draw.js.map +0 -1
- package/dist/components/donut-group-chart/render/index.d.ts +0 -2
- package/dist/components/donut-group-chart/render/index.d.ts.map +0 -1
- package/dist/components/donut-group-chart/tests/fixtures.d.ts +0 -33
- package/dist/components/donut-group-chart/tests/fixtures.d.ts.map +0 -1
- package/dist/lazy/donut-group-chart.d.ts +0 -4
- package/dist/lazy/donut-group-chart.d.ts.map +0 -1
- package/dist/lazy/donut-group-chart.js +0 -5
- package/dist/lazy/donut-group-chart.js.map +0 -1
- /package/dist/components/{donut-group-chart → matrix-chart}/index.js.map +0 -0
- /package/dist/components/{donut-group-chart → treemap-chart}/metadata.json.js.map +0 -0
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
const STATUSES = ["positive", "negative", "neutral"];
|
|
2
|
-
function toStatus(value) {
|
|
3
|
-
return STATUSES.includes(value) ? value : void 0;
|
|
4
|
-
}
|
|
5
|
-
function toNumber(value) {
|
|
6
|
-
if (value == null || value === "") return void 0;
|
|
7
|
-
const n = Number(value);
|
|
8
|
-
return Number.isFinite(n) ? n : void 0;
|
|
9
|
-
}
|
|
10
|
-
function toText(value) {
|
|
11
|
-
if (value == null) return void 0;
|
|
12
|
-
const text = String(value).trim();
|
|
13
|
-
return text.length ? text : void 0;
|
|
14
|
-
}
|
|
15
|
-
function rowLabel(row, fallback) {
|
|
16
|
-
return toText(row.label) ?? toText(row.name) ?? toText(row.x) ?? toText(row.category) ?? fallback;
|
|
17
|
-
}
|
|
18
|
-
function rowValue(row) {
|
|
19
|
-
return toNumber(row.value) ?? toNumber(row.y) ?? toNumber(row.count);
|
|
20
|
-
}
|
|
21
|
-
function rowMax(row) {
|
|
22
|
-
const max = toNumber(row.max) ?? toNumber(row.maximalValue) ?? toNumber(row.total);
|
|
23
|
-
return max != null && max > 0 ? max : void 0;
|
|
24
|
-
}
|
|
25
|
-
function cleanSlices(rows) {
|
|
26
|
-
return rows.map((row) => ({ row, value: rowValue(row) })).filter((entry) => entry.value != null).map(({ row, value }, i) => ({
|
|
27
|
-
label: rowLabel(row, `Slice ${i + 1}`),
|
|
28
|
-
value,
|
|
29
|
-
color: toText(row.color)
|
|
30
|
-
}));
|
|
31
|
-
}
|
|
32
|
-
function gaugeFromRow(row, index) {
|
|
33
|
-
const value = rowValue(row);
|
|
34
|
-
if (value == null) return null;
|
|
35
|
-
const label = rowLabel(row, `Item ${index + 1}`);
|
|
36
|
-
return {
|
|
37
|
-
id: toText(row.id) ?? label,
|
|
38
|
-
label,
|
|
39
|
-
value,
|
|
40
|
-
max: rowMax(row),
|
|
41
|
-
statusLabel: toText(row.statusLabel) ?? toText(row.badge),
|
|
42
|
-
status: toStatus(row.status),
|
|
43
|
-
color: toText(row.color)
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
function fromItems(items) {
|
|
47
|
-
return items.map((item, i) => {
|
|
48
|
-
const value = toNumber(item.value);
|
|
49
|
-
const slices = Array.isArray(item.slices) ? cleanSlices(item.slices) : [];
|
|
50
|
-
const total = slices.reduce((sum, s) => sum + s.value, 0);
|
|
51
|
-
if (value == null && !slices.length) return null;
|
|
52
|
-
const label = toText(item.label) ?? toText(item.id) ?? `Item ${i + 1}`;
|
|
53
|
-
return {
|
|
54
|
-
id: toText(item.id) ?? label,
|
|
55
|
-
label,
|
|
56
|
-
value: value ?? total,
|
|
57
|
-
max: item.max != null && item.max > 0 ? item.max : void 0,
|
|
58
|
-
statusLabel: toText(item.statusLabel),
|
|
59
|
-
status: toStatus(item.status),
|
|
60
|
-
color: toText(item.color),
|
|
61
|
-
slices: slices.length ? slices : void 0
|
|
62
|
-
};
|
|
63
|
-
}).filter((item) => item != null);
|
|
64
|
-
}
|
|
65
|
-
function normalizeDonutGroupData(input) {
|
|
66
|
-
var _a, _b;
|
|
67
|
-
if (!input) return [];
|
|
68
|
-
if (Array.isArray(input)) {
|
|
69
|
-
if (!input.length) return [];
|
|
70
|
-
if (Array.isArray(input[0])) {
|
|
71
|
-
return input.map((rows, i) => {
|
|
72
|
-
const slices = cleanSlices(Array.isArray(rows) ? rows : []);
|
|
73
|
-
if (!slices.length) return null;
|
|
74
|
-
if (slices.length === 1) return gaugeFromRow(rows[0], i);
|
|
75
|
-
const first2 = rows[0] ?? {};
|
|
76
|
-
const label = rowLabel(first2, `Item ${i + 1}`);
|
|
77
|
-
return {
|
|
78
|
-
id: toText(first2.id) ?? label,
|
|
79
|
-
label,
|
|
80
|
-
value: slices.reduce((sum, s) => sum + s.value, 0),
|
|
81
|
-
slices
|
|
82
|
-
};
|
|
83
|
-
}).filter((item) => item != null);
|
|
84
|
-
}
|
|
85
|
-
const first = input[0];
|
|
86
|
-
if (Array.isArray(first.slices)) return fromItems(input);
|
|
87
|
-
return input.map((row, i) => gaugeFromRow(row, i)).filter((item) => item != null);
|
|
88
|
-
}
|
|
89
|
-
if ((_a = input.items) == null ? void 0 : _a.length) return fromItems(input.items);
|
|
90
|
-
if ((_b = input.points) == null ? void 0 : _b.length) {
|
|
91
|
-
return input.points.map((row, i) => gaugeFromRow(row, i)).filter((item) => item != null);
|
|
92
|
-
}
|
|
93
|
-
return [];
|
|
94
|
-
}
|
|
95
|
-
export {
|
|
96
|
-
normalizeDonutGroupData
|
|
97
|
-
};
|
|
98
|
-
//# sourceMappingURL=normalize.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"normalize.js","sources":["../../../../src/components/donut-group-chart/lib/normalize.ts"],"sourcesContent":["import type { DataPoint } from '../../../types/index.js';\nimport type {\n DonutGauge,\n DonutGroupChartData,\n DonutSlice,\n DonutStatus,\n} from './types.js';\n\n/** Loose row shape accepted from chat payloads and FuseDash widget data. */\ntype RawRow = Record<string, unknown>;\n\nconst STATUSES: DonutStatus[] = ['positive', 'negative', 'neutral'];\n\nfunction toStatus(value: unknown): DonutStatus | undefined {\n return STATUSES.includes(value as DonutStatus) ? (value as DonutStatus) : undefined;\n}\n\nfunction toNumber(value: unknown): number | undefined {\n if (value == null || value === '') return undefined;\n const n = Number(value);\n return Number.isFinite(n) ? n : undefined;\n}\n\nfunction toText(value: unknown): string | undefined {\n if (value == null) return undefined;\n const text = String(value).trim();\n return text.length ? text : undefined;\n}\n\n/** FuseDash `arrangeBy` / `groupBy` / chat `label` all land in the same slot. */\nfunction rowLabel(row: RawRow, fallback: string): string {\n return (\n toText(row.label) ??\n toText(row.name) ??\n toText(row.x) ??\n toText(row.category) ??\n fallback\n );\n}\n\n/** FuseDash `display` — the measured column. */\nfunction rowValue(row: RawRow): number | undefined {\n return toNumber(row.value) ?? toNumber(row.y) ?? toNumber(row.count);\n}\n\nfunction rowMax(row: RawRow): number | undefined {\n const max = toNumber(row.max) ?? toNumber(row.maximalValue) ?? toNumber(row.total);\n return max != null && max > 0 ? max : undefined;\n}\n\nfunction cleanSlices(rows: RawRow[]): DonutSlice[] {\n return rows\n .map((row) => ({ row, value: rowValue(row) }))\n .filter((entry): entry is { row: RawRow; value: number } => entry.value != null)\n .map(({ row, value }, i) => ({\n label: rowLabel(row, `Slice ${i + 1}`),\n value,\n color: toText(row.color),\n }));\n}\n\nfunction gaugeFromRow(row: RawRow, index: number): DonutGauge | null {\n const value = rowValue(row);\n if (value == null) return null;\n const label = rowLabel(row, `Item ${index + 1}`);\n return {\n id: toText(row.id) ?? label,\n label,\n value,\n max: rowMax(row),\n statusLabel: toText(row.statusLabel) ?? toText(row.badge),\n status: toStatus(row.status),\n color: toText(row.color),\n };\n}\n\n/** Already-shaped items still get their slices and ids cleaned up. */\nfunction fromItems(items: DonutGauge[]): DonutGauge[] {\n return items\n .map((item, i): DonutGauge | null => {\n const value = toNumber(item.value);\n const slices = Array.isArray(item.slices)\n ? cleanSlices(item.slices as unknown as RawRow[])\n : [];\n // a value is optional when slices carry it — the gauge then shows the sum\n const total = slices.reduce((sum, s) => sum + s.value, 0);\n if (value == null && !slices.length) return null;\n const label = toText(item.label) ?? toText(item.id) ?? `Item ${i + 1}`;\n return {\n id: toText(item.id) ?? label,\n label,\n value: value ?? total,\n max: item.max != null && item.max > 0 ? item.max : undefined,\n statusLabel: toText(item.statusLabel),\n status: toStatus(item.status),\n color: toText(item.color),\n slices: slices.length ? slices : undefined,\n };\n })\n .filter((item): item is DonutGauge => item != null);\n}\n\n/**\n * Normalize chat payloads and FuseDash widget data into one donut per entry.\n *\n * Mirrors how FuseDash `DonutGroupChart` feeds `DonutGroupItem`: a group with a\n * single row is a gauge against `maximalValue`, a group with several rows is a\n * breakdown donut over those rows.\n */\nexport function normalizeDonutGroupData(\n input:\n | DataPoint[]\n | DonutGauge[]\n | DonutGroupChartData\n | RawRow[]\n | RawRow[][]\n | null\n | undefined,\n): DonutGauge[] {\n if (!input) return [];\n\n if (Array.isArray(input)) {\n if (!input.length) return [];\n\n // FuseDash shape: one array of rows per donut\n if (Array.isArray(input[0])) {\n return (input as RawRow[][])\n .map((rows, i): DonutGauge | null => {\n const slices = cleanSlices(Array.isArray(rows) ? rows : []);\n if (!slices.length) return null;\n if (slices.length === 1) return gaugeFromRow(rows[0], i);\n const first = rows[0] ?? {};\n const label = rowLabel(first, `Item ${i + 1}`);\n return {\n id: toText(first.id) ?? label,\n label,\n value: slices.reduce((sum, s) => sum + s.value, 0),\n slices,\n };\n })\n .filter((item): item is DonutGauge => item != null);\n }\n\n const first = input[0] as RawRow;\n if (Array.isArray(first.slices)) return fromItems(input as DonutGauge[]);\n return (input as RawRow[])\n .map((row, i) => gaugeFromRow(row, i))\n .filter((item): item is DonutGauge => item != null);\n }\n\n if (input.items?.length) return fromItems(input.items);\n\n if (input.points?.length) {\n return (input.points as unknown as RawRow[])\n .map((row, i) => gaugeFromRow(row, i))\n .filter((item): item is DonutGauge => item != null);\n }\n\n return [];\n}\n"],"names":["first"],"mappings":"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"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/** One wedge of a breakdown donut (FuseDash passes these as the group's rows). */
|
|
2
|
-
export interface DonutSlice {
|
|
3
|
-
label: string;
|
|
4
|
-
value: number;
|
|
5
|
-
/** Optional slice color; falls back to the styleId palette */
|
|
6
|
-
color?: string;
|
|
7
|
-
}
|
|
8
|
-
/** FuseDash `status` — drives the badge colors under the value. */
|
|
9
|
-
export type DonutStatus = 'positive' | 'negative' | 'neutral';
|
|
10
|
-
/**
|
|
11
|
-
* One donut in the group. With no `slices` it renders as a gauge: the value arc
|
|
12
|
-
* over a neutral track that runs to `max` (FuseDash `maximalValue`).
|
|
13
|
-
*/
|
|
14
|
-
export interface DonutGauge {
|
|
15
|
-
/** Stable id for tooltip / hover payloads */
|
|
16
|
-
id: string;
|
|
17
|
-
/** Caption under the value (FuseDash `groupBy` value) */
|
|
18
|
-
label: string;
|
|
19
|
-
/** The measured value (FuseDash `display`) */
|
|
20
|
-
value: number;
|
|
21
|
-
/** Gauge full scale — FuseDash `maximalValue`, defaults to 100 */
|
|
22
|
-
max?: number;
|
|
23
|
-
/** Text of the badge between value and label (FuseDash `statusLabel`) */
|
|
24
|
-
statusLabel?: string;
|
|
25
|
-
status?: DonutStatus;
|
|
26
|
-
/** Optional arc color; falls back to the styleId palette */
|
|
27
|
-
color?: string;
|
|
28
|
-
/** More than one slice renders a breakdown donut instead of a gauge */
|
|
29
|
-
slices?: DonutSlice[];
|
|
30
|
-
}
|
|
31
|
-
export interface DonutGroupChartData {
|
|
32
|
-
/** The donuts to draw, left to right */
|
|
33
|
-
items?: DonutGauge[];
|
|
34
|
-
/** Chat shorthand — one gauge per point, same shape as the other charts */
|
|
35
|
-
points?: {
|
|
36
|
-
x: string;
|
|
37
|
-
y: number;
|
|
38
|
-
}[];
|
|
39
|
-
}
|
|
40
|
-
/** One hovered arc, handed to the element so it can render the tooltip. */
|
|
41
|
-
export interface DonutHoverEntry {
|
|
42
|
-
itemId: string;
|
|
43
|
-
label: string;
|
|
44
|
-
color: string;
|
|
45
|
-
value: number;
|
|
46
|
-
/** Share of the donut this arc covers, 0–1 */
|
|
47
|
-
ratio: number;
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/donut-group-chart/lib/types.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,mEAAmE;AACnE,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;AAE9D;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,2EAA2E;IAC3E,MAAM,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACrC;AAED,2EAA2E;AAC3E,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
declare const _default: {
|
|
2
|
-
"id": "donut-group-chart",
|
|
3
|
-
"tag": "ui9000-donut-group-chart",
|
|
4
|
-
"title": "Donut Group Chart",
|
|
5
|
-
"description": "Chat-optimized donut group rewritten in D3 (Visx → D3). A row of KPI donuts: each entry is a gauge filled to value / max over a neutral track, or a breakdown donut when the entry carries several slices. No Redux.",
|
|
6
|
-
"chartTypeKeys": ["donutGroupChart"],
|
|
7
|
-
"chartTypeMap": {
|
|
8
|
-
"donutGroupChart": { "showValue": true, "showStatus": true, "showLabel": true }
|
|
9
|
-
},
|
|
10
|
-
"source": "client/libs/shared/components/src/Widgets/DonutGroupChart/",
|
|
11
|
-
"stack": "d3",
|
|
12
|
-
"lazyImport": "@ui9000/widgets/lazy/donut-group-chart",
|
|
13
|
-
"entry": "@ui9000/widgets/donut-group-chart",
|
|
14
|
-
"usageConditions": {
|
|
15
|
-
"host": "mcp-chat",
|
|
16
|
-
"notFor": "fusedash-editor",
|
|
17
|
-
"mapsExcluded": true,
|
|
18
|
-
"context": "theme, scale, styleId and mode come from WidgetContext CSS custom properties, not props"
|
|
19
|
-
},
|
|
20
|
-
"allowedActions": ["hover", "resize"],
|
|
21
|
-
"propsSchema": {
|
|
22
|
-
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
23
|
-
"type": "object",
|
|
24
|
-
"properties": {
|
|
25
|
-
"data": {
|
|
26
|
-
"oneOf": [
|
|
27
|
-
{
|
|
28
|
-
"type": "array",
|
|
29
|
-
"items": {
|
|
30
|
-
"type": "object",
|
|
31
|
-
"required": ["label", "value"],
|
|
32
|
-
"properties": {
|
|
33
|
-
"label": { "type": "string" },
|
|
34
|
-
"value": { "type": "number" }
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
"type": "array",
|
|
40
|
-
"items": {
|
|
41
|
-
"type": "object",
|
|
42
|
-
"required": ["label", "value"],
|
|
43
|
-
"properties": {
|
|
44
|
-
"id": { "type": "string" },
|
|
45
|
-
"label": { "type": "string" },
|
|
46
|
-
"value": { "type": "number" },
|
|
47
|
-
"max": {
|
|
48
|
-
"type": "number",
|
|
49
|
-
"description": "FuseDash `maximalValue` — the gauge's full scale."
|
|
50
|
-
},
|
|
51
|
-
"statusLabel": { "type": "string" },
|
|
52
|
-
"status": {
|
|
53
|
-
"type": "string",
|
|
54
|
-
"enum": ["positive", "negative", "neutral"]
|
|
55
|
-
},
|
|
56
|
-
"color": { "type": "string" },
|
|
57
|
-
"slices": {
|
|
58
|
-
"type": "array",
|
|
59
|
-
"description": "More than one slice renders a breakdown donut instead of a gauge.",
|
|
60
|
-
"items": {
|
|
61
|
-
"type": "object",
|
|
62
|
-
"required": ["label", "value"],
|
|
63
|
-
"properties": {
|
|
64
|
-
"label": { "type": "string" },
|
|
65
|
-
"value": { "type": "number" },
|
|
66
|
-
"color": { "type": "string" }
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
"type": "object",
|
|
75
|
-
"properties": {
|
|
76
|
-
"items": { "type": "array", "items": { "type": "object" } },
|
|
77
|
-
"points": {
|
|
78
|
-
"type": "array",
|
|
79
|
-
"items": {
|
|
80
|
-
"type": "object",
|
|
81
|
-
"required": ["x", "y"],
|
|
82
|
-
"properties": {
|
|
83
|
-
"x": { "type": "string" },
|
|
84
|
-
"y": { "type": "number" }
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
]
|
|
91
|
-
},
|
|
92
|
-
"scale": {
|
|
93
|
-
"type": "string",
|
|
94
|
-
"enum": ["compact", "default", "comfortable"],
|
|
95
|
-
"default": "default"
|
|
96
|
-
},
|
|
97
|
-
"max": {
|
|
98
|
-
"type": "number",
|
|
99
|
-
"default": 100,
|
|
100
|
-
"description": "Gauge full scale for entries without their own `max`."
|
|
101
|
-
},
|
|
102
|
-
"showValue": { "type": "boolean", "default": true },
|
|
103
|
-
"showStatus": { "type": "boolean", "default": true },
|
|
104
|
-
"showLabel": { "type": "boolean", "default": true },
|
|
105
|
-
"showLegend": { "type": "boolean", "default": true },
|
|
106
|
-
"showTooltip": { "type": "boolean", "default": true }
|
|
107
|
-
},
|
|
108
|
-
"required": ["data"]
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
;
|
|
112
|
-
|
|
113
|
-
export default _default;
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
const id = "donut-group-chart";
|
|
2
|
-
const tag = "ui9000-donut-group-chart";
|
|
3
|
-
const title = "Donut Group Chart";
|
|
4
|
-
const description = "Chat-optimized donut group rewritten in D3 (Visx → D3). A row of KPI donuts: each entry is a gauge filled to value / max over a neutral track, or a breakdown donut when the entry carries several slices. No Redux.";
|
|
5
|
-
const chartTypeKeys = ["donutGroupChart"];
|
|
6
|
-
const chartTypeMap = { "donutGroupChart": { "showValue": true, "showStatus": true, "showLabel": true } };
|
|
7
|
-
const source = "client/libs/shared/components/src/Widgets/DonutGroupChart/";
|
|
8
|
-
const stack = "d3";
|
|
9
|
-
const lazyImport = "@ui9000/widgets/lazy/donut-group-chart";
|
|
10
|
-
const entry = "@ui9000/widgets/donut-group-chart";
|
|
11
|
-
const usageConditions = { "host": "mcp-chat", "notFor": "fusedash-editor", "mapsExcluded": true, "context": "theme, scale, styleId and mode come from WidgetContext CSS custom properties, not props" };
|
|
12
|
-
const allowedActions = ["hover", "resize"];
|
|
13
|
-
const propsSchema = { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "data": { "oneOf": [{ "type": "array", "items": { "type": "object", "required": ["label", "value"], "properties": { "label": { "type": "string" }, "value": { "type": "number" } } } }, { "type": "array", "items": { "type": "object", "required": ["label", "value"], "properties": { "id": { "type": "string" }, "label": { "type": "string" }, "value": { "type": "number" }, "max": { "type": "number", "description": "FuseDash `maximalValue` — the gauge's full scale." }, "statusLabel": { "type": "string" }, "status": { "type": "string", "enum": ["positive", "negative", "neutral"] }, "color": { "type": "string" }, "slices": { "type": "array", "description": "More than one slice renders a breakdown donut instead of a gauge.", "items": { "type": "object", "required": ["label", "value"], "properties": { "label": { "type": "string" }, "value": { "type": "number" }, "color": { "type": "string" } } } } } } }, { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object" } }, "points": { "type": "array", "items": { "type": "object", "required": ["x", "y"], "properties": { "x": { "type": "string" }, "y": { "type": "number" } } } } } }] }, "scale": { "type": "string", "enum": ["compact", "default", "comfortable"], "default": "default" }, "max": { "type": "number", "default": 100, "description": "Gauge full scale for entries without their own `max`." }, "showValue": { "type": "boolean", "default": true }, "showStatus": { "type": "boolean", "default": true }, "showLabel": { "type": "boolean", "default": true }, "showLegend": { "type": "boolean", "default": true }, "showTooltip": { "type": "boolean", "default": true } }, "required": ["data"] };
|
|
14
|
-
const donutGroupMeta = {
|
|
15
|
-
id,
|
|
16
|
-
tag,
|
|
17
|
-
title,
|
|
18
|
-
description,
|
|
19
|
-
chartTypeKeys,
|
|
20
|
-
chartTypeMap,
|
|
21
|
-
source,
|
|
22
|
-
stack,
|
|
23
|
-
lazyImport,
|
|
24
|
-
entry,
|
|
25
|
-
usageConditions,
|
|
26
|
-
allowedActions,
|
|
27
|
-
propsSchema
|
|
28
|
-
};
|
|
29
|
-
export {
|
|
30
|
-
allowedActions,
|
|
31
|
-
chartTypeKeys,
|
|
32
|
-
chartTypeMap,
|
|
33
|
-
donutGroupMeta as default,
|
|
34
|
-
description,
|
|
35
|
-
entry,
|
|
36
|
-
id,
|
|
37
|
-
lazyImport,
|
|
38
|
-
propsSchema,
|
|
39
|
-
source,
|
|
40
|
-
stack,
|
|
41
|
-
tag,
|
|
42
|
-
title,
|
|
43
|
-
usageConditions
|
|
44
|
-
};
|
|
45
|
-
//# sourceMappingURL=metadata.json.js.map
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { WidgetTheme } from '../../../types/index.js';
|
|
2
|
-
import { DonutGauge, DonutHoverEntry } from '../lib/index.js';
|
|
3
|
-
export interface RenderDonutGroupChartOptions {
|
|
4
|
-
items: DonutGauge[];
|
|
5
|
-
width: number;
|
|
6
|
-
height: number;
|
|
7
|
-
/** FuseDash DonutGroupChart frame when omitted by the host */
|
|
8
|
-
margin?: {
|
|
9
|
-
top: number;
|
|
10
|
-
right: number;
|
|
11
|
-
bottom: number;
|
|
12
|
-
left: number;
|
|
13
|
-
};
|
|
14
|
-
theme: WidgetTheme;
|
|
15
|
-
themeMode?: 'light' | 'dark';
|
|
16
|
-
/** FuseDash page setting — picks the qualitative palette */
|
|
17
|
-
styleId?: string;
|
|
18
|
-
/** Value in the hole (FuseDash `display`) */
|
|
19
|
-
showValue?: boolean;
|
|
20
|
-
/** Badge under the value (FuseDash `statusLabel`) */
|
|
21
|
-
showStatus?: boolean;
|
|
22
|
-
/** Caption under the badge (FuseDash `groupBy` value) */
|
|
23
|
-
showLabel?: boolean;
|
|
24
|
-
/** Slice legend — breakdown donuts only */
|
|
25
|
-
showLegend?: boolean;
|
|
26
|
-
showTooltip?: boolean;
|
|
27
|
-
/** Gauge full scale for rows without their own `max` */
|
|
28
|
-
defaultMax?: number;
|
|
29
|
-
onHover?: (payload: {
|
|
30
|
-
title: string;
|
|
31
|
-
entries: DonutHoverEntry[];
|
|
32
|
-
event: MouseEvent;
|
|
33
|
-
}) => void;
|
|
34
|
-
onLeave?: () => void;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* FuseDash DonutGroupChart — D3 rewrite of the Visx `DonutGroupItem` row.
|
|
38
|
-
*
|
|
39
|
-
* Each entry is a ring with a KPI block in its hole: a gauge filled to
|
|
40
|
-
* `value / max` over a neutral track, or a breakdown donut when the entry
|
|
41
|
-
* carries more than one slice.
|
|
42
|
-
*/
|
|
43
|
-
export declare function renderDonutGroupChart(container: HTMLElement, options: RenderDonutGroupChartOptions): void;
|
|
44
|
-
//# sourceMappingURL=draw.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"draw.d.ts","sourceRoot":"","sources":["../../../../src/components/donut-group-chart/render/draw.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG3D,OAAO,EAQL,KAAK,UAAU,EACf,KAAK,eAAe,EAErB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qDAAqD;IACrD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yDAAyD;IACzD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,eAAe,EAAE,CAAC;QAC3B,KAAK,EAAE,UAAU,CAAC;KACnB,KAAK,IAAI,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAoCD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,WAAW,EACtB,OAAO,EAAE,4BAA4B,GACpC,IAAI,CA+MN"}
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
import { select } from "d3-selection";
|
|
2
|
-
import { pie, arc } from "d3-shape";
|
|
3
|
-
import { pickQualitativePalette } from "../../../utils/fuse-palette.js";
|
|
4
|
-
import { FD } from "../../../utils/fusedash-visual.js";
|
|
5
|
-
import { donutGridLayout, donutRadii, donutArcValues, gaugeRatio, resolveMax } from "../lib/domain.js";
|
|
6
|
-
import { formatCompact, fitLabel } from "../lib/format.js";
|
|
7
|
-
function measureText(node, label, fontSize) {
|
|
8
|
-
var _a;
|
|
9
|
-
const measured = (_a = node == null ? void 0 : node.getComputedTextLength) == null ? void 0 : _a.call(node);
|
|
10
|
-
return Number.isFinite(measured) && measured > 0 ? measured : label.length * fontSize * 0.56;
|
|
11
|
-
}
|
|
12
|
-
function clamp(value, min, max) {
|
|
13
|
-
return Math.min(Math.max(value, min), max);
|
|
14
|
-
}
|
|
15
|
-
function resolveColor(override, index, count, theme, styleId) {
|
|
16
|
-
if (override) return override;
|
|
17
|
-
const usingDefaultStyle = !styleId || styleId === "default";
|
|
18
|
-
if (usingDefaultStyle) {
|
|
19
|
-
if (index === 0 && theme.primary) return theme.primary;
|
|
20
|
-
if (index === 1 && theme.secondary) return theme.secondary;
|
|
21
|
-
}
|
|
22
|
-
const palette = pickQualitativePalette(0, count);
|
|
23
|
-
return palette[index % palette.length];
|
|
24
|
-
}
|
|
25
|
-
function renderDonutGroupChart(container, options) {
|
|
26
|
-
const {
|
|
27
|
-
items,
|
|
28
|
-
width,
|
|
29
|
-
height,
|
|
30
|
-
margin = { ...FD.donutMargin },
|
|
31
|
-
theme,
|
|
32
|
-
themeMode = "light",
|
|
33
|
-
styleId,
|
|
34
|
-
showValue = true,
|
|
35
|
-
showStatus = true,
|
|
36
|
-
showLabel = true,
|
|
37
|
-
showLegend = true,
|
|
38
|
-
showTooltip = true,
|
|
39
|
-
defaultMax = FD.donutDefaultMax,
|
|
40
|
-
onHover,
|
|
41
|
-
onLeave
|
|
42
|
-
} = options;
|
|
43
|
-
container.replaceChildren();
|
|
44
|
-
if (!items.length || width <= 0 || height <= 0) return;
|
|
45
|
-
const dark = themeMode === "dark";
|
|
46
|
-
const trackFill = dark ? FD.donutTrackFillDark : FD.donutTrackFill;
|
|
47
|
-
const dividerStroke = dark ? FD.donutDividerDark : FD.donutDivider;
|
|
48
|
-
const sliceStroke = dark ? FD.donutSliceStrokeDark : FD.donutSliceStroke;
|
|
49
|
-
const statusColors = dark ? FD.donutStatusColorsDark : FD.donutStatusColors;
|
|
50
|
-
const legendSource = items.reduce(
|
|
51
|
-
(best, item) => {
|
|
52
|
-
var _a, _b;
|
|
53
|
-
return (((_a = item.slices) == null ? void 0 : _a.length) ?? 0) > (((_b = best == null ? void 0 : best.slices) == null ? void 0 : _b.length) ?? 0) ? item : best;
|
|
54
|
-
},
|
|
55
|
-
void 0
|
|
56
|
-
);
|
|
57
|
-
const legendSlices = showLegend ? (legendSource == null ? void 0 : legendSource.slices) ?? [] : [];
|
|
58
|
-
const legendHeight = legendSlices.length > 1 ? 22 : 0;
|
|
59
|
-
const gridLeft = margin.left;
|
|
60
|
-
const gridTop = margin.top + legendHeight;
|
|
61
|
-
const gridWidth = width - margin.left - margin.right;
|
|
62
|
-
const gridHeight = height - gridTop - margin.bottom;
|
|
63
|
-
if (gridWidth <= 0 || gridHeight <= 0) return;
|
|
64
|
-
const { columns, rows, cellWidth, cellHeight } = donutGridLayout(
|
|
65
|
-
items.length,
|
|
66
|
-
gridWidth,
|
|
67
|
-
gridHeight
|
|
68
|
-
);
|
|
69
|
-
if (!columns || !rows) return;
|
|
70
|
-
const svg = select(container).append("svg").attr("width", width).attr("height", height).attr("role", "img").attr("aria-label", `donut group chart, ${items.length} donuts`).style("display", "block").style("font-family", theme.fontFamily);
|
|
71
|
-
const root = svg.append("g").attr("class", "donuts");
|
|
72
|
-
if (legendSlices.length > 1) {
|
|
73
|
-
const legend = svg.append("g").attr("class", "legend").attr("transform", `translate(${gridLeft},${margin.top})`);
|
|
74
|
-
let lx = 0;
|
|
75
|
-
legendSlices.forEach((slice, i) => {
|
|
76
|
-
const color = resolveColor(slice.color, i, legendSlices.length, theme, styleId);
|
|
77
|
-
const item = legend.append("g").attr("transform", `translate(${lx},0)`);
|
|
78
|
-
item.append("rect").attr("x", 0).attr("y", 2).attr("width", 10).attr("height", 10).attr("rx", 2).attr("fill", color);
|
|
79
|
-
const text = item.append("text").attr("x", 16).attr("y", 11).attr("fill", FD.axisLabelFill).attr("font-size", FD.axisLabelSize).text(slice.label);
|
|
80
|
-
lx += measureText(text.node(), slice.label, FD.axisLabelSize) + 30;
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
const dimOthers = (hovered) => {
|
|
84
|
-
root.selectAll("path.donut-arc").attr("opacity", function() {
|
|
85
|
-
return this === hovered ? 1 : FD.donutArcOpacityDimmed;
|
|
86
|
-
});
|
|
87
|
-
};
|
|
88
|
-
const restoreArcs = () => {
|
|
89
|
-
root.selectAll("path.donut-arc").attr("opacity", FD.donutArcOpacity);
|
|
90
|
-
};
|
|
91
|
-
const pieGen = pie().sort(null).value((d) => d);
|
|
92
|
-
items.forEach((item, index) => {
|
|
93
|
-
const column = index % columns;
|
|
94
|
-
const row = Math.floor(index / columns);
|
|
95
|
-
const cellLeft = gridLeft + column * cellWidth;
|
|
96
|
-
const cellTop = gridTop + row * cellHeight;
|
|
97
|
-
const cx = cellLeft + cellWidth / 2;
|
|
98
|
-
const cy = cellTop + cellHeight / 2;
|
|
99
|
-
const { outerRadius, innerRadius } = donutRadii(cellWidth, cellHeight);
|
|
100
|
-
if (outerRadius <= 0) return;
|
|
101
|
-
if (column > 0) {
|
|
102
|
-
root.append("line").attr("class", "donut-divider").attr("x1", cellLeft).attr("x2", cellLeft).attr("y1", cellTop + 8).attr("y2", cellTop + cellHeight - 8).attr("stroke", dividerStroke).attr("shape-rendering", "crispEdges");
|
|
103
|
-
}
|
|
104
|
-
const cell = root.append("g").attr("class", "donut").attr("data-donut", item.id).attr("transform", `translate(${cx},${cy})`);
|
|
105
|
-
const slices = item.slices ?? [];
|
|
106
|
-
const breakdown = slices.length > 1;
|
|
107
|
-
const { values, track } = donutArcValues(item, defaultMax);
|
|
108
|
-
const total = values.reduce((sum, v) => sum + v, 0);
|
|
109
|
-
const arcs = pieGen(values);
|
|
110
|
-
const arcGen = arc().innerRadius(innerRadius).outerRadius(outerRadius);
|
|
111
|
-
arcs.forEach((slice, i) => {
|
|
112
|
-
var _a;
|
|
113
|
-
if (slice.endAngle - slice.startAngle <= 0) return;
|
|
114
|
-
const isTrack = track && i === 1;
|
|
115
|
-
const color = isTrack ? trackFill : breakdown ? resolveColor((_a = slices[i]) == null ? void 0 : _a.color, i, slices.length, theme, styleId) : resolveColor(item.color, index, items.length, theme, styleId);
|
|
116
|
-
const path = cell.append("path").attr("class", isTrack ? "donut-track" : "donut-arc").attr("d", arcGen({ startAngle: slice.startAngle, endAngle: slice.endAngle })).attr("fill", color).attr("opacity", isTrack ? 1 : FD.donutArcOpacity).attr("stroke", sliceStroke).attr("stroke-width", FD.donutSliceStrokeWidth);
|
|
117
|
-
if (isTrack || !showTooltip || !onHover) return;
|
|
118
|
-
const label = breakdown ? slices[i].label : item.label;
|
|
119
|
-
const value = breakdown ? slices[i].value : item.value;
|
|
120
|
-
const ratio = breakdown ? total > 0 ? Math.abs(value) / total : 0 : gaugeRatio(item.value, resolveMax(item, defaultMax));
|
|
121
|
-
path.style("cursor", "pointer").on("mouseenter", function(event) {
|
|
122
|
-
dimOthers(this);
|
|
123
|
-
onHover({
|
|
124
|
-
title: item.label,
|
|
125
|
-
entries: [{ itemId: item.id, label, color, value, ratio }],
|
|
126
|
-
event
|
|
127
|
-
});
|
|
128
|
-
}).on("mousemove", function(event) {
|
|
129
|
-
onHover({
|
|
130
|
-
title: item.label,
|
|
131
|
-
entries: [{ itemId: item.id, label, color, value, ratio }],
|
|
132
|
-
event
|
|
133
|
-
});
|
|
134
|
-
}).on("mouseleave", () => {
|
|
135
|
-
restoreArcs();
|
|
136
|
-
onLeave == null ? void 0 : onLeave();
|
|
137
|
-
});
|
|
138
|
-
});
|
|
139
|
-
drawKpi(cell, {
|
|
140
|
-
item,
|
|
141
|
-
innerRadius,
|
|
142
|
-
theme,
|
|
143
|
-
statusColors,
|
|
144
|
-
showValue,
|
|
145
|
-
showStatus,
|
|
146
|
-
showLabel
|
|
147
|
-
});
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
function drawKpi(cell, options) {
|
|
151
|
-
const { item, innerRadius, theme, statusColors, showValue, showStatus, showLabel } = options;
|
|
152
|
-
if (innerRadius <= 6) return;
|
|
153
|
-
const box = innerRadius * 2;
|
|
154
|
-
const valueSize = clamp(innerRadius * 0.62, 9, FD.donutValueSize);
|
|
155
|
-
const captionSize = clamp(valueSize * 0.42, 7, FD.donutLabelSize);
|
|
156
|
-
const gap = Math.max(2, captionSize * 0.35);
|
|
157
|
-
const badgeHeight = captionSize * 1.6;
|
|
158
|
-
const statusLabel = showStatus ? item.statusLabel : void 0;
|
|
159
|
-
const label = showLabel ? item.label : "";
|
|
160
|
-
const valueHeight = showValue ? valueSize * 1.15 : 0;
|
|
161
|
-
const labelHeight = captionSize * 1.3;
|
|
162
|
-
let hasBadge = Boolean(statusLabel);
|
|
163
|
-
let hasLabel = Boolean(label);
|
|
164
|
-
const measure = () => valueHeight + (hasBadge ? badgeHeight + gap : 0) + (hasLabel ? labelHeight + gap : 0);
|
|
165
|
-
if (measure() > box && hasLabel) hasLabel = false;
|
|
166
|
-
if (measure() > box && hasBadge) hasBadge = false;
|
|
167
|
-
const blockHeight = measure();
|
|
168
|
-
if (!blockHeight) return;
|
|
169
|
-
const kpi = cell.append("g").attr("class", "donut-kpi").attr("pointer-events", "none");
|
|
170
|
-
let y = -blockHeight / 2;
|
|
171
|
-
if (showValue) {
|
|
172
|
-
kpi.append("text").attr("class", "donut-value").attr("x", 0).attr("y", y + valueHeight / 2).attr("text-anchor", "middle").attr("fill", theme.text).attr("font-size", valueSize).attr("font-weight", FD.donutValueWeight).style("dominant-baseline", "middle").text(formatCompact(item.value));
|
|
173
|
-
y += valueHeight;
|
|
174
|
-
}
|
|
175
|
-
if (hasBadge && statusLabel) {
|
|
176
|
-
y += gap;
|
|
177
|
-
const colors = statusColors[item.status ?? "neutral"];
|
|
178
|
-
const badge = kpi.append("g").attr("class", "donut-badge");
|
|
179
|
-
const rect = badge.append("rect");
|
|
180
|
-
const text = badge.append("text").attr("x", 0).attr("y", y + badgeHeight / 2).attr("text-anchor", "middle").attr("fill", colors.text).attr("font-size", captionSize).style("dominant-baseline", "middle").text(fitLabel(statusLabel, Math.max(1, Math.floor(box / (captionSize * 0.56)))));
|
|
181
|
-
const textWidth = measureText(text.node(), statusLabel, captionSize);
|
|
182
|
-
const badgeWidth = Math.min(textWidth + captionSize, box);
|
|
183
|
-
rect.attr("x", -badgeWidth / 2).attr("y", y).attr("width", badgeWidth).attr("height", badgeHeight).attr("rx", badgeHeight / 2).attr("fill", colors.background);
|
|
184
|
-
y += badgeHeight;
|
|
185
|
-
}
|
|
186
|
-
if (hasLabel) {
|
|
187
|
-
y += gap;
|
|
188
|
-
kpi.append("text").attr("class", "donut-label").attr("x", 0).attr("y", y + labelHeight / 2).attr("text-anchor", "middle").attr("fill", theme.textMuted).attr("font-size", captionSize).style("dominant-baseline", "middle").text(fitLabel(label, Math.max(1, Math.floor(box / (captionSize * 0.56)))));
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
export {
|
|
192
|
-
renderDonutGroupChart
|
|
193
|
-
};
|
|
194
|
-
//# sourceMappingURL=draw.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"draw.js","sources":["../../../../src/components/donut-group-chart/render/draw.ts"],"sourcesContent":["import { select, type Selection } from 'd3-selection';\nimport { arc, pie } from 'd3-shape';\n\nimport type { WidgetTheme } from '../../../types/index.js';\nimport { pickQualitativePalette } from '../../../utils/fuse-palette.js';\nimport { FD } from '../../../utils/fusedash-visual.js';\nimport {\n donutArcValues,\n donutGridLayout,\n donutRadii,\n fitLabel,\n formatCompact,\n gaugeRatio,\n resolveMax,\n type DonutGauge,\n type DonutHoverEntry,\n type DonutStatus,\n} from '../lib/index.js';\n\nexport interface RenderDonutGroupChartOptions {\n items: DonutGauge[];\n width: number;\n height: number;\n /** FuseDash DonutGroupChart frame when omitted by the host */\n margin?: { top: number; right: number; bottom: number; left: number };\n theme: WidgetTheme;\n themeMode?: 'light' | 'dark';\n /** FuseDash page setting — picks the qualitative palette */\n styleId?: string;\n /** Value in the hole (FuseDash `display`) */\n showValue?: boolean;\n /** Badge under the value (FuseDash `statusLabel`) */\n showStatus?: boolean;\n /** Caption under the badge (FuseDash `groupBy` value) */\n showLabel?: boolean;\n /** Slice legend — breakdown donuts only */\n showLegend?: boolean;\n showTooltip?: boolean;\n /** Gauge full scale for rows without their own `max` */\n defaultMax?: number;\n onHover?: (payload: {\n title: string;\n entries: DonutHoverEntry[];\n event: MouseEvent;\n }) => void;\n onLeave?: () => void;\n}\n\n/** `getComputedTextLength` is unavailable without a layout engine (jsdom, SSR). */\nfunction measureText(node: SVGTextElement | null, label: string, fontSize: number): number {\n const measured = node?.getComputedTextLength?.();\n return Number.isFinite(measured) && (measured as number) > 0\n ? (measured as number)\n : label.length * fontSize * 0.56;\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n}\n\n/**\n * FuseDash `getCurrentColor`: an explicit color wins, then the theme's\n * primary/secondary (so a host that themed the widget keeps its brand on the\n * first two donuts), then the `styleId` palette for this donut count.\n */\nfunction resolveColor(\n override: string | undefined,\n index: number,\n count: number,\n theme: WidgetTheme,\n styleId?: string,\n): string {\n if (override) return override;\n const usingDefaultStyle = !styleId || styleId === 'default';\n if (usingDefaultStyle) {\n if (index === 0 && theme.primary) return theme.primary;\n if (index === 1 && theme.secondary) return theme.secondary;\n }\n const palette = pickQualitativePalette(0, count);\n return palette[index % palette.length];\n}\n\n/**\n * FuseDash DonutGroupChart — D3 rewrite of the Visx `DonutGroupItem` row.\n *\n * Each entry is a ring with a KPI block in its hole: a gauge filled to\n * `value / max` over a neutral track, or a breakdown donut when the entry\n * carries more than one slice.\n */\nexport function renderDonutGroupChart(\n container: HTMLElement,\n options: RenderDonutGroupChartOptions,\n): void {\n const {\n items,\n width,\n height,\n margin = { ...FD.donutMargin },\n theme,\n themeMode = 'light',\n styleId,\n showValue = true,\n showStatus = true,\n showLabel = true,\n showLegend = true,\n showTooltip = true,\n defaultMax = FD.donutDefaultMax,\n onHover,\n onLeave,\n } = options;\n\n container.replaceChildren();\n if (!items.length || width <= 0 || height <= 0) return;\n\n const dark = themeMode === 'dark';\n const trackFill = dark ? FD.donutTrackFillDark : FD.donutTrackFill;\n const dividerStroke = dark ? FD.donutDividerDark : FD.donutDivider;\n const sliceStroke = dark ? FD.donutSliceStrokeDark : FD.donutSliceStroke;\n const statusColors = dark ? FD.donutStatusColorsDark : FD.donutStatusColors;\n\n // the legend describes slices, so it only appears for breakdown donuts\n const legendSource = items.reduce<DonutGauge | undefined>(\n (best, item) =>\n (item.slices?.length ?? 0) > (best?.slices?.length ?? 0) ? item : best,\n undefined,\n );\n const legendSlices = showLegend ? (legendSource?.slices ?? []) : [];\n const legendHeight = legendSlices.length > 1 ? 22 : 0;\n\n const gridLeft = margin.left;\n const gridTop = margin.top + legendHeight;\n const gridWidth = width - margin.left - margin.right;\n const gridHeight = height - gridTop - margin.bottom;\n if (gridWidth <= 0 || gridHeight <= 0) return;\n\n const { columns, rows, cellWidth, cellHeight } = donutGridLayout(\n items.length,\n gridWidth,\n gridHeight,\n );\n if (!columns || !rows) return;\n\n const svg = select(container)\n .append('svg')\n .attr('width', width)\n .attr('height', height)\n .attr('role', 'img')\n .attr('aria-label', `donut group chart, ${items.length} donuts`)\n .style('display', 'block')\n .style('font-family', theme.fontFamily);\n\n const root = svg.append('g').attr('class', 'donuts');\n\n // --- Legend ---------------------------------------------------------------\n if (legendSlices.length > 1) {\n const legend = svg\n .append('g')\n .attr('class', 'legend')\n .attr('transform', `translate(${gridLeft},${margin.top})`);\n let lx = 0;\n legendSlices.forEach((slice, i) => {\n const color = resolveColor(slice.color, i, legendSlices.length, theme, styleId);\n const item = legend.append('g').attr('transform', `translate(${lx},0)`);\n item\n .append('rect')\n .attr('x', 0)\n .attr('y', 2)\n .attr('width', 10)\n .attr('height', 10)\n .attr('rx', 2)\n .attr('fill', color);\n const text = item\n .append('text')\n .attr('x', 16)\n .attr('y', 11)\n .attr('fill', FD.axisLabelFill)\n .attr('font-size', FD.axisLabelSize)\n .text(slice.label);\n lx += measureText(text.node(), slice.label, FD.axisLabelSize) + 30;\n });\n }\n\n // --- Hover dimming (FuseDash fades every other arc to 0.2) ----------------\n const dimOthers = (hovered: SVGPathElement): void => {\n root\n .selectAll<SVGPathElement, unknown>('path.donut-arc')\n .attr('opacity', function () {\n return this === hovered ? 1 : FD.donutArcOpacityDimmed;\n });\n };\n const restoreArcs = (): void => {\n root.selectAll('path.donut-arc').attr('opacity', FD.donutArcOpacity);\n };\n\n // --- Donuts ---------------------------------------------------------------\n const pieGen = pie<number>()\n .sort(null)\n .value((d) => d);\n\n items.forEach((item, index) => {\n const column = index % columns;\n const row = Math.floor(index / columns);\n const cellLeft = gridLeft + column * cellWidth;\n const cellTop = gridTop + row * cellHeight;\n const cx = cellLeft + cellWidth / 2;\n const cy = cellTop + cellHeight / 2;\n\n const { outerRadius, innerRadius } = donutRadii(cellWidth, cellHeight);\n if (outerRadius <= 0) return;\n\n // FuseDash separates the donuts with a left border on every item but the first\n if (column > 0) {\n root\n .append('line')\n .attr('class', 'donut-divider')\n .attr('x1', cellLeft)\n .attr('x2', cellLeft)\n .attr('y1', cellTop + 8)\n .attr('y2', cellTop + cellHeight - 8)\n .attr('stroke', dividerStroke)\n .attr('shape-rendering', 'crispEdges');\n }\n\n const cell = root\n .append('g')\n .attr('class', 'donut')\n .attr('data-donut', item.id)\n .attr('transform', `translate(${cx},${cy})`);\n\n const slices = item.slices ?? [];\n const breakdown = slices.length > 1;\n const { values, track } = donutArcValues(item, defaultMax);\n const total = values.reduce((sum, v) => sum + v, 0);\n const arcs = pieGen(values);\n const arcGen = arc<{ startAngle: number; endAngle: number }>()\n .innerRadius(innerRadius)\n .outerRadius(outerRadius);\n\n arcs.forEach((slice, i) => {\n if (slice.endAngle - slice.startAngle <= 0) return;\n const isTrack = track && i === 1;\n const color = isTrack\n ? trackFill\n : breakdown\n ? resolveColor(slices[i]?.color, i, slices.length, theme, styleId)\n : resolveColor(item.color, index, items.length, theme, styleId);\n\n const path = cell\n .append('path')\n .attr('class', isTrack ? 'donut-track' : 'donut-arc')\n .attr('d', arcGen({ startAngle: slice.startAngle, endAngle: slice.endAngle }))\n .attr('fill', color)\n .attr('opacity', isTrack ? 1 : FD.donutArcOpacity)\n .attr('stroke', sliceStroke)\n .attr('stroke-width', FD.donutSliceStrokeWidth);\n\n if (isTrack || !showTooltip || !onHover) return;\n\n const label = breakdown ? slices[i].label : item.label;\n const value = breakdown ? slices[i].value : item.value;\n const ratio = breakdown\n ? total > 0\n ? Math.abs(value) / total\n : 0\n : gaugeRatio(item.value, resolveMax(item, defaultMax));\n\n path\n .style('cursor', 'pointer')\n .on('mouseenter', function (event: MouseEvent) {\n dimOthers(this as SVGPathElement);\n onHover({\n title: item.label,\n entries: [{ itemId: item.id, label, color, value, ratio }],\n event,\n });\n })\n .on('mousemove', function (event: MouseEvent) {\n onHover({\n title: item.label,\n entries: [{ itemId: item.id, label, color, value, ratio }],\n event,\n });\n })\n .on('mouseleave', () => {\n restoreArcs();\n onLeave?.();\n });\n });\n\n drawKpi(cell, {\n item,\n innerRadius,\n theme,\n statusColors,\n showValue,\n showStatus,\n showLabel,\n });\n });\n}\n\ninterface KpiOptions {\n item: DonutGauge;\n innerRadius: number;\n theme: WidgetTheme;\n statusColors: Record<DonutStatus, { background: string; text: string }>;\n showValue: boolean;\n showStatus: boolean;\n showLabel: boolean;\n}\n\n/**\n * The KPI block FuseDash overlays on the hole: value, status badge, caption.\n * Type sizes are FuseDash's 30/12/12 scaled down with the hole so the block\n * never spills out of small chat cells.\n */\nfunction drawKpi(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n cell: Selection<any, unknown, null, undefined>,\n options: KpiOptions,\n): void {\n const { item, innerRadius, theme, statusColors, showValue, showStatus, showLabel } =\n options;\n if (innerRadius <= 6) return;\n\n const box = innerRadius * 2;\n const valueSize = clamp(innerRadius * 0.62, 9, FD.donutValueSize);\n const captionSize = clamp(valueSize * 0.42, 7, FD.donutLabelSize);\n const gap = Math.max(2, captionSize * 0.35);\n const badgeHeight = captionSize * 1.6;\n\n const statusLabel = showStatus ? item.statusLabel : undefined;\n const label = showLabel ? item.label : '';\n const valueHeight = showValue ? valueSize * 1.15 : 0;\n const labelHeight = captionSize * 1.3;\n\n // The hole is small in chat: drop the caption first, then the badge, rather\n // than letting the block spill over the ring.\n let hasBadge = Boolean(statusLabel);\n let hasLabel = Boolean(label);\n const measure = (): number =>\n valueHeight + (hasBadge ? badgeHeight + gap : 0) + (hasLabel ? labelHeight + gap : 0);\n if (measure() > box && hasLabel) hasLabel = false;\n if (measure() > box && hasBadge) hasBadge = false;\n const blockHeight = measure();\n if (!blockHeight) return;\n\n const kpi = cell.append('g').attr('class', 'donut-kpi').attr('pointer-events', 'none');\n let y = -blockHeight / 2;\n\n if (showValue) {\n kpi\n .append('text')\n .attr('class', 'donut-value')\n .attr('x', 0)\n .attr('y', y + valueHeight / 2)\n .attr('text-anchor', 'middle')\n .attr('fill', theme.text)\n .attr('font-size', valueSize)\n .attr('font-weight', FD.donutValueWeight)\n .style('dominant-baseline', 'middle')\n .text(formatCompact(item.value));\n y += valueHeight;\n }\n\n if (hasBadge && statusLabel) {\n y += gap;\n const colors = statusColors[item.status ?? 'neutral'];\n const badge = kpi.append('g').attr('class', 'donut-badge');\n const rect = badge.append('rect');\n const text = badge\n .append('text')\n .attr('x', 0)\n .attr('y', y + badgeHeight / 2)\n .attr('text-anchor', 'middle')\n .attr('fill', colors.text)\n .attr('font-size', captionSize)\n .style('dominant-baseline', 'middle')\n .text(fitLabel(statusLabel, Math.max(1, Math.floor(box / (captionSize * 0.56)))));\n const textWidth = measureText(text.node(), statusLabel, captionSize);\n const badgeWidth = Math.min(textWidth + captionSize, box);\n rect\n .attr('x', -badgeWidth / 2)\n .attr('y', y)\n .attr('width', badgeWidth)\n .attr('height', badgeHeight)\n .attr('rx', badgeHeight / 2)\n .attr('fill', colors.background);\n y += badgeHeight;\n }\n\n if (hasLabel) {\n y += gap;\n kpi\n .append('text')\n .attr('class', 'donut-label')\n .attr('x', 0)\n .attr('y', y + labelHeight / 2)\n .attr('text-anchor', 'middle')\n .attr('fill', theme.textMuted)\n .attr('font-size', captionSize)\n .style('dominant-baseline', 'middle')\n .text(fitLabel(label, Math.max(1, Math.floor(box / (captionSize * 0.56)))));\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/donut-group-chart/render/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,KAAK,4BAA4B,EAAE,MAAM,WAAW,CAAC"}
|