@milaboratories/graph-maker 1.1.213 → 1.1.214
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.js +16 -16
- package/dist/components/Chart.vue.js.map +1 -1
- package/dist/components/SettingsTabs/index.vue.d.ts.map +1 -1
- package/dist/components/SettingsTabs/index.vue.js +47 -44
- package/dist/components/SettingsTabs/index.vue.js.map +1 -1
- package/dist/forms/index.d.ts +1 -0
- package/dist/forms/index.d.ts.map +1 -1
- package/dist/forms/index.js +44 -40
- package/dist/forms/index.js.map +1 -1
- package/dist/index.vue.d.ts.map +1 -1
- package/dist/index.vue.js +121 -124
- package/dist/index.vue.js.map +1 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +30 -34
- package/dist/store.js.map +1 -1
- package/package.json +1 -1
|
@@ -36,7 +36,7 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
|
|
|
36
36
|
const P = 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
41
|
return (t = P.value) == null ? void 0 : t.selectedSource;
|
|
42
42
|
}), G = p(() => {
|
|
@@ -45,9 +45,9 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
|
|
|
45
45
|
}), L = p(() => {
|
|
46
46
|
var t;
|
|
47
47
|
return (t = o.value.reactive.optionsState.components.filters) == null ? void 0 : t.selectorStates;
|
|
48
|
-
}),
|
|
49
|
-
y(() =>
|
|
50
|
-
t !== e && (
|
|
48
|
+
}), m = h(G.value);
|
|
49
|
+
y(() => v.value, (t, e) => {
|
|
50
|
+
t !== e && (m.value = G.value);
|
|
51
51
|
}, { immediate: !0 });
|
|
52
52
|
async function W(t) {
|
|
53
53
|
var a;
|
|
@@ -68,17 +68,17 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
|
|
|
68
68
|
}
|
|
69
69
|
const f = h();
|
|
70
70
|
y([
|
|
71
|
-
() =>
|
|
71
|
+
() => v.value,
|
|
72
72
|
() => o.value.loading.inputGuide
|
|
73
73
|
], async ([t, e]) => {
|
|
74
74
|
t === void 0 || e || !o.value.columnsDataStore.value || (f.value = await W(t));
|
|
75
75
|
}, { immediate: !0 }), y(() => f.value, async (t) => {
|
|
76
|
-
if (
|
|
76
|
+
if (v.value === void 0 || m.value !== void 0 || t === void 0)
|
|
77
77
|
return;
|
|
78
78
|
let e = t;
|
|
79
|
-
if (t === null && (e = await F(
|
|
79
|
+
if (t === null && (e = await F(v.value, "")), e != null && e.length) {
|
|
80
80
|
const l = e[0].value;
|
|
81
|
-
|
|
81
|
+
m.value = l, b(l);
|
|
82
82
|
}
|
|
83
83
|
}, { immediate: !0 });
|
|
84
84
|
function b(t) {
|
|
@@ -187,25 +187,25 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
|
|
|
187
187
|
])]),
|
|
188
188
|
_: 1
|
|
189
189
|
}, 8, ["modelValue"]),
|
|
190
|
-
|
|
190
|
+
v.value ? (s(), w("div", me, [
|
|
191
191
|
f.value || f.value === void 0 && r(o).loading.inputGuide ? (s(), d(r(ee), {
|
|
192
192
|
key: 0,
|
|
193
|
-
modelValue:
|
|
193
|
+
modelValue: m.value,
|
|
194
194
|
"onUpdate:modelValue": [
|
|
195
|
-
e[2] || (e[2] = (a) =>
|
|
195
|
+
e[2] || (e[2] = (a) => m.value = a),
|
|
196
196
|
e[3] || (e[3] = (a) => b(a))
|
|
197
197
|
],
|
|
198
198
|
label: "Show for",
|
|
199
199
|
options: f.value
|
|
200
200
|
}, null, 8, ["modelValue", "options"])) : (s(), d(r(te), {
|
|
201
201
|
key: 1,
|
|
202
|
-
modelValue:
|
|
202
|
+
modelValue: m.value,
|
|
203
203
|
"onUpdate:modelValue": [
|
|
204
|
-
e[4] || (e[4] = (a) =>
|
|
204
|
+
e[4] || (e[4] = (a) => m.value = a),
|
|
205
205
|
e[5] || (e[5] = (a) => b(a))
|
|
206
206
|
],
|
|
207
207
|
label: "Show for",
|
|
208
|
-
"options-search": (a, i) => F(
|
|
208
|
+
"options-search": (a, i) => F(v.value, a, i)
|
|
209
209
|
}, null, 8, ["modelValue", "options-search"]))
|
|
210
210
|
])) : c("", !0),
|
|
211
211
|
S("div", {
|
|
@@ -223,11 +223,11 @@ const ue = { class: "chart_container" }, ce = { class: "chart_header" }, de = ["
|
|
|
223
223
|
}, null, 2),
|
|
224
224
|
C(se, {
|
|
225
225
|
graphStatus: n.graphStatus,
|
|
226
|
-
top: 0,
|
|
226
|
+
top: v.value ? 24 : 0,
|
|
227
227
|
bottom: 11,
|
|
228
228
|
customStatusText: n.customStatusText,
|
|
229
229
|
errorInfo: n.errorInfo
|
|
230
|
-
}, null, 8, ["graphStatus", "customStatusText", "errorInfo"]),
|
|
230
|
+
}, null, 8, ["graphStatus", "top", "customStatusText", "errorInfo"]),
|
|
231
231
|
r(o).reactive.chartType === "dendro" && n.chartData && r(o).reactive.layersSettings.dendro.showTable ? (s(), d(ae, {
|
|
232
232
|
key: 0,
|
|
233
233
|
chartData: n.chartData,
|
|
@@ -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=\"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, (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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue.d.ts","sourceRoot":"","sources":["../../../src/components/SettingsTabs/index.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.vue.d.ts","sourceRoot":"","sources":["../../../src/components/SettingsTabs/index.vue"],"names":[],"mappings":"AA6FA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,KAAK,WAAW,GAAG;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5B,CAAC;;;;;;;;;;AAgNF,wBAOG"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { defineComponent as x, computed as D, ref as
|
|
2
|
-
import { PlTooltip as
|
|
3
|
-
import { tabKeys as
|
|
4
|
-
const
|
|
1
|
+
import { defineComponent as x, computed as D, ref as b, createElementBlock as m, openBlock as s, Fragment as g, createElementVNode as d, createVNode as r, renderList as w, createBlock as h, unref as n, normalizeClass as M, withCtx as a, resolveDynamicComponent as k, toDisplayString as L, withModifiers as y, createTextVNode as p } from "vue";
|
|
2
|
+
import { PlTooltip as A, PlDialogModal as E, PlAlert as N, PlBtnPrimary as G, PlBtnGhost as I } from "@platforma-sdk/ui-vue";
|
|
3
|
+
import { tabKeys as O, resolveIcon as j, resolveTitle as z, isOwnGraphMakerTab as S } from "../../forms/index.js";
|
|
4
|
+
const F = { class: "settings-tabs" }, K = { style: { "font-family": "var(--font-family-base)" } }, q = /* @__PURE__ */ x({
|
|
5
5
|
__name: "index",
|
|
6
6
|
props: {
|
|
7
7
|
chartType: {},
|
|
@@ -14,76 +14,79 @@ const G = { class: "settings-tabs" }, I = { style: { "font-family": "var(--font-
|
|
|
14
14
|
modelValue: {}
|
|
15
15
|
},
|
|
16
16
|
emits: ["update:modelValue", "export", "delete"],
|
|
17
|
-
setup(
|
|
18
|
-
const f =
|
|
19
|
-
(
|
|
17
|
+
setup(u, { emit: v }) {
|
|
18
|
+
const f = v, e = u, C = D(() => O().filter(
|
|
19
|
+
(t) => !(t === "annotations" && !e.hasAnnotationsSlot) && !(t === "settings" && !e.hasSettingsSlot) && !(t === "log" && !e.hasLogSlot) && !(t === "statistics" && e.chartType !== "discrete" && e.chartType !== "scatterplot") && !(t === "delete" && !e.allowDeleting)
|
|
20
20
|
));
|
|
21
|
-
function
|
|
22
|
-
f("update:modelValue",
|
|
21
|
+
function V(t) {
|
|
22
|
+
f("update:modelValue", t === e.modelValue ? null : t);
|
|
23
23
|
}
|
|
24
|
-
const
|
|
25
|
-
function
|
|
26
|
-
|
|
24
|
+
const i = b(!1);
|
|
25
|
+
function B() {
|
|
26
|
+
i.value = !1, f("delete");
|
|
27
27
|
}
|
|
28
|
-
function
|
|
29
|
-
|
|
28
|
+
function P() {
|
|
29
|
+
i.value = !1;
|
|
30
30
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
function c(t) {
|
|
32
|
+
return t === "export" && (e.graphStatus !== "ready" || e.chartType === "scatterplot-umap") || e.initialLoading && S(t) || (e.graphStatus === "noPframe" || e.graphStatus === "noPframeWithError" || e.graphStatus === "running") && S(t);
|
|
33
|
+
}
|
|
34
|
+
return (t, l) => (s(), m(g, null, [
|
|
35
|
+
d("div", F, [
|
|
36
|
+
(s(!0), m(g, null, w(C.value, (o) => (s(), h(n(A), {
|
|
37
|
+
key: o,
|
|
35
38
|
"open-delay": 100,
|
|
36
39
|
"close-delay": 100,
|
|
37
40
|
class: M(["has-inline-icon", {
|
|
38
|
-
active:
|
|
39
|
-
"temp-inactive":
|
|
40
|
-
[
|
|
41
|
+
active: u.modelValue === o && !c(o),
|
|
42
|
+
"temp-inactive": c(o),
|
|
43
|
+
[o]: !0
|
|
41
44
|
}]),
|
|
42
45
|
position: "left",
|
|
43
|
-
hide:
|
|
44
|
-
onClick: (
|
|
45
|
-
|
|
46
|
+
hide: u.modelValue === o,
|
|
47
|
+
onClick: (T) => {
|
|
48
|
+
T.stopPropagation(), o === "export" ? t.$emit("export") : o === "delete" ? i.value = !0 : V(o);
|
|
46
49
|
}
|
|
47
50
|
}, {
|
|
48
|
-
tooltip:
|
|
49
|
-
|
|
51
|
+
tooltip: a(() => [
|
|
52
|
+
d("span", K, L(n(z)(o)), 1)
|
|
50
53
|
]),
|
|
51
|
-
default:
|
|
52
|
-
(
|
|
54
|
+
default: a(() => [
|
|
55
|
+
(s(), h(k(n(j)(o))))
|
|
53
56
|
]),
|
|
54
57
|
_: 2
|
|
55
58
|
}, 1032, ["class", "hide", "onClick"]))), 128))
|
|
56
59
|
]),
|
|
57
|
-
|
|
58
|
-
modelValue:
|
|
59
|
-
"onUpdate:modelValue": l[0] || (l[0] = (
|
|
60
|
+
r(n(E), {
|
|
61
|
+
modelValue: i.value,
|
|
62
|
+
"onUpdate:modelValue": l[0] || (l[0] = (o) => i.value = o)
|
|
60
63
|
}, {
|
|
61
|
-
title:
|
|
64
|
+
title: a(() => [...l[1] || (l[1] = [
|
|
62
65
|
p("Delete chart?", -1)
|
|
63
66
|
])]),
|
|
64
|
-
actions:
|
|
65
|
-
|
|
66
|
-
onClick: y(
|
|
67
|
+
actions: a(() => [
|
|
68
|
+
r(n(G), {
|
|
69
|
+
onClick: y(B, ["stop"])
|
|
67
70
|
}, {
|
|
68
|
-
default:
|
|
71
|
+
default: a(() => [...l[3] || (l[3] = [
|
|
69
72
|
p(" Delete ", -1)
|
|
70
73
|
])]),
|
|
71
74
|
_: 1
|
|
72
75
|
}),
|
|
73
|
-
|
|
76
|
+
r(n(I), {
|
|
74
77
|
"justify-center": !1,
|
|
75
|
-
onClick: y(
|
|
78
|
+
onClick: y(P, ["stop"])
|
|
76
79
|
}, {
|
|
77
|
-
default:
|
|
80
|
+
default: a(() => [...l[4] || (l[4] = [
|
|
78
81
|
p("Cancel", -1)
|
|
79
82
|
])]),
|
|
80
83
|
_: 1
|
|
81
84
|
})
|
|
82
85
|
]),
|
|
83
|
-
default:
|
|
84
|
-
|
|
85
|
-
default:
|
|
86
|
-
|
|
86
|
+
default: a(() => [
|
|
87
|
+
r(n(N), { type: "warn" }, {
|
|
88
|
+
default: a(() => [...l[2] || (l[2] = [
|
|
89
|
+
d("strong", null, "This can't be undone!", -1)
|
|
87
90
|
])]),
|
|
88
91
|
_: 1
|
|
89
92
|
})
|
|
@@ -94,6 +97,6 @@ const G = { class: "settings-tabs" }, I = { style: { "font-family": "var(--font-
|
|
|
94
97
|
}
|
|
95
98
|
});
|
|
96
99
|
export {
|
|
97
|
-
|
|
100
|
+
q as default
|
|
98
101
|
};
|
|
99
102
|
//# sourceMappingURL=index.vue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue.js","sources":["../../../src/components/SettingsTabs/index.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ChartType } from '@milaboratories/pf-plots';\nimport { PlTooltip, PlDialogModal, PlAlert, PlBtnPrimary, PlBtnGhost } from '@platforma-sdk/ui-vue';\nimport { computed, ref } from 'vue';\nimport type { FormKey } from '../../forms';\nimport { resolveIcon, resolveTitle, tabKeys } from '../../forms';\nimport type { GraphStatus } from '../../types';\n\nconst emit = defineEmits(['update:modelValue', 'export', 'delete']);\n\nconst props = defineProps<{\n chartType: ChartType;\n graphStatus: GraphStatus;\n allowDeleting?: boolean;\n hasSettingsSlot?: boolean;\n hasAnnotationsSlot?: boolean;\n hasLogSlot?: boolean;\n initialLoading: boolean;\n modelValue: FormKey | null;\n}>();\n\nconst tabs = computed(() => tabKeys().filter((key) =>\n !(key === 'annotations' && !props.hasAnnotationsSlot)\n && !(key === 'settings' && !props.hasSettingsSlot)\n && !(key === 'log' && !props.hasLogSlot)\n && !(key === 'statistics' && props.chartType !== 'discrete' && props.chartType !== 'scatterplot')\n && !(key === 'delete' && !props.allowDeleting),\n));\n\nfunction updateModel(v: string) {\n emit('update:modelValue', v === props.modelValue ? null : v);\n}\n\nconst deletingConfirmationModalOpen = ref<boolean>(false);\nfunction onDelete() {\n deletingConfirmationModalOpen.value = false;\n emit('delete');\n}\nfunction onConfirmationModalClose() {\n deletingConfirmationModalOpen.value = false;\n}\n</script>\n\n<template>\n <div class=\"settings-tabs\">\n <PlTooltip\n v-for=\"(name) in tabs\"\n :key=\"name\"\n :open-delay=\"100\"\n :close-delay=\"100\"\n class=\"has-inline-icon\"\n :class=\"{\n 'active': modelValue === name
|
|
1
|
+
{"version":3,"file":"index.vue.js","sources":["../../../src/components/SettingsTabs/index.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ChartType } from '@milaboratories/pf-plots';\nimport { PlTooltip, PlDialogModal, PlAlert, PlBtnPrimary, PlBtnGhost } from '@platforma-sdk/ui-vue';\nimport { computed, ref } from 'vue';\nimport type { FormKey } from '../../forms';\nimport { isOwnGraphMakerTab, resolveIcon, resolveTitle, tabKeys } from '../../forms';\nimport type { GraphStatus } from '../../types';\n\nconst emit = defineEmits(['update:modelValue', 'export', 'delete']);\n\nconst props = defineProps<{\n chartType: ChartType;\n graphStatus: GraphStatus;\n allowDeleting?: boolean;\n hasSettingsSlot?: boolean;\n hasAnnotationsSlot?: boolean;\n hasLogSlot?: boolean;\n initialLoading: boolean;\n modelValue: FormKey | null;\n}>();\n\nconst tabs = computed(() => tabKeys().filter((key) =>\n !(key === 'annotations' && !props.hasAnnotationsSlot)\n && !(key === 'settings' && !props.hasSettingsSlot)\n && !(key === 'log' && !props.hasLogSlot)\n && !(key === 'statistics' && props.chartType !== 'discrete' && props.chartType !== 'scatterplot')\n && !(key === 'delete' && !props.allowDeleting),\n));\n\nfunction updateModel(v: string) {\n emit('update:modelValue', v === props.modelValue ? null : v);\n}\n\nconst deletingConfirmationModalOpen = ref<boolean>(false);\nfunction onDelete() {\n deletingConfirmationModalOpen.value = false;\n emit('delete');\n}\nfunction onConfirmationModalClose() {\n deletingConfirmationModalOpen.value = false;\n}\n\nfunction isInactive(name: FormKey) {\n return (name === 'export' && (props.graphStatus !== 'ready' || props.chartType === 'scatterplot-umap'))\n || (props.initialLoading && isOwnGraphMakerTab(name))\n || ((props.graphStatus === 'noPframe' || props.graphStatus === 'noPframeWithError' || props.graphStatus === 'running') && isOwnGraphMakerTab(name));\n}\n\n</script>\n\n<template>\n <div class=\"settings-tabs\">\n <PlTooltip\n v-for=\"(name) in tabs\"\n :key=\"name\"\n :open-delay=\"100\"\n :close-delay=\"100\"\n class=\"has-inline-icon\"\n :class=\"{\n 'active': (modelValue === name) && !isInactive(name),\n 'temp-inactive': isInactive(name),\n [name]: true\n }\"\n position=\"left\"\n :hide=\"modelValue === name\"\n @click=\"(e:Event) => {\n e.stopPropagation();\n name === 'export' ? $emit('export') :\n name === 'delete' ? deletingConfirmationModalOpen = true :\n updateModel(name)\n }\"\n >\n <component :is=\"resolveIcon(name)\"/>\n <template #tooltip>\n <span style=\"font-family: var(--font-family-base);\">\n {{ resolveTitle(name) }}\n </span>\n </template>\n </PlTooltip>\n </div>\n <PlDialogModal v-model=\"deletingConfirmationModalOpen\">\n <template #title>Delete chart?</template>\n <PlAlert type=\"warn\">\n <strong>This can't be undone!</strong>\n </PlAlert>\n <template #actions>\n <PlBtnPrimary @click.stop=\"onDelete\"> Delete </PlBtnPrimary>\n <PlBtnGhost :justify-center=\"false\" @click.stop=\"onConfirmationModalClose\">Cancel</PlBtnGhost>\n </template>\n </PlDialogModal>\n</template>\n"],"names":["emit","__emit","props","__props","tabs","computed","tabKeys","key","updateModel","v","deletingConfirmationModalOpen","ref","onDelete","onConfirmationModalClose","isInactive","name","isOwnGraphMakerTab","_createElementVNode","_hoisted_1","_createElementBlock","_Fragment","_renderList","_createBlock","_unref","PlTooltip","e","$emit","_hoisted_2","_toDisplayString","resolveTitle","_resolveDynamicComponent","resolveIcon","_createVNode","PlDialogModal","$event","_cache","PlBtnPrimary","PlBtnGhost","PlAlert"],"mappings":"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"}
|
package/dist/forms/index.d.ts
CHANGED
|
@@ -103,6 +103,7 @@ declare const forms: {
|
|
|
103
103
|
};
|
|
104
104
|
};
|
|
105
105
|
export type FormKey = keyof typeof forms;
|
|
106
|
+
export declare function isOwnGraphMakerTab(tab: FormKey): boolean;
|
|
106
107
|
export declare function tabKeys(): FormKey[];
|
|
107
108
|
export declare function resolveIcon(name: FormKey): Component;
|
|
108
109
|
export declare function resolveTitle(name: FormKey): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/forms/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAqBrC,QAAA,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDV,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,KAAK,CAAC;AAEzC,wBAAgB,OAAO,IACQ,OAAO,EAAE,CACvC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,CAEpD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,UAEzC;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,6HAK5D"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/forms/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAqBrC,QAAA,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDV,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,KAAK,CAAC;AAEzC,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,WAE9C;AAED,wBAAgB,OAAO,IACQ,OAAO,EAAE,CACvC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,CAEpD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,UAEzC;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,6HAK5D"}
|
package/dist/forms/index.js
CHANGED
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
import { objects as
|
|
1
|
+
import { objects as m } from "@milaboratories/helpers";
|
|
2
2
|
import c from "../components/SettingsTabs/icons/AxesIcon.vue.js";
|
|
3
3
|
import p from "../components/SettingsTabs/icons/DeleteChartIcon.vue.js";
|
|
4
4
|
import s from "../components/SettingsTabs/icons/ExportIcon.vue.js";
|
|
5
|
-
import
|
|
6
|
-
import
|
|
5
|
+
import a from "../components/SettingsTabs/icons/LayersIcon.vue.js";
|
|
6
|
+
import f from "../components/SettingsTabs/icons/LinkIcon.vue.js";
|
|
7
7
|
import l from "../components/SettingsTabs/icons/LogIcon.vue.js";
|
|
8
|
-
import
|
|
9
|
-
import { useComponent as
|
|
8
|
+
import u from "../components/SettingsTabs/icons/SettingsIcon.vue.js";
|
|
9
|
+
import { useComponent as _ } from "../composition/useComponent.js";
|
|
10
10
|
import g from "../icons/Annotation.vue.js";
|
|
11
|
-
import
|
|
12
|
-
import
|
|
11
|
+
import x from "../icons/StatisticsIcon.vue.js";
|
|
12
|
+
import I from "../icons/TemplateIcon.vue.js";
|
|
13
13
|
import $ from "./AnnotationsForm.vue.js";
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import
|
|
20
|
-
import
|
|
21
|
-
const
|
|
14
|
+
import d from "./AxesSettingsForm/index.vue.js";
|
|
15
|
+
import y from "./DataMappingForm/index.vue.js";
|
|
16
|
+
import b from "./LayersForm/index.vue.js";
|
|
17
|
+
import L from "./LogForm.vue.js";
|
|
18
|
+
import S from "./SettingsForm.vue.js";
|
|
19
|
+
import A from "./StatisticsForm/index.vue.js";
|
|
20
|
+
import F from "./TemplateForm.vue.js";
|
|
21
|
+
const o = {
|
|
22
22
|
settings: {
|
|
23
|
-
icon:
|
|
24
|
-
component:
|
|
23
|
+
icon: u,
|
|
24
|
+
component: S,
|
|
25
25
|
title: "Settings"
|
|
26
26
|
},
|
|
27
27
|
log: {
|
|
28
28
|
icon: l,
|
|
29
|
-
component:
|
|
29
|
+
component: L,
|
|
30
30
|
title: "Log"
|
|
31
31
|
},
|
|
32
32
|
template: {
|
|
33
|
-
icon:
|
|
34
|
-
component:
|
|
33
|
+
icon: I,
|
|
34
|
+
component: F,
|
|
35
35
|
title: "Template"
|
|
36
36
|
},
|
|
37
37
|
dataMapping: {
|
|
38
|
-
icon:
|
|
39
|
-
component:
|
|
38
|
+
icon: f,
|
|
39
|
+
component: y,
|
|
40
40
|
title: "Data mapping"
|
|
41
41
|
},
|
|
42
42
|
axes: {
|
|
43
43
|
icon: c,
|
|
44
|
-
component:
|
|
44
|
+
component: d,
|
|
45
45
|
title: "Axes settings"
|
|
46
46
|
},
|
|
47
47
|
statistics: {
|
|
48
|
-
icon:
|
|
49
|
-
component:
|
|
48
|
+
icon: x,
|
|
49
|
+
component: A,
|
|
50
50
|
title: "Statistics"
|
|
51
51
|
},
|
|
52
52
|
layers: {
|
|
53
|
-
icon:
|
|
54
|
-
component:
|
|
53
|
+
icon: a,
|
|
54
|
+
component: b,
|
|
55
55
|
title: "Layers"
|
|
56
56
|
},
|
|
57
57
|
annotations: {
|
|
@@ -70,23 +70,27 @@ const t = {
|
|
|
70
70
|
title: "Export"
|
|
71
71
|
}
|
|
72
72
|
};
|
|
73
|
-
function Q() {
|
|
74
|
-
return
|
|
73
|
+
function Q(t) {
|
|
74
|
+
return ["template", "dataMapping", "axes", "statistics", "layers", "delete", "export"].includes(t);
|
|
75
|
+
}
|
|
76
|
+
function R() {
|
|
77
|
+
return Object.keys(o);
|
|
75
78
|
}
|
|
76
|
-
function
|
|
77
|
-
return t
|
|
79
|
+
function U(t) {
|
|
80
|
+
return o[t].icon ?? "";
|
|
78
81
|
}
|
|
79
|
-
function
|
|
80
|
-
return t
|
|
82
|
+
function V(t) {
|
|
83
|
+
return o[t].title ?? "";
|
|
81
84
|
}
|
|
82
|
-
function
|
|
83
|
-
const n = Object.entries(
|
|
84
|
-
return
|
|
85
|
+
function W(t) {
|
|
86
|
+
const n = Object.entries(o).reduce((e, [i, r]) => m.setProp(e, i, r.component), {});
|
|
87
|
+
return _(n, t);
|
|
85
88
|
}
|
|
86
89
|
export {
|
|
87
|
-
|
|
88
|
-
U as
|
|
89
|
-
|
|
90
|
-
|
|
90
|
+
Q as isOwnGraphMakerTab,
|
|
91
|
+
U as resolveIcon,
|
|
92
|
+
V as resolveTitle,
|
|
93
|
+
R as tabKeys,
|
|
94
|
+
W as useSettingsForm
|
|
91
95
|
};
|
|
92
96
|
//# sourceMappingURL=index.js.map
|
package/dist/forms/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/forms/index.ts"],"sourcesContent":["import { objects } from '@milaboratories/helpers';\nimport type { MaybeRef } from '@platforma-sdk/ui-vue';\nimport type { Component } from 'vue';\nimport AxisIcon from '../components/SettingsTabs/icons/AxesIcon.vue';\nimport DeleteChartIcon from '../components/SettingsTabs/icons/DeleteChartIcon.vue';\nimport ExportIcon from '../components/SettingsTabs/icons/ExportIcon.vue';\nimport LayersIcon from '../components/SettingsTabs/icons/LayersIcon.vue';\nimport LinkIcon from '../components/SettingsTabs/icons/LinkIcon.vue';\nimport LogIcon from '../components/SettingsTabs/icons/LogIcon.vue';\nimport SettingsIcon from '../components/SettingsTabs/icons/SettingsIcon.vue';\nimport { useComponent } from '../composition/useComponent';\nimport AnnotationIcon from '../icons/Annotation.vue';\nimport StatisticsIcon from '../icons/StatisticsIcon.vue';\nimport TemplateIcon from '../icons/TemplateIcon.vue';\nimport AnnotationsForm from './AnnotationsForm.vue';\nimport AxesSettingsForm from './AxesSettingsForm/index.vue';\nimport DataMappingForm from './DataMappingForm/index.vue';\nimport LayersForm from './LayersForm/index.vue';\nimport LogForm from './LogForm.vue';\nimport SettingsForm from './SettingsForm.vue';\nimport StatisticsForm from './StatisticsForm/index.vue';\nimport TemplateForm from './TemplateForm.vue';\n\nconst forms = {\n settings: {\n icon: SettingsIcon,\n component: SettingsForm,\n title: 'Settings',\n },\n log: {\n icon: LogIcon,\n component: LogForm,\n title: 'Log',\n },\n template: {\n icon: TemplateIcon,\n component: TemplateForm,\n title: 'Template',\n },\n dataMapping: {\n icon: LinkIcon,\n component: DataMappingForm,\n title: 'Data mapping',\n },\n axes: {\n icon: AxisIcon,\n component: AxesSettingsForm,\n title: 'Axes settings',\n },\n statistics: {\n icon: StatisticsIcon,\n component: StatisticsForm,\n title: 'Statistics',\n },\n layers: {\n icon: LayersIcon,\n component: LayersForm,\n title: 'Layers',\n },\n annotations: {\n icon: AnnotationIcon,\n component: AnnotationsForm,\n title: 'Annotations',\n },\n delete: {\n icon: DeleteChartIcon,\n component: null,\n title: 'Delete graph',\n },\n export: {\n icon: ExportIcon,\n component: null,\n title: 'Export',\n },\n};\n\nexport type FormKey = keyof typeof forms;\n\nexport function tabKeys() {\n return Object.keys(forms) as FormKey[];\n}\n\nexport function resolveIcon(name: FormKey): Component {\n return forms[name].icon ?? '';\n}\n\nexport function resolveTitle(name: FormKey) {\n return forms[name].title ?? '';\n}\n\nexport function useSettingsForm(tab: MaybeRef<FormKey | null>) {\n const components = Object.entries(forms).reduce((dict, [name, v]) => {\n return objects.setProp(dict, name as FormKey, v.component);\n }, {} as Record<FormKey, Component | null>);\n return useComponent(components, tab);\n}\n"],"names":["forms","SettingsIcon","SettingsForm","LogIcon","LogForm","TemplateIcon","TemplateForm","LinkIcon","DataMappingForm","AxisIcon","AxesSettingsForm","StatisticsIcon","StatisticsForm","LayersIcon","LayersForm","AnnotationIcon","AnnotationsForm","DeleteChartIcon","ExportIcon","tabKeys","resolveIcon","name","resolveTitle","useSettingsForm","
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/forms/index.ts"],"sourcesContent":["import { objects } from '@milaboratories/helpers';\nimport type { MaybeRef } from '@platforma-sdk/ui-vue';\nimport type { Component } from 'vue';\nimport AxisIcon from '../components/SettingsTabs/icons/AxesIcon.vue';\nimport DeleteChartIcon from '../components/SettingsTabs/icons/DeleteChartIcon.vue';\nimport ExportIcon from '../components/SettingsTabs/icons/ExportIcon.vue';\nimport LayersIcon from '../components/SettingsTabs/icons/LayersIcon.vue';\nimport LinkIcon from '../components/SettingsTabs/icons/LinkIcon.vue';\nimport LogIcon from '../components/SettingsTabs/icons/LogIcon.vue';\nimport SettingsIcon from '../components/SettingsTabs/icons/SettingsIcon.vue';\nimport { useComponent } from '../composition/useComponent';\nimport AnnotationIcon from '../icons/Annotation.vue';\nimport StatisticsIcon from '../icons/StatisticsIcon.vue';\nimport TemplateIcon from '../icons/TemplateIcon.vue';\nimport AnnotationsForm from './AnnotationsForm.vue';\nimport AxesSettingsForm from './AxesSettingsForm/index.vue';\nimport DataMappingForm from './DataMappingForm/index.vue';\nimport LayersForm from './LayersForm/index.vue';\nimport LogForm from './LogForm.vue';\nimport SettingsForm from './SettingsForm.vue';\nimport StatisticsForm from './StatisticsForm/index.vue';\nimport TemplateForm from './TemplateForm.vue';\n\nconst forms = {\n settings: {\n icon: SettingsIcon,\n component: SettingsForm,\n title: 'Settings',\n },\n log: {\n icon: LogIcon,\n component: LogForm,\n title: 'Log',\n },\n template: {\n icon: TemplateIcon,\n component: TemplateForm,\n title: 'Template',\n },\n dataMapping: {\n icon: LinkIcon,\n component: DataMappingForm,\n title: 'Data mapping',\n },\n axes: {\n icon: AxisIcon,\n component: AxesSettingsForm,\n title: 'Axes settings',\n },\n statistics: {\n icon: StatisticsIcon,\n component: StatisticsForm,\n title: 'Statistics',\n },\n layers: {\n icon: LayersIcon,\n component: LayersForm,\n title: 'Layers',\n },\n annotations: {\n icon: AnnotationIcon,\n component: AnnotationsForm,\n title: 'Annotations',\n },\n delete: {\n icon: DeleteChartIcon,\n component: null,\n title: 'Delete graph',\n },\n export: {\n icon: ExportIcon,\n component: null,\n title: 'Export',\n },\n};\n\nexport type FormKey = keyof typeof forms;\n\nexport function isOwnGraphMakerTab(tab: FormKey) {\n return ['template', 'dataMapping', 'axes', 'statistics', 'layers', 'delete', 'export'].includes(tab);\n}\n\nexport function tabKeys() {\n return Object.keys(forms) as FormKey[];\n}\n\nexport function resolveIcon(name: FormKey): Component {\n return forms[name].icon ?? '';\n}\n\nexport function resolveTitle(name: FormKey) {\n return forms[name].title ?? '';\n}\n\nexport function useSettingsForm(tab: MaybeRef<FormKey | null>) {\n const components = Object.entries(forms).reduce((dict, [name, v]) => {\n return objects.setProp(dict, name as FormKey, v.component);\n }, {} as Record<FormKey, Component | null>);\n return useComponent(components, tab);\n}\n"],"names":["forms","SettingsIcon","SettingsForm","LogIcon","LogForm","TemplateIcon","TemplateForm","LinkIcon","DataMappingForm","AxisIcon","AxesSettingsForm","StatisticsIcon","StatisticsForm","LayersIcon","LayersForm","AnnotationIcon","AnnotationsForm","DeleteChartIcon","ExportIcon","isOwnGraphMakerTab","tab","tabKeys","resolveIcon","name","resolveTitle","useSettingsForm","components","dict","v","objects","useComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;AAuBA,MAAMA,IAAQ;AAAA,EACZ,UAAU;AAAA,IACR,MAAMC;AAAAA,IACN,WAAWC;AAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,KAAK;AAAA,IACH,MAAMC;AAAAA,IACN,WAAWC;AAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,UAAU;AAAA,IACR,MAAMC;AAAA,IACN,WAAWC;AAAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,aAAa;AAAA,IACX,MAAMC;AAAA,IACN,WAAWC;AAAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,MAAM;AAAA,IACJ,MAAMC;AAAA,IACN,WAAWC;AAAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,YAAY;AAAA,IACV,MAAMC;AAAA,IACN,WAAWC;AAAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,QAAQ;AAAA,IACN,MAAMC;AAAA,IACN,WAAWC;AAAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,aAAa;AAAA,IACX,MAAMC;AAAAA,IACN,WAAWC;AAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,QAAQ;AAAA,IACN,MAAMC;AAAA,IACN,WAAW;AAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,QAAQ;AAAA,IACN,MAAMC;AAAA,IACN,WAAW;AAAA,IACX,OAAO;AAAA,EAAA;AAEX;AAIO,SAASC,EAAmBC,GAAc;AAC/C,SAAO,CAAC,YAAY,eAAe,QAAQ,cAAc,UAAU,UAAU,QAAQ,EAAE,SAASA,CAAG;AACrG;AAEO,SAASC,IAAU;AACxB,SAAO,OAAO,KAAKrB,CAAK;AAC1B;AAEO,SAASsB,EAAYC,GAA0B;AACpD,SAAOvB,EAAMuB,CAAI,EAAE,QAAQ;AAC7B;AAEO,SAASC,EAAaD,GAAe;AAC1C,SAAOvB,EAAMuB,CAAI,EAAE,SAAS;AAC9B;AAEO,SAASE,EAAgBL,GAA+B;AAC7D,QAAMM,IAAa,OAAO,QAAQ1B,CAAK,EAAE,OAAO,CAAC2B,GAAM,CAACJ,GAAMK,CAAC,MACtDC,EAAQ,QAAQF,GAAMJ,GAAiBK,EAAE,SAAS,GACxD,CAAA,CAAuC;AAC1C,SAAOE,EAAaJ,GAAYN,CAAG;AACrC;"}
|
package/dist/index.vue.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue.d.ts","sourceRoot":"","sources":["../src/index.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.vue.d.ts","sourceRoot":"","sources":["../src/index.vue"],"names":[],"mappings":"AAseA,OAAO,KAAK,EAA0B,gBAAgB,EAAa,MAAM,sBAAsB,CAAC;AAIhG,OAAO,kBAAkB,CAAC;AAQ1B,OAAO,KAAK,EAAmC,eAAe,EAAe,MAAM,SAAS,CAAC;AAqF7F,iBAAS,KAAK,SAcb;AAED,iBAAS,aAAa,SASrB;AA0TD,iBAAS,cAAc;WAiMT,OAAO,IAA6B;;+BAbf,GAAG;iCACA,GAAG;8BACN,GAAG;yBACR,GAAG;;;;EAehC;AAmCD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;gBAlPT,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;IAnZ5B;;;;OAIG;;IAEH;;OAEG;;;;;;;;gBA0YO,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;gBADlB,eAAe;gBACb,gBAAgB;;;;;;6FA6P5B,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"}
|