@milaboratories/graph-maker 1.1.166 → 1.1.168
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/GraphMaker/constantsCommon.d.ts +2 -9
- package/dist/GraphMaker/constantsCommon.d.ts.map +1 -1
- package/dist/GraphMaker/constantsCommon.js +78 -83
- package/dist/GraphMaker/constantsCommon.js.map +1 -1
- package/dist/GraphMaker/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js +8 -2
- package/dist/GraphMaker/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js.map +1 -1
- package/dist/GraphMaker/forms/DataMappingForm/DiscreteForm.vue.js +26 -20
- package/dist/GraphMaker/forms/DataMappingForm/DiscreteForm.vue.js.map +1 -1
- package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue.d.ts.map +1 -1
- package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue.js +56 -38
- package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue.js.map +1 -1
- package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedBar.vue.d.ts.map +1 -1
- package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedBar.vue.js +48 -30
- package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedBar.vue.js.map +1 -1
- package/dist/GraphMaker/forms/LayersForm/Layer/scatterplot/Scatter.vue.d.ts.map +1 -1
- package/dist/GraphMaker/forms/LayersForm/Layer/scatterplot/Scatter.vue.js +37 -31
- package/dist/GraphMaker/forms/LayersForm/Layer/scatterplot/Scatter.vue.js.map +1 -1
- package/dist/GraphMaker/forms/LayersForm/Layer/scatterplot-umap/Scatter.vue.js +30 -24
- package/dist/GraphMaker/forms/LayersForm/Layer/scatterplot-umap/Scatter.vue.js.map +1 -1
- package/dist/GraphMaker/forms/StatisticsForm/DiscreteStatisticsForm.vue.js +33 -27
- package/dist/GraphMaker/forms/StatisticsForm/DiscreteStatisticsForm.vue.js.map +1 -1
- package/dist/GraphMaker/index.vue.js +8 -2
- package/dist/GraphMaker/index.vue.js.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.js +22 -16
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.js.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts +2 -0
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.js +17 -11
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.js.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.js +26 -20
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.js.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeHistogramSettings.js +29 -23
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeHistogramSettings.js.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.js +83 -68
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.js.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js +25 -19
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.js +7 -5
- package/dist/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.js.map +1 -1
- package/dist/GraphMaker/utils/getUsedAesInMapping.js +37 -31
- package/dist/GraphMaker/utils/getUsedAesInMapping.js.map +1 -1
- package/dist/GraphMaker/utils/loadDefaultSources.d.ts.map +1 -1
- package/dist/GraphMaker/utils/loadDefaultSources.js +36 -31
- package/dist/GraphMaker/utils/loadDefaultSources.js.map +1 -1
- package/dist/_virtual/stringify.js +5 -0
- package/dist/_virtual/stringify.js.map +1 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/DiscreteSettingsImpl.js +8 -8
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/DiscreteSettingsImpl.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/index.js +8 -8
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/stackedBar.js +54 -29
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/stackedBar.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-array/src/min.js +12 -6
- package/dist/node_modules/@milaboratories/miplots4/dist/node_modules/d3-array/src/min.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/types/discrete.js +2 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/types/discrete.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js +106 -107
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js +120 -121
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js +83 -84
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/dendro.js +4 -4
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/discrete.js +11 -11
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/heatmap.js +123 -124
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/heatmap.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/histogram.js +8 -8
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js +116 -117
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js +100 -102
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/spec.js +148 -119
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/spec.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/dist/components/PlDataTable.js +4 -4
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/dist/render/util/label.js +5 -5
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/drivers/blob.js +8 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/drivers/blob.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/spec.js +182 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/spec.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/errors.js +18 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/errors.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/json.js +12 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/json.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/plid.js +7 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/plid.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/ref.js +8 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/ref.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/pframe/ColumnsProvider.js +105 -111
- package/dist/node_modules/@milaboratories/pf-plots/dist/pframe/ColumnsProvider.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/utils.js +158 -163
- package/dist/node_modules/@milaboratories/pf-plots/dist/utils.js.map +1 -1
- package/dist/node_modules/@milaboratories/pl-error-like/dist/error_like_shape.js +36 -0
- package/dist/node_modules/@milaboratories/pl-error-like/dist/error_like_shape.js.map +1 -0
- package/dist/node_modules/@milaboratories/pl-model-common/dist/drivers/blob.js +8 -0
- package/dist/node_modules/@milaboratories/pl-model-common/dist/drivers/blob.js.map +1 -0
- package/dist/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/spec.js +52 -0
- package/dist/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/spec.js.map +1 -0
- package/dist/node_modules/@milaboratories/pl-model-common/dist/plid.js +7 -0
- package/dist/node_modules/@milaboratories/pl-model-common/dist/plid.js.map +1 -0
- package/dist/node_modules/@milaboratories/pl-model-common/dist/ref.js +8 -0
- package/dist/node_modules/@milaboratories/pl-model-common/dist/ref.js.map +1 -0
- package/dist/node_modules/@platforma-sdk/model/dist/render/util/label.js +16 -0
- package/dist/node_modules/@platforma-sdk/model/dist/render/util/label.js.map +1 -0
- package/dist/node_modules/json-stringify-safe/stringify.js +20 -0
- package/dist/node_modules/json-stringify-safe/stringify.js.map +1 -0
- package/dist/node_modules/zod/lib/index.js +2978 -0
- package/dist/node_modules/zod/lib/index.js.map +1 -0
- package/package.json +4 -4
- package/dist/node_modules/@milaboratories/pf-plots/dist/constants.js +0 -18
- package/dist/node_modules/@milaboratories/pf-plots/dist/constants.js.map +0 -1
|
@@ -1,54 +1,60 @@
|
|
|
1
|
-
import { DISCRETE_TEMPLATES_MAP as E, isMappedAes as
|
|
1
|
+
import { DISCRETE_TEMPLATES_MAP as E, isMappedAes as f } from "../constantsCommon.js";
|
|
2
2
|
import { getDiscreteLayersSettings as C } from "./createChartSettingsForRender/getLayersDataFromForms.js";
|
|
3
3
|
import "../../node_modules/@milaboratories/pf-plots/dist/index.js";
|
|
4
|
+
import "../../node_modules/@milaboratories/pl-model-common/dist/drivers/blob.js";
|
|
5
|
+
import "../../node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/spec.js";
|
|
6
|
+
import "../../node_modules/@milaboratories/pl-model-common/dist/plid.js";
|
|
7
|
+
import "../../node_modules/@milaboratories/pl-model-common/dist/ref.js";
|
|
8
|
+
import "../../node_modules/@platforma-sdk/model/dist/render/util/label.js";
|
|
9
|
+
import "../../node_modules/@milaboratories/pl-error-like/dist/error_like_shape.js";
|
|
4
10
|
import "vue";
|
|
5
11
|
import "../constantsAesthetic.js";
|
|
6
|
-
function
|
|
7
|
-
return t.some((
|
|
8
|
-
var
|
|
9
|
-
const l = (
|
|
10
|
-
return
|
|
12
|
+
function i(t, u, s) {
|
|
13
|
+
return t.some((n) => {
|
|
14
|
+
var d;
|
|
15
|
+
const l = (d = n == null ? void 0 : n.aes) == null ? void 0 : d[u];
|
|
16
|
+
return f(l) && l.type === s;
|
|
11
17
|
});
|
|
12
18
|
}
|
|
13
|
-
function
|
|
19
|
+
function I(t, u, s, n, l, d) {
|
|
14
20
|
var a, S, h;
|
|
15
|
-
const
|
|
21
|
+
const p = {};
|
|
16
22
|
let c = [];
|
|
17
23
|
if (t === "discrete") {
|
|
18
24
|
c = ["primaryGrouping", "secondaryGrouping"];
|
|
19
25
|
const o = C(
|
|
20
26
|
E[u],
|
|
21
|
-
|
|
22
|
-
|
|
27
|
+
s,
|
|
28
|
+
n,
|
|
23
29
|
l,
|
|
24
|
-
|
|
30
|
+
d
|
|
25
31
|
);
|
|
26
32
|
c.forEach((e) => {
|
|
27
|
-
var
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
fill:
|
|
31
|
-
stroke:
|
|
32
|
-
dotShape:
|
|
33
|
-
lineType:
|
|
33
|
+
var m, g;
|
|
34
|
+
const r = (g = (m = l.components[e]) == null ? void 0 : m.selectorStates[0]) == null ? void 0 : g.selectedSource;
|
|
35
|
+
r && (p[r] = {
|
|
36
|
+
fill: i(o, "fillColor", e) || i(o, "dotFill", e),
|
|
37
|
+
stroke: i(o, "lineColor", e),
|
|
38
|
+
dotShape: i(o, "dotShape", e),
|
|
39
|
+
lineType: i(o, "lineShape", e),
|
|
34
40
|
size: !1
|
|
35
41
|
});
|
|
36
42
|
});
|
|
37
43
|
}
|
|
38
44
|
if (t === "scatterplot") {
|
|
39
|
-
const o = l.components.grouping.selectorStates.map((
|
|
40
|
-
c = [...o, ...e], c.forEach((
|
|
41
|
-
|
|
42
|
-
fill:
|
|
45
|
+
const o = l.components.grouping.selectorStates.map((r) => r.selectedSource), e = l.components.shape.selectorStates.map((r) => r.selectedSource);
|
|
46
|
+
c = [...o, ...e], c.forEach((r) => {
|
|
47
|
+
p[r] = {
|
|
48
|
+
fill: r === o[0],
|
|
43
49
|
stroke: !1,
|
|
44
|
-
dotShape:
|
|
50
|
+
dotShape: r === e[0],
|
|
45
51
|
lineType: !1,
|
|
46
52
|
size: !1
|
|
47
53
|
};
|
|
48
54
|
});
|
|
49
55
|
}
|
|
50
56
|
if (t === "scatterplot-umap" && (c = l.components.grouping.selectorStates.map((o) => o.selectedSource), c.forEach((o) => {
|
|
51
|
-
|
|
57
|
+
p[o] = {
|
|
52
58
|
fill: o === c[0],
|
|
53
59
|
stroke: !1,
|
|
54
60
|
dotShape: !1,
|
|
@@ -60,17 +66,17 @@ function M(t, u, r, p, l, f) {
|
|
|
60
66
|
((S = l.components.nodeShape.selectorStates[0]) == null ? void 0 : S.selectedSource) ?? null,
|
|
61
67
|
((h = l.components.lineColor.selectorStates[0]) == null ? void 0 : h.selectedSource) ?? null
|
|
62
68
|
].filter((e) => e !== null), c.forEach((e) => {
|
|
63
|
-
|
|
64
|
-
fill:
|
|
65
|
-
stroke:
|
|
66
|
-
dotShape:
|
|
69
|
+
p[e] = {
|
|
70
|
+
fill: f(s.dendro.dotFill) && s.dendro.dotFill.value === e,
|
|
71
|
+
stroke: f(s.dendro.lineColor) && s.dendro.lineColor.value === e,
|
|
72
|
+
dotShape: f(s.dendro.dotShape) && s.dendro.dotShape.value === e,
|
|
67
73
|
lineType: !1,
|
|
68
74
|
size: !1
|
|
69
75
|
};
|
|
70
76
|
})), t === "histogram") {
|
|
71
77
|
const o = l.components.grouping.selectorStates.map((e) => e.selectedSource);
|
|
72
78
|
o.forEach((e) => {
|
|
73
|
-
|
|
79
|
+
p[e] = {
|
|
74
80
|
fill: e === o[0],
|
|
75
81
|
stroke: !1,
|
|
76
82
|
dotShape: !1,
|
|
@@ -79,9 +85,9 @@ function M(t, u, r, p, l, f) {
|
|
|
79
85
|
};
|
|
80
86
|
});
|
|
81
87
|
}
|
|
82
|
-
return
|
|
88
|
+
return p;
|
|
83
89
|
}
|
|
84
90
|
export {
|
|
85
|
-
|
|
91
|
+
I as getUsedAesInMapping
|
|
86
92
|
};
|
|
87
93
|
//# sourceMappingURL=getUsedAesInMapping.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getUsedAesInMapping.js","sources":["../../../src/GraphMaker/utils/getUsedAesInMapping.ts"],"sourcesContent":["import { ChartType, DiscreteUIState, InputGuide, InputState } from '@milaboratories/pf-plots';\nimport {\n AesType, DISCRETE_TEMPLATES_MAP, DiscreteStatisticsState,\n getDefaultLayersSettings,\n getInitialStatisticsState,\n isMappedAes\n} from '../constantsCommon';\nimport { DiscreteLayersTemplate, LayersTemplate } from '../types';\nimport {\n ChartLayerSettings,\n getDiscreteLayersSettings\n} from './index';\n\nfunction checkLayersByType(layers:ChartLayerSettings[], field:'fillColor'|'dotFill'|'lineColor'|'dotShape'|'lineShape', name:string) {\n return layers.some((item) => {\n const value = item?.aes?.[field];\n return isMappedAes(value) && value.type === name\n })\n}\n\nexport function getUsedAesInMapping (\n chartType:ChartType,\n template:LayersTemplate,\n layersSettings: ReturnType<typeof getDefaultLayersSettings>,\n statisticsSettings: ReturnType<typeof getInitialStatisticsState>,\n optionsState: InputState,\n inputGuide: InputGuide<InputState>,\n) {\n const res:Record<string, Record<AesType, boolean>> = {};\n let groupingSources:string[] = [];\n if (chartType === 'discrete') {\n groupingSources = ['primaryGrouping', 'secondaryGrouping'];\n const layers = getDiscreteLayersSettings(\n DISCRETE_TEMPLATES_MAP[template as DiscreteLayersTemplate],\n layersSettings,\n statisticsSettings as DiscreteStatisticsState,\n optionsState as DiscreteUIState,\n inputGuide\n )\n groupingSources.forEach((name) => {\n const source = optionsState.components[name]?.selectorStates[0]?.selectedSource;\n if (source) {\n res[source] = {\n fill: checkLayersByType(layers, 'fillColor', name) || checkLayersByType(layers, 'dotFill', name),\n stroke: checkLayersByType(layers, 'lineColor', name),\n dotShape: checkLayersByType(layers, 'dotShape', name),\n lineType: checkLayersByType(layers, 'lineShape', name),\n size: false,\n }\n }\n });\n }\n if (chartType === 'scatterplot') {\n const grouping = optionsState.components.grouping.selectorStates.map((state) => state.selectedSource)\n const shape = optionsState.components.shape.selectorStates.map((state) => state.selectedSource)\n groupingSources = [...grouping, ...shape]\n groupingSources.forEach((name) => {\n res[name] = {\n fill: name === grouping[0],\n stroke: false,\n dotShape: name === shape[0],\n lineType: false,\n size: false,\n }\n });\n }\n if (chartType === 'scatterplot-umap') {\n groupingSources = optionsState.components.grouping.selectorStates.map((state) => state.selectedSource)\n groupingSources.forEach((name) => {\n res[name] = {\n fill: name === groupingSources[0],\n stroke: false,\n dotShape: false,\n lineType: false,\n size: false,\n }\n });\n }\n if (chartType === 'dendro') {\n const columns:(string|null)[] = [\n optionsState.components.nodeColor.selectorStates[0]?.selectedSource ?? null,\n optionsState.components.nodeShape.selectorStates[0]?.selectedSource ?? null,\n optionsState.components.lineColor.selectorStates[0]?.selectedSource ?? null,\n ];\n groupingSources = columns.filter((value) => value !== null) as string[];\n groupingSources.forEach((name) => {\n res[name] = {\n fill: isMappedAes(layersSettings.dendro.dotFill) && layersSettings.dendro.dotFill.value === name,\n stroke: isMappedAes(layersSettings.dendro.lineColor) && layersSettings.dendro.lineColor.value === name,\n dotShape: isMappedAes(layersSettings.dendro.dotShape) && layersSettings.dendro.dotShape.value === name,\n lineType: false,\n size: false,\n }\n });\n }\n\n if (chartType === 'histogram') {\n const groupingSources = optionsState.components.grouping.selectorStates.map((state) => state.selectedSource);\n groupingSources.forEach((name) => {\n res[name] = {\n fill: name === groupingSources[0],\n stroke: false,\n dotShape: false,\n lineType: false,\n size: false,\n }\n });\n }\n\n return res;\n}\n"],"names":["checkLayersByType","layers","field","name","item","value","_a","isMappedAes","getUsedAesInMapping","chartType","template","layersSettings","statisticsSettings","optionsState","inputGuide","res","groupingSources","getDiscreteLayersSettings","DISCRETE_TEMPLATES_MAP","source","_b","grouping","state","shape","_c"],"mappings":"
|
|
1
|
+
{"version":3,"file":"getUsedAesInMapping.js","sources":["../../../src/GraphMaker/utils/getUsedAesInMapping.ts"],"sourcesContent":["import { ChartType, DiscreteUIState, InputGuide, InputState } from '@milaboratories/pf-plots';\nimport {\n AesType, DISCRETE_TEMPLATES_MAP, DiscreteStatisticsState,\n getDefaultLayersSettings,\n getInitialStatisticsState,\n isMappedAes\n} from '../constantsCommon';\nimport { DiscreteLayersTemplate, LayersTemplate } from '../types';\nimport {\n ChartLayerSettings,\n getDiscreteLayersSettings\n} from './index';\n\nfunction checkLayersByType(layers:ChartLayerSettings[], field:'fillColor'|'dotFill'|'lineColor'|'dotShape'|'lineShape', name:string) {\n return layers.some((item) => {\n const value = item?.aes?.[field];\n return isMappedAes(value) && value.type === name\n })\n}\n\nexport function getUsedAesInMapping (\n chartType:ChartType,\n template:LayersTemplate,\n layersSettings: ReturnType<typeof getDefaultLayersSettings>,\n statisticsSettings: ReturnType<typeof getInitialStatisticsState>,\n optionsState: InputState,\n inputGuide: InputGuide<InputState>,\n) {\n const res:Record<string, Record<AesType, boolean>> = {};\n let groupingSources:string[] = [];\n if (chartType === 'discrete') {\n groupingSources = ['primaryGrouping', 'secondaryGrouping'];\n const layers = getDiscreteLayersSettings(\n DISCRETE_TEMPLATES_MAP[template as DiscreteLayersTemplate],\n layersSettings,\n statisticsSettings as DiscreteStatisticsState,\n optionsState as DiscreteUIState,\n inputGuide\n )\n groupingSources.forEach((name) => {\n const source = optionsState.components[name]?.selectorStates[0]?.selectedSource;\n if (source) {\n res[source] = {\n fill: checkLayersByType(layers, 'fillColor', name) || checkLayersByType(layers, 'dotFill', name),\n stroke: checkLayersByType(layers, 'lineColor', name),\n dotShape: checkLayersByType(layers, 'dotShape', name),\n lineType: checkLayersByType(layers, 'lineShape', name),\n size: false,\n }\n }\n });\n }\n if (chartType === 'scatterplot') {\n const grouping = optionsState.components.grouping.selectorStates.map((state) => state.selectedSource)\n const shape = optionsState.components.shape.selectorStates.map((state) => state.selectedSource)\n groupingSources = [...grouping, ...shape]\n groupingSources.forEach((name) => {\n res[name] = {\n fill: name === grouping[0],\n stroke: false,\n dotShape: name === shape[0],\n lineType: false,\n size: false,\n }\n });\n }\n if (chartType === 'scatterplot-umap') {\n groupingSources = optionsState.components.grouping.selectorStates.map((state) => state.selectedSource)\n groupingSources.forEach((name) => {\n res[name] = {\n fill: name === groupingSources[0],\n stroke: false,\n dotShape: false,\n lineType: false,\n size: false,\n }\n });\n }\n if (chartType === 'dendro') {\n const columns:(string|null)[] = [\n optionsState.components.nodeColor.selectorStates[0]?.selectedSource ?? null,\n optionsState.components.nodeShape.selectorStates[0]?.selectedSource ?? null,\n optionsState.components.lineColor.selectorStates[0]?.selectedSource ?? null,\n ];\n groupingSources = columns.filter((value) => value !== null) as string[];\n groupingSources.forEach((name) => {\n res[name] = {\n fill: isMappedAes(layersSettings.dendro.dotFill) && layersSettings.dendro.dotFill.value === name,\n stroke: isMappedAes(layersSettings.dendro.lineColor) && layersSettings.dendro.lineColor.value === name,\n dotShape: isMappedAes(layersSettings.dendro.dotShape) && layersSettings.dendro.dotShape.value === name,\n lineType: false,\n size: false,\n }\n });\n }\n\n if (chartType === 'histogram') {\n const groupingSources = optionsState.components.grouping.selectorStates.map((state) => state.selectedSource);\n groupingSources.forEach((name) => {\n res[name] = {\n fill: name === groupingSources[0],\n stroke: false,\n dotShape: false,\n lineType: false,\n size: false,\n }\n });\n }\n\n return res;\n}\n"],"names":["checkLayersByType","layers","field","name","item","value","_a","isMappedAes","getUsedAesInMapping","chartType","template","layersSettings","statisticsSettings","optionsState","inputGuide","res","groupingSources","getDiscreteLayersSettings","DISCRETE_TEMPLATES_MAP","source","_b","grouping","state","shape","_c"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadDefaultSources.d.ts","sourceRoot":"","sources":["../../../src/GraphMaker/utils/loadDefaultSources.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EAET,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"loadDefaultSources.d.ts","sourceRoot":"","sources":["../../../src/GraphMaker/utils/loadDefaultSources.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EAET,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAIjD,KAAK,oBAAoB,CAAC,CAAC,SAAS,SAAS,IAAI;IAC/C,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAA;IACxC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC,qBAAqB,CAAC,CAAA;IAChE,oBAAoB,CAAC,EAAE,mBAAmB,CAAC,sBAAsB,CAAC,CAAA;CACnE,CAAA;AAiCD,wBAAsB,kBAAkB,CACtC,SAAS,EAAC,aAAa,EACvB,cAAc,EAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE,EACjD,mBAAmB,UAAO,GAC1B,OAAO,CAAC,oBAAoB,CAAC,SAAS,CAAC,EAAE,CAAC,CAoF3C"}
|
|
@@ -1,71 +1,76 @@
|
|
|
1
1
|
import "../../node_modules/@milaboratories/pf-plots/dist/index.js";
|
|
2
|
+
import "../../node_modules/@milaboratories/pl-model-common/dist/drivers/blob.js";
|
|
3
|
+
import { readAnnotation as A, Annotation as R } from "../../node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/spec.js";
|
|
4
|
+
import "../../node_modules/@milaboratories/pl-model-common/dist/plid.js";
|
|
5
|
+
import "../../node_modules/@milaboratories/pl-model-common/dist/ref.js";
|
|
6
|
+
import "../../node_modules/@platforma-sdk/model/dist/render/util/label.js";
|
|
7
|
+
import "../../node_modules/@milaboratories/pl-error-like/dist/error_like_shape.js";
|
|
2
8
|
import { toRaw as V } from "vue";
|
|
3
|
-
import { SUBSET_FILTER_KEY as h } from "../constantsCommon.js";
|
|
4
9
|
import { AxisId as S } from "../../node_modules/@milaboratories/pf-plots/dist/spec.js";
|
|
5
|
-
function
|
|
6
|
-
if (typeof
|
|
10
|
+
function T(n, r) {
|
|
11
|
+
if (typeof n > "u")
|
|
7
12
|
return !0;
|
|
8
|
-
const c = Object.keys(
|
|
9
|
-
return typeof
|
|
13
|
+
const c = Object.keys(n);
|
|
14
|
+
return typeof r > "u" ? c.length === 0 : c.every((i) => r[i]);
|
|
10
15
|
}
|
|
11
|
-
function
|
|
12
|
-
return
|
|
16
|
+
function x(n, r, c, i) {
|
|
17
|
+
return r && A(r, R.IsSubset) ? "subset" : i !== void 0 ? "range" : c !== void 0 || n === "Int" || n === "String" ? "equals" : "range";
|
|
13
18
|
}
|
|
14
|
-
async function
|
|
15
|
-
const
|
|
16
|
-
for (const { inputName: e, filterType: d, selectedSource: m, selectedFilterValues: o, selectedFilterRange:
|
|
17
|
-
const { name:
|
|
19
|
+
async function D(n, r, c = !0) {
|
|
20
|
+
const i = [], h = r.filter(({ selectedSource: e }) => "kind" in e && e.kind === "PColumn"), w = r.filter(({ selectedSource: e }) => !("kind" in e && e.kind === "PColumn")), C = [];
|
|
21
|
+
for (const { inputName: e, filterType: d, selectedSource: m, selectedFilterValues: o, selectedFilterRange: y } of h) {
|
|
22
|
+
const { name: s, valueType: f, annotations: F, domain: p } = m, t = await n.pFrameProvider.findColumnBy(s, f, V(F), V(p)), g = e === "filters" || e === "tabBy" || e === "highlight";
|
|
18
23
|
if (t) {
|
|
19
|
-
const
|
|
24
|
+
const a = await n.pFrameProvider.getColumnSpecById(t);
|
|
20
25
|
if (!g)
|
|
21
|
-
|
|
26
|
+
i.push({ inputName: e, selectedSource: t.toCanonicalString() });
|
|
22
27
|
else {
|
|
23
|
-
const
|
|
24
|
-
|
|
28
|
+
const l = d ?? x(f, a, o, y), v = l === "equals" && typeof o > "u" ? [(await n.pFrameProvider.getColumnUniqueValues(t, 1)).values[0]] : o, u = { min: void 0, max: void 0, ...y };
|
|
29
|
+
i.push({
|
|
25
30
|
inputName: e,
|
|
26
|
-
filterType:
|
|
31
|
+
filterType: l,
|
|
27
32
|
selectedSource: t.toCanonicalString(),
|
|
28
33
|
selectedFilterValues: v,
|
|
29
34
|
selectedFilterRange: u
|
|
30
35
|
});
|
|
31
36
|
}
|
|
32
|
-
C.push(...(
|
|
37
|
+
C.push(...(a == null ? void 0 : a.axesSpec.map((l) => ({ spec: l, parentColumn: t }))) ?? []);
|
|
33
38
|
} else
|
|
34
39
|
console.warn(`Not found column for default option: ${JSON.stringify({ inputName: e, selectedSource: m })}`);
|
|
35
40
|
}
|
|
36
|
-
for (const { inputName: e, selectedSource: d, filterType: m, selectedFilterValues: o, selectedFilterRange:
|
|
37
|
-
const
|
|
38
|
-
if (c ||
|
|
41
|
+
for (const { inputName: e, selectedSource: d, filterType: m, selectedFilterValues: o, selectedFilterRange: y } of w) {
|
|
42
|
+
const s = S.fromAxisSpec(d), f = s.toCanonicalString(), F = e === "filters" || e === "tabBy" || e === "highlight", p = F ? m ?? x(s.type, { annotations: d == null ? void 0 : d.annotations }) : void 0, t = C.find((l) => S.fromAxisSpec(l.spec).toCanonicalString() === f), g = F && p === "equals" && typeof o > "u" && (t != null && t.parentColumn) ? [(await n.pFrameProvider.getAxisUniqueValues(s, [t == null ? void 0 : t.parentColumn], 1)).values[0]] : o, a = { min: void 0, max: void 0, ...y };
|
|
43
|
+
if (c || i.push({
|
|
39
44
|
inputName: e,
|
|
40
45
|
filterType: p,
|
|
41
46
|
selectedSource: f,
|
|
42
47
|
selectedFilterValues: g,
|
|
43
|
-
selectedFilterRange:
|
|
48
|
+
selectedFilterRange: a
|
|
44
49
|
}), t)
|
|
45
|
-
|
|
50
|
+
i.push({
|
|
46
51
|
inputName: e,
|
|
47
52
|
filterType: p,
|
|
48
53
|
selectedSource: f,
|
|
49
54
|
selectedFilterValues: g,
|
|
50
|
-
selectedFilterRange:
|
|
55
|
+
selectedFilterRange: a
|
|
51
56
|
});
|
|
52
57
|
else {
|
|
53
|
-
const { spec:
|
|
54
|
-
if (
|
|
55
|
-
const u = (e === "filters" || e === "tabBy") && typeof o > "u" ? [(await
|
|
56
|
-
|
|
58
|
+
const { spec: l, parentColumn: v } = C.find((u) => s.name === u.spec.name && s.type === u.spec.type && T(s.domain, u.spec.domain)) ?? {};
|
|
59
|
+
if (l) {
|
|
60
|
+
const u = (e === "filters" || e === "tabBy") && typeof o > "u" ? [(await n.pFrameProvider.getAxisUniqueValues(S.fromAxisSpec(l), [v], 1)).values[0]] : o;
|
|
61
|
+
i.push({
|
|
57
62
|
inputName: e,
|
|
58
63
|
filterType: p,
|
|
59
|
-
selectedSource: S.fromAxisSpec(
|
|
64
|
+
selectedSource: S.fromAxisSpec(l).toCanonicalString(),
|
|
60
65
|
selectedFilterValues: u,
|
|
61
|
-
selectedFilterRange:
|
|
66
|
+
selectedFilterRange: a
|
|
62
67
|
});
|
|
63
68
|
}
|
|
64
69
|
}
|
|
65
70
|
}
|
|
66
|
-
return
|
|
71
|
+
return i;
|
|
67
72
|
}
|
|
68
73
|
export {
|
|
69
|
-
|
|
74
|
+
D as loadDefaultSources
|
|
70
75
|
};
|
|
71
76
|
//# sourceMappingURL=loadDefaultSources.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadDefaultSources.js","sources":["../../../src/GraphMaker/utils/loadDefaultSources.ts"],"sourcesContent":["import {\n AxisId,\n ChartType,\n ColumnId,\n DemoDataStore,\n InputNamesByChartType,\n SelectorStateFilter\n} from '@milaboratories/pf-plots';\nimport { PredefinedGraphOption } from '../types';\nimport { AxisSpec, PColumnSpec, ValueType } from '@platforma-sdk/model';\nimport { toRaw } from 'vue';\nimport { SUBSET_FILTER_KEY } from '../constantsCommon';\n\ntype LoadedDefaultOptions<T extends ChartType> = {\n inputName: InputNamesByChartType[T],\n selectedSource: string,\n filterType?: SelectorStateFilter['type']\n selectedFilterRange?: SelectorStateFilter['selectedFilterRange']\n selectedFilterValues?: SelectorStateFilter['selectedFilterValues']\n}\n\nfunction domainIsCompatible(domain?:Record<string, string>, otherDomain?:Record<string, string>):boolean {\n if (typeof domain === 'undefined') {\n return true;\n }\n const keys = Object.keys(domain);\n if (typeof otherDomain === 'undefined') {\n return keys.length === 0;\n }\n return keys.every((key) => otherDomain[key]);\n}\n\nfunction getDefaultFilterType(\n valueType:ValueType,\n annotations?:Record<string, string>,\n selectedFilterValues?: SelectorStateFilter['selectedFilterValues'],\n selectedFilterRange?: Partial<SelectorStateFilter['selectedFilterRange']>\n):SelectorStateFilter['type'] {\n if (annotations?.[SUBSET_FILTER_KEY] === 'true') {\n return 'subset';\n }\n if (selectedFilterRange !== undefined) {\n return 'range';\n }\n if (selectedFilterValues !== undefined) {\n return 'equals';\n }\n if (valueType === 'Int' || valueType === 'String') {\n return 'equals';\n }\n return 'range';\n}\nexport async function loadDefaultSources (\n dataStore:DemoDataStore,\n defaultOptions:PredefinedGraphOption<ChartType>[],\n considerAxisDomains = true,\n):Promise<LoadedDefaultOptions<ChartType>[]> {\n const result:LoadedDefaultOptions<ChartType>[] = []\n const defaultColumnStates = defaultOptions.filter(({ selectedSource }) => 'kind' in selectedSource && selectedSource.kind === 'PColumn');\n const defaultAxisStates = defaultOptions.filter(({ selectedSource }) => !('kind' in selectedSource && selectedSource.kind === 'PColumn'));\n\n const allowedAxisSpecs = [] as {spec: AxisSpec, parentColumn:ColumnId}[]; // if default options contain axes - they should be in other default columns\n\n for (const { inputName, filterType, selectedSource, selectedFilterValues, selectedFilterRange } of defaultColumnStates) {\n const { name, valueType, annotations, domain } = selectedSource as PColumnSpec;\n const columnId = await dataStore.pFrameProvider.findColumnBy(name, valueType, toRaw(annotations), toRaw(domain));\n const isFilter = inputName === 'filters' || inputName === 'tabBy' || inputName === 'highlight';\n if (columnId) {\n const spec = await dataStore.pFrameProvider.getColumnSpecById(columnId);\n if (!isFilter) {\n result.push({ inputName, selectedSource: columnId.toCanonicalString()});\n } else {\n const defaultFilterType = filterType ?? getDefaultFilterType(valueType, spec?.annotations, selectedFilterValues, selectedFilterRange);\n const defaultSelectedFilterValue = defaultFilterType === 'equals' && typeof selectedFilterValues === 'undefined'\n ? [(await dataStore.pFrameProvider.getColumnUniqueValues(columnId, 1)).values[0]]\n : selectedFilterValues;\n const defaultFilterRange = {min: undefined, max: undefined, ...selectedFilterRange};\n result.push({\n inputName,\n filterType: defaultFilterType,\n selectedSource: columnId.toCanonicalString(),\n selectedFilterValues: defaultSelectedFilterValue,\n selectedFilterRange: defaultFilterRange as SelectorStateFilter['selectedFilterRange'],\n });\n }\n\n allowedAxisSpecs.push(...spec?.axesSpec.map((spec) => ({spec, parentColumn:columnId})) ?? []);\n } else {\n console.warn(`Not found column for default option: ${JSON.stringify({inputName, selectedSource})}`)\n }\n }\n for (const { inputName, selectedSource, filterType, selectedFilterValues, selectedFilterRange } of defaultAxisStates) {\n const axisId = AxisId.fromAxisSpec(selectedSource as AxisSpec);\n const axisSourceStr = axisId.toCanonicalString();\n const isFilter = inputName === 'filters' || inputName === 'tabBy' || inputName === 'highlight';\n const defaultFilterType = isFilter ? filterType ?? getDefaultFilterType(axisId.type, selectedSource?.annotations) : undefined;\n\n const columnWithExistingAxis = allowedAxisSpecs.find((el) => AxisId.fromAxisSpec(el.spec).toCanonicalString() === axisSourceStr) ;\n const defaultSelectedFilterValues = isFilter && defaultFilterType === 'equals' && typeof selectedFilterValues === 'undefined' && columnWithExistingAxis?.parentColumn\n ? [(await dataStore.pFrameProvider.getAxisUniqueValues(axisId, [columnWithExistingAxis?.parentColumn], 1)).values[0]]\n : selectedFilterValues\n const defaultFilterRange = {min: undefined, max: undefined, ...selectedFilterRange};\n\n if (!considerAxisDomains) {\n result.push({\n inputName,\n filterType: defaultFilterType,\n selectedSource: axisSourceStr,\n selectedFilterValues: defaultSelectedFilterValues,\n selectedFilterRange: defaultFilterRange as SelectorStateFilter['selectedFilterRange'],\n });\n }\n if (columnWithExistingAxis) {\n result.push({\n inputName,\n filterType: defaultFilterType,\n selectedSource: axisSourceStr,\n selectedFilterValues: defaultSelectedFilterValues,\n selectedFilterRange: defaultFilterRange as SelectorStateFilter['selectedFilterRange'],\n });\n } else {\n const { spec: allowedCompatibleAxisSpec, parentColumn } = allowedAxisSpecs.find((el) => {\n return axisId.name === el.spec.name && axisId.type === el.spec.type && domainIsCompatible(axisId.domain, el.spec.domain);\n }) ?? {};\n if (allowedCompatibleAxisSpec) {\n const defaultSelectedFilterValue = (inputName === 'filters' || inputName === 'tabBy') && typeof selectedFilterValues === 'undefined'\n ? [(await dataStore.pFrameProvider.getAxisUniqueValues(AxisId.fromAxisSpec(allowedCompatibleAxisSpec), [parentColumn as ColumnId], 1)).values[0]]\n : selectedFilterValues\n result.push({\n inputName,\n filterType: defaultFilterType,\n selectedSource: AxisId.fromAxisSpec(allowedCompatibleAxisSpec).toCanonicalString(),\n selectedFilterValues: defaultSelectedFilterValue,\n selectedFilterRange: defaultFilterRange as SelectorStateFilter['selectedFilterRange'],\n });\n }\n }\n }\n\n return result;\n}"],"names":["domainIsCompatible","domain","otherDomain","keys","key","getDefaultFilterType","valueType","annotations","selectedFilterValues","selectedFilterRange","SUBSET_FILTER_KEY","loadDefaultSources","dataStore","defaultOptions","considerAxisDomains","result","defaultColumnStates","selectedSource","defaultAxisStates","allowedAxisSpecs","inputName","filterType","name","columnId","toRaw","isFilter","spec","defaultFilterType","defaultSelectedFilterValue","defaultFilterRange","axisId","AxisId","axisSourceStr","columnWithExistingAxis","el","defaultSelectedFilterValues","allowedCompatibleAxisSpec","parentColumn"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"loadDefaultSources.js","sources":["../../../src/GraphMaker/utils/loadDefaultSources.ts"],"sourcesContent":["import {\n AxisId,\n ChartType,\n ColumnId,\n DemoDataStore,\n InputNamesByChartType,\n SelectorStateFilter\n} from '@milaboratories/pf-plots';\nimport { PredefinedGraphOption } from '../types';\nimport { Annotation, AxisSpec, PColumnSpec, readAnnotation, ValueType } from '@platforma-sdk/model';\nimport { toRaw } from 'vue';\n\ntype LoadedDefaultOptions<T extends ChartType> = {\n inputName: InputNamesByChartType[T],\n selectedSource: string,\n filterType?: SelectorStateFilter['type']\n selectedFilterRange?: SelectorStateFilter['selectedFilterRange']\n selectedFilterValues?: SelectorStateFilter['selectedFilterValues']\n}\n\nfunction domainIsCompatible(domain?:Record<string, string>, otherDomain?:Record<string, string>):boolean {\n if (typeof domain === 'undefined') {\n return true;\n }\n const keys = Object.keys(domain);\n if (typeof otherDomain === 'undefined') {\n return keys.length === 0;\n }\n return keys.every((key) => otherDomain[key]);\n}\n\nfunction getDefaultFilterType(\n valueType:ValueType,\n spec: PColumnSpec | null,\n selectedFilterValues?: SelectorStateFilter['selectedFilterValues'],\n selectedFilterRange?: Partial<SelectorStateFilter['selectedFilterRange']>\n):SelectorStateFilter['type'] {\n if (spec && readAnnotation(spec, Annotation.IsSubset)) {\n return 'subset';\n }\n if (selectedFilterRange !== undefined) {\n return 'range';\n }\n if (selectedFilterValues !== undefined) {\n return 'equals';\n }\n if (valueType === 'Int' || valueType === 'String') {\n return 'equals';\n }\n return 'range';\n}\nexport async function loadDefaultSources (\n dataStore:DemoDataStore,\n defaultOptions:PredefinedGraphOption<ChartType>[],\n considerAxisDomains = true,\n):Promise<LoadedDefaultOptions<ChartType>[]> {\n const result:LoadedDefaultOptions<ChartType>[] = []\n const defaultColumnStates = defaultOptions.filter(({ selectedSource }) => 'kind' in selectedSource && selectedSource.kind === 'PColumn');\n const defaultAxisStates = defaultOptions.filter(({ selectedSource }) => !('kind' in selectedSource && selectedSource.kind === 'PColumn'));\n\n const allowedAxisSpecs = [] as {spec: AxisSpec, parentColumn:ColumnId}[]; // if default options contain axes - they should be in other default columns\n\n for (const { inputName, filterType, selectedSource, selectedFilterValues, selectedFilterRange } of defaultColumnStates) {\n const { name, valueType, annotations, domain } = selectedSource as PColumnSpec;\n const columnId = await dataStore.pFrameProvider.findColumnBy(name, valueType, toRaw(annotations), toRaw(domain));\n const isFilter = inputName === 'filters' || inputName === 'tabBy' || inputName === 'highlight';\n if (columnId) {\n const spec = await dataStore.pFrameProvider.getColumnSpecById(columnId);\n if (!isFilter) {\n result.push({ inputName, selectedSource: columnId.toCanonicalString()});\n } else {\n const defaultFilterType = filterType ?? getDefaultFilterType(valueType, spec, selectedFilterValues, selectedFilterRange);\n const defaultSelectedFilterValue = defaultFilterType === 'equals' && typeof selectedFilterValues === 'undefined'\n ? [(await dataStore.pFrameProvider.getColumnUniqueValues(columnId, 1)).values[0]]\n : selectedFilterValues;\n const defaultFilterRange = {min: undefined, max: undefined, ...selectedFilterRange};\n result.push({\n inputName,\n filterType: defaultFilterType,\n selectedSource: columnId.toCanonicalString(),\n selectedFilterValues: defaultSelectedFilterValue,\n selectedFilterRange: defaultFilterRange as SelectorStateFilter['selectedFilterRange'],\n });\n }\n\n allowedAxisSpecs.push(...spec?.axesSpec.map((spec) => ({spec, parentColumn:columnId})) ?? []);\n } else {\n console.warn(`Not found column for default option: ${JSON.stringify({inputName, selectedSource})}`)\n }\n }\n for (const { inputName, selectedSource, filterType, selectedFilterValues, selectedFilterRange } of defaultAxisStates) {\n const axisId = AxisId.fromAxisSpec(selectedSource as AxisSpec);\n const axisSourceStr = axisId.toCanonicalString();\n const isFilter = inputName === 'filters' || inputName === 'tabBy' || inputName === 'highlight';\n const defaultFilterType = isFilter ? filterType ?? getDefaultFilterType(axisId.type, {annotations: selectedSource?.annotations} as PColumnSpec) : undefined;\n\n const columnWithExistingAxis = allowedAxisSpecs.find((el) => AxisId.fromAxisSpec(el.spec).toCanonicalString() === axisSourceStr) ;\n const defaultSelectedFilterValues = isFilter && defaultFilterType === 'equals' && typeof selectedFilterValues === 'undefined' && columnWithExistingAxis?.parentColumn\n ? [(await dataStore.pFrameProvider.getAxisUniqueValues(axisId, [columnWithExistingAxis?.parentColumn], 1)).values[0]]\n : selectedFilterValues\n const defaultFilterRange = {min: undefined, max: undefined, ...selectedFilterRange};\n\n if (!considerAxisDomains) {\n result.push({\n inputName,\n filterType: defaultFilterType,\n selectedSource: axisSourceStr,\n selectedFilterValues: defaultSelectedFilterValues,\n selectedFilterRange: defaultFilterRange as SelectorStateFilter['selectedFilterRange'],\n });\n }\n if (columnWithExistingAxis) {\n result.push({\n inputName,\n filterType: defaultFilterType,\n selectedSource: axisSourceStr,\n selectedFilterValues: defaultSelectedFilterValues,\n selectedFilterRange: defaultFilterRange as SelectorStateFilter['selectedFilterRange'],\n });\n } else {\n const { spec: allowedCompatibleAxisSpec, parentColumn } = allowedAxisSpecs.find((el) => {\n return axisId.name === el.spec.name && axisId.type === el.spec.type && domainIsCompatible(axisId.domain, el.spec.domain);\n }) ?? {};\n if (allowedCompatibleAxisSpec) {\n const defaultSelectedFilterValue = (inputName === 'filters' || inputName === 'tabBy') && typeof selectedFilterValues === 'undefined'\n ? [(await dataStore.pFrameProvider.getAxisUniqueValues(AxisId.fromAxisSpec(allowedCompatibleAxisSpec), [parentColumn as ColumnId], 1)).values[0]]\n : selectedFilterValues\n result.push({\n inputName,\n filterType: defaultFilterType,\n selectedSource: AxisId.fromAxisSpec(allowedCompatibleAxisSpec).toCanonicalString(),\n selectedFilterValues: defaultSelectedFilterValue,\n selectedFilterRange: defaultFilterRange as SelectorStateFilter['selectedFilterRange'],\n });\n }\n }\n }\n\n return result;\n}"],"names":["domainIsCompatible","domain","otherDomain","keys","key","getDefaultFilterType","valueType","spec","selectedFilterValues","selectedFilterRange","readAnnotation","Annotation","loadDefaultSources","dataStore","defaultOptions","considerAxisDomains","result","defaultColumnStates","selectedSource","defaultAxisStates","allowedAxisSpecs","inputName","filterType","name","annotations","columnId","toRaw","isFilter","defaultFilterType","defaultSelectedFilterValue","defaultFilterRange","axisId","AxisId","axisSourceStr","columnWithExistingAxis","el","defaultSelectedFilterValues","allowedCompatibleAxisSpec","parentColumn"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stringify.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DEFAULT_HEIGHT_SMALL as
|
|
1
|
+
import { DEFAULT_HEIGHT_SMALL as g, DEFAULT_HEIGHT as v, DEFAULT_WIDTH_SMALL as L, DEFAULT_WIDTH as S, BLACK as r } from "../constants.js";
|
|
2
2
|
import "../types/common.js";
|
|
3
3
|
import { DiscreteSettingsSchema as b } from "../types/discrete.js";
|
|
4
4
|
import "../types/scatterplot.js";
|
|
@@ -149,37 +149,37 @@ class V extends a {
|
|
|
149
149
|
}
|
|
150
150
|
class q extends a {
|
|
151
151
|
constructor(e) {
|
|
152
|
-
super(), t(this, "type", "stackedBar"), t(this, "normalize", !1), t(this, "aes", {
|
|
152
|
+
super(), t(this, "type", "stackedBar"), t(this, "normalize", !1), t(this, "height"), t(this, "aes", {
|
|
153
153
|
width: "auto",
|
|
154
154
|
lineWidth: 1,
|
|
155
155
|
fillColor: n,
|
|
156
156
|
lineColor: "none",
|
|
157
157
|
opacity: 1
|
|
158
|
-
}), this.normalize = e.normalize ?? !1, this.aes = {
|
|
158
|
+
}), this.normalize = e.normalize ?? !1, this.height = e.height ?? "sum", this.aes = {
|
|
159
159
|
...this.aes,
|
|
160
160
|
...e.aes
|
|
161
161
|
};
|
|
162
162
|
}
|
|
163
163
|
isEqualForCalculation(e) {
|
|
164
|
-
return e.type === "stackedBar" && e.normalize === this.normalize;
|
|
164
|
+
return e.type === "stackedBar" && e.normalize === this.normalize && e.height === this.height;
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
167
|
class W extends a {
|
|
168
168
|
constructor(e) {
|
|
169
|
-
super(), t(this, "type", "stackedArea"), t(this, "normalize", !1), t(this, "showBars", !0), t(this, "aes", {
|
|
169
|
+
super(), t(this, "type", "stackedArea"), t(this, "normalize", !1), t(this, "height"), t(this, "showBars", !0), t(this, "aes", {
|
|
170
170
|
barWidth: "auto",
|
|
171
171
|
lineWidth: 1,
|
|
172
172
|
fillColor: n,
|
|
173
173
|
lineColor: "none",
|
|
174
174
|
barsOpacity: 1,
|
|
175
175
|
areaOpacity: 0.7
|
|
176
|
-
}), this.normalize = e.normalize ?? !1, this.showBars = e.showBars ?? !0, this.aes = {
|
|
176
|
+
}), this.normalize = e.normalize ?? !1, this.height = e.height ?? "sum", this.showBars = e.showBars ?? !0, this.aes = {
|
|
177
177
|
...this.aes,
|
|
178
178
|
...e.aes
|
|
179
179
|
};
|
|
180
180
|
}
|
|
181
181
|
isEqualForCalculation(e) {
|
|
182
|
-
return e.type === "stackedArea" && e.normalize === this.normalize && e.showBars === this.showBars;
|
|
182
|
+
return e.type === "stackedArea" && e.normalize === this.normalize && e.height === this.height && e.showBars === this.showBars;
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
185
|
class P extends a {
|
|
@@ -280,7 +280,7 @@ class ee {
|
|
|
280
280
|
}, this.facetBy = e.facetBy ?? [], this.chartSettings = {
|
|
281
281
|
size: {
|
|
282
282
|
width: ((o = e == null ? void 0 : e.size) == null ? void 0 : o.width) ?? (this.facetBy.length ? L : S),
|
|
283
|
-
height: ((l = e == null ? void 0 : e.size) == null ? void 0 : l.height) ?? (this.facetBy.length ?
|
|
283
|
+
height: ((l = e == null ? void 0 : e.size) == null ? void 0 : l.height) ?? (this.facetBy.length ? g : v),
|
|
284
284
|
outerOffset: ((p = e == null ? void 0 : e.size) == null ? void 0 : p.outerOffset) ?? k,
|
|
285
285
|
innerOffset: ((d = e == null ? void 0 : e.size) == null ? void 0 : d.innerOffset) ?? x.TOP
|
|
286
286
|
},
|
package/dist/node_modules/@milaboratories/miplots4/dist/discrete/DiscreteSettingsImpl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiscreteSettingsImpl.js","sources":["../../../../../../node_modules/@milaboratories/miplots4/src/discrete/DiscreteSettingsImpl.ts"],"sourcesContent":["import { BLACK, DEFAULT_HEIGHT, DEFAULT_HEIGHT_SMALL, DEFAULT_WIDTH, DEFAULT_WIDTH_SMALL } from '../constants';\nimport type {\n AesRecord,\n Color,\n ColumnName,\n DataValue,\n DiscreteSettings,\n FrameType,\n InheritAesDiscrete,\n LegendPosition,\n LineShape,\n Orientation,\n BarLayer as OuterBarLayer,\n BinnedDotsLayer as OuterBinnedDotsLayer,\n BoxLayer as OuterBoxLayer,\n DotLayer as OuterDotLayer,\n ErrorBarLayer as OuterErrorBarLayer,\n LineLayer as OuterLineLayer,\n LogoPlotLayer as OuterLogoPlotLayer,\n PairedPointsLayer as OuterPairedPointsLayer,\n SinaLayer as OuterSinaLayer,\n StackedAreaLayer as OuterStackedAreaLayer,\n StackedBarLayer as OuterStackedBarLayer,\n StatLayer as OuterStatLayer,\n ViolinLayer as OuterViolinLayer,\n PointShape,\n PValueCorrectionMethod,\n SettingsInterface,\n SignificanceLevels,\n StatTestMethod,\n SummaryErrorValue,\n SummaryGroupValue,\n TitlePosition,\n} from '../types';\nimport { DiscreteSettingsSchema } from '../types';\nimport { MIN_MARGIN, PADDINGS } from './constants';\n\nimport lodash from 'lodash';\nimport { exhaustive } from '../utils';\n\nconst DEFAULT_FILL = '#3e9838';\nconst DEFAULT_DOT_SHAPE = '21';\nconst DEFAULT_DOT_SIZE = 3;\n\nabstract class BaseDiscreteLayer {\n abstract type: string;\n abstract isEqualForCalculation(otherLayer: DiscreteLayer): boolean;\n}\n\nexport class BoxLayer extends BaseDiscreteLayer {\n readonly type = 'box';\n readonly stat: {\n upper: number;\n medium: number;\n lower: number;\n k: number;\n } = {\n upper: 0.75,\n medium: 0.5,\n lower: 0.25,\n k: 1.5,\n };\n readonly aes: {\n showOutliers: boolean;\n boxWidth: 'auto' | number;\n dotShape: InheritAesDiscrete | PointShape;\n dotSize: InheritAesDiscrete | number;\n dotFill: InheritAesDiscrete | string;\n lineColor: InheritAesDiscrete | string;\n fillColor: InheritAesDiscrete | string;\n lineWidth: number;\n lineShape: LineShape;\n opacity: number;\n } = {\n showOutliers: true,\n boxWidth: 'auto',\n dotShape: DEFAULT_DOT_SHAPE,\n dotFill: BLACK,\n dotSize: DEFAULT_DOT_SIZE,\n lineColor: BLACK,\n fillColor: DEFAULT_FILL,\n lineWidth: 1,\n lineShape: 'solid',\n opacity: 1,\n };\n\n constructor(layer: OuterBoxLayer) {\n super();\n this.stat = {\n ...this.stat,\n ...layer.stat,\n };\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return (\n otherLayer.type === 'box' &&\n (Object.keys(this.stat) as (keyof BoxLayer['stat'])[]).every(key => this.stat[key] === otherLayer.stat[key])\n );\n }\n}\n\nexport class ViolinLayer extends BaseDiscreteLayer {\n readonly type = 'violin';\n readonly stat: {\n bandwidth: 'auto' | number;\n stepsCount: 'auto' | number;\n trim: boolean;\n } = {\n bandwidth: 'auto',\n stepsCount: 40,\n trim: true,\n };\n readonly aes: {\n width: 'auto' | number;\n lineColor: InheritAesDiscrete | string;\n fillColor: InheritAesDiscrete | string;\n lineWidth: number;\n lineShape: LineShape;\n opacity: number;\n showQuartiles: boolean;\n medianLineStyle: LineShape;\n quartilesLineStyle: LineShape;\n } = {\n width: 'auto',\n lineColor: BLACK,\n fillColor: DEFAULT_FILL,\n lineWidth: 1,\n lineShape: 'solid',\n opacity: 1,\n showQuartiles: true,\n medianLineStyle: 'solid',\n quartilesLineStyle: 'dashed'\n };\n\n constructor(layer: OuterViolinLayer) {\n super();\n this.stat = {\n ...this.stat,\n ...layer.stat,\n };\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return (\n otherLayer.type === 'violin' && (\n this.stat.bandwidth !== otherLayer.stat.bandwidth ||\n this.stat.trim !== otherLayer.stat.trim ||\n this.stat.stepsCount !== otherLayer.stat.stepsCount\n )\n );\n }\n}\n\nexport class DotLayer extends BaseDiscreteLayer {\n readonly type = 'dot';\n readonly aes: {\n showOutliers: boolean;\n jitter: number;\n dotFill: InheritAesDiscrete | string;\n lineColor: InheritAesDiscrete | string;\n dotShape: InheritAesDiscrete | PointShape;\n dotSize: number;\n opacity: number;\n } = {\n showOutliers: true,\n jitter: 0.8,\n lineColor: 'none',\n dotFill: BLACK,\n dotShape: DEFAULT_DOT_SHAPE,\n dotSize: DEFAULT_DOT_SIZE,\n opacity: 1,\n };\n\n constructor(layer: OuterDotLayer) {\n super();\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'dot' && this.aes.showOutliers === otherLayer.aes.showOutliers;\n }\n}\n\nexport class LineLayer extends BaseDiscreteLayer {\n readonly type = 'line';\n readonly pointsValues: SummaryGroupValue;\n readonly emptyGroupValue: number;\n readonly aes: {\n showOutliers: boolean;\n lineWidth: number;\n lineColor: InheritAesDiscrete | string;\n fillColor: InheritAesDiscrete | string;\n lineShape: InheritAesDiscrete | LineShape;\n dotShape: InheritAesDiscrete | PointShape;\n dotSize: number;\n opacity: number;\n } = {\n showOutliers: true,\n lineWidth: 1,\n lineShape: 'solid',\n fillColor: 'none',\n lineColor: BLACK,\n dotShape: DEFAULT_DOT_SHAPE,\n dotSize: DEFAULT_DOT_SIZE,\n opacity: 1,\n };\n\n constructor(layer: OuterLineLayer) {\n super();\n this.pointsValues = layer.pointsValues;\n this.emptyGroupValue = layer.emptyGroupValue ?? 0;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'line' && this.pointsValues === otherLayer.pointsValues && this.emptyGroupValue === otherLayer.emptyGroupValue;\n }\n}\n\nexport class ErrorBarLayer extends BaseDiscreteLayer {\n readonly type = 'errorbar';\n readonly pointsValues: SummaryGroupValue;\n readonly interval: SummaryErrorValue;\n readonly aes: {\n showDots: boolean;\n width: number | 'auto';\n lineWidth: number;\n lineColor: InheritAesDiscrete | string;\n fillColor: InheritAesDiscrete | string;\n dotShape: InheritAesDiscrete | PointShape;\n dotSize: number;\n opacity: number;\n } = {\n showDots: true,\n width: 'auto',\n lineWidth: 1,\n fillColor: 'none',\n lineColor: BLACK,\n dotShape: DEFAULT_DOT_SHAPE,\n dotSize: DEFAULT_DOT_SIZE,\n opacity: 1,\n };\n\n constructor(layer: OuterErrorBarLayer) {\n super();\n this.pointsValues = layer.pointsValues;\n this.interval = layer.interval;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return (\n otherLayer.type === 'errorbar' &&\n this.pointsValues === otherLayer.pointsValues &&\n this.interval === otherLayer.interval\n );\n }\n}\n\nexport class BarLayer extends BaseDiscreteLayer {\n readonly type = 'bar';\n readonly height: 'min' | 'max' | 'median' | 'mean';\n readonly aes: {\n width: number | 'auto';\n lineColor: InheritAesDiscrete | Color;\n fillColor: InheritAesDiscrete | Color;\n lineWidth: number;\n opacity: number;\n } = {\n width: 'auto',\n lineWidth: 1,\n fillColor: 'none',\n lineColor: BLACK,\n opacity: 1,\n };\n\n constructor(layer: OuterBarLayer) {\n super();\n this.height = layer.height ?? 'max';\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'bar' && this.height === otherLayer.height;\n }\n}\n\nexport class StackedBarLayer extends BaseDiscreteLayer {\n readonly type = 'stackedBar';\n readonly normalize: boolean = false;\n readonly aes: {\n width: number | 'auto';\n lineColor: InheritAesDiscrete | Color;\n fillColor: InheritAesDiscrete | Color;\n lineWidth: number;\n opacity: number;\n } = {\n width: 'auto',\n lineWidth: 1,\n fillColor: DEFAULT_FILL,\n lineColor: 'none',\n opacity: 1,\n };\n\n constructor(layer: OuterStackedBarLayer) {\n super();\n this.normalize = layer.normalize ?? false;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'stackedBar' && otherLayer.normalize === this.normalize;\n }\n}\n\nexport class StackedAreaLayer extends BaseDiscreteLayer {\n readonly type = 'stackedArea';\n readonly normalize: boolean = false;\n readonly showBars: boolean = true;\n readonly aes: {\n barWidth: number | 'auto';\n lineColor: InheritAesDiscrete | Color;\n fillColor: InheritAesDiscrete | Color;\n lineWidth: number;\n barsOpacity: number;\n areaOpacity: number;\n } = {\n barWidth: 'auto',\n lineWidth: 1,\n fillColor: DEFAULT_FILL,\n lineColor: 'none',\n barsOpacity: 1,\n areaOpacity: 0.7,\n };\n\n constructor(layer: OuterStackedAreaLayer) {\n super();\n this.normalize = layer.normalize ?? false;\n this.showBars = layer.showBars ?? true;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'stackedArea' && otherLayer.normalize === this.normalize && otherLayer.showBars === this.showBars;\n }\n}\n\nexport class LogoPlotLayer extends BaseDiscreteLayer {\n readonly type = 'logo';\n readonly normalize: boolean = false;\n readonly aes: {\n width: number | 'auto';\n fillColor: Record<string, string> | Color;\n lineColor: Color;\n opacity: number;\n } = {\n width: 'auto',\n fillColor: DEFAULT_FILL,\n lineColor: 'none',\n opacity: 1,\n };\n\n constructor(layer: OuterLogoPlotLayer) {\n super();\n this.normalize = layer.normalize ?? false;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'logo' && otherLayer.normalize === this.normalize;\n }\n}\n\nexport class BinnedDotsLayer extends BaseDiscreteLayer {\n readonly type = 'binnedDots';\n readonly method: 'dotdensity' | 'histodot';\n readonly position: 'stack' | 'jitter';\n readonly keyColumn: ColumnName | null;\n readonly aes: {\n showOutliers: boolean;\n width: number | 'auto';\n lineColor: InheritAesDiscrete | Color;\n fillColor: InheritAesDiscrete | Color;\n dotSize?: number;\n lineWidth: number;\n opacity: number;\n } = {\n showOutliers: true,\n width: 'auto',\n lineWidth: 1,\n fillColor: 'none',\n lineColor: BLACK,\n opacity: 1,\n };\n\n constructor(layer: OuterBinnedDotsLayer) {\n super();\n this.method = layer.method ?? 'dotdensity';\n this.position = layer.position ?? 'stack';\n this.keyColumn = layer.keyColumn ?? null;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return (\n otherLayer.type === 'binnedDots' &&\n this.method === otherLayer.method &&\n this.position === otherLayer.position &&\n this.keyColumn?.value === otherLayer.keyColumn?.value\n );\n }\n}\n\nexport class PairedPointsLayer extends BaseDiscreteLayer {\n readonly type = 'pairedPoints';\n readonly linkColumn: ColumnName;\n readonly aes: {\n showOutliers: boolean;\n lineColor: InheritAesDiscrete | Color;\n lineWidth: number;\n lineShape: LineShape;\n dotFill: InheritAesDiscrete | Color;\n dotSize: number;\n dotShape: PointShape;\n opacity: number;\n } = {\n showOutliers: true,\n lineWidth: 1,\n lineColor: BLACK,\n lineShape: 'solid',\n dotFill: BLACK,\n dotSize: DEFAULT_DOT_SIZE,\n dotShape: DEFAULT_DOT_SHAPE,\n opacity: 1,\n };\n\n constructor(layer: OuterPairedPointsLayer) {\n super();\n this.linkColumn = layer.linkColumn;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return (\n otherLayer.type === 'pairedPoints' &&\n this.aes.showOutliers === otherLayer.aes.showOutliers &&\n this.linkColumn.value === otherLayer.linkColumn.value\n );\n }\n}\n\nexport class SinaLayer extends BaseDiscreteLayer {\n readonly type = 'sina';\n readonly aes: {\n showOutliers: boolean;\n width: number | 'auto';\n dotFill: InheritAesDiscrete | Color;\n dotSize: number;\n dotShape: InheritAesDiscrete | PointShape;\n opacity: number;\n } = {\n showOutliers: true,\n width: 'auto',\n dotFill: DEFAULT_FILL,\n dotSize: DEFAULT_DOT_SIZE,\n dotShape: DEFAULT_DOT_SHAPE,\n opacity: 1,\n };\n\n constructor(layer: OuterSinaLayer) {\n super();\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'sina' && this.aes.showOutliers === otherLayer.aes.showOutliers;\n }\n}\n\nexport class StatLayer extends BaseDiscreteLayer {\n readonly type = 'stat';\n readonly statType: 'overall' | 'referenceGroup' | 'pairwise';\n readonly testMethod: StatTestMethod;\n readonly paired: boolean;\n readonly ns: boolean;\n readonly format: 'significance' | 'pValue';\n readonly referenceGroup: DataValue | null = null;\n readonly correctionMethod: PValueCorrectionMethod | null = null;\n readonly significanceLevels: SignificanceLevels;\n\n constructor(layer: OuterStatLayer) {\n super();\n this.statType = layer.statType;\n this.testMethod = layer.testMethod;\n this.paired = layer.paired ?? false;\n this.ns = layer.ns ?? true;\n this.format = layer.format ?? 'pValue';\n if (this.statType === 'referenceGroup') {\n this.referenceGroup = layer.referenceGroup ?? null;\n }\n if (this.statType === 'referenceGroup' || this.statType === 'pairwise') {\n this.correctionMethod = layer.correctionMethod ?? null;\n }\n this.significanceLevels = {\n one: layer.significanceLevels?.one ?? 0.05,\n two: layer.significanceLevels?.two ?? 0.01,\n three: layer.significanceLevels?.three ?? 0.001,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'stat' && (Object.keys(this) as (keyof StatLayer)[]).every(key => this[key] === otherLayer[key]);\n }\n}\n\nexport type DiscreteLayer =\n | StackedAreaLayer\n | BoxLayer\n | ViolinLayer\n | DotLayer\n | LineLayer\n | ErrorBarLayer\n | BarLayer\n | StackedBarLayer\n | BinnedDotsLayer\n | PairedPointsLayer\n | SinaLayer\n | StatLayer\n | LogoPlotLayer;\n\nexport class DiscreteSettingsImpl implements SettingsInterface {\n readonly id: string;\n readonly type = 'discrete';\n readonly y: ColumnName;\n readonly keyColumn: ColumnName | null;\n readonly primaryGrouping: {\n columnName: ColumnName;\n order?: DataValue[];\n inheritedAes?: AesRecord;\n allowNullGroup?: boolean;\n } | null;\n readonly secondaryGrouping: {\n columnName: ColumnName;\n order?: DataValue[];\n inheritedAes?: AesRecord;\n allowNullGroup?: boolean;\n } | null;\n readonly facetSettings: {\n sharedX: boolean;\n sharedY: boolean;\n order?: Record<string, DataValue[]>; // map with ordered values of columns in \"facetBy\"\n nRows?: number;\n nCols?: number;\n titlePosition?: 'left' | 'right' | 'center';\n } | null;\n readonly facetBy: ColumnName[];\n readonly chartSettings: {\n readonly size: {width: number; height: number, outerOffset: number, innerOffset: number};\n readonly title: {name: string; show: boolean; position: TitlePosition};\n readonly orientation: Orientation;\n readonly yAxis: {\n title: string | ColumnName;\n scale: 'linear' | 'log';\n showGrid: boolean;\n showTicks: boolean;\n hiddenLabels: boolean;\n };\n readonly xAxis: {\n title: string | ColumnName;\n showGrid: boolean;\n linesBetweenCategories: boolean;\n showTicks: boolean;\n labelsPosition: 'center' | '45deg' | '90deg';\n hiddenLabels: boolean;\n };\n readonly frame: {type: FrameType};\n readonly legend: {show: boolean; position: LegendPosition};\n readonly tooltips: {\n box: {show: boolean};\n violin: {show: boolean};\n boxOutliers: {show: boolean};\n line: {show: boolean};\n dot: {show: boolean};\n errorBar: {show: boolean};\n binnedDots: {show: boolean};\n pairedPoints: {show: boolean};\n stackedBar: {show: boolean};\n logo: {show: boolean};\n };\n };\n\n readonly layers: DiscreteLayer[];\n\n constructor(settings: DiscreteSettings) {\n DiscreteSettingsSchema.parse(settings);\n this.id = lodash.uniqueId('settings');\n this.y = settings.y; // throw error if empty or if y.name doesn't exist in input table\n this.keyColumn = settings.keyColumn ?? null;\n this.primaryGrouping = settings.primaryGrouping ?? null; // check columnName\n this.secondaryGrouping = settings.secondaryGrouping ?? null; // check columnName\n this.facetSettings = {\n sharedX: true,\n sharedY: true,\n titlePosition: 'left',\n ...settings.facetSettings,\n };\n this.facetBy = settings.facetBy ?? [];\n this.chartSettings = {\n size: {\n width: settings?.size?.width ?? (this.facetBy.length ? DEFAULT_WIDTH_SMALL : DEFAULT_WIDTH),\n height: settings?.size?.height ?? (this.facetBy.length ? DEFAULT_HEIGHT_SMALL : DEFAULT_HEIGHT),\n outerOffset: settings?.size?.outerOffset ?? MIN_MARGIN,\n innerOffset: settings?.size?.innerOffset ?? PADDINGS.TOP\n },\n title: {\n position: 'center',\n show: true,\n ...settings.title,\n name: settings.title?.name ?? 'Chart',\n },\n orientation: settings.orientation ?? 'vertical',\n yAxis: {\n title: settings.y?.label ?? settings.y.value ?? '',\n scale: 'linear',\n showGrid: true,\n showTicks: true,\n hiddenLabels: false,\n ...settings.yAxis,\n },\n xAxis: {\n title: settings.primaryGrouping?.columnName?.label ?? settings.primaryGrouping?.columnName.value ?? '',\n showGrid: true,\n showTicks: true,\n linesBetweenCategories: true,\n labelsPosition: 'center',\n hiddenLabels: false,\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 box: {show: true},\n violin: {show: true},\n boxOutliers: {show: true},\n line: {show: true},\n errorBar: {show: true},\n dot: {show: true},\n binnedDots: {show: true},\n pairedPoints: {show: true},\n stackedBar: {show: true},\n logo: {show: false},\n ...settings.tooltips,\n },\n };\n this.layers = settings.layers\n .map(layer => {\n if (layer.type === 'box') {\n return new BoxLayer(layer);\n }\n if (layer.type === 'violin') {\n return new ViolinLayer(layer);\n }\n if (layer.type === 'dot') {\n return new DotLayer(layer);\n }\n if (layer.type === 'line') {\n return new LineLayer(layer);\n }\n if (layer.type === 'errorbar') {\n return new ErrorBarLayer(layer);\n }\n if (layer.type === 'bar') {\n return new BarLayer(layer);\n }\n if (layer.type === 'stackedBar') {\n return new StackedBarLayer(layer);\n }\n if (layer.type === 'stackedArea') {\n return new StackedAreaLayer(layer);\n }\n if (layer.type === 'stat') {\n return new StatLayer(layer);\n }\n if (layer.type === 'binnedDots') {\n return new BinnedDotsLayer(layer);\n }\n if (layer.type === 'pairedPoints') {\n return new PairedPointsLayer(layer);\n }\n if (layer.type === 'sina') {\n return new SinaLayer(layer);\n }\n if (layer.type === 'logo') {\n return new LogoPlotLayer(layer);\n }\n exhaustive(layer, 'Unknown layer type');\n })\n .filter(Boolean) as DiscreteLayer[];\n }\n}\n"],"names":["DEFAULT_FILL","DEFAULT_DOT_SHAPE","DEFAULT_DOT_SIZE","BaseDiscreteLayer","BoxLayer","layer","__publicField","BLACK","otherLayer","key","ViolinLayer","DotLayer","LineLayer","ErrorBarLayer","BarLayer","StackedBarLayer","StackedAreaLayer","LogoPlotLayer","BinnedDotsLayer","_a","_b","PairedPointsLayer","SinaLayer","StatLayer","_c","DiscreteSettingsImpl","settings","DiscreteSettingsSchema","lodash","DEFAULT_WIDTH_SMALL","DEFAULT_WIDTH","DEFAULT_HEIGHT_SMALL","DEFAULT_HEIGHT","MIN_MARGIN","_d","PADDINGS","_e","_f","_h","_g","_i","_j","exhaustive"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"DiscreteSettingsImpl.js","sources":["../../../../../../node_modules/@milaboratories/miplots4/src/discrete/DiscreteSettingsImpl.ts"],"sourcesContent":["import { BLACK, DEFAULT_HEIGHT, DEFAULT_HEIGHT_SMALL, DEFAULT_WIDTH, DEFAULT_WIDTH_SMALL } from '../constants';\nimport type {\n AesRecord,\n Color,\n ColumnName,\n DataValue,\n DiscreteSettings,\n FrameType,\n InheritAesDiscrete,\n LegendPosition,\n LineShape,\n Orientation,\n BarLayer as OuterBarLayer,\n BinnedDotsLayer as OuterBinnedDotsLayer,\n BoxLayer as OuterBoxLayer,\n DotLayer as OuterDotLayer,\n ErrorBarLayer as OuterErrorBarLayer,\n LineLayer as OuterLineLayer,\n LogoPlotLayer as OuterLogoPlotLayer,\n PairedPointsLayer as OuterPairedPointsLayer,\n SinaLayer as OuterSinaLayer,\n StackedAreaLayer as OuterStackedAreaLayer,\n StackedBarLayer as OuterStackedBarLayer,\n StatLayer as OuterStatLayer,\n ViolinLayer as OuterViolinLayer,\n PointShape,\n PValueCorrectionMethod,\n SettingsInterface,\n SignificanceLevels,\n StatTestMethod,\n SummaryErrorValue,\n SummaryGroupValue,\n TitlePosition,\n} from '../types';\nimport { DiscreteSettingsSchema } from '../types';\nimport { MIN_MARGIN, PADDINGS } from './constants';\n\nimport lodash from 'lodash';\nimport { exhaustive } from '../utils';\n\nconst DEFAULT_FILL = '#3e9838';\nconst DEFAULT_DOT_SHAPE = '21';\nconst DEFAULT_DOT_SIZE = 3;\n\nabstract class BaseDiscreteLayer {\n abstract type: string;\n abstract isEqualForCalculation(otherLayer: DiscreteLayer): boolean;\n}\n\nexport class BoxLayer extends BaseDiscreteLayer {\n readonly type = 'box';\n readonly stat: {\n upper: number;\n medium: number;\n lower: number;\n k: number;\n } = {\n upper: 0.75,\n medium: 0.5,\n lower: 0.25,\n k: 1.5,\n };\n readonly aes: {\n showOutliers: boolean;\n boxWidth: 'auto' | number;\n dotShape: InheritAesDiscrete | PointShape;\n dotSize: InheritAesDiscrete | number;\n dotFill: InheritAesDiscrete | string;\n lineColor: InheritAesDiscrete | string;\n fillColor: InheritAesDiscrete | string;\n lineWidth: number;\n lineShape: LineShape;\n opacity: number;\n } = {\n showOutliers: true,\n boxWidth: 'auto',\n dotShape: DEFAULT_DOT_SHAPE,\n dotFill: BLACK,\n dotSize: DEFAULT_DOT_SIZE,\n lineColor: BLACK,\n fillColor: DEFAULT_FILL,\n lineWidth: 1,\n lineShape: 'solid',\n opacity: 1,\n };\n\n constructor(layer: OuterBoxLayer) {\n super();\n this.stat = {\n ...this.stat,\n ...layer.stat,\n };\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return (\n otherLayer.type === 'box' &&\n (Object.keys(this.stat) as (keyof BoxLayer['stat'])[]).every(key => this.stat[key] === otherLayer.stat[key])\n );\n }\n}\n\nexport class ViolinLayer extends BaseDiscreteLayer {\n readonly type = 'violin';\n readonly stat: {\n bandwidth: 'auto' | number;\n stepsCount: 'auto' | number;\n trim: boolean;\n } = {\n bandwidth: 'auto',\n stepsCount: 40,\n trim: true,\n };\n readonly aes: {\n width: 'auto' | number;\n lineColor: InheritAesDiscrete | string;\n fillColor: InheritAesDiscrete | string;\n lineWidth: number;\n lineShape: LineShape;\n opacity: number;\n showQuartiles: boolean;\n medianLineStyle: LineShape;\n quartilesLineStyle: LineShape;\n } = {\n width: 'auto',\n lineColor: BLACK,\n fillColor: DEFAULT_FILL,\n lineWidth: 1,\n lineShape: 'solid',\n opacity: 1,\n showQuartiles: true,\n medianLineStyle: 'solid',\n quartilesLineStyle: 'dashed'\n };\n\n constructor(layer: OuterViolinLayer) {\n super();\n this.stat = {\n ...this.stat,\n ...layer.stat,\n };\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return (\n otherLayer.type === 'violin' && (\n this.stat.bandwidth !== otherLayer.stat.bandwidth ||\n this.stat.trim !== otherLayer.stat.trim ||\n this.stat.stepsCount !== otherLayer.stat.stepsCount\n )\n );\n }\n}\n\nexport class DotLayer extends BaseDiscreteLayer {\n readonly type = 'dot';\n readonly aes: {\n showOutliers: boolean;\n jitter: number;\n dotFill: InheritAesDiscrete | string;\n lineColor: InheritAesDiscrete | string;\n dotShape: InheritAesDiscrete | PointShape;\n dotSize: number;\n opacity: number;\n } = {\n showOutliers: true,\n jitter: 0.8,\n lineColor: 'none',\n dotFill: BLACK,\n dotShape: DEFAULT_DOT_SHAPE,\n dotSize: DEFAULT_DOT_SIZE,\n opacity: 1,\n };\n\n constructor(layer: OuterDotLayer) {\n super();\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'dot' && this.aes.showOutliers === otherLayer.aes.showOutliers;\n }\n}\n\nexport class LineLayer extends BaseDiscreteLayer {\n readonly type = 'line';\n readonly pointsValues: SummaryGroupValue;\n readonly emptyGroupValue: number;\n readonly aes: {\n showOutliers: boolean;\n lineWidth: number;\n lineColor: InheritAesDiscrete | string;\n fillColor: InheritAesDiscrete | string;\n lineShape: InheritAesDiscrete | LineShape;\n dotShape: InheritAesDiscrete | PointShape;\n dotSize: number;\n opacity: number;\n } = {\n showOutliers: true,\n lineWidth: 1,\n lineShape: 'solid',\n fillColor: 'none',\n lineColor: BLACK,\n dotShape: DEFAULT_DOT_SHAPE,\n dotSize: DEFAULT_DOT_SIZE,\n opacity: 1,\n };\n\n constructor(layer: OuterLineLayer) {\n super();\n this.pointsValues = layer.pointsValues;\n this.emptyGroupValue = layer.emptyGroupValue ?? 0;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'line' && this.pointsValues === otherLayer.pointsValues && this.emptyGroupValue === otherLayer.emptyGroupValue;\n }\n}\n\nexport class ErrorBarLayer extends BaseDiscreteLayer {\n readonly type = 'errorbar';\n readonly pointsValues: SummaryGroupValue;\n readonly interval: SummaryErrorValue;\n readonly aes: {\n showDots: boolean;\n width: number | 'auto';\n lineWidth: number;\n lineColor: InheritAesDiscrete | string;\n fillColor: InheritAesDiscrete | string;\n dotShape: InheritAesDiscrete | PointShape;\n dotSize: number;\n opacity: number;\n } = {\n showDots: true,\n width: 'auto',\n lineWidth: 1,\n fillColor: 'none',\n lineColor: BLACK,\n dotShape: DEFAULT_DOT_SHAPE,\n dotSize: DEFAULT_DOT_SIZE,\n opacity: 1,\n };\n\n constructor(layer: OuterErrorBarLayer) {\n super();\n this.pointsValues = layer.pointsValues;\n this.interval = layer.interval;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return (\n otherLayer.type === 'errorbar' &&\n this.pointsValues === otherLayer.pointsValues &&\n this.interval === otherLayer.interval\n );\n }\n}\n\nexport class BarLayer extends BaseDiscreteLayer {\n readonly type = 'bar';\n readonly height: 'min' | 'max' | 'median' | 'mean';\n readonly aes: {\n width: number | 'auto';\n lineColor: InheritAesDiscrete | Color;\n fillColor: InheritAesDiscrete | Color;\n lineWidth: number;\n opacity: number;\n } = {\n width: 'auto',\n lineWidth: 1,\n fillColor: 'none',\n lineColor: BLACK,\n opacity: 1,\n };\n\n constructor(layer: OuterBarLayer) {\n super();\n this.height = layer.height ?? 'max';\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'bar' && this.height === otherLayer.height;\n }\n}\n\nexport class StackedBarLayer extends BaseDiscreteLayer {\n readonly type = 'stackedBar';\n readonly normalize: boolean = false;\n readonly height: 'sum' | 'min' | 'max' | 'median' | 'mean';\n readonly aes: {\n width: number | 'auto';\n lineColor: InheritAesDiscrete | Color;\n fillColor: InheritAesDiscrete | Color;\n lineWidth: number;\n opacity: number;\n } = {\n width: 'auto',\n lineWidth: 1,\n fillColor: DEFAULT_FILL,\n lineColor: 'none',\n opacity: 1,\n };\n\n constructor(layer: OuterStackedBarLayer) {\n super();\n this.normalize = layer.normalize ?? false;\n this.height = layer.height ?? 'sum';\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'stackedBar' && otherLayer.normalize === this.normalize && otherLayer.height === this.height;\n }\n}\n\nexport class StackedAreaLayer extends BaseDiscreteLayer {\n readonly type = 'stackedArea';\n readonly normalize: boolean = false;\n readonly height: 'sum' | 'min' | 'max' | 'median' | 'mean';\n readonly showBars: boolean = true;\n readonly aes: {\n barWidth: number | 'auto';\n lineColor: InheritAesDiscrete | Color;\n fillColor: InheritAesDiscrete | Color;\n lineWidth: number;\n barsOpacity: number;\n areaOpacity: number;\n } = {\n barWidth: 'auto',\n lineWidth: 1,\n fillColor: DEFAULT_FILL,\n lineColor: 'none',\n barsOpacity: 1,\n areaOpacity: 0.7,\n };\n\n constructor(layer: OuterStackedAreaLayer) {\n super();\n this.normalize = layer.normalize ?? false;\n this.height = layer.height ?? 'sum';\n this.showBars = layer.showBars ?? true;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'stackedArea' && otherLayer.normalize === this.normalize && otherLayer.height === this.height && otherLayer.showBars === this.showBars;\n }\n}\n\nexport class LogoPlotLayer extends BaseDiscreteLayer {\n readonly type = 'logo';\n readonly normalize: boolean = false;\n readonly aes: {\n width: number | 'auto';\n fillColor: Record<string, string> | Color;\n lineColor: Color;\n opacity: number;\n } = {\n width: 'auto',\n fillColor: DEFAULT_FILL,\n lineColor: 'none',\n opacity: 1,\n };\n\n constructor(layer: OuterLogoPlotLayer) {\n super();\n this.normalize = layer.normalize ?? false;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'logo' && otherLayer.normalize === this.normalize;\n }\n}\n\nexport class BinnedDotsLayer extends BaseDiscreteLayer {\n readonly type = 'binnedDots';\n readonly method: 'dotdensity' | 'histodot';\n readonly position: 'stack' | 'jitter';\n readonly keyColumn: ColumnName | null;\n readonly aes: {\n showOutliers: boolean;\n width: number | 'auto';\n lineColor: InheritAesDiscrete | Color;\n fillColor: InheritAesDiscrete | Color;\n dotSize?: number;\n lineWidth: number;\n opacity: number;\n } = {\n showOutliers: true,\n width: 'auto',\n lineWidth: 1,\n fillColor: 'none',\n lineColor: BLACK,\n opacity: 1,\n };\n\n constructor(layer: OuterBinnedDotsLayer) {\n super();\n this.method = layer.method ?? 'dotdensity';\n this.position = layer.position ?? 'stack';\n this.keyColumn = layer.keyColumn ?? null;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return (\n otherLayer.type === 'binnedDots' &&\n this.method === otherLayer.method &&\n this.position === otherLayer.position &&\n this.keyColumn?.value === otherLayer.keyColumn?.value\n );\n }\n}\n\nexport class PairedPointsLayer extends BaseDiscreteLayer {\n readonly type = 'pairedPoints';\n readonly linkColumn: ColumnName;\n readonly aes: {\n showOutliers: boolean;\n lineColor: InheritAesDiscrete | Color;\n lineWidth: number;\n lineShape: LineShape;\n dotFill: InheritAesDiscrete | Color;\n dotSize: number;\n dotShape: PointShape;\n opacity: number;\n } = {\n showOutliers: true,\n lineWidth: 1,\n lineColor: BLACK,\n lineShape: 'solid',\n dotFill: BLACK,\n dotSize: DEFAULT_DOT_SIZE,\n dotShape: DEFAULT_DOT_SHAPE,\n opacity: 1,\n };\n\n constructor(layer: OuterPairedPointsLayer) {\n super();\n this.linkColumn = layer.linkColumn;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return (\n otherLayer.type === 'pairedPoints' &&\n this.aes.showOutliers === otherLayer.aes.showOutliers &&\n this.linkColumn.value === otherLayer.linkColumn.value\n );\n }\n}\n\nexport class SinaLayer extends BaseDiscreteLayer {\n readonly type = 'sina';\n readonly aes: {\n showOutliers: boolean;\n width: number | 'auto';\n dotFill: InheritAesDiscrete | Color;\n dotSize: number;\n dotShape: InheritAesDiscrete | PointShape;\n opacity: number;\n } = {\n showOutliers: true,\n width: 'auto',\n dotFill: DEFAULT_FILL,\n dotSize: DEFAULT_DOT_SIZE,\n dotShape: DEFAULT_DOT_SHAPE,\n opacity: 1,\n };\n\n constructor(layer: OuterSinaLayer) {\n super();\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'sina' && this.aes.showOutliers === otherLayer.aes.showOutliers;\n }\n}\n\nexport class StatLayer extends BaseDiscreteLayer {\n readonly type = 'stat';\n readonly statType: 'overall' | 'referenceGroup' | 'pairwise';\n readonly testMethod: StatTestMethod;\n readonly paired: boolean;\n readonly ns: boolean;\n readonly format: 'significance' | 'pValue';\n readonly referenceGroup: DataValue | null = null;\n readonly correctionMethod: PValueCorrectionMethod | null = null;\n readonly significanceLevels: SignificanceLevels;\n\n constructor(layer: OuterStatLayer) {\n super();\n this.statType = layer.statType;\n this.testMethod = layer.testMethod;\n this.paired = layer.paired ?? false;\n this.ns = layer.ns ?? true;\n this.format = layer.format ?? 'pValue';\n if (this.statType === 'referenceGroup') {\n this.referenceGroup = layer.referenceGroup ?? null;\n }\n if (this.statType === 'referenceGroup' || this.statType === 'pairwise') {\n this.correctionMethod = layer.correctionMethod ?? null;\n }\n this.significanceLevels = {\n one: layer.significanceLevels?.one ?? 0.05,\n two: layer.significanceLevels?.two ?? 0.01,\n three: layer.significanceLevels?.three ?? 0.001,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'stat' && (Object.keys(this) as (keyof StatLayer)[]).every(key => this[key] === otherLayer[key]);\n }\n}\n\nexport type DiscreteLayer =\n | StackedAreaLayer\n | BoxLayer\n | ViolinLayer\n | DotLayer\n | LineLayer\n | ErrorBarLayer\n | BarLayer\n | StackedBarLayer\n | BinnedDotsLayer\n | PairedPointsLayer\n | SinaLayer\n | StatLayer\n | LogoPlotLayer;\n\nexport class DiscreteSettingsImpl implements SettingsInterface {\n readonly id: string;\n readonly type = 'discrete';\n readonly y: ColumnName;\n readonly keyColumn: ColumnName | null;\n readonly primaryGrouping: {\n columnName: ColumnName;\n order?: DataValue[];\n inheritedAes?: AesRecord;\n allowNullGroup?: boolean;\n } | null;\n readonly secondaryGrouping: {\n columnName: ColumnName;\n order?: DataValue[];\n inheritedAes?: AesRecord;\n allowNullGroup?: boolean;\n } | null;\n readonly facetSettings: {\n sharedX: boolean;\n sharedY: boolean;\n order?: Record<string, DataValue[]>; // map with ordered values of columns in \"facetBy\"\n nRows?: number;\n nCols?: number;\n titlePosition?: 'left' | 'right' | 'center';\n } | null;\n readonly facetBy: ColumnName[];\n readonly chartSettings: {\n readonly size: {width: number; height: number, outerOffset: number, innerOffset: number};\n readonly title: {name: string; show: boolean; position: TitlePosition};\n readonly orientation: Orientation;\n readonly yAxis: {\n title: string | ColumnName;\n scale: 'linear' | 'log';\n showGrid: boolean;\n showTicks: boolean;\n hiddenLabels: boolean;\n };\n readonly xAxis: {\n title: string | ColumnName;\n showGrid: boolean;\n linesBetweenCategories: boolean;\n showTicks: boolean;\n labelsPosition: 'center' | '45deg' | '90deg';\n hiddenLabels: boolean;\n };\n readonly frame: {type: FrameType};\n readonly legend: {show: boolean; position: LegendPosition};\n readonly tooltips: {\n box: {show: boolean};\n violin: {show: boolean};\n boxOutliers: {show: boolean};\n line: {show: boolean};\n dot: {show: boolean};\n errorBar: {show: boolean};\n binnedDots: {show: boolean};\n pairedPoints: {show: boolean};\n stackedBar: {show: boolean};\n logo: {show: boolean};\n };\n };\n\n readonly layers: DiscreteLayer[];\n\n constructor(settings: DiscreteSettings) {\n DiscreteSettingsSchema.parse(settings);\n this.id = lodash.uniqueId('settings');\n this.y = settings.y; // throw error if empty or if y.name doesn't exist in input table\n this.keyColumn = settings.keyColumn ?? null;\n this.primaryGrouping = settings.primaryGrouping ?? null; // check columnName\n this.secondaryGrouping = settings.secondaryGrouping ?? null; // check columnName\n this.facetSettings = {\n sharedX: true,\n sharedY: true,\n titlePosition: 'left',\n ...settings.facetSettings,\n };\n this.facetBy = settings.facetBy ?? [];\n this.chartSettings = {\n size: {\n width: settings?.size?.width ?? (this.facetBy.length ? DEFAULT_WIDTH_SMALL : DEFAULT_WIDTH),\n height: settings?.size?.height ?? (this.facetBy.length ? DEFAULT_HEIGHT_SMALL : DEFAULT_HEIGHT),\n outerOffset: settings?.size?.outerOffset ?? MIN_MARGIN,\n innerOffset: settings?.size?.innerOffset ?? PADDINGS.TOP\n },\n title: {\n position: 'center',\n show: true,\n ...settings.title,\n name: settings.title?.name ?? 'Chart',\n },\n orientation: settings.orientation ?? 'vertical',\n yAxis: {\n title: settings.y?.label ?? settings.y.value ?? '',\n scale: 'linear',\n showGrid: true,\n showTicks: true,\n hiddenLabels: false,\n ...settings.yAxis,\n },\n xAxis: {\n title: settings.primaryGrouping?.columnName?.label ?? settings.primaryGrouping?.columnName.value ?? '',\n showGrid: true,\n showTicks: true,\n linesBetweenCategories: true,\n labelsPosition: 'center',\n hiddenLabels: false,\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 box: {show: true},\n violin: {show: true},\n boxOutliers: {show: true},\n line: {show: true},\n errorBar: {show: true},\n dot: {show: true},\n binnedDots: {show: true},\n pairedPoints: {show: true},\n stackedBar: {show: true},\n logo: {show: false},\n ...settings.tooltips,\n },\n };\n this.layers = settings.layers\n .map(layer => {\n if (layer.type === 'box') {\n return new BoxLayer(layer);\n }\n if (layer.type === 'violin') {\n return new ViolinLayer(layer);\n }\n if (layer.type === 'dot') {\n return new DotLayer(layer);\n }\n if (layer.type === 'line') {\n return new LineLayer(layer);\n }\n if (layer.type === 'errorbar') {\n return new ErrorBarLayer(layer);\n }\n if (layer.type === 'bar') {\n return new BarLayer(layer);\n }\n if (layer.type === 'stackedBar') {\n return new StackedBarLayer(layer);\n }\n if (layer.type === 'stackedArea') {\n return new StackedAreaLayer(layer);\n }\n if (layer.type === 'stat') {\n return new StatLayer(layer);\n }\n if (layer.type === 'binnedDots') {\n return new BinnedDotsLayer(layer);\n }\n if (layer.type === 'pairedPoints') {\n return new PairedPointsLayer(layer);\n }\n if (layer.type === 'sina') {\n return new SinaLayer(layer);\n }\n if (layer.type === 'logo') {\n return new LogoPlotLayer(layer);\n }\n exhaustive(layer, 'Unknown layer type');\n })\n .filter(Boolean) as DiscreteLayer[];\n }\n}\n"],"names":["DEFAULT_FILL","DEFAULT_DOT_SHAPE","DEFAULT_DOT_SIZE","BaseDiscreteLayer","BoxLayer","layer","__publicField","BLACK","otherLayer","key","ViolinLayer","DotLayer","LineLayer","ErrorBarLayer","BarLayer","StackedBarLayer","StackedAreaLayer","LogoPlotLayer","BinnedDotsLayer","_a","_b","PairedPointsLayer","SinaLayer","StatLayer","_c","DiscreteSettingsImpl","settings","DiscreteSettingsSchema","lodash","DEFAULT_WIDTH_SMALL","DEFAULT_WIDTH","DEFAULT_HEIGHT_SMALL","DEFAULT_HEIGHT","MIN_MARGIN","_d","PADDINGS","_e","_f","_h","_g","_i","_j","exhaustive"],"mappings":"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","x_google_ignoreList":[0]}
|