@milaboratories/graph-maker 1.1.221 → 1.1.223
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Chart.vue.d.ts.map +1 -1
- package/dist/components/Chart.vue.js +32 -32
- package/dist/components/Chart.vue.js.map +1 -1
- package/dist/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js +3 -2
- package/dist/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js.map +1 -1
- package/dist/forms/DataMappingForm/DiscreteForm.vue.js +3 -2
- package/dist/forms/DataMappingForm/DiscreteForm.vue.js.map +1 -1
- package/dist/forms/StatisticsForm/DiscreteStatisticsForm.vue.js +16 -15
- package/dist/forms/StatisticsForm/DiscreteStatisticsForm.vue.js.map +1 -1
- package/dist/index.vue.d.ts +0 -6
- package/dist/index.vue.d.ts.map +1 -1
- package/dist/index.vue.js +184 -209
- package/dist/index.vue.js.map +1 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +106 -121
- package/dist/store.js.map +1 -1
- package/dist/types.d.ts +4 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/addFixedOptionsToState.d.ts.map +1 -1
- package/dist/utils/addFixedOptionsToState.js +9 -9
- package/dist/utils/addFixedOptionsToState.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeBubbleSettings.js +6 -5
- package/dist/utils/createChartSettingsForRender/composeBubbleSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeDiscreteSettings.js +9 -8
- package/dist/utils/createChartSettingsForRender/composeDiscreteSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.js +3 -2
- package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeHistogramSettings.js +3 -2
- package/dist/utils/createChartSettingsForRender/composeHistogramSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeScatterplotSettings.js +18 -17
- package/dist/utils/createChartSettingsForRender/composeScatterplotSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js +9 -8
- package/dist/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js.map +1 -1
- package/dist/utils/getUsedAesInMapping.js +3 -2
- package/dist/utils/getUsedAesInMapping.js.map +1 -1
- package/dist/utils/loadDefaultSources.d.ts +5 -10
- package/dist/utils/loadDefaultSources.d.ts.map +1 -1
- package/dist/utils/loadDefaultSources.js +80 -48
- package/dist/utils/loadDefaultSources.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.vue.d.ts","sourceRoot":"","sources":["../../src/components/Chart.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Chart.vue.d.ts","sourceRoot":"","sources":["../../src/components/Chart.vue"],"names":[],"mappings":"AAmQA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAY1E,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAO/D,KAAK,WAAW,GAAG;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC1C,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AA+JF,iBAAS,cAAc;WAyQT,OAAO,IAA6B;;yBAXrB,GAAG;;;;;;EAgB/B;AAiCD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;;;;;kBASnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAQpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent as X, ref as h, watch as y, computed as p, createElementBlock as
|
|
1
|
+
import { defineComponent as X, ref as h, watch as y, computed as p, createElementBlock as C, openBlock as s, createElementVNode as S, createVNode as k, createCommentVNode as c, createBlock as d, withKeys as J, resolveDynamicComponent as Q, renderSlot as Y, unref as r, withCtx as B, createTextVNode as D, normalizeClass as R, withModifiers as U } from "vue";
|
|
2
2
|
import { PlNotificationAlert as _, PlDropdown as ee, PlAutocomplete as te, PlBtnGhost as $ } from "@platforma-sdk/ui-vue";
|
|
3
3
|
import ae from "./DendroTable.vue.js";
|
|
4
4
|
import oe from "./DendroTooltip.vue.js";
|
|
@@ -29,26 +29,26 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
|
|
|
29
29
|
},
|
|
30
30
|
emits: ["graph-title-update", "dendro-node-select", "dendro-tooltip-btn-click"],
|
|
31
31
|
setup(n, { emit: I }) {
|
|
32
|
-
const
|
|
33
|
-
y(() =>
|
|
32
|
+
const x = I, o = ie(), P = n, g = h(P.graphTitle);
|
|
33
|
+
y(() => P.graphTitle, (t) => {
|
|
34
34
|
g.value = t;
|
|
35
35
|
});
|
|
36
|
-
const
|
|
36
|
+
const G = p(() => {
|
|
37
37
|
var t;
|
|
38
38
|
return (t = o.value.reactive.optionsState.components.tabBy) == null ? void 0 : t.selectorStates[0];
|
|
39
39
|
}), v = p(() => {
|
|
40
40
|
var t;
|
|
41
|
-
return (t =
|
|
42
|
-
}),
|
|
41
|
+
return (t = G.value) == null ? void 0 : t.selectedSource;
|
|
42
|
+
}), b = p(() => {
|
|
43
43
|
var t, e;
|
|
44
|
-
return (e = (t =
|
|
44
|
+
return (e = (t = G.value) == null ? void 0 : t.selectedFilterValues) == null ? void 0 : e[0];
|
|
45
45
|
}), L = p(() => {
|
|
46
46
|
var t;
|
|
47
47
|
return (t = o.value.reactive.optionsState.components.filters) == null ? void 0 : t.selectorStates;
|
|
48
|
-
}), m = h(
|
|
49
|
-
y(() => v.value, (
|
|
50
|
-
|
|
51
|
-
}, {
|
|
48
|
+
}), m = h(b.value);
|
|
49
|
+
y([() => v.value, () => b.value], () => {
|
|
50
|
+
m.value = b.value;
|
|
51
|
+
}, { deep: !0 });
|
|
52
52
|
async function W(t) {
|
|
53
53
|
var a;
|
|
54
54
|
if (!o.value.columnsDataStore.value)
|
|
@@ -78,10 +78,10 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
|
|
|
78
78
|
let e = t;
|
|
79
79
|
if (t === null && (e = await F(v.value, "")), e != null && e.length) {
|
|
80
80
|
const l = e[0].value;
|
|
81
|
-
m.value = l,
|
|
81
|
+
m.value = l, T(l);
|
|
82
82
|
}
|
|
83
83
|
}, { immediate: !0 });
|
|
84
|
-
function
|
|
84
|
+
function T(t) {
|
|
85
85
|
const e = o.value.reactive.optionsState.components.tabBy.selectorStates;
|
|
86
86
|
e.length && (o.value.reactive.optionsState.components.tabBy.selectorStates = [{
|
|
87
87
|
...e[0],
|
|
@@ -91,19 +91,19 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
|
|
|
91
91
|
}
|
|
92
92
|
function q(t) {
|
|
93
93
|
const e = t.currentTarget;
|
|
94
|
-
g.value = e.value,
|
|
94
|
+
g.value = e.value, x("graph-title-update", e.value);
|
|
95
95
|
}
|
|
96
96
|
function Z(t) {
|
|
97
|
-
|
|
97
|
+
x("dendro-node-select", t);
|
|
98
98
|
}
|
|
99
99
|
async function F(t, e, l = "label") {
|
|
100
100
|
var N;
|
|
101
101
|
if (!o.value.columnsDataStore.value)
|
|
102
102
|
return Promise.resolve([]);
|
|
103
|
-
const a = L.value.find((
|
|
103
|
+
const a = L.value.find((V) => V.selectedSource === t);
|
|
104
104
|
if (a && (((N = a.selectedFilterValues) == null ? void 0 : N.length) ?? 0) > 0) {
|
|
105
|
-
const
|
|
106
|
-
return e ? O.filter((
|
|
105
|
+
const V = a.selectedFilterValues ?? [], O = await Promise.all(V.map((w) => H(t, w)));
|
|
106
|
+
return e ? O.filter((w) => w.label.toLowerCase().includes(e.toLowerCase())) : O;
|
|
107
107
|
}
|
|
108
108
|
const i = l === "label" ? e : void 0, u = l === "value" ? e : void 0;
|
|
109
109
|
return (await o.value.controller.getUniqueSourceValuesWithLabels(o.value.columnsDataStore.value, o.value.inputGuide.value, t, A, i, u)).values;
|
|
@@ -155,7 +155,7 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
|
|
|
155
155
|
}
|
|
156
156
|
return (t, e) => {
|
|
157
157
|
var l;
|
|
158
|
-
return s(),
|
|
158
|
+
return s(), C("div", ue, [
|
|
159
159
|
S("div", ce, [
|
|
160
160
|
S("input", {
|
|
161
161
|
class: "chart_title",
|
|
@@ -175,25 +175,25 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
|
|
|
175
175
|
Y(t.$slots, "default")
|
|
176
176
|
])
|
|
177
177
|
]),
|
|
178
|
-
|
|
178
|
+
k(r(_), {
|
|
179
179
|
modelValue: r(o).reactive.showTooltipHint,
|
|
180
180
|
"onUpdate:modelValue": e[1] || (e[1] = (a) => r(o).reactive.showTooltipHint = a),
|
|
181
181
|
type: "success",
|
|
182
182
|
class: "chart_tooltipHint",
|
|
183
183
|
width: "170px"
|
|
184
184
|
}, {
|
|
185
|
-
default:
|
|
186
|
-
|
|
185
|
+
default: B(() => [...e[10] || (e[10] = [
|
|
186
|
+
D(" Hit enter to pin tooltip ", -1)
|
|
187
187
|
])]),
|
|
188
188
|
_: 1
|
|
189
189
|
}, 8, ["modelValue"]),
|
|
190
|
-
v.value ? (s(),
|
|
190
|
+
v.value ? (s(), C("div", me, [
|
|
191
191
|
f.value || f.value === void 0 && r(o).loading.inputGuide ? (s(), d(r(ee), {
|
|
192
192
|
key: 0,
|
|
193
193
|
modelValue: m.value,
|
|
194
194
|
"onUpdate:modelValue": [
|
|
195
195
|
e[2] || (e[2] = (a) => m.value = a),
|
|
196
|
-
e[3] || (e[3] = (a) =>
|
|
196
|
+
e[3] || (e[3] = (a) => T(a))
|
|
197
197
|
],
|
|
198
198
|
label: "Show for",
|
|
199
199
|
options: f.value
|
|
@@ -202,7 +202,7 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
|
|
|
202
202
|
modelValue: m.value,
|
|
203
203
|
"onUpdate:modelValue": [
|
|
204
204
|
e[4] || (e[4] = (a) => m.value = a),
|
|
205
|
-
e[5] || (e[5] = (a) =>
|
|
205
|
+
e[5] || (e[5] = (a) => T(a))
|
|
206
206
|
],
|
|
207
207
|
label: "Show for",
|
|
208
208
|
"options-search": (a, i) => F(v.value, a, i)
|
|
@@ -221,7 +221,7 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
|
|
|
221
221
|
chart_activeLassoSelection: ((l = r(o).reactive.lassoControlsState) == null ? void 0 : l.mode) === "selection"
|
|
222
222
|
})
|
|
223
223
|
}, null, 2),
|
|
224
|
-
|
|
224
|
+
k(se, {
|
|
225
225
|
graphStatus: n.graphStatus,
|
|
226
226
|
top: v.value ? 24 : 0,
|
|
227
227
|
bottom: 11,
|
|
@@ -244,8 +244,8 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
|
|
|
244
244
|
})
|
|
245
245
|
}, null, 8, ["info", "containerRef", "tooltipBtn"])) : c("", !0)
|
|
246
246
|
], 2),
|
|
247
|
-
n.graphStatus === "ready" ? (s(),
|
|
248
|
-
|
|
247
|
+
n.graphStatus === "ready" ? (s(), C("div", pe, [
|
|
248
|
+
k(re),
|
|
249
249
|
r(o).reactive.chartType === "scatterplot-umap" ? (s(), d(le, {
|
|
250
250
|
key: 0,
|
|
251
251
|
"chart-ref": n.chartRef,
|
|
@@ -256,8 +256,8 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
|
|
|
256
256
|
icon: "view-hide",
|
|
257
257
|
onClick: e[8] || (e[8] = U(() => M(), ["stop"]))
|
|
258
258
|
}, {
|
|
259
|
-
default:
|
|
260
|
-
|
|
259
|
+
default: B(() => [...e[11] || (e[11] = [
|
|
260
|
+
D(" Hidden (primary) ", -1)
|
|
261
261
|
])]),
|
|
262
262
|
_: 1
|
|
263
263
|
})) : c("", !0),
|
|
@@ -266,8 +266,8 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
|
|
|
266
266
|
icon: "view-hide",
|
|
267
267
|
onClick: e[9] || (e[9] = U(() => z(), ["stop"]))
|
|
268
268
|
}, {
|
|
269
|
-
default:
|
|
270
|
-
|
|
269
|
+
default: B(() => [...e[12] || (e[12] = [
|
|
270
|
+
D(" Hidden (secondary) ", -1)
|
|
271
271
|
])]),
|
|
272
272
|
_: 1
|
|
273
273
|
})) : c("", !0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.vue.js","sources":["../../src/components/Chart.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ChartInterface, ErrorInfo } from '@milaboratories/miplots4';\nimport type { SelectorStateFilter } from '@milaboratories/pf-plots';\nimport type { ListOption } from '@platforma-sdk/ui-vue';\nimport { PlAutocomplete, PlBtnGhost, PlDropdown, PlNotificationAlert } from '@platforma-sdk/ui-vue';\nimport { computed, ref, watch } from 'vue';\nimport DendroTable from '../components/DendroTable.vue';\nimport DendroTooltip from '../components/DendroTooltip.vue';\nimport LassoControls from '../components/LassoControls/index.vue';\nimport Zoom from '../components/Zoom/index.vue';\nimport { MAX_SEARCH_OPTIONS_LIST_LENGTH } from '../constantsCommon.ts';\nimport EditIcon from '../icons/EditIcon.vue';\nimport { useStore } from '../store.ts';\nimport type { GraphStatus, StatusTextData } from '../types.ts';\nimport GraphStatusScreen from './GraphStatusScreen.vue';\n\nconst emit = defineEmits(['graph-title-update', 'dendro-node-select', 'dendro-tooltip-btn-click']);\n\nconst store = useStore();\n\nconst props = defineProps<{\n graphStatus: GraphStatus;\n graphTitle: string;\n dendroTooltipButton?: string;\n chartData: Record<string, unknown> | null;\n chartRef: ChartInterface | null;\n errorInfo: ErrorInfo | null;\n customStatusText?: Partial<StatusTextData>;\n allowTitleEditing?: boolean;\n isScatterplotZoomChanged?: boolean;\n}>();\n\nconst title = ref(props.graphTitle);\n// title can be updated from graph-maker settings\nwatch(() => props.graphTitle, (graphTitle) => {\n title.value = graphTitle;\n});\n\nconst tabByState = computed(() => store.value.reactive.optionsState.components.tabBy?.selectorStates[0] as SelectorStateFilter | undefined);\nconst tabBySource = computed(() => tabByState.value?.selectedSource);\nconst tabByFilterValue = computed(() => tabByState.value?.selectedFilterValues?.[0]);\nconst filtersStates = computed(() => store.value.reactive.optionsState.components.filters?.selectorStates as SelectorStateFilter[]);\n\nconst tabByLocalValue = ref(tabByFilterValue.value);\nwatch(() => tabBySource.value, (value, prevValue) => { // tabBy column changed, needs to update selected value\n if (value !== prevValue) {\n tabByLocalValue.value = tabByFilterValue.value;\n }\n}, { immediate: true });\n\n// try to load full options list, without search query; if result is not overflow, use values from it in regular dropdown, no autocomplete;\nasync function loadOptions(sourceId: string) {\n if (!store.value.columnsDataStore.value) {\n return Promise.resolve([]);\n }\n // if the same source is selected in filters, return only selected values;\n const filtersStateWithTheSameSource = filtersStates.value.find((state) => state.selectedSource === sourceId) as SelectorStateFilter | undefined;\n if (filtersStateWithTheSameSource && (filtersStateWithTheSameSource.selectedFilterValues?.length ?? 0) > 0) {\n const selectedValues = filtersStateWithTheSameSource.selectedFilterValues ?? [];\n return Promise.all(selectedValues.map((selectedValue) => searchSelectedFilterValueOptions(sourceId, selectedValue)));\n }\n const response = await store.value.controller.getUniqueSourceValuesWithLabels(\n store.value.columnsDataStore.value,\n store.value.inputGuide.value,\n sourceId,\n MAX_SEARCH_OPTIONS_LIST_LENGTH,\n );\n return response.overflow ? null : response.values;\n}\nconst preloadedOptions = ref<ListOption[] | null | undefined>();\nwatch([\n () => tabBySource.value,\n () => store.value.loading.inputGuide,\n], async ([v, loading]) => {\n if (v === undefined || loading || !store.value.columnsDataStore.value) {\n return undefined;\n }\n preloadedOptions.value = await loadOptions(v);\n}, { immediate: true });\n\nwatch(() => preloadedOptions.value, async (opts) => {\n if (\n tabBySource.value === undefined // no tabBy selected\n || tabByLocalValue.value !== undefined // tabBy selected and has selected value\n || opts === undefined // options not loaded yet\n ) {\n return;\n }\n let availableOptions = opts;\n if (opts === null) { // options loaded but too many unique values\n availableOptions = await searchFilterOptions(tabBySource.value, '');\n }\n if (availableOptions?.length) {\n const nextFilterValue = availableOptions[0].value as string;\n tabByLocalValue.value = nextFilterValue;\n onFilterValueUpdate(nextFilterValue);\n }\n}, { immediate: true });\n\nfunction onFilterValueUpdate(value: string) {\n const prevSelectorStates = store.value.reactive.optionsState.components.tabBy.selectorStates;\n if (prevSelectorStates.length) {\n store.value.reactive.optionsState.components.tabBy.selectorStates = [{\n ...prevSelectorStates[0],\n type: 'equals',\n selectedFilterValues: [value],\n }];\n }\n}\n\nfunction onTitleChange(e: Event) {\n const target = e.currentTarget as HTMLInputElement;\n title.value = target.value;\n emit('graph-title-update', target.value);\n}\n\nfunction onTableRowSelect(id: number) {\n emit('dendro-node-select', id);\n}\n\n// search options for autocomplete component; use label-mode search for options and value-mode for search of label of selected by default value;\nasync function searchFilterOptions(sourceId: string, searchStr: string, type: 'value' | 'label' = 'label') {\n if (!store.value.columnsDataStore.value) {\n return Promise.resolve([]);\n }\n // if the same source is selected in filters, return only selected values;\n const filtersStateWithTheSameSource = filtersStates.value.find((state) => state.selectedSource === sourceId) as SelectorStateFilter | undefined;\n if (filtersStateWithTheSameSource && (filtersStateWithTheSameSource.selectedFilterValues?.length ?? 0) > 0) {\n const selectedValues = filtersStateWithTheSameSource.selectedFilterValues ?? [];\n const results = await Promise.all(selectedValues.map((selectedValue) => searchSelectedFilterValueOptions(sourceId, selectedValue)));\n return searchStr ? results.filter((v) => v.label.toLowerCase().includes(searchStr.toLowerCase())) : results;\n }\n const searchLabelStr = type === 'label' ? searchStr : undefined;\n const searchValueStr = type === 'value' ? searchStr : undefined;\n return (await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore.value, store.value.inputGuide.value, sourceId, MAX_SEARCH_OPTIONS_LIST_LENGTH, searchLabelStr, searchValueStr)).values;\n}\n\n// search by value, not by label;\nasync function searchSelectedFilterValueOptions(sourceId: string, selectedValue: string) {\n if (!store.value.columnsDataStore.value) {\n return Promise.resolve({ value: selectedValue, label: ' ' }); // don't show non-human-readable value\n }\n const value = await store.value.controller.getUniqueSourceValuesWithLabels(\n store.value.columnsDataStore.value, store.value.inputGuide.value,\n sourceId, 1, undefined, selectedValue).then((v) => v.values[0]);\n return value;\n}\n\nconst chartContainerRef = ref();\n\nconst hasPrimaryHidden = computed(() => {\n if (store.value.reactive.chartType !== 'discrete') {\n return false;\n }\n const optionsState = store.value.reactive.optionsState.components;\n if (optionsState.primaryGrouping?.selectorStates.length) {\n const columnName = optionsState.primaryGrouping.selectorStates[0].selectedSource;\n const dataBindAes = store.value.reactive.dataBindAes[columnName];\n if (dataBindAes?.type === 'categorical' && dataBindAes.hidden) {\n return Object.values(dataBindAes.hidden).length > 0 && dataBindAes.order.some((v) => dataBindAes.hidden?.[v]);\n }\n }\n return false;\n});\nconst hasSecondaryHidden = computed(() => {\n if (store.value.reactive.chartType !== 'discrete') {\n return false;\n }\n const optionsState = store.value.reactive.optionsState.components;\n if (optionsState.secondaryGrouping?.selectorStates.length) {\n const columnName = optionsState.secondaryGrouping.selectorStates[0].selectedSource;\n const dataBindAes = store.value.reactive.dataBindAes[columnName];\n if (dataBindAes?.type === 'categorical' && dataBindAes.hidden) {\n return Object.values(dataBindAes.hidden).length > 0 && dataBindAes.order.some((v) => dataBindAes.hidden?.[v]);\n }\n }\n return false;\n});\nfunction openAxesSettingsPrimary() {\n store.value.reactive.tabDefaultState['axes'].reorderPrimaryOpen = true;\n store.value.reactive.currentTab = 'axes';\n}\nfunction openAxesSettingsSecondary() {\n store.value.reactive.tabDefaultState['axes'].reorderSecondaryOpen = true;\n store.value.reactive.currentTab = 'axes';\n}\n\n</script>\n\n<template>\n <div class=\"chart_container\">\n <div class=\"chart_header\">\n <input\n class=\"chart_title\"\n :value=\"title\"\n :disabled=\"!allowTitleEditing\"\n @change=\"onTitleChange\"\n @keyup.enter=\"(e) => { (e.target as HTMLInputElement)?.blur() }\"\n />\n <component :is=\"EditIcon\" v-if=\"allowTitleEditing\" class=\"chart_titleEdit\" />\n <div class=\"chart_titleLineSlot\">\n <slot />\n </div>\n </div>\n <PlNotificationAlert\n v-model=\"store.reactive.showTooltipHint\" type=\"success\" class=\"chart_tooltipHint\"\n width=\"170px\"\n >\n Hit enter to pin tooltip\n </PlNotificationAlert>\n <div v-if=\"tabBySource\" class=\"chart_tabBy\">\n <PlDropdown\n v-if=\"preloadedOptions || (preloadedOptions === undefined && store.loading.inputGuide)\"\n v-model=\"tabByLocalValue\" label=\"Show for\" :options=\"preloadedOptions\"\n @update:modelValue=\"(v) => onFilterValueUpdate(v as string)\"\n />\n <PlAutocomplete\n v-else v-model=\"tabByLocalValue\" label=\"Show for\"\n :options-search=\"(str, type) => searchFilterOptions(tabBySource as string, str, type)\"\n @update:modelValue=\"(v) => onFilterValueUpdate(v as string)\"\n />\n </div>\n <div\n ref=\"chartContainerRef\" class=\"chart_main-content\"\n :class=\"[{ 'chart_main-content__dendro': store.reactive.chartType === 'dendro' }, 'pl-scrollable']\"\n >\n <div\n id=\"chartSvgContainer\" :class=\"{\n 'chart_ready': graphStatus === 'ready',\n 'chart_loading': graphStatus === 'loading',\n 'chart_activeLassoSelection': store.reactive.lassoControlsState?.mode === 'selection'\n }\"\n />\n <GraphStatusScreen :graphStatus=\"graphStatus\" :top=\"tabBySource ? 24 : 0\" :bottom=\"11\" :customStatusText=\"customStatusText\" :errorInfo=\"errorInfo\"/>\n <DendroTable\n v-if=\"store.reactive.chartType === 'dendro' && chartData && store.reactive.layersSettings.dendro.showTable\"\n :chartData=\"chartData\" @row-select=\"onTableRowSelect\"\n />\n <DendroTooltip\n v-if=\"store.reactive.dendroInfoByClick\" :info=\"store.reactive.dendroInfoByClick\"\n :containerRef=\"chartContainerRef\" :tooltipBtn=\"dendroTooltipButton\"\n @tooltip-btn-click=\"(id: string) => $emit('dendro-tooltip-btn-click', id)\" @close=\"\n store.reactive.dendroInfoByClick = null;\n $emit('dendro-node-select', null);\n \"\n />\n </div>\n <div v-if=\"graphStatus === 'ready'\" class=\"chart_controls\">\n <Zoom />\n <LassoControls v-if=\"store.reactive.chartType === 'scatterplot-umap'\" :chart-ref=\"chartRef\" :isScatterplotZoomChanged=\"isScatterplotZoomChanged\"/>\n <PlBtnGhost v-if=\"hasPrimaryHidden\" icon=\"view-hide\" @click.stop=\"() => openAxesSettingsPrimary()\">\n Hidden (primary)\n </PlBtnGhost>\n <PlBtnGhost v-if=\"hasSecondaryHidden\" icon=\"view-hide\" @click.stop=\"() => openAxesSettingsSecondary()\">\n Hidden (secondary)\n </PlBtnGhost>\n </div>\n </div>\n</template>\n"],"names":["emit","__emit","store","useStore","props","__props","title","ref","watch","graphTitle","tabByState","computed","_a","tabBySource","tabByFilterValue","_b","filtersStates","tabByLocalValue","value","prevValue","loadOptions","sourceId","filtersStateWithTheSameSource","state","selectedValues","selectedValue","searchSelectedFilterValueOptions","response","MAX_SEARCH_OPTIONS_LIST_LENGTH","preloadedOptions","v","loading","opts","availableOptions","searchFilterOptions","nextFilterValue","onFilterValueUpdate","prevSelectorStates","onTitleChange","e","target","onTableRowSelect","id","searchStr","type","results","searchLabelStr","searchValueStr","chartContainerRef","hasPrimaryHidden","optionsState","columnName","dataBindAes","hasSecondaryHidden","openAxesSettingsPrimary","openAxesSettingsSecondary","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_createBlock","_resolveDynamicComponent","EditIcon","_hoisted_4","_renderSlot","_ctx","_createVNode","_unref","PlNotificationAlert","$event","_cache","_hoisted_5","PlDropdown","PlAutocomplete","str","_normalizeClass","GraphStatusScreen","DendroTable","DendroTooltip","$emit","_hoisted_6","Zoom","LassoControls","PlBtnGhost"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Chart.vue.js","sources":["../../src/components/Chart.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ChartInterface, ErrorInfo } from '@milaboratories/miplots4';\nimport type { SelectorStateFilter } from '@milaboratories/pf-plots';\nimport type { ListOption } from '@platforma-sdk/ui-vue';\nimport { PlAutocomplete, PlBtnGhost, PlDropdown, PlNotificationAlert } from '@platforma-sdk/ui-vue';\nimport { computed, ref, watch } from 'vue';\nimport DendroTable from '../components/DendroTable.vue';\nimport DendroTooltip from '../components/DendroTooltip.vue';\nimport LassoControls from '../components/LassoControls/index.vue';\nimport Zoom from '../components/Zoom/index.vue';\nimport { MAX_SEARCH_OPTIONS_LIST_LENGTH } from '../constantsCommon.ts';\nimport EditIcon from '../icons/EditIcon.vue';\nimport { useStore } from '../store.ts';\nimport type { GraphStatus, StatusTextData } from '../types.ts';\nimport GraphStatusScreen from './GraphStatusScreen.vue';\n\nconst emit = defineEmits(['graph-title-update', 'dendro-node-select', 'dendro-tooltip-btn-click']);\n\nconst store = useStore();\n\nconst props = defineProps<{\n graphStatus: GraphStatus;\n graphTitle: string;\n dendroTooltipButton?: string;\n chartData: Record<string, unknown> | null;\n chartRef: ChartInterface | null;\n errorInfo: ErrorInfo | null;\n customStatusText?: Partial<StatusTextData>;\n allowTitleEditing?: boolean;\n isScatterplotZoomChanged?: boolean;\n}>();\n\nconst title = ref(props.graphTitle);\n// title can be updated from graph-maker settings\nwatch(() => props.graphTitle, (graphTitle) => {\n title.value = graphTitle;\n});\n\nconst tabByState = computed(() => store.value.reactive.optionsState.components.tabBy?.selectorStates[0] as SelectorStateFilter | undefined);\nconst tabBySource = computed(() => tabByState.value?.selectedSource);\nconst tabByFilterValue = computed(() => tabByState.value?.selectedFilterValues?.[0]);\nconst filtersStates = computed(() => store.value.reactive.optionsState.components.filters?.selectorStates as SelectorStateFilter[]);\n\nconst tabByLocalValue = ref(tabByFilterValue.value);\nwatch([() => tabBySource.value, () => tabByFilterValue.value], () => { // tabBy column changed, needs to update selected value\n tabByLocalValue.value = tabByFilterValue.value;\n}, { deep: true });\n\n// try to load full options list, without search query; if result is not overflow, use values from it in regular dropdown, no autocomplete;\nasync function loadOptions(sourceId: string) {\n if (!store.value.columnsDataStore.value) {\n return Promise.resolve([]);\n }\n // if the same source is selected in filters, return only selected values;\n const filtersStateWithTheSameSource = filtersStates.value.find((state) => state.selectedSource === sourceId) as SelectorStateFilter | undefined;\n if (filtersStateWithTheSameSource && (filtersStateWithTheSameSource.selectedFilterValues?.length ?? 0) > 0) {\n const selectedValues = filtersStateWithTheSameSource.selectedFilterValues ?? [];\n return Promise.all(selectedValues.map((selectedValue) => searchSelectedFilterValueOptions(sourceId, selectedValue)));\n }\n const response = await store.value.controller.getUniqueSourceValuesWithLabels(\n store.value.columnsDataStore.value,\n store.value.inputGuide.value,\n sourceId,\n MAX_SEARCH_OPTIONS_LIST_LENGTH,\n );\n return response.overflow ? null : response.values;\n}\nconst preloadedOptions = ref<ListOption[] | null | undefined>();\nwatch([\n () => tabBySource.value,\n () => store.value.loading.inputGuide,\n], async ([v, loading]) => {\n if (v === undefined || loading || !store.value.columnsDataStore.value) {\n return undefined;\n }\n preloadedOptions.value = await loadOptions(v);\n}, { immediate: true });\n\nwatch(() => preloadedOptions.value, async (opts) => {\n if (\n tabBySource.value === undefined // no tabBy selected\n || tabByLocalValue.value !== undefined // tabBy selected and has selected value\n || opts === undefined // options not loaded yet\n ) {\n return;\n }\n let availableOptions = opts;\n if (opts === null) { // options loaded but too many unique values\n availableOptions = await searchFilterOptions(tabBySource.value, '');\n }\n if (availableOptions?.length) {\n const nextFilterValue = availableOptions[0].value as string;\n tabByLocalValue.value = nextFilterValue;\n onFilterValueUpdate(nextFilterValue);\n }\n}, { immediate: true });\n\nfunction onFilterValueUpdate(value: string) {\n const prevSelectorStates = store.value.reactive.optionsState.components.tabBy.selectorStates;\n if (prevSelectorStates.length) {\n store.value.reactive.optionsState.components.tabBy.selectorStates = [{\n ...prevSelectorStates[0],\n type: 'equals',\n selectedFilterValues: [value],\n }];\n }\n}\n\nfunction onTitleChange(e: Event) {\n const target = e.currentTarget as HTMLInputElement;\n title.value = target.value;\n emit('graph-title-update', target.value);\n}\n\nfunction onTableRowSelect(id: number) {\n emit('dendro-node-select', id);\n}\n\n// search options for autocomplete component; use label-mode search for options and value-mode for search of label of selected by default value;\nasync function searchFilterOptions(sourceId: string, searchStr: string, type: 'value' | 'label' = 'label') {\n if (!store.value.columnsDataStore.value) {\n return Promise.resolve([]);\n }\n // if the same source is selected in filters, return only selected values;\n const filtersStateWithTheSameSource = filtersStates.value.find((state) => state.selectedSource === sourceId) as SelectorStateFilter | undefined;\n if (filtersStateWithTheSameSource && (filtersStateWithTheSameSource.selectedFilterValues?.length ?? 0) > 0) {\n const selectedValues = filtersStateWithTheSameSource.selectedFilterValues ?? [];\n const results = await Promise.all(selectedValues.map((selectedValue) => searchSelectedFilterValueOptions(sourceId, selectedValue)));\n return searchStr ? results.filter((v) => v.label.toLowerCase().includes(searchStr.toLowerCase())) : results;\n }\n const searchLabelStr = type === 'label' ? searchStr : undefined;\n const searchValueStr = type === 'value' ? searchStr : undefined;\n return (await store.value.controller.getUniqueSourceValuesWithLabels(store.value.columnsDataStore.value, store.value.inputGuide.value, sourceId, MAX_SEARCH_OPTIONS_LIST_LENGTH, searchLabelStr, searchValueStr)).values;\n}\n\n// search by value, not by label;\nasync function searchSelectedFilterValueOptions(sourceId: string, selectedValue: string) {\n if (!store.value.columnsDataStore.value) {\n return Promise.resolve({ value: selectedValue, label: ' ' }); // don't show non-human-readable value\n }\n const value = await store.value.controller.getUniqueSourceValuesWithLabels(\n store.value.columnsDataStore.value, store.value.inputGuide.value,\n sourceId, 1, undefined, selectedValue).then((v) => v.values[0]);\n return value;\n}\n\nconst chartContainerRef = ref();\n\nconst hasPrimaryHidden = computed(() => {\n if (store.value.reactive.chartType !== 'discrete') {\n return false;\n }\n const optionsState = store.value.reactive.optionsState.components;\n if (optionsState.primaryGrouping?.selectorStates.length) {\n const columnName = optionsState.primaryGrouping.selectorStates[0].selectedSource;\n const dataBindAes = store.value.reactive.dataBindAes[columnName];\n if (dataBindAes?.type === 'categorical' && dataBindAes.hidden) {\n return Object.values(dataBindAes.hidden).length > 0 && dataBindAes.order.some((v) => dataBindAes.hidden?.[v]);\n }\n }\n return false;\n});\nconst hasSecondaryHidden = computed(() => {\n if (store.value.reactive.chartType !== 'discrete') {\n return false;\n }\n const optionsState = store.value.reactive.optionsState.components;\n if (optionsState.secondaryGrouping?.selectorStates.length) {\n const columnName = optionsState.secondaryGrouping.selectorStates[0].selectedSource;\n const dataBindAes = store.value.reactive.dataBindAes[columnName];\n if (dataBindAes?.type === 'categorical' && dataBindAes.hidden) {\n return Object.values(dataBindAes.hidden).length > 0 && dataBindAes.order.some((v) => dataBindAes.hidden?.[v]);\n }\n }\n return false;\n});\nfunction openAxesSettingsPrimary() {\n store.value.reactive.tabDefaultState['axes'].reorderPrimaryOpen = true;\n store.value.reactive.currentTab = 'axes';\n}\nfunction openAxesSettingsSecondary() {\n store.value.reactive.tabDefaultState['axes'].reorderSecondaryOpen = true;\n store.value.reactive.currentTab = 'axes';\n}\n\n</script>\n\n<template>\n <div class=\"chart_container\">\n <div class=\"chart_header\">\n <input\n class=\"chart_title\"\n :value=\"title\"\n :disabled=\"!allowTitleEditing\"\n @change=\"onTitleChange\"\n @keyup.enter=\"(e) => { (e.target as HTMLInputElement)?.blur() }\"\n />\n <component :is=\"EditIcon\" v-if=\"allowTitleEditing\" class=\"chart_titleEdit\" />\n <div class=\"chart_titleLineSlot\">\n <slot />\n </div>\n </div>\n <PlNotificationAlert\n v-model=\"store.reactive.showTooltipHint\" type=\"success\" class=\"chart_tooltipHint\"\n width=\"170px\"\n >\n Hit enter to pin tooltip\n </PlNotificationAlert>\n <div v-if=\"tabBySource\" class=\"chart_tabBy\">\n <PlDropdown\n v-if=\"preloadedOptions || (preloadedOptions === undefined && store.loading.inputGuide)\"\n v-model=\"tabByLocalValue\" label=\"Show for\" :options=\"preloadedOptions\"\n @update:modelValue=\"(v) => onFilterValueUpdate(v as string)\"\n />\n <PlAutocomplete\n v-else v-model=\"tabByLocalValue\" label=\"Show for\"\n :options-search=\"(str, type) => searchFilterOptions(tabBySource as string, str, type)\"\n @update:modelValue=\"(v) => onFilterValueUpdate(v as string)\"\n />\n </div>\n <div\n ref=\"chartContainerRef\" class=\"chart_main-content\"\n :class=\"[{ 'chart_main-content__dendro': store.reactive.chartType === 'dendro' }, 'pl-scrollable']\"\n >\n <div\n id=\"chartSvgContainer\" :class=\"{\n 'chart_ready': graphStatus === 'ready',\n 'chart_loading': graphStatus === 'loading',\n 'chart_activeLassoSelection': store.reactive.lassoControlsState?.mode === 'selection'\n }\"\n />\n <GraphStatusScreen :graphStatus=\"graphStatus\" :top=\"tabBySource ? 24 : 0\" :bottom=\"11\" :customStatusText=\"customStatusText\" :errorInfo=\"errorInfo\"/>\n <DendroTable\n v-if=\"store.reactive.chartType === 'dendro' && chartData && store.reactive.layersSettings.dendro.showTable\"\n :chartData=\"chartData\" @row-select=\"onTableRowSelect\"\n />\n <DendroTooltip\n v-if=\"store.reactive.dendroInfoByClick\" :info=\"store.reactive.dendroInfoByClick\"\n :containerRef=\"chartContainerRef\" :tooltipBtn=\"dendroTooltipButton\"\n @tooltip-btn-click=\"(id: string) => $emit('dendro-tooltip-btn-click', id)\" @close=\"\n store.reactive.dendroInfoByClick = null;\n $emit('dendro-node-select', null);\n \"\n />\n </div>\n <div v-if=\"graphStatus === 'ready'\" class=\"chart_controls\">\n <Zoom />\n <LassoControls v-if=\"store.reactive.chartType === 'scatterplot-umap'\" :chart-ref=\"chartRef\" :isScatterplotZoomChanged=\"isScatterplotZoomChanged\"/>\n <PlBtnGhost v-if=\"hasPrimaryHidden\" icon=\"view-hide\" @click.stop=\"() => openAxesSettingsPrimary()\">\n Hidden (primary)\n </PlBtnGhost>\n <PlBtnGhost v-if=\"hasSecondaryHidden\" icon=\"view-hide\" @click.stop=\"() => openAxesSettingsSecondary()\">\n Hidden (secondary)\n </PlBtnGhost>\n </div>\n </div>\n</template>\n"],"names":["emit","__emit","store","useStore","props","__props","title","ref","watch","graphTitle","tabByState","computed","_a","tabBySource","tabByFilterValue","_b","filtersStates","tabByLocalValue","loadOptions","sourceId","filtersStateWithTheSameSource","state","selectedValues","selectedValue","searchSelectedFilterValueOptions","response","MAX_SEARCH_OPTIONS_LIST_LENGTH","preloadedOptions","v","loading","opts","availableOptions","searchFilterOptions","nextFilterValue","onFilterValueUpdate","value","prevSelectorStates","onTitleChange","e","target","onTableRowSelect","id","searchStr","type","results","searchLabelStr","searchValueStr","chartContainerRef","hasPrimaryHidden","optionsState","columnName","dataBindAes","hasSecondaryHidden","openAxesSettingsPrimary","openAxesSettingsSecondary","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_createBlock","_resolveDynamicComponent","EditIcon","_hoisted_4","_renderSlot","_ctx","_createVNode","_unref","PlNotificationAlert","$event","_cache","_hoisted_5","PlDropdown","PlAutocomplete","str","_normalizeClass","GraphStatusScreen","DendroTable","DendroTooltip","$emit","_hoisted_6","Zoom","LassoControls","PlBtnGhost"],"mappings":"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"}
|
|
@@ -25,6 +25,7 @@ import "../../constantsAesthetic.js";
|
|
|
25
25
|
import { getDiscreteLabelsRotation as Ve } from "../../utils/createChartSettingsForRender/getAxesDataFromForms.js";
|
|
26
26
|
import "@milaboratories/pf-plots";
|
|
27
27
|
import "@platforma-sdk/model";
|
|
28
|
+
import "@milaboratories/helpers";
|
|
28
29
|
const be = { class: "axes-settings-list" }, ye = { class: "axes-settings-options-row block" }, Se = {
|
|
29
30
|
key: 0,
|
|
30
31
|
class: "axes-settings-input"
|
|
@@ -43,7 +44,7 @@ const be = { class: "axes-settings-list" }, ye = { class: "axes-settings-options
|
|
|
43
44
|
}, Xe = { class: "axes-settings-options-row" }, Oe = {
|
|
44
45
|
key: 4,
|
|
45
46
|
class: "axes-settings-options-row"
|
|
46
|
-
}, Ue = { class: "axes-settings-options-row block" }, Pe = { key: 5 }, Ie = { class: "axes-settings-options-row table" }, Le = { class: "axes-settings-options-row table" }, Ge = { class: "axes-settings-options-row table" }, Ne = { class: "axes-settings-options-row block" }, Ce = { key: 0 }, Re = { class: "axes-settings-options-row" }, Fe = { class: "axes-settings-options-row block" }, De = { class: "axes-settings-options-row table" }, Ye = { class: "axes-settings-options-row table" }, Be = { class: "other" }, Me = { class: "axes-settings-options-row" }, Ee = { class: "axes-settings-options-row" }, $e = { class: "axes-settings-options-row" }, He = { class: "axes-settings-options-row" }, qe = { class: "axes-settings-options-row block" },
|
|
47
|
+
}, Ue = { class: "axes-settings-options-row block" }, Pe = { key: 5 }, Ie = { class: "axes-settings-options-row table" }, Le = { class: "axes-settings-options-row table" }, Ge = { class: "axes-settings-options-row table" }, Ne = { class: "axes-settings-options-row block" }, Ce = { key: 0 }, Re = { class: "axes-settings-options-row" }, Fe = { class: "axes-settings-options-row block" }, De = { class: "axes-settings-options-row table" }, Ye = { class: "axes-settings-options-row table" }, Be = { class: "other" }, Me = { class: "axes-settings-options-row" }, Ee = { class: "axes-settings-options-row" }, $e = { class: "axes-settings-options-row" }, He = { class: "axes-settings-options-row" }, qe = { class: "axes-settings-options-row block" }, Sl = /* @__PURE__ */ oe({
|
|
47
48
|
__name: "DiscreteAxesSettingsForm",
|
|
48
49
|
setup(ze) {
|
|
49
50
|
const i = se(), t = i.value.reactive.axesSettings, A = {
|
|
@@ -430,6 +431,6 @@ const be = { class: "axes-settings-list" }, ye = { class: "axes-settings-options
|
|
|
430
431
|
}
|
|
431
432
|
});
|
|
432
433
|
export {
|
|
433
|
-
|
|
434
|
+
Sl as default
|
|
434
435
|
};
|
|
435
436
|
//# sourceMappingURL=DiscreteAxesSettingsForm.vue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiscreteAxesSettingsForm.vue.js","sources":["../../../src/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { Slider, PlToggleSwitch, PlCheckbox } from '@platforma-sdk/ui-vue';\nimport { useStore } from '../../store';\nimport CollapsableBlock from '../../components/CollapsableBlock.vue';\nimport Right from '../../icons/Right.vue';\nimport Down from '../../icons/Down.vue';\nimport { PlTextField, PlBtnGroup } from '@platforma-sdk/ui-vue';\nimport BtnIconGroup from '../../components/BtnIconGroup.vue';\nimport AlignLeft from '../../icons/AlignLeft.vue';\nimport AlignCenter from '../../icons/AlignCenter.vue';\nimport AlignRight from '../../icons/AlignRight.vue';\nimport FrameFull from '../../icons/FrameFull.vue';\nimport FrameEmpty from '../../icons/FrameEmpty.vue';\nimport Rotation0 from '../../icons/Rotation0.vue';\nimport Rotation45 from '../../icons/Rotation45.vue';\nimport Rotation90 from '../../icons/Rotation90.vue';\nimport FrameLeft from '../../icons/FrameLeft.vue';\nimport FrameBottom from '../../icons/FrameBottom.vue';\nimport FrameLeftBottom from '../../icons/FrameLeftBottom.vue';\nimport AesButton from '../../components/AesButton.vue';\nimport FormWrapper from '../../components/AesSettings/FormWrapper.vue';\nimport { computed, onMounted, ref } from 'vue';\nimport AesDataMapping from '../../components/AesSettings/AesDataMappingDiscrete.vue';\nimport type { AestheticMappingCategorical } from '../../dataBindAes';\nimport { createDefaultMapping } from '../../dataBindAes';\nimport type { LabelsRotation } from '../../types';\nimport { getDiscreteLabelsRotation } from '../../utils';\nimport { watch } from 'vue';\n\nconst store = useStore();\nconst settings = store.value.reactive.axesSettings;\nconst blockSettings = {\n height: 40,\n horizontalPadding: 12,\n defaultState: 'open' as 'open' | 'close',\n contentPadding: '0 24px',\n};\n\nconst OPTIONS_TITLE_ALIGN = [\n { value: 'left', icon: AlignLeft },\n { value: 'center', icon: AlignCenter },\n { value: 'right', icon: AlignRight },\n];\n// const OPTIONS_FACET_FRAME = [\n// {value: 'empty', icon: FrameEmpty},\n// {value: 'full', icon: FrameFull},\n// ]\nconst OPTIONS_LABELS_ROTATION = [\n { value: 'center', icon: Rotation0 },\n { value: '45deg', icon: Rotation45 },\n { value: '90deg', icon: Rotation90 },\n];\nconst OPTIONS_AXIS_LABEL_MODE = [\n { value: 'auto', text: 'Auto' },\n { value: 'custom', text: 'Custom' },\n { value: 'hidden', text: 'Hidden' },\n];\nconst OPTIONS_SCALE = [\n { value: 'linear', text: 'Linear' },\n { value: 'log', text: 'Log' },\n];\nconst OPTIONS_CHART_FRAME = [\n { value: 'empty', icon: FrameEmpty },\n { value: 'left', icon: FrameLeft },\n { value: 'bottom', icon: FrameBottom },\n { value: 'left-bottom', icon: FrameLeftBottom },\n { value: 'full', icon: FrameFull },\n];\n\nconst inputGuide = computed(() => store.value.inputGuide.value);\nconst labelsInfo = computed(() => store.value.uniqueValuesData.value);\n\nconst reorderPrimaryOpen = ref(false);\nconst reorderSecondaryOpen = ref(false);\n\nconst defaultReorderPrimaryOpen = computed(() => store.value.reactive.tabDefaultState['axes'].reorderPrimaryOpen);\nconst defaultReorderSecondaryOpen = computed(() => store.value.reactive.tabDefaultState['axes'].reorderSecondaryOpen);\nonMounted(() => {\n if (defaultReorderPrimaryOpen.value) {\n reorderPrimaryOpen.value = true;\n }\n if (defaultReorderSecondaryOpen.value) {\n reorderSecondaryOpen.value = true;\n }\n});\nwatch(() => defaultReorderPrimaryOpen.value, (v) => {\n if (v) {\n reorderSecondaryOpen.value = false;\n reorderPrimaryOpen.value = true;\n }\n});\nwatch(() => defaultReorderSecondaryOpen.value, (v) => {\n if (v) {\n reorderPrimaryOpen.value = false;\n reorderSecondaryOpen.value = true;\n }\n});\n\nconst primaryGrouping = computed(() => store.value.reactive.optionsState.components.primaryGrouping?.selectorStates[0]?.selectedSource);\nconst secondaryGrouping = computed(() => store.value.reactive.optionsState.components.secondaryGrouping?.selectorStates[0]?.selectedSource);\n\nconst primaryGroups = computed(() => store.value.commonHelpersData.primaryGroups.value);\nconst secondaryGroups = computed(() => store.value.commonHelpersData.secondaryGroups.value);\n\nconst usedAesInMapping = computed(() => store.value.commonHelpersData.usedAesInMapping.value);\n\nconst mappingPrimary = ref(store.value.reactive.dataBindAes[primaryGrouping.value] as AestheticMappingCategorical ?? createDefaultMapping(primaryGroups.value, store.value.defaultPalette.categorical));\nconst mappingSecondary = ref(store.value.reactive.dataBindAes[secondaryGrouping.value] as AestheticMappingCategorical ?? createDefaultMapping(secondaryGroups.value, store.value.defaultPalette.categorical));\n\nconst primaryInfo = computed(() => {\n if (primaryGrouping.value) {\n const selectedSourceInfo = inputGuide.value.getSourceInfo(primaryGrouping.value) ?? null;\n const valueLabels = labelsInfo.value[primaryGrouping.value]?.labels ?? null;\n return {\n selectedSourceInfo,\n labels: primaryGroups.value.reduce((res: Record<string, string>, v) => {\n res[v] = valueLabels?.[v] ?? String(v);\n return res;\n }, {}),\n };\n }\n return null;\n});\nconst secondaryInfo = computed(() => {\n if (secondaryGrouping.value) {\n const selectedSourceInfo = inputGuide.value.getSourceInfo(secondaryGrouping.value) ?? null;\n const valueLabels = labelsInfo.value[secondaryGrouping.value]?.labels ?? null;\n return {\n selectedSourceInfo,\n labels: secondaryGroups.value.reduce((res: Record<string, string>, v) => {\n res[v] = valueLabels?.[v] ?? String(v);\n return res;\n }, {}),\n };\n }\n return null;\n});\n\nfunction updateOrder(value: AestheticMappingCategorical, sourceId: string) {\n store.value.reactive.dataBindAes[sourceId] = value;\n}\n\nconst OPTIONS_FACET_SHARED = [\n { text: 'X', value: 'x' },\n { text: 'Y', value: 'y' },\n { text: 'XY', value: 'xy' },\n { text: 'None', value: 'none' },\n];\n\nconst primaryOptions = computed(() => labelsInfo.value[primaryGrouping.value]);\nconst xLabelsRotation = computed({\n get() {\n return getDiscreteLabelsRotation(settings.axisX.labelsRotation, primaryOptions.value?.options);\n },\n set(value: LabelsRotation) {\n settings.axisX.labelsRotation = value;\n },\n});\n</script>\n\n<template>\n <div class=\"axes-form\" @click=\"(e) => e.stopPropagation()\">\n <h3 class=\"axes-title\">\n Axes\n </h3>\n <div class=\"axes-settings-list\">\n <!-- Chart title -->\n <CollapsableBlock title=\"Title\" :settings=\"blockSettings\" :icon=\"Right\" :icon-open=\"Down\">\n <div class=\"axes-settings-options-row block\">\n <PlBtnGroup\n v-model=\"settings.title.mode\"\n label=\"Title\"\n :options=\"OPTIONS_AXIS_LABEL_MODE\"\n :compact=\"true\"\n />\n </div>\n <div v-if=\"settings.title.mode === 'custom'\" class=\"axes-settings-input\">\n <PlTextField\n v-model=\"settings.title.value\"\n label=\"Chart title\"\n placeholder=\"Chart title\"\n />\n </div>\n <div class=\"axes-settings-options-row\">\n <span>Alignment</span>\n <BtnIconGroup v-model=\"settings.title.position\" :options=\"OPTIONS_TITLE_ALIGN\"/>\n </div>\n <!-- <div class=\"axes-settings-options-row\">-->\n <!-- <span>Facet frame style</span>-->\n <!-- <btn-icon-group :options=\"OPTIONS_FACET_FRAME\" v-model=\"settings.title.facetTitleFrame\"/>-->\n <!-- </div>-->\n </CollapsableBlock>\n <!-- X axis settings-->\n <CollapsableBlock title=\"X-axis\" :settings=\"blockSettings\" :icon=\"Right\" :icon-open=\"Down\">\n <div v-if=\"primaryGroups.length > 1\" class=\"axes-settings-options-row\">\n <span>Primary groups order: </span>\n <AesButton :data=\"{type: 'data', value: null}\" @click=\"reorderPrimaryOpen = true\" />\n <template v-if=\"reorderPrimaryOpen && primaryInfo\">\n <FormWrapper\n title=\"Reorder primary groups\"\n back-title=\"Axes Settings\"\n @form:open=\"store.reactive.tabDefaultState['axes'].reorderPrimaryOpen = false\"\n @form:close=\"reorderPrimaryOpen = false\"\n >\n <AesDataMapping\n v-model=\"mappingPrimary\"\n :column-value-labels=\"primaryInfo.labels\"\n :data-column-label=\"primaryInfo.selectedSourceInfo?.label ?? ''\"\n :used-aes-in-mapping=\"usedAesInMapping[primaryGrouping]\"\n allow-reordering\n allow-hiding\n :allow-null-option=\"settings.axisX.allowNullPrimaryGroups\"\n @update:modelValue=\"(value:AestheticMappingCategorical) => updateOrder(value, primaryGrouping)\"\n />\n </FormWrapper>\n </template>\n </div>\n <div v-if=\"primaryGroups.length > 1\" class=\"axes-settings-options-row\">\n <span>Allow null primary group</span>\n <PlToggleSwitch v-model=\"settings.axisX.allowNullPrimaryGroups\" />\n </div>\n <div v-if=\"secondaryGroups.length > 1\" class=\"axes-settings-options-row\">\n <span>Secondary groups order: </span>\n <AesButton :data=\"{type: 'data', value: null}\" @click=\"reorderSecondaryOpen = true\" />\n <template v-if=\"reorderSecondaryOpen && secondaryInfo\">\n <FormWrapper\n title=\"Reorder secondary groups\"\n back-title=\"Axes Settings\"\n @form:open=\"store.reactive.tabDefaultState['axes'].reorderSecondaryOpen = false\"\n @form:close=\"reorderSecondaryOpen = false\"\n >\n <AesDataMapping\n v-model=\"mappingSecondary\"\n :column-value-labels=\"secondaryInfo.labels\"\n :data-column-label=\"secondaryInfo.selectedSourceInfo?.label ?? ''\"\n :used-aes-in-mapping=\"usedAesInMapping[secondaryGrouping]\"\n allow-reordering\n allow-hiding\n :allow-null-option=\"settings.axisX.allowNullSecondaryGroups\"\n @update:modelValue=\"(value:AestheticMappingCategorical) => updateOrder(value, secondaryGrouping)\"\n />\n </FormWrapper>\n </template>\n </div>\n <div v-if=\"secondaryGroups.length > 1\" class=\"axes-settings-options-row\">\n <span>Allow null secondary group</span>\n <PlToggleSwitch v-model=\"settings.axisX.allowNullSecondaryGroups\" />\n </div>\n <div class=\"axes-settings-options-row\">\n <PlCheckbox v-model=\"settings.axisX.hideAxisLabels\">Hide axis labels</PlCheckbox>\n </div>\n <div v-if=\"!settings.axisX.hideAxisLabels\" class=\"axes-settings-options-row\">\n <span>Labels rotation</span>\n <BtnIconGroup v-model=\"xLabelsRotation\" :options=\"OPTIONS_LABELS_ROTATION\" />\n </div>\n <div class=\"axes-settings-options-row block\">\n <PlBtnGroup\n v-model=\"settings.axisX.titleMode\"\n label=\"Title\"\n :options=\"OPTIONS_AXIS_LABEL_MODE\"\n :compact=\"true\"\n />\n </div>\n <div v-if=\"settings.axisX.titleMode === 'custom'\">\n <PlTextField\n v-model=\"settings.axisX.customTitle\"\n label=\"Text\"\n placeholder=\"Type\"\n />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Gridlines</span>\n <PlToggleSwitch v-model=\"settings.axisX.gridlines\" />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Lines between categories</span>\n <PlToggleSwitch v-model=\"settings.axisX.linesBetweenCategories\" />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Ticks</span>\n <PlToggleSwitch v-model=\"settings.axisX.ticks\" />\n </div>\n </CollapsableBlock>\n <!-- Y axis settings-->\n <CollapsableBlock title=\"Y-axis\" :settings=\"blockSettings\" :icon=\"Right\" :icon-open=\"Down\">\n <div class=\"axes-settings-options-row block\">\n <PlBtnGroup\n v-model=\"settings.axisY.titleMode\"\n label=\"Title\"\n :options=\"OPTIONS_AXIS_LABEL_MODE\"\n :compact=\"true\"\n />\n </div>\n <div v-if=\"settings.axisY.titleMode === 'custom'\">\n <PlTextField\n v-model=\"settings.axisY.customTitle\"\n label=\"Text\"\n placeholder=\"Type\"\n />\n </div>\n <div class=\"axes-settings-options-row\">\n <PlCheckbox v-model=\"settings.axisY.hideAxisLabels\">Hide axis labels</PlCheckbox>\n </div>\n <div class=\"axes-settings-options-row block\">\n <PlBtnGroup\n v-model=\"settings.axisY.scale\"\n label=\"Scale\"\n :options=\"OPTIONS_SCALE\"\n :compact=\"true\"\n />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Gridlines</span>\n <PlToggleSwitch v-model=\"settings.axisY.gridlines\" />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Ticks</span>\n <PlToggleSwitch v-model=\"settings.axisY.ticks\" />\n </div>\n </CollapsableBlock>\n <!-- Facet settings-->\n <div class=\"other\">\n <div class=\"axes-settings-options-row\">\n <PlCheckbox v-model=\"settings.other.showLegend\">Show legend</PlCheckbox>\n </div>\n <div class=\"axes-settings-options-row\">\n <span>Frame</span>\n <BtnIconGroup v-model=\"settings.other.frame\" :options=\"OPTIONS_CHART_FRAME\" />\n </div>\n <div class=\"axes-settings-options-row\">\n <span>Reverse axes</span>\n <PlToggleSwitch v-model=\"settings.other.reverse\" />\n </div>\n <div class=\"axes-settings-options-row\">\n <Slider\n v-model=\"settings.other.facetColumns\"\n :style=\"{width: '100%'}\"\n label=\"Facet column count\"\n :min=\"1\"\n :max=\"6\"\n :step=\"1\"\n :breakpoints=\"true\"\n mode=\"input\"\n />\n </div>\n <div class=\"axes-settings-options-row block\">\n <PlBtnGroup\n v-model=\"settings.other.facetSharedBy\"\n label=\"Facet shared by\"\n :options=\"OPTIONS_FACET_SHARED\"\n :compact=\"true\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"names":["store","useStore","settings","blockSettings","OPTIONS_TITLE_ALIGN","AlignLeft","AlignCenter","AlignRight","OPTIONS_LABELS_ROTATION","Rotation0","Rotation45","Rotation90","OPTIONS_AXIS_LABEL_MODE","OPTIONS_SCALE","OPTIONS_CHART_FRAME","FrameEmpty","FrameLeft","FrameBottom","FrameLeftBottom","FrameFull","inputGuide","computed","labelsInfo","reorderPrimaryOpen","ref","reorderSecondaryOpen","defaultReorderPrimaryOpen","defaultReorderSecondaryOpen","onMounted","watch","v","primaryGrouping","_b","_a","secondaryGrouping","primaryGroups","secondaryGroups","usedAesInMapping","mappingPrimary","createDefaultMapping","mappingSecondary","primaryInfo","selectedSourceInfo","valueLabels","res","secondaryInfo","updateOrder","value","sourceId","OPTIONS_FACET_SHARED","primaryOptions","xLabelsRotation","getDiscreteLabelsRotation","_createElementBlock","_cache","e","_createElementVNode","_hoisted_1","_createVNode","CollapsableBlock","Right","Down","_hoisted_2","_unref","PlBtnGroup","$event","_openBlock","_hoisted_3","PlTextField","_hoisted_4","BtnIconGroup","_hoisted_5","AesButton","_createBlock","FormWrapper","AesDataMapping","_hoisted_6","PlToggleSwitch","_hoisted_7","_hoisted_8","_hoisted_9","PlCheckbox","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","Slider","_hoisted_27"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DiscreteAxesSettingsForm.vue.js","sources":["../../../src/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { Slider, PlToggleSwitch, PlCheckbox } from '@platforma-sdk/ui-vue';\nimport { useStore } from '../../store';\nimport CollapsableBlock from '../../components/CollapsableBlock.vue';\nimport Right from '../../icons/Right.vue';\nimport Down from '../../icons/Down.vue';\nimport { PlTextField, PlBtnGroup } from '@platforma-sdk/ui-vue';\nimport BtnIconGroup from '../../components/BtnIconGroup.vue';\nimport AlignLeft from '../../icons/AlignLeft.vue';\nimport AlignCenter from '../../icons/AlignCenter.vue';\nimport AlignRight from '../../icons/AlignRight.vue';\nimport FrameFull from '../../icons/FrameFull.vue';\nimport FrameEmpty from '../../icons/FrameEmpty.vue';\nimport Rotation0 from '../../icons/Rotation0.vue';\nimport Rotation45 from '../../icons/Rotation45.vue';\nimport Rotation90 from '../../icons/Rotation90.vue';\nimport FrameLeft from '../../icons/FrameLeft.vue';\nimport FrameBottom from '../../icons/FrameBottom.vue';\nimport FrameLeftBottom from '../../icons/FrameLeftBottom.vue';\nimport AesButton from '../../components/AesButton.vue';\nimport FormWrapper from '../../components/AesSettings/FormWrapper.vue';\nimport { computed, onMounted, ref } from 'vue';\nimport AesDataMapping from '../../components/AesSettings/AesDataMappingDiscrete.vue';\nimport type { AestheticMappingCategorical } from '../../dataBindAes';\nimport { createDefaultMapping } from '../../dataBindAes';\nimport type { LabelsRotation } from '../../types';\nimport { getDiscreteLabelsRotation } from '../../utils';\nimport { watch } from 'vue';\n\nconst store = useStore();\nconst settings = store.value.reactive.axesSettings;\nconst blockSettings = {\n height: 40,\n horizontalPadding: 12,\n defaultState: 'open' as 'open' | 'close',\n contentPadding: '0 24px',\n};\n\nconst OPTIONS_TITLE_ALIGN = [\n { value: 'left', icon: AlignLeft },\n { value: 'center', icon: AlignCenter },\n { value: 'right', icon: AlignRight },\n];\n// const OPTIONS_FACET_FRAME = [\n// {value: 'empty', icon: FrameEmpty},\n// {value: 'full', icon: FrameFull},\n// ]\nconst OPTIONS_LABELS_ROTATION = [\n { value: 'center', icon: Rotation0 },\n { value: '45deg', icon: Rotation45 },\n { value: '90deg', icon: Rotation90 },\n];\nconst OPTIONS_AXIS_LABEL_MODE = [\n { value: 'auto', text: 'Auto' },\n { value: 'custom', text: 'Custom' },\n { value: 'hidden', text: 'Hidden' },\n];\nconst OPTIONS_SCALE = [\n { value: 'linear', text: 'Linear' },\n { value: 'log', text: 'Log' },\n];\nconst OPTIONS_CHART_FRAME = [\n { value: 'empty', icon: FrameEmpty },\n { value: 'left', icon: FrameLeft },\n { value: 'bottom', icon: FrameBottom },\n { value: 'left-bottom', icon: FrameLeftBottom },\n { value: 'full', icon: FrameFull },\n];\n\nconst inputGuide = computed(() => store.value.inputGuide.value);\nconst labelsInfo = computed(() => store.value.uniqueValuesData.value);\n\nconst reorderPrimaryOpen = ref(false);\nconst reorderSecondaryOpen = ref(false);\n\nconst defaultReorderPrimaryOpen = computed(() => store.value.reactive.tabDefaultState['axes'].reorderPrimaryOpen);\nconst defaultReorderSecondaryOpen = computed(() => store.value.reactive.tabDefaultState['axes'].reorderSecondaryOpen);\nonMounted(() => {\n if (defaultReorderPrimaryOpen.value) {\n reorderPrimaryOpen.value = true;\n }\n if (defaultReorderSecondaryOpen.value) {\n reorderSecondaryOpen.value = true;\n }\n});\nwatch(() => defaultReorderPrimaryOpen.value, (v) => {\n if (v) {\n reorderSecondaryOpen.value = false;\n reorderPrimaryOpen.value = true;\n }\n});\nwatch(() => defaultReorderSecondaryOpen.value, (v) => {\n if (v) {\n reorderPrimaryOpen.value = false;\n reorderSecondaryOpen.value = true;\n }\n});\n\nconst primaryGrouping = computed(() => store.value.reactive.optionsState.components.primaryGrouping?.selectorStates[0]?.selectedSource);\nconst secondaryGrouping = computed(() => store.value.reactive.optionsState.components.secondaryGrouping?.selectorStates[0]?.selectedSource);\n\nconst primaryGroups = computed(() => store.value.commonHelpersData.primaryGroups.value);\nconst secondaryGroups = computed(() => store.value.commonHelpersData.secondaryGroups.value);\n\nconst usedAesInMapping = computed(() => store.value.commonHelpersData.usedAesInMapping.value);\n\nconst mappingPrimary = ref(store.value.reactive.dataBindAes[primaryGrouping.value] as AestheticMappingCategorical ?? createDefaultMapping(primaryGroups.value, store.value.defaultPalette.categorical));\nconst mappingSecondary = ref(store.value.reactive.dataBindAes[secondaryGrouping.value] as AestheticMappingCategorical ?? createDefaultMapping(secondaryGroups.value, store.value.defaultPalette.categorical));\n\nconst primaryInfo = computed(() => {\n if (primaryGrouping.value) {\n const selectedSourceInfo = inputGuide.value.getSourceInfo(primaryGrouping.value) ?? null;\n const valueLabels = labelsInfo.value[primaryGrouping.value]?.labels ?? null;\n return {\n selectedSourceInfo,\n labels: primaryGroups.value.reduce((res: Record<string, string>, v) => {\n res[v] = valueLabels?.[v] ?? String(v);\n return res;\n }, {}),\n };\n }\n return null;\n});\nconst secondaryInfo = computed(() => {\n if (secondaryGrouping.value) {\n const selectedSourceInfo = inputGuide.value.getSourceInfo(secondaryGrouping.value) ?? null;\n const valueLabels = labelsInfo.value[secondaryGrouping.value]?.labels ?? null;\n return {\n selectedSourceInfo,\n labels: secondaryGroups.value.reduce((res: Record<string, string>, v) => {\n res[v] = valueLabels?.[v] ?? String(v);\n return res;\n }, {}),\n };\n }\n return null;\n});\n\nfunction updateOrder(value: AestheticMappingCategorical, sourceId: string) {\n store.value.reactive.dataBindAes[sourceId] = value;\n}\n\nconst OPTIONS_FACET_SHARED = [\n { text: 'X', value: 'x' },\n { text: 'Y', value: 'y' },\n { text: 'XY', value: 'xy' },\n { text: 'None', value: 'none' },\n];\n\nconst primaryOptions = computed(() => labelsInfo.value[primaryGrouping.value]);\nconst xLabelsRotation = computed({\n get() {\n return getDiscreteLabelsRotation(settings.axisX.labelsRotation, primaryOptions.value?.options);\n },\n set(value: LabelsRotation) {\n settings.axisX.labelsRotation = value;\n },\n});\n</script>\n\n<template>\n <div class=\"axes-form\" @click=\"(e) => e.stopPropagation()\">\n <h3 class=\"axes-title\">\n Axes\n </h3>\n <div class=\"axes-settings-list\">\n <!-- Chart title -->\n <CollapsableBlock title=\"Title\" :settings=\"blockSettings\" :icon=\"Right\" :icon-open=\"Down\">\n <div class=\"axes-settings-options-row block\">\n <PlBtnGroup\n v-model=\"settings.title.mode\"\n label=\"Title\"\n :options=\"OPTIONS_AXIS_LABEL_MODE\"\n :compact=\"true\"\n />\n </div>\n <div v-if=\"settings.title.mode === 'custom'\" class=\"axes-settings-input\">\n <PlTextField\n v-model=\"settings.title.value\"\n label=\"Chart title\"\n placeholder=\"Chart title\"\n />\n </div>\n <div class=\"axes-settings-options-row\">\n <span>Alignment</span>\n <BtnIconGroup v-model=\"settings.title.position\" :options=\"OPTIONS_TITLE_ALIGN\"/>\n </div>\n <!-- <div class=\"axes-settings-options-row\">-->\n <!-- <span>Facet frame style</span>-->\n <!-- <btn-icon-group :options=\"OPTIONS_FACET_FRAME\" v-model=\"settings.title.facetTitleFrame\"/>-->\n <!-- </div>-->\n </CollapsableBlock>\n <!-- X axis settings-->\n <CollapsableBlock title=\"X-axis\" :settings=\"blockSettings\" :icon=\"Right\" :icon-open=\"Down\">\n <div v-if=\"primaryGroups.length > 1\" class=\"axes-settings-options-row\">\n <span>Primary groups order: </span>\n <AesButton :data=\"{type: 'data', value: null}\" @click=\"reorderPrimaryOpen = true\" />\n <template v-if=\"reorderPrimaryOpen && primaryInfo\">\n <FormWrapper\n title=\"Reorder primary groups\"\n back-title=\"Axes Settings\"\n @form:open=\"store.reactive.tabDefaultState['axes'].reorderPrimaryOpen = false\"\n @form:close=\"reorderPrimaryOpen = false\"\n >\n <AesDataMapping\n v-model=\"mappingPrimary\"\n :column-value-labels=\"primaryInfo.labels\"\n :data-column-label=\"primaryInfo.selectedSourceInfo?.label ?? ''\"\n :used-aes-in-mapping=\"usedAesInMapping[primaryGrouping]\"\n allow-reordering\n allow-hiding\n :allow-null-option=\"settings.axisX.allowNullPrimaryGroups\"\n @update:modelValue=\"(value:AestheticMappingCategorical) => updateOrder(value, primaryGrouping)\"\n />\n </FormWrapper>\n </template>\n </div>\n <div v-if=\"primaryGroups.length > 1\" class=\"axes-settings-options-row\">\n <span>Allow null primary group</span>\n <PlToggleSwitch v-model=\"settings.axisX.allowNullPrimaryGroups\" />\n </div>\n <div v-if=\"secondaryGroups.length > 1\" class=\"axes-settings-options-row\">\n <span>Secondary groups order: </span>\n <AesButton :data=\"{type: 'data', value: null}\" @click=\"reorderSecondaryOpen = true\" />\n <template v-if=\"reorderSecondaryOpen && secondaryInfo\">\n <FormWrapper\n title=\"Reorder secondary groups\"\n back-title=\"Axes Settings\"\n @form:open=\"store.reactive.tabDefaultState['axes'].reorderSecondaryOpen = false\"\n @form:close=\"reorderSecondaryOpen = false\"\n >\n <AesDataMapping\n v-model=\"mappingSecondary\"\n :column-value-labels=\"secondaryInfo.labels\"\n :data-column-label=\"secondaryInfo.selectedSourceInfo?.label ?? ''\"\n :used-aes-in-mapping=\"usedAesInMapping[secondaryGrouping]\"\n allow-reordering\n allow-hiding\n :allow-null-option=\"settings.axisX.allowNullSecondaryGroups\"\n @update:modelValue=\"(value:AestheticMappingCategorical) => updateOrder(value, secondaryGrouping)\"\n />\n </FormWrapper>\n </template>\n </div>\n <div v-if=\"secondaryGroups.length > 1\" class=\"axes-settings-options-row\">\n <span>Allow null secondary group</span>\n <PlToggleSwitch v-model=\"settings.axisX.allowNullSecondaryGroups\" />\n </div>\n <div class=\"axes-settings-options-row\">\n <PlCheckbox v-model=\"settings.axisX.hideAxisLabels\">Hide axis labels</PlCheckbox>\n </div>\n <div v-if=\"!settings.axisX.hideAxisLabels\" class=\"axes-settings-options-row\">\n <span>Labels rotation</span>\n <BtnIconGroup v-model=\"xLabelsRotation\" :options=\"OPTIONS_LABELS_ROTATION\" />\n </div>\n <div class=\"axes-settings-options-row block\">\n <PlBtnGroup\n v-model=\"settings.axisX.titleMode\"\n label=\"Title\"\n :options=\"OPTIONS_AXIS_LABEL_MODE\"\n :compact=\"true\"\n />\n </div>\n <div v-if=\"settings.axisX.titleMode === 'custom'\">\n <PlTextField\n v-model=\"settings.axisX.customTitle\"\n label=\"Text\"\n placeholder=\"Type\"\n />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Gridlines</span>\n <PlToggleSwitch v-model=\"settings.axisX.gridlines\" />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Lines between categories</span>\n <PlToggleSwitch v-model=\"settings.axisX.linesBetweenCategories\" />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Ticks</span>\n <PlToggleSwitch v-model=\"settings.axisX.ticks\" />\n </div>\n </CollapsableBlock>\n <!-- Y axis settings-->\n <CollapsableBlock title=\"Y-axis\" :settings=\"blockSettings\" :icon=\"Right\" :icon-open=\"Down\">\n <div class=\"axes-settings-options-row block\">\n <PlBtnGroup\n v-model=\"settings.axisY.titleMode\"\n label=\"Title\"\n :options=\"OPTIONS_AXIS_LABEL_MODE\"\n :compact=\"true\"\n />\n </div>\n <div v-if=\"settings.axisY.titleMode === 'custom'\">\n <PlTextField\n v-model=\"settings.axisY.customTitle\"\n label=\"Text\"\n placeholder=\"Type\"\n />\n </div>\n <div class=\"axes-settings-options-row\">\n <PlCheckbox v-model=\"settings.axisY.hideAxisLabels\">Hide axis labels</PlCheckbox>\n </div>\n <div class=\"axes-settings-options-row block\">\n <PlBtnGroup\n v-model=\"settings.axisY.scale\"\n label=\"Scale\"\n :options=\"OPTIONS_SCALE\"\n :compact=\"true\"\n />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Gridlines</span>\n <PlToggleSwitch v-model=\"settings.axisY.gridlines\" />\n </div>\n <div class=\"axes-settings-options-row table\">\n <span>Ticks</span>\n <PlToggleSwitch v-model=\"settings.axisY.ticks\" />\n </div>\n </CollapsableBlock>\n <!-- Facet settings-->\n <div class=\"other\">\n <div class=\"axes-settings-options-row\">\n <PlCheckbox v-model=\"settings.other.showLegend\">Show legend</PlCheckbox>\n </div>\n <div class=\"axes-settings-options-row\">\n <span>Frame</span>\n <BtnIconGroup v-model=\"settings.other.frame\" :options=\"OPTIONS_CHART_FRAME\" />\n </div>\n <div class=\"axes-settings-options-row\">\n <span>Reverse axes</span>\n <PlToggleSwitch v-model=\"settings.other.reverse\" />\n </div>\n <div class=\"axes-settings-options-row\">\n <Slider\n v-model=\"settings.other.facetColumns\"\n :style=\"{width: '100%'}\"\n label=\"Facet column count\"\n :min=\"1\"\n :max=\"6\"\n :step=\"1\"\n :breakpoints=\"true\"\n mode=\"input\"\n />\n </div>\n <div class=\"axes-settings-options-row block\">\n <PlBtnGroup\n v-model=\"settings.other.facetSharedBy\"\n label=\"Facet shared by\"\n :options=\"OPTIONS_FACET_SHARED\"\n :compact=\"true\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"names":["store","useStore","settings","blockSettings","OPTIONS_TITLE_ALIGN","AlignLeft","AlignCenter","AlignRight","OPTIONS_LABELS_ROTATION","Rotation0","Rotation45","Rotation90","OPTIONS_AXIS_LABEL_MODE","OPTIONS_SCALE","OPTIONS_CHART_FRAME","FrameEmpty","FrameLeft","FrameBottom","FrameLeftBottom","FrameFull","inputGuide","computed","labelsInfo","reorderPrimaryOpen","ref","reorderSecondaryOpen","defaultReorderPrimaryOpen","defaultReorderSecondaryOpen","onMounted","watch","v","primaryGrouping","_b","_a","secondaryGrouping","primaryGroups","secondaryGroups","usedAesInMapping","mappingPrimary","createDefaultMapping","mappingSecondary","primaryInfo","selectedSourceInfo","valueLabels","res","secondaryInfo","updateOrder","value","sourceId","OPTIONS_FACET_SHARED","primaryOptions","xLabelsRotation","getDiscreteLabelsRotation","_createElementBlock","_cache","e","_createElementVNode","_hoisted_1","_createVNode","CollapsableBlock","Right","Down","_hoisted_2","_unref","PlBtnGroup","$event","_openBlock","_hoisted_3","PlTextField","_hoisted_4","BtnIconGroup","_hoisted_5","AesButton","_createBlock","FormWrapper","AesDataMapping","_hoisted_6","PlToggleSwitch","_hoisted_7","_hoisted_8","_hoisted_9","PlCheckbox","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","Slider","_hoisted_27"],"mappings":"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"}
|
|
@@ -7,13 +7,14 @@ import "../../constantsAesthetic.js";
|
|
|
7
7
|
import "d3-scale";
|
|
8
8
|
import "@milaboratories/pf-plots";
|
|
9
9
|
import "@platforma-sdk/model";
|
|
10
|
+
import "@milaboratories/helpers";
|
|
10
11
|
import { checkStatisticsInputsValidity as L } from "../../utils/getStatisticsOptions.js";
|
|
11
12
|
import x from "../../components/DragAndDrop/DndBasket.vue.js";
|
|
12
13
|
import A from "./Layout/FormLayout.vue.js";
|
|
13
14
|
import T from "./Layout/OptionsList.vue.js";
|
|
14
15
|
import U from "./Layout/MandatoryOptions.vue.js";
|
|
15
16
|
import { useBaskets as $ } from "./useBaskets.js";
|
|
16
|
-
const C = { class: "data-form-input-item" },
|
|
17
|
+
const C = { class: "data-form-input-item" }, oe = /* @__PURE__ */ b({
|
|
17
18
|
__name: "DiscreteForm",
|
|
18
19
|
setup(H) {
|
|
19
20
|
const r = F();
|
|
@@ -98,6 +99,6 @@ const C = { class: "data-form-input-item" }, te = /* @__PURE__ */ b({
|
|
|
98
99
|
}
|
|
99
100
|
});
|
|
100
101
|
export {
|
|
101
|
-
|
|
102
|
+
oe as default
|
|
102
103
|
};
|
|
103
104
|
//# sourceMappingURL=DiscreteForm.vue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiscreteForm.vue.js","sources":["../../../src/forms/DataMappingForm/DiscreteForm.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { PlDropdown } from '@platforma-sdk/ui-vue';\nimport type { DiscreteUIState } from '@milaboratories/pf-plots';\nimport { computed, watch } from 'vue';\nimport { useStore } from '../../store';\nimport { getErrorForPlDropdown } from './utils';\nimport { checkStatisticsInputsValidity } from '../../utils';\nimport DndBasket from '../../components/DragAndDrop/DndBasket.vue';\nimport FormLayout from './Layout/FormLayout.vue';\nimport OptionsList from './Layout/OptionsList.vue';\nimport MandatoryOptionsList from './Layout/MandatoryOptions.vue';\nimport { useBaskets } from './useBaskets';\n\nconst store = useStore();\n\nwatch(\n () => store.value.commonHelpersData.primaryGroups.value,\n checkStatisticsInputsValidity(store),\n);\n\ntype BasketIds = Exclude<keyof DiscreteUIState['components'], 'y'>;\ntype DataIds = keyof DiscreteUIState['components'] & 'y';\n\nconst BASKETS: BasketIds[] = [\n 'filters',\n 'primaryGrouping',\n 'secondaryGrouping',\n 'tabBy',\n 'facetBy',\n];\nconst BASKET_LABELS: Record<BasketIds, string> = {\n filters: 'Filter',\n primaryGrouping: 'Primary grouping',\n secondaryGrouping: 'Secondary grouping',\n tabBy: 'Tab by',\n facetBy: 'Facet by',\n};\n\nconst {\n draggedId,\n basketsData,\n freeMetaOptions,\n freeMandatoryOptions,\n chipInfo,\n dataStateValues,\n dataOptions,\n} = useBaskets<DiscreteUIState, BasketIds, DataIds>(\n store,\n ['y'],\n ['filters', 'tabBy'],\n ['primaryGrouping', 'secondaryGrouping', 'facetBy'],\n BASKETS,\n BASKET_LABELS,\n);\n\nconst readonlyY = computed(() => store.value.readonlyInputs?.includes('y') ?? false);\n\nconst yValue = computed({\n get: () => dataStateValues.value.y.value,\n set: (value: string | undefined) => {\n dataStateValues.value.y.value = value;\n },\n});\n</script>\n\n<template>\n <FormLayout>\n <template #dataInputs>\n <div class=\"data-form-input-item\">\n <PlDropdown\n v-model=\"yValue\"\n :options=\"dataOptions.y\"\n :disabled=\"readonlyY\"\n :error=\"getErrorForPlDropdown('y', store.inputGuide.value)\"\n label=\"Y:\"\n :clearable=\"!readonlyY\"\n />\n </div>\n </template>\n <template #mandatoryOptions>\n <MandatoryOptionsList\n :options=\"freeMandatoryOptions\"\n :chipInfo=\"chipInfo\"\n @dragged-id-update=\"draggedId = $event\"\n />\n </template>\n <template #metadataOptions>\n <OptionsList\n :options=\"freeMetaOptions\"\n :chipInfo=\"chipInfo\"\n @dragged-id-update=\"draggedId = $event\"\n />\n </template>\n <template #chartVar>\n <div\n v-for=\"basketProp in basketsData\"\n :key=\"basketProp.id\"\n class=\"data-form-input-item\"\n >\n <DndBasket v-bind=\"basketProp\" v-on=\"basketProp.listeners\" />\n </div>\n </template>\n </FormLayout>\n</template>\n"],"names":["store","useStore","watch","checkStatisticsInputsValidity","BASKETS","BASKET_LABELS","draggedId","basketsData","freeMetaOptions","freeMandatoryOptions","chipInfo","dataStateValues","dataOptions","useBaskets","readonlyY","computed","_a","yValue","value","_createBlock","FormLayout","_createElementVNode","_hoisted_1","_createVNode","_unref","PlDropdown","$event","getErrorForPlDropdown","MandatoryOptionsList","_cache","OptionsList","_createElementBlock","_Fragment","_renderList","basketProp","DndBasket","_mergeProps","_toHandlers"],"mappings":"
|
|
1
|
+
{"version":3,"file":"DiscreteForm.vue.js","sources":["../../../src/forms/DataMappingForm/DiscreteForm.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { PlDropdown } from '@platforma-sdk/ui-vue';\nimport type { DiscreteUIState } from '@milaboratories/pf-plots';\nimport { computed, watch } from 'vue';\nimport { useStore } from '../../store';\nimport { getErrorForPlDropdown } from './utils';\nimport { checkStatisticsInputsValidity } from '../../utils';\nimport DndBasket from '../../components/DragAndDrop/DndBasket.vue';\nimport FormLayout from './Layout/FormLayout.vue';\nimport OptionsList from './Layout/OptionsList.vue';\nimport MandatoryOptionsList from './Layout/MandatoryOptions.vue';\nimport { useBaskets } from './useBaskets';\n\nconst store = useStore();\n\nwatch(\n () => store.value.commonHelpersData.primaryGroups.value,\n checkStatisticsInputsValidity(store),\n);\n\ntype BasketIds = Exclude<keyof DiscreteUIState['components'], 'y'>;\ntype DataIds = keyof DiscreteUIState['components'] & 'y';\n\nconst BASKETS: BasketIds[] = [\n 'filters',\n 'primaryGrouping',\n 'secondaryGrouping',\n 'tabBy',\n 'facetBy',\n];\nconst BASKET_LABELS: Record<BasketIds, string> = {\n filters: 'Filter',\n primaryGrouping: 'Primary grouping',\n secondaryGrouping: 'Secondary grouping',\n tabBy: 'Tab by',\n facetBy: 'Facet by',\n};\n\nconst {\n draggedId,\n basketsData,\n freeMetaOptions,\n freeMandatoryOptions,\n chipInfo,\n dataStateValues,\n dataOptions,\n} = useBaskets<DiscreteUIState, BasketIds, DataIds>(\n store,\n ['y'],\n ['filters', 'tabBy'],\n ['primaryGrouping', 'secondaryGrouping', 'facetBy'],\n BASKETS,\n BASKET_LABELS,\n);\n\nconst readonlyY = computed(() => store.value.readonlyInputs?.includes('y') ?? false);\n\nconst yValue = computed({\n get: () => dataStateValues.value.y.value,\n set: (value: string | undefined) => {\n dataStateValues.value.y.value = value;\n },\n});\n</script>\n\n<template>\n <FormLayout>\n <template #dataInputs>\n <div class=\"data-form-input-item\">\n <PlDropdown\n v-model=\"yValue\"\n :options=\"dataOptions.y\"\n :disabled=\"readonlyY\"\n :error=\"getErrorForPlDropdown('y', store.inputGuide.value)\"\n label=\"Y:\"\n :clearable=\"!readonlyY\"\n />\n </div>\n </template>\n <template #mandatoryOptions>\n <MandatoryOptionsList\n :options=\"freeMandatoryOptions\"\n :chipInfo=\"chipInfo\"\n @dragged-id-update=\"draggedId = $event\"\n />\n </template>\n <template #metadataOptions>\n <OptionsList\n :options=\"freeMetaOptions\"\n :chipInfo=\"chipInfo\"\n @dragged-id-update=\"draggedId = $event\"\n />\n </template>\n <template #chartVar>\n <div\n v-for=\"basketProp in basketsData\"\n :key=\"basketProp.id\"\n class=\"data-form-input-item\"\n >\n <DndBasket v-bind=\"basketProp\" v-on=\"basketProp.listeners\" />\n </div>\n </template>\n </FormLayout>\n</template>\n"],"names":["store","useStore","watch","checkStatisticsInputsValidity","BASKETS","BASKET_LABELS","draggedId","basketsData","freeMetaOptions","freeMandatoryOptions","chipInfo","dataStateValues","dataOptions","useBaskets","readonlyY","computed","_a","yValue","value","_createBlock","FormLayout","_createElementVNode","_hoisted_1","_createVNode","_unref","PlDropdown","$event","getErrorForPlDropdown","MandatoryOptionsList","_cache","OptionsList","_createElementBlock","_Fragment","_renderList","basketProp","DndBasket","_mergeProps","_toHandlers"],"mappings":";;;;;;;;;;;;;;;;;;;AAaA,UAAMA,IAAQC,EAAA;AAEd,IAAAC;AAAA,MACE,MAAMF,EAAM,MAAM,kBAAkB,cAAc;AAAA,MAClDG,EAA8BH,CAAK;AAAA,IAAA;AAMrC,UAAMI,IAAuB;AAAA,MAC3B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,GAEIC,IAA2C;AAAA,MAC/C,SAAS;AAAA,MACT,iBAAiB;AAAA,MACjB,mBAAmB;AAAA,MACnB,OAAO;AAAA,MACP,SAAS;AAAA,IAAA,GAGL;AAAA,MACJ,WAAAC;AAAA,MACA,aAAAC;AAAA,MACA,iBAAAC;AAAA,MACA,sBAAAC;AAAA,MACA,UAAAC;AAAA,MACA,iBAAAC;AAAA,MACA,aAAAC;AAAA,IAAA,IACEC;AAAA,MACFb;AAAA,MACA,CAAC,GAAG;AAAA,MACJ,CAAC,WAAW,OAAO;AAAA,MACnB,CAAC,mBAAmB,qBAAqB,SAAS;AAAA,MAClDI;AAAA,MACAC;AAAA,IAAA,GAGIS,IAAYC,EAAS,MAAA;;AAAM,eAAAC,IAAAhB,EAAM,MAAM,mBAAZ,gBAAAgB,EAA4B,SAAS,SAAQ;AAAA,KAAK,GAE7EC,IAASF,EAAS;AAAA,MACtB,KAAK,MAAMJ,EAAgB,MAAM,EAAE;AAAA,MACnC,KAAK,CAACO,MAA8B;AAClC,QAAAP,EAAgB,MAAM,EAAE,QAAQO;AAAA,MAClC;AAAA,IAAA,CACD;2BAICC,EAoCaC,GAAA,MAAA;AAAA,MAnCA,cACT,MASM;AAAA,QATNC,EASM,OATNC,GASM;AAAA,UARJC,EAOEC,EAAAC,CAAA,GAAA;AAAA,wBANSR,EAAA;AAAA,0DAAAA,EAAM,QAAAS;AAAA,YACd,SAASF,EAAAZ,CAAA,EAAY;AAAA,YACrB,UAAUE,EAAA;AAAA,YACV,OAAOU,EAAAG,CAAA,EAAqB,KAAMH,KAAM,WAAW,KAAK;AAAA,YACzD,OAAM;AAAA,YACL,YAAYV,EAAA;AAAA,UAAA;;;MAIR,oBACT,MAIE;AAAA,QAJFS,EAIEK,GAAA;AAAA,UAHC,SAASJ,EAAAf,CAAA;AAAA,UACT,UAAUe,EAAAd,CAAA;AAAA,UACV,mBAAiBmB,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAH,MAAEpB,EAAA,QAAYoB;AAAA,QAAA;;MAGzB,mBACT,MAIE;AAAA,QAJFH,EAIEO,GAAA;AAAA,UAHC,SAASN,EAAAhB,CAAA;AAAA,UACT,UAAUgB,EAAAd,CAAA;AAAA,UACV,mBAAiBmB,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAH,MAAEpB,EAAA,QAAYoB;AAAA,QAAA;;MAGzB,YAEP,MAAiC;AAAA,gBADnCK,EAMMC,GAAA,MAAAC,EALiBT,EAAAjB,CAAA,GAAW,CAAzB2B,YADTH,EAMM,OAAA;AAAA,UAJH,KAAKG,EAAW;AAAA,UACjB,OAAM;AAAA,QAAA;UAENX,EAA6DY,GAA7DC,EAA6D,EAAA,SAAA,GAAA,GAA1CF,GAAYG,EAA2BH,EAAV,SAAS,CAAA,GAAA,MAAA,EAAA;AAAA,QAAA;;;;;;"}
|