@milaboratories/graph-maker 1.2.7 → 1.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/components/Chart.js.map +1 -1
  2. package/dist/components/Chart.vue.d.ts.map +1 -1
  3. package/dist/components/Chart.vue2.js +23 -3
  4. package/dist/components/Chart.vue2.js.map +1 -1
  5. package/dist/components/ChartTruncationWarningAlert.js.map +1 -1
  6. package/dist/components/ChartTruncationWarningAlert.style.js.map +1 -1
  7. package/dist/components/ChartTruncationWarningAlert.vue.d.ts.map +1 -1
  8. package/dist/components/ChartTruncationWarningAlert.vue2.js +30 -17
  9. package/dist/components/ChartTruncationWarningAlert.vue2.js.map +1 -1
  10. package/dist/constantsCommon.d.ts +6 -0
  11. package/dist/constantsCommon.d.ts.map +1 -1
  12. package/dist/constantsCommon.js +9 -3
  13. package/dist/constantsCommon.js.map +1 -1
  14. package/dist/forms/DataMappingForm/DendroForm.js.map +1 -1
  15. package/dist/forms/DataMappingForm/DendroForm.vue.d.ts.map +1 -1
  16. package/dist/forms/DataMappingForm/DendroForm.vue2.js +22 -3
  17. package/dist/forms/DataMappingForm/DendroForm.vue2.js.map +1 -1
  18. package/dist/forms/DataMappingForm/useBaskets.d.ts.map +1 -1
  19. package/dist/forms/DataMappingForm/useBaskets.js +22 -3
  20. package/dist/forms/DataMappingForm/useBaskets.js.map +1 -1
  21. package/dist/forms/LayersForm/Layer/Bubble.js.map +1 -1
  22. package/dist/forms/LayersForm/Layer/Bubble.vue.d.ts.map +1 -1
  23. package/dist/forms/LayersForm/Layer/Bubble.vue2.js +53 -45
  24. package/dist/forms/LayersForm/Layer/Bubble.vue2.js.map +1 -1
  25. package/dist/forms/LayersForm/Layer/heatmap/Heatmap.js.map +1 -1
  26. package/dist/forms/LayersForm/Layer/heatmap/Heatmap.vue.d.ts.map +1 -1
  27. package/dist/forms/LayersForm/Layer/heatmap/Heatmap.vue2.js +49 -41
  28. package/dist/forms/LayersForm/Layer/heatmap/Heatmap.vue2.js.map +1 -1
  29. package/dist/forms/LayersForm/Layer/heatmap/HeatmapClustered.js.map +1 -1
  30. package/dist/forms/LayersForm/Layer/heatmap/HeatmapClustered.vue.d.ts.map +1 -1
  31. package/dist/forms/LayersForm/Layer/heatmap/HeatmapClustered.vue2.js +63 -55
  32. package/dist/forms/LayersForm/Layer/heatmap/HeatmapClustered.vue2.js.map +1 -1
  33. package/dist/store.js +7 -1
  34. package/dist/store.js.map +1 -1
  35. package/dist/ui.d.ts +0 -1
  36. package/dist/ui.d.ts.map +1 -1
  37. package/dist/ui.js +1 -2
  38. package/dist/ui.vue2.js +1 -1
  39. package/dist/ui.vue2.js.map +1 -1
  40. package/dist/ui2.js.map +1 -1
  41. package/dist/utils/createChartSettingsForRender/composeBubbleSettings.d.ts +2 -0
  42. package/dist/utils/createChartSettingsForRender/composeBubbleSettings.d.ts.map +1 -1
  43. package/dist/utils/createChartSettingsForRender/composeBubbleSettings.js +1 -1
  44. package/dist/utils/createChartSettingsForRender/composeBubbleSettings.js.map +1 -1
  45. package/dist/utils/createChartSettingsForRender/composeChartSettings.d.ts +5 -1
  46. package/dist/utils/createChartSettingsForRender/composeChartSettings.d.ts.map +1 -1
  47. package/dist/utils/createChartSettingsForRender/composeChartSettings.js +5 -1
  48. package/dist/utils/createChartSettingsForRender/composeChartSettings.js.map +1 -1
  49. package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts +2 -0
  50. package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts.map +1 -1
  51. package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.js +1 -1
  52. package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.js.map +1 -1
  53. package/dist/utils/loadUniqueValuesToSave.d.ts.map +1 -1
  54. package/dist/utils/loadUniqueValuesToSave.js +16 -3
  55. package/dist/utils/loadUniqueValuesToSave.js.map +1 -1
  56. package/package.json +3 -3
  57. package/dist/GraphMakerPlugin.js +0 -5
  58. package/dist/GraphMakerPlugin.js.map +0 -1
  59. package/dist/GraphMakerPlugin.vue.d.ts +0 -37
  60. package/dist/GraphMakerPlugin.vue.d.ts.map +0 -1
  61. package/dist/GraphMakerPlugin.vue2.js +0 -61
  62. package/dist/GraphMakerPlugin.vue2.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Chart.js","names":[],"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-if=\"!store.reactive.tooltipHintWasShown\"\n v-model=\"store.reactive.showTooltipHint\"\n type=\"success\"\n 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"],"mappings":""}
1
+ {"version":3,"file":"Chart.js","names":[],"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: store.value.columnsDataStore.value,\n inputGuide: store.value.inputGuide.value,\n selectedSource: sourceId,\n limit: 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: store.value.columnsDataStore.value, inputGuide: store.value.inputGuide.value, selectedSource: sourceId, limit: MAX_SEARCH_OPTIONS_LIST_LENGTH, searchQuery: searchLabelStr, searchQueryByValue: 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 label = await store.value.controller.getLabelForValue({\n store: store.value.columnsDataStore.value, inputGuide: store.value.inputGuide.value, selectedSource: sourceId, value: selectedValue });\n return { value: selectedValue, label };\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-if=\"!store.reactive.tooltipHintWasShown\"\n v-model=\"store.reactive.showTooltipHint\"\n type=\"success\"\n 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"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"Chart.vue.d.ts","sourceRoot":"","sources":["../../src/components/Chart.vue"],"names":[],"mappings":"AAsQA,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;WA2QT,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
+ {"version":3,"file":"Chart.vue.d.ts","sourceRoot":"","sources":["../../src/components/Chart.vue"],"names":[],"mappings":"AAqQA,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;AA8JF,iBAAS,cAAc;WA2QT,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"}
@@ -47,7 +47,12 @@ var k = { class: "chart_container" }, A = { class: "chart_header" }, j = ["value
47
47
  let n = t.selectedFilterValues ?? [];
48
48
  return Promise.all(n.map((t) => Z(e, t)));
49
49
  }
50
- let n = await L.value.controller.getUniqueSourceValuesWithLabels(L.value.columnsDataStore.value, L.value.inputGuide.value, e, 100);
50
+ let n = await L.value.controller.getUniqueSourceValuesWithLabels({
51
+ store: L.value.columnsDataStore.value,
52
+ inputGuide: L.value.inputGuide.value,
53
+ selectedSource: e,
54
+ limit: 100
55
+ });
51
56
  return n.overflow ? null : n.values;
52
57
  }
53
58
  let K = _();
@@ -84,10 +89,25 @@ var k = { class: "chart_container" }, A = { class: "chart_header" }, j = ["value
84
89
  return t ? i.filter((e) => e.label.toLowerCase().includes(t.toLowerCase())) : i;
85
90
  }
86
91
  let i = n === "label" ? t : void 0, a = n === "value" ? t : void 0;
87
- return (await L.value.controller.getUniqueSourceValuesWithLabels(L.value.columnsDataStore.value, L.value.inputGuide.value, e, 100, i, a)).values;
92
+ return (await L.value.controller.getUniqueSourceValuesWithLabels({
93
+ store: L.value.columnsDataStore.value,
94
+ inputGuide: L.value.inputGuide.value,
95
+ selectedSource: e,
96
+ limit: 100,
97
+ searchQuery: i,
98
+ searchQueryByValue: a
99
+ })).values;
88
100
  }
89
101
  async function Z(e, t) {
90
- return L.value.columnsDataStore.value ? await L.value.controller.getUniqueSourceValuesWithLabels(L.value.columnsDataStore.value, L.value.inputGuide.value, e, 1, void 0, t).then((e) => e.values[0]) : Promise.resolve({
102
+ return L.value.columnsDataStore.value ? {
103
+ value: t,
104
+ label: await L.value.controller.getLabelForValue({
105
+ store: L.value.columnsDataStore.value,
106
+ inputGuide: L.value.inputGuide.value,
107
+ selectedSource: e,
108
+ value: t
109
+ })
110
+ } : Promise.resolve({
91
111
  value: t,
92
112
  label: " "
93
113
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Chart.vue_vue_type_script_setup_true_lang.js","names":["$emit"],"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-if=\"!store.reactive.tooltipHintWasShown\"\n v-model=\"store.reactive.showTooltipHint\"\n type=\"success\"\n 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"],"mappings":"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"}
1
+ {"version":3,"file":"Chart.vue_vue_type_script_setup_true_lang.js","names":["$emit"],"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: store.value.columnsDataStore.value,\n inputGuide: store.value.inputGuide.value,\n selectedSource: sourceId,\n limit: 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: store.value.columnsDataStore.value, inputGuide: store.value.inputGuide.value, selectedSource: sourceId, limit: MAX_SEARCH_OPTIONS_LIST_LENGTH, searchQuery: searchLabelStr, searchQueryByValue: 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 label = await store.value.controller.getLabelForValue({\n store: store.value.columnsDataStore.value, inputGuide: store.value.inputGuide.value, selectedSource: sourceId, value: selectedValue });\n return { value: selectedValue, label };\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-if=\"!store.reactive.tooltipHintWasShown\"\n v-model=\"store.reactive.showTooltipHint\"\n type=\"success\"\n 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"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChartTruncationWarningAlert.js","names":[],"sources":["../../src/components/ChartTruncationWarningAlert.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PlBtnPrimary, PlNotificationAlert, PlSpacer } from '@platforma-sdk/ui-vue';\nimport { computed, ref } from 'vue';\nimport type { ChartTruncationWarning } from '../utils/createChartSettingsForRender/composeChartSettings';\nimport { formatTruncationTotal } from '../utils/createChartSettingsForRender/composeChartSettings';\nimport { useStore } from '../store';\n\nconst props = defineProps<{ truncationWarning: ChartTruncationWarning }>();\n\nconst store = useStore();\nconst isAlertOpen = ref(true);\n\nconst message = computed(() => {\n const w = props.truncationWarning;\n const intro: string[] = [];\n if (w.groups) intro.push('Some groups are hidden');\n if (w.facets) intro.push('Some facets are hidden');\n const lead = intro.join('. ');\n const countParts: string[] = [];\n if (w.groups && w.groupsVisible != null && w.groupsTotal != null) {\n countParts.push(`${w.groupsVisible} of ${formatTruncationTotal(w.groupsTotal)} groups`);\n }\n if (w.facets && w.facetsVisible != null && w.facetsTotal != null) {\n countParts.push(`${w.facetsVisible} of ${formatTruncationTotal(w.facetsTotal)} facets`);\n }\n const countText = countParts.length ? ` Showing ${countParts.join('; ')}.` : '';\n const end = 'Limits can be changed in Axes settings.';\n return `${lead}.${countText} ${end}`;\n});\n\nfunction openAxesSettings() {\n store.value.reactive.currentTab = 'axes';\n store.value.reactive.tabDefaultState.axes.scrollToBottom = true;\n}\n</script>\n<template>\n <div :class=\"$style.alert\">\n <PlNotificationAlert v-model=\"isAlertOpen\" type=\"warning\" closable>\n {{ message }}\n <template #actions>\n <PlBtnPrimary icon=\"arrow-right\" @click.stop=\"() => openAxesSettings()\">Open Axes settings</PlBtnPrimary>\n <PlSpacer />\n </template>\n </PlNotificationAlert>\n </div>\n</template>\n<style module>\n.alert {\n position: fixed;\n bottom: 12px;\n right: 12px;\n width: 256px;\n height: auto;\n z-index: 1;\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"ChartTruncationWarningAlert.js","names":[],"sources":["../../src/components/ChartTruncationWarningAlert.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PlBtnPrimary, PlNotificationAlert, PlSpacer } from '@platforma-sdk/ui-vue';\nimport { computed, ref } from 'vue';\nimport type { ChartTruncationWarning } from '../utils/createChartSettingsForRender/composeChartSettings';\nimport { formatTruncationTotal } from '../utils/createChartSettingsForRender/composeChartSettings';\nimport { useStore } from '../store';\n\nconst props = defineProps<{ truncationWarning: ChartTruncationWarning }>();\n\nconst store = useStore();\nconst isAlertOpen = ref(true);\n\nconst message = computed(() => {\n const w = props.truncationWarning;\n\n if (w.type === 'dataOverflow') {\n return `Only ${w.dataVisible} values are shown on the chart. Use filters.`;\n }\n const intro: string[] = [];\n if (w.groups) intro.push('Some groups are hidden');\n if (w.facets) intro.push('Some facets are hidden');\n const lead = intro.join('. ');\n const countParts: string[] = [];\n if (w.groups && w.groupsVisible != null && w.groupsTotal != null) {\n countParts.push(`${w.groupsVisible} of ${formatTruncationTotal(w.groupsTotal)} groups`);\n }\n if (w.facets && w.facetsVisible != null && w.facetsTotal != null) {\n countParts.push(`${w.facetsVisible} of ${formatTruncationTotal(w.facetsTotal)} facets`);\n }\n const countText = countParts.length ? ` Showing ${countParts.join('; ')}.` : '';\n const end = 'Limits can be changed in Axes settings.';\n return `${lead}.${countText} ${end}`;\n});\n\nfunction openAxesSettings() {\n store.value.reactive.currentTab = 'axes';\n store.value.reactive.tabDefaultState.axes.scrollToBottom = true;\n}\n\nfunction openDataMapping() {\n store.value.reactive.currentTab = 'dataMapping';\n}\n</script>\n<template>\n <div :class=\"$style.alert\">\n <PlNotificationAlert v-model=\"isAlertOpen\" type=\"warning\" closable>\n {{ message }}\n <template #actions>\n <PlBtnPrimary v-if=\"truncationWarning.type === 'dataOverflow'\" icon=\"arrow-right\" @click.stop=\"() => openDataMapping()\">Open Data Mapping</PlBtnPrimary>\n <PlBtnPrimary v-else icon=\"arrow-right\" @click.stop=\"() => openAxesSettings()\">Open Axes settings</PlBtnPrimary>\n <PlSpacer />\n </template>\n </PlNotificationAlert>\n </div>\n</template>\n<style module>\n.alert {\n position: fixed;\n bottom: 12px;\n right: 12px;\n width: 256px;\n height: auto;\n z-index: 1;\n}\n</style>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"ChartTruncationWarningAlert.vue_vue_type_style_index_0_lang.module.js","names":[],"sources":["../../src/components/ChartTruncationWarningAlert.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PlBtnPrimary, PlNotificationAlert, PlSpacer } from '@platforma-sdk/ui-vue';\nimport { computed, ref } from 'vue';\nimport type { ChartTruncationWarning } from '../utils/createChartSettingsForRender/composeChartSettings';\nimport { formatTruncationTotal } from '../utils/createChartSettingsForRender/composeChartSettings';\nimport { useStore } from '../store';\n\nconst props = defineProps<{ truncationWarning: ChartTruncationWarning }>();\n\nconst store = useStore();\nconst isAlertOpen = ref(true);\n\nconst message = computed(() => {\n const w = props.truncationWarning;\n const intro: string[] = [];\n if (w.groups) intro.push('Some groups are hidden');\n if (w.facets) intro.push('Some facets are hidden');\n const lead = intro.join('. ');\n const countParts: string[] = [];\n if (w.groups && w.groupsVisible != null && w.groupsTotal != null) {\n countParts.push(`${w.groupsVisible} of ${formatTruncationTotal(w.groupsTotal)} groups`);\n }\n if (w.facets && w.facetsVisible != null && w.facetsTotal != null) {\n countParts.push(`${w.facetsVisible} of ${formatTruncationTotal(w.facetsTotal)} facets`);\n }\n const countText = countParts.length ? ` Showing ${countParts.join('; ')}.` : '';\n const end = 'Limits can be changed in Axes settings.';\n return `${lead}.${countText} ${end}`;\n});\n\nfunction openAxesSettings() {\n store.value.reactive.currentTab = 'axes';\n store.value.reactive.tabDefaultState.axes.scrollToBottom = true;\n}\n</script>\n<template>\n <div :class=\"$style.alert\">\n <PlNotificationAlert v-model=\"isAlertOpen\" type=\"warning\" closable>\n {{ message }}\n <template #actions>\n <PlBtnPrimary icon=\"arrow-right\" @click.stop=\"() => openAxesSettings()\">Open Axes settings</PlBtnPrimary>\n <PlSpacer />\n </template>\n </PlNotificationAlert>\n </div>\n</template>\n<style module>\n.alert {\n position: fixed;\n bottom: 12px;\n right: 12px;\n width: 256px;\n height: auto;\n z-index: 1;\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"ChartTruncationWarningAlert.vue_vue_type_style_index_0_lang.module.js","names":[],"sources":["../../src/components/ChartTruncationWarningAlert.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PlBtnPrimary, PlNotificationAlert, PlSpacer } from '@platforma-sdk/ui-vue';\nimport { computed, ref } from 'vue';\nimport type { ChartTruncationWarning } from '../utils/createChartSettingsForRender/composeChartSettings';\nimport { formatTruncationTotal } from '../utils/createChartSettingsForRender/composeChartSettings';\nimport { useStore } from '../store';\n\nconst props = defineProps<{ truncationWarning: ChartTruncationWarning }>();\n\nconst store = useStore();\nconst isAlertOpen = ref(true);\n\nconst message = computed(() => {\n const w = props.truncationWarning;\n\n if (w.type === 'dataOverflow') {\n return `Only ${w.dataVisible} values are shown on the chart. Use filters.`;\n }\n const intro: string[] = [];\n if (w.groups) intro.push('Some groups are hidden');\n if (w.facets) intro.push('Some facets are hidden');\n const lead = intro.join('. ');\n const countParts: string[] = [];\n if (w.groups && w.groupsVisible != null && w.groupsTotal != null) {\n countParts.push(`${w.groupsVisible} of ${formatTruncationTotal(w.groupsTotal)} groups`);\n }\n if (w.facets && w.facetsVisible != null && w.facetsTotal != null) {\n countParts.push(`${w.facetsVisible} of ${formatTruncationTotal(w.facetsTotal)} facets`);\n }\n const countText = countParts.length ? ` Showing ${countParts.join('; ')}.` : '';\n const end = 'Limits can be changed in Axes settings.';\n return `${lead}.${countText} ${end}`;\n});\n\nfunction openAxesSettings() {\n store.value.reactive.currentTab = 'axes';\n store.value.reactive.tabDefaultState.axes.scrollToBottom = true;\n}\n\nfunction openDataMapping() {\n store.value.reactive.currentTab = 'dataMapping';\n}\n</script>\n<template>\n <div :class=\"$style.alert\">\n <PlNotificationAlert v-model=\"isAlertOpen\" type=\"warning\" closable>\n {{ message }}\n <template #actions>\n <PlBtnPrimary v-if=\"truncationWarning.type === 'dataOverflow'\" icon=\"arrow-right\" @click.stop=\"() => openDataMapping()\">Open Data Mapping</PlBtnPrimary>\n <PlBtnPrimary v-else icon=\"arrow-right\" @click.stop=\"() => openAxesSettings()\">Open Axes settings</PlBtnPrimary>\n <PlSpacer />\n </template>\n </PlNotificationAlert>\n </div>\n</template>\n<style module>\n.alert {\n position: fixed;\n bottom: 12px;\n right: 12px;\n width: 256px;\n height: auto;\n z-index: 1;\n}\n</style>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"ChartTruncationWarningAlert.vue.d.ts","sourceRoot":"","sources":["../../src/components/ChartTruncationWarningAlert.vue"],"names":[],"mappings":"AA4DA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4DAA4D,CAAC;AAIzG,KAAK,WAAW,GAAG;IAAE,iBAAiB,EAAE,sBAAsB,CAAA;CAAE,CAAC;;AAyHjE,wBAOG"}
1
+ {"version":3,"file":"ChartTruncationWarningAlert.vue.d.ts","sourceRoot":"","sources":["../../src/components/ChartTruncationWarningAlert.vue"],"names":[],"mappings":"AAqEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4DAA4D,CAAC;AAIzG,KAAK,WAAW,GAAG;IAAE,iBAAiB,EAAE,sBAAsB,CAAA;CAAE,CAAC;;AAwJjE,wBAOG"}
@@ -1,38 +1,51 @@
1
1
  import { formatTruncationTotal as e } from "../utils/createChartSettingsForRender/composeChartSettings.js";
2
2
  import { useStore as t } from "../store.js";
3
- import { computed as n, createElementBlock as r, createTextVNode as i, createVNode as a, defineComponent as o, normalizeClass as s, openBlock as c, ref as l, toDisplayString as u, unref as d, withCtx as f, withModifiers as p } from "vue";
4
- import { PlBtnPrimary as m, PlNotificationAlert as h, PlSpacer as g } from "@platforma-sdk/ui-vue";
5
- var _ = /* @__PURE__ */ o({
3
+ import { computed as n, createBlock as r, createElementBlock as i, createTextVNode as a, createVNode as o, defineComponent as s, normalizeClass as c, openBlock as l, ref as u, toDisplayString as d, unref as f, withCtx as p, withModifiers as m } from "vue";
4
+ import { PlBtnPrimary as h, PlNotificationAlert as g, PlSpacer as _ } from "@platforma-sdk/ui-vue";
5
+ var v = /* @__PURE__ */ s({
6
6
  __name: "ChartTruncationWarningAlert",
7
7
  props: { truncationWarning: {} },
8
- setup(o) {
9
- let _ = o, v = t(), y = l(!0), b = n(() => {
10
- let t = _.truncationWarning, n = [];
8
+ setup(s) {
9
+ let v = s, y = t(), b = u(!0), x = n(() => {
10
+ let t = v.truncationWarning;
11
+ if (t.type === "dataOverflow") return `Only ${t.dataVisible} values are shown on the chart. Use filters.`;
12
+ let n = [];
11
13
  t.groups && n.push("Some groups are hidden"), t.facets && n.push("Some facets are hidden");
12
14
  let r = n.join(". "), i = [];
13
15
  return t.groups && t.groupsVisible != null && t.groupsTotal != null && i.push(`${t.groupsVisible} of ${e(t.groupsTotal)} groups`), t.facets && t.facetsVisible != null && t.facetsTotal != null && i.push(`${t.facetsVisible} of ${e(t.facetsTotal)} facets`), `${r}.${i.length ? ` Showing ${i.join("; ")}.` : ""} Limits can be changed in Axes settings.`;
14
16
  });
15
- function x() {
16
- v.value.reactive.currentTab = "axes", v.value.reactive.tabDefaultState.axes.scrollToBottom = !0;
17
+ function S() {
18
+ y.value.reactive.currentTab = "axes", y.value.reactive.tabDefaultState.axes.scrollToBottom = !0;
17
19
  }
18
- return (e, t) => (c(), r("div", { class: s(e.$style.alert) }, [a(d(h), {
19
- modelValue: y.value,
20
- "onUpdate:modelValue": t[1] ||= (e) => y.value = e,
20
+ function C() {
21
+ y.value.reactive.currentTab = "dataMapping";
22
+ }
23
+ return (e, t) => (l(), i("div", { class: c(e.$style.alert) }, [o(f(g), {
24
+ modelValue: b.value,
25
+ "onUpdate:modelValue": t[2] ||= (e) => b.value = e,
21
26
  type: "warning",
22
27
  closable: ""
23
28
  }, {
24
- actions: f(() => [a(d(m), {
29
+ actions: p(() => [s.truncationWarning.type === "dataOverflow" ? (l(), r(f(h), {
30
+ key: 0,
31
+ icon: "arrow-right",
32
+ onClick: t[0] ||= m(() => C(), ["stop"])
33
+ }, {
34
+ default: p(() => [...t[3] ||= [a("Open Data Mapping", -1)]]),
35
+ _: 1
36
+ })) : (l(), r(f(h), {
37
+ key: 1,
25
38
  icon: "arrow-right",
26
- onClick: t[0] ||= p(() => x(), ["stop"])
39
+ onClick: t[1] ||= m(() => S(), ["stop"])
27
40
  }, {
28
- default: f(() => [...t[2] ||= [i("Open Axes settings", -1)]]),
41
+ default: p(() => [...t[4] ||= [a("Open Axes settings", -1)]]),
29
42
  _: 1
30
- }), a(d(g))]),
31
- default: f(() => [i(u(b.value) + " ", 1)]),
43
+ })), o(f(_))]),
44
+ default: p(() => [a(d(x.value) + " ", 1)]),
32
45
  _: 1
33
46
  }, 8, ["modelValue"])], 2));
34
47
  }
35
48
  });
36
- export { _ as default };
49
+ export { v as default };
37
50
 
38
51
  //# sourceMappingURL=ChartTruncationWarningAlert.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartTruncationWarningAlert.vue_vue_type_script_setup_true_lang.js","names":["$style"],"sources":["../../src/components/ChartTruncationWarningAlert.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PlBtnPrimary, PlNotificationAlert, PlSpacer } from '@platforma-sdk/ui-vue';\nimport { computed, ref } from 'vue';\nimport type { ChartTruncationWarning } from '../utils/createChartSettingsForRender/composeChartSettings';\nimport { formatTruncationTotal } from '../utils/createChartSettingsForRender/composeChartSettings';\nimport { useStore } from '../store';\n\nconst props = defineProps<{ truncationWarning: ChartTruncationWarning }>();\n\nconst store = useStore();\nconst isAlertOpen = ref(true);\n\nconst message = computed(() => {\n const w = props.truncationWarning;\n const intro: string[] = [];\n if (w.groups) intro.push('Some groups are hidden');\n if (w.facets) intro.push('Some facets are hidden');\n const lead = intro.join('. ');\n const countParts: string[] = [];\n if (w.groups && w.groupsVisible != null && w.groupsTotal != null) {\n countParts.push(`${w.groupsVisible} of ${formatTruncationTotal(w.groupsTotal)} groups`);\n }\n if (w.facets && w.facetsVisible != null && w.facetsTotal != null) {\n countParts.push(`${w.facetsVisible} of ${formatTruncationTotal(w.facetsTotal)} facets`);\n }\n const countText = countParts.length ? ` Showing ${countParts.join('; ')}.` : '';\n const end = 'Limits can be changed in Axes settings.';\n return `${lead}.${countText} ${end}`;\n});\n\nfunction openAxesSettings() {\n store.value.reactive.currentTab = 'axes';\n store.value.reactive.tabDefaultState.axes.scrollToBottom = true;\n}\n</script>\n<template>\n <div :class=\"$style.alert\">\n <PlNotificationAlert v-model=\"isAlertOpen\" type=\"warning\" closable>\n {{ message }}\n <template #actions>\n <PlBtnPrimary icon=\"arrow-right\" @click.stop=\"() => openAxesSettings()\">Open Axes settings</PlBtnPrimary>\n <PlSpacer />\n </template>\n </PlNotificationAlert>\n </div>\n</template>\n<style module>\n.alert {\n position: fixed;\n bottom: 12px;\n right: 12px;\n width: 256px;\n height: auto;\n z-index: 1;\n}\n</style>\n"],"mappings":";;;;;;;;EAOA,IAAM,IAAQ,GAER,IAAQ,GAAU,EAClB,IAAc,EAAI,GAAK,EAEvB,IAAU,QAAe;GAC7B,IAAM,IAAI,EAAM,mBACV,IAAkB,EAAE;AAE1B,GADI,EAAE,UAAQ,EAAM,KAAK,yBAAyB,EAC9C,EAAE,UAAQ,EAAM,KAAK,yBAAyB;GAClD,IAAM,IAAO,EAAM,KAAK,KAAK,EACvB,IAAuB,EAAE;AAS/B,UARI,EAAE,UAAU,EAAE,iBAAiB,QAAQ,EAAE,eAAe,QAC1D,EAAW,KAAK,GAAG,EAAE,cAAc,MAAM,EAAsB,EAAE,YAAY,CAAC,SAAS,EAErF,EAAE,UAAU,EAAE,iBAAiB,QAAQ,EAAE,eAAe,QAC1D,EAAW,KAAK,GAAG,EAAE,cAAc,MAAM,EAAsB,EAAE,YAAY,CAAC,SAAS,EAIlF,GAAG,EAAK,GAFG,EAAW,SAAS,YAAY,EAAW,KAAK,KAAK,CAAC,KAAK,GAEjD;IAC5B;EAEF,SAAS,IAAmB;AAE1B,GADA,EAAM,MAAM,SAAS,aAAa,QAClC,EAAM,MAAM,SAAS,gBAAgB,KAAK,iBAAiB;;yBAI3D,EAQM,OAAA,EARA,OAAK,EAAEA,EAAAA,OAAO,MAAK,EAAA,EAAA,CACvB,EAMsB,EAAA,EAAA,EAAA;eANQ,EAAA;4CAAW,QAAA;GAAE,MAAK;GAAU,UAAA;;GAE7C,SAAO,QACyF,CAAzG,EAAyG,EAAA,EAAA,EAAA;IAA3F,MAAK;IAAe,SAAK,AAAA,EAAA,OAAA,QAAa,GAAgB,EAAA,CAAA,OAAA,CAAA;;qBAAsB,CAAA,GAAA,AAAA,EAAA,OAAA,CAAA,EAAlB,sBAAkB,GAAA,CAAA,CAAA,CAAA;;OAC1F,EAAY,EAAA,EAAA,CAAA,CAAA,CAAA;oBAHD,CAAA,EAAA,EAAV,EAAA,MAAO,GAAG,KACb,EAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"ChartTruncationWarningAlert.vue_vue_type_script_setup_true_lang.js","names":["$style"],"sources":["../../src/components/ChartTruncationWarningAlert.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PlBtnPrimary, PlNotificationAlert, PlSpacer } from '@platforma-sdk/ui-vue';\nimport { computed, ref } from 'vue';\nimport type { ChartTruncationWarning } from '../utils/createChartSettingsForRender/composeChartSettings';\nimport { formatTruncationTotal } from '../utils/createChartSettingsForRender/composeChartSettings';\nimport { useStore } from '../store';\n\nconst props = defineProps<{ truncationWarning: ChartTruncationWarning }>();\n\nconst store = useStore();\nconst isAlertOpen = ref(true);\n\nconst message = computed(() => {\n const w = props.truncationWarning;\n\n if (w.type === 'dataOverflow') {\n return `Only ${w.dataVisible} values are shown on the chart. Use filters.`;\n }\n const intro: string[] = [];\n if (w.groups) intro.push('Some groups are hidden');\n if (w.facets) intro.push('Some facets are hidden');\n const lead = intro.join('. ');\n const countParts: string[] = [];\n if (w.groups && w.groupsVisible != null && w.groupsTotal != null) {\n countParts.push(`${w.groupsVisible} of ${formatTruncationTotal(w.groupsTotal)} groups`);\n }\n if (w.facets && w.facetsVisible != null && w.facetsTotal != null) {\n countParts.push(`${w.facetsVisible} of ${formatTruncationTotal(w.facetsTotal)} facets`);\n }\n const countText = countParts.length ? ` Showing ${countParts.join('; ')}.` : '';\n const end = 'Limits can be changed in Axes settings.';\n return `${lead}.${countText} ${end}`;\n});\n\nfunction openAxesSettings() {\n store.value.reactive.currentTab = 'axes';\n store.value.reactive.tabDefaultState.axes.scrollToBottom = true;\n}\n\nfunction openDataMapping() {\n store.value.reactive.currentTab = 'dataMapping';\n}\n</script>\n<template>\n <div :class=\"$style.alert\">\n <PlNotificationAlert v-model=\"isAlertOpen\" type=\"warning\" closable>\n {{ message }}\n <template #actions>\n <PlBtnPrimary v-if=\"truncationWarning.type === 'dataOverflow'\" icon=\"arrow-right\" @click.stop=\"() => openDataMapping()\">Open Data Mapping</PlBtnPrimary>\n <PlBtnPrimary v-else icon=\"arrow-right\" @click.stop=\"() => openAxesSettings()\">Open Axes settings</PlBtnPrimary>\n <PlSpacer />\n </template>\n </PlNotificationAlert>\n </div>\n</template>\n<style module>\n.alert {\n position: fixed;\n bottom: 12px;\n right: 12px;\n width: 256px;\n height: auto;\n z-index: 1;\n}\n</style>\n"],"mappings":";;;;;;;;EAOA,IAAM,IAAQ,GAER,IAAQ,GAAU,EAClB,IAAc,EAAI,GAAK,EAEvB,IAAU,QAAe;GAC7B,IAAM,IAAI,EAAM;AAEhB,OAAI,EAAE,SAAS,eACb,QAAO,QAAQ,EAAE,YAAY;GAE/B,IAAM,IAAkB,EAAE;AAE1B,GADI,EAAE,UAAQ,EAAM,KAAK,yBAAyB,EAC9C,EAAE,UAAQ,EAAM,KAAK,yBAAyB;GAClD,IAAM,IAAO,EAAM,KAAK,KAAK,EACvB,IAAuB,EAAE;AAS/B,UARI,EAAE,UAAU,EAAE,iBAAiB,QAAQ,EAAE,eAAe,QAC1D,EAAW,KAAK,GAAG,EAAE,cAAc,MAAM,EAAsB,EAAE,YAAY,CAAC,SAAS,EAErF,EAAE,UAAU,EAAE,iBAAiB,QAAQ,EAAE,eAAe,QAC1D,EAAW,KAAK,GAAG,EAAE,cAAc,MAAM,EAAsB,EAAE,YAAY,CAAC,SAAS,EAIlF,GAAG,EAAK,GAFG,EAAW,SAAS,YAAY,EAAW,KAAK,KAAK,CAAC,KAAK,GAEjD;IAC5B;EAEF,SAAS,IAAmB;AAE1B,GADA,EAAM,MAAM,SAAS,aAAa,QAClC,EAAM,MAAM,SAAS,gBAAgB,KAAK,iBAAiB;;EAG7D,SAAS,IAAkB;AACzB,KAAM,MAAM,SAAS,aAAa;;yBAIlC,EASM,OAAA,EATA,OAAK,EAAEA,EAAAA,OAAO,MAAK,EAAA,EAAA,CACvB,EAOsB,EAAA,EAAA,EAAA;eAPQ,EAAA;4CAAW,QAAA;GAAE,MAAK;GAAU,UAAA;;GAE7C,SAAO,QACwI,CAApI,EAAA,kBAAkB,SAAI,kBAAA,GAAA,EAA1C,EAAwJ,EAAA,EAAA,EAAA;;IAAzF,MAAK;IAAe,SAAK,AAAA,EAAA,OAAA,QAAa,GAAe,EAAA,CAAA,OAAA,CAAA;;qBAAqB,CAAA,GAAA,AAAA,EAAA,OAAA,CAAA,EAAjB,qBAAiB,GAAA,CAAA,CAAA,CAAA;;eACzI,EAAgH,EAAA,EAAA,EAAA;;IAA3F,MAAK;IAAe,SAAK,AAAA,EAAA,OAAA,QAAa,GAAgB,EAAA,CAAA,OAAA,CAAA;;qBAAsB,CAAA,GAAA,AAAA,EAAA,OAAA,CAAA,EAAlB,sBAAkB,GAAA,CAAA,CAAA,CAAA;;QACjG,EAAY,EAAA,EAAA,CAAA,CAAA,CAAA;oBAJD,CAAA,EAAA,EAAV,EAAA,MAAO,GAAG,KACb,EAAA,CAAA,CAAA"}
@@ -96,6 +96,8 @@ export type LayersSettings = {
96
96
  aggregateByY: boolean;
97
97
  aggregationMethod: 'mean' | 'median' | 'min' | 'max';
98
98
  strokeColor: null | string;
99
+ showEmptyRows: boolean;
100
+ showEmptyColumns: boolean;
99
101
  };
100
102
  bins: {
101
103
  fillColor: ColorAes | null;
@@ -118,6 +120,8 @@ export type LayersSettings = {
118
120
  aggregateByX: boolean;
119
121
  aggregateByY: boolean;
120
122
  aggregationMethod: 'mean' | 'median' | 'min' | 'max';
123
+ showEmptyRows: boolean;
124
+ showEmptyColumns: boolean;
121
125
  };
122
126
  heatmapClustered: {
123
127
  NAValueAs: number | null;
@@ -130,6 +134,8 @@ export type LayersSettings = {
130
134
  aggregateByX: boolean;
131
135
  aggregateByY: boolean;
132
136
  aggregationMethod: 'mean' | 'median' | 'min' | 'max';
137
+ showEmptyRows: boolean;
138
+ showEmptyColumns: boolean;
133
139
  };
134
140
  dots: {
135
141
  dotFill: ColorAes | null;
@@ -1 +1 @@
1
- {"version":3,"file":"constantsCommon.d.ts","sourceRoot":"","sources":["../src/constantsCommon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constantsCommon.d.ts","sourceRoot":"","sources":["../src/constantsCommon.ts"],"names":[],"mappings":"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"}
@@ -135,7 +135,9 @@ const L = () => ({
135
135
  normalizationMethod: "standardScaling",
136
136
  aggregateByX: !1,
137
137
  aggregateByY: !1,
138
- aggregationMethod: "mean"
138
+ aggregationMethod: "mean",
139
+ showEmptyRows: !1,
140
+ showEmptyColumns: !1
139
141
  },
140
142
  bins: {
141
143
  fillColor: null,
@@ -157,7 +159,9 @@ const L = () => ({
157
159
  normalizationMethod: "standardScaling",
158
160
  aggregateByX: !1,
159
161
  aggregateByY: !1,
160
- aggregationMethod: "mean"
162
+ aggregationMethod: "mean",
163
+ showEmptyRows: !1,
164
+ showEmptyColumns: !1
161
165
  },
162
166
  heatmapClustered: {
163
167
  NAValueAs: 0,
@@ -169,7 +173,9 @@ const L = () => ({
169
173
  disableClusteringY: !1,
170
174
  aggregateByX: !1,
171
175
  aggregateByY: !1,
172
- aggregationMethod: "mean"
176
+ aggregationMethod: "mean",
177
+ showEmptyRows: !1,
178
+ showEmptyColumns: !1
173
179
  },
174
180
  dots: {
175
181
  dotFill: null,