@milaboratories/graph-maker 1.2.0 → 1.2.2
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/assets/ui.css +1 -1
- package/dist/components/AesSettings/AesDataMappingDiscrete.css +1 -1
- package/dist/components/AesSettings/AesDataMappingDiscrete.vue.d.ts.map +1 -1
- package/dist/components/AesSettings/AesDataMappingDiscrete.vue2.js.map +1 -1
- package/dist/components/AesSettings/AesDataMappingDiscrete.vue3.js +1 -1
- package/dist/components/Chart.vue.d.ts.map +1 -1
- package/dist/components/Chart.vue.js +67 -66
- package/dist/components/Chart.vue.js.map +1 -1
- package/dist/components/ChartTruncationWarningAlert.css +1 -0
- package/dist/components/ChartTruncationWarningAlert.vue.d.ts +7 -0
- package/dist/components/ChartTruncationWarningAlert.vue.d.ts.map +1 -0
- package/dist/components/ChartTruncationWarningAlert.vue.js +10 -0
- package/dist/components/ChartTruncationWarningAlert.vue.js.map +1 -0
- package/dist/components/ChartTruncationWarningAlert.vue2.js +54 -0
- package/dist/components/ChartTruncationWarningAlert.vue2.js.map +1 -0
- package/dist/components/ChartTruncationWarningAlert.vue3.js +8 -0
- package/dist/components/ChartTruncationWarningAlert.vue3.js.map +1 -0
- package/dist/components/DragAndDrop/DnDBasketChip.vue.d.ts.map +1 -1
- package/dist/components/DragAndDrop/DnDBasketChip.vue.js +34 -31
- package/dist/components/DragAndDrop/DnDBasketChip.vue.js.map +1 -1
- package/dist/components/DragAndDrop/DnDRangeChip.vue.d.ts.map +1 -1
- package/dist/components/DragAndDrop/DnDRangeChip.vue.js +34 -31
- package/dist/components/DragAndDrop/DnDRangeChip.vue.js.map +1 -1
- package/dist/components/DragAndDrop/DndDoubleChip.vue.d.ts.map +1 -1
- package/dist/components/DragAndDrop/DndDoubleChip.vue.js +40 -35
- package/dist/components/DragAndDrop/DndDoubleChip.vue.js.map +1 -1
- package/dist/components/PanelModal.vue.d.ts.map +1 -1
- package/dist/components/PanelModal.vue.js +25 -11
- package/dist/components/PanelModal.vue.js.map +1 -1
- package/dist/components/ReorderForm.vue.d.ts.map +1 -1
- package/dist/components/ReorderForm.vue2.js +14 -13
- package/dist/components/ReorderForm.vue2.js.map +1 -1
- package/dist/constantsCommon.d.ts +7 -0
- package/dist/constantsCommon.d.ts.map +1 -1
- package/dist/constantsCommon.js +33 -28
- package/dist/constantsCommon.js.map +1 -1
- package/dist/dataBindAes.d.ts.map +1 -1
- package/dist/dataBindAes.js +88 -93
- package/dist/dataBindAes.js.map +1 -1
- package/dist/forms/AxesSettingsForm/BubbleAxesSettingsForm.vue.d.ts.map +1 -1
- package/dist/forms/AxesSettingsForm/BubbleAxesSettingsForm.vue.js +96 -78
- package/dist/forms/AxesSettingsForm/BubbleAxesSettingsForm.vue.js.map +1 -1
- package/dist/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.d.ts.map +1 -1
- package/dist/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js +189 -161
- package/dist/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js.map +1 -1
- package/dist/forms/AxesSettingsForm/HeatmapAxesSettingsForm.vue.d.ts.map +1 -1
- package/dist/forms/AxesSettingsForm/HeatmapAxesSettingsForm.vue.js +157 -139
- package/dist/forms/AxesSettingsForm/HeatmapAxesSettingsForm.vue.js.map +1 -1
- package/dist/forms/AxesSettingsForm/HistogramAxesSettingsForm.vue.d.ts.map +1 -1
- package/dist/forms/AxesSettingsForm/HistogramAxesSettingsForm.vue.js +154 -136
- package/dist/forms/AxesSettingsForm/HistogramAxesSettingsForm.vue.js.map +1 -1
- package/dist/forms/AxesSettingsForm/ScatterplotAxesSettingsForm.vue.d.ts.map +1 -1
- package/dist/forms/AxesSettingsForm/ScatterplotAxesSettingsForm.vue.js +232 -201
- package/dist/forms/AxesSettingsForm/ScatterplotAxesSettingsForm.vue.js.map +1 -1
- package/dist/forms/DataMappingForm/utils.js +58 -58
- package/dist/forms/DataMappingForm/utils.js.map +1 -1
- package/dist/forms/LayersForm/AesSelector.vue.d.ts.map +1 -1
- package/dist/forms/LayersForm/AesSelector.vue.js +86 -86
- package/dist/forms/LayersForm/AesSelector.vue.js.map +1 -1
- package/dist/index.vue.d.ts.map +1 -1
- package/dist/index.vue.js +183 -159
- package/dist/index.vue.js.map +1 -1
- package/dist/store.d.ts +2 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +135 -128
- package/dist/store.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/calculateDiscreteGroups.d.ts.map +1 -1
- package/dist/utils/calculateDiscreteGroups.js +6 -6
- package/dist/utils/calculateDiscreteGroups.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeBubbleSettings.d.ts +9 -0
- package/dist/utils/createChartSettingsForRender/composeBubbleSettings.d.ts.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeBubbleSettings.js +24 -22
- package/dist/utils/createChartSettingsForRender/composeBubbleSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeChartSettings.d.ts +19 -1
- package/dist/utils/createChartSettingsForRender/composeChartSettings.d.ts.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeChartSettings.js +74 -40
- package/dist/utils/createChartSettingsForRender/composeChartSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeDendroSettings.d.ts +16 -0
- package/dist/utils/createChartSettingsForRender/composeDendroSettings.d.ts.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeDendroSettings.js +22 -22
- package/dist/utils/createChartSettingsForRender/composeDendroSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts +4 -468
- package/dist/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeDiscreteSettings.js +48 -31
- package/dist/utils/createChartSettingsForRender/composeDiscreteSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts +22 -0
- package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.d.ts.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.js +24 -22
- package/dist/utils/createChartSettingsForRender/composeHeatmapSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeHistogramSettings.d.ts +5 -0
- package/dist/utils/createChartSettingsForRender/composeHistogramSettings.d.ts.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeHistogramSettings.js +24 -22
- package/dist/utils/createChartSettingsForRender/composeHistogramSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeScatterplotSettings.d.ts +19 -0
- package/dist/utils/createChartSettingsForRender/composeScatterplotSettings.d.ts.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeScatterplotSettings.js +89 -71
- package/dist/utils/createChartSettingsForRender/composeScatterplotSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeScatterplotUmapSettings.d.ts +12 -0
- package/dist/utils/createChartSettingsForRender/composeScatterplotUmapSettings.d.ts.map +1 -1
- package/dist/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js +40 -35
- package/dist/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js.map +1 -1
- package/dist/utils/createChartSettingsForRender/getAxesDataFromForms.d.ts.map +1 -1
- package/dist/utils/createChartSettingsForRender/getAxesDataFromForms.js +28 -28
- package/dist/utils/createChartSettingsForRender/getAxesDataFromForms.js.map +1 -1
- package/dist/utils/loadUniqueValuesToSave.d.ts +3 -1
- package/dist/utils/loadUniqueValuesToSave.d.ts.map +1 -1
- package/dist/utils/loadUniqueValuesToSave.js +81 -63
- package/dist/utils/loadUniqueValuesToSave.js.map +1 -1
- package/package.json +2 -2
- package/dist/assets/drag-and-drop/img/chip-close.svg.js +0 -7
- package/dist/assets/drag-and-drop/img/chip-close.svg.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composeChartSettings.js","sources":["../../../src/utils/createChartSettingsForRender/composeChartSettings.ts"],"sourcesContent":["import type {\n ChartType,\n DemoDataStore,\n InputGuide,\n InputState,\n PlotDataAndSettings,\n SelectorStateFilter,\n} from '@milaboratories/pf-plots';\nimport {\n getControllerByType,\n} from '@milaboratories/pf-plots';\nimport type {\n DefaultPalettes,\n GraphMakerProps,\n ReactiveState,\n TitlePosition,\n UniqueValuesBySourceMap,\n} from '../../types';\nimport { addFixedOptionsToState } from '../addFixedOptionsToState';\nimport type {\n AxesState } from '../../constantsCommon';\nimport { DEFAULT_HEIGHT, DEFAULT_HEIGHT_SMALL, DEFAULT_WIDTH, DEFAULT_WIDTH_SMALL,\n} from '../../constantsCommon';\nimport type {\n BubbleSettings,\n DataByColumns,\n DendroSettings,\n DiscreteSettings,\n HeatmapSettings,\n HistogramSettings,\n ScatterplotSettings,\n ScatterplotUmapSettings,\n Settings,\n} from '@milaboratories/miplots4';\nimport { composeDiscreteSettings } from './composeDiscreteSettings';\nimport { composeScatterplotSettings } from './composeScatterplotSettings';\nimport { composeScatterplotUmapSettings } from './composeScatterplotUmapSettings';\nimport { composeHeatmapSettings } from './composeHeatmapSettings';\nimport { composeDendroSettings } from './composeDendroSettings';\nimport { composeHistogramSettings } from './composeHistogramSettings';\nimport { composeBubbleSettings } from './composeBubbleSettings';\n\nfunction getChartSizes(chartScale: number, facetByLength = 0) {\n return {\n width: (facetByLength > 0 ? DEFAULT_WIDTH_SMALL : DEFAULT_WIDTH) * (chartScale / 100),\n height: (facetByLength > 0 ? DEFAULT_HEIGHT_SMALL : DEFAULT_HEIGHT) * (chartScale / 100),\n };\n}\n\nfunction getChartTitle(\n chartType: ChartType,\n optionsState: InputState,\n filterLabelsInfo: Record<string, Record<string, { value: unknown; label: string }>>,\n axesSettings: AxesState,\n): {\n name: string;\n show: boolean;\n position?: TitlePosition;\n } {\n if (\n chartType !== 'scatterplot'\n && chartType !== 'scatterplot-umap'\n && chartType !== 'discrete'\n && chartType !== 'heatmap'\n && chartType !== 'histogram'\n && chartType !== 'bubble'\n ) {\n return { name: '', show: false };\n }\n if (axesSettings.title.mode === 'hidden') {\n return { name: '', show: false };\n }\n if (axesSettings.title.mode === 'custom') {\n return { name: axesSettings.title.value, show: true, position: axesSettings.title.position };\n }\n if (axesSettings.title.mode === 'auto') {\n const selectedFilters: string[] = [];\n const tabByStates = (optionsState.components?.tabBy.selectorStates ?? []);\n const filterStates = (optionsState.components?.filters.selectorStates ?? []).filter((state) => !tabByStates.some((tabByState) => tabByState.selectedSource === state.selectedSource));\n\n const usedInTitleStates = [\n ...tabByStates,\n ...filterStates,\n ] as SelectorStateFilter[];\n usedInTitleStates.forEach(({ type, selectedSource, selectedFilterValues }) => {\n if ((!type || type === 'equals') && selectedFilterValues && filterLabelsInfo[selectedSource]) {\n selectedFilters.push(...selectedFilterValues\n .map((selectedFilterValue) => filterLabelsInfo[selectedSource]?.[selectedFilterValue]?.label ?? String(selectedFilterValue)));\n }\n });\n const title = selectedFilters.join(', ');\n return { name: title, show: true, position: axesSettings.title.position };\n }\n return { name: '', show: false };\n}\n\nexport async function loadDataForPlot(\n inputGuide: InputGuide<InputState>,\n reactiveState: ReactiveState,\n dataStore: DemoDataStore | null,\n fixedOptions?: GraphMakerProps['fixedOptions'],\n) {\n if (!inputGuide.ready || dataStore === null) {\n return null;\n }\n try {\n const controller = getControllerByType(reactiveState.chartType);\n const optionsStateWithFixed = await addFixedOptionsToState(\n reactiveState.optionsState,\n dataStore,\n fixedOptions,\n );\n return controller.createDataForPlot(\n dataStore,\n optionsStateWithFixed,\n );\n } catch (err) {\n console.warn('Cant build chart data');\n console.warn((err as Error).message);\n return null;\n }\n}\nexport function composeChartSettings(\n chartData: PlotDataAndSettings | null,\n inputGuide: InputGuide<InputState>,\n labelsInfo: UniqueValuesBySourceMap,\n filterLabelsInfo: Record<string, Record<string, { value: unknown; label: string }>>,\n reactiveState: ReactiveState,\n defaultPalette: DefaultPalettes,\n): null | { settings: Settings; data: DataByColumns } {\n if (!inputGuide.ready || chartData === null) {\n return null;\n }\n\n let settings = { ...chartData.settings };\n const dataByColumns = chartData.data.byColumns;\n settings.title = getChartTitle(reactiveState.chartType, reactiveState.optionsState, filterLabelsInfo, reactiveState.axesSettings);\n settings.size = getChartSizes(reactiveState.chartScale, reactiveState.optionsState.components?.facetBy.selectorStates.length || 0);\n settings.legend = { show: reactiveState.axesSettings.other.showLegend };\n if (reactiveState.chartType === 'discrete') {\n settings = composeDiscreteSettings(settings as DiscreteSettings, reactiveState, labelsInfo, inputGuide, defaultPalette);\n }\n if (reactiveState.chartType === 'scatterplot') {\n settings = composeScatterplotSettings(settings as ScatterplotSettings, dataByColumns, reactiveState, inputGuide, labelsInfo, defaultPalette);\n }\n if (reactiveState.chartType === 'scatterplot-umap') {\n settings = composeScatterplotUmapSettings(settings as ScatterplotUmapSettings, dataByColumns, reactiveState, inputGuide, labelsInfo, defaultPalette);\n }\n if (reactiveState.chartType === 'heatmap') {\n settings = composeHeatmapSettings(settings as HeatmapSettings, reactiveState, defaultPalette);\n }\n if (reactiveState.chartType === 'dendro') {\n settings = composeDendroSettings(settings as DendroSettings, dataByColumns, reactiveState, inputGuide, labelsInfo);\n }\n if (reactiveState.chartType === 'histogram') {\n settings = composeHistogramSettings(settings as HistogramSettings, reactiveState, labelsInfo, defaultPalette);\n }\n if (reactiveState.chartType === 'bubble') {\n settings = composeBubbleSettings(settings as BubbleSettings, reactiveState, defaultPalette);\n }\n return {\n settings: settings as Settings,\n data: chartData.data.byColumns,\n };\n}\n"],"names":["getChartSizes","chartScale","facetByLength","DEFAULT_WIDTH_SMALL","DEFAULT_WIDTH","DEFAULT_HEIGHT_SMALL","DEFAULT_HEIGHT","getChartTitle","chartType","optionsState","filterLabelsInfo","axesSettings","selectedFilters","tabByStates","_a","filterStates","_b","state","tabByState","type","selectedSource","selectedFilterValues","selectedFilterValue","loadDataForPlot","inputGuide","reactiveState","dataStore","fixedOptions","controller","getControllerByType","optionsStateWithFixed","addFixedOptionsToState","err","composeChartSettings","chartData","labelsInfo","defaultPalette","settings","dataByColumns","composeDiscreteSettings","composeScatterplotSettings","composeScatterplotUmapSettings","composeHeatmapSettings","composeDendroSettings","composeHistogramSettings","composeBubbleSettings"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"composeChartSettings.js","sources":["../../../src/utils/createChartSettingsForRender/composeChartSettings.ts"],"sourcesContent":["import type {\n ChartType,\n DemoDataStore,\n InputGuide,\n InputState,\n PlotDataAndSettings,\n SelectorStateFilter,\n} from '@milaboratories/pf-plots';\nimport {\n getControllerByType,\n} from '@milaboratories/pf-plots';\nimport type {\n DefaultPalettes,\n GraphMakerProps,\n ReactiveState,\n TitlePosition,\n UniqueValuesBySourceMap,\n} from '../../types';\n\nconst DISPLAY_MAX = 1000;\n\nexport type ChartTruncationWarning = {\n groups: boolean;\n facets: boolean;\n /** Visible (shown) count for groups */\n groupsVisible?: number;\n /** Total count for groups (use 1000+ in UI when >= 1000) */\n groupsTotal?: number;\n /** Visible (shown) count for facets */\n facetsVisible?: number;\n /** Total count for facets (use 1000+ in UI when >= 1000) */\n facetsTotal?: number;\n};\n\nexport function formatTruncationTotal(n: number): string {\n return n >= DISPLAY_MAX ? '1000+' : String(n);\n}\n\n/** Build facet order for chart settings from saved facet values, limited by maxFacetsCount. */\nexport function getFacetOrderForChartSettings(\n facetBy: { value: string }[],\n facetValuesData: UniqueValuesBySourceMap,\n maxFacetsCount: number,\n): string[] | undefined {\n if (!facetBy?.length || maxFacetsCount <= 0) {\n return undefined;\n }\n const valueLists = facetBy.map((col) => facetValuesData[col.value]?.list ?? []);\n if (valueLists.some((list) => !list.length)) {\n return undefined;\n }\n const keys = getFacetKeysFromValueLists(valueLists);\n return keys.slice(0, maxFacetsCount);\n}\nimport { addFixedOptionsToState } from '../addFixedOptionsToState';\nimport type {\n AxesState } from '../../constantsCommon';\nimport { DEFAULT_HEIGHT, DEFAULT_HEIGHT_SMALL, DEFAULT_WIDTH, DEFAULT_WIDTH_SMALL,\n} from '../../constantsCommon';\nimport type {\n BubbleSettings,\n DataByColumns,\n DendroSettings,\n DiscreteSettings,\n HeatmapSettings,\n HistogramSettings,\n ScatterplotSettings,\n ScatterplotUmapSettings,\n Settings,\n} from '@milaboratories/miplots4';\nimport { getFacetKeysFromValueLists } from '@milaboratories/miplots4';\nimport { composeDiscreteSettings } from './composeDiscreteSettings';\nimport { composeScatterplotSettings } from './composeScatterplotSettings';\nimport { composeScatterplotUmapSettings } from './composeScatterplotUmapSettings';\nimport { composeHeatmapSettings } from './composeHeatmapSettings';\nimport { composeDendroSettings } from './composeDendroSettings';\nimport { composeHistogramSettings } from './composeHistogramSettings';\nimport { composeBubbleSettings } from './composeBubbleSettings';\n\nfunction getChartSizes(chartScale: number, facetByLength = 0) {\n return {\n width: (facetByLength > 0 ? DEFAULT_WIDTH_SMALL : DEFAULT_WIDTH) * (chartScale / 100),\n height: (facetByLength > 0 ? DEFAULT_HEIGHT_SMALL : DEFAULT_HEIGHT) * (chartScale / 100),\n };\n}\n\nfunction getChartTitle(\n chartType: ChartType,\n optionsState: InputState,\n filterLabelsInfo: Record<string, Record<string, { value: unknown; label: string }>>,\n axesSettings: AxesState,\n): {\n name: string;\n show: boolean;\n position?: TitlePosition;\n } {\n if (\n chartType !== 'scatterplot'\n && chartType !== 'scatterplot-umap'\n && chartType !== 'discrete'\n && chartType !== 'heatmap'\n && chartType !== 'histogram'\n && chartType !== 'bubble'\n ) {\n return { name: '', show: false };\n }\n if (axesSettings.title.mode === 'hidden') {\n return { name: '', show: false };\n }\n if (axesSettings.title.mode === 'custom') {\n return { name: axesSettings.title.value, show: true, position: axesSettings.title.position };\n }\n if (axesSettings.title.mode === 'auto') {\n const selectedFilters: string[] = [];\n const tabByStates = (optionsState.components?.tabBy.selectorStates ?? []);\n const filterStates = (optionsState.components?.filters.selectorStates ?? []).filter((state) => !tabByStates.some((tabByState) => tabByState.selectedSource === state.selectedSource));\n\n const usedInTitleStates = [\n ...tabByStates,\n ...filterStates,\n ] as SelectorStateFilter[];\n usedInTitleStates.forEach(({ type, selectedSource, selectedFilterValues }) => {\n if ((!type || type === 'equals') && selectedFilterValues && filterLabelsInfo[selectedSource]) {\n selectedFilters.push(...selectedFilterValues\n .map((selectedFilterValue) => filterLabelsInfo[selectedSource]?.[selectedFilterValue]?.label ?? String(selectedFilterValue)));\n }\n });\n const title = selectedFilters.join(', ');\n return { name: title, show: true, position: axesSettings.title.position };\n }\n return { name: '', show: false };\n}\n\nexport async function loadDataForPlot(\n inputGuide: InputGuide<InputState>,\n reactiveState: ReactiveState,\n dataStore: DemoDataStore | null,\n fixedOptions?: GraphMakerProps['fixedOptions'],\n) {\n if (!inputGuide.ready || dataStore === null) {\n return null;\n }\n try {\n const controller = getControllerByType(reactiveState.chartType);\n const optionsStateWithFixed = await addFixedOptionsToState(\n reactiveState.optionsState,\n dataStore,\n fixedOptions,\n );\n return controller.createDataForPlot(\n dataStore,\n optionsStateWithFixed,\n );\n } catch (err) {\n console.warn('Cant build chart data');\n console.warn((err as Error).message);\n return null;\n }\n}\nexport function composeChartSettings(\n chartData: PlotDataAndSettings | null,\n inputGuide: InputGuide<InputState>,\n labelsInfo: UniqueValuesBySourceMap,\n filterLabelsInfo: Record<string, Record<string, { value: unknown; label: string }>>,\n reactiveState: ReactiveState,\n defaultPalette: DefaultPalettes,\n facetValuesData: UniqueValuesBySourceMap = {},\n): null | { settings: Settings; data: DataByColumns; truncationWarning: ChartTruncationWarning } {\n if (!inputGuide.ready || chartData === null) {\n return null;\n }\n\n let settings: Settings = { ...chartData.settings } as Settings;\n const dataByColumns = chartData.data.byColumns;\n settings.title = getChartTitle(reactiveState.chartType, reactiveState.optionsState, filterLabelsInfo, reactiveState.axesSettings);\n settings.size = getChartSizes(reactiveState.chartScale, reactiveState.optionsState.components?.facetBy.selectorStates.length || 0);\n settings.legend = { show: reactiveState.axesSettings.other.showLegend };\n\n const truncationWarning: ChartTruncationWarning = { groups: false, facets: false };\n\n if (reactiveState.chartType === 'discrete') {\n const result = composeDiscreteSettings(settings as DiscreteSettings, reactiveState, labelsInfo, inputGuide, defaultPalette);\n settings = result.settings;\n truncationWarning.groups = result.groupsAreTruncated;\n if (result.groupsAreTruncated && result.groupsVisible != null && result.groupsTotal != null) {\n truncationWarning.groupsVisible = result.groupsVisible;\n truncationWarning.groupsTotal = result.groupsTotal;\n }\n }\n if (reactiveState.chartType === 'scatterplot') {\n settings = composeScatterplotSettings(settings as ScatterplotSettings, dataByColumns, reactiveState, inputGuide, labelsInfo, defaultPalette);\n }\n if (reactiveState.chartType === 'scatterplot-umap') {\n settings = composeScatterplotUmapSettings(settings as ScatterplotUmapSettings, dataByColumns, reactiveState, inputGuide, labelsInfo, defaultPalette);\n }\n if (reactiveState.chartType === 'heatmap') {\n settings = composeHeatmapSettings(settings as HeatmapSettings, reactiveState, defaultPalette);\n }\n if (reactiveState.chartType === 'dendro') {\n settings = composeDendroSettings(settings as DendroSettings, dataByColumns, reactiveState, inputGuide, labelsInfo);\n }\n if (reactiveState.chartType === 'histogram') {\n settings = composeHistogramSettings(settings as HistogramSettings, reactiveState, labelsInfo, defaultPalette);\n }\n if (reactiveState.chartType === 'bubble') {\n settings = composeBubbleSettings(settings as BubbleSettings, reactiveState, defaultPalette);\n }\n\n if ('facetBy' in settings && 'facetSettings' in settings && settings.facetBy?.length && settings.facetSettings) {\n const valueLists = settings.facetBy.map((col: { value: string }) => facetValuesData[col.value]?.list ?? []);\n const allFacetKeys = valueLists.every((list: string[]) => list.length > 0)\n ? getFacetKeysFromValueLists(valueLists)\n : [];\n const maxFacetsCount = reactiveState.axesSettings.other.maxFacetsCount;\n const order = getFacetOrderForChartSettings(\n settings.facetBy,\n facetValuesData,\n maxFacetsCount,\n );\n if (allFacetKeys.length > maxFacetsCount) {\n truncationWarning.facets = true;\n truncationWarning.facetsVisible = order?.length ?? 0;\n truncationWarning.facetsTotal = allFacetKeys.length;\n }\n settings.facetSettings = { ...settings.facetSettings, order };\n }\n return {\n settings: settings as Settings,\n data: chartData.data.byColumns,\n truncationWarning,\n };\n}\n"],"names":["DISPLAY_MAX","formatTruncationTotal","n","getFacetOrderForChartSettings","facetBy","facetValuesData","maxFacetsCount","valueLists","col","_a","list","getFacetKeysFromValueLists","getChartSizes","chartScale","facetByLength","DEFAULT_WIDTH_SMALL","DEFAULT_WIDTH","DEFAULT_HEIGHT_SMALL","DEFAULT_HEIGHT","getChartTitle","chartType","optionsState","filterLabelsInfo","axesSettings","selectedFilters","tabByStates","filterStates","_b","state","tabByState","type","selectedSource","selectedFilterValues","selectedFilterValue","loadDataForPlot","inputGuide","reactiveState","dataStore","fixedOptions","controller","getControllerByType","optionsStateWithFixed","addFixedOptionsToState","err","composeChartSettings","chartData","labelsInfo","defaultPalette","settings","dataByColumns","truncationWarning","result","composeDiscreteSettings","composeScatterplotSettings","composeScatterplotUmapSettings","composeHeatmapSettings","composeDendroSettings","composeHistogramSettings","composeBubbleSettings","allFacetKeys","order"],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
|
|
|
14
14
|
format?: string | undefined;
|
|
15
15
|
label?: string | undefined;
|
|
16
16
|
valueLabels?: string | undefined;
|
|
17
|
+
nullValueLabel?: string | undefined;
|
|
17
18
|
};
|
|
18
19
|
parentId: {
|
|
19
20
|
type: "column";
|
|
@@ -21,6 +22,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
|
|
|
21
22
|
format?: string | undefined;
|
|
22
23
|
label?: string | undefined;
|
|
23
24
|
valueLabels?: string | undefined;
|
|
25
|
+
nullValueLabel?: string | undefined;
|
|
24
26
|
};
|
|
25
27
|
size?: {
|
|
26
28
|
scale?: number | undefined;
|
|
@@ -44,6 +46,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
|
|
|
44
46
|
format?: string | undefined;
|
|
45
47
|
label?: string | undefined;
|
|
46
48
|
valueLabels?: string | undefined;
|
|
49
|
+
nullValueLabel?: string | undefined;
|
|
47
50
|
};
|
|
48
51
|
domain: number[];
|
|
49
52
|
range: string[];
|
|
@@ -55,6 +58,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
|
|
|
55
58
|
format?: string | undefined;
|
|
56
59
|
label?: string | undefined;
|
|
57
60
|
valueLabels?: string | undefined;
|
|
61
|
+
nullValueLabel?: string | undefined;
|
|
58
62
|
};
|
|
59
63
|
valuesMap: Record<string, string>;
|
|
60
64
|
} | undefined;
|
|
@@ -65,6 +69,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
|
|
|
65
69
|
format?: string | undefined;
|
|
66
70
|
label?: string | undefined;
|
|
67
71
|
valueLabels?: string | undefined;
|
|
72
|
+
nullValueLabel?: string | undefined;
|
|
68
73
|
};
|
|
69
74
|
valuesMap: Record<string, "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "13" | "14" | "15" | "16" | "17" | "18" | "20" | "21" | "22" | "23" | "24" | "25">;
|
|
70
75
|
} | undefined;
|
|
@@ -75,6 +80,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
|
|
|
75
80
|
format?: string | undefined;
|
|
76
81
|
label?: string | undefined;
|
|
77
82
|
valueLabels?: string | undefined;
|
|
83
|
+
nullValueLabel?: string | undefined;
|
|
78
84
|
};
|
|
79
85
|
domain: number[];
|
|
80
86
|
range: string[];
|
|
@@ -86,6 +92,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
|
|
|
86
92
|
format?: string | undefined;
|
|
87
93
|
label?: string | undefined;
|
|
88
94
|
valueLabels?: string | undefined;
|
|
95
|
+
nullValueLabel?: string | undefined;
|
|
89
96
|
};
|
|
90
97
|
valuesMap: Record<string, string>;
|
|
91
98
|
} | undefined;
|
|
@@ -96,6 +103,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
|
|
|
96
103
|
format?: string | undefined;
|
|
97
104
|
label?: string | undefined;
|
|
98
105
|
valueLabels?: string | undefined;
|
|
106
|
+
nullValueLabel?: string | undefined;
|
|
99
107
|
};
|
|
100
108
|
domain: number[];
|
|
101
109
|
range: number[];
|
|
@@ -107,6 +115,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
|
|
|
107
115
|
format?: string | undefined;
|
|
108
116
|
label?: string | undefined;
|
|
109
117
|
valueLabels?: string | undefined;
|
|
118
|
+
nullValueLabel?: string | undefined;
|
|
110
119
|
};
|
|
111
120
|
valuesMap: Record<string, number>;
|
|
112
121
|
} | undefined;
|
|
@@ -117,6 +126,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
|
|
|
117
126
|
format?: string | undefined;
|
|
118
127
|
label?: string | undefined;
|
|
119
128
|
valueLabels?: string | undefined;
|
|
129
|
+
nullValueLabel?: string | undefined;
|
|
120
130
|
} | undefined;
|
|
121
131
|
height?: {
|
|
122
132
|
type: "column";
|
|
@@ -124,12 +134,14 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
|
|
|
124
134
|
format?: string | undefined;
|
|
125
135
|
label?: string | undefined;
|
|
126
136
|
valueLabels?: string | undefined;
|
|
137
|
+
nullValueLabel?: string | undefined;
|
|
127
138
|
} | undefined;
|
|
128
139
|
legend?: {
|
|
129
140
|
show?: boolean | undefined;
|
|
130
141
|
position?: "right" | "inside" | "top" | "bottom" | undefined;
|
|
131
142
|
} | undefined;
|
|
132
143
|
facetSettings?: {
|
|
144
|
+
order?: string[] | undefined;
|
|
133
145
|
nRows?: number | undefined;
|
|
134
146
|
nCols?: number | undefined;
|
|
135
147
|
} | undefined;
|
|
@@ -139,6 +151,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
|
|
|
139
151
|
format?: string | undefined;
|
|
140
152
|
label?: string | undefined;
|
|
141
153
|
valueLabels?: string | undefined;
|
|
154
|
+
nullValueLabel?: string | undefined;
|
|
142
155
|
}[] | undefined;
|
|
143
156
|
showNodes?: boolean | undefined;
|
|
144
157
|
edgeInheritance?: "up" | "down" | undefined;
|
|
@@ -151,6 +164,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
|
|
|
151
164
|
format?: string | undefined;
|
|
152
165
|
label?: string | undefined;
|
|
153
166
|
valueLabels?: string | undefined;
|
|
167
|
+
nullValueLabel?: string | undefined;
|
|
154
168
|
} | undefined;
|
|
155
169
|
heatmapAxis?: {
|
|
156
170
|
type: "column";
|
|
@@ -158,6 +172,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
|
|
|
158
172
|
format?: string | undefined;
|
|
159
173
|
label?: string | undefined;
|
|
160
174
|
valueLabels?: string | undefined;
|
|
175
|
+
nullValueLabel?: string | undefined;
|
|
161
176
|
} | undefined;
|
|
162
177
|
heatmapGroup?: {
|
|
163
178
|
type: "column";
|
|
@@ -165,6 +180,7 @@ export declare function composeDendroSettings(settings: DendroSettings, dataByCo
|
|
|
165
180
|
format?: string | undefined;
|
|
166
181
|
label?: string | undefined;
|
|
167
182
|
valueLabels?: string | undefined;
|
|
183
|
+
nullValueLabel?: string | undefined;
|
|
168
184
|
}[] | undefined;
|
|
169
185
|
heatmapSettings?: {
|
|
170
186
|
aes?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composeDendroSettings.d.ts","sourceRoot":"","sources":["../../../src/utils/createChartSettingsForRender/composeDendroSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,UAAU,EAAE,UAAU,EACtB,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAI1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI/D,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,cAAc,EACxB,aAAa,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,EACvD,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,EAClC,gBAAgB,EAAE,uBAAuB;;;;
|
|
1
|
+
{"version":3,"file":"composeDendroSettings.d.ts","sourceRoot":"","sources":["../../../src/utils/createChartSettingsForRender/composeDendroSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,UAAU,EAAE,UAAU,EACtB,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAI1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI/D,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,cAAc,EACxB,aAAa,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,EACvD,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,EAClC,gBAAgB,EAAE,uBAAuB;;;;YAqI+jzB,CAAC;gBAAuC,CAAC;;;;;cAAyH,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;;;cAA0G,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;aAAuD,CAAC;aAAmC,CAAC;cAAoC,CAAC;oBAA0C,CAAC;qBAA2C,CAAC;oBAA0C,CAAC;qBAA2C,CAAC;iBAAuC,CAAC;oBAA0C,CAAC;kBAAwC,CAAC;mBAAyC,CAAC;;;iBAAsE,CAAC;iBAAmG,CAAC;;;;sBAA4H,CAAC;qBAA2C,CAAC;2BAAiD,CAAC;8BAAoD,CAAC;;;;gBAAgH,CAAC;;;;;sBAA6J,CAAC;qBAA2C,CAAC;2BAAiD,CAAC;8BAAoD,CAAC;;;;iBAA4H,CAAC;;;;sBAAwR,CAAC;qBAA2C,CAAC;2BAAiD,CAAC;8BAAoD,CAAC;;;;iBAAwR,CAAC;;;;sBAA4H,CAAC;qBAA2C,CAAC;2BAAiD,CAAC;8BAAoD,CAAC;;;;gBAAgH,CAAC;;;;;sBAA6J,CAAC;qBAA2C,CAAC;2BAAiD,CAAC;8BAAoD,CAAC;;;;gBAA2H,CAAC;;;;sBAA4H,CAAC;qBAA2C,CAAC;2BAAiD,CAAC;8BAAoD,CAAC;;;;gBAAgH,CAAC;;;;;sBAA6J,CAAC;qBAA2C,CAAC;2BAAiD,CAAC;8BAAoD,CAAC;;;;;;;;cAA0M,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;;;cAAqH,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;YAAoE,CAAC;gBAAuC,CAAC;;;aAA2G,CAAC;aAAqC,CAAC;aAAmC,CAAC;;;;;cAAsH,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;;;;;;;;cAAsY,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;;;cAA0H,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;;;cAA2H,CAAC;aAAmC,CAAC;mBAAyC,CAAC;sBAA4C,CAAC;;;WAA8E,CAAC;sBAA0B,CAAC;qBAA6C,CAAC;;iBAA8E,CAAC;;;;;;;EADn+/B"}
|
|
@@ -1,62 +1,62 @@
|
|
|
1
|
-
import { getDendroAes as
|
|
2
|
-
import { DEFAULT_BLACK as F, PALETTE_MAP as
|
|
1
|
+
import { getDendroAes as p, DEFAULT_DOT_SHAPE as _, DEFAULT_DOT_RANGE as C } from "../../dataBindAes.js";
|
|
2
|
+
import { DEFAULT_BLACK as F, PALETTE_MAP as h, DEFAULT_CATEGORICAL_PALETTE as f } from "../../constantsAesthetic.js";
|
|
3
3
|
import { DEFAULT_HEIGHT as D, DEFAULT_WIDTH as M, isNumberRange as I } from "../../constantsCommon.js";
|
|
4
4
|
const v = 280;
|
|
5
|
-
function R(o,
|
|
6
|
-
var
|
|
5
|
+
function R(o, L, r, E, i) {
|
|
6
|
+
var m, u, A, y;
|
|
7
7
|
o.rootPosition = "left", o.size = { width: M, height: D };
|
|
8
8
|
const n = r.optionsState.components, t = r.layersSettings.dendro, e = o == null ? void 0 : o.aes;
|
|
9
9
|
if (e.nodeShape && typeof e.nodeShape == "object") {
|
|
10
|
-
const s = (
|
|
10
|
+
const s = (m = n.nodeShape.selectorStates[0]) == null ? void 0 : m.selectedSource, l = p(
|
|
11
11
|
s,
|
|
12
|
-
|
|
12
|
+
i,
|
|
13
13
|
r.dataBindAes,
|
|
14
14
|
"dotShape",
|
|
15
|
-
|
|
15
|
+
f
|
|
16
16
|
);
|
|
17
17
|
Object.keys(l).length ? e.nodeShape.valuesMap = l : e.nodeShape = _;
|
|
18
18
|
} else typeof t.dotShape == "string" && (e.nodeShape = t.dotShape);
|
|
19
19
|
if (e.nodeColor && typeof e.nodeColor == "object") {
|
|
20
|
-
const s = (
|
|
20
|
+
const s = (u = n.nodeColor.selectorStates[0]) == null ? void 0 : u.selectedSource, l = p(
|
|
21
21
|
s,
|
|
22
|
-
|
|
22
|
+
i,
|
|
23
23
|
r.dataBindAes,
|
|
24
24
|
"color",
|
|
25
|
-
|
|
25
|
+
f
|
|
26
26
|
);
|
|
27
27
|
Object.keys(l).length ? e.nodeColor.valuesMap = l : e.nodeColor = F;
|
|
28
28
|
} else typeof t.dotFill == "string" && (e.nodeColor = t.dotFill);
|
|
29
29
|
if (e.nodeSize && typeof e.nodeSize == "object") {
|
|
30
|
-
const s = (
|
|
30
|
+
const s = (A = n.nodeSize.selectorStates[0]) == null ? void 0 : A.selectedSource;
|
|
31
31
|
let [l, c] = [1 / 0, -1 / 0];
|
|
32
|
-
|
|
33
|
-
const a = Number(
|
|
32
|
+
L.values[s].forEach((d) => {
|
|
33
|
+
const a = Number(d);
|
|
34
34
|
a < l && (l = a), a > c && (c = a);
|
|
35
35
|
}), e.nodeSize.domain = [l, c], e.nodeSize.range = I(t.dotSize) ? [t.dotSize.min, t.dotSize.max] : [C.min, C.max];
|
|
36
36
|
} else typeof t.dotSize == "number" && (e.nodeSize = t.dotSize);
|
|
37
37
|
if (e.lineColor && typeof e.lineColor == "object") {
|
|
38
|
-
const s = (
|
|
39
|
-
e.lineColor.valuesMap =
|
|
38
|
+
const s = (y = n.lineColor.selectorStates[0]) == null ? void 0 : y.selectedSource;
|
|
39
|
+
e.lineColor.valuesMap = p(
|
|
40
40
|
s,
|
|
41
|
-
|
|
41
|
+
i,
|
|
42
42
|
r.dataBindAes,
|
|
43
43
|
"color",
|
|
44
|
-
|
|
44
|
+
f
|
|
45
45
|
);
|
|
46
46
|
} else typeof t.lineColor == "string" && (e.lineColor = t.lineColor);
|
|
47
47
|
if (n.heatmapForSequence.selectorStates.length > 0 && (o.heatmapSettings = {
|
|
48
48
|
valueType: "stringSource",
|
|
49
49
|
aes: {
|
|
50
|
-
colorsList:
|
|
50
|
+
colorsList: h.bright.colors
|
|
51
51
|
}
|
|
52
52
|
}, o.size.maxCellWidth = 8), n.heatmapAnnotation.selectorStates.length > 0) {
|
|
53
|
-
const s = n.heatmapAnnotation.selectorStates[0].selectedSource, l =
|
|
53
|
+
const s = n.heatmapAnnotation.selectorStates[0].selectedSource, l = E.getSourceInfo(s), c = l.type === "Double" || l.type === "Float" || l.type === "Int" || l.type === "Long" ? "continuous" : "discrete", d = h.bright.colors;
|
|
54
54
|
let a;
|
|
55
|
-
const
|
|
56
|
-
T && (a = T.reduce((b, z, g) => (b[z] =
|
|
55
|
+
const S = i[s], T = S == null ? void 0 : S.list;
|
|
56
|
+
T && (a = T.reduce((b, z, g) => (b[z] = d[g % d.length], b), {})), o.heatmapSettings = {
|
|
57
57
|
valueType: c,
|
|
58
58
|
aes: {
|
|
59
|
-
colorsList:
|
|
59
|
+
colorsList: h.viridis.colors,
|
|
60
60
|
colorsMap: a
|
|
61
61
|
}
|
|
62
62
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composeDendroSettings.js","sources":["../../../src/utils/createChartSettingsForRender/composeDendroSettings.ts"],"sourcesContent":["import type {\n DendroUIState,\n InputGuide, InputState,\n PlotDataAndSettings,\n} from '@milaboratories/pf-plots';\nimport type { ReactiveState, UniqueValuesBySourceMap } from '../../types';\nimport { DEFAULT_DOT_RANGE, DEFAULT_DOT_SHAPE, getDendroAes } from '../../dataBindAes';\nimport { DEFAULT_BLACK, DEFAULT_CATEGORICAL_PALETTE, PALETTE_MAP } from '../../constantsAesthetic';\nimport { DEFAULT_HEIGHT, DEFAULT_WIDTH, isNumberRange } from '../../constantsCommon';\nimport type { DendroSettings } from '@milaboratories/miplots4';\n\nconst NARROW_TREE_WIDTH = 280;\n\nexport function composeDendroSettings(\n settings: DendroSettings,\n dataByColumns: PlotDataAndSettings['data']['byColumns'],\n reactiveState: ReactiveState,\n inputGuide: InputGuide<InputState>,\n uniqueValuesData: UniqueValuesBySourceMap,\n) {\n settings.rootPosition = 'left';\n settings.size = { width: DEFAULT_WIDTH, height: DEFAULT_HEIGHT };\n\n const optionsState = (reactiveState.optionsState as DendroUIState).components;\n const layerSettings = reactiveState.layersSettings.dendro;\n const aes = settings?.aes as Record<string, Record<string, unknown> | string | number>;\n if (aes.nodeShape && typeof aes.nodeShape === 'object') {\n const selectedStr = optionsState.nodeShape.selectorStates[0]?.selectedSource;\n const valuesMap = getDendroAes(\n selectedStr,\n uniqueValuesData,\n reactiveState.dataBindAes,\n 'dotShape',\n DEFAULT_CATEGORICAL_PALETTE,\n );\n if (Object.keys(valuesMap).length) {\n aes.nodeShape.valuesMap = valuesMap;\n } else {\n aes.nodeShape = DEFAULT_DOT_SHAPE;\n }\n } else if (typeof layerSettings.dotShape === 'string') {\n aes.nodeShape = layerSettings.dotShape as string;\n }\n if (aes.nodeColor && typeof aes.nodeColor === 'object') {\n const selectedStr = optionsState.nodeColor.selectorStates[0]?.selectedSource;\n const valuesMap = getDendroAes(\n selectedStr,\n uniqueValuesData,\n reactiveState.dataBindAes,\n 'color',\n DEFAULT_CATEGORICAL_PALETTE,\n );\n if (Object.keys(valuesMap).length) {\n aes.nodeColor.valuesMap = valuesMap;\n } else {\n aes.nodeColor = DEFAULT_BLACK;\n }\n } else if (typeof layerSettings.dotFill === 'string') {\n aes.nodeColor = layerSettings.dotFill;\n }\n if (aes.nodeSize && typeof aes.nodeSize === 'object') {\n const selectedStr = optionsState.nodeSize.selectorStates[0]?.selectedSource;\n let [min, max] = [Infinity, -Infinity];\n dataByColumns.values[selectedStr].forEach((v) => {\n const value = Number(v);\n if (value < min) {\n min = value;\n }\n if (value > max) {\n max = value;\n }\n });\n\n aes.nodeSize.domain = [min, max];\n aes.nodeSize.range = isNumberRange(layerSettings.dotSize) ? [layerSettings.dotSize.min, layerSettings.dotSize.max] : [DEFAULT_DOT_RANGE.min, DEFAULT_DOT_RANGE.max];\n } else if (typeof layerSettings.dotSize === 'number') {\n aes.nodeSize = layerSettings.dotSize;\n }\n if (aes.lineColor && typeof aes.lineColor === 'object') {\n const selectedStr = optionsState.lineColor.selectorStates[0]?.selectedSource;\n aes.lineColor.valuesMap = getDendroAes(\n selectedStr,\n uniqueValuesData,\n reactiveState.dataBindAes,\n 'color',\n DEFAULT_CATEGORICAL_PALETTE,\n );\n } else if (\n typeof layerSettings.lineColor === 'string'\n ) {\n aes.lineColor = layerSettings.lineColor;\n }\n\n if (optionsState.heatmapForSequence.selectorStates.length > 0) {\n settings.heatmapSettings = {\n valueType: 'stringSource',\n aes: {\n colorsList: PALETTE_MAP['bright'].colors,\n },\n };\n (settings.size as Record<string, number>).maxCellWidth = 8;\n }\n\n if (optionsState.heatmapAnnotation.selectorStates.length > 0) {\n const selectedSource = optionsState.heatmapAnnotation.selectorStates[0].selectedSource;\n const info = inputGuide.getSourceInfo(selectedSource);\n const valueType\n = info.type === 'Double'\n || info.type === 'Float'\n || info.type === 'Int'\n || info.type === 'Long'\n ? 'continuous'\n : 'discrete';\n const colors = PALETTE_MAP['bright'].colors; // TODO: should be in settings\n\n let colorsMap;\n const
|
|
1
|
+
{"version":3,"file":"composeDendroSettings.js","sources":["../../../src/utils/createChartSettingsForRender/composeDendroSettings.ts"],"sourcesContent":["import type {\n DendroUIState,\n InputGuide, InputState,\n PlotDataAndSettings,\n} from '@milaboratories/pf-plots';\nimport type { ReactiveState, UniqueValuesBySourceMap } from '../../types';\nimport { DEFAULT_DOT_RANGE, DEFAULT_DOT_SHAPE, getDendroAes } from '../../dataBindAes';\nimport { DEFAULT_BLACK, DEFAULT_CATEGORICAL_PALETTE, PALETTE_MAP } from '../../constantsAesthetic';\nimport { DEFAULT_HEIGHT, DEFAULT_WIDTH, isNumberRange } from '../../constantsCommon';\nimport type { DendroSettings } from '@milaboratories/miplots4';\n\nconst NARROW_TREE_WIDTH = 280;\n\nexport function composeDendroSettings(\n settings: DendroSettings,\n dataByColumns: PlotDataAndSettings['data']['byColumns'],\n reactiveState: ReactiveState,\n inputGuide: InputGuide<InputState>,\n uniqueValuesData: UniqueValuesBySourceMap,\n) {\n settings.rootPosition = 'left';\n settings.size = { width: DEFAULT_WIDTH, height: DEFAULT_HEIGHT };\n\n const optionsState = (reactiveState.optionsState as DendroUIState).components;\n const layerSettings = reactiveState.layersSettings.dendro;\n const aes = settings?.aes as Record<string, Record<string, unknown> | string | number>;\n if (aes.nodeShape && typeof aes.nodeShape === 'object') {\n const selectedStr = optionsState.nodeShape.selectorStates[0]?.selectedSource;\n const valuesMap = getDendroAes(\n selectedStr,\n uniqueValuesData,\n reactiveState.dataBindAes,\n 'dotShape',\n DEFAULT_CATEGORICAL_PALETTE,\n );\n if (Object.keys(valuesMap).length) {\n aes.nodeShape.valuesMap = valuesMap;\n } else {\n aes.nodeShape = DEFAULT_DOT_SHAPE;\n }\n } else if (typeof layerSettings.dotShape === 'string') {\n aes.nodeShape = layerSettings.dotShape as string;\n }\n if (aes.nodeColor && typeof aes.nodeColor === 'object') {\n const selectedStr = optionsState.nodeColor.selectorStates[0]?.selectedSource;\n const valuesMap = getDendroAes(\n selectedStr,\n uniqueValuesData,\n reactiveState.dataBindAes,\n 'color',\n DEFAULT_CATEGORICAL_PALETTE,\n );\n if (Object.keys(valuesMap).length) {\n aes.nodeColor.valuesMap = valuesMap;\n } else {\n aes.nodeColor = DEFAULT_BLACK;\n }\n } else if (typeof layerSettings.dotFill === 'string') {\n aes.nodeColor = layerSettings.dotFill;\n }\n if (aes.nodeSize && typeof aes.nodeSize === 'object') {\n const selectedStr = optionsState.nodeSize.selectorStates[0]?.selectedSource;\n let [min, max] = [Infinity, -Infinity];\n dataByColumns.values[selectedStr].forEach((v) => {\n const value = Number(v);\n if (value < min) {\n min = value;\n }\n if (value > max) {\n max = value;\n }\n });\n\n aes.nodeSize.domain = [min, max];\n aes.nodeSize.range = isNumberRange(layerSettings.dotSize) ? [layerSettings.dotSize.min, layerSettings.dotSize.max] : [DEFAULT_DOT_RANGE.min, DEFAULT_DOT_RANGE.max];\n } else if (typeof layerSettings.dotSize === 'number') {\n aes.nodeSize = layerSettings.dotSize;\n }\n if (aes.lineColor && typeof aes.lineColor === 'object') {\n const selectedStr = optionsState.lineColor.selectorStates[0]?.selectedSource;\n aes.lineColor.valuesMap = getDendroAes(\n selectedStr,\n uniqueValuesData,\n reactiveState.dataBindAes,\n 'color',\n DEFAULT_CATEGORICAL_PALETTE,\n );\n } else if (\n typeof layerSettings.lineColor === 'string'\n ) {\n aes.lineColor = layerSettings.lineColor;\n }\n\n if (optionsState.heatmapForSequence.selectorStates.length > 0) {\n settings.heatmapSettings = {\n valueType: 'stringSource',\n aes: {\n colorsList: PALETTE_MAP['bright'].colors,\n },\n };\n (settings.size as Record<string, number>).maxCellWidth = 8;\n }\n\n if (optionsState.heatmapAnnotation.selectorStates.length > 0) {\n const selectedSource = optionsState.heatmapAnnotation.selectorStates[0].selectedSource;\n const info = inputGuide.getSourceInfo(selectedSource);\n const valueType\n = info.type === 'Double'\n || info.type === 'Float'\n || info.type === 'Int'\n || info.type === 'Long'\n ? 'continuous'\n : 'discrete';\n const colors = PALETTE_MAP['bright'].colors; // TODO: should be in settings\n\n let colorsMap;\n const dendroEntry = uniqueValuesData[selectedSource];\n const uniqueValues = dendroEntry?.list;\n if (uniqueValues) {\n colorsMap = uniqueValues.reduce((res: Record<string, string>, value, idx) => {\n res[value] = colors[idx % colors.length];\n return res;\n }, {});\n }\n\n settings.heatmapSettings = {\n valueType,\n aes: {\n colorsList: PALETTE_MAP['viridis'].colors,\n colorsMap: colorsMap,\n },\n };\n }\n\n settings.mode = layerSettings.mode;\n settings.leavesMode = layerSettings.leavesMode;\n settings.showNodesLabels = optionsState.labels.selectorStates.length > 0;\n settings.showLeavesLabels = optionsState.labels.selectorStates.length > 0;\n\n // in other cases (if there is heatmap) tree width is half-width of svg\n if (layerSettings.showTable\n && optionsState.heatmapAnnotation.selectorStates.length === 0\n && optionsState.heatmapForSequence.selectorStates.length === 0\n ) {\n (settings.size as Record<string, number>).width = NARROW_TREE_WIDTH;\n }\n\n (settings.size as Record<string, number>).scale = reactiveState.chartScale / 100;\n settings.legend = { show: reactiveState.layersSettings.dendro.showLegend ?? true };\n return settings;\n}\n"],"names":["NARROW_TREE_WIDTH","composeDendroSettings","settings","dataByColumns","reactiveState","inputGuide","uniqueValuesData","DEFAULT_WIDTH","DEFAULT_HEIGHT","optionsState","layerSettings","aes","selectedStr","_a","valuesMap","getDendroAes","DEFAULT_CATEGORICAL_PALETTE","DEFAULT_DOT_SHAPE","_b","DEFAULT_BLACK","_c","min","max","v","value","isNumberRange","DEFAULT_DOT_RANGE","_d","PALETTE_MAP","selectedSource","info","valueType","colors","colorsMap","dendroEntry","uniqueValues","res","idx"],"mappings":"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"}
|