@milaboratories/graph-maker 1.1.227 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -8
- package/dist/assets/ui.css +1 -0
- package/dist/components/AesSettings/AesDataMappingDiscrete.css +1 -0
- package/dist/components/AesSettings/AesDataMappingDiscrete.vue3.js +1 -1
- package/dist/components/AesSettings/DiscreteRow.css +1 -0
- package/dist/components/AesSettings/DiscreteRow.vue3.js +1 -1
- package/dist/components/ChartErrorNotificationAlert.css +1 -0
- package/dist/components/ChartErrorNotificationAlert.vue3.js +1 -1
- package/dist/components/GraphStatusScreen.css +1 -0
- package/dist/components/GraphStatusScreen.vue3.js +1 -1
- package/dist/components/LassoControls/index.css +1 -0
- package/dist/components/LassoControls/index.vue3.js +1 -1
- package/dist/components/ReorderForm.css +1 -0
- package/dist/components/ReorderForm.vue3.js +1 -1
- package/dist/components/TransitionSlidePanel.css +1 -0
- package/dist/components/TransitionSlidePanel.vue3.js +1 -1
- package/dist/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js +2 -7
- package/dist/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js.map +1 -1
- package/dist/forms/DataMappingForm/DiscreteForm.vue.js +26 -32
- package/dist/forms/DataMappingForm/DiscreteForm.vue.js.map +1 -1
- package/dist/forms/DataMappingForm/Layout/OptionsList.css +1 -0
- package/dist/forms/DataMappingForm/Layout/OptionsList.vue3.js +1 -1
- package/dist/forms/LayersForm/AesSelector.vue.js +1 -1
- package/dist/forms/LayersForm/DotSizeSelector.css +1 -0
- package/dist/forms/LayersForm/DotSizeSelector.vue3.js +1 -1
- package/dist/forms/LayersForm/Layer/scatterplot/Scatter.vue.js +1 -1
- package/dist/forms/LayersForm/Layer/scatterplot-umap/Scatter.vue.js +1 -1
- package/dist/forms/StatisticsForm/DiscreteStatisticsForm.vue.js +15 -20
- package/dist/forms/StatisticsForm/DiscreteStatisticsForm.vue.js.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.vue.js +36 -41
- package/dist/index.vue.js.map +1 -1
- package/dist/store.js +17 -17
- package/dist/store.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeBubbleSettings.js +19 -25
- package/dist/utils/createChartSettingsForRender/composeBubbleSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeDiscreteSettings.js +15 -20
- package/dist/utils/createChartSettingsForRender/composeDiscreteSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.js +23 -29
- package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeHistogramSettings.js +22 -27
- package/dist/utils/createChartSettingsForRender/composeHistogramSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeScatterplotSettings.js +22 -25
- package/dist/utils/createChartSettingsForRender/composeScatterplotSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js +19 -24
- package/dist/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js.map +1 -1
- package/dist/utils/getUsedAesInMapping.js +34 -40
- package/dist/utils/getUsedAesInMapping.js.map +1 -1
- package/package.json +11 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composeHeatmapSettings.js","sources":["../../../src/utils/createChartSettingsForRender/composeHeatmapSettings.ts"],"sourcesContent":["import type { HeatmapSettings } from '@milaboratories/miplots4';\nimport { PALETTE_MAP } from '../../constantsAesthetic';\nimport type { DefaultPalettes, HeatmapLayerTemplate, ReactiveState } from '../../types';\nimport { getAxesDataFromForms } from '../index';\n\nexport function composeHeatmapSettings(\n settings: HeatmapSettings,\n reactiveState: ReactiveState,\n defaultPalette: DefaultPalettes,\n) {\n const aes = {} as Record<string, unknown>;\n const palette = reactiveState.dataBindAes[settings.valueColumn.value]?.palette;\n if (settings?.valueType !== 'discrete') {\n if (reactiveState.template === 'heatmapClustered') {\n const layer = reactiveState.layersSettings.heatmapClustered;\n if (!layer.disableClusteringX) {\n settings.dendrogramX = {\n fillNA: 0,\n showNodes: false,\n hidden: !layer.dendrogramX,\n };\n }\n if (!layer.disableClusteringY) {\n settings.dendrogramY = {\n fillNA: 0,\n position: 'right',\n showNodes: false,\n hidden: !layer.dendrogramY,\n };\n }\n }\n aes.colorsList = PALETTE_MAP[palette ?? defaultPalette.continuous].colors;\n } else {\n aes.colorsList = PALETTE_MAP[palette ?? 'bright'].colors;\n }\n\n settings.aes = aes;\n\n settings.annotations?.forEach((annotationSchema) => {\n const source = annotationSchema.valueColumn.value;\n const palette = reactiveState.dataBindAes[source]?.palette;\n\n annotationSchema.colors = PALETTE_MAP[palette ?? (annotationSchema.type === 'discrete' ? defaultPalette.categorical : defaultPalette.continuous)].colors;\n });\n Object.assign(\n settings,\n getAxesDataFromForms(reactiveState.axesSettings, reactiveState.chartType),\n );\n\n if (reactiveState.axesSettings.axisX.cellSize !== null && settings.size) {\n settings.size.cellWidth = reactiveState.axesSettings.axisX.cellSize * (reactiveState.chartScale / 100);\n }\n if (reactiveState.axesSettings.axisY.cellSize !== null && settings.size) {\n settings.size.cellHeight = reactiveState.axesSettings.axisY.cellSize * (reactiveState.chartScale / 100);\n }\n if (reactiveState.template === 'heatmapClustered' && settings?.valueType !== 'discrete') {\n (settings.facetSettings as HeatmapSettings['facetSettings'])!.sharedX = false;\n (settings.facetSettings as HeatmapSettings['facetSettings'])!.sharedY = false;\n }\n\n const template = reactiveState.template as HeatmapLayerTemplate;\n const layerSettings = reactiveState.layersSettings[template];\n\n settings.NAValueAs = layerSettings.NAValueAs;\n if (settings.valueType === 'continuous' && layerSettings.normalizationDirection) {\n settings.normalization = {\n method: layerSettings.normalizationMethod,\n direction: layerSettings.normalizationDirection,\n };\n }\n\n if (settings.valueType === 'continuous' && (layerSettings.aggregateByX || layerSettings.aggregateByY)) {\n settings.aggregation = {\n x: layerSettings.aggregateByX && settings.xGroupBy && settings.xGroupBy.length > 0,\n y: layerSettings.aggregateByY && settings.yGroupBy && settings.yGroupBy.length > 0,\n method: layerSettings.aggregationMethod,\n };\n }\n\n settings.annotations?.forEach((annotation) => {\n if (annotation.axis === 'x') {\n annotation.titlePosition = reactiveState.axesSettings.axisX.annotationTitlePosition === 'hidden' ? undefined : reactiveState.axesSettings.axisX.annotationTitlePosition;\n annotation.showTitle = reactiveState.axesSettings.axisX.annotationTitlePosition !== 'hidden';\n } else {\n annotation.titlePosition = reactiveState.axesSettings.axisY.annotationTitlePosition === 'hidden' ? undefined : reactiveState.axesSettings.axisY.annotationTitlePosition;\n annotation.showTitle = reactiveState.axesSettings.axisY.annotationTitlePosition !== 'hidden';\n }\n });\n\n if (reactiveState.axesSettings.other.canvasRenderMode) {\n settings.cellsRenderingMode = 'canvas';\n }\n\n return settings;\n}\n"],"names":["composeHeatmapSettings","settings","reactiveState","defaultPalette","aes","palette","_a","layer","PALETTE_MAP","_b","annotationSchema","source","getAxesDataFromForms","template","layerSettings","_c","annotation"],"mappings":"
|
|
1
|
+
{"version":3,"file":"composeHeatmapSettings.js","sources":["../../../src/utils/createChartSettingsForRender/composeHeatmapSettings.ts"],"sourcesContent":["import type { HeatmapSettings } from '@milaboratories/miplots4';\nimport { PALETTE_MAP } from '../../constantsAesthetic';\nimport type { DefaultPalettes, HeatmapLayerTemplate, ReactiveState } from '../../types';\nimport { getAxesDataFromForms } from '../index';\n\nexport function composeHeatmapSettings(\n settings: HeatmapSettings,\n reactiveState: ReactiveState,\n defaultPalette: DefaultPalettes,\n) {\n const aes = {} as Record<string, unknown>;\n const palette = reactiveState.dataBindAes[settings.valueColumn.value]?.palette;\n if (settings?.valueType !== 'discrete') {\n if (reactiveState.template === 'heatmapClustered') {\n const layer = reactiveState.layersSettings.heatmapClustered;\n if (!layer.disableClusteringX) {\n settings.dendrogramX = {\n fillNA: 0,\n showNodes: false,\n hidden: !layer.dendrogramX,\n };\n }\n if (!layer.disableClusteringY) {\n settings.dendrogramY = {\n fillNA: 0,\n position: 'right',\n showNodes: false,\n hidden: !layer.dendrogramY,\n };\n }\n }\n aes.colorsList = PALETTE_MAP[palette ?? defaultPalette.continuous].colors;\n } else {\n aes.colorsList = PALETTE_MAP[palette ?? 'bright'].colors;\n }\n\n settings.aes = aes;\n\n settings.annotations?.forEach((annotationSchema) => {\n const source = annotationSchema.valueColumn.value;\n const palette = reactiveState.dataBindAes[source]?.palette;\n\n annotationSchema.colors = PALETTE_MAP[palette ?? (annotationSchema.type === 'discrete' ? defaultPalette.categorical : defaultPalette.continuous)].colors;\n });\n Object.assign(\n settings,\n getAxesDataFromForms(reactiveState.axesSettings, reactiveState.chartType),\n );\n\n if (reactiveState.axesSettings.axisX.cellSize !== null && settings.size) {\n settings.size.cellWidth = reactiveState.axesSettings.axisX.cellSize * (reactiveState.chartScale / 100);\n }\n if (reactiveState.axesSettings.axisY.cellSize !== null && settings.size) {\n settings.size.cellHeight = reactiveState.axesSettings.axisY.cellSize * (reactiveState.chartScale / 100);\n }\n if (reactiveState.template === 'heatmapClustered' && settings?.valueType !== 'discrete') {\n (settings.facetSettings as HeatmapSettings['facetSettings'])!.sharedX = false;\n (settings.facetSettings as HeatmapSettings['facetSettings'])!.sharedY = false;\n }\n\n const template = reactiveState.template as HeatmapLayerTemplate;\n const layerSettings = reactiveState.layersSettings[template];\n\n settings.NAValueAs = layerSettings.NAValueAs;\n if (settings.valueType === 'continuous' && layerSettings.normalizationDirection) {\n settings.normalization = {\n method: layerSettings.normalizationMethod,\n direction: layerSettings.normalizationDirection,\n };\n }\n\n if (settings.valueType === 'continuous' && (layerSettings.aggregateByX || layerSettings.aggregateByY)) {\n settings.aggregation = {\n x: layerSettings.aggregateByX && settings.xGroupBy && settings.xGroupBy.length > 0,\n y: layerSettings.aggregateByY && settings.yGroupBy && settings.yGroupBy.length > 0,\n method: layerSettings.aggregationMethod,\n };\n }\n\n settings.annotations?.forEach((annotation) => {\n if (annotation.axis === 'x') {\n annotation.titlePosition = reactiveState.axesSettings.axisX.annotationTitlePosition === 'hidden' ? undefined : reactiveState.axesSettings.axisX.annotationTitlePosition;\n annotation.showTitle = reactiveState.axesSettings.axisX.annotationTitlePosition !== 'hidden';\n } else {\n annotation.titlePosition = reactiveState.axesSettings.axisY.annotationTitlePosition === 'hidden' ? undefined : reactiveState.axesSettings.axisY.annotationTitlePosition;\n annotation.showTitle = reactiveState.axesSettings.axisY.annotationTitlePosition !== 'hidden';\n }\n });\n\n if (reactiveState.axesSettings.other.canvasRenderMode) {\n settings.cellsRenderingMode = 'canvas';\n }\n\n return settings;\n}\n"],"names":["composeHeatmapSettings","settings","reactiveState","defaultPalette","aes","palette","_a","layer","PALETTE_MAP","_b","annotationSchema","source","getAxesDataFromForms","template","layerSettings","_c","annotation"],"mappings":";;AAKO,SAASA,EACdC,GACAC,GACAC,GACA;;AACA,QAAMC,IAAM,CAAA,GACNC,KAAUC,IAAAJ,EAAc,YAAYD,EAAS,YAAY,KAAK,MAApD,gBAAAK,EAAuD;AACvE,OAAIL,KAAA,gBAAAA,EAAU,eAAc,YAAY;AACtC,QAAIC,EAAc,aAAa,oBAAoB;AACjD,YAAMK,IAAQL,EAAc,eAAe;AAC3C,MAAKK,EAAM,uBACTN,EAAS,cAAc;AAAA,QACrB,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,QAAQ,CAACM,EAAM;AAAA,MAAA,IAGdA,EAAM,uBACTN,EAAS,cAAc;AAAA,QACrB,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,WAAW;AAAA,QACX,QAAQ,CAACM,EAAM;AAAA,MAAA;AAAA,IAGrB;AACA,IAAAH,EAAI,aAAaI,EAAYH,KAAWF,EAAe,UAAU,EAAE;AAAA,EACrE;AACE,IAAAC,EAAI,aAAaI,EAAYH,KAAW,QAAQ,EAAE;AAGpD,EAAAJ,EAAS,MAAMG,IAEfK,IAAAR,EAAS,gBAAT,QAAAQ,EAAsB,QAAQ,CAACC,MAAqB;;AAClD,UAAMC,IAASD,EAAiB,YAAY,OACtCL,KAAUC,IAAAJ,EAAc,YAAYS,CAAM,MAAhC,gBAAAL,EAAmC;AAEnD,IAAAI,EAAiB,SAASF,EAAYH,MAAYK,EAAiB,SAAS,aAAaP,EAAe,cAAcA,EAAe,WAAW,EAAE;AAAA,EACpJ,IACA,OAAO;AAAA,IACLF;AAAA,IACAW,EAAqBV,EAAc,cAAcA,EAAc,SAAS;AAAA,EAAA,GAGtEA,EAAc,aAAa,MAAM,aAAa,QAAQD,EAAS,SACjEA,EAAS,KAAK,YAAYC,EAAc,aAAa,MAAM,YAAYA,EAAc,aAAa,OAEhGA,EAAc,aAAa,MAAM,aAAa,QAAQD,EAAS,SACjEA,EAAS,KAAK,aAAaC,EAAc,aAAa,MAAM,YAAYA,EAAc,aAAa,OAEjGA,EAAc,aAAa,uBAAsBD,KAAA,gBAAAA,EAAU,eAAc,eAC1EA,EAAS,cAAoD,UAAU,IACvEA,EAAS,cAAoD,UAAU;AAG1E,QAAMY,IAAWX,EAAc,UACzBY,IAAgBZ,EAAc,eAAeW,CAAQ;AAE3D,SAAAZ,EAAS,YAAYa,EAAc,WAC/Bb,EAAS,cAAc,gBAAgBa,EAAc,2BACvDb,EAAS,gBAAgB;AAAA,IACvB,QAAQa,EAAc;AAAA,IACtB,WAAWA,EAAc;AAAA,EAAA,IAIzBb,EAAS,cAAc,iBAAiBa,EAAc,gBAAgBA,EAAc,kBACtFb,EAAS,cAAc;AAAA,IACrB,GAAGa,EAAc,gBAAgBb,EAAS,YAAYA,EAAS,SAAS,SAAS;AAAA,IACjF,GAAGa,EAAc,gBAAgBb,EAAS,YAAYA,EAAS,SAAS,SAAS;AAAA,IACjF,QAAQa,EAAc;AAAA,EAAA,KAI1BC,IAAAd,EAAS,gBAAT,QAAAc,EAAsB,QAAQ,CAACC,MAAe;AAC5C,IAAIA,EAAW,SAAS,OACtBA,EAAW,gBAAgBd,EAAc,aAAa,MAAM,4BAA4B,WAAW,SAAYA,EAAc,aAAa,MAAM,yBAChJc,EAAW,YAAYd,EAAc,aAAa,MAAM,4BAA4B,aAEpFc,EAAW,gBAAgBd,EAAc,aAAa,MAAM,4BAA4B,WAAW,SAAYA,EAAc,aAAa,MAAM,yBAChJc,EAAW,YAAYd,EAAc,aAAa,MAAM,4BAA4B;AAAA,EAExF,IAEIA,EAAc,aAAa,MAAM,qBACnCD,EAAS,qBAAqB,WAGzBA;AACT;"}
|
|
@@ -1,43 +1,38 @@
|
|
|
1
1
|
import { HISTOGRAM_TEMPLATES_MAP as g } from "../../constantsCommon.js";
|
|
2
|
-
import { getHistogramAes as
|
|
3
|
-
import "
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import "@platforma-sdk/model";
|
|
7
|
-
import "vue";
|
|
8
|
-
import "@milaboratories/helpers";
|
|
9
|
-
function u(e, o, s) {
|
|
10
|
-
return o.length ? { type: "grouping", value: o[0] } : typeof e == "object" ? s : e;
|
|
2
|
+
import { getHistogramAes as a } from "../../dataBindAes.js";
|
|
3
|
+
import { getAxesDataFromForms as u } from "./getAxesDataFromForms.js";
|
|
4
|
+
function f(o, e, r) {
|
|
5
|
+
return e.length ? { type: "grouping", value: e[0] } : typeof o == "object" ? r : o;
|
|
11
6
|
}
|
|
12
|
-
function
|
|
13
|
-
const n =
|
|
7
|
+
function h(o, e, r, l) {
|
|
8
|
+
const n = e.optionsState.components.grouping;
|
|
14
9
|
if (n.selectorStates.length) {
|
|
15
|
-
const t = n.selectorStates[0].selectedSource, { inheritedAes:
|
|
10
|
+
const t = n.selectorStates[0].selectedSource, { inheritedAes: s, order: i } = a(
|
|
16
11
|
t,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
r,
|
|
13
|
+
e.dataBindAes,
|
|
14
|
+
l.categorical
|
|
20
15
|
);
|
|
21
|
-
Object.assign(
|
|
16
|
+
Object.assign(o, { inheritedAes: { [t]: s }, groupingOrder: i });
|
|
22
17
|
}
|
|
23
|
-
const
|
|
24
|
-
return
|
|
18
|
+
const p = g[e.template], c = [];
|
|
19
|
+
return p.forEach((t) => {
|
|
25
20
|
if (t === "bins") {
|
|
26
|
-
const
|
|
27
|
-
|
|
21
|
+
const s = e.layersSettings[t];
|
|
22
|
+
c.push({
|
|
28
23
|
type: "bins",
|
|
29
24
|
aes: {
|
|
30
|
-
opacity:
|
|
31
|
-
fillColor:
|
|
25
|
+
opacity: s.opacity,
|
|
26
|
+
fillColor: f(s.fillColor, n.selectorStates.map((i) => i.selectedSource), "white")
|
|
32
27
|
}
|
|
33
28
|
});
|
|
34
29
|
}
|
|
35
|
-
}),
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
),
|
|
30
|
+
}), o.layers = c, Object.assign(
|
|
31
|
+
o,
|
|
32
|
+
u(e.axesSettings, e.chartType)
|
|
33
|
+
), o.binsCount = e.axesSettings.other.binsCount, o;
|
|
39
34
|
}
|
|
40
35
|
export {
|
|
41
|
-
|
|
36
|
+
h as composeHistogramSettings
|
|
42
37
|
};
|
|
43
38
|
//# sourceMappingURL=composeHistogramSettings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composeHistogramSettings.js","sources":["../../../src/utils/createChartSettingsForRender/composeHistogramSettings.ts"],"sourcesContent":["import type { HistogramSettings } from '@milaboratories/miplots4';\nimport type { MappingLink } from '../../constantsCommon';\nimport { HISTOGRAM_TEMPLATES_MAP } from '../../constantsCommon';\nimport {\n getHistogramAes,\n} from '../../dataBindAes';\nimport type {\n DefaultPalettes,\n HistogramLayerTemplate,\n ReactiveState,\n UniqueValuesBySourceMap,\n} from '../../types';\nimport type { ChartLayerSettings } from '../index';\nimport { getAxesDataFromForms } from '../index';\n\nfunction useDefault<T extends string>(value: T | MappingLink | null, columns: string[], defaultValue: T): T | {\n type: 'grouping';\n value: string;\n} {\n if (columns.length) {\n return { type: 'grouping', value: columns[0] } as { type: 'grouping'; value: string };\n }\n return typeof value === 'object' ? defaultValue : value as T;\n}\nexport function composeHistogramSettings(\n settings: HistogramSettings,\n reactiveState: ReactiveState,\n uniqueValuesData: UniqueValuesBySourceMap,\n defaultPalette: DefaultPalettes,\n) {\n const grouping = reactiveState.optionsState.components.grouping;\n if (grouping.selectorStates.length) {\n const selectedSource = grouping.selectorStates[0].selectedSource;\n const { inheritedAes, order } = getHistogramAes(\n selectedSource,\n uniqueValuesData,\n reactiveState.dataBindAes,\n defaultPalette.categorical,\n );\n Object.assign(settings, { inheritedAes: { [selectedSource]: inheritedAes }, groupingOrder: order });\n }\n\n const layersKeys = HISTOGRAM_TEMPLATES_MAP[reactiveState.template as HistogramLayerTemplate];\n const layers: ChartLayerSettings[] = [];\n layersKeys.forEach((layer) => {\n if (layer === 'bins') {\n const layerSettings = reactiveState.layersSettings[layer];\n layers.push({\n type: 'bins',\n aes: {\n opacity: layerSettings.opacity,\n fillColor: useDefault(layerSettings.fillColor, grouping.selectorStates.map((v) => v.selectedSource), 'white'),\n },\n });\n }\n });\n settings.layers = layers as HistogramSettings['layers'];\n Object.assign(\n settings,\n getAxesDataFromForms(reactiveState.axesSettings, reactiveState.chartType),\n );\n settings.binsCount = reactiveState.axesSettings.other.binsCount;\n\n return settings;\n}\n"],"names":["useDefault","value","columns","defaultValue","composeHistogramSettings","settings","reactiveState","uniqueValuesData","defaultPalette","grouping","selectedSource","inheritedAes","order","getHistogramAes","layersKeys","HISTOGRAM_TEMPLATES_MAP","layers","layer","layerSettings","v","getAxesDataFromForms"],"mappings":"
|
|
1
|
+
{"version":3,"file":"composeHistogramSettings.js","sources":["../../../src/utils/createChartSettingsForRender/composeHistogramSettings.ts"],"sourcesContent":["import type { HistogramSettings } from '@milaboratories/miplots4';\nimport type { MappingLink } from '../../constantsCommon';\nimport { HISTOGRAM_TEMPLATES_MAP } from '../../constantsCommon';\nimport {\n getHistogramAes,\n} from '../../dataBindAes';\nimport type {\n DefaultPalettes,\n HistogramLayerTemplate,\n ReactiveState,\n UniqueValuesBySourceMap,\n} from '../../types';\nimport type { ChartLayerSettings } from '../index';\nimport { getAxesDataFromForms } from '../index';\n\nfunction useDefault<T extends string>(value: T | MappingLink | null, columns: string[], defaultValue: T): T | {\n type: 'grouping';\n value: string;\n} {\n if (columns.length) {\n return { type: 'grouping', value: columns[0] } as { type: 'grouping'; value: string };\n }\n return typeof value === 'object' ? defaultValue : value as T;\n}\nexport function composeHistogramSettings(\n settings: HistogramSettings,\n reactiveState: ReactiveState,\n uniqueValuesData: UniqueValuesBySourceMap,\n defaultPalette: DefaultPalettes,\n) {\n const grouping = reactiveState.optionsState.components.grouping;\n if (grouping.selectorStates.length) {\n const selectedSource = grouping.selectorStates[0].selectedSource;\n const { inheritedAes, order } = getHistogramAes(\n selectedSource,\n uniqueValuesData,\n reactiveState.dataBindAes,\n defaultPalette.categorical,\n );\n Object.assign(settings, { inheritedAes: { [selectedSource]: inheritedAes }, groupingOrder: order });\n }\n\n const layersKeys = HISTOGRAM_TEMPLATES_MAP[reactiveState.template as HistogramLayerTemplate];\n const layers: ChartLayerSettings[] = [];\n layersKeys.forEach((layer) => {\n if (layer === 'bins') {\n const layerSettings = reactiveState.layersSettings[layer];\n layers.push({\n type: 'bins',\n aes: {\n opacity: layerSettings.opacity,\n fillColor: useDefault(layerSettings.fillColor, grouping.selectorStates.map((v) => v.selectedSource), 'white'),\n },\n });\n }\n });\n settings.layers = layers as HistogramSettings['layers'];\n Object.assign(\n settings,\n getAxesDataFromForms(reactiveState.axesSettings, reactiveState.chartType),\n );\n settings.binsCount = reactiveState.axesSettings.other.binsCount;\n\n return settings;\n}\n"],"names":["useDefault","value","columns","defaultValue","composeHistogramSettings","settings","reactiveState","uniqueValuesData","defaultPalette","grouping","selectedSource","inheritedAes","order","getHistogramAes","layersKeys","HISTOGRAM_TEMPLATES_MAP","layers","layer","layerSettings","v","getAxesDataFromForms"],"mappings":";;;AAeA,SAASA,EAA6BC,GAA+BC,GAAmBC,GAGtF;AACA,SAAID,EAAQ,SACH,EAAE,MAAM,YAAY,OAAOA,EAAQ,CAAC,EAAA,IAEtC,OAAOD,KAAU,WAAWE,IAAeF;AACpD;AACO,SAASG,EACdC,GACAC,GACAC,GACAC,GACA;AACA,QAAMC,IAAWH,EAAc,aAAa,WAAW;AACvD,MAAIG,EAAS,eAAe,QAAQ;AAClC,UAAMC,IAAiBD,EAAS,eAAe,CAAC,EAAE,gBAC5C,EAAE,cAAAE,GAAc,OAAAC,EAAA,IAAUC;AAAA,MAC9BH;AAAA,MACAH;AAAA,MACAD,EAAc;AAAA,MACdE,EAAe;AAAA,IAAA;AAEjB,WAAO,OAAOH,GAAU,EAAE,cAAc,EAAE,CAACK,CAAc,GAAGC,EAAA,GAAgB,eAAeC,GAAO;AAAA,EACpG;AAEA,QAAME,IAAaC,EAAwBT,EAAc,QAAkC,GACrFU,IAA+B,CAAA;AACrC,SAAAF,EAAW,QAAQ,CAACG,MAAU;AAC5B,QAAIA,MAAU,QAAQ;AACpB,YAAMC,IAAgBZ,EAAc,eAAeW,CAAK;AACxD,MAAAD,EAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,KAAK;AAAA,UACH,SAASE,EAAc;AAAA,UACvB,WAAWlB,EAAWkB,EAAc,WAAWT,EAAS,eAAe,IAAI,CAACU,MAAMA,EAAE,cAAc,GAAG,OAAO;AAAA,QAAA;AAAA,MAC9G,CACD;AAAA,IACH;AAAA,EACF,CAAC,GACDd,EAAS,SAASW,GAClB,OAAO;AAAA,IACLX;AAAA,IACAe,EAAqBd,EAAc,cAAcA,EAAc,SAAS;AAAA,EAAA,GAE1ED,EAAS,YAAYC,EAAc,aAAa,MAAM,WAE/CD;AACT;"}
|
|
@@ -1,25 +1,22 @@
|
|
|
1
1
|
import { UNKNOWN_COLOR as U, PALETTE_MAP as F, DEFAULT_BLACK as w } from "../../constantsAesthetic.js";
|
|
2
2
|
import { SCATTERPLOT_TEMPLATES_MAP as P, isMappedAes as G } from "../../constantsCommon.js";
|
|
3
3
|
import { DEFAULT_LINE_WIDTH as K, DEFAULT_DOT_SIZE as M, DEFAULT_DOT_SHAPE as j, getScatterplotAes as k } from "../../dataBindAes.js";
|
|
4
|
+
import { readAnnotation as d, Annotation as S } from "@platforma-sdk/model";
|
|
4
5
|
import { getScatterplotLayersSettings as V } from "./getLayersDataFromForms.js";
|
|
5
6
|
import { getAxesDataFromFormsScatterplot as W } from "./getAxesDataFromForms.js";
|
|
6
|
-
import "@milaboratories/pf-plots";
|
|
7
|
-
import { readAnnotation as d, Annotation as S } from "@platforma-sdk/model";
|
|
8
|
-
import "vue";
|
|
9
|
-
import "@milaboratories/helpers";
|
|
10
7
|
function z(o, y, e, A, l) {
|
|
11
8
|
var t, b, E, x, N;
|
|
12
9
|
const m = (t = y.selectorStates[0]) == null ? void 0 : t.selectedSource, L = (b = e.selectorStates[0]) == null ? void 0 : b.selectedSource, a = (E = A.selectorStates[0]) == null ? void 0 : E.selectedSource, r = l.getSourceInfo(L), n = l.getSourceInfo(a);
|
|
13
|
-
o.grouping = [...o.grouping ?? []].map((
|
|
14
|
-
const
|
|
10
|
+
o.grouping = [...o.grouping ?? []].map((i) => ({ ...i }));
|
|
11
|
+
const c = o.xAxis, s = o.yAxis;
|
|
15
12
|
if (y.selectorStates.length) {
|
|
16
|
-
const
|
|
17
|
-
|
|
13
|
+
const i = l.getSourceInfo(m).spec, p = d(i, S.Graph.Thresholds);
|
|
14
|
+
p && (JSON.parse(p) ?? []).forEach((D) => {
|
|
18
15
|
var g;
|
|
19
16
|
const { columnId: u, value: T } = D;
|
|
20
|
-
u && r.kind === "column" && r.type === u.valueType && r.name === u.name && ((g = o.xAxis) == null ? void 0 : g.scale) === "discrete" && (
|
|
17
|
+
u && r.kind === "column" && r.type === u.valueType && r.name === u.name && ((g = o.xAxis) == null ? void 0 : g.scale) === "discrete" && (c.significantLines || (c.significantLines = []), c.significantLines.push(Number(T))), u && n.kind === "column" && n.type === u.valueType && n.name === u.name && (s.significantLines || (s.significantLines = []), s.significantLines.push(Number(T)));
|
|
21
18
|
});
|
|
22
|
-
const f = d(
|
|
19
|
+
const f = d(i, S.Graph.Palette);
|
|
23
20
|
if (f) {
|
|
24
21
|
const O = JSON.parse(f), { mapping: D = {}, name: u = "" } = O;
|
|
25
22
|
o.layers.forEach((h) => {
|
|
@@ -42,28 +39,28 @@ function z(o, y, e, A, l) {
|
|
|
42
39
|
}
|
|
43
40
|
}
|
|
44
41
|
if (r.annotations) {
|
|
45
|
-
const
|
|
46
|
-
|
|
42
|
+
const i = d(r, S.Graph.Axis.UpperLimit), p = d(r, S.Graph.Axis.LowerLimit), f = d(r, S.Graph.Axis.SymmetricRange);
|
|
43
|
+
i && (c.upperValue = Number(i)), p && (c.lowerValue = Number(p)), f && (c.symmetricRange = Number(f));
|
|
47
44
|
}
|
|
48
45
|
if (n.annotations) {
|
|
49
|
-
const
|
|
50
|
-
|
|
46
|
+
const i = d(n, S.Graph.Axis.UpperLimit), p = d(n, S.Graph.Axis.LowerLimit), f = d(n, S.Graph.Axis.SymmetricRange);
|
|
47
|
+
i && (s.upperValue = Number(i)), p && (s.lowerValue = Number(p)), f && (s.symmetricRange = Number(f));
|
|
51
48
|
}
|
|
52
49
|
}
|
|
53
50
|
function B(o, y, e, A, l, m) {
|
|
54
51
|
function L(a) {
|
|
55
52
|
a && a.forEach((r) => {
|
|
56
|
-
const n = r.columnName.value,
|
|
57
|
-
|
|
58
|
-
const t =
|
|
53
|
+
const n = r.columnName.value, c = k(n, A, l, m);
|
|
54
|
+
c.order.length ? (r.order = c.order, r.inheritedAes = c.inheritedAes) : o.layers.forEach((s) => {
|
|
55
|
+
const t = s.aes;
|
|
59
56
|
if (!t)
|
|
60
57
|
return;
|
|
61
58
|
Object.keys(t).forEach((E) => {
|
|
62
|
-
var N,
|
|
59
|
+
var N, i;
|
|
63
60
|
const x = t[E];
|
|
64
61
|
if (G(x) && x.value === n) {
|
|
65
|
-
const
|
|
66
|
-
x.palette =
|
|
62
|
+
const p = ((i = F[((N = l[n]) == null ? void 0 : N.palette) ?? m]) == null ? void 0 : i.colors) ?? [];
|
|
63
|
+
x.palette = p;
|
|
67
64
|
}
|
|
68
65
|
});
|
|
69
66
|
});
|
|
@@ -71,8 +68,8 @@ function B(o, y, e, A, l, m) {
|
|
|
71
68
|
}
|
|
72
69
|
(y.selectorStates.length || e != null && e.selectorStates.length) && (o.grouping = [...o.grouping ?? []].map((a) => ({ ...a })), L(o.grouping)), o.type === "scatterplot" && (e != null && e.selectorStates.length) && (o.dotShape = [...o.dotShape ?? []].map((a) => ({ ...a })), L(o.dotShape));
|
|
73
70
|
}
|
|
74
|
-
function
|
|
75
|
-
var r, n,
|
|
71
|
+
function $(o, y, e, A, l, m) {
|
|
72
|
+
var r, n, c, s;
|
|
76
73
|
o.layers = V(
|
|
77
74
|
P[e.template],
|
|
78
75
|
e.layersSettings,
|
|
@@ -83,7 +80,7 @@ function oo(o, y, e, A, l, m) {
|
|
|
83
80
|
[
|
|
84
81
|
...((r = o == null ? void 0 : o.grouping) == null ? void 0 : r.map((t) => t.columnName)) ?? [],
|
|
85
82
|
...((n = o == null ? void 0 : o.dotSize) == null ? void 0 : n.map((t) => t.columnName)) ?? [],
|
|
86
|
-
...((
|
|
83
|
+
...((c = o == null ? void 0 : o.dotShape) == null ? void 0 : c.map((t) => t.columnName)) ?? []
|
|
87
84
|
],
|
|
88
85
|
void 0,
|
|
89
86
|
m.continuous
|
|
@@ -97,7 +94,7 @@ function oo(o, y, e, A, l, m) {
|
|
|
97
94
|
);
|
|
98
95
|
const L = e.statisticsSettings, a = o.layers.find((t) => t.type === "dots");
|
|
99
96
|
return L.trend.on && a && (o.trend = {
|
|
100
|
-
color: (
|
|
97
|
+
color: (s = a.aes) == null ? void 0 : s.dotFill,
|
|
101
98
|
bounded: !1
|
|
102
99
|
}), Object.assign(
|
|
103
100
|
o,
|
|
@@ -113,6 +110,6 @@ function oo(o, y, e, A, l, m) {
|
|
|
113
110
|
export {
|
|
114
111
|
z as applyChartInfoFromAnnotations,
|
|
115
112
|
B as applyInheritedAes,
|
|
116
|
-
|
|
113
|
+
$ as composeScatterplotSettings
|
|
117
114
|
};
|
|
118
115
|
//# sourceMappingURL=composeScatterplotSettings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composeScatterplotSettings.js","sources":["../../../src/utils/createChartSettingsForRender/composeScatterplotSettings.ts"],"sourcesContent":["import type { ScatterplotSettings, ScatterplotUmapSettings } from '@milaboratories/miplots4';\nimport type {\n ComponentStateFilter,\n ComponentStateSimple,\n InputGuide,\n InputState,\n PlotDataAndSettings,\n ScatterplotUIState,\n} from '@milaboratories/pf-plots';\nimport {\n DEFAULT_BLACK,\n PALETTE_MAP,\n UNKNOWN_COLOR,\n} from '../../constantsAesthetic';\nimport type {\n MappingLink,\n ScatterplotStatisticsState } from '../../constantsCommon';\nimport {\n isMappedAes,\n SCATTERPLOT_TEMPLATES_MAP,\n} from '../../constantsCommon';\nimport type {\n AestheticMappingState } from '../../dataBindAes';\nimport {\n DEFAULT_DOT_SHAPE,\n DEFAULT_DOT_SIZE,\n DEFAULT_LINE_WIDTH,\n getScatterplotAes,\n} from '../../dataBindAes';\nimport type {\n DefaultPalettes,\n ReactiveState,\n ScatterplotLayersTemplate,\n UniqueValuesBySourceMap,\n} from '../../types';\nimport { getAxesDataFromFormsScatterplot, getScatterplotLayersSettings } from '../index';\nimport type { AxisSettingsContinuous } from '@milaboratories/miplots4';\nimport { Annotation, readAnnotation } from '@platforma-sdk/model';\nimport type { Palette } from '../../components/AesSettings/types';\n\nexport function applyChartInfoFromAnnotations(\n settings: ScatterplotSettings | ScatterplotUmapSettings,\n grouping: ComponentStateSimple | ComponentStateFilter,\n x: ComponentStateSimple | ComponentStateFilter,\n y: ComponentStateSimple | ComponentStateFilter,\n inputGuide: InputGuide<InputState>,\n) {\n const groupingSource = grouping.selectorStates[0]?.selectedSource;\n const xSource = x.selectorStates[0]?.selectedSource;\n const ySource = y.selectorStates[0]?.selectedSource;\n const xInfo = inputGuide.getSourceInfo(xSource);\n const yInfo = inputGuide.getSourceInfo(ySource);\n\n settings.grouping = [...(settings.grouping ?? [])].map((v) => ({ ...v }));\n\n const xAxis = settings.xAxis as AxisSettingsContinuous;\n const yAxis = settings.yAxis as AxisSettingsContinuous;\n if (grouping.selectorStates.length) {\n const spec = inputGuide.getSourceInfo(groupingSource).spec;\n const thresholds = readAnnotation(spec, Annotation.Graph.Thresholds);\n if (thresholds) {\n const thresholdsData = JSON.parse(thresholds) ?? [];\n\n thresholdsData.forEach((thresholdData: { columnId: Record<string, string>; value: number }) => {\n const { columnId, value } = thresholdData;\n if (columnId && (xInfo.kind === 'column' && xInfo.type === columnId.valueType && xInfo.name === columnId.name && settings.xAxis?.scale === 'discrete')) {\n if (!xAxis.significantLines) {\n xAxis.significantLines = [];\n }\n xAxis.significantLines.push(Number(value));\n }\n\n if (columnId && (yInfo.kind === 'column' && yInfo.type === columnId.valueType && yInfo.name === columnId.name)) {\n if (!yAxis.significantLines) {\n yAxis.significantLines = [];\n }\n yAxis.significantLines.push(Number(value));\n }\n });\n }\n\n const palette = readAnnotation(spec, Annotation.Graph.Palette);\n if (palette) {\n const paletteData = JSON.parse(palette);\n const { mapping = {}, name = '' } = paletteData;\n settings.layers.forEach((layer) => {\n if (layer.type === 'dots') {\n if (!layer.aes) {\n layer.aes = {};\n }\n layer.aes.dotFill = { type: 'grouping', value: groupingSource };\n }\n });\n const paletteEntries = [...Object.entries(mapping), ['null', UNKNOWN_COLOR]];\n const paletteColors = PALETTE_MAP[name as keyof typeof PALETTE_MAP]?.colors ?? [];\n\n settings.grouping?.forEach((groupingElement) => {\n if (groupingElement.columnName.value === groupingSource) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupingElement.inheritedAes = paletteEntries.reduce((res: Record<string, any>, [key, value]) => { // TODO: remove any\n const color = paletteColors[Number(value)] ?? DEFAULT_BLACK;\n res[key] = {\n fillColor: color,\n lineColor: color,\n dotFill: color,\n dotShape: DEFAULT_DOT_SHAPE,\n dotSize: DEFAULT_DOT_SIZE,\n lineWidth: DEFAULT_LINE_WIDTH,\n };\n return res;\n }, {});\n }\n });\n }\n }\n if (xInfo.annotations) {\n const upperLimit = readAnnotation(xInfo, Annotation.Graph.Axis.UpperLimit);\n const lowerLimit = readAnnotation(xInfo, Annotation.Graph.Axis.LowerLimit);\n const symmetricRange = readAnnotation(xInfo, Annotation.Graph.Axis.SymmetricRange);\n if (upperLimit) {\n xAxis!.upperValue = Number(upperLimit);\n }\n if (lowerLimit) {\n xAxis!.lowerValue = Number(lowerLimit);\n }\n if (symmetricRange) {\n xAxis!.symmetricRange = Number(symmetricRange);\n }\n }\n\n if (yInfo.annotations) {\n const upperLimit = readAnnotation(yInfo, Annotation.Graph.Axis.UpperLimit);\n const lowerLimit = readAnnotation(yInfo, Annotation.Graph.Axis.LowerLimit);\n const symmetricRange = readAnnotation(yInfo, Annotation.Graph.Axis.SymmetricRange);\n if (upperLimit) {\n yAxis!.upperValue = Number(upperLimit);\n }\n if (lowerLimit) {\n yAxis!.lowerValue = Number(lowerLimit);\n }\n if (symmetricRange) {\n yAxis!.symmetricRange = Number(symmetricRange);\n }\n }\n}\n\nexport function applyInheritedAes(\n settings: ScatterplotSettings | ScatterplotUmapSettings,\n grouping: ComponentStateSimple | ComponentStateFilter,\n shape: ComponentStateSimple | ComponentStateFilter | undefined,\n uniqueValuesData: UniqueValuesBySourceMap,\n dataBindAes: AestheticMappingState,\n defaultPalette: Palette,\n) {\n function applyAesMapping(aesMappings: ScatterplotSettings['grouping'] | ScatterplotSettings['dotShape']) {\n if (!aesMappings) {\n return;\n }\n aesMappings.forEach((el) => {\n const selectedSource = el.columnName.value;\n const savedData = getScatterplotAes(selectedSource, uniqueValuesData, dataBindAes, defaultPalette); // get saved or default color or shape mapping\n if (!savedData.order.length) {\n settings.layers.forEach((layer) => {\n const layerAes = layer.aes;\n if (!layerAes) {\n return;\n }\n const aesKeys = Object.keys(layerAes);\n aesKeys.forEach((aesKey) => {\n const value = layerAes[aesKey as keyof typeof layerAes] as unknown;\n if (isMappedAes(value) && value.value === selectedSource) {\n const colors = PALETTE_MAP[dataBindAes[selectedSource]?.palette ?? defaultPalette]?.colors ?? [];\n (value as MappingLink & { palette: string[] }).palette = colors;\n }\n });\n });\n } else {\n el.order = savedData.order;\n el.inheritedAes = savedData.inheritedAes;\n }\n });\n }\n if (grouping.selectorStates.length || shape?.selectorStates.length) {\n settings.grouping = [...(settings.grouping ?? [])].map((v) => ({ ...v }));\n applyAesMapping(settings.grouping);\n }\n if (settings.type === 'scatterplot' && shape?.selectorStates.length) {\n settings.dotShape = [...(settings.dotShape ?? [])].map((v) => ({ ...v }));\n applyAesMapping(settings.dotShape);\n }\n}\nexport function composeScatterplotSettings(\n settings: ScatterplotSettings,\n dataByColumns: PlotDataAndSettings['data']['byColumns'],\n reactiveState: ReactiveState,\n inputGuide: InputGuide<InputState>,\n uniqueValuesData: UniqueValuesBySourceMap,\n defaultPalette: DefaultPalettes,\n) {\n settings.layers = getScatterplotLayersSettings(\n SCATTERPLOT_TEMPLATES_MAP[reactiveState.template as ScatterplotLayersTemplate],\n reactiveState.layersSettings,\n dataByColumns,\n reactiveState.optionsState as ScatterplotUIState,\n reactiveState.dataBindAes,\n inputGuide,\n [\n ...(settings?.grouping?.map((v) => v.columnName) ?? []),\n ...(settings?.dotSize?.map((v) => v.columnName) ?? []),\n ...(settings?.dotShape?.map((v) => v.columnName) ?? []),\n ],\n undefined,\n defaultPalette.continuous,\n );\n\n applyInheritedAes(\n settings,\n reactiveState.optionsState.components.grouping,\n reactiveState.optionsState.components.shape,\n uniqueValuesData,\n reactiveState.dataBindAes,\n defaultPalette.categorical,\n );\n\n const statisticsSettings = reactiveState.statisticsSettings as ScatterplotStatisticsState;\n const dotsLayer = settings.layers.find((layer) => layer.type === 'dots');\n if (statisticsSettings.trend.on && dotsLayer) {\n settings.trend = {\n color: dotsLayer.aes?.dotFill,\n bounded: false,\n };\n }\n\n Object.assign(\n settings,\n getAxesDataFromFormsScatterplot(reactiveState.axesSettings, uniqueValuesData, reactiveState.optionsState, inputGuide),\n );\n\n applyChartInfoFromAnnotations(\n settings,\n reactiveState.optionsState.components.grouping,\n reactiveState.optionsState.components.x,\n reactiveState.optionsState.components.y,\n inputGuide,\n );\n\n return settings;\n}\n"],"names":["applyChartInfoFromAnnotations","settings","grouping","x","y","inputGuide","groupingSource","_a","xSource","_b","ySource","_c","xInfo","yInfo","v","xAxis","yAxis","spec","thresholds","readAnnotation","Annotation","thresholdData","columnId","value","palette","paletteData","mapping","name","layer","paletteEntries","UNKNOWN_COLOR","paletteColors","_d","PALETTE_MAP","_e","groupingElement","res","key","color","DEFAULT_BLACK","DEFAULT_DOT_SHAPE","DEFAULT_DOT_SIZE","DEFAULT_LINE_WIDTH","upperLimit","lowerLimit","symmetricRange","applyInheritedAes","shape","uniqueValuesData","dataBindAes","defaultPalette","applyAesMapping","aesMappings","el","selectedSource","savedData","getScatterplotAes","layerAes","aesKey","isMappedAes","colors","composeScatterplotSettings","dataByColumns","reactiveState","getScatterplotLayersSettings","SCATTERPLOT_TEMPLATES_MAP","statisticsSettings","dotsLayer","getAxesDataFromFormsScatterplot"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"composeScatterplotSettings.js","sources":["../../../src/utils/createChartSettingsForRender/composeScatterplotSettings.ts"],"sourcesContent":["import type { ScatterplotSettings, ScatterplotUmapSettings } from '@milaboratories/miplots4';\nimport type {\n ComponentStateFilter,\n ComponentStateSimple,\n InputGuide,\n InputState,\n PlotDataAndSettings,\n ScatterplotUIState,\n} from '@milaboratories/pf-plots';\nimport {\n DEFAULT_BLACK,\n PALETTE_MAP,\n UNKNOWN_COLOR,\n} from '../../constantsAesthetic';\nimport type {\n MappingLink,\n ScatterplotStatisticsState } from '../../constantsCommon';\nimport {\n isMappedAes,\n SCATTERPLOT_TEMPLATES_MAP,\n} from '../../constantsCommon';\nimport type {\n AestheticMappingState } from '../../dataBindAes';\nimport {\n DEFAULT_DOT_SHAPE,\n DEFAULT_DOT_SIZE,\n DEFAULT_LINE_WIDTH,\n getScatterplotAes,\n} from '../../dataBindAes';\nimport type {\n DefaultPalettes,\n ReactiveState,\n ScatterplotLayersTemplate,\n UniqueValuesBySourceMap,\n} from '../../types';\nimport { getAxesDataFromFormsScatterplot, getScatterplotLayersSettings } from '../index';\nimport type { AxisSettingsContinuous } from '@milaboratories/miplots4';\nimport { Annotation, readAnnotation } from '@platforma-sdk/model';\nimport type { Palette } from '../../components/AesSettings/types';\n\nexport function applyChartInfoFromAnnotations(\n settings: ScatterplotSettings | ScatterplotUmapSettings,\n grouping: ComponentStateSimple | ComponentStateFilter,\n x: ComponentStateSimple | ComponentStateFilter,\n y: ComponentStateSimple | ComponentStateFilter,\n inputGuide: InputGuide<InputState>,\n) {\n const groupingSource = grouping.selectorStates[0]?.selectedSource;\n const xSource = x.selectorStates[0]?.selectedSource;\n const ySource = y.selectorStates[0]?.selectedSource;\n const xInfo = inputGuide.getSourceInfo(xSource);\n const yInfo = inputGuide.getSourceInfo(ySource);\n\n settings.grouping = [...(settings.grouping ?? [])].map((v) => ({ ...v }));\n\n const xAxis = settings.xAxis as AxisSettingsContinuous;\n const yAxis = settings.yAxis as AxisSettingsContinuous;\n if (grouping.selectorStates.length) {\n const spec = inputGuide.getSourceInfo(groupingSource).spec;\n const thresholds = readAnnotation(spec, Annotation.Graph.Thresholds);\n if (thresholds) {\n const thresholdsData = JSON.parse(thresholds) ?? [];\n\n thresholdsData.forEach((thresholdData: { columnId: Record<string, string>; value: number }) => {\n const { columnId, value } = thresholdData;\n if (columnId && (xInfo.kind === 'column' && xInfo.type === columnId.valueType && xInfo.name === columnId.name && settings.xAxis?.scale === 'discrete')) {\n if (!xAxis.significantLines) {\n xAxis.significantLines = [];\n }\n xAxis.significantLines.push(Number(value));\n }\n\n if (columnId && (yInfo.kind === 'column' && yInfo.type === columnId.valueType && yInfo.name === columnId.name)) {\n if (!yAxis.significantLines) {\n yAxis.significantLines = [];\n }\n yAxis.significantLines.push(Number(value));\n }\n });\n }\n\n const palette = readAnnotation(spec, Annotation.Graph.Palette);\n if (palette) {\n const paletteData = JSON.parse(palette);\n const { mapping = {}, name = '' } = paletteData;\n settings.layers.forEach((layer) => {\n if (layer.type === 'dots') {\n if (!layer.aes) {\n layer.aes = {};\n }\n layer.aes.dotFill = { type: 'grouping', value: groupingSource };\n }\n });\n const paletteEntries = [...Object.entries(mapping), ['null', UNKNOWN_COLOR]];\n const paletteColors = PALETTE_MAP[name as keyof typeof PALETTE_MAP]?.colors ?? [];\n\n settings.grouping?.forEach((groupingElement) => {\n if (groupingElement.columnName.value === groupingSource) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupingElement.inheritedAes = paletteEntries.reduce((res: Record<string, any>, [key, value]) => { // TODO: remove any\n const color = paletteColors[Number(value)] ?? DEFAULT_BLACK;\n res[key] = {\n fillColor: color,\n lineColor: color,\n dotFill: color,\n dotShape: DEFAULT_DOT_SHAPE,\n dotSize: DEFAULT_DOT_SIZE,\n lineWidth: DEFAULT_LINE_WIDTH,\n };\n return res;\n }, {});\n }\n });\n }\n }\n if (xInfo.annotations) {\n const upperLimit = readAnnotation(xInfo, Annotation.Graph.Axis.UpperLimit);\n const lowerLimit = readAnnotation(xInfo, Annotation.Graph.Axis.LowerLimit);\n const symmetricRange = readAnnotation(xInfo, Annotation.Graph.Axis.SymmetricRange);\n if (upperLimit) {\n xAxis!.upperValue = Number(upperLimit);\n }\n if (lowerLimit) {\n xAxis!.lowerValue = Number(lowerLimit);\n }\n if (symmetricRange) {\n xAxis!.symmetricRange = Number(symmetricRange);\n }\n }\n\n if (yInfo.annotations) {\n const upperLimit = readAnnotation(yInfo, Annotation.Graph.Axis.UpperLimit);\n const lowerLimit = readAnnotation(yInfo, Annotation.Graph.Axis.LowerLimit);\n const symmetricRange = readAnnotation(yInfo, Annotation.Graph.Axis.SymmetricRange);\n if (upperLimit) {\n yAxis!.upperValue = Number(upperLimit);\n }\n if (lowerLimit) {\n yAxis!.lowerValue = Number(lowerLimit);\n }\n if (symmetricRange) {\n yAxis!.symmetricRange = Number(symmetricRange);\n }\n }\n}\n\nexport function applyInheritedAes(\n settings: ScatterplotSettings | ScatterplotUmapSettings,\n grouping: ComponentStateSimple | ComponentStateFilter,\n shape: ComponentStateSimple | ComponentStateFilter | undefined,\n uniqueValuesData: UniqueValuesBySourceMap,\n dataBindAes: AestheticMappingState,\n defaultPalette: Palette,\n) {\n function applyAesMapping(aesMappings: ScatterplotSettings['grouping'] | ScatterplotSettings['dotShape']) {\n if (!aesMappings) {\n return;\n }\n aesMappings.forEach((el) => {\n const selectedSource = el.columnName.value;\n const savedData = getScatterplotAes(selectedSource, uniqueValuesData, dataBindAes, defaultPalette); // get saved or default color or shape mapping\n if (!savedData.order.length) {\n settings.layers.forEach((layer) => {\n const layerAes = layer.aes;\n if (!layerAes) {\n return;\n }\n const aesKeys = Object.keys(layerAes);\n aesKeys.forEach((aesKey) => {\n const value = layerAes[aesKey as keyof typeof layerAes] as unknown;\n if (isMappedAes(value) && value.value === selectedSource) {\n const colors = PALETTE_MAP[dataBindAes[selectedSource]?.palette ?? defaultPalette]?.colors ?? [];\n (value as MappingLink & { palette: string[] }).palette = colors;\n }\n });\n });\n } else {\n el.order = savedData.order;\n el.inheritedAes = savedData.inheritedAes;\n }\n });\n }\n if (grouping.selectorStates.length || shape?.selectorStates.length) {\n settings.grouping = [...(settings.grouping ?? [])].map((v) => ({ ...v }));\n applyAesMapping(settings.grouping);\n }\n if (settings.type === 'scatterplot' && shape?.selectorStates.length) {\n settings.dotShape = [...(settings.dotShape ?? [])].map((v) => ({ ...v }));\n applyAesMapping(settings.dotShape);\n }\n}\nexport function composeScatterplotSettings(\n settings: ScatterplotSettings,\n dataByColumns: PlotDataAndSettings['data']['byColumns'],\n reactiveState: ReactiveState,\n inputGuide: InputGuide<InputState>,\n uniqueValuesData: UniqueValuesBySourceMap,\n defaultPalette: DefaultPalettes,\n) {\n settings.layers = getScatterplotLayersSettings(\n SCATTERPLOT_TEMPLATES_MAP[reactiveState.template as ScatterplotLayersTemplate],\n reactiveState.layersSettings,\n dataByColumns,\n reactiveState.optionsState as ScatterplotUIState,\n reactiveState.dataBindAes,\n inputGuide,\n [\n ...(settings?.grouping?.map((v) => v.columnName) ?? []),\n ...(settings?.dotSize?.map((v) => v.columnName) ?? []),\n ...(settings?.dotShape?.map((v) => v.columnName) ?? []),\n ],\n undefined,\n defaultPalette.continuous,\n );\n\n applyInheritedAes(\n settings,\n reactiveState.optionsState.components.grouping,\n reactiveState.optionsState.components.shape,\n uniqueValuesData,\n reactiveState.dataBindAes,\n defaultPalette.categorical,\n );\n\n const statisticsSettings = reactiveState.statisticsSettings as ScatterplotStatisticsState;\n const dotsLayer = settings.layers.find((layer) => layer.type === 'dots');\n if (statisticsSettings.trend.on && dotsLayer) {\n settings.trend = {\n color: dotsLayer.aes?.dotFill,\n bounded: false,\n };\n }\n\n Object.assign(\n settings,\n getAxesDataFromFormsScatterplot(reactiveState.axesSettings, uniqueValuesData, reactiveState.optionsState, inputGuide),\n );\n\n applyChartInfoFromAnnotations(\n settings,\n reactiveState.optionsState.components.grouping,\n reactiveState.optionsState.components.x,\n reactiveState.optionsState.components.y,\n inputGuide,\n );\n\n return settings;\n}\n"],"names":["applyChartInfoFromAnnotations","settings","grouping","x","y","inputGuide","groupingSource","_a","xSource","_b","ySource","_c","xInfo","yInfo","v","xAxis","yAxis","spec","thresholds","readAnnotation","Annotation","thresholdData","columnId","value","palette","paletteData","mapping","name","layer","paletteEntries","UNKNOWN_COLOR","paletteColors","_d","PALETTE_MAP","_e","groupingElement","res","key","color","DEFAULT_BLACK","DEFAULT_DOT_SHAPE","DEFAULT_DOT_SIZE","DEFAULT_LINE_WIDTH","upperLimit","lowerLimit","symmetricRange","applyInheritedAes","shape","uniqueValuesData","dataBindAes","defaultPalette","applyAesMapping","aesMappings","el","selectedSource","savedData","getScatterplotAes","layerAes","aesKey","isMappedAes","colors","composeScatterplotSettings","dataByColumns","reactiveState","getScatterplotLayersSettings","SCATTERPLOT_TEMPLATES_MAP","statisticsSettings","dotsLayer","getAxesDataFromFormsScatterplot"],"mappings":"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"}
|
|
@@ -1,47 +1,42 @@
|
|
|
1
|
-
import { SCATTERPLOT_TEMPLATES_MAP as
|
|
2
|
-
import { DEFAULT_DOT_SIZE_CANVAS as
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import "
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const a = 750, c = 450;
|
|
12
|
-
function D(p, A, o, m, r, T) {
|
|
13
|
-
var n;
|
|
14
|
-
return p.layers = E(
|
|
15
|
-
l[o.template],
|
|
1
|
+
import { SCATTERPLOT_TEMPLATES_MAP as _ } from "../../constantsCommon.js";
|
|
2
|
+
import { DEFAULT_DOT_SIZE_CANVAS as E } from "../../dataBindAes.js";
|
|
3
|
+
import { applyInheritedAes as s, applyChartInfoFromAnnotations as S } from "./composeScatterplotSettings.js";
|
|
4
|
+
import { getScatterplotLayersSettings as L } from "./getLayersDataFromForms.js";
|
|
5
|
+
import { getAxesDataFromFormsScatterplot as a } from "./getAxesDataFromForms.js";
|
|
6
|
+
const c = 750, f = 450;
|
|
7
|
+
function U(p, A, o, m, n, T) {
|
|
8
|
+
var r;
|
|
9
|
+
return p.layers = L(
|
|
10
|
+
_[o.template],
|
|
16
11
|
o.layersSettings,
|
|
17
12
|
A,
|
|
18
13
|
o.optionsState,
|
|
19
14
|
o.dataBindAes,
|
|
20
15
|
m,
|
|
21
|
-
(
|
|
22
|
-
|
|
23
|
-
),
|
|
16
|
+
(r = p == null ? void 0 : p.grouping) == null ? void 0 : r.map((l) => l.columnName),
|
|
17
|
+
E
|
|
18
|
+
), s(
|
|
24
19
|
p,
|
|
25
20
|
o.optionsState.components.grouping,
|
|
26
21
|
void 0,
|
|
27
|
-
|
|
22
|
+
n,
|
|
28
23
|
o.dataBindAes,
|
|
29
24
|
T.categorical
|
|
30
25
|
), Object.assign(
|
|
31
26
|
p,
|
|
32
|
-
|
|
33
|
-
),
|
|
27
|
+
a(o.axesSettings, n, o.optionsState, m)
|
|
28
|
+
), S(
|
|
34
29
|
p,
|
|
35
30
|
o.optionsState.components.grouping,
|
|
36
31
|
o.optionsState.components.x,
|
|
37
32
|
o.optionsState.components.y,
|
|
38
33
|
m
|
|
39
34
|
), p.size = {
|
|
40
|
-
width:
|
|
41
|
-
height:
|
|
35
|
+
width: c * o.chartScale / 100,
|
|
36
|
+
height: f * o.chartScale / 100
|
|
42
37
|
}, p;
|
|
43
38
|
}
|
|
44
39
|
export {
|
|
45
|
-
|
|
40
|
+
U as composeScatterplotUmapSettings
|
|
46
41
|
};
|
|
47
42
|
//# sourceMappingURL=composeScatterplotUmapSettings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composeScatterplotUmapSettings.js","sources":["../../../src/utils/createChartSettingsForRender/composeScatterplotUmapSettings.ts"],"sourcesContent":["import type { ScatterplotUmapSettings } from '@milaboratories/miplots4';\nimport type { InputGuide, InputState, PlotDataAndSettings, ScatterplotUIState } from '@milaboratories/pf-plots';\nimport { SCATTERPLOT_TEMPLATES_MAP } from '../../constantsCommon';\nimport { DEFAULT_DOT_SIZE_CANVAS } from '../../dataBindAes';\nimport type {\n DefaultPalettes,\n ReactiveState,\n ScatterplotLayersTemplate,\n UniqueValuesBySourceMap,\n} from '../../types';\nimport { getAxesDataFromFormsScatterplot, getScatterplotLayersSettings } from '../index';\nimport { applyChartInfoFromAnnotations, applyInheritedAes } from './composeScatterplotSettings';\n\nconst DEFAULT_WIDTH_SCATTERPLOT_UMAP = 750;\nconst DEFAULT_HEIGHT_SCATTERPLOT_UMAP = 450;\n\nexport function composeScatterplotUmapSettings(\n settings: ScatterplotUmapSettings,\n dataByColumns: PlotDataAndSettings['data']['byColumns'],\n reactiveState: ReactiveState,\n inputGuide: InputGuide<InputState>,\n uniqueValuesData: UniqueValuesBySourceMap,\n defaultPalette: DefaultPalettes,\n) {\n settings.layers = getScatterplotLayersSettings(\n SCATTERPLOT_TEMPLATES_MAP[reactiveState.template as ScatterplotLayersTemplate],\n reactiveState.layersSettings,\n dataByColumns,\n reactiveState.optionsState as ScatterplotUIState,\n reactiveState.dataBindAes,\n inputGuide,\n settings?.grouping?.map((v) => v.columnName),\n DEFAULT_DOT_SIZE_CANVAS,\n ) as ScatterplotUmapSettings['layers'];\n\n applyInheritedAes(\n settings,\n reactiveState.optionsState.components.grouping,\n undefined,\n uniqueValuesData,\n reactiveState.dataBindAes,\n defaultPalette.categorical,\n );\n\n Object.assign(\n settings,\n getAxesDataFromFormsScatterplot(reactiveState.axesSettings, uniqueValuesData, reactiveState.optionsState, inputGuide),\n );\n\n applyChartInfoFromAnnotations(\n settings,\n reactiveState.optionsState.components.grouping,\n reactiveState.optionsState.components.x,\n reactiveState.optionsState.components.y,\n inputGuide,\n );\n\n settings.size = {\n width: DEFAULT_WIDTH_SCATTERPLOT_UMAP * reactiveState.chartScale / 100,\n height: DEFAULT_HEIGHT_SCATTERPLOT_UMAP * reactiveState.chartScale / 100,\n };\n\n return settings;\n}\n"],"names":["DEFAULT_WIDTH_SCATTERPLOT_UMAP","DEFAULT_HEIGHT_SCATTERPLOT_UMAP","composeScatterplotUmapSettings","settings","dataByColumns","reactiveState","inputGuide","uniqueValuesData","defaultPalette","getScatterplotLayersSettings","SCATTERPLOT_TEMPLATES_MAP","_a","v","DEFAULT_DOT_SIZE_CANVAS","applyInheritedAes","getAxesDataFromFormsScatterplot","applyChartInfoFromAnnotations"],"mappings":"
|
|
1
|
+
{"version":3,"file":"composeScatterplotUmapSettings.js","sources":["../../../src/utils/createChartSettingsForRender/composeScatterplotUmapSettings.ts"],"sourcesContent":["import type { ScatterplotUmapSettings } from '@milaboratories/miplots4';\nimport type { InputGuide, InputState, PlotDataAndSettings, ScatterplotUIState } from '@milaboratories/pf-plots';\nimport { SCATTERPLOT_TEMPLATES_MAP } from '../../constantsCommon';\nimport { DEFAULT_DOT_SIZE_CANVAS } from '../../dataBindAes';\nimport type {\n DefaultPalettes,\n ReactiveState,\n ScatterplotLayersTemplate,\n UniqueValuesBySourceMap,\n} from '../../types';\nimport { getAxesDataFromFormsScatterplot, getScatterplotLayersSettings } from '../index';\nimport { applyChartInfoFromAnnotations, applyInheritedAes } from './composeScatterplotSettings';\n\nconst DEFAULT_WIDTH_SCATTERPLOT_UMAP = 750;\nconst DEFAULT_HEIGHT_SCATTERPLOT_UMAP = 450;\n\nexport function composeScatterplotUmapSettings(\n settings: ScatterplotUmapSettings,\n dataByColumns: PlotDataAndSettings['data']['byColumns'],\n reactiveState: ReactiveState,\n inputGuide: InputGuide<InputState>,\n uniqueValuesData: UniqueValuesBySourceMap,\n defaultPalette: DefaultPalettes,\n) {\n settings.layers = getScatterplotLayersSettings(\n SCATTERPLOT_TEMPLATES_MAP[reactiveState.template as ScatterplotLayersTemplate],\n reactiveState.layersSettings,\n dataByColumns,\n reactiveState.optionsState as ScatterplotUIState,\n reactiveState.dataBindAes,\n inputGuide,\n settings?.grouping?.map((v) => v.columnName),\n DEFAULT_DOT_SIZE_CANVAS,\n ) as ScatterplotUmapSettings['layers'];\n\n applyInheritedAes(\n settings,\n reactiveState.optionsState.components.grouping,\n undefined,\n uniqueValuesData,\n reactiveState.dataBindAes,\n defaultPalette.categorical,\n );\n\n Object.assign(\n settings,\n getAxesDataFromFormsScatterplot(reactiveState.axesSettings, uniqueValuesData, reactiveState.optionsState, inputGuide),\n );\n\n applyChartInfoFromAnnotations(\n settings,\n reactiveState.optionsState.components.grouping,\n reactiveState.optionsState.components.x,\n reactiveState.optionsState.components.y,\n inputGuide,\n );\n\n settings.size = {\n width: DEFAULT_WIDTH_SCATTERPLOT_UMAP * reactiveState.chartScale / 100,\n height: DEFAULT_HEIGHT_SCATTERPLOT_UMAP * reactiveState.chartScale / 100,\n };\n\n return settings;\n}\n"],"names":["DEFAULT_WIDTH_SCATTERPLOT_UMAP","DEFAULT_HEIGHT_SCATTERPLOT_UMAP","composeScatterplotUmapSettings","settings","dataByColumns","reactiveState","inputGuide","uniqueValuesData","defaultPalette","getScatterplotLayersSettings","SCATTERPLOT_TEMPLATES_MAP","_a","v","DEFAULT_DOT_SIZE_CANVAS","applyInheritedAes","getAxesDataFromFormsScatterplot","applyChartInfoFromAnnotations"],"mappings":";;;;;AAaA,MAAMA,IAAiC,KACjCC,IAAkC;AAEjC,SAASC,EACdC,GACAC,GACAC,GACAC,GACAC,GACAC,GACA;;AACA,SAAAL,EAAS,SAASM;AAAA,IAChBC,EAA0BL,EAAc,QAAqC;AAAA,IAC7EA,EAAc;AAAA,IACdD;AAAA,IACAC,EAAc;AAAA,IACdA,EAAc;AAAA,IACdC;AAAA,KACAK,IAAAR,KAAA,gBAAAA,EAAU,aAAV,gBAAAQ,EAAoB,IAAI,CAACC,MAAMA,EAAE;AAAA,IACjCC;AAAA,EAAA,GAGFC;AAAA,IACEX;AAAA,IACAE,EAAc,aAAa,WAAW;AAAA,IACtC;AAAA,IACAE;AAAA,IACAF,EAAc;AAAA,IACdG,EAAe;AAAA,EAAA,GAGjB,OAAO;AAAA,IACLL;AAAA,IACAY,EAAgCV,EAAc,cAAcE,GAAkBF,EAAc,cAAcC,CAAU;AAAA,EAAA,GAGtHU;AAAA,IACEb;AAAA,IACAE,EAAc,aAAa,WAAW;AAAA,IACtCA,EAAc,aAAa,WAAW;AAAA,IACtCA,EAAc,aAAa,WAAW;AAAA,IACtCC;AAAA,EAAA,GAGFH,EAAS,OAAO;AAAA,IACd,OAAOH,IAAiCK,EAAc,aAAa;AAAA,IACnE,QAAQJ,IAAkCI,EAAc,aAAa;AAAA,EAAA,GAGhEF;AACT;"}
|
|
@@ -1,57 +1,51 @@
|
|
|
1
|
-
import { DISCRETE_TEMPLATES_MAP as
|
|
2
|
-
import { getDiscreteLayersSettings as
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import "../constantsAesthetic.js";
|
|
9
|
-
function d(t, u, s) {
|
|
10
|
-
return t.some((n) => {
|
|
11
|
-
var i;
|
|
12
|
-
const l = (i = n == null ? void 0 : n.aes) == null ? void 0 : i[u];
|
|
13
|
-
return f(l) && l.type === s;
|
|
1
|
+
import { DISCRETE_TEMPLATES_MAP as C, isMappedAes as u } from "../constantsCommon.js";
|
|
2
|
+
import { getDiscreteLayersSettings as k } from "./createChartSettingsForRender/getLayersDataFromForms.js";
|
|
3
|
+
function p(t, i, r) {
|
|
4
|
+
return t.some((d) => {
|
|
5
|
+
var f;
|
|
6
|
+
const l = (f = d == null ? void 0 : d.aes) == null ? void 0 : f[i];
|
|
7
|
+
return u(l) && l.type === r;
|
|
14
8
|
});
|
|
15
9
|
}
|
|
16
|
-
function
|
|
10
|
+
function T(t, i, r, d, l, f) {
|
|
17
11
|
var a, S, h;
|
|
18
|
-
const
|
|
12
|
+
const n = {};
|
|
19
13
|
let c = [];
|
|
20
14
|
if (t === "discrete") {
|
|
21
15
|
c = ["primaryGrouping", "secondaryGrouping"];
|
|
22
|
-
const o =
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
16
|
+
const o = k(
|
|
17
|
+
C[i],
|
|
18
|
+
r,
|
|
19
|
+
d,
|
|
26
20
|
l,
|
|
27
|
-
|
|
21
|
+
f
|
|
28
22
|
);
|
|
29
23
|
c.forEach((e) => {
|
|
30
|
-
var g,
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
fill:
|
|
34
|
-
stroke:
|
|
35
|
-
dotShape:
|
|
36
|
-
lineType:
|
|
24
|
+
var g, E;
|
|
25
|
+
const s = (E = (g = l.components[e]) == null ? void 0 : g.selectorStates[0]) == null ? void 0 : E.selectedSource;
|
|
26
|
+
s && (n[s] = {
|
|
27
|
+
fill: p(o, "fillColor", e) || p(o, "dotFill", e),
|
|
28
|
+
stroke: p(o, "lineColor", e),
|
|
29
|
+
dotShape: p(o, "dotShape", e),
|
|
30
|
+
lineType: p(o, "lineShape", e),
|
|
37
31
|
size: !1
|
|
38
32
|
});
|
|
39
33
|
});
|
|
40
34
|
}
|
|
41
35
|
if (t === "scatterplot") {
|
|
42
|
-
const o = l.components.grouping.selectorStates.map((
|
|
43
|
-
c = [...o, ...e], c.forEach((
|
|
44
|
-
|
|
45
|
-
fill:
|
|
36
|
+
const o = l.components.grouping.selectorStates.map((s) => s.selectedSource), e = l.components.shape.selectorStates.map((s) => s.selectedSource);
|
|
37
|
+
c = [...o, ...e], c.forEach((s) => {
|
|
38
|
+
n[s] = {
|
|
39
|
+
fill: s === o[0],
|
|
46
40
|
stroke: !1,
|
|
47
|
-
dotShape:
|
|
41
|
+
dotShape: s === e[0],
|
|
48
42
|
lineType: !1,
|
|
49
43
|
size: !1
|
|
50
44
|
};
|
|
51
45
|
});
|
|
52
46
|
}
|
|
53
47
|
if (t === "scatterplot-umap" && (c = l.components.grouping.selectorStates.map((o) => o.selectedSource), c.forEach((o) => {
|
|
54
|
-
|
|
48
|
+
n[o] = {
|
|
55
49
|
fill: o === c[0],
|
|
56
50
|
stroke: !1,
|
|
57
51
|
dotShape: !1,
|
|
@@ -63,17 +57,17 @@ function L(t, u, s, n, l, i) {
|
|
|
63
57
|
((S = l.components.nodeShape.selectorStates[0]) == null ? void 0 : S.selectedSource) ?? null,
|
|
64
58
|
((h = l.components.lineColor.selectorStates[0]) == null ? void 0 : h.selectedSource) ?? null
|
|
65
59
|
].filter((e) => e !== null), c.forEach((e) => {
|
|
66
|
-
|
|
67
|
-
fill:
|
|
68
|
-
stroke:
|
|
69
|
-
dotShape:
|
|
60
|
+
n[e] = {
|
|
61
|
+
fill: u(r.dendro.dotFill) && r.dendro.dotFill.value === e,
|
|
62
|
+
stroke: u(r.dendro.lineColor) && r.dendro.lineColor.value === e,
|
|
63
|
+
dotShape: u(r.dendro.dotShape) && r.dendro.dotShape.value === e,
|
|
70
64
|
lineType: !1,
|
|
71
65
|
size: !1
|
|
72
66
|
};
|
|
73
67
|
})), t === "histogram") {
|
|
74
68
|
const o = l.components.grouping.selectorStates.map((e) => e.selectedSource);
|
|
75
69
|
o.forEach((e) => {
|
|
76
|
-
|
|
70
|
+
n[e] = {
|
|
77
71
|
fill: e === o[0],
|
|
78
72
|
stroke: !1,
|
|
79
73
|
dotShape: !1,
|
|
@@ -82,9 +76,9 @@ function L(t, u, s, n, l, i) {
|
|
|
82
76
|
};
|
|
83
77
|
});
|
|
84
78
|
}
|
|
85
|
-
return
|
|
79
|
+
return n;
|
|
86
80
|
}
|
|
87
81
|
export {
|
|
88
|
-
|
|
82
|
+
T as getUsedAesInMapping
|
|
89
83
|
};
|
|
90
84
|
//# sourceMappingURL=getUsedAesInMapping.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getUsedAesInMapping.js","sources":["../../src/utils/getUsedAesInMapping.ts"],"sourcesContent":["import type { ChartType, DiscreteUIState, InputGuide, InputState } from '@milaboratories/pf-plots';\nimport type {\n AesType, DiscreteStatisticsState,\n getDefaultLayersSettings,\n getInitialStatisticsState } from '../constantsCommon';\nimport { DISCRETE_TEMPLATES_MAP,\n isMappedAes,\n} from '../constantsCommon';\nimport type { DiscreteLayersTemplate, LayersTemplate } from '../types';\nimport type {\n ChartLayerSettings } from './index';\nimport {\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/utils/getUsedAesInMapping.ts"],"sourcesContent":["import type { ChartType, DiscreteUIState, InputGuide, InputState } from '@milaboratories/pf-plots';\nimport type {\n AesType, DiscreteStatisticsState,\n getDefaultLayersSettings,\n getInitialStatisticsState } from '../constantsCommon';\nimport { DISCRETE_TEMPLATES_MAP,\n isMappedAes,\n} from '../constantsCommon';\nimport type { DiscreteLayersTemplate, LayersTemplate } from '../types';\nimport type {\n ChartLayerSettings } from './index';\nimport {\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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"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@milaboratories/graph-maker",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
|
-
"
|
|
7
|
+
"sideEffects": [
|
|
8
|
+
"**/*.css"
|
|
9
|
+
],
|
|
8
10
|
"exports": {
|
|
9
11
|
".": {
|
|
10
12
|
"development": "./src/index.ts",
|
|
11
|
-
"styles": "./dist/index.js",
|
|
12
13
|
"types": "./dist/index.d.ts",
|
|
13
14
|
"default": "./dist/index.js"
|
|
14
15
|
},
|
|
@@ -16,10 +17,6 @@
|
|
|
16
17
|
"development": "./src/index.ts",
|
|
17
18
|
"default": "./dist/index.d.ts"
|
|
18
19
|
},
|
|
19
|
-
"./styles": {
|
|
20
|
-
"development": "./src/index.ts",
|
|
21
|
-
"default": "./dist/index.js"
|
|
22
|
-
},
|
|
23
20
|
"./*": "./*"
|
|
24
21
|
},
|
|
25
22
|
"files": [
|
|
@@ -27,7 +24,7 @@
|
|
|
27
24
|
],
|
|
28
25
|
"dependencies": {
|
|
29
26
|
"@ag-grid-community/core": "^32.3.3",
|
|
30
|
-
"@milaboratories/helpers": "^1.13.
|
|
27
|
+
"@milaboratories/helpers": "^1.13.5",
|
|
31
28
|
"@types/d3-hierarchy": "^3.1.7",
|
|
32
29
|
"@types/d3-scale": "^4.0.8",
|
|
33
30
|
"@vueuse/core": "^13.1.0",
|
|
@@ -40,9 +37,9 @@
|
|
|
40
37
|
"@milaboratories/pf-plots": "1.1.65"
|
|
41
38
|
},
|
|
42
39
|
"devDependencies": {
|
|
43
|
-
"@milaboratories/build-configs": "^1.0
|
|
44
|
-
"@milaboratories/ts-configs": "^1.2.
|
|
45
|
-
"@milaboratories/ts-builder": "^1.2.
|
|
40
|
+
"@milaboratories/build-configs": "^1.5.0",
|
|
41
|
+
"@milaboratories/ts-configs": "^1.2.1",
|
|
42
|
+
"@milaboratories/ts-builder": "^1.2.11",
|
|
46
43
|
"@milaboratories/eslint-config": "^1.0.5",
|
|
47
44
|
"@types/node": "^22.19.1",
|
|
48
45
|
"sass": "^1.94.2",
|
|
@@ -52,13 +49,13 @@
|
|
|
52
49
|
"vue-tsc": "^3.1.3"
|
|
53
50
|
},
|
|
54
51
|
"peerDependencies": {
|
|
55
|
-
"@platforma-sdk/model": "^1.
|
|
56
|
-
"@platforma-sdk/ui-vue": "^1.
|
|
52
|
+
"@platforma-sdk/model": "^1.57.2",
|
|
53
|
+
"@platforma-sdk/ui-vue": "^1.57.3"
|
|
57
54
|
},
|
|
58
55
|
"scripts": {
|
|
59
56
|
"dev": "vite",
|
|
60
57
|
"build": "ts-builder build --target browser-lib",
|
|
61
|
-
"type-check": "ts-builder
|
|
58
|
+
"type-check": "ts-builder type-check --target browser-lib",
|
|
62
59
|
"watch": "vite build --watch",
|
|
63
60
|
"test": "vitest run --passWithNoTests",
|
|
64
61
|
"do-pack": "rm -f *.tgz && pnpm pack && mv *.tgz package.tgz",
|