@milaboratories/graph-maker 1.2.8 → 1.2.9

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.
Files changed (41) hide show
  1. package/dist/components/Chart.js.map +1 -1
  2. package/dist/components/Chart.vue.d.ts.map +1 -1
  3. package/dist/components/Chart.vue2.js +23 -3
  4. package/dist/components/Chart.vue2.js.map +1 -1
  5. package/dist/constantsCommon.d.ts +6 -0
  6. package/dist/constantsCommon.d.ts.map +1 -1
  7. package/dist/constantsCommon.js +9 -3
  8. package/dist/constantsCommon.js.map +1 -1
  9. package/dist/forms/DataMappingForm/DendroForm.js.map +1 -1
  10. package/dist/forms/DataMappingForm/DendroForm.vue.d.ts.map +1 -1
  11. package/dist/forms/DataMappingForm/DendroForm.vue2.js +22 -3
  12. package/dist/forms/DataMappingForm/DendroForm.vue2.js.map +1 -1
  13. package/dist/forms/DataMappingForm/useBaskets.d.ts.map +1 -1
  14. package/dist/forms/DataMappingForm/useBaskets.js +22 -3
  15. package/dist/forms/DataMappingForm/useBaskets.js.map +1 -1
  16. package/dist/forms/LayersForm/Layer/Bubble.js.map +1 -1
  17. package/dist/forms/LayersForm/Layer/Bubble.vue.d.ts.map +1 -1
  18. package/dist/forms/LayersForm/Layer/Bubble.vue2.js +53 -45
  19. package/dist/forms/LayersForm/Layer/Bubble.vue2.js.map +1 -1
  20. package/dist/forms/LayersForm/Layer/heatmap/Heatmap.js.map +1 -1
  21. package/dist/forms/LayersForm/Layer/heatmap/Heatmap.vue.d.ts.map +1 -1
  22. package/dist/forms/LayersForm/Layer/heatmap/Heatmap.vue2.js +49 -41
  23. package/dist/forms/LayersForm/Layer/heatmap/Heatmap.vue2.js.map +1 -1
  24. package/dist/forms/LayersForm/Layer/heatmap/HeatmapClustered.js.map +1 -1
  25. package/dist/forms/LayersForm/Layer/heatmap/HeatmapClustered.vue.d.ts.map +1 -1
  26. package/dist/forms/LayersForm/Layer/heatmap/HeatmapClustered.vue2.js +63 -55
  27. package/dist/forms/LayersForm/Layer/heatmap/HeatmapClustered.vue2.js.map +1 -1
  28. package/dist/store.js +7 -1
  29. package/dist/store.js.map +1 -1
  30. package/dist/utils/createChartSettingsForRender/composeBubbleSettings.d.ts +2 -0
  31. package/dist/utils/createChartSettingsForRender/composeBubbleSettings.d.ts.map +1 -1
  32. package/dist/utils/createChartSettingsForRender/composeBubbleSettings.js +1 -1
  33. package/dist/utils/createChartSettingsForRender/composeBubbleSettings.js.map +1 -1
  34. package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts +2 -0
  35. package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts.map +1 -1
  36. package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.js +1 -1
  37. package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.js.map +1 -1
  38. package/dist/utils/loadUniqueValuesToSave.d.ts.map +1 -1
  39. package/dist/utils/loadUniqueValuesToSave.js +16 -3
  40. package/dist/utils/loadUniqueValuesToSave.js.map +1 -1
  41. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"composeBubbleSettings.d.ts","sourceRoot":"","sources":["../../../src/utils/createChartSettingsForRender/composeBubbleSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAK/D,OAAO,KAAK,EAAe,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAM/E,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,cAAc,EACxB,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,eAAe;;;;YA6Do5V,CAAC;gBAAuC,CAAC;;;;;cAAgI,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;;;cAA4G,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;;;cAAyG,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;;;cAAyG,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;aAAuD,CAAC;cAAoC,CAAC;gBAAsC,CAAC;;;kBAAuE,CAAC;iBAAyC,CAAC;iBAAuC,CAAC;uBAA6C,CAAC;sBAA4C,CAAC;;;YAAoE,CAAC;gBAAuC,CAAC;;;YAAqG,CAAC;eAAsC,CAAC;;;kBAA6E,CAAC;iBAAuC,CAAC;uBAA6C,CAAC;0BAAgD,CAAC;;;;YAA4F,CAAC;;;aAA0H,CAAC;aAAqC,CAAC;aAAmC,CAAC;;;aAAoE,CAAC;iBAAuC,CAAC;gBAAuC,CAAC;eAA+C,CAAC;iBAA+C,CAAC;sBAA6C,CAAC;uBAA8C,CAAC;;;aAAyE,CAAC;iBAAuC,CAAC;gBAAuC,CAAC;eAA+C,CAAC;iBAA+C,CAAC;sBAA6C,CAAC;uBAA8C,CAAC;;;;;cAA2H,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;;;cAAyH,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;;;cAAyH,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;;;;kBAAuO,CAAC;iBAAyC,CAAC;;;SAAwE,CAAC;SAAgC,CAAC;cAAqC,CAAC;;;EADlyd"}
1
+ {"version":3,"file":"composeBubbleSettings.d.ts","sourceRoot":"","sources":["../../../src/utils/createChartSettingsForRender/composeBubbleSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAK/D,OAAO,KAAK,EAAe,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAM/E,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,cAAc,EACxB,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,eAAe;;;;YA+Di4V,CAAC;gBAAuC,CAAC;;;;;cAAgI,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;;;cAA4G,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;;;cAAyG,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;;;cAAyG,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;aAAuD,CAAC;cAAoC,CAAC;gBAAsC,CAAC;;;kBAAuE,CAAC;iBAAyC,CAAC;iBAAuC,CAAC;uBAA6C,CAAC;sBAA4C,CAAC;;;YAAoE,CAAC;gBAAuC,CAAC;;;YAAqG,CAAC;eAAsC,CAAC;;;kBAA6E,CAAC;iBAAuC,CAAC;uBAA6C,CAAC;0BAAgD,CAAC;;;;YAA4F,CAAC;;;aAA0H,CAAC;aAAqC,CAAC;aAAmC,CAAC;;;aAAoE,CAAC;iBAAuC,CAAC;gBAAuC,CAAC;eAA+C,CAAC;iBAA+C,CAAC;sBAA6C,CAAC;uBAA8C,CAAC;;;aAAyE,CAAC;iBAAuC,CAAC;gBAAuC,CAAC;eAA+C,CAAC;iBAA+C,CAAC;sBAA6C,CAAC;uBAA8C,CAAC;;;;;cAA2H,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;;;cAAyH,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;;;cAAyH,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;;;;kBAAuO,CAAC;iBAAyC,CAAC;;;SAAwE,CAAC;SAAgC,CAAC;cAAqC,CAAC;;;;;EAD/wd"}
@@ -8,7 +8,7 @@ function a(a, o, s) {
8
8
  colorsList: e[u ?? s.continuous].colors,
9
9
  maxRadius: r * (o.chartScale / 100),
10
10
  minRadius: i
11
- }, a.size = { cellSize: n * (o.chartScale / 100) }, Object.assign(a, t(o.axesSettings, o.chartType)), a.NAValueAs = l.NAValueAs, l.normalizationDirection && (a.normalization = {
11
+ }, a.size = { cellSize: n * (o.chartScale / 100) }, Object.assign(a, t(o.axesSettings, o.chartType)), a.NAValueAs = l.NAValueAs, a.showEmptyRows = l.showEmptyRows, a.showEmptyColumns = l.showEmptyColumns, l.normalizationDirection && (a.normalization = {
12
12
  method: l.normalizationMethod,
13
13
  direction: l.normalizationDirection
14
14
  }), (l.aggregateByX || l.aggregateByY) && (a.aggregation = {
@@ -1 +1 @@
1
- {"version":3,"file":"composeBubbleSettings.js","names":[],"sources":["../../../src/utils/createChartSettingsForRender/composeBubbleSettings.ts"],"sourcesContent":["import type { BubbleSettings } from '@milaboratories/miplots4';\nimport {\n DEFAULT_BLACK,\n PALETTE_MAP,\n} from '../../constantsAesthetic';\nimport type { BubbleLayer, DefaultPalettes, ReactiveState } from '../../types';\nimport { getAxesDataFromForms } from '../index';\n\nconst DEFAULT_CELL_SIZE = 40;\nconst DEFAULT_MAX_R = DEFAULT_CELL_SIZE / 2 - 2;\nconst DEFAULT_MIN_R = 3;\nexport function composeBubbleSettings(\n settings: BubbleSettings,\n reactiveState: ReactiveState,\n defaultPalettes: DefaultPalettes,\n) {\n const template = reactiveState.template as BubbleLayer;\n const layerSettings = reactiveState.layersSettings[template];\n const palette = reactiveState.dataBindAes[settings.valueColor.value]?.palette;\n\n settings.aes = {\n cellStrokeColor: layerSettings.strokeColor ?? DEFAULT_BLACK,\n colorsList: PALETTE_MAP[palette ?? defaultPalettes.continuous].colors,\n maxRadius: DEFAULT_MAX_R * (reactiveState.chartScale / 100),\n minRadius: DEFAULT_MIN_R,\n };\n\n settings.size = { cellSize: DEFAULT_CELL_SIZE * (reactiveState.chartScale / 100) };\n\n Object.assign(\n settings,\n getAxesDataFromForms(reactiveState.axesSettings, reactiveState.chartType),\n );\n\n settings.NAValueAs = layerSettings.NAValueAs;\n if (layerSettings.normalizationDirection) {\n settings.normalization = {\n method: layerSettings.normalizationMethod,\n direction: layerSettings.normalizationDirection,\n };\n }\n\n if (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 const nullValueLabel = reactiveState.axesSettings.other.nullValueLabel;\n if (settings.xColumn) {\n settings.xColumn = { ...settings.xColumn, nullValueLabel: nullValueLabel };\n }\n if (settings.yColumn) {\n settings.yColumn = { ...settings.yColumn, nullValueLabel: nullValueLabel };\n }\n if (settings.xGroupBy) {\n settings.xGroupBy = settings.xGroupBy.map((column) => {\n return { ...column, nullValueLabel: nullValueLabel };\n });\n }\n if (settings.yGroupBy) {\n settings.yGroupBy = settings.yGroupBy.map((column) => {\n return { ...column, nullValueLabel: nullValueLabel };\n });\n }\n if (settings.facetBy) {\n settings.facetBy = settings.facetBy.map((column) => {\n return { ...column, nullValueLabel: nullValueLabel };\n });\n }\n\n return settings;\n}\n"],"mappings":";;AAQA,IAAM,IAAoB,IACpB,IAAgB,IAAoB,IAAI,GACxC,IAAgB;AACtB,SAAgB,EACd,GACA,GACA,GACA;CACA,IAAM,IAAW,EAAc,UACzB,IAAgB,EAAc,eAAe,IAC7C,IAAU,EAAc,YAAY,EAAS,WAAW,QAAQ;AAwBtE,CAtBA,EAAS,MAAM;EACb,iBAAiB,EAAc,eAAA;EAC/B,YAAY,EAAY,KAAW,EAAgB,YAAY;EAC/D,WAAW,KAAiB,EAAc,aAAa;EACvD,WAAW;EACZ,EAED,EAAS,OAAO,EAAE,UAAU,KAAqB,EAAc,aAAa,MAAM,EAElF,OAAO,OACL,GACA,EAAqB,EAAc,cAAc,EAAc,UAAU,CAC1E,EAED,EAAS,YAAY,EAAc,WAC/B,EAAc,2BAChB,EAAS,gBAAgB;EACvB,QAAQ,EAAc;EACtB,WAAW,EAAc;EAC1B,IAGC,EAAc,gBAAgB,EAAc,kBAC9C,EAAS,cAAc;EACrB,GAAG,EAAc,gBAAgB,EAAS,YAAY,EAAS,SAAS,SAAS;EACjF,GAAG,EAAc,gBAAgB,EAAS,YAAY,EAAS,SAAS,SAAS;EACjF,QAAQ,EAAc;EACvB;CAGH,IAAM,IAAiB,EAAc,aAAa,MAAM;AAuBxD,QAtBA,AACE,EAAS,YAAU;EAAE,GAAG,EAAS;EAAyB;EAAgB,EAE5E,AACE,EAAS,YAAU;EAAE,GAAG,EAAS;EAAyB;EAAgB,EAE5E,AACE,EAAS,aAAW,EAAS,SAAS,KAAK,OAClC;EAAE,GAAG;EAAwB;EAAgB,EACpD,EAEJ,AACE,EAAS,aAAW,EAAS,SAAS,KAAK,OAClC;EAAE,GAAG;EAAwB;EAAgB,EACpD,EAEJ,AACE,EAAS,YAAU,EAAS,QAAQ,KAAK,OAChC;EAAE,GAAG;EAAwB;EAAgB,EACpD,EAGG"}
1
+ {"version":3,"file":"composeBubbleSettings.js","names":[],"sources":["../../../src/utils/createChartSettingsForRender/composeBubbleSettings.ts"],"sourcesContent":["import type { BubbleSettings } from '@milaboratories/miplots4';\nimport {\n DEFAULT_BLACK,\n PALETTE_MAP,\n} from '../../constantsAesthetic';\nimport type { BubbleLayer, DefaultPalettes, ReactiveState } from '../../types';\nimport { getAxesDataFromForms } from '../index';\n\nconst DEFAULT_CELL_SIZE = 40;\nconst DEFAULT_MAX_R = DEFAULT_CELL_SIZE / 2 - 2;\nconst DEFAULT_MIN_R = 3;\nexport function composeBubbleSettings(\n settings: BubbleSettings,\n reactiveState: ReactiveState,\n defaultPalettes: DefaultPalettes,\n) {\n const template = reactiveState.template as BubbleLayer;\n const layerSettings = reactiveState.layersSettings[template];\n const palette = reactiveState.dataBindAes[settings.valueColor.value]?.palette;\n\n settings.aes = {\n cellStrokeColor: layerSettings.strokeColor ?? DEFAULT_BLACK,\n colorsList: PALETTE_MAP[palette ?? defaultPalettes.continuous].colors,\n maxRadius: DEFAULT_MAX_R * (reactiveState.chartScale / 100),\n minRadius: DEFAULT_MIN_R,\n };\n\n settings.size = { cellSize: DEFAULT_CELL_SIZE * (reactiveState.chartScale / 100) };\n\n Object.assign(\n settings,\n getAxesDataFromForms(reactiveState.axesSettings, reactiveState.chartType),\n );\n\n settings.NAValueAs = layerSettings.NAValueAs;\n settings.showEmptyRows = layerSettings.showEmptyRows;\n settings.showEmptyColumns = layerSettings.showEmptyColumns;\n if (layerSettings.normalizationDirection) {\n settings.normalization = {\n method: layerSettings.normalizationMethod,\n direction: layerSettings.normalizationDirection,\n };\n }\n\n if (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 const nullValueLabel = reactiveState.axesSettings.other.nullValueLabel;\n if (settings.xColumn) {\n settings.xColumn = { ...settings.xColumn, nullValueLabel: nullValueLabel };\n }\n if (settings.yColumn) {\n settings.yColumn = { ...settings.yColumn, nullValueLabel: nullValueLabel };\n }\n if (settings.xGroupBy) {\n settings.xGroupBy = settings.xGroupBy.map((column) => {\n return { ...column, nullValueLabel: nullValueLabel };\n });\n }\n if (settings.yGroupBy) {\n settings.yGroupBy = settings.yGroupBy.map((column) => {\n return { ...column, nullValueLabel: nullValueLabel };\n });\n }\n if (settings.facetBy) {\n settings.facetBy = settings.facetBy.map((column) => {\n return { ...column, nullValueLabel: nullValueLabel };\n });\n }\n\n return settings;\n}\n"],"mappings":";;AAQA,IAAM,IAAoB,IACpB,IAAgB,IAAoB,IAAI,GACxC,IAAgB;AACtB,SAAgB,EACd,GACA,GACA,GACA;CACA,IAAM,IAAW,EAAc,UACzB,IAAgB,EAAc,eAAe,IAC7C,IAAU,EAAc,YAAY,EAAS,WAAW,QAAQ;AA0BtE,CAxBA,EAAS,MAAM;EACb,iBAAiB,EAAc,eAAA;EAC/B,YAAY,EAAY,KAAW,EAAgB,YAAY;EAC/D,WAAW,KAAiB,EAAc,aAAa;EACvD,WAAW;EACZ,EAED,EAAS,OAAO,EAAE,UAAU,KAAqB,EAAc,aAAa,MAAM,EAElF,OAAO,OACL,GACA,EAAqB,EAAc,cAAc,EAAc,UAAU,CAC1E,EAED,EAAS,YAAY,EAAc,WACnC,EAAS,gBAAgB,EAAc,eACvC,EAAS,mBAAmB,EAAc,kBACtC,EAAc,2BAChB,EAAS,gBAAgB;EACvB,QAAQ,EAAc;EACtB,WAAW,EAAc;EAC1B,IAGC,EAAc,gBAAgB,EAAc,kBAC9C,EAAS,cAAc;EACrB,GAAG,EAAc,gBAAgB,EAAS,YAAY,EAAS,SAAS,SAAS;EACjF,GAAG,EAAc,gBAAgB,EAAS,YAAY,EAAS,SAAS,SAAS;EACjF,QAAQ,EAAc;EACvB;CAGH,IAAM,IAAiB,EAAc,aAAa,MAAM;AAuBxD,QAtBA,AACE,EAAS,YAAU;EAAE,GAAG,EAAS;EAAyB;EAAgB,EAE5E,AACE,EAAS,YAAU;EAAE,GAAG,EAAS;EAAyB;EAAgB,EAE5E,AACE,EAAS,aAAW,EAAS,SAAS,KAAK,OAClC;EAAE,GAAG;EAAwB;EAAgB,EACpD,EAEJ,AACE,EAAS,aAAW,EAAS,SAAS,KAAK,OAClC;EAAE,GAAG;EAAwB;EAAgB,EACpD,EAEJ,AACE,EAAS,YAAU,EAAS,QAAQ,KAAK,OAChC;EAAE,GAAG;EAAwB;EAAgB,EACpD,EAGG"}
@@ -134,6 +134,8 @@ export declare function composeHeatmapSettings(settings: HeatmapSettings, reacti
134
134
  method?: "sum" | "mean" | "median" | "min" | "max" | undefined;
135
135
  } | undefined;
136
136
  NAValueAs?: number | null | undefined;
137
+ showEmptyRows?: boolean | undefined;
138
+ showEmptyColumns?: boolean | undefined;
137
139
  valueType?: "continuous" | "discrete" | undefined;
138
140
  annotations?: ({
139
141
  type: "continuous" | "discrete";
@@ -1 +1 @@
1
- {"version":3,"file":"composeHeatmapSettings.d.ts","sourceRoot":"","sources":["../../../src/utils/createChartSettingsForRender/composeHeatmapSettings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"composeHeatmapSettings.d.ts","sourceRoot":"","sources":["../../../src/utils/createChartSettingsForRender/composeHeatmapSettings.ts"],"names":[],"mappings":"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"}
@@ -23,7 +23,7 @@ function n(n, r, i) {
23
23
  t.colors = e[r.dataBindAes[n]?.palette ?? (t.type === "discrete" ? i.categorical : i.continuous)].colors;
24
24
  }), Object.assign(n, t(r.axesSettings, r.chartType)), r.axesSettings.axisX.cellSize !== null && n.size && (n.size.cellWidth = r.axesSettings.axisX.cellSize * (r.chartScale / 100)), r.axesSettings.axisY.cellSize !== null && n.size && (n.size.cellHeight = r.axesSettings.axisY.cellSize * (r.chartScale / 100)), r.template === "heatmapClustered" && n?.valueType !== "discrete" && (n.facetSettings.sharedX = !1, n.facetSettings.sharedY = !1);
25
25
  let s = r.template, c = r.layersSettings[s];
26
- n.NAValueAs = c.NAValueAs, n.valueType === "continuous" && c.normalizationDirection && (n.normalization = {
26
+ n.NAValueAs = c.NAValueAs, n.showEmptyRows = c.showEmptyRows, n.showEmptyColumns = c.showEmptyColumns, n.valueType === "continuous" && c.normalizationDirection && (n.normalization = {
27
27
  method: c.normalizationMethod,
28
28
  direction: c.normalizationDirection
29
29
  }), n.valueType === "continuous" && (c.aggregateByX || c.aggregateByY) && (n.aggregation = {
@@ -1 +1 @@
1
- {"version":3,"file":"composeHeatmapSettings.js","names":[],"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 const nullValueLabel = reactiveState.axesSettings.other.nullValueLabel;\n if (settings.xColumn) {\n settings.xColumn = { ...settings.xColumn, nullValueLabel: nullValueLabel };\n }\n if (settings.yColumn) {\n settings.yColumn = { ...settings.yColumn, nullValueLabel: nullValueLabel };\n }\n if (settings.xGroupBy) {\n settings.xGroupBy = settings.xGroupBy.map((column) => {\n return { ...column, nullValueLabel: nullValueLabel };\n });\n }\n if (settings.yGroupBy) {\n settings.yGroupBy = settings.yGroupBy.map((column) => {\n return { ...column, nullValueLabel: nullValueLabel };\n });\n }\n if (settings.facetBy) {\n settings.facetBy = settings.facetBy.map((column) => {\n return { ...column, nullValueLabel: nullValueLabel };\n });\n }\n if (settings.annotations) {\n settings.annotations = settings.annotations.map((annotation) => {\n return { ...annotation, valueColumn: { ...annotation.valueColumn, nullValueLabel: nullValueLabel } };\n });\n }\n return settings;\n}\n"],"mappings":";;AAKA,SAAgB,EACd,GACA,GACA,GACA;CACA,IAAM,IAAM,EAAE,EACR,IAAU,EAAc,YAAY,EAAS,YAAY,QAAQ;AACvE,KAAI,GAAU,cAAc,YAAY;AACtC,MAAI,EAAc,aAAa,oBAAoB;GACjD,IAAM,IAAQ,EAAc,eAAe;AAQ3C,GAPK,EAAM,uBACT,EAAS,cAAc;IACrB,QAAQ;IACR,WAAW;IACX,QAAQ,CAAC,EAAM;IAChB,GAEE,EAAM,uBACT,EAAS,cAAc;IACrB,QAAQ;IACR,UAAU;IACV,WAAW;IACX,QAAQ,CAAC,EAAM;IAChB;;AAGL,IAAI,aAAa,EAAY,KAAW,EAAe,YAAY;OAEnE,GAAI,aAAa,EAAY,KAAW,UAAU;AAsBpD,CAnBA,EAAS,MAAM,GAEf,EAAS,aAAa,SAAS,MAAqB;EAClD,IAAM,IAAS,EAAiB,YAAY;AAG5C,IAAiB,SAAS,EAFV,EAAc,YAAY,IAAS,YAED,EAAiB,SAAS,aAAa,EAAe,cAAc,EAAe,aAAa;GAClJ,EACF,OAAO,OACL,GACA,EAAqB,EAAc,cAAc,EAAc,UAAU,CAC1E,EAEG,EAAc,aAAa,MAAM,aAAa,QAAQ,EAAS,SACjE,EAAS,KAAK,YAAY,EAAc,aAAa,MAAM,YAAY,EAAc,aAAa,OAEhG,EAAc,aAAa,MAAM,aAAa,QAAQ,EAAS,SACjE,EAAS,KAAK,aAAa,EAAc,aAAa,MAAM,YAAY,EAAc,aAAa,OAEjG,EAAc,aAAa,sBAAsB,GAAU,cAAc,eAC1E,EAAS,cAAoD,UAAU,IACvE,EAAS,cAAoD,UAAU;CAG1E,IAAM,IAAW,EAAc,UACzB,IAAgB,EAAc,eAAe;AA4BnD,CA1BA,EAAS,YAAY,EAAc,WAC/B,EAAS,cAAc,gBAAgB,EAAc,2BACvD,EAAS,gBAAgB;EACvB,QAAQ,EAAc;EACtB,WAAW,EAAc;EAC1B,GAGC,EAAS,cAAc,iBAAiB,EAAc,gBAAgB,EAAc,kBACtF,EAAS,cAAc;EACrB,GAAG,EAAc,gBAAgB,EAAS,YAAY,EAAS,SAAS,SAAS;EACjF,GAAG,EAAc,gBAAgB,EAAS,YAAY,EAAS,SAAS,SAAS;EACjF,QAAQ,EAAc;EACvB,GAGH,EAAS,aAAa,SAAS,MAAe;AAC5C,EAAI,EAAW,SAAS,OACtB,EAAW,gBAAgB,EAAc,aAAa,MAAM,4BAA4B,WAAW,KAAA,IAAY,EAAc,aAAa,MAAM,yBAChJ,EAAW,YAAY,EAAc,aAAa,MAAM,4BAA4B,aAEpF,EAAW,gBAAgB,EAAc,aAAa,MAAM,4BAA4B,WAAW,KAAA,IAAY,EAAc,aAAa,MAAM,yBAChJ,EAAW,YAAY,EAAc,aAAa,MAAM,4BAA4B;GAEtF,EAEE,EAAc,aAAa,MAAM,qBACnC,EAAS,qBAAqB;CAGhC,IAAM,IAAiB,EAAc,aAAa,MAAM;AA2BxD,QA1BA,AACE,EAAS,YAAU;EAAE,GAAG,EAAS;EAAyB;EAAgB,EAE5E,AACE,EAAS,YAAU;EAAE,GAAG,EAAS;EAAyB;EAAgB,EAE5E,AACE,EAAS,aAAW,EAAS,SAAS,KAAK,OAClC;EAAE,GAAG;EAAwB;EAAgB,EACpD,EAEJ,AACE,EAAS,aAAW,EAAS,SAAS,KAAK,OAClC;EAAE,GAAG;EAAwB;EAAgB,EACpD,EAEJ,AACE,EAAS,YAAU,EAAS,QAAQ,KAAK,OAChC;EAAE,GAAG;EAAwB;EAAgB,EACpD,EAEJ,AACE,EAAS,gBAAc,EAAS,YAAY,KAAK,OACxC;EAAE,GAAG;EAAY,aAAa;GAAE,GAAG,EAAW;GAA6B;GAAgB;EAAE,EACpG,EAEG"}
1
+ {"version":3,"file":"composeHeatmapSettings.js","names":[],"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 settings.showEmptyRows = layerSettings.showEmptyRows;\n settings.showEmptyColumns = layerSettings.showEmptyColumns;\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 const nullValueLabel = reactiveState.axesSettings.other.nullValueLabel;\n if (settings.xColumn) {\n settings.xColumn = { ...settings.xColumn, nullValueLabel: nullValueLabel };\n }\n if (settings.yColumn) {\n settings.yColumn = { ...settings.yColumn, nullValueLabel: nullValueLabel };\n }\n if (settings.xGroupBy) {\n settings.xGroupBy = settings.xGroupBy.map((column) => {\n return { ...column, nullValueLabel: nullValueLabel };\n });\n }\n if (settings.yGroupBy) {\n settings.yGroupBy = settings.yGroupBy.map((column) => {\n return { ...column, nullValueLabel: nullValueLabel };\n });\n }\n if (settings.facetBy) {\n settings.facetBy = settings.facetBy.map((column) => {\n return { ...column, nullValueLabel: nullValueLabel };\n });\n }\n if (settings.annotations) {\n settings.annotations = settings.annotations.map((annotation) => {\n return { ...annotation, valueColumn: { ...annotation.valueColumn, nullValueLabel: nullValueLabel } };\n });\n }\n return settings;\n}\n"],"mappings":";;AAKA,SAAgB,EACd,GACA,GACA,GACA;CACA,IAAM,IAAM,EAAE,EACR,IAAU,EAAc,YAAY,EAAS,YAAY,QAAQ;AACvE,KAAI,GAAU,cAAc,YAAY;AACtC,MAAI,EAAc,aAAa,oBAAoB;GACjD,IAAM,IAAQ,EAAc,eAAe;AAQ3C,GAPK,EAAM,uBACT,EAAS,cAAc;IACrB,QAAQ;IACR,WAAW;IACX,QAAQ,CAAC,EAAM;IAChB,GAEE,EAAM,uBACT,EAAS,cAAc;IACrB,QAAQ;IACR,UAAU;IACV,WAAW;IACX,QAAQ,CAAC,EAAM;IAChB;;AAGL,IAAI,aAAa,EAAY,KAAW,EAAe,YAAY;OAEnE,GAAI,aAAa,EAAY,KAAW,UAAU;AAsBpD,CAnBA,EAAS,MAAM,GAEf,EAAS,aAAa,SAAS,MAAqB;EAClD,IAAM,IAAS,EAAiB,YAAY;AAG5C,IAAiB,SAAS,EAFV,EAAc,YAAY,IAAS,YAED,EAAiB,SAAS,aAAa,EAAe,cAAc,EAAe,aAAa;GAClJ,EACF,OAAO,OACL,GACA,EAAqB,EAAc,cAAc,EAAc,UAAU,CAC1E,EAEG,EAAc,aAAa,MAAM,aAAa,QAAQ,EAAS,SACjE,EAAS,KAAK,YAAY,EAAc,aAAa,MAAM,YAAY,EAAc,aAAa,OAEhG,EAAc,aAAa,MAAM,aAAa,QAAQ,EAAS,SACjE,EAAS,KAAK,aAAa,EAAc,aAAa,MAAM,YAAY,EAAc,aAAa,OAEjG,EAAc,aAAa,sBAAsB,GAAU,cAAc,eAC1E,EAAS,cAAoD,UAAU,IACvE,EAAS,cAAoD,UAAU;CAG1E,IAAM,IAAW,EAAc,UACzB,IAAgB,EAAc,eAAe;AA8BnD,CA5BA,EAAS,YAAY,EAAc,WACnC,EAAS,gBAAgB,EAAc,eACvC,EAAS,mBAAmB,EAAc,kBACtC,EAAS,cAAc,gBAAgB,EAAc,2BACvD,EAAS,gBAAgB;EACvB,QAAQ,EAAc;EACtB,WAAW,EAAc;EAC1B,GAGC,EAAS,cAAc,iBAAiB,EAAc,gBAAgB,EAAc,kBACtF,EAAS,cAAc;EACrB,GAAG,EAAc,gBAAgB,EAAS,YAAY,EAAS,SAAS,SAAS;EACjF,GAAG,EAAc,gBAAgB,EAAS,YAAY,EAAS,SAAS,SAAS;EACjF,QAAQ,EAAc;EACvB,GAGH,EAAS,aAAa,SAAS,MAAe;AAC5C,EAAI,EAAW,SAAS,OACtB,EAAW,gBAAgB,EAAc,aAAa,MAAM,4BAA4B,WAAW,KAAA,IAAY,EAAc,aAAa,MAAM,yBAChJ,EAAW,YAAY,EAAc,aAAa,MAAM,4BAA4B,aAEpF,EAAW,gBAAgB,EAAc,aAAa,MAAM,4BAA4B,WAAW,KAAA,IAAY,EAAc,aAAa,MAAM,yBAChJ,EAAW,YAAY,EAAc,aAAa,MAAM,4BAA4B;GAEtF,EAEE,EAAc,aAAa,MAAM,qBACnC,EAAS,qBAAqB;CAGhC,IAAM,IAAiB,EAAc,aAAa,MAAM;AA2BxD,QA1BA,AACE,EAAS,YAAU;EAAE,GAAG,EAAS;EAAyB;EAAgB,EAE5E,AACE,EAAS,YAAU;EAAE,GAAG,EAAS;EAAyB;EAAgB,EAE5E,AACE,EAAS,aAAW,EAAS,SAAS,KAAK,OAClC;EAAE,GAAG;EAAwB;EAAgB,EACpD,EAEJ,AACE,EAAS,aAAW,EAAS,SAAS,KAAK,OAClC;EAAE,GAAG;EAAwB;EAAgB,EACpD,EAEJ,AACE,EAAS,YAAU,EAAS,QAAQ,KAAK,OAChC;EAAE,GAAG;EAAwB;EAAgB,EACpD,EAEJ,AACE,EAAS,gBAAc,EAAS,YAAY,KAAK,OACxC;EAAE,GAAG;EAAY,aAAa;GAAE,GAAG,EAAW;GAA6B;GAAgB;EAAE,EACpG,EAEG"}
@@ -1 +1 @@
1
- {"version":3,"file":"loadUniqueValuesToSave.d.ts","sourceRoot":"","sources":["../../src/utils/loadUniqueValuesToSave.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACnH,OAAO,KAAK,EAEV,UAAU,EACV,aAAa,EACb,UAAU,EACV,UAAU,EACV,mBAAmB,EAEpB,MAAM,0BAA0B,CAAC;AAyDlC,wBAAsB,iCAAiC,CACrD,SAAS,EAAE,mBAAmB,EAC9B,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,EAClC,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC,EACtC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,EAClC,SAAS,EAAE,aAAa,EACxB,yBAAyB,EAAE,4BAA4B,EACvD,aAAa,SAAmB,GAC/B,OAAO,CAAC;IAAE,YAAY,EAAE,uBAAuB,CAAC;IAAC,iBAAiB,EAAE,4BAA4B,CAAA;CAAE,CAAC,CAgFrG;AAED,0HAA0H;AAC1H,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE,mBAAmB,EAC9B,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC,EACtC,mBAAmB,SAAO,GACzB,uBAAuB,CAazB;AAED,wBAAsB,wBAAwB,CAC5C,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC,EACtC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,EAClC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,EAClC,SAAS,EAAE,aAAa,GACvB,OAAO,CAAC,2BAA2B,CAAC,CA4BtC"}
1
+ {"version":3,"file":"loadUniqueValuesToSave.d.ts","sourceRoot":"","sources":["../../src/utils/loadUniqueValuesToSave.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACnH,OAAO,KAAK,EAEV,UAAU,EACV,aAAa,EACb,UAAU,EACV,UAAU,EACV,mBAAmB,EAEpB,MAAM,0BAA0B,CAAC;AAyDlC,wBAAsB,iCAAiC,CACrD,SAAS,EAAE,mBAAmB,EAC9B,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,EAClC,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC,EACtC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,EAClC,SAAS,EAAE,aAAa,EACxB,yBAAyB,EAAE,4BAA4B,EACvD,aAAa,SAAmB,GAC/B,OAAO,CAAC;IAAE,YAAY,EAAE,uBAAuB,CAAC;IAAC,iBAAiB,EAAE,4BAA4B,CAAA;CAAE,CAAC,CAgFrG;AAED,0HAA0H;AAC1H,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE,mBAAmB,EAC9B,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC,EACtC,mBAAmB,SAAO,GACzB,uBAAuB,CAazB;AAED,wBAAsB,wBAAwB,CAC5C,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC,EACtC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,EAClC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,EAClC,SAAS,EAAE,aAAa,GACvB,OAAO,CAAC,2BAA2B,CAAC,CA0BtC"}
@@ -69,7 +69,12 @@ async function u(s, c, u, d, f, p, m = e) {
69
69
  if (t) for (let { selectedSource: n, type: r } of t.selectorStates) ((e === "filters" || e === "highlight") && r === "equals" || e === "tabBy") && _.push(n);
70
70
  });
71
71
  for (let e of _) if (g[e]) continue;
72
- else f && (g[e] = await d.getUniqueSourceValuesWithLabels(f, c, e, m));
72
+ else f && (g[e] = await d.getUniqueSourceValuesWithLabels({
73
+ store: f,
74
+ inputGuide: c,
75
+ selectedSource: e,
76
+ limit: m
77
+ }));
73
78
  return {
74
79
  uniqueValues: h,
75
80
  filterSuggestions: g
@@ -91,8 +96,16 @@ async function f(e, t, n, r) {
91
96
  if (n) for (let { selectedSource: e, selectedFilterValues: r, type: a } of n.selectorStates) (t === "filters" && a === "equals" && r || r) && i.push([e, r]);
92
97
  });
93
98
  let a = {};
94
- for (let [e, o] of i) (await Promise.all(o.map((i) => n.getUniqueSourceValuesWithLabels(r, t, e, 1, void 0, i)))).forEach((t, n) => {
95
- t.values.length > 0 && (a[e] || (a[e] = {}), a[e][o[n]] = t.values[0]);
99
+ for (let [e, o] of i) (await Promise.all(o.map((i) => n.getLabelForValue({
100
+ store: r,
101
+ inputGuide: t,
102
+ selectedSource: e,
103
+ value: i
104
+ })))).forEach((t, n) => {
105
+ a[e] || (a[e] = {}), a[e][o[n]] = {
106
+ value: o[n],
107
+ label: t
108
+ };
96
109
  });
97
110
  return a;
98
111
  }
@@ -1 +1 @@
1
- {"version":3,"file":"loadUniqueValuesToSave.js","names":[],"sources":["../../src/utils/loadUniqueValuesToSave.ts"],"sourcesContent":["import type { FilterLabelsInfoBySourceMap, FilterSuggestionsBySourceMap, UniqueValuesBySourceMap } from '../types';\nimport type {\n ComponentStateFilter,\n Controller,\n DemoDataStore,\n InputGuide,\n InputState,\n PlotDataAndSettings,\n SelectorStateFilter,\n} from '@milaboratories/pf-plots';\nimport type { DendroSettings, DiscreteSettings, HistogramSettings, ScatterplotSettings } from '@milaboratories/miplots4';\nimport { MAX_GROUPS_COUNT } from '../constantsCommon';\n\nconst SAVED_IN_CHART_DATA_DISCRETE_GROUPINGS = ['primaryGrouping', 'secondaryGrouping'];\nconst SAVED_IN_CHART_DATA_SCATTERPLOT_GROUPINGS = ['grouping', 'dotShape'];\nconst SAVED_IN_CHART_DATA_SCATTERPLOT_XY = ['x', 'y'];\nconst SAVED_IN_CHART_DATA_HISTOGRAM_GROUPING = ['grouping'];\nconst SAVED_IN_CHART_DATA_DENDRO_GROUPING = [\n 'nodeColor', 'nodeShape', 'lineColor', 'heatmapAnnotation', // dendro\n];\n\nconst FILTER_INPUTS = ['filters', 'highlight', 'tabBy'] as ((keyof InputState['components'])[]);\n\nconst sortValues = (values: { value: string; label: string }[]) => values.sort((a, b) => a.label.localeCompare(b.label, 'en', { numeric: true }));\n\nconst OVERFLOW_LIMIT = 100;\nfunction addUniqueData(chartData: PlotDataAndSettings, resultMap: UniqueValuesBySourceMap, sourceId: string, maxGroupCount: number, labelId?: string) {\n const data = chartData!.data.byColumns.values[sourceId];\n const dataLabels = labelId ? chartData!.data.byColumns.values[labelId] : null;\n\n const resultSet = new Set();\n const result: { value: string; label: string }[] = [];\n for (let i = 0; i < data.length; i++) {\n const v = String(data[i]);\n if (resultSet.has(v)) {\n continue;\n }\n if (resultSet.size === maxGroupCount) {\n sortValues(result);\n resultMap[sourceId] = {\n list: result.map((el) => el.value),\n labels: result.reduce((res, el) => {\n res[el.value] = el.label;\n return res;\n }, {} as Record<string, string>),\n options: result,\n overflow: result.length > OVERFLOW_LIMIT,\n };\n return;\n }\n resultSet.add(v);\n const label = dataLabels ? String(dataLabels[i]) : v;\n result.push({ value: v, label });\n }\n sortValues(result);\n resultMap[sourceId] = {\n list: result.map((el) => el.value),\n labels: result.reduce((res, el) => {\n res[el.value] = el.label;\n return res;\n }, {} as Record<string, string>),\n options: result,\n overflow: result.length > OVERFLOW_LIMIT,\n };\n}\n\nexport async function getUniqueValuesFromReadyChartData(\n chartData: PlotDataAndSettings,\n inputGuide: InputGuide<InputState>,\n optionsState: InputState['components'],\n controller: Controller<InputState>,\n dataStore: DemoDataStore,\n previousFilterSuggestions: FilterSuggestionsBySourceMap,\n maxGroupCount = MAX_GROUPS_COUNT,\n): Promise<{ uniqueValues: UniqueValuesBySourceMap; filterSuggestions: FilterSuggestionsBySourceMap }> {\n const resultMap: UniqueValuesBySourceMap = {};\n\n if (chartData.settings.type === 'discrete') {\n SAVED_IN_CHART_DATA_DISCRETE_GROUPINGS.forEach((inputName: string) => {\n const savedData = chartData.settings[inputName] as unknown as DiscreteSettings['primaryGrouping'];\n if (savedData) {\n const { columnName } = savedData;\n addUniqueData(chartData, resultMap, columnName.value, maxGroupCount, columnName.valueLabels);\n }\n });\n }\n if (chartData.settings.type === 'scatterplot' || chartData.settings.type === 'scatterplot-umap') {\n SAVED_IN_CHART_DATA_SCATTERPLOT_XY.forEach((inputName: string) => {\n const columnName = chartData.settings[inputName] as unknown as ScatterplotSettings['x'];\n if (columnName) {\n const valueType = inputGuide.getSourceInfo(columnName.value).type;\n if (valueType === 'String') {\n addUniqueData(chartData, resultMap, columnName.value, maxGroupCount, columnName.valueLabels);\n }\n }\n });\n SAVED_IN_CHART_DATA_SCATTERPLOT_GROUPINGS.forEach((inputName: string) => {\n const savedInGrouping = chartData.settings[inputName] as unknown as ScatterplotSettings['grouping'];\n savedInGrouping?.forEach(({ columnName }) => {\n const valueType = inputGuide.getSourceInfo(columnName.value).type;\n if (valueType === 'String' || valueType === 'Int' || valueType === 'Long') {\n addUniqueData(chartData, resultMap, columnName.value, maxGroupCount, columnName.valueLabels);\n }\n });\n });\n }\n\n if (chartData.settings.type === 'histogram') {\n SAVED_IN_CHART_DATA_HISTOGRAM_GROUPING.forEach((inputName: string) => {\n const savedByInputName = chartData.settings[inputName] as unknown as HistogramSettings['grouping'];\n if (savedByInputName) {\n addUniqueData(chartData, resultMap, savedByInputName.value, maxGroupCount, savedByInputName.valueLabels);\n }\n });\n }\n\n if (chartData.settings.type === 'dendro') {\n SAVED_IN_CHART_DATA_DENDRO_GROUPING.forEach((inputName: string) => {\n const savedByInputName = chartData.settings[inputName] as unknown as DendroSettings['heatmapAnnotation'];\n if (savedByInputName) {\n addUniqueData(chartData, resultMap, savedByInputName.value, maxGroupCount, savedByInputName.valueLabels);\n }\n });\n }\n\n const filterSuggestionsMap: FilterSuggestionsBySourceMap = { ...previousFilterSuggestions };\n\n // sources for loading\n const selectedSources: string[] = [];\n ([...inputGuide.fullOptionsSet]).forEach((id) => {\n const info = inputGuide.getSourceInfo(id);\n if (info.kind === 'axis' && info.isNonHomogenous) {\n selectedSources.push(id);\n }\n });\n FILTER_INPUTS.forEach((inputName) => {\n const componentState = optionsState[inputName] as ComponentStateFilter;\n if (!componentState) {\n return;\n }\n for (const { selectedSource, type } of componentState.selectorStates as SelectorStateFilter[]) {\n if (((inputName === 'filters' || inputName === 'highlight') && type === 'equals') || inputName === 'tabBy') {\n selectedSources.push(selectedSource);\n }\n }\n });\n for (const source of selectedSources) {\n if (filterSuggestionsMap[source]) {\n continue;\n } else if (dataStore) {\n filterSuggestionsMap[source] = await controller.getUniqueSourceValuesWithLabels(dataStore, inputGuide, source, maxGroupCount);\n }\n }\n return { uniqueValues: resultMap, filterSuggestions: filterSuggestionsMap };\n}\n\n/** Build facet values map from facetBy columns in chart data, limited by maxFacetsCount (same shape as unique values). */\nexport function getFacetValuesFromReadyChartData(\n chartData: PlotDataAndSettings,\n optionsState: InputState['components'],\n maxSavedFacetsCount = 1000,\n): UniqueValuesBySourceMap {\n const resultMap: UniqueValuesBySourceMap = {};\n const facetBy = optionsState?.facetBy as { selectorStates: { selectedSource: string }[] } | undefined;\n if (!facetBy?.selectorStates?.length) {\n return resultMap;\n }\n const columns = chartData.data.byColumns.values;\n facetBy.selectorStates.forEach(({ selectedSource }) => {\n if (columns[selectedSource]) {\n addUniqueData(chartData, resultMap, selectedSource, maxSavedFacetsCount);\n }\n });\n return resultMap;\n}\n\nexport async function loadFilterLabelsForTitle(\n optionsState: InputState['components'],\n inputGuide: InputGuide<InputState>,\n controller: Controller<InputState>,\n dataStore: DemoDataStore,\n): Promise<FilterLabelsInfoBySourceMap> {\n const selected: [string, string[]][] = [];\n const INPUTS_REQUESTING_LABELS = ['filters', 'tabBy'] as ((keyof InputState['components'])[]);\n INPUTS_REQUESTING_LABELS.forEach((inputName) => {\n const componentState = optionsState[inputName];\n if (componentState) {\n for (const { selectedSource, selectedFilterValues, type } of componentState.selectorStates as SelectorStateFilter[]) {\n if (inputName === 'filters' && type === 'equals' && selectedFilterValues) {\n selected.push([selectedSource, selectedFilterValues]);\n } else if (selectedFilterValues) {\n selected.push([selectedSource, selectedFilterValues]);\n }\n }\n }\n });\n const result: FilterLabelsInfoBySourceMap = {};\n for (const [source, selectedValues] of selected) {\n const uniqueValuesResponses = await Promise.all(selectedValues.map((v) => controller.getUniqueSourceValuesWithLabels(dataStore, inputGuide, source, 1, undefined, v)));\n uniqueValuesResponses.forEach((response, idx) => {\n if (response.values.length > 0) {\n if (!result[source]) {\n result[source] = {};\n }\n result[source][selectedValues[idx] as string] = response.values[0];\n }\n });\n }\n return result;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"loadUniqueValuesToSave.js","names":[],"sources":["../../src/utils/loadUniqueValuesToSave.ts"],"sourcesContent":["import type { FilterLabelsInfoBySourceMap, FilterSuggestionsBySourceMap, UniqueValuesBySourceMap } from '../types';\nimport type {\n ComponentStateFilter,\n Controller,\n DemoDataStore,\n InputGuide,\n InputState,\n PlotDataAndSettings,\n SelectorStateFilter,\n} from '@milaboratories/pf-plots';\nimport type { DendroSettings, DiscreteSettings, HistogramSettings, ScatterplotSettings } from '@milaboratories/miplots4';\nimport { MAX_GROUPS_COUNT } from '../constantsCommon';\n\nconst SAVED_IN_CHART_DATA_DISCRETE_GROUPINGS = ['primaryGrouping', 'secondaryGrouping'];\nconst SAVED_IN_CHART_DATA_SCATTERPLOT_GROUPINGS = ['grouping', 'dotShape'];\nconst SAVED_IN_CHART_DATA_SCATTERPLOT_XY = ['x', 'y'];\nconst SAVED_IN_CHART_DATA_HISTOGRAM_GROUPING = ['grouping'];\nconst SAVED_IN_CHART_DATA_DENDRO_GROUPING = [\n 'nodeColor', 'nodeShape', 'lineColor', 'heatmapAnnotation', // dendro\n];\n\nconst FILTER_INPUTS = ['filters', 'highlight', 'tabBy'] as ((keyof InputState['components'])[]);\n\nconst sortValues = (values: { value: string; label: string }[]) => values.sort((a, b) => a.label.localeCompare(b.label, 'en', { numeric: true }));\n\nconst OVERFLOW_LIMIT = 100;\nfunction addUniqueData(chartData: PlotDataAndSettings, resultMap: UniqueValuesBySourceMap, sourceId: string, maxGroupCount: number, labelId?: string) {\n const data = chartData!.data.byColumns.values[sourceId];\n const dataLabels = labelId ? chartData!.data.byColumns.values[labelId] : null;\n\n const resultSet = new Set();\n const result: { value: string; label: string }[] = [];\n for (let i = 0; i < data.length; i++) {\n const v = String(data[i]);\n if (resultSet.has(v)) {\n continue;\n }\n if (resultSet.size === maxGroupCount) {\n sortValues(result);\n resultMap[sourceId] = {\n list: result.map((el) => el.value),\n labels: result.reduce((res, el) => {\n res[el.value] = el.label;\n return res;\n }, {} as Record<string, string>),\n options: result,\n overflow: result.length > OVERFLOW_LIMIT,\n };\n return;\n }\n resultSet.add(v);\n const label = dataLabels ? String(dataLabels[i]) : v;\n result.push({ value: v, label });\n }\n sortValues(result);\n resultMap[sourceId] = {\n list: result.map((el) => el.value),\n labels: result.reduce((res, el) => {\n res[el.value] = el.label;\n return res;\n }, {} as Record<string, string>),\n options: result,\n overflow: result.length > OVERFLOW_LIMIT,\n };\n}\n\nexport async function getUniqueValuesFromReadyChartData(\n chartData: PlotDataAndSettings,\n inputGuide: InputGuide<InputState>,\n optionsState: InputState['components'],\n controller: Controller<InputState>,\n dataStore: DemoDataStore,\n previousFilterSuggestions: FilterSuggestionsBySourceMap,\n maxGroupCount = MAX_GROUPS_COUNT,\n): Promise<{ uniqueValues: UniqueValuesBySourceMap; filterSuggestions: FilterSuggestionsBySourceMap }> {\n const resultMap: UniqueValuesBySourceMap = {};\n\n if (chartData.settings.type === 'discrete') {\n SAVED_IN_CHART_DATA_DISCRETE_GROUPINGS.forEach((inputName: string) => {\n const savedData = chartData.settings[inputName] as unknown as DiscreteSettings['primaryGrouping'];\n if (savedData) {\n const { columnName } = savedData;\n addUniqueData(chartData, resultMap, columnName.value, maxGroupCount, columnName.valueLabels);\n }\n });\n }\n if (chartData.settings.type === 'scatterplot' || chartData.settings.type === 'scatterplot-umap') {\n SAVED_IN_CHART_DATA_SCATTERPLOT_XY.forEach((inputName: string) => {\n const columnName = chartData.settings[inputName] as unknown as ScatterplotSettings['x'];\n if (columnName) {\n const valueType = inputGuide.getSourceInfo(columnName.value).type;\n if (valueType === 'String') {\n addUniqueData(chartData, resultMap, columnName.value, maxGroupCount, columnName.valueLabels);\n }\n }\n });\n SAVED_IN_CHART_DATA_SCATTERPLOT_GROUPINGS.forEach((inputName: string) => {\n const savedInGrouping = chartData.settings[inputName] as unknown as ScatterplotSettings['grouping'];\n savedInGrouping?.forEach(({ columnName }) => {\n const valueType = inputGuide.getSourceInfo(columnName.value).type;\n if (valueType === 'String' || valueType === 'Int' || valueType === 'Long') {\n addUniqueData(chartData, resultMap, columnName.value, maxGroupCount, columnName.valueLabels);\n }\n });\n });\n }\n\n if (chartData.settings.type === 'histogram') {\n SAVED_IN_CHART_DATA_HISTOGRAM_GROUPING.forEach((inputName: string) => {\n const savedByInputName = chartData.settings[inputName] as unknown as HistogramSettings['grouping'];\n if (savedByInputName) {\n addUniqueData(chartData, resultMap, savedByInputName.value, maxGroupCount, savedByInputName.valueLabels);\n }\n });\n }\n\n if (chartData.settings.type === 'dendro') {\n SAVED_IN_CHART_DATA_DENDRO_GROUPING.forEach((inputName: string) => {\n const savedByInputName = chartData.settings[inputName] as unknown as DendroSettings['heatmapAnnotation'];\n if (savedByInputName) {\n addUniqueData(chartData, resultMap, savedByInputName.value, maxGroupCount, savedByInputName.valueLabels);\n }\n });\n }\n\n const filterSuggestionsMap: FilterSuggestionsBySourceMap = { ...previousFilterSuggestions };\n\n // sources for loading\n const selectedSources: string[] = [];\n ([...inputGuide.fullOptionsSet]).forEach((id) => {\n const info = inputGuide.getSourceInfo(id);\n if (info.kind === 'axis' && info.isNonHomogenous) {\n selectedSources.push(id);\n }\n });\n FILTER_INPUTS.forEach((inputName) => {\n const componentState = optionsState[inputName] as ComponentStateFilter;\n if (!componentState) {\n return;\n }\n for (const { selectedSource, type } of componentState.selectorStates as SelectorStateFilter[]) {\n if (((inputName === 'filters' || inputName === 'highlight') && type === 'equals') || inputName === 'tabBy') {\n selectedSources.push(selectedSource);\n }\n }\n });\n for (const source of selectedSources) {\n if (filterSuggestionsMap[source]) {\n continue;\n } else if (dataStore) {\n filterSuggestionsMap[source] = await controller.getUniqueSourceValuesWithLabels({ store: dataStore, inputGuide, selectedSource: source, limit: maxGroupCount });\n }\n }\n return { uniqueValues: resultMap, filterSuggestions: filterSuggestionsMap };\n}\n\n/** Build facet values map from facetBy columns in chart data, limited by maxFacetsCount (same shape as unique values). */\nexport function getFacetValuesFromReadyChartData(\n chartData: PlotDataAndSettings,\n optionsState: InputState['components'],\n maxSavedFacetsCount = 1000,\n): UniqueValuesBySourceMap {\n const resultMap: UniqueValuesBySourceMap = {};\n const facetBy = optionsState?.facetBy as { selectorStates: { selectedSource: string }[] } | undefined;\n if (!facetBy?.selectorStates?.length) {\n return resultMap;\n }\n const columns = chartData.data.byColumns.values;\n facetBy.selectorStates.forEach(({ selectedSource }) => {\n if (columns[selectedSource]) {\n addUniqueData(chartData, resultMap, selectedSource, maxSavedFacetsCount);\n }\n });\n return resultMap;\n}\n\nexport async function loadFilterLabelsForTitle(\n optionsState: InputState['components'],\n inputGuide: InputGuide<InputState>,\n controller: Controller<InputState>,\n dataStore: DemoDataStore,\n): Promise<FilterLabelsInfoBySourceMap> {\n const selected: [string, string[]][] = [];\n const INPUTS_REQUESTING_LABELS = ['filters', 'tabBy'] as ((keyof InputState['components'])[]);\n INPUTS_REQUESTING_LABELS.forEach((inputName) => {\n const componentState = optionsState[inputName];\n if (componentState) {\n for (const { selectedSource, selectedFilterValues, type } of componentState.selectorStates as SelectorStateFilter[]) {\n if (inputName === 'filters' && type === 'equals' && selectedFilterValues) {\n selected.push([selectedSource, selectedFilterValues]);\n } else if (selectedFilterValues) {\n selected.push([selectedSource, selectedFilterValues]);\n }\n }\n }\n });\n const result: FilterLabelsInfoBySourceMap = {};\n for (const [source, selectedValues] of selected) {\n const labels = await Promise.all(selectedValues.map((v) => controller.getLabelForValue({ store: dataStore, inputGuide, selectedSource: source, value: v })));\n labels.forEach((label, idx) => {\n if (!result[source]) {\n result[source] = {};\n }\n result[source][selectedValues[idx] as string] = { value: selectedValues[idx], label };\n });\n }\n return result;\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milaboratories/graph-maker",
3
- "version": "1.2.8",
3
+ "version": "1.2.9",
4
4
  "type": "module",
5
5
  "main": "dist/ui.js",
6
6
  "types": "dist/ui.d.ts",
@@ -38,8 +38,8 @@
38
38
  "d3-hierarchy": "^3.1.2",
39
39
  "d3-scale": "^4.0.2",
40
40
  "vue": "^3.5.24",
41
- "@milaboratories/miplots4": "1.0.178",
42
- "@milaboratories/pf-plots": "1.1.69"
41
+ "@milaboratories/miplots4": "1.0.179",
42
+ "@milaboratories/pf-plots": "1.1.70"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@milaboratories/build-configs": "^1.5.0",