@milaboratories/miplots4 1.1.0 → 1.2.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/dist/MiPlots.d.ts.map +1 -1
- package/dist/MiPlots.js +16 -14
- package/dist/MiPlots.js.map +1 -1
- package/dist/bubble/BubbleSettingsImpl.d.ts +3 -0
- package/dist/bubble/BubbleSettingsImpl.d.ts.map +1 -1
- package/dist/bubble/BubbleSettingsImpl.js +4 -1
- package/dist/bubble/BubbleSettingsImpl.js.map +1 -1
- package/dist/bubble/ChartRenderer.d.ts +2 -12
- package/dist/bubble/ChartRenderer.d.ts.map +1 -1
- package/dist/bubble/ChartRenderer.js +13 -13
- package/dist/bubble/ChartRenderer.js.map +1 -1
- package/dist/bubble/getGroupedCellsData.d.ts +1 -1
- package/dist/bubble/getGroupedCellsData.d.ts.map +1 -1
- package/dist/bubble/getGroupedCellsData.js +20 -14
- package/dist/bubble/getGroupedCellsData.js.map +1 -1
- package/dist/bubble/index.d.ts.map +1 -1
- package/dist/bubble/index.js +6 -10
- package/dist/bubble/index.js.map +1 -1
- package/dist/common/ContinuousAxis.d.ts +3 -1
- package/dist/common/ContinuousAxis.d.ts.map +1 -1
- package/dist/common/ContinuousAxis.js +8 -8
- package/dist/common/ContinuousAxis.js.map +1 -1
- package/dist/common/Legend.d.ts +12 -1
- package/dist/common/Legend.d.ts.map +1 -1
- package/dist/common/Legend.js +14 -6
- package/dist/common/Legend.js.map +1 -1
- package/dist/heatmap/ChartRenderer.d.ts +2 -12
- package/dist/heatmap/ChartRenderer.d.ts.map +1 -1
- package/dist/heatmap/ChartRenderer.js +26 -26
- package/dist/heatmap/ChartRenderer.js.map +1 -1
- package/dist/heatmap/HeatmapSettingsImpl.d.ts +3 -0
- package/dist/heatmap/HeatmapSettingsImpl.d.ts.map +1 -1
- package/dist/heatmap/HeatmapSettingsImpl.js +5 -2
- package/dist/heatmap/HeatmapSettingsImpl.js.map +1 -1
- package/dist/heatmap/fillCellsData.d.ts +6 -1
- package/dist/heatmap/fillCellsData.d.ts.map +1 -1
- package/dist/heatmap/fillCellsData.js +135 -96
- package/dist/heatmap/fillCellsData.js.map +1 -1
- package/dist/heatmap/getCells.d.ts +4 -1
- package/dist/heatmap/getCells.d.ts.map +1 -1
- package/dist/heatmap/getCells.js +19 -16
- package/dist/heatmap/getCells.js.map +1 -1
- package/dist/heatmap/index.d.ts.map +1 -1
- package/dist/heatmap/index.js +32 -34
- package/dist/heatmap/index.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/selection/ChartRenderer.d.ts +90 -0
- package/dist/selection/ChartRenderer.d.ts.map +1 -0
- package/dist/selection/ChartRenderer.js +254 -0
- package/dist/selection/ChartRenderer.js.map +1 -0
- package/dist/selection/SelectionSettingsImpl.d.ts +53 -0
- package/dist/selection/SelectionSettingsImpl.d.ts.map +1 -0
- package/dist/selection/SelectionSettingsImpl.js +47 -0
- package/dist/selection/SelectionSettingsImpl.js.map +1 -0
- package/dist/selection/components/Chart/Bars/GroupSelectedBars.d.ts +8 -0
- package/dist/selection/components/Chart/Bars/GroupSelectedBars.d.ts.map +1 -0
- package/dist/selection/components/Chart/Bars/GroupSelectedBars.js +57 -0
- package/dist/selection/components/Chart/Bars/GroupSelectedBars.js.map +1 -0
- package/dist/selection/components/Chart/Bars/StackedBars.d.ts +12 -0
- package/dist/selection/components/Chart/Bars/StackedBars.d.ts.map +1 -0
- package/dist/selection/components/Chart/Bars/StackedBars.js +58 -0
- package/dist/selection/components/Chart/Bars/StackedBars.js.map +1 -0
- package/dist/selection/components/Chart/Bars/UngroupedBars.d.ts +6 -0
- package/dist/selection/components/Chart/Bars/UngroupedBars.d.ts.map +1 -0
- package/dist/selection/components/Chart/Bars/UngroupedBars.js +38 -0
- package/dist/selection/components/Chart/Bars/UngroupedBars.js.map +1 -0
- package/dist/selection/components/Chart/Bars.d.ts +10 -0
- package/dist/selection/components/Chart/Bars.d.ts.map +1 -0
- package/dist/selection/components/Chart/Bars.js +48 -0
- package/dist/selection/components/Chart/Bars.js.map +1 -0
- package/dist/selection/components/Chart/ChartAxes.d.ts +7 -0
- package/dist/selection/components/Chart/ChartAxes.d.ts.map +1 -0
- package/dist/selection/components/Chart/ChartAxes.js +51 -0
- package/dist/selection/components/Chart/ChartAxes.js.map +1 -0
- package/dist/selection/components/Chart/ChartFrame.d.ts +9 -0
- package/dist/selection/components/Chart/ChartFrame.d.ts.map +1 -0
- package/dist/selection/components/Chart/ChartFrame.js +41 -0
- package/dist/selection/components/Chart/ChartFrame.js.map +1 -0
- package/dist/selection/components/Chart/Dividers.d.ts +8 -0
- package/dist/selection/components/Chart/Dividers.d.ts.map +1 -0
- package/dist/selection/components/Chart/Dividers.js +27 -0
- package/dist/selection/components/Chart/Dividers.js.map +1 -0
- package/dist/selection/components/Chart/Gridlines.d.ts +10 -0
- package/dist/selection/components/Chart/Gridlines.d.ts.map +1 -0
- package/dist/selection/components/Chart/Gridlines.js +32 -0
- package/dist/selection/components/Chart/Gridlines.js.map +1 -0
- package/dist/selection/components/Chart/Ribbons/GroupFlowRibbon.d.ts +9 -0
- package/dist/selection/components/Chart/Ribbons/GroupFlowRibbon.d.ts.map +1 -0
- package/dist/selection/components/Chart/Ribbons/GroupFlowRibbon.js +36 -0
- package/dist/selection/components/Chart/Ribbons/GroupFlowRibbon.js.map +1 -0
- package/dist/selection/components/Chart/Ribbons/MultiGroupRibbon.d.ts +6 -0
- package/dist/selection/components/Chart/Ribbons/MultiGroupRibbon.d.ts.map +1 -0
- package/dist/selection/components/Chart/Ribbons/MultiGroupRibbon.js +22 -0
- package/dist/selection/components/Chart/Ribbons/MultiGroupRibbon.js.map +1 -0
- package/dist/selection/components/Chart/Ribbons/SimpleRibbon.d.ts +10 -0
- package/dist/selection/components/Chart/Ribbons/SimpleRibbon.d.ts.map +1 -0
- package/dist/selection/components/Chart/Ribbons/SimpleRibbon.js +33 -0
- package/dist/selection/components/Chart/Ribbons/SimpleRibbon.js.map +1 -0
- package/dist/selection/components/Chart/Ribbons/StackedGroupFlowRibbon.d.ts +10 -0
- package/dist/selection/components/Chart/Ribbons/StackedGroupFlowRibbon.d.ts.map +1 -0
- package/dist/selection/components/Chart/Ribbons/StackedGroupFlowRibbon.js +65 -0
- package/dist/selection/components/Chart/Ribbons/StackedGroupFlowRibbon.js.map +1 -0
- package/dist/selection/components/Chart/Ribbons/ribbonPath.d.ts +10 -0
- package/dist/selection/components/Chart/Ribbons/ribbonPath.d.ts.map +1 -0
- package/dist/selection/components/Chart/Ribbons/ribbonPath.js +13 -0
- package/dist/selection/components/Chart/Ribbons/ribbonPath.js.map +1 -0
- package/dist/selection/components/Chart/Ribbons.d.ts +9 -0
- package/dist/selection/components/Chart/Ribbons.d.ts.map +1 -0
- package/dist/selection/components/Chart/Ribbons.js +58 -0
- package/dist/selection/components/Chart/Ribbons.js.map +1 -0
- package/dist/selection/components/Chart/StageCounts.d.ts +7 -0
- package/dist/selection/components/Chart/StageCounts.d.ts.map +1 -0
- package/dist/selection/components/Chart/StageCounts.js +20 -0
- package/dist/selection/components/Chart/StageCounts.js.map +1 -0
- package/dist/selection/components/Chart/types.d.ts +132 -0
- package/dist/selection/components/Chart/types.d.ts.map +1 -0
- package/dist/selection/components/Chart.d.ts +22 -0
- package/dist/selection/components/Chart.d.ts.map +1 -0
- package/dist/selection/components/Chart.js +97 -0
- package/dist/selection/components/Chart.js.map +1 -0
- package/dist/selection/components/ChartsGroup.d.ts +18 -0
- package/dist/selection/components/ChartsGroup.d.ts.map +1 -0
- package/dist/selection/components/ChartsGroup.js +181 -0
- package/dist/selection/components/ChartsGroup.js.map +1 -0
- package/dist/selection/components/FacetCell.d.ts +22 -0
- package/dist/selection/components/FacetCell.d.ts.map +1 -0
- package/dist/selection/components/FacetCell.js +18 -0
- package/dist/selection/components/FacetCell.js.map +1 -0
- package/dist/selection/components/types.d.ts +58 -0
- package/dist/selection/components/types.d.ts.map +1 -0
- package/dist/selection/constants.d.ts +25 -0
- package/dist/selection/constants.d.ts.map +1 -0
- package/dist/selection/constants.js +4 -0
- package/dist/selection/constants.js.map +1 -0
- package/dist/selection/createSelectionData.d.ts +50 -0
- package/dist/selection/createSelectionData.d.ts.map +1 -0
- package/dist/selection/createSelectionData.js +92 -0
- package/dist/selection/createSelectionData.js.map +1 -0
- package/dist/selection/index.d.ts +26 -0
- package/dist/selection/index.d.ts.map +1 -0
- package/dist/selection/index.js +96 -0
- package/dist/selection/index.js.map +1 -0
- package/dist/selection/utils.d.ts +4 -0
- package/dist/selection/utils.d.ts.map +1 -0
- package/dist/selection/utils.js +13 -0
- package/dist/selection/utils.js.map +1 -0
- package/dist/types/bubble.d.ts +131 -0
- package/dist/types/bubble.d.ts.map +1 -1
- package/dist/types/bubble.js +3 -0
- package/dist/types/bubble.js.map +1 -1
- package/dist/types/common.d.ts +38 -0
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/common.js +1 -0
- package/dist/types/common.js.map +1 -1
- package/dist/types/dendro.d.ts +103 -0
- package/dist/types/dendro.d.ts.map +1 -1
- package/dist/types/discrete.d.ts +167 -0
- package/dist/types/discrete.d.ts.map +1 -1
- package/dist/types/heatmap.d.ts +248 -0
- package/dist/types/heatmap.d.ts.map +1 -1
- package/dist/types/heatmap.js +3 -0
- package/dist/types/heatmap.js.map +1 -1
- package/dist/types/histogram.d.ts +22 -0
- package/dist/types/histogram.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/scatterplot-umap.d.ts +188 -0
- package/dist/types/scatterplot-umap.d.ts.map +1 -1
- package/dist/types/scatterplot.d.ts +270 -0
- package/dist/types/scatterplot.d.ts.map +1 -1
- package/dist/types/selection.d.ts +452 -0
- package/dist/types/selection.d.ts.map +1 -0
- package/dist/types/selection.js +53 -0
- package/dist/types/selection.js.map +1 -0
- package/dist/utils/intersect.d.ts +2 -0
- package/dist/utils/intersect.d.ts.map +1 -0
- package/dist/utils/intersect.js +8 -0
- package/dist/utils/intersect.js.map +1 -0
- package/package.json +2 -2
package/dist/MiPlots.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiPlots.d.ts","sourceRoot":"","sources":["../src/MiPlots.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAE,cAAc,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"MiPlots.d.ts","sourceRoot":"","sources":["../src/MiPlots.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAE,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAWnE,OAAO,KAAK,EAER,kBAAkB,EAMlB,QAAQ,EACX,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,aAAa,CAAC;AAEzC,qBAAa,OAAQ,YAAW,cAAc;IAC1C,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,aAAa,CAAC;IAErB,OAAO,CAAC,MAAM,CAAC,WAAW;IA0C1B,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,OAAO;gBAK3F,KAAK,EAAE,aAAa;IAIhC,IAAI,cAAc,mCAEjB;IAED,IAAI,QAAQ,YAEX;IAED,IAAI,SAAS,uCAEZ;IAED,KAAK,CAAC,IAAI,EAAE,WAAW;IAKvB,OAAO;IAKP,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;IAgBvD,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IAI9C,MAAM;CAGT"}
|
package/dist/MiPlots.js
CHANGED
|
@@ -7,23 +7,25 @@ import { ChartHistogram as a } from "./histogram/index.js";
|
|
|
7
7
|
import { ChartScatterplot as o } from "./scatterplot/index.js";
|
|
8
8
|
import { ChartScatterplotUmap as s } from "./scatterplot-umap/index.js";
|
|
9
9
|
import { ChartBubble as c } from "./bubble/index.js";
|
|
10
|
-
|
|
10
|
+
import { ChartSelection as l } from "./selection/index.js";
|
|
11
|
+
var u = class u {
|
|
11
12
|
node;
|
|
12
13
|
chart;
|
|
13
|
-
static createChart(n,
|
|
14
|
-
let { type:
|
|
15
|
-
if (
|
|
16
|
-
if (
|
|
17
|
-
if (
|
|
18
|
-
if (
|
|
19
|
-
if (
|
|
20
|
-
if (
|
|
21
|
-
if (
|
|
22
|
-
|
|
14
|
+
static createChart(n, u, d) {
|
|
15
|
+
let { type: f } = u;
|
|
16
|
+
if (f === "discrete") return new r(n, u, d);
|
|
17
|
+
if (f === "dendro") return new t(n, u, d);
|
|
18
|
+
if (f === "scatterplot") return new o(n, u, d);
|
|
19
|
+
if (f === "scatterplot-umap") return new s(n, u, d);
|
|
20
|
+
if (f === "heatmap") return new i(n, u, d);
|
|
21
|
+
if (f === "histogram") return new a(n, u, d);
|
|
22
|
+
if (f === "bubble") return new c(n, u, d);
|
|
23
|
+
if (f === "selection") return new l(n, u, d);
|
|
24
|
+
e(f, `Unknown chart type: ${f}`);
|
|
23
25
|
}
|
|
24
26
|
static newPlot(e, t, r) {
|
|
25
27
|
let i = n.from(e);
|
|
26
|
-
return new this(
|
|
28
|
+
return new this(u.createChart(i, t, r));
|
|
27
29
|
}
|
|
28
30
|
constructor(e) {
|
|
29
31
|
this.chart = e;
|
|
@@ -45,7 +47,7 @@ var l = class l {
|
|
|
45
47
|
}
|
|
46
48
|
updateSettingsAndData(e, t) {
|
|
47
49
|
if (t.type !== this.chart.settings.type) {
|
|
48
|
-
let e =
|
|
50
|
+
let e = u.createChart(this.chart.data, t);
|
|
49
51
|
this.node ? (this.chart.unmount(), this.chart = e, this.chart.mount(this.node)) : this.chart = e;
|
|
50
52
|
} else this.chart.updateSettingsAndData(n.from(e), t);
|
|
51
53
|
}
|
|
@@ -56,6 +58,6 @@ var l = class l {
|
|
|
56
58
|
return this.chart.export();
|
|
57
59
|
}
|
|
58
60
|
};
|
|
59
|
-
export {
|
|
61
|
+
export { u as MiPlots };
|
|
60
62
|
|
|
61
63
|
//# sourceMappingURL=MiPlots.js.map
|
package/dist/MiPlots.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiPlots.js","names":[],"sources":["../src/MiPlots.ts"],"sourcesContent":["import type {AbstractChart, ChartInterface} from './AbstractChart';\nimport {ChartDendro} from './dendro';\nimport {ChartDiscrete} from './discrete';\nimport {ChartHeatmap} from './heatmap';\nimport {ChartHistogram} from './histogram';\nimport {ChartScatterplot} from './scatterplot';\nimport {ChartScatterplotUmap} from './scatterplot-umap';\nimport {ChartBubble} from './bubble';\nimport {DataFrame} from './DataFrame';\nimport type {\n BubbleEventHandlers,\n ChartEventHandlers,\n DendroEventHandlers,\n DiscreteEventHandlers,\n HeatmapEventHandlers,\n HistogramEventHandlers,\n ScatterplotEventHandlers,\n Settings,\n} from './types';\nimport {exhaustive} from './utils';\nimport type {DataSet} from './DataFrame';\n\nexport class MiPlots implements ChartInterface {\n node?: HTMLElement;\n chart: AbstractChart;\n\n private static createChart(\n data: DataFrame,\n settings: Settings,\n eventHandlers?: ChartEventHandlers<unknown>\n ): AbstractChart {\n const {type} = settings;\n\n if (type === 'discrete') {\n return new ChartDiscrete(data, settings, eventHandlers as DiscreteEventHandlers);\n }\n\n if (type === 'dendro') {\n return new ChartDendro(data, settings, eventHandlers as DendroEventHandlers);\n }\n\n if (type === 'scatterplot') {\n return new ChartScatterplot(data, settings, eventHandlers as ScatterplotEventHandlers);\n }\n\n if (type === 'scatterplot-umap') {\n return new ChartScatterplotUmap(data, settings, eventHandlers as ScatterplotEventHandlers);\n }\n\n if (type === 'heatmap') {\n return new ChartHeatmap(data, settings, eventHandlers as HeatmapEventHandlers);\n }\n\n if (type === 'histogram') {\n return new ChartHistogram(data, settings, eventHandlers as HistogramEventHandlers);\n }\n\n if (type === 'bubble') {\n return new ChartBubble(data, settings, eventHandlers as BubbleEventHandlers);\n }\n\n exhaustive(type, `Unknown chart type: ${type}`);\n }\n\n static newPlot(data: DataSet, settings: Settings, eventHandlers?: ChartEventHandlers<unknown>): MiPlots {\n const dataFrame = DataFrame.from(data);\n return new this(MiPlots.createChart(dataFrame, settings, eventHandlers));\n }\n\n constructor(chart: AbstractChart) {\n this.chart = chart;\n }\n\n get calculatedData() {\n return this.chart.calculatedData;\n }\n\n get hasError() {\n return this.chart.hasError;\n }\n\n get errorInfo() {\n return this.chart.errorInfo;\n }\n\n mount(node: HTMLElement) {\n this.node = node;\n this.chart.mount(node);\n }\n\n unmount() {\n delete this.node;\n this.chart.unmount();\n }\n\n updateSettingsAndData(data: DataSet, settings: Settings) {\n if (settings.type !== this.chart.settings.type) {\n const newChart = MiPlots.createChart(this.chart.data, settings);\n\n if (this.node) {\n this.chart.unmount();\n this.chart = newChart;\n this.chart.mount(this.node);\n } else {\n this.chart = newChart;\n }\n } else {\n this.chart.updateSettingsAndData(DataFrame.from(data), settings);\n }\n }\n\n updateChartState(field: string, value: unknown) {\n this.chart.updateChartState(field, value);\n }\n\n export() {\n return this.chart.export();\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"MiPlots.js","names":[],"sources":["../src/MiPlots.ts"],"sourcesContent":["import type {AbstractChart, ChartInterface} from './AbstractChart';\nimport {ChartDendro} from './dendro';\nimport {ChartDiscrete} from './discrete';\nimport {ChartHeatmap} from './heatmap';\nimport {ChartHistogram} from './histogram';\nimport {ChartScatterplot} from './scatterplot';\nimport {ChartScatterplotUmap} from './scatterplot-umap';\nimport {ChartBubble} from './bubble';\nimport {ChartSelection} from './selection';\nimport type {SelectionEventHandlers} from './selection';\nimport {DataFrame} from './DataFrame';\nimport type {\n BubbleEventHandlers,\n ChartEventHandlers,\n DendroEventHandlers,\n DiscreteEventHandlers,\n HeatmapEventHandlers,\n HistogramEventHandlers,\n ScatterplotEventHandlers,\n Settings,\n} from './types';\nimport {exhaustive} from './utils';\nimport type {DataSet} from './DataFrame';\n\nexport class MiPlots implements ChartInterface {\n node?: HTMLElement;\n chart: AbstractChart;\n\n private static createChart(\n data: DataFrame,\n settings: Settings,\n eventHandlers?: ChartEventHandlers<unknown>\n ): AbstractChart {\n const {type} = settings;\n\n if (type === 'discrete') {\n return new ChartDiscrete(data, settings, eventHandlers as DiscreteEventHandlers);\n }\n\n if (type === 'dendro') {\n return new ChartDendro(data, settings, eventHandlers as DendroEventHandlers);\n }\n\n if (type === 'scatterplot') {\n return new ChartScatterplot(data, settings, eventHandlers as ScatterplotEventHandlers);\n }\n\n if (type === 'scatterplot-umap') {\n return new ChartScatterplotUmap(data, settings, eventHandlers as ScatterplotEventHandlers);\n }\n\n if (type === 'heatmap') {\n return new ChartHeatmap(data, settings, eventHandlers as HeatmapEventHandlers);\n }\n\n if (type === 'histogram') {\n return new ChartHistogram(data, settings, eventHandlers as HistogramEventHandlers);\n }\n\n if (type === 'bubble') {\n return new ChartBubble(data, settings, eventHandlers as BubbleEventHandlers);\n }\n\n if (type === 'selection') {\n return new ChartSelection(data, settings, eventHandlers as SelectionEventHandlers);\n }\n\n exhaustive(type, `Unknown chart type: ${type}`);\n }\n\n static newPlot(data: DataSet, settings: Settings, eventHandlers?: ChartEventHandlers<unknown>): MiPlots {\n const dataFrame = DataFrame.from(data);\n return new this(MiPlots.createChart(dataFrame, settings, eventHandlers));\n }\n\n constructor(chart: AbstractChart) {\n this.chart = chart;\n }\n\n get calculatedData() {\n return this.chart.calculatedData;\n }\n\n get hasError() {\n return this.chart.hasError;\n }\n\n get errorInfo() {\n return this.chart.errorInfo;\n }\n\n mount(node: HTMLElement) {\n this.node = node;\n this.chart.mount(node);\n }\n\n unmount() {\n delete this.node;\n this.chart.unmount();\n }\n\n updateSettingsAndData(data: DataSet, settings: Settings) {\n if (settings.type !== this.chart.settings.type) {\n const newChart = MiPlots.createChart(this.chart.data, settings);\n\n if (this.node) {\n this.chart.unmount();\n this.chart = newChart;\n this.chart.mount(this.node);\n } else {\n this.chart = newChart;\n }\n } else {\n this.chart.updateSettingsAndData(DataFrame.from(data), settings);\n }\n }\n\n updateChartState(field: string, value: unknown) {\n this.chart.updateChartState(field, value);\n }\n\n export() {\n return this.chart.export();\n }\n}\n"],"mappings":";;;;;;;;;;AAwBA,IAAa,IAAb,MAAa,EAAkC;CAC3C;CACA;CAEA,OAAe,YACX,GACA,GACA,GACa;EACb,IAAM,EAAC,YAAQ;AAEf,MAAI,MAAS,WACT,QAAO,IAAI,EAAc,GAAM,GAAU,EAAuC;AAGpF,MAAI,MAAS,SACT,QAAO,IAAI,EAAY,GAAM,GAAU,EAAqC;AAGhF,MAAI,MAAS,cACT,QAAO,IAAI,EAAiB,GAAM,GAAU,EAA0C;AAG1F,MAAI,MAAS,mBACT,QAAO,IAAI,EAAqB,GAAM,GAAU,EAA0C;AAG9F,MAAI,MAAS,UACT,QAAO,IAAI,EAAa,GAAM,GAAU,EAAsC;AAGlF,MAAI,MAAS,YACT,QAAO,IAAI,EAAe,GAAM,GAAU,EAAwC;AAGtF,MAAI,MAAS,SACT,QAAO,IAAI,EAAY,GAAM,GAAU,EAAqC;AAGhF,MAAI,MAAS,YACT,QAAO,IAAI,EAAe,GAAM,GAAU,EAAwC;AAGtF,IAAW,GAAM,uBAAuB,IAAO;;CAGnD,OAAO,QAAQ,GAAe,GAAoB,GAAsD;EACpG,IAAM,IAAY,EAAU,KAAK,EAAK;AACtC,SAAO,IAAI,KAAK,EAAQ,YAAY,GAAW,GAAU,EAAc,CAAC;;CAG5E,YAAY,GAAsB;AAC9B,OAAK,QAAQ;;CAGjB,IAAI,iBAAiB;AACjB,SAAO,KAAK,MAAM;;CAGtB,IAAI,WAAW;AACX,SAAO,KAAK,MAAM;;CAGtB,IAAI,YAAY;AACZ,SAAO,KAAK,MAAM;;CAGtB,MAAM,GAAmB;AAErB,EADA,KAAK,OAAO,GACZ,KAAK,MAAM,MAAM,EAAK;;CAG1B,UAAU;AAEN,EADA,OAAO,KAAK,MACZ,KAAK,MAAM,SAAS;;CAGxB,sBAAsB,GAAe,GAAoB;AACrD,MAAI,EAAS,SAAS,KAAK,MAAM,SAAS,MAAM;GAC5C,IAAM,IAAW,EAAQ,YAAY,KAAK,MAAM,MAAM,EAAS;AAE/D,GAAI,KAAK,QACL,KAAK,MAAM,SAAS,EACpB,KAAK,QAAQ,GACb,KAAK,MAAM,MAAM,KAAK,KAAK,IAE3B,KAAK,QAAQ;QAGjB,MAAK,MAAM,sBAAsB,EAAU,KAAK,EAAK,EAAE,EAAS;;CAIxE,iBAAiB,GAAe,GAAgB;AAC5C,OAAK,MAAM,iBAAiB,GAAO,EAAM;;CAG7C,SAAS;AACL,SAAO,KAAK,MAAM,QAAQ"}
|
|
@@ -14,8 +14,10 @@ export declare class BubbleSettingsImpl implements SettingsInterface {
|
|
|
14
14
|
readonly valueColumnColor: ColumnName;
|
|
15
15
|
readonly xColumn: ColumnName;
|
|
16
16
|
readonly xGroupBy: ColumnName[];
|
|
17
|
+
readonly xSortBy: ColumnName[];
|
|
17
18
|
readonly yColumn: ColumnName;
|
|
18
19
|
readonly yGroupBy: ColumnName[];
|
|
20
|
+
readonly ySortBy: ColumnName[];
|
|
19
21
|
readonly facetBy: ColumnName[];
|
|
20
22
|
readonly normalization: {
|
|
21
23
|
direction: NormalizationDirection;
|
|
@@ -29,6 +31,7 @@ export declare class BubbleSettingsImpl implements SettingsInterface {
|
|
|
29
31
|
method: AggregationMethod;
|
|
30
32
|
};
|
|
31
33
|
readonly NAValueAs: number | null;
|
|
34
|
+
readonly transform: 'log' | null;
|
|
32
35
|
readonly showEmptyRows: boolean;
|
|
33
36
|
readonly showEmptyColumns: boolean;
|
|
34
37
|
readonly keysOrder: Record<string, string[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BubbleSettingsImpl.d.ts","sourceRoot":"","sources":["../../src/bubble/BubbleSettingsImpl.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"BubbleSettingsImpl.d.ts","sourceRoot":"","sources":["../../src/bubble/BubbleSettingsImpl.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,12 +10,15 @@ var n = class {
|
|
|
10
10
|
valueColumnColor;
|
|
11
11
|
xColumn;
|
|
12
12
|
xGroupBy;
|
|
13
|
+
xSortBy;
|
|
13
14
|
yColumn;
|
|
14
15
|
yGroupBy;
|
|
16
|
+
ySortBy;
|
|
15
17
|
facetBy;
|
|
16
18
|
normalization;
|
|
17
19
|
aggregation;
|
|
18
20
|
NAValueAs;
|
|
21
|
+
transform;
|
|
19
22
|
showEmptyRows;
|
|
20
23
|
showEmptyColumns;
|
|
21
24
|
keysOrder;
|
|
@@ -28,7 +31,7 @@ var n = class {
|
|
|
28
31
|
titlePosition: "left",
|
|
29
32
|
order: n.facetSettings?.order ?? null,
|
|
30
33
|
...n.facetSettings
|
|
31
|
-
}, this.facetBy = n.facetBy ?? [], this.valueColumnSize = n.valueSize, this.valueColumnColor = n.valueColor, this.xColumn = n.xColumn, this.xGroupBy = n.xGroupBy ?? [], this.yColumn = n.yColumn, this.yGroupBy = n.yGroupBy ?? [], this.NAValueAs = n.NAValueAs ?? null, this.showEmptyRows = n.showEmptyRows ?? !1, this.showEmptyColumns = n.showEmptyColumns ?? !1, this.keysOrder = n.keysOrder ?? {}, this.normalization = n.normalization ?? null;
|
|
34
|
+
}, this.facetBy = n.facetBy ?? [], this.valueColumnSize = n.valueSize, this.valueColumnColor = n.valueColor, this.xColumn = n.xColumn, this.xGroupBy = n.xGroupBy ?? [], this.xSortBy = n.xSortBy ?? [], this.yColumn = n.yColumn, this.yGroupBy = n.yGroupBy ?? [], this.ySortBy = n.ySortBy ?? [], this.NAValueAs = n.NAValueAs ?? null, this.transform = n.transform ?? null, this.showEmptyRows = n.showEmptyRows ?? !1, this.showEmptyColumns = n.showEmptyColumns ?? !1, this.keysOrder = n.keysOrder ?? {}, this.normalization = n.normalization ?? null;
|
|
32
35
|
let r = n.size?.cellSize ?? null;
|
|
33
36
|
this.chartSettings = {
|
|
34
37
|
size: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BubbleSettingsImpl.js","names":[],"sources":["../../src/bubble/BubbleSettingsImpl.ts"],"sourcesContent":["import { BLACK, DEFAULT_HEIGHT, DEFAULT_HEIGHT_SMALL, DEFAULT_WIDTH, DEFAULT_WIDTH_SMALL } from '../constants';\nimport { BubblesSettingsSchema } from '../types';\nimport type {\n AggregationMethod,\n BubbleSettings,\n ColumnName,\n FrameType,\n LegendPosition,\n NormalizationDirection,\n NormalizationMethod,\n SettingsInterface,\n TitlePosition,\n} from '../types';\nimport lodash from 'lodash';\n\nexport class BubbleSettingsImpl implements SettingsInterface {\n readonly id: string;\n readonly type = 'bubble';\n readonly facetSettings: {\n order: string[] | null;\n sharedX: boolean;\n sharedY: boolean;\n nRows?: number;\n nCols?: number;\n titlePosition: 'left' | 'center' | 'right';\n };\n readonly valueColumnSize: ColumnName;\n readonly valueColumnColor: ColumnName;\n readonly xColumn: ColumnName;\n readonly xGroupBy: ColumnName[];\n readonly yColumn: ColumnName;\n readonly yGroupBy: ColumnName[];\n readonly facetBy: ColumnName[];\n readonly normalization: {\n direction: NormalizationDirection;\n method: NormalizationMethod;\n colorRange?: number[];\n sizeRange?: number[];\n } | null;\n readonly aggregation: {\n x: boolean;\n y: boolean;\n method: AggregationMethod;\n };\n readonly NAValueAs: number | null;\n readonly showEmptyRows: boolean;\n readonly showEmptyColumns: boolean;\n readonly keysOrder: Record<string, string[]>;\n readonly chartSettings: {\n readonly size: { width: number | null; height: number | null, cellSize: number | null };\n readonly title: { name: string; show: boolean; position: TitlePosition };\n readonly yAxis: {\n title: string;\n showTicks: boolean;\n showTitle: boolean;\n showAxisLabels: boolean;\n position: 'left' | 'right';\n axisLabelsAngle: 0 | 45 | 90;\n sorting: 'asc' | 'desc';\n };\n readonly xAxis: {\n title: string;\n showTicks: boolean;\n showTitle: boolean;\n showAxisLabels: boolean;\n position: 'bottom' | 'top';\n axisLabelsAngle: 0 | 45 | 90;\n sorting: 'asc' | 'desc';\n };\n readonly frame: { type: FrameType };\n readonly legend: { show: boolean; position: LegendPosition };\n readonly tooltips: { show: boolean; content?: ColumnName[] };\n };\n readonly aes: {\n minRadius: number;\n maxRadius: number;\n colorsList: string[];\n cellStrokeColor: string;\n emptyCellColor: string;\n };\n\n constructor(settings: BubbleSettings) {\n BubblesSettingsSchema.parse(settings);\n this.id = lodash.uniqueId('settings');\n this.facetSettings = { sharedX: true, sharedY: true, titlePosition: 'left', order: settings.facetSettings?.order ?? null, ...settings.facetSettings };\n this.facetBy = settings.facetBy ?? [];\n this.valueColumnSize = settings.valueSize;\n this.valueColumnColor = settings.valueColor;\n this.xColumn = settings.xColumn;\n this.xGroupBy = settings.xGroupBy ?? [];\n this.yColumn = settings.yColumn;\n this.yGroupBy = settings.yGroupBy ?? [];\n this.NAValueAs = settings.NAValueAs ?? null;\n this.showEmptyRows = settings.showEmptyRows ?? false;\n this.showEmptyColumns = settings.showEmptyColumns ?? false;\n this.keysOrder = settings.keysOrder ?? {};\n this.normalization = settings.normalization ?? null;\n\n const cellSize = settings.size?.cellSize ?? null;\n const width = cellSize ? null : settings?.size?.width ?? (this.facetBy.length ? DEFAULT_WIDTH_SMALL : DEFAULT_WIDTH);\n const height = cellSize ? null : settings?.size?.height ?? (this.facetBy.length ? DEFAULT_HEIGHT_SMALL : DEFAULT_HEIGHT);\n this.chartSettings = {\n size: { width, height, cellSize },\n title: {\n position: 'center',\n show: true,\n ...settings.title,\n name: settings.title?.name ?? 'Chart',\n },\n yAxis: {\n title: settings.yColumn.label ?? settings.yColumn.value,\n showTicks: true,\n showTitle: true,\n showAxisLabels: true,\n position: 'left',\n axisLabelsAngle: 90,\n sorting: 'asc',\n ...settings.yAxis,\n },\n xAxis: {\n title: settings.xColumn.label ?? settings.xColumn.value,\n showTicks: true,\n showTitle: true,\n showAxisLabels: true,\n position: 'bottom',\n axisLabelsAngle: 90,\n sorting: 'asc',\n ...settings.xAxis,\n },\n frame: { type: settings.frame?.type ?? 'full' },\n legend: {\n show: true,\n position: 'right',\n ...settings.legend,\n },\n tooltips: {\n show: true,\n ...settings.tooltips,\n },\n };\n\n this.aggregation = {\n x: false,\n y: false,\n method: 'min',\n ...settings.aggregation\n };\n\n this.aes = {\n minRadius: settings.aes?.minRadius ?? 3,\n maxRadius: settings.aes?.maxRadius ?? 20,\n colorsList: settings.aes?.colorsList ?? ['black', 'white', 'red'],\n cellStrokeColor: settings.aes?.cellStrokeColor ?? BLACK,\n emptyCellColor: settings.aes?.emptyCellColor ?? 'white',\n };\n }\n}\n"],"mappings":";;;;AAeA,IAAa,IAAb,MAA6D;CACzD;CACA,OAAgB;CAChB;CAQA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAMA;CAKA;CACA;CACA;CACA;CACA;CAyBA;CAQA,YAAY,GAA0B;
|
|
1
|
+
{"version":3,"file":"BubbleSettingsImpl.js","names":[],"sources":["../../src/bubble/BubbleSettingsImpl.ts"],"sourcesContent":["import { BLACK, DEFAULT_HEIGHT, DEFAULT_HEIGHT_SMALL, DEFAULT_WIDTH, DEFAULT_WIDTH_SMALL } from '../constants';\nimport { BubblesSettingsSchema } from '../types';\nimport type {\n AggregationMethod,\n BubbleSettings,\n ColumnName,\n FrameType,\n LegendPosition,\n NormalizationDirection,\n NormalizationMethod,\n SettingsInterface,\n TitlePosition,\n} from '../types';\nimport lodash from 'lodash';\n\nexport class BubbleSettingsImpl implements SettingsInterface {\n readonly id: string;\n readonly type = 'bubble';\n readonly facetSettings: {\n order: string[] | null;\n sharedX: boolean;\n sharedY: boolean;\n nRows?: number;\n nCols?: number;\n titlePosition: 'left' | 'center' | 'right';\n };\n readonly valueColumnSize: ColumnName;\n readonly valueColumnColor: ColumnName;\n readonly xColumn: ColumnName;\n readonly xGroupBy: ColumnName[];\n readonly xSortBy: ColumnName[];\n readonly yColumn: ColumnName;\n readonly yGroupBy: ColumnName[];\n readonly ySortBy: ColumnName[];\n readonly facetBy: ColumnName[];\n readonly normalization: {\n direction: NormalizationDirection;\n method: NormalizationMethod;\n colorRange?: number[];\n sizeRange?: number[];\n } | null;\n readonly aggregation: {\n x: boolean;\n y: boolean;\n method: AggregationMethod;\n };\n readonly NAValueAs: number | null;\n readonly transform: 'log' | null;\n readonly showEmptyRows: boolean;\n readonly showEmptyColumns: boolean;\n readonly keysOrder: Record<string, string[]>;\n readonly chartSettings: {\n readonly size: { width: number | null; height: number | null, cellSize: number | null };\n readonly title: { name: string; show: boolean; position: TitlePosition };\n readonly yAxis: {\n title: string;\n showTicks: boolean;\n showTitle: boolean;\n showAxisLabels: boolean;\n position: 'left' | 'right';\n axisLabelsAngle: 0 | 45 | 90;\n sorting: 'asc' | 'desc';\n };\n readonly xAxis: {\n title: string;\n showTicks: boolean;\n showTitle: boolean;\n showAxisLabels: boolean;\n position: 'bottom' | 'top';\n axisLabelsAngle: 0 | 45 | 90;\n sorting: 'asc' | 'desc';\n };\n readonly frame: { type: FrameType };\n readonly legend: { show: boolean; position: LegendPosition };\n readonly tooltips: { show: boolean; content?: ColumnName[] };\n };\n readonly aes: {\n minRadius: number;\n maxRadius: number;\n colorsList: string[];\n cellStrokeColor: string;\n emptyCellColor: string;\n };\n\n constructor(settings: BubbleSettings) {\n BubblesSettingsSchema.parse(settings);\n this.id = lodash.uniqueId('settings');\n this.facetSettings = { sharedX: true, sharedY: true, titlePosition: 'left', order: settings.facetSettings?.order ?? null, ...settings.facetSettings };\n this.facetBy = settings.facetBy ?? [];\n this.valueColumnSize = settings.valueSize;\n this.valueColumnColor = settings.valueColor;\n this.xColumn = settings.xColumn;\n this.xGroupBy = settings.xGroupBy ?? [];\n this.xSortBy = settings.xSortBy ?? [];\n this.yColumn = settings.yColumn;\n this.yGroupBy = settings.yGroupBy ?? [];\n this.ySortBy = settings.ySortBy ?? [];\n this.NAValueAs = settings.NAValueAs ?? null;\n this.transform = settings.transform ?? null;\n this.showEmptyRows = settings.showEmptyRows ?? false;\n this.showEmptyColumns = settings.showEmptyColumns ?? false;\n this.keysOrder = settings.keysOrder ?? {};\n this.normalization = settings.normalization ?? null;\n\n const cellSize = settings.size?.cellSize ?? null;\n const width = cellSize ? null : settings?.size?.width ?? (this.facetBy.length ? DEFAULT_WIDTH_SMALL : DEFAULT_WIDTH);\n const height = cellSize ? null : settings?.size?.height ?? (this.facetBy.length ? DEFAULT_HEIGHT_SMALL : DEFAULT_HEIGHT);\n this.chartSettings = {\n size: { width, height, cellSize },\n title: {\n position: 'center',\n show: true,\n ...settings.title,\n name: settings.title?.name ?? 'Chart',\n },\n yAxis: {\n title: settings.yColumn.label ?? settings.yColumn.value,\n showTicks: true,\n showTitle: true,\n showAxisLabels: true,\n position: 'left',\n axisLabelsAngle: 90,\n sorting: 'asc',\n ...settings.yAxis,\n },\n xAxis: {\n title: settings.xColumn.label ?? settings.xColumn.value,\n showTicks: true,\n showTitle: true,\n showAxisLabels: true,\n position: 'bottom',\n axisLabelsAngle: 90,\n sorting: 'asc',\n ...settings.xAxis,\n },\n frame: { type: settings.frame?.type ?? 'full' },\n legend: {\n show: true,\n position: 'right',\n ...settings.legend,\n },\n tooltips: {\n show: true,\n ...settings.tooltips,\n },\n };\n\n this.aggregation = {\n x: false,\n y: false,\n method: 'min',\n ...settings.aggregation\n };\n\n this.aes = {\n minRadius: settings.aes?.minRadius ?? 3,\n maxRadius: settings.aes?.maxRadius ?? 20,\n colorsList: settings.aes?.colorsList ?? ['black', 'white', 'red'],\n cellStrokeColor: settings.aes?.cellStrokeColor ?? BLACK,\n emptyCellColor: settings.aes?.emptyCellColor ?? 'white',\n };\n }\n}\n"],"mappings":";;;;AAeA,IAAa,IAAb,MAA6D;CACzD;CACA,OAAgB;CAChB;CAQA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAMA;CAKA;CACA;CACA;CACA;CACA;CACA;CAyBA;CAQA,YAAY,GAA0B;AAkBlC,EAjBA,EAAsB,MAAM,EAAS,EACrC,KAAK,KAAK,EAAO,SAAS,WAAW,EACrC,KAAK,gBAAgB;GAAE,SAAS;GAAM,SAAS;GAAM,eAAe;GAAQ,OAAO,EAAS,eAAe,SAAS;GAAM,GAAG,EAAS;GAAe,EACrJ,KAAK,UAAU,EAAS,WAAW,EAAE,EACrC,KAAK,kBAAkB,EAAS,WAChC,KAAK,mBAAmB,EAAS,YACjC,KAAK,UAAU,EAAS,SACxB,KAAK,WAAW,EAAS,YAAY,EAAE,EACvC,KAAK,UAAU,EAAS,WAAW,EAAE,EACrC,KAAK,UAAU,EAAS,SACxB,KAAK,WAAW,EAAS,YAAY,EAAE,EACvC,KAAK,UAAU,EAAS,WAAW,EAAE,EACrC,KAAK,YAAY,EAAS,aAAa,MACvC,KAAK,YAAY,EAAS,aAAa,MACvC,KAAK,gBAAgB,EAAS,iBAAiB,IAC/C,KAAK,mBAAmB,EAAS,oBAAoB,IACrD,KAAK,YAAY,EAAS,aAAa,EAAE,EACzC,KAAK,gBAAgB,EAAS,iBAAiB;EAE/C,IAAM,IAAW,EAAS,MAAM,YAAY;AAkD5C,EA/CA,KAAK,gBAAgB;GACjB,MAAM;IAAE,OAHE,IAAW,OAAO,GAAU,MAAM,UAAU,KAAK,QAAQ,SAAA,MAAA;IAGpD,QAFJ,IAAW,OAAO,GAAU,MAAM,WAAW,KAAK,QAAQ,SAAA,MAAA;IAE9C;IAAU;GACjC,OAAO;IACH,UAAU;IACV,MAAM;IACN,GAAG,EAAS;IACZ,MAAM,EAAS,OAAO,QAAQ;IACjC;GACD,OAAO;IACH,OAAO,EAAS,QAAQ,SAAS,EAAS,QAAQ;IAClD,WAAW;IACX,WAAW;IACX,gBAAgB;IAChB,UAAU;IACV,iBAAiB;IACjB,SAAS;IACT,GAAG,EAAS;IACf;GACD,OAAO;IACH,OAAO,EAAS,QAAQ,SAAS,EAAS,QAAQ;IAClD,WAAW;IACX,WAAW;IACX,gBAAgB;IAChB,UAAU;IACV,iBAAiB;IACjB,SAAS;IACT,GAAG,EAAS;IACf;GACD,OAAO,EAAE,MAAM,EAAS,OAAO,QAAQ,QAAQ;GAC/C,QAAQ;IACJ,MAAM;IACN,UAAU;IACV,GAAG,EAAS;IACf;GACD,UAAU;IACN,MAAM;IACN,GAAG,EAAS;IACf;GACJ,EAED,KAAK,cAAc;GACf,GAAG;GACH,GAAG;GACH,QAAQ;GACR,GAAG,EAAS;GACf,EAED,KAAK,MAAM;GACP,WAAW,EAAS,KAAK,aAAa;GACtC,WAAW,EAAS,KAAK,aAAa;GACtC,YAAY,EAAS,KAAK,cAAc;IAAC;IAAS;IAAS;IAAM;GACjE,iBAAiB,EAAS,KAAK,mBAAA;GAC/B,gBAAgB,EAAS,KAAK,kBAAkB;GACnD"}
|
|
@@ -34,19 +34,9 @@ declare class ChartRenderer {
|
|
|
34
34
|
updateCaptionsSize(groupedCells: GroupedCellsBubble, xAxis: BubbleSettingsImpl['chartSettings']['xAxis'], yAxis: BubbleSettingsImpl['chartSettings']['yAxis']): void;
|
|
35
35
|
updateChartDimensions(facetKeys: string[], facetSettings: BubbleSettingsImpl['facetSettings'], xAxis: BubbleSettingsImpl['chartSettings']['xAxis'], yAxis: BubbleSettingsImpl['chartSettings']['yAxis']): void;
|
|
36
36
|
updateChartsSizes(groupedCellsData: GroupedCellsBubble, size: BubbleSettingsImpl['chartSettings']['size']): void;
|
|
37
|
-
updateScales(groupedCells: GroupedCellsBubble, size: BubbleSettingsImpl['chartSettings']['size']
|
|
38
|
-
x: boolean;
|
|
39
|
-
y: boolean;
|
|
40
|
-
xGroup: boolean;
|
|
41
|
-
yGroup: boolean;
|
|
42
|
-
}): void;
|
|
37
|
+
updateScales(groupedCells: GroupedCellsBubble, size: BubbleSettingsImpl['chartSettings']['size']): void;
|
|
43
38
|
updateAesScale(aes: BubbleSettingsImpl['aes'], valueExtentSize: [number, number], valueExtentColor: [number, number], normalization: BubbleSettingsImpl['normalization']): void;
|
|
44
|
-
render(dataFrame: DataFrame, settingsId: string, chartSettings: BubbleSettingsImpl['chartSettings'], facetSettings: BubbleSettingsImpl['facetSettings'], groupedCellsData: GroupedCellsBubble, valueColumnColor: ColumnName, valueColumnSize: ColumnName, normalization: BubbleSettingsImpl['normalization'], aes: BubbleSettingsImpl['aes'], getCellTooltip: (cell: CellBubble) => string[], onTooltipHintSwitch: (v: boolean) => void
|
|
45
|
-
x: boolean;
|
|
46
|
-
y: boolean;
|
|
47
|
-
xGroup: boolean;
|
|
48
|
-
yGroup: boolean;
|
|
49
|
-
}): void;
|
|
39
|
+
render(dataFrame: DataFrame, settingsId: string, chartSettings: BubbleSettingsImpl['chartSettings'], facetSettings: BubbleSettingsImpl['facetSettings'], groupedCellsData: GroupedCellsBubble, valueColumnColor: ColumnName, valueColumnSize: ColumnName, normalization: BubbleSettingsImpl['normalization'], aes: BubbleSettingsImpl['aes'], getCellTooltip: (cell: CellBubble) => string[], onTooltipHintSwitch: (v: boolean) => void): void;
|
|
50
40
|
renderError(message: string): void;
|
|
51
41
|
}
|
|
52
42
|
export default ChartRenderer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartRenderer.d.ts","sourceRoot":"","sources":["../../src/bubble/ChartRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,iBAAiB,CAAC;AAG9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,UAAU,CAAC;AAMtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,KAAK,EACR,aAAa,EACb,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAC5C,WAAW,EACX,OAAO,EACV,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AA+C5E,cAAM,aAAa;IACf,SAAS,EAAE,IAAI,GAAG,IAAI,CAAQ;IAC9B,UAAU,EAAE,WAAW,GAAG,IAAI,CAAQ;IACtC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAQ;IACpC,SAAS,EAAE,YAAY,CAAW;IAClC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAM;IAC3D,UAAU,EAAE,UAAU,CAOpB;IACF,OAAO,EAAE,OAAO,CAKd;IACF,aAAa,EAAE,aAAa,CAK1B;IACF,WAAW,EAAE,WAAW,CAGtB;IACF,YAAY,SAAK;IACjB,SAAS,SAAK;IACd,MAAM,EAAE,WAAW,CAGjB;IACF,IAAI,EAAE;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC,CAAkB;IAC9C,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAA0E;IACjH,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAA6C;IAClF,MAAM,EAAE,UAAU,CAIhB;IAEF,KAAK;IAaL,IAAI,CAAC,IAAI,EAAE,WAAW;IAStB,aAAa,CAAC,KAAK,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC;IAYjE,gBAAgB,CACZ,MAAM,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,EACrD,gBAAgB,EAAE,UAAU,EAC5B,eAAe,EAAE,UAAU,EAC3B,SAAS,EAAE,MAAM,EAAE;IA2DvB,kBAAkB,CACd,YAAY,EAAE,kBAAkB,EAChC,KAAK,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EACnD,KAAK,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC;IAsCvD,qBAAqB,CACjB,SAAS,EAAE,MAAM,EAAE,EACnB,aAAa,EAAE,kBAAkB,CAAC,eAAe,CAAC,EAClD,KAAK,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EACnD,KAAK,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC;IA6EvD,iBAAiB,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,IAAI,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ChartRenderer.d.ts","sourceRoot":"","sources":["../../src/bubble/ChartRenderer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -202,33 +202,33 @@ var b = class {
|
|
|
202
202
|
let { width: n, height: r, cellSize: i } = t;
|
|
203
203
|
i && (this.chartSizes.chartWidth = e.meta.xKeys.length * i, this.chartSizes.chartHeight = e.meta.yKeys.length * i), n && r && (this.chartSizes.chartWidth = n, this.chartSizes.chartHeight = r);
|
|
204
204
|
}
|
|
205
|
-
updateScales(e, t
|
|
206
|
-
let { width:
|
|
207
|
-
|
|
208
|
-
let
|
|
209
|
-
this.scales.x = p().domain(
|
|
205
|
+
updateScales(e, t) {
|
|
206
|
+
let { width: n, height: r, cellSize: i } = t, { meta: a } = e, o = a.xGroupKeys, s = a.yGroupKeys, { xKeysByGroups: c, yKeysByGroups: l } = a, u = o.reduce((e, t) => (e = e.concat(c[t]), e), []), d = s.reduce((e, t) => (e = e.concat(l[t]), e), []);
|
|
207
|
+
i ? (this.step.x = i, this.step.y = i) : n && r && (this.step.x = n / u.length, this.step.y = r / d.length);
|
|
208
|
+
let f = Array(u.length).fill(null).map((e, t) => t * this.step.x), m = Array(d.length).fill(null).map((e, t) => t * this.step.y);
|
|
209
|
+
this.scales.x = p().domain(u).range(f), this.scales.y = p().domain(d).range(m);
|
|
210
210
|
}
|
|
211
211
|
updateAesScale(e, t, n, r) {
|
|
212
212
|
this.colorScale = f().domain(y(r, e.colorsList.length, n)).range(e.colorsList), this.sizeScale = m(t, [e.minRadius, e.maxRadius]);
|
|
213
213
|
}
|
|
214
|
-
render(e, t, n, r, a, o, s, l, u, d, f
|
|
215
|
-
let { meta:
|
|
216
|
-
this.updateChartsSizes(a,
|
|
217
|
-
let
|
|
214
|
+
render(e, t, n, r, a, o, s, l, u, d, f) {
|
|
215
|
+
let { meta: p, facets: m, meta: { facetKeys: h } } = a, { valueExtent: g } = p, { xAxis: v, yAxis: y, title: b, size: x } = n;
|
|
216
|
+
this.updateChartsSizes(a, x), this.updateAesScale(u, g.sizeValue, g.colorValue, l), this.updateScales(a, x), this.updateCaptionsSize(a, v, y), this.updateChartDimensions(h, r, v, y), this.updateLegendSize(n.legend, o, s, h), this.updateMargins(b);
|
|
217
|
+
let S = /* @__PURE__ */ _(i, {
|
|
218
218
|
dataFrame: e,
|
|
219
219
|
children: /* @__PURE__ */ _(c, {
|
|
220
220
|
aes: u,
|
|
221
221
|
captionsSizes: this.captionsSizes,
|
|
222
|
-
cellsMeta:
|
|
222
|
+
cellsMeta: p,
|
|
223
223
|
columnsCount: this.columnsCount,
|
|
224
224
|
chartsDimensions: this.chartsDimensions,
|
|
225
225
|
chartSettings: n,
|
|
226
226
|
chartSizes: this.chartSizes,
|
|
227
227
|
sizeScale: this.sizeScale,
|
|
228
228
|
colorScale: this.colorScale,
|
|
229
|
-
facetKeys:
|
|
229
|
+
facetKeys: h,
|
|
230
230
|
facetSettings: r,
|
|
231
|
-
groupedCells:
|
|
231
|
+
groupedCells: m,
|
|
232
232
|
labelAngles: this.labelAngles,
|
|
233
233
|
legend: this.legend,
|
|
234
234
|
margins: this.margins,
|
|
@@ -239,7 +239,7 @@ var b = class {
|
|
|
239
239
|
onTooltipHintSwitch: f
|
|
240
240
|
})
|
|
241
241
|
});
|
|
242
|
-
this.component =
|
|
242
|
+
this.component = S, this.reactRoot?.render(S);
|
|
243
243
|
}
|
|
244
244
|
renderError(t) {
|
|
245
245
|
this.reactRoot?.render(/* @__PURE__ */ _(e, { message: t }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartRenderer.js","names":[],"sources":["../../src/bubble/ChartRenderer.tsx"],"sourcesContent":["import type { ScaleLinear, ScalePower } from 'd3-scale';\nimport { scaleLinear, scaleOrdinal, scaleSqrt } from 'd3-scale';\nimport type { ReactElement } from 'react';\nimport type { Root } from 'react-dom/client';\nimport { createRoot } from 'react-dom/client';\nimport { Error } from '../common/Error';\nimport type { LegendData, LegendItem } from '../common/types';\nimport { DataFrameProvider } from '../common/useDataFrame';\nimport { DEFAULT_HEIGHT, DEFAULT_WIDTH, MAX_LEGEND_GRADIENT_HEIGHT, MIN_LEGEND_GRADIENT_HEIGHT, TITLE_LINE_HEIGHT, TITLE_MARGIN } from '../constants';\nimport type { DataFrame } from '../DataFrame';\nimport type { ColumnName, DataValue } from '../types';\nimport { arrangeLegendParts } from '../utils/arrangeLegendParts';\nimport { getSizeLegendItem } from '../utils/getSizeLegendItem';\nimport { getChartEdgeSides } from '../utils/getChartEdgeSides';\nimport { getContinuousLegendTicks } from '../utils/getContinuousLegendTicks';\nimport { TextMeasurer } from '../utils/TextMeasurer/TextMeasurer';\nimport type { BubbleSettingsImpl } from './BubbleSettingsImpl';\nimport { ChartsGroup } from './components/ChartsGroup';\nimport type {\n CaptionsSizes,\n ChartDimensionsData, ChartScales, ChartSizes,\n LabelAngles,\n Margins\n} from './components/types';\nimport { CHART_SIDE_ELEMENTS, LEGEND_OFFSET, MIN_MARGIN, MIN_PADDING, TITLE_LINE } from './constants';\nimport type { CellBubble, GroupedCellsBubble } from './getGroupedCellsData';\nimport { calculateChartSideElementSizes, calculateSideElementsBBoxes } from './utils';\nimport { calculateCaptionTails } from './utils/calculateCaptionTails';\n\nconst getSteps = (count: number, valueExtent: number[]) => {\n const min = Math.min(...valueExtent);\n const max = Math.max(...valueExtent);\n if (min === max) {\n const steps = count % 2 === 0 ? [] : [min];\n for (let i = 1; i < count / 2 + 1; i++) {\n steps.push(min + i);\n steps.unshift(min - i);\n }\n return steps;\n }\n if (count < 2) {\n return [min, max];\n }\n const step = (max - min) / (count - 1);\n const steps = [];\n for (let i = 0; i < count - 1; i++) {\n steps.push(min + step * i);\n }\n steps.push(max);\n return steps;\n};\n\nfunction getContinuousColorRange(\n normalization: BubbleSettingsImpl['normalization'],\n colorsCount: number,\n valueExtent: number[]\n) {\n let extent = valueExtent;\n if (normalization) {\n if (normalization.colorRange) {\n extent = normalization.colorRange;\n }\n if (normalization.method === 'standardScaling') {\n extent = [-2, 2];\n }\n if (normalization.method === 'meanNormalization') {\n extent = [-0.75, 0.75];\n }\n }\n return getSteps(colorsCount, extent);\n}\n\nclass ChartRenderer {\n reactRoot: Root | null = null;\n parentNode: HTMLElement | null = null;\n rootNode: HTMLElement | null = null;\n component: ReactElement = (<></>);\n chartsDimensions: Record<string, ChartDimensionsData> = {};\n chartSizes: ChartSizes = {\n chartWidth: DEFAULT_WIDTH, // width of single chart\n chartHeight: DEFAULT_HEIGHT, // height of single chart\n chartsWidth: DEFAULT_WIDTH, // width of all charts in charts row\n chartsHeight: DEFAULT_HEIGHT, // width of all charts in charts column, without axes\n totalWidth: DEFAULT_WIDTH, // width of all charts in charts row, plus left axis, plus legend\n totalHeight: DEFAULT_HEIGHT, // width of all charts in charts height, plus bottom axis, plus top title\n };\n margins: Margins = {\n top: MIN_MARGIN,\n bottom: MIN_MARGIN,\n left: MIN_MARGIN,\n right: MIN_MARGIN,\n };\n captionsSizes: CaptionsSizes = {\n xAxisCaptions: 100,\n yAxisCaptions: 100,\n xCaptionTail: 0,\n yCaptionTail: 0,\n };\n labelAngles: LabelAngles = {\n xAxisLabels: 0,\n yAxisLabels: 0,\n };\n columnsCount = 1;\n rowsCount = 1;\n scales: ChartScales = {\n x: scaleOrdinal<string, number>().domain(['null']).range([1]),\n y: scaleOrdinal<string, number>().domain(['null']).range([1]),\n };\n step: {x: number; y: number} = {x: 10, y: 10};\n colorScale: ScaleLinear<string, string> = scaleLinear<string, string>().domain([0, 1]).range(['white', 'black']);\n sizeScale: ScalePower<number, number> = scaleSqrt().domain([0, 1]).range([3, 20]);\n legend: LegendData = {\n width: 0,\n height: 0,\n items: [],\n };\n\n clear() {\n if (this.parentNode && this.rootNode) {\n this.parentNode?.removeChild(this.rootNode);\n this.parentNode = null;\n this.rootNode = null;\n }\n // timeout to avoid trying to unmount during rendering\n setTimeout(() => {\n this.reactRoot?.unmount();\n this.reactRoot = null;\n });\n }\n\n init(node: HTMLElement) {\n if (this.parentNode === null) {\n this.parentNode = node;\n this.rootNode = document.createElement('div');\n this.parentNode.appendChild(this.rootNode);\n this.reactRoot = createRoot(this.rootNode);\n }\n }\n\n updateMargins(title: BubbleSettingsImpl['chartSettings']['title']) {\n this.margins = {\n top: title.show ? TITLE_LINE_HEIGHT + TITLE_MARGIN * 2 : MIN_MARGIN,\n bottom: MIN_MARGIN,\n left: MIN_MARGIN,\n right: this.legend.width,\n };\n this.chartSizes.totalWidth = this.margins.left + this.chartSizes.chartsWidth + this.margins.right;\n this.chartSizes.totalHeight =\n this.margins.top + Math.max(this.chartSizes.chartsHeight, this.legend.height) + this.margins.bottom;\n }\n\n updateLegendSize(\n legend: BubbleSettingsImpl['chartSettings']['legend'],\n columnValueColor: ColumnName,\n columnValueSize: ColumnName,\n facetKeys: string[]\n ) {\n if (!legend.show) {\n this.legend = {width: 0, height: 0, items: []};\n return;\n }\n\n const legendItems: LegendItem[] = [];\n const continuousHeight = Math.min(\n Math.max(this.chartSizes.chartHeight, MIN_LEGEND_GRADIENT_HEIGHT),\n MAX_LEGEND_GRADIENT_HEIGHT\n );\n const legendHeight = Math.max(this.chartSizes.chartHeight, continuousHeight);\n const emptySizes = {width:0, height:0, left:0, top: 0};\n\n const colorDomain = this.colorScale.domain();\n const colorValues = getContinuousLegendTicks(this.colorScale, [\n colorDomain[0],\n colorDomain[colorDomain.length - 1],\n ]);\n const colorTitle = columnValueColor.label ?? columnValueColor.value;\n const tickPositionScale = scaleLinear([colorValues[0], colorValues[colorValues.length - 1]], [continuousHeight, 0]); //TODO: update during adding log scale for heatmap\n \n legendItems.push({\n id: 'colorValue',\n type: 'continuous',\n scale: this.colorScale,\n tickPositionScale,\n values: colorValues,\n title: colorTitle,\n ...emptySizes\n });\n\n const sizeLegendItem = getSizeLegendItem({\n columnName: columnValueSize,\n domain: this.sizeScale.domain(),\n range: this.sizeScale.range(),\n });\n legendItems.push({...sizeLegendItem, id: 'sizeValue'});\n\n if (!legendItems.length) {\n this.legend = {width: 0, height: 0, items: []};\n return;\n }\n\n const items = arrangeLegendParts(legendItems, legendHeight, continuousHeight);\n\n const maxRightEdge = items.reduce((max, item) => Math.max(max, item.left + item.width), 0);\n const legendWidth = maxRightEdge + 2 * LEGEND_OFFSET;\n\n const leftTopChartPadding = this.chartsDimensions[facetKeys[0]].padding; // additional offset of legend for alignment with chart\n\n this.legend = {\n width: legendWidth,\n height: legendHeight + leftTopChartPadding.top,\n items: items,\n };\n }\n\n updateCaptionsSize(\n groupedCells: GroupedCellsBubble,\n xAxis: BubbleSettingsImpl['chartSettings']['xAxis'],\n yAxis: BubbleSettingsImpl['chartSettings']['yAxis']\n ) {\n const textMeasurer = new TextMeasurer('bold 14px Arial');\n const {xKeys, yKeys, xLabels, yLabels} = groupedCells.meta;\n this.labelAngles = {\n xAxisLabels: xAxis.axisLabelsAngle,\n yAxisLabels: yAxis.axisLabelsAngle,\n };\n let maxXLabelSize = 0;\n let maxYLabelSize = 0;\n for (const xKey of xKeys) {\n const l = textMeasurer.getTextWidth(xLabels[xKey]);\n if (l > maxXLabelSize) {\n maxXLabelSize = l;\n }\n }\n for (const yKey of yKeys) {\n const l = textMeasurer.getTextWidth(yLabels[yKey]);\n if (l > maxYLabelSize) {\n maxYLabelSize = l;\n }\n }\n const {xCaptionTail, yCaptionTail} = calculateCaptionTails(\n this.labelAngles,\n this.step,\n groupedCells,\n textMeasurer\n );\n const xLabelAngle = (this.labelAngles.xAxisLabels / 180) * Math.PI;\n const yLabelAngle = (this.labelAngles.yAxisLabels / 180) * Math.PI;\n this.captionsSizes = {\n xCaptionTail,\n yCaptionTail,\n xAxisCaptions: maxXLabelSize * Math.sin(xLabelAngle) || TITLE_LINE,\n yAxisCaptions: maxYLabelSize * Math.sin(yLabelAngle) || TITLE_LINE,\n };\n }\n\n updateChartDimensions(\n facetKeys: string[],\n facetSettings: BubbleSettingsImpl['facetSettings'],\n xAxis: BubbleSettingsImpl['chartSettings']['xAxis'],\n yAxis: BubbleSettingsImpl['chartSettings']['yAxis']\n ) {\n const facetCount = facetKeys.length;\n const maxNRows = Math.min(facetSettings.nRows ?? facetCount, facetCount);\n const maxNCols = Math.min(facetSettings.nCols ?? facetCount, facetCount);\n // Use columns/rows count from settings if some of them defined, else make 1 column\n this.columnsCount = facetSettings.nRows ? Math.ceil(facetCount / maxNRows) : maxNCols;\n this.rowsCount = Math.ceil(facetCount / this.columnsCount);\n this.chartsDimensions = {};\n\n let currentLeft = 0;\n let currentTop = 0;\n facetKeys.forEach((key, index) => {\n const currentColumn = (index % this.columnsCount) + 1;\n const chartSides = getChartEdgeSides(index, facetKeys.length, this.columnsCount, this.rowsCount);\n const width = this.chartSizes.chartWidth;\n const height = this.chartSizes.chartHeight;\n const sideElementSizes = calculateChartSideElementSizes(\n xAxis,\n yAxis,\n this.captionsSizes,\n chartSides,\n facetKeys,\n this.step.x,\n this.step.y\n );\n\n function getPadding(side: 'left' | 'right' | 'top' | 'bottom') {\n return Math.max(\n CHART_SIDE_ELEMENTS[side].reduce((res, el) => res + sideElementSizes[side][el], 0),\n MIN_PADDING\n );\n }\n\n const padding = {\n left: getPadding('left'),\n right: getPadding('right'),\n top: getPadding('top'),\n bottom: getPadding('bottom'),\n };\n if (padding.left < this.captionsSizes.xCaptionTail) {\n padding.left = this.captionsSizes.xCaptionTail;\n }\n if (padding.bottom < this.captionsSizes.yCaptionTail) {\n padding.bottom = this.captionsSizes.yCaptionTail;\n }\n const sideElementBBoxes = calculateSideElementsBBoxes(sideElementSizes, width, height);\n const outerWidth = width + padding.left + padding.right;\n const outerHeight = height + padding.top + padding.bottom;\n this.chartsDimensions[key] = {\n left: currentLeft,\n top: currentTop,\n inner: {width, height},\n outer: {width: outerWidth, height: outerHeight},\n padding,\n sideElementBBoxes,\n chartEdgeSides: chartSides,\n };\n currentLeft += outerWidth;\n if (currentColumn === this.columnsCount) {\n currentLeft = 0;\n currentTop += outerHeight;\n }\n });\n\n // sum of widths of first row\n const chartsWidth = facetKeys\n .slice(0, this.columnsCount)\n .reduce((sum, key) => sum + this.chartsDimensions[key].outer.width, 0);\n // sum of heights of first column\n const chartsHeight = facetKeys\n .filter((_key, index) => index % this.columnsCount === 0)\n .reduce((sum, key) => sum + this.chartsDimensions[key].outer.height, 0);\n this.chartSizes.chartsWidth = chartsWidth;\n this.chartSizes.chartsHeight = chartsHeight;\n }\n\n updateChartsSizes(groupedCellsData: GroupedCellsBubble, size: BubbleSettingsImpl['chartSettings']['size']) {\n const {width, height, cellSize} = size;\n if (cellSize) {\n this.chartSizes.chartWidth = groupedCellsData.meta.xKeys.length * cellSize;\n this.chartSizes.chartHeight = groupedCellsData.meta.yKeys.length * cellSize;\n }\n if (width && height) {\n this.chartSizes.chartWidth = width;\n this.chartSizes.chartHeight = height;\n }\n }\n\n // update scales for cell positions, x and y for each facet\n updateScales(\n groupedCells: GroupedCellsBubble,\n size: BubbleSettingsImpl['chartSettings']['size'],\n xAxis: BubbleSettingsImpl['chartSettings']['xAxis'],\n yAxis: BubbleSettingsImpl['chartSettings']['yAxis'],\n customOrder: {x: boolean, y: boolean, xGroup: boolean, yGroup: boolean},\n ) {\n const {width, height, cellSize} = size;\n const {meta} = groupedCells;\n const sortX = (arr: string[], labels: Record<string, string> = {}) => {\n return [...arr].sort((a, b) => xAxis.sorting === 'asc'\n ? (labels[a] ?? a).localeCompare((labels[b] ?? b), 'en', {numeric: true})\n : (labels[b] ?? b).localeCompare((labels[a] ?? a), 'en', {numeric: true})\n );\n };\n const sortY = (arr: string[], labels: Record<string, string> = {}) => {\n return [...arr].sort((a, b) => yAxis.sorting === 'asc'\n ? (labels[a] ?? a).localeCompare((labels[b] ?? b), 'en', {numeric: true})\n : (labels[b] ?? b).localeCompare((labels[a] ?? a), 'en', {numeric: true})\n );\n };\n const xGroupKeys = customOrder.xGroup ? meta.xGroupKeys : sortX(meta.xGroupKeys);\n const yGroupKeys = customOrder.yGroup ? meta.yGroupKeys : sortY(meta.yGroupKeys);\n const { xKeysByGroups, yKeysByGroups } = meta;\n\n const xKeys = xGroupKeys.reduce((res: string[], xGroupKey: string) => {\n res = res.concat(sortX(xKeysByGroups[xGroupKey], meta.xLabels));\n return res;\n }, []);\n const yKeys = yGroupKeys.reduce((res: string[], yGroupKey: string) => {\n res = res.concat(sortY(yKeysByGroups[yGroupKey], meta.yLabels));\n return res;\n }, []);\n if (cellSize) {\n this.step.x = cellSize;\n this.step.y = cellSize;\n } else if (width && height) {\n this.step.x = width / xKeys.length;\n this.step.y = height / yKeys.length;\n }\n const xPositions: number[] = new Array(xKeys.length).fill(null).map((_v, idx) => idx * this.step.x);\n const yPositions: number[] = new Array(yKeys.length).fill(null).map((_v, idx) => idx * this.step.y);\n this.scales.x = scaleOrdinal<string, number>().domain(xKeys).range(xPositions);\n this.scales.y = scaleOrdinal<string, number>().domain(yKeys).range(yPositions);\n }\n\n updateAesScale(\n aes: BubbleSettingsImpl['aes'],\n valueExtentSize: [number, number],\n valueExtentColor: [number, number],\n normalization: BubbleSettingsImpl['normalization']\n ) {\n this.colorScale = scaleLinear<string, string>()\n .domain(getContinuousColorRange(normalization, aes.colorsList.length, valueExtentColor))\n .range(aes.colorsList);\n this.sizeScale = scaleSqrt(valueExtentSize, [aes.minRadius, aes.maxRadius]);\n }\n\n render(\n dataFrame: DataFrame,\n settingsId: string,\n chartSettings: BubbleSettingsImpl['chartSettings'],\n facetSettings: BubbleSettingsImpl['facetSettings'],\n groupedCellsData: GroupedCellsBubble,\n valueColumnColor: ColumnName,\n valueColumnSize: ColumnName,\n normalization: BubbleSettingsImpl['normalization'],\n aes: BubbleSettingsImpl['aes'],\n getCellTooltip: (cell: CellBubble) => string[],\n onTooltipHintSwitch: (v:boolean) => void,\n customOrder: {x: boolean, y: boolean, xGroup: boolean, yGroup: boolean},\n ) {\n const {meta, facets, meta: { facetKeys }} = groupedCellsData;\n const {valueExtent} = meta;\n const {xAxis, yAxis, title, size} = chartSettings;\n this.updateChartsSizes(groupedCellsData, size);\n this.updateAesScale(aes, valueExtent.sizeValue, valueExtent.colorValue, normalization);\n this.updateScales(groupedCellsData, size, chartSettings.xAxis, chartSettings.yAxis, customOrder);\n // caption sizes are needed for chart paddings in chart dimensions\n this.updateCaptionsSize(groupedCellsData, xAxis, yAxis);\n this.updateChartDimensions(facetKeys, facetSettings, xAxis, yAxis);\n this.updateLegendSize(chartSettings.legend, valueColumnColor, valueColumnSize, facetKeys);\n this.updateMargins(title);\n const component = (\n <DataFrameProvider dataFrame={dataFrame}>\n <ChartsGroup\n aes={aes}\n captionsSizes={this.captionsSizes}\n cellsMeta={meta}\n columnsCount={this.columnsCount}\n chartsDimensions={this.chartsDimensions}\n chartSettings={chartSettings}\n chartSizes={this.chartSizes}\n sizeScale={this.sizeScale as (v: DataValue) => number}\n colorScale={this.colorScale as (v: DataValue) => string}\n facetKeys={facetKeys}\n facetSettings={facetSettings}\n groupedCells={facets}\n labelAngles={this.labelAngles}\n legend={this.legend}\n margins={this.margins}\n scales={this.scales}\n settingsId={settingsId}\n step={this.step}\n getCellTooltip={getCellTooltip}\n onTooltipHintSwitch={onTooltipHintSwitch}\n />\n </DataFrameProvider>\n );\n this.component = component;\n this.reactRoot?.render(component);\n }\n\n renderError(message: string) {\n this.reactRoot?.render(<Error message={message} />);\n }\n}\n\nexport default ChartRenderer;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ChartRenderer.js","names":[],"sources":["../../src/bubble/ChartRenderer.tsx"],"sourcesContent":["import type { ScaleLinear, ScalePower } from 'd3-scale';\nimport { scaleLinear, scaleOrdinal, scaleSqrt } from 'd3-scale';\nimport type { ReactElement } from 'react';\nimport type { Root } from 'react-dom/client';\nimport { createRoot } from 'react-dom/client';\nimport { Error } from '../common/Error';\nimport type { LegendData, LegendItem } from '../common/types';\nimport { DataFrameProvider } from '../common/useDataFrame';\nimport { DEFAULT_HEIGHT, DEFAULT_WIDTH, MAX_LEGEND_GRADIENT_HEIGHT, MIN_LEGEND_GRADIENT_HEIGHT, TITLE_LINE_HEIGHT, TITLE_MARGIN } from '../constants';\nimport type { DataFrame } from '../DataFrame';\nimport type { ColumnName, DataValue } from '../types';\nimport { arrangeLegendParts } from '../utils/arrangeLegendParts';\nimport { getSizeLegendItem } from '../utils/getSizeLegendItem';\nimport { getChartEdgeSides } from '../utils/getChartEdgeSides';\nimport { getContinuousLegendTicks } from '../utils/getContinuousLegendTicks';\nimport { TextMeasurer } from '../utils/TextMeasurer/TextMeasurer';\nimport type { BubbleSettingsImpl } from './BubbleSettingsImpl';\nimport { ChartsGroup } from './components/ChartsGroup';\nimport type {\n CaptionsSizes,\n ChartDimensionsData, ChartScales, ChartSizes,\n LabelAngles,\n Margins\n} from './components/types';\nimport { CHART_SIDE_ELEMENTS, LEGEND_OFFSET, MIN_MARGIN, MIN_PADDING, TITLE_LINE } from './constants';\nimport type { CellBubble, GroupedCellsBubble } from './getGroupedCellsData';\nimport { calculateChartSideElementSizes, calculateSideElementsBBoxes } from './utils';\nimport { calculateCaptionTails } from './utils/calculateCaptionTails';\n\nconst getSteps = (count: number, valueExtent: number[]) => {\n const min = Math.min(...valueExtent);\n const max = Math.max(...valueExtent);\n if (min === max) {\n const steps = count % 2 === 0 ? [] : [min];\n for (let i = 1; i < count / 2 + 1; i++) {\n steps.push(min + i);\n steps.unshift(min - i);\n }\n return steps;\n }\n if (count < 2) {\n return [min, max];\n }\n const step = (max - min) / (count - 1);\n const steps = [];\n for (let i = 0; i < count - 1; i++) {\n steps.push(min + step * i);\n }\n steps.push(max);\n return steps;\n};\n\nfunction getContinuousColorRange(\n normalization: BubbleSettingsImpl['normalization'],\n colorsCount: number,\n valueExtent: number[]\n) {\n let extent = valueExtent;\n if (normalization) {\n if (normalization.colorRange) {\n extent = normalization.colorRange;\n }\n if (normalization.method === 'standardScaling') {\n extent = [-2, 2];\n }\n if (normalization.method === 'meanNormalization') {\n extent = [-0.75, 0.75];\n }\n }\n return getSteps(colorsCount, extent);\n}\n\nclass ChartRenderer {\n reactRoot: Root | null = null;\n parentNode: HTMLElement | null = null;\n rootNode: HTMLElement | null = null;\n component: ReactElement = (<></>);\n chartsDimensions: Record<string, ChartDimensionsData> = {};\n chartSizes: ChartSizes = {\n chartWidth: DEFAULT_WIDTH, // width of single chart\n chartHeight: DEFAULT_HEIGHT, // height of single chart\n chartsWidth: DEFAULT_WIDTH, // width of all charts in charts row\n chartsHeight: DEFAULT_HEIGHT, // width of all charts in charts column, without axes\n totalWidth: DEFAULT_WIDTH, // width of all charts in charts row, plus left axis, plus legend\n totalHeight: DEFAULT_HEIGHT, // width of all charts in charts height, plus bottom axis, plus top title\n };\n margins: Margins = {\n top: MIN_MARGIN,\n bottom: MIN_MARGIN,\n left: MIN_MARGIN,\n right: MIN_MARGIN,\n };\n captionsSizes: CaptionsSizes = {\n xAxisCaptions: 100,\n yAxisCaptions: 100,\n xCaptionTail: 0,\n yCaptionTail: 0,\n };\n labelAngles: LabelAngles = {\n xAxisLabels: 0,\n yAxisLabels: 0,\n };\n columnsCount = 1;\n rowsCount = 1;\n scales: ChartScales = {\n x: scaleOrdinal<string, number>().domain(['null']).range([1]),\n y: scaleOrdinal<string, number>().domain(['null']).range([1]),\n };\n step: {x: number; y: number} = {x: 10, y: 10};\n colorScale: ScaleLinear<string, string> = scaleLinear<string, string>().domain([0, 1]).range(['white', 'black']);\n sizeScale: ScalePower<number, number> = scaleSqrt().domain([0, 1]).range([3, 20]);\n legend: LegendData = {\n width: 0,\n height: 0,\n items: [],\n };\n\n clear() {\n if (this.parentNode && this.rootNode) {\n this.parentNode?.removeChild(this.rootNode);\n this.parentNode = null;\n this.rootNode = null;\n }\n // timeout to avoid trying to unmount during rendering\n setTimeout(() => {\n this.reactRoot?.unmount();\n this.reactRoot = null;\n });\n }\n\n init(node: HTMLElement) {\n if (this.parentNode === null) {\n this.parentNode = node;\n this.rootNode = document.createElement('div');\n this.parentNode.appendChild(this.rootNode);\n this.reactRoot = createRoot(this.rootNode);\n }\n }\n\n updateMargins(title: BubbleSettingsImpl['chartSettings']['title']) {\n this.margins = {\n top: title.show ? TITLE_LINE_HEIGHT + TITLE_MARGIN * 2 : MIN_MARGIN,\n bottom: MIN_MARGIN,\n left: MIN_MARGIN,\n right: this.legend.width,\n };\n this.chartSizes.totalWidth = this.margins.left + this.chartSizes.chartsWidth + this.margins.right;\n this.chartSizes.totalHeight =\n this.margins.top + Math.max(this.chartSizes.chartsHeight, this.legend.height) + this.margins.bottom;\n }\n\n updateLegendSize(\n legend: BubbleSettingsImpl['chartSettings']['legend'],\n columnValueColor: ColumnName,\n columnValueSize: ColumnName,\n facetKeys: string[]\n ) {\n if (!legend.show) {\n this.legend = {width: 0, height: 0, items: []};\n return;\n }\n\n const legendItems: LegendItem[] = [];\n const continuousHeight = Math.min(\n Math.max(this.chartSizes.chartHeight, MIN_LEGEND_GRADIENT_HEIGHT),\n MAX_LEGEND_GRADIENT_HEIGHT\n );\n const legendHeight = Math.max(this.chartSizes.chartHeight, continuousHeight);\n const emptySizes = {width:0, height:0, left:0, top: 0};\n\n const colorDomain = this.colorScale.domain();\n const colorValues = getContinuousLegendTicks(this.colorScale, [\n colorDomain[0],\n colorDomain[colorDomain.length - 1],\n ]);\n const colorTitle = columnValueColor.label ?? columnValueColor.value;\n const tickPositionScale = scaleLinear([colorValues[0], colorValues[colorValues.length - 1]], [continuousHeight, 0]); //TODO: update during adding log scale for heatmap\n \n legendItems.push({\n id: 'colorValue',\n type: 'continuous',\n scale: this.colorScale,\n tickPositionScale,\n values: colorValues,\n title: colorTitle,\n ...emptySizes\n });\n\n const sizeLegendItem = getSizeLegendItem({\n columnName: columnValueSize,\n domain: this.sizeScale.domain(),\n range: this.sizeScale.range(),\n });\n legendItems.push({...sizeLegendItem, id: 'sizeValue'});\n\n if (!legendItems.length) {\n this.legend = {width: 0, height: 0, items: []};\n return;\n }\n\n const items = arrangeLegendParts(legendItems, legendHeight, continuousHeight);\n\n const maxRightEdge = items.reduce((max, item) => Math.max(max, item.left + item.width), 0);\n const legendWidth = maxRightEdge + 2 * LEGEND_OFFSET;\n\n const leftTopChartPadding = this.chartsDimensions[facetKeys[0]].padding; // additional offset of legend for alignment with chart\n\n this.legend = {\n width: legendWidth,\n height: legendHeight + leftTopChartPadding.top,\n items: items,\n };\n }\n\n updateCaptionsSize(\n groupedCells: GroupedCellsBubble,\n xAxis: BubbleSettingsImpl['chartSettings']['xAxis'],\n yAxis: BubbleSettingsImpl['chartSettings']['yAxis']\n ) {\n const textMeasurer = new TextMeasurer('bold 14px Arial');\n const {xKeys, yKeys, xLabels, yLabels} = groupedCells.meta;\n this.labelAngles = {\n xAxisLabels: xAxis.axisLabelsAngle,\n yAxisLabels: yAxis.axisLabelsAngle,\n };\n let maxXLabelSize = 0;\n let maxYLabelSize = 0;\n for (const xKey of xKeys) {\n const l = textMeasurer.getTextWidth(xLabels[xKey]);\n if (l > maxXLabelSize) {\n maxXLabelSize = l;\n }\n }\n for (const yKey of yKeys) {\n const l = textMeasurer.getTextWidth(yLabels[yKey]);\n if (l > maxYLabelSize) {\n maxYLabelSize = l;\n }\n }\n const {xCaptionTail, yCaptionTail} = calculateCaptionTails(\n this.labelAngles,\n this.step,\n groupedCells,\n textMeasurer\n );\n const xLabelAngle = (this.labelAngles.xAxisLabels / 180) * Math.PI;\n const yLabelAngle = (this.labelAngles.yAxisLabels / 180) * Math.PI;\n this.captionsSizes = {\n xCaptionTail,\n yCaptionTail,\n xAxisCaptions: maxXLabelSize * Math.sin(xLabelAngle) || TITLE_LINE,\n yAxisCaptions: maxYLabelSize * Math.sin(yLabelAngle) || TITLE_LINE,\n };\n }\n\n updateChartDimensions(\n facetKeys: string[],\n facetSettings: BubbleSettingsImpl['facetSettings'],\n xAxis: BubbleSettingsImpl['chartSettings']['xAxis'],\n yAxis: BubbleSettingsImpl['chartSettings']['yAxis']\n ) {\n const facetCount = facetKeys.length;\n const maxNRows = Math.min(facetSettings.nRows ?? facetCount, facetCount);\n const maxNCols = Math.min(facetSettings.nCols ?? facetCount, facetCount);\n // Use columns/rows count from settings if some of them defined, else make 1 column\n this.columnsCount = facetSettings.nRows ? Math.ceil(facetCount / maxNRows) : maxNCols;\n this.rowsCount = Math.ceil(facetCount / this.columnsCount);\n this.chartsDimensions = {};\n\n let currentLeft = 0;\n let currentTop = 0;\n facetKeys.forEach((key, index) => {\n const currentColumn = (index % this.columnsCount) + 1;\n const chartSides = getChartEdgeSides(index, facetKeys.length, this.columnsCount, this.rowsCount);\n const width = this.chartSizes.chartWidth;\n const height = this.chartSizes.chartHeight;\n const sideElementSizes = calculateChartSideElementSizes(\n xAxis,\n yAxis,\n this.captionsSizes,\n chartSides,\n facetKeys,\n this.step.x,\n this.step.y\n );\n\n function getPadding(side: 'left' | 'right' | 'top' | 'bottom') {\n return Math.max(\n CHART_SIDE_ELEMENTS[side].reduce((res, el) => res + sideElementSizes[side][el], 0),\n MIN_PADDING\n );\n }\n\n const padding = {\n left: getPadding('left'),\n right: getPadding('right'),\n top: getPadding('top'),\n bottom: getPadding('bottom'),\n };\n if (padding.left < this.captionsSizes.xCaptionTail) {\n padding.left = this.captionsSizes.xCaptionTail;\n }\n if (padding.bottom < this.captionsSizes.yCaptionTail) {\n padding.bottom = this.captionsSizes.yCaptionTail;\n }\n const sideElementBBoxes = calculateSideElementsBBoxes(sideElementSizes, width, height);\n const outerWidth = width + padding.left + padding.right;\n const outerHeight = height + padding.top + padding.bottom;\n this.chartsDimensions[key] = {\n left: currentLeft,\n top: currentTop,\n inner: {width, height},\n outer: {width: outerWidth, height: outerHeight},\n padding,\n sideElementBBoxes,\n chartEdgeSides: chartSides,\n };\n currentLeft += outerWidth;\n if (currentColumn === this.columnsCount) {\n currentLeft = 0;\n currentTop += outerHeight;\n }\n });\n\n // sum of widths of first row\n const chartsWidth = facetKeys\n .slice(0, this.columnsCount)\n .reduce((sum, key) => sum + this.chartsDimensions[key].outer.width, 0);\n // sum of heights of first column\n const chartsHeight = facetKeys\n .filter((_key, index) => index % this.columnsCount === 0)\n .reduce((sum, key) => sum + this.chartsDimensions[key].outer.height, 0);\n this.chartSizes.chartsWidth = chartsWidth;\n this.chartSizes.chartsHeight = chartsHeight;\n }\n\n updateChartsSizes(groupedCellsData: GroupedCellsBubble, size: BubbleSettingsImpl['chartSettings']['size']) {\n const {width, height, cellSize} = size;\n if (cellSize) {\n this.chartSizes.chartWidth = groupedCellsData.meta.xKeys.length * cellSize;\n this.chartSizes.chartHeight = groupedCellsData.meta.yKeys.length * cellSize;\n }\n if (width && height) {\n this.chartSizes.chartWidth = width;\n this.chartSizes.chartHeight = height;\n }\n }\n\n // update scales for cell positions, x and y for each facet.\n // Keys arrive pre-sorted from fillCellsData.\n updateScales(\n groupedCells: GroupedCellsBubble,\n size: BubbleSettingsImpl['chartSettings']['size'],\n ) {\n const {width, height, cellSize} = size;\n const {meta} = groupedCells;\n const xGroupKeys = meta.xGroupKeys;\n const yGroupKeys = meta.yGroupKeys;\n const { xKeysByGroups, yKeysByGroups } = meta;\n\n const xKeys = xGroupKeys.reduce((res: string[], xGroupKey: string) => {\n res = res.concat(xKeysByGroups[xGroupKey]);\n return res;\n }, []);\n const yKeys = yGroupKeys.reduce((res: string[], yGroupKey: string) => {\n res = res.concat(yKeysByGroups[yGroupKey]);\n return res;\n }, []);\n if (cellSize) {\n this.step.x = cellSize;\n this.step.y = cellSize;\n } else if (width && height) {\n this.step.x = width / xKeys.length;\n this.step.y = height / yKeys.length;\n }\n const xPositions: number[] = new Array(xKeys.length).fill(null).map((_v, idx) => idx * this.step.x);\n const yPositions: number[] = new Array(yKeys.length).fill(null).map((_v, idx) => idx * this.step.y);\n this.scales.x = scaleOrdinal<string, number>().domain(xKeys).range(xPositions);\n this.scales.y = scaleOrdinal<string, number>().domain(yKeys).range(yPositions);\n }\n\n updateAesScale(\n aes: BubbleSettingsImpl['aes'],\n valueExtentSize: [number, number],\n valueExtentColor: [number, number],\n normalization: BubbleSettingsImpl['normalization']\n ) {\n this.colorScale = scaleLinear<string, string>()\n .domain(getContinuousColorRange(normalization, aes.colorsList.length, valueExtentColor))\n .range(aes.colorsList);\n this.sizeScale = scaleSqrt(valueExtentSize, [aes.minRadius, aes.maxRadius]);\n }\n\n render(\n dataFrame: DataFrame,\n settingsId: string,\n chartSettings: BubbleSettingsImpl['chartSettings'],\n facetSettings: BubbleSettingsImpl['facetSettings'],\n groupedCellsData: GroupedCellsBubble,\n valueColumnColor: ColumnName,\n valueColumnSize: ColumnName,\n normalization: BubbleSettingsImpl['normalization'],\n aes: BubbleSettingsImpl['aes'],\n getCellTooltip: (cell: CellBubble) => string[],\n onTooltipHintSwitch: (v:boolean) => void,\n ) {\n const {meta, facets, meta: { facetKeys }} = groupedCellsData;\n const {valueExtent} = meta;\n const {xAxis, yAxis, title, size} = chartSettings;\n this.updateChartsSizes(groupedCellsData, size);\n this.updateAesScale(aes, valueExtent.sizeValue, valueExtent.colorValue, normalization);\n this.updateScales(groupedCellsData, size);\n // caption sizes are needed for chart paddings in chart dimensions\n this.updateCaptionsSize(groupedCellsData, xAxis, yAxis);\n this.updateChartDimensions(facetKeys, facetSettings, xAxis, yAxis);\n this.updateLegendSize(chartSettings.legend, valueColumnColor, valueColumnSize, facetKeys);\n this.updateMargins(title);\n const component = (\n <DataFrameProvider dataFrame={dataFrame}>\n <ChartsGroup\n aes={aes}\n captionsSizes={this.captionsSizes}\n cellsMeta={meta}\n columnsCount={this.columnsCount}\n chartsDimensions={this.chartsDimensions}\n chartSettings={chartSettings}\n chartSizes={this.chartSizes}\n sizeScale={this.sizeScale as (v: DataValue) => number}\n colorScale={this.colorScale as (v: DataValue) => string}\n facetKeys={facetKeys}\n facetSettings={facetSettings}\n groupedCells={facets}\n labelAngles={this.labelAngles}\n legend={this.legend}\n margins={this.margins}\n scales={this.scales}\n settingsId={settingsId}\n step={this.step}\n getCellTooltip={getCellTooltip}\n onTooltipHintSwitch={onTooltipHintSwitch}\n />\n </DataFrameProvider>\n );\n this.component = component;\n this.reactRoot?.render(component);\n }\n\n renderError(message: string) {\n this.reactRoot?.render(<Error message={message} />);\n }\n}\n\nexport default ChartRenderer;\n"],"mappings":";;;;;;;;;;;;;;;AA6BA,IAAM,KAAY,GAAe,MAA0B;CACvD,IAAM,IAAM,KAAK,IAAI,GAAG,EAAY,EAC9B,IAAM,KAAK,IAAI,GAAG,EAAY;AACpC,KAAI,MAAQ,GAAK;EACb,IAAM,IAAQ,IAAQ,KAAM,IAAI,EAAE,GAAG,CAAC,EAAI;AAC1C,OAAK,IAAI,IAAI,GAAG,IAAI,IAAQ,IAAI,GAAG,IAE/B,CADA,EAAM,KAAK,IAAM,EAAE,EACnB,EAAM,QAAQ,IAAM,EAAE;AAE1B,SAAO;;AAEX,KAAI,IAAQ,EACR,QAAO,CAAC,GAAK,EAAI;CAErB,IAAM,KAAQ,IAAM,MAAQ,IAAQ,IAC9B,IAAQ,EAAE;AAChB,MAAK,IAAI,IAAI,GAAG,IAAI,IAAQ,GAAG,IAC3B,GAAM,KAAK,IAAM,IAAO,EAAE;AAG9B,QADA,EAAM,KAAK,EAAI,EACR;;AAGX,SAAS,EACL,GACA,GACA,GACF;CACE,IAAI,IAAS;AAYb,QAXI,MACI,EAAc,eACd,IAAS,EAAc,aAEvB,EAAc,WAAW,sBACzB,IAAS,CAAC,IAAI,EAAE,GAEhB,EAAc,WAAW,wBACzB,IAAS,CAAC,MAAO,IAAK,IAGvB,EAAS,GAAa,EAAO;;AAGxC,IAAM,IAAN,MAAoB;CAChB,YAAyB;CACzB,aAAiC;CACjC,WAA+B;CAC/B,YAA2B,kBAAA,GAAA,EAAK,CAAA;CAChC,mBAAwD,EAAE;CAC1D,aAAyB;EACrB,YAAA;EACA,aAAA;EACA,aAAA;EACA,cAAA;EACA,YAAA;EACA,aAAA;EACH;CACD,UAAmB;EACf,KAAA;EACA,QAAA;EACA,MAAA;EACA,OAAA;EACH;CACD,gBAA+B;EAC3B,eAAe;EACf,eAAe;EACf,cAAc;EACd,cAAc;EACjB;CACD,cAA2B;EACvB,aAAa;EACb,aAAa;EAChB;CACD,eAAe;CACf,YAAY;CACZ,SAAsB;EAClB,GAAG,GAA8B,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;EAC7D,GAAG,GAA8B,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;EAChE;CACD,OAA+B;EAAC,GAAG;EAAI,GAAG;EAAG;CAC7C,aAA0C,GAA6B,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,QAAQ,CAAC;CAChH,YAAwC,GAAW,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;CACjF,SAAqB;EACjB,OAAO;EACP,QAAQ;EACR,OAAO,EAAE;EACZ;CAED,QAAQ;AAOJ,EANI,KAAK,cAAc,KAAK,aACxB,KAAK,YAAY,YAAY,KAAK,SAAS,EAC3C,KAAK,aAAa,MAClB,KAAK,WAAW,OAGpB,iBAAiB;AAEb,GADA,KAAK,WAAW,SAAS,EACzB,KAAK,YAAY;IACnB;;CAGN,KAAK,GAAmB;AACpB,EAAI,KAAK,eAAe,SACpB,KAAK,aAAa,GAClB,KAAK,WAAW,SAAS,cAAc,MAAM,EAC7C,KAAK,WAAW,YAAY,KAAK,SAAS,EAC1C,KAAK,YAAY,EAAW,KAAK,SAAS;;CAIlD,cAAc,GAAqD;AAQ/D,EAPA,KAAK,UAAU;GACX,KAAK,EAAM,OAAA,KAA0C;GACrD,QAAA;GACA,MAAA;GACA,OAAO,KAAK,OAAO;GACtB,EACD,KAAK,WAAW,aAAa,KAAK,QAAQ,OAAO,KAAK,WAAW,cAAc,KAAK,QAAQ,OAC5F,KAAK,WAAW,cACZ,KAAK,QAAQ,MAAM,KAAK,IAAI,KAAK,WAAW,cAAc,KAAK,OAAO,OAAO,GAAG,KAAK,QAAQ;;CAGrG,iBACI,GACA,GACA,GACA,GACF;AACE,MAAI,CAAC,EAAO,MAAM;AACd,QAAK,SAAS;IAAC,OAAO;IAAG,QAAQ;IAAG,OAAO,EAAE;IAAC;AAC9C;;EAGJ,IAAM,IAA4B,EAAE,EAC9B,IAAmB,KAAK,IAC1B,KAAK,IAAI,KAAK,WAAW,aAAA,IAAwC,EAAA,IAEpE,EACK,IAAe,KAAK,IAAI,KAAK,WAAW,aAAa,EAAiB,EACtE,IAAa;GAAC,OAAM;GAAG,QAAO;GAAG,MAAK;GAAG,KAAK;GAAE,EAEhD,IAAc,KAAK,WAAW,QAAQ,EACtC,IAAc,EAAyB,KAAK,YAAY,CAC1D,EAAY,IACZ,EAAY,EAAY,SAAS,GACpC,CAAC,EACI,IAAa,EAAiB,SAAS,EAAiB,OACxD,IAAoB,EAAY,CAAC,EAAY,IAAI,EAAY,EAAY,SAAS,GAAG,EAAE,CAAC,GAAkB,EAAE,CAAC;AAEnH,IAAY,KAAK;GACb,IAAI;GACJ,MAAM;GACN,OAAO,KAAK;GACZ;GACA,QAAQ;GACR,OAAO;GACP,GAAG;GACN,CAAC;EAEF,IAAM,IAAiB,EAAkB;GACrC,YAAY;GACZ,QAAQ,KAAK,UAAU,QAAQ;GAC/B,OAAO,KAAK,UAAU,OAAO;GAChC,CAAC;AAGF,MAFA,EAAY,KAAK;GAAC,GAAG;GAAgB,IAAI;GAAY,CAAC,EAElD,CAAC,EAAY,QAAQ;AACrB,QAAK,SAAS;IAAC,OAAO;IAAG,QAAQ;IAAG,OAAO,EAAE;IAAC;AAC9C;;EAGJ,IAAM,IAAQ,EAAmB,GAAa,GAAc,EAAiB;AAO7E,OAAK,SAAS;GACV,OANiB,EAAM,QAAQ,GAAK,MAAS,KAAK,IAAI,GAAK,EAAK,OAAO,EAAK,MAAM,EAAE,EAAE,GACvD;GAM/B,QAAQ,IAJgB,KAAK,iBAAiB,EAAU,IAAI,QAIjB;GACpC;GACV;;CAGL,mBACI,GACA,GACA,GACF;EACE,IAAM,IAAe,IAAI,EAAa,kBAAkB,EAClD,EAAC,UAAO,UAAO,YAAS,eAAW,EAAa;AACtD,OAAK,cAAc;GACf,aAAa,EAAM;GACnB,aAAa,EAAM;GACtB;EACD,IAAI,IAAgB,GAChB,IAAgB;AACpB,OAAK,IAAM,KAAQ,GAAO;GACtB,IAAM,IAAI,EAAa,aAAa,EAAQ,GAAM;AAClD,GAAI,IAAI,MACJ,IAAgB;;AAGxB,OAAK,IAAM,KAAQ,GAAO;GACtB,IAAM,IAAI,EAAa,aAAa,EAAQ,GAAM;AAClD,GAAI,IAAI,MACJ,IAAgB;;EAGxB,IAAM,EAAC,iBAAc,oBAAgB,EACjC,KAAK,aACL,KAAK,MACL,GACA,EACH,EACK,IAAe,KAAK,YAAY,cAAc,MAAO,KAAK,IAC1D,IAAe,KAAK,YAAY,cAAc,MAAO,KAAK;AAChE,OAAK,gBAAgB;GACjB;GACA;GACA,eAAe,IAAgB,KAAK,IAAI,EAAY,IAAA;GACpD,eAAe,IAAgB,KAAK,IAAI,EAAY,IAAA;GACvD;;CAGL,sBACI,GACA,GACA,GACA,GACF;EACE,IAAM,IAAa,EAAU,QACvB,IAAW,KAAK,IAAI,EAAc,SAAS,GAAY,EAAW,EAClE,IAAW,KAAK,IAAI,EAAc,SAAS,GAAY,EAAW;AAIxE,EAFA,KAAK,eAAe,EAAc,QAAQ,KAAK,KAAK,IAAa,EAAS,GAAG,GAC7E,KAAK,YAAY,KAAK,KAAK,IAAa,KAAK,aAAa,EAC1D,KAAK,mBAAmB,EAAE;EAE1B,IAAI,IAAc,GACd,IAAa;AACjB,IAAU,SAAS,GAAK,MAAU;GAC9B,IAAM,IAAiB,IAAQ,KAAK,eAAgB,GAC9C,IAAa,EAAkB,GAAO,EAAU,QAAQ,KAAK,cAAc,KAAK,UAAU,EAC1F,IAAQ,KAAK,WAAW,YACxB,IAAS,KAAK,WAAW,aACzB,IAAmB,EACrB,GACA,GACA,KAAK,eACL,GACA,GACA,KAAK,KAAK,GACV,KAAK,KAAK,EACb;GAED,SAAS,EAAW,GAA2C;AAC3D,WAAO,KAAK,IACR,EAAoB,GAAM,QAAQ,GAAK,MAAO,IAAM,EAAiB,GAAM,IAAK,EAAE,EAAA,GAErF;;GAGL,IAAM,IAAU;IACZ,MAAM,EAAW,OAAO;IACxB,OAAO,EAAW,QAAQ;IAC1B,KAAK,EAAW,MAAM;IACtB,QAAQ,EAAW,SAAS;IAC/B;AAID,GAHI,EAAQ,OAAO,KAAK,cAAc,iBAClC,EAAQ,OAAO,KAAK,cAAc,eAElC,EAAQ,SAAS,KAAK,cAAc,iBACpC,EAAQ,SAAS,KAAK,cAAc;GAExC,IAAM,IAAoB,EAA4B,GAAkB,GAAO,EAAO,EAChF,IAAa,IAAQ,EAAQ,OAAO,EAAQ,OAC5C,IAAc,IAAS,EAAQ,MAAM,EAAQ;AAWnD,GAVA,KAAK,iBAAiB,KAAO;IACzB,MAAM;IACN,KAAK;IACL,OAAO;KAAC;KAAO;KAAO;IACtB,OAAO;KAAC,OAAO;KAAY,QAAQ;KAAY;IAC/C;IACA;IACA,gBAAgB;IACnB,EACD,KAAe,GACX,MAAkB,KAAK,iBACvB,IAAc,GACd,KAAc;IAEpB;EAGF,IAAM,IAAc,EACf,MAAM,GAAG,KAAK,aAAa,CAC3B,QAAQ,GAAK,MAAQ,IAAM,KAAK,iBAAiB,GAAK,MAAM,OAAO,EAAE,EAEpE,IAAe,EAChB,QAAQ,GAAM,MAAU,IAAQ,KAAK,iBAAiB,EAAE,CACxD,QAAQ,GAAK,MAAQ,IAAM,KAAK,iBAAiB,GAAK,MAAM,QAAQ,EAAE;AAE3E,EADA,KAAK,WAAW,cAAc,GAC9B,KAAK,WAAW,eAAe;;CAGnC,kBAAkB,GAAsC,GAAmD;EACvG,IAAM,EAAC,UAAO,WAAQ,gBAAY;AAKlC,EAJI,MACA,KAAK,WAAW,aAAa,EAAiB,KAAK,MAAM,SAAS,GAClE,KAAK,WAAW,cAAc,EAAiB,KAAK,MAAM,SAAS,IAEnE,KAAS,MACT,KAAK,WAAW,aAAa,GAC7B,KAAK,WAAW,cAAc;;CAMtC,aACI,GACA,GACF;EACE,IAAM,EAAC,UAAO,WAAQ,gBAAY,GAC5B,EAAC,YAAQ,GACT,IAAa,EAAK,YAClB,IAAa,EAAK,YAClB,EAAE,kBAAe,qBAAkB,GAEnC,IAAQ,EAAW,QAAQ,GAAe,OAC5C,IAAM,EAAI,OAAO,EAAc,GAAW,EACnC,IACR,EAAE,CAAC,EACA,IAAQ,EAAW,QAAQ,GAAe,OAC5C,IAAM,EAAI,OAAO,EAAc,GAAW,EACnC,IACR,EAAE,CAAC;AACN,EAAI,KACA,KAAK,KAAK,IAAI,GACd,KAAK,KAAK,IAAI,KACP,KAAS,MAChB,KAAK,KAAK,IAAI,IAAQ,EAAM,QAC5B,KAAK,KAAK,IAAI,IAAS,EAAM;EAEjC,IAAM,IAA2B,MAAM,EAAM,OAAO,CAAC,KAAK,KAAK,CAAC,KAAK,GAAI,MAAQ,IAAM,KAAK,KAAK,EAAE,EAC7F,IAA2B,MAAM,EAAM,OAAO,CAAC,KAAK,KAAK,CAAC,KAAK,GAAI,MAAQ,IAAM,KAAK,KAAK,EAAE;AAEnG,EADA,KAAK,OAAO,IAAI,GAA8B,CAAC,OAAO,EAAM,CAAC,MAAM,EAAW,EAC9E,KAAK,OAAO,IAAI,GAA8B,CAAC,OAAO,EAAM,CAAC,MAAM,EAAW;;CAGlF,eACI,GACA,GACA,GACA,GACF;AAIE,EAHA,KAAK,aAAa,GAA6B,CAC1C,OAAO,EAAwB,GAAe,EAAI,WAAW,QAAQ,EAAiB,CAAC,CACvF,MAAM,EAAI,WAAW,EAC1B,KAAK,YAAY,EAAU,GAAiB,CAAC,EAAI,WAAW,EAAI,UAAU,CAAC;;CAG/E,OACI,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACF;EACE,IAAM,EAAC,SAAM,WAAQ,MAAM,EAAE,mBAAe,GACtC,EAAC,mBAAe,GAChB,EAAC,UAAO,UAAO,UAAO,YAAQ;AAQpC,EAPA,KAAK,kBAAkB,GAAkB,EAAK,EAC9C,KAAK,eAAe,GAAK,EAAY,WAAW,EAAY,YAAY,EAAc,EACtF,KAAK,aAAa,GAAkB,EAAK,EAEzC,KAAK,mBAAmB,GAAkB,GAAO,EAAM,EACvD,KAAK,sBAAsB,GAAW,GAAe,GAAO,EAAM,EAClE,KAAK,iBAAiB,EAAc,QAAQ,GAAkB,GAAiB,EAAU,EACzF,KAAK,cAAc,EAAM;EACzB,IAAM,IACF,kBAAC,GAAD;GAA8B;aAC1B,kBAAC,GAAD;IACS;IACL,eAAe,KAAK;IACpB,WAAW;IACX,cAAc,KAAK;IACnB,kBAAkB,KAAK;IACR;IACf,YAAY,KAAK;IACjB,WAAW,KAAK;IAChB,YAAY,KAAK;IACN;IACI;IACf,cAAc;IACd,aAAa,KAAK;IAClB,QAAQ,KAAK;IACb,SAAS,KAAK;IACd,QAAQ,KAAK;IACD;IACZ,MAAM,KAAK;IACK;IACK;IACvB,CAAA;GACc,CAAA;AAGxB,EADA,KAAK,YAAY,GACjB,KAAK,WAAW,OAAO,EAAU;;CAGrC,YAAY,GAAiB;AACzB,OAAK,WAAW,OAAO,kBAAC,GAAD,EAAgB,YAAW,CAAA,CAAC"}
|
|
@@ -5,6 +5,6 @@ import { Cell, GroupedCellsData } from '../heatmap/fillCellsData';
|
|
|
5
5
|
type BubbleDataFields = 'sizeValue' | 'colorValue';
|
|
6
6
|
export type CellBubble = Cell<BubbleDataFields>;
|
|
7
7
|
export type GroupedCellsBubble = GroupedCellsData<BubbleDataFields>;
|
|
8
|
-
export declare function getGroupedCellsData(data: DataFrame, xColumn: ColumnName, yColumn: ColumnName, valueColumnSize: ColumnName, valueColumnColor: ColumnName, facetBy: ColumnName[], xGroupBy: ColumnName[], yGroupBy: ColumnName[], facetSettings: BubbleSettingsImpl['facetSettings'], normalization: BubbleSettingsImpl['normalization'], NAValueAs: BubbleSettingsImpl['NAValueAs'], keysOrder: BubbleSettingsImpl['keysOrder'], xAxis: BubbleSettingsImpl['chartSettings']['xAxis'], yAxis: BubbleSettingsImpl['chartSettings']['yAxis'], aggregation: BubbleSettingsImpl['aggregation'], showEmptyRows?: boolean, showEmptyColumns?: boolean): GroupedCellsBubble;
|
|
8
|
+
export declare function getGroupedCellsData(data: DataFrame, xColumn: ColumnName, yColumn: ColumnName, valueColumnSize: ColumnName, valueColumnColor: ColumnName, facetBy: ColumnName[], xGroupBy: ColumnName[], yGroupBy: ColumnName[], xSortBy: ColumnName[], ySortBy: ColumnName[], facetSettings: BubbleSettingsImpl['facetSettings'], normalization: BubbleSettingsImpl['normalization'], NAValueAs: BubbleSettingsImpl['NAValueAs'], transform: BubbleSettingsImpl['transform'], keysOrder: BubbleSettingsImpl['keysOrder'], xAxis: BubbleSettingsImpl['chartSettings']['xAxis'], yAxis: BubbleSettingsImpl['chartSettings']['yAxis'], aggregation: BubbleSettingsImpl['aggregation'], showEmptyRows?: boolean, showEmptyColumns?: boolean): GroupedCellsBubble;
|
|
9
9
|
export {};
|
|
10
10
|
//# sourceMappingURL=getGroupedCellsData.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getGroupedCellsData.d.ts","sourceRoot":"","sources":["../../src/bubble/getGroupedCellsData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,KAAK,IAAI,EAAiB,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAI3F,KAAK,gBAAgB,GAAG,WAAW,GAAC,YAAY,CAAC;AACjD,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAChD,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;AAoCpE,wBAAgB,mBAAmB,CAC/B,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,UAAU,EACnB,eAAe,EAAE,UAAU,EAC3B,gBAAgB,EAAE,UAAU,EAC5B,OAAO,EAAE,UAAU,EAAE,EACrB,QAAQ,EAAE,UAAU,EAAE,EACtB,QAAQ,EAAE,UAAU,EAAE,EACtB,aAAa,EAAE,kBAAkB,CAAC,eAAe,CAAC,EAClD,aAAa,EAAE,kBAAkB,CAAC,eAAe,CAAC,EAClD,SAAS,EAAE,kBAAkB,CAAC,WAAW,CAAC,EAC1C,SAAS,EAAE,kBAAkB,CAAC,WAAW,CAAC,EAC1C,KAAK,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EACnD,KAAK,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EACnD,WAAW,EAAE,kBAAkB,CAAC,aAAa,CAAC,EAC9C,aAAa,GAAE,OAAe,EAC9B,gBAAgB,GAAE,OAAe,GAClC,kBAAkB,
|
|
1
|
+
{"version":3,"file":"getGroupedCellsData.d.ts","sourceRoot":"","sources":["../../src/bubble/getGroupedCellsData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,KAAK,IAAI,EAAiB,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAI3F,KAAK,gBAAgB,GAAG,WAAW,GAAC,YAAY,CAAC;AACjD,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAChD,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;AAoCpE,wBAAgB,mBAAmB,CAC/B,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,UAAU,EACnB,eAAe,EAAE,UAAU,EAC3B,gBAAgB,EAAE,UAAU,EAC5B,OAAO,EAAE,UAAU,EAAE,EACrB,QAAQ,EAAE,UAAU,EAAE,EACtB,QAAQ,EAAE,UAAU,EAAE,EACtB,OAAO,EAAE,UAAU,EAAE,EACrB,OAAO,EAAE,UAAU,EAAE,EACrB,aAAa,EAAE,kBAAkB,CAAC,eAAe,CAAC,EAClD,aAAa,EAAE,kBAAkB,CAAC,eAAe,CAAC,EAClD,SAAS,EAAE,kBAAkB,CAAC,WAAW,CAAC,EAC1C,SAAS,EAAE,kBAAkB,CAAC,WAAW,CAAC,EAC1C,SAAS,EAAE,kBAAkB,CAAC,WAAW,CAAC,EAC1C,KAAK,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EACnD,KAAK,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EACnD,WAAW,EAAE,kBAAkB,CAAC,aAAa,CAAC,EAC9C,aAAa,GAAE,OAAe,EAC9B,gBAAgB,GAAE,OAAe,GAClC,kBAAkB,CA4BpB"}
|
|
@@ -28,9 +28,9 @@ function n() {
|
|
|
28
28
|
facets: {}
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
|
-
function r(r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v = !1,
|
|
32
|
-
let
|
|
33
|
-
if (e(
|
|
31
|
+
function r(r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b, x = !1, S = !1) {
|
|
32
|
+
let C = n();
|
|
33
|
+
if (e(C, {
|
|
34
34
|
data: r,
|
|
35
35
|
xColumn: i,
|
|
36
36
|
yColumn: a,
|
|
@@ -41,23 +41,29 @@ function r(r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v = !1, y = !1) {
|
|
|
41
41
|
facetBy: c,
|
|
42
42
|
xGroupBy: l,
|
|
43
43
|
yGroupBy: u,
|
|
44
|
-
|
|
44
|
+
xSortBy: d,
|
|
45
|
+
ySortBy: f,
|
|
46
|
+
facetSettings: p,
|
|
45
47
|
annotations: [],
|
|
46
48
|
dendrogramX: null,
|
|
47
49
|
dendrogramY: null,
|
|
48
50
|
normalizationBySource: {
|
|
49
51
|
sizeValue: null,
|
|
50
|
-
colorValue:
|
|
52
|
+
colorValue: m
|
|
51
53
|
},
|
|
52
|
-
NAValueAs:
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
54
|
+
NAValueAs: h,
|
|
55
|
+
transformBySource: {
|
|
56
|
+
sizeValue: null,
|
|
57
|
+
colorValue: g
|
|
58
|
+
},
|
|
59
|
+
keysOrder: _,
|
|
60
|
+
xAxis: v,
|
|
61
|
+
yAxis: y,
|
|
62
|
+
aggregation: b,
|
|
63
|
+
showEmptyRows: x,
|
|
64
|
+
showEmptyColumns: S
|
|
65
|
+
}), C.meta.xKeys.length * C.meta.yKeys.length > t) throw Error(`Too many cells for graph rendering (${C.meta.xKeys.length * C.meta.yKeys.length})`);
|
|
66
|
+
return C;
|
|
61
67
|
}
|
|
62
68
|
export { r as getGroupedCellsData };
|
|
63
69
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getGroupedCellsData.js","names":[],"sources":["../../src/bubble/getGroupedCellsData.ts"],"sourcesContent":["import type { DataFrame } from '../DataFrame';\nimport type { ColumnName } from '../types';\nimport type { BubbleSettingsImpl } from './BubbleSettingsImpl';\nimport { type Cell, fillCellsData, type GroupedCellsData } from '../heatmap/fillCellsData';\n\nconst MAX_RENDERED_CELLS_COUNT = 1000000;\n\ntype BubbleDataFields = 'sizeValue'|'colorValue';\nexport type CellBubble = Cell<BubbleDataFields>;\nexport type GroupedCellsBubble = GroupedCellsData<BubbleDataFields>;\n\nfunction createEmptyGroupedCells(): GroupedCellsBubble {\n return {\n meta: {\n valueSources: ['sizeValue', 'colorValue'],\n facetKeys: [],\n xGroupKeys: [],\n yGroupKeys: [],\n\n xKeys: [], // all the keys from facets\n yKeys: [], // all the keys from facets\n xKeysByGroups: {},\n yKeysByGroups: {},\n\n xLabels: {},\n yLabels: {},\n xGroupLabels: {},\n yGroupLabels: {},\n\n facetKeyValues: {},\n xGroupKeyValues: {},\n yGroupKeyValues: {},\n\n xDataByKeys: {},\n yDataByKeys: {},\n\n valueExtent: {\n sizeValue: [Infinity, -Infinity],\n colorValue: [Infinity, -Infinity]\n }\n },\n facets: {},\n };\n}\n\nexport function getGroupedCellsData(\n data: DataFrame,\n xColumn: ColumnName,\n yColumn: ColumnName,\n valueColumnSize: ColumnName,\n valueColumnColor: ColumnName,\n facetBy: ColumnName[],\n xGroupBy: ColumnName[],\n yGroupBy: ColumnName[],\n facetSettings: BubbleSettingsImpl['facetSettings'],\n normalization: BubbleSettingsImpl['normalization'],\n NAValueAs: BubbleSettingsImpl['NAValueAs'],\n keysOrder: BubbleSettingsImpl['keysOrder'],\n xAxis: BubbleSettingsImpl['chartSettings']['xAxis'],\n yAxis: BubbleSettingsImpl['chartSettings']['yAxis'],\n aggregation: BubbleSettingsImpl['aggregation'],\n showEmptyRows: boolean = false,\n showEmptyColumns: boolean = false,\n): GroupedCellsBubble {\n const result: GroupedCellsBubble = createEmptyGroupedCells();\n\n fillCellsData(result, {\n data,\n xColumn, yColumn,\n valueColumns: { sizeValue: valueColumnSize, colorValue: valueColumnColor },\n facetBy, xGroupBy, yGroupBy,\n facetSettings,\n annotations: [],\n dendrogramX: null,\n dendrogramY: null,\n normalizationBySource: { sizeValue: null, colorValue: normalization },\n NAValueAs,\n keysOrder,\n xAxis,\n yAxis,\n aggregation,\n showEmptyRows,\n showEmptyColumns,\n });\n\n if (result.meta.xKeys.length * result.meta.yKeys.length > MAX_RENDERED_CELLS_COUNT) {\n throw Error(`Too many cells for graph rendering (${result.meta.xKeys.length * result.meta.yKeys.length})`);\n }\n return result;\n}\n"],"mappings":";AAKA,IAAM,IAA2B;AAMjC,SAAS,IAA8C;AACnD,QAAO;EACH,MAAM;GACF,cAAc,CAAC,aAAa,aAAa;GACzC,WAAW,EAAE;GACb,YAAY,EAAE;GACd,YAAY,EAAE;GAEd,OAAO,EAAE;GACT,OAAO,EAAE;GACT,eAAe,EAAE;GACjB,eAAe,EAAE;GAEjB,SAAS,EAAE;GACX,SAAS,EAAE;GACX,cAAc,EAAE;GAChB,cAAc,EAAE;GAEhB,gBAAgB,EAAE;GAClB,iBAAiB,EAAE;GACnB,iBAAiB,EAAE;GAEnB,aAAa,EAAE;GACf,aAAa,EAAE;GAEf,aAAa;IACT,WAAW,CAAC,UAAU,UAAU;IAChC,YAAY,CAAC,UAAU,UAAU;IACpC;GACJ;EACD,QAAQ,EAAE;EACb;;AAGL,SAAgB,EACZ,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAAyB,IACzB,IAA4B,IACV;CAClB,IAAM,IAA6B,GAAyB;
|
|
1
|
+
{"version":3,"file":"getGroupedCellsData.js","names":[],"sources":["../../src/bubble/getGroupedCellsData.ts"],"sourcesContent":["import type { DataFrame } from '../DataFrame';\nimport type { ColumnName } from '../types';\nimport type { BubbleSettingsImpl } from './BubbleSettingsImpl';\nimport { type Cell, fillCellsData, type GroupedCellsData } from '../heatmap/fillCellsData';\n\nconst MAX_RENDERED_CELLS_COUNT = 1000000;\n\ntype BubbleDataFields = 'sizeValue'|'colorValue';\nexport type CellBubble = Cell<BubbleDataFields>;\nexport type GroupedCellsBubble = GroupedCellsData<BubbleDataFields>;\n\nfunction createEmptyGroupedCells(): GroupedCellsBubble {\n return {\n meta: {\n valueSources: ['sizeValue', 'colorValue'],\n facetKeys: [],\n xGroupKeys: [],\n yGroupKeys: [],\n\n xKeys: [], // all the keys from facets\n yKeys: [], // all the keys from facets\n xKeysByGroups: {},\n yKeysByGroups: {},\n\n xLabels: {},\n yLabels: {},\n xGroupLabels: {},\n yGroupLabels: {},\n\n facetKeyValues: {},\n xGroupKeyValues: {},\n yGroupKeyValues: {},\n\n xDataByKeys: {},\n yDataByKeys: {},\n\n valueExtent: {\n sizeValue: [Infinity, -Infinity],\n colorValue: [Infinity, -Infinity]\n }\n },\n facets: {},\n };\n}\n\nexport function getGroupedCellsData(\n data: DataFrame,\n xColumn: ColumnName,\n yColumn: ColumnName,\n valueColumnSize: ColumnName,\n valueColumnColor: ColumnName,\n facetBy: ColumnName[],\n xGroupBy: ColumnName[],\n yGroupBy: ColumnName[],\n xSortBy: ColumnName[],\n ySortBy: ColumnName[],\n facetSettings: BubbleSettingsImpl['facetSettings'],\n normalization: BubbleSettingsImpl['normalization'],\n NAValueAs: BubbleSettingsImpl['NAValueAs'],\n transform: BubbleSettingsImpl['transform'],\n keysOrder: BubbleSettingsImpl['keysOrder'],\n xAxis: BubbleSettingsImpl['chartSettings']['xAxis'],\n yAxis: BubbleSettingsImpl['chartSettings']['yAxis'],\n aggregation: BubbleSettingsImpl['aggregation'],\n showEmptyRows: boolean = false,\n showEmptyColumns: boolean = false,\n): GroupedCellsBubble {\n const result: GroupedCellsBubble = createEmptyGroupedCells();\n\n fillCellsData(result, {\n data,\n xColumn, yColumn,\n valueColumns: { sizeValue: valueColumnSize, colorValue: valueColumnColor },\n facetBy, xGroupBy, yGroupBy,\n xSortBy, ySortBy,\n facetSettings,\n annotations: [],\n dendrogramX: null,\n dendrogramY: null,\n normalizationBySource: { sizeValue: null, colorValue: normalization },\n NAValueAs,\n transformBySource: { sizeValue: null, colorValue: transform },\n keysOrder,\n xAxis,\n yAxis,\n aggregation,\n showEmptyRows,\n showEmptyColumns,\n });\n\n if (result.meta.xKeys.length * result.meta.yKeys.length > MAX_RENDERED_CELLS_COUNT) {\n throw Error(`Too many cells for graph rendering (${result.meta.xKeys.length * result.meta.yKeys.length})`);\n }\n return result;\n}\n"],"mappings":";AAKA,IAAM,IAA2B;AAMjC,SAAS,IAA8C;AACnD,QAAO;EACH,MAAM;GACF,cAAc,CAAC,aAAa,aAAa;GACzC,WAAW,EAAE;GACb,YAAY,EAAE;GACd,YAAY,EAAE;GAEd,OAAO,EAAE;GACT,OAAO,EAAE;GACT,eAAe,EAAE;GACjB,eAAe,EAAE;GAEjB,SAAS,EAAE;GACX,SAAS,EAAE;GACX,cAAc,EAAE;GAChB,cAAc,EAAE;GAEhB,gBAAgB,EAAE;GAClB,iBAAiB,EAAE;GACnB,iBAAiB,EAAE;GAEnB,aAAa,EAAE;GACf,aAAa,EAAE;GAEf,aAAa;IACT,WAAW,CAAC,UAAU,UAAU;IAChC,YAAY,CAAC,UAAU,UAAU;IACpC;GACJ;EACD,QAAQ,EAAE;EACb;;AAGL,SAAgB,EACZ,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAAyB,IACzB,IAA4B,IACV;CAClB,IAAM,IAA6B,GAAyB;AAuB5D,KArBA,EAAc,GAAQ;EAClB;EACA;EAAS;EACT,cAAc;GAAE,WAAW;GAAiB,YAAY;GAAkB;EAC1E;EAAS;EAAU;EACnB;EAAS;EACT;EACA,aAAa,EAAE;EACf,aAAa;EACb,aAAa;EACb,uBAAuB;GAAE,WAAW;GAAM,YAAY;GAAe;EACrE;EACA,mBAAmB;GAAE,WAAW;GAAM,YAAY;GAAW;EAC7D;EACA;EACA;EACA;EACA;EACA;EACH,CAAC,EAEE,EAAO,KAAK,MAAM,SAAS,EAAO,KAAK,MAAM,SAAS,EACtD,OAAM,MAAM,uCAAuC,EAAO,KAAK,MAAM,SAAS,EAAO,KAAK,MAAM,OAAO,GAAG;AAE9G,QAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bubble/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,cAAc,EAAoC,MAAM,UAAU,CAAC;AAC3G,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAwC,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAGtG,qBAAa,WAAY,SAAQ,aAAa;IAC1C,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,aAAa,EAAE,aAAa,CAAC;IAE7B,mBAAmB,EAAE,CAAC,CAAC,EAAC,OAAO,KAAK,IAAI,CAAmB;IAC3D,cAAc,EAAE;QACZ,gBAAgB,EAAE,kBAAkB,CAAC;KACxC,GAAG,IAAI,CAAQ;gBAEJ,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,CAAC,EAAE,mBAAmB;IAU1F,KAAK,CAAC,IAAI,EAAE,WAAW;IAiBvB,OAAO;IAIP,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc;IA2B/D,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IAIhD,MAAM,IAAI,MAAM;IAKhB,mCAAmC,CAAC,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAE,kBAAkB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bubble/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,cAAc,EAAoC,MAAM,UAAU,CAAC;AAC3G,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAwC,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAGtG,qBAAa,WAAY,SAAQ,aAAa;IAC1C,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,aAAa,EAAE,aAAa,CAAC;IAE7B,mBAAmB,EAAE,CAAC,CAAC,EAAC,OAAO,KAAK,IAAI,CAAmB;IAC3D,cAAc,EAAE;QACZ,gBAAgB,EAAE,kBAAkB,CAAC;KACxC,GAAG,IAAI,CAAQ;gBAEJ,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,CAAC,EAAE,mBAAmB;IAU1F,KAAK,CAAC,IAAI,EAAE,WAAW;IAiBvB,OAAO;IAIP,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc;IA2B/D,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IAIhD,MAAM,IAAI,MAAM;IAKhB,mCAAmC,CAAC,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAE,kBAAkB;IAwBlG,+BAA+B,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS;IAUpE,WAAW;IA+BX,gBAAgB;IAOhB,YAAY;IAoBZ,OAAO,CAAC,WAAW,CAIjB;CACL"}
|
package/dist/bubble/index.js
CHANGED
|
@@ -40,28 +40,24 @@ var l = class extends e {
|
|
|
40
40
|
return this._updateChart(), c(this.chartRenderer.component);
|
|
41
41
|
}
|
|
42
42
|
_needUpdateCalculatedDataBySettings(e, t) {
|
|
43
|
-
|
|
43
|
+
let n = (e, t) => e.length !== t.length || e.some((e, n) => e.value !== t[n].value);
|
|
44
|
+
return e.facetBy.some((e, n) => e.value !== t.facetBy[n]?.value) || r(e.facetSettings?.order ?? [], t.facetSettings?.order ?? []) || e.normalization?.method !== t.normalization?.method || e.normalization?.direction !== t.normalization?.direction || e.xColumn.value !== t.xColumn.value || e.yColumn.value !== t.yColumn.value || e.valueColumnColor.value !== t.valueColumnColor.value || e.valueColumnSize.value !== t.valueColumnSize.value || n(e.xSortBy, t.xSortBy) || n(e.ySortBy, t.ySortBy) || e.chartSettings.xAxis.sorting !== t.chartSettings.xAxis.sorting || e.chartSettings.yAxis.sorting !== t.chartSettings.yAxis.sorting || e.NAValueAs !== t.NAValueAs || e.transform !== t.transform || e.aggregation?.method !== t.aggregation?.method || e.aggregation?.x !== t.aggregation?.x || e.aggregation?.y !== t.aggregation?.y || e.showEmptyRows !== t.showEmptyRows || e.showEmptyColumns !== t.showEmptyColumns;
|
|
44
45
|
}
|
|
45
46
|
_needUpdateCalculatedDataByData(e, t) {
|
|
46
47
|
let n = Object.keys(e.data), r = Object.keys(t.data);
|
|
47
48
|
return e.id !== t.id || n.length !== r.length || n.some((n) => e.data[n].length !== t.data[n]?.length);
|
|
48
49
|
}
|
|
49
50
|
_updateData() {
|
|
50
|
-
let { facetBy: e, facetSettings: t, xGroupBy: n, yGroupBy: r,
|
|
51
|
-
this.calculatedData = { groupedCellsData: s(this.data,
|
|
51
|
+
let { facetBy: e, facetSettings: t, xGroupBy: n, yGroupBy: r, xSortBy: i, ySortBy: a, xColumn: o, yColumn: c, valueColumnSize: l, valueColumnColor: u, normalization: d, NAValueAs: f, transform: p, aggregation: m, chartSettings: h, keysOrder: g, showEmptyRows: _, showEmptyColumns: v } = this.settings;
|
|
52
|
+
this.calculatedData = { groupedCellsData: s(this.data, o, c, l, u, e, n, r, i, a, t, d, f, p, g, h.xAxis, h.yAxis, m, _, v) };
|
|
52
53
|
}
|
|
53
54
|
_updateAesInData() {
|
|
54
55
|
this.calculatedData;
|
|
55
56
|
}
|
|
56
57
|
_updateChart() {
|
|
57
58
|
if (!this.calculatedData) return;
|
|
58
|
-
let { id: e, chartSettings: t, facetSettings: n, valueColumnColor: r, valueColumnSize: i, normalization: a, aes: o
|
|
59
|
-
|
|
60
|
-
y: s[l.value]?.length > 0,
|
|
61
|
-
xGroup: u.some((e) => s[e.value]?.length > 0),
|
|
62
|
-
yGroup: d.some((e) => s[e.value]?.length > 0)
|
|
63
|
-
};
|
|
64
|
-
this.chartRenderer.render(this.data, e, t, n, this.calculatedData.groupedCellsData, r, i, a, o, this._getTooltip, this.onTooltipHintSwitch, f);
|
|
59
|
+
let { id: e, chartSettings: t, facetSettings: n, valueColumnColor: r, valueColumnSize: i, normalization: a, aes: o } = this.settings;
|
|
60
|
+
this.chartRenderer.render(this.data, e, t, n, this.calculatedData.groupedCellsData, r, i, a, o, this._getTooltip, this.onTooltipHintSwitch);
|
|
65
61
|
}
|
|
66
62
|
_getTooltip = (e) => this.calculatedData ? o(this.data, e, this.calculatedData.groupedCellsData.meta, this.settings?.chartSettings?.tooltips?.content) : ["No data available"];
|
|
67
63
|
};
|