@milaboratories/graph-maker 1.1.140 → 1.1.142
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/GraphMaker/components/LassoControls/index.vue.js +1 -1
- package/dist/GraphMaker/constantsCommon.d.ts +8 -0
- package/dist/GraphMaker/constantsCommon.d.ts.map +1 -1
- package/dist/GraphMaker/constantsCommon.js +94 -83
- package/dist/GraphMaker/constantsCommon.js.map +1 -1
- package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue.d.ts +3 -0
- package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue.d.ts.map +1 -0
- package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue.js +90 -0
- package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue.js.map +1 -0
- package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue2.js +5 -0
- package/dist/GraphMaker/forms/LayersForm/Layer/discrete/StackedArea.vue2.js.map +1 -0
- package/dist/GraphMaker/forms/LayersForm/index.vue.d.ts.map +1 -1
- package/dist/GraphMaker/forms/LayersForm/index.vue.js +45 -43
- package/dist/GraphMaker/forms/LayersForm/index.vue.js.map +1 -1
- package/dist/GraphMaker/index.vue.d.ts.map +1 -1
- package/dist/GraphMaker/index.vue.js +24 -24
- package/dist/GraphMaker/index.vue.js.map +1 -1
- package/dist/GraphMaker/store.js +9 -9
- package/dist/GraphMaker/types.d.ts +1 -1
- package/dist/GraphMaker/types.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts +16 -0
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.js +54 -52
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.js.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.js +84 -70
- package/dist/GraphMaker/utils/createChartSettingsForRender/getLayersDataFromForms.js.map +1 -1
- package/dist/GraphMaker/utils/loadDefaultSources.js +4 -3
- package/dist/GraphMaker/utils/loadDefaultSources.js.map +1 -1
- package/dist/_virtual/_commonjsHelpers.js +3 -5
- package/dist/_virtual/_commonjsHelpers.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/MiPlots.js +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/DiscreteSettingsImpl.js +185 -164
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/DiscreteSettingsImpl.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/Chart.js +120 -103
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/Chart.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/ChartsGroup.js +4 -4
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/layers/StackedAreaElement.js +105 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/layers/StackedAreaElement.js.map +1 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/layers/StackedBarElement.js +66 -59
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/components/layers/StackedBarElement.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/index.js +57 -54
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/index.js.map +1 -1
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/stackedArea.js +17 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/discrete/layers/stackedArea.js.map +1 -0
- package/dist/node_modules/@milaboratories/miplots4/dist/types/discrete.js +24 -9
- package/dist/node_modules/@milaboratories/miplots4/dist/types/discrete.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/_commonjsHelpers.js +9 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/_commonjsHelpers.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/canonicalize.js +8 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/canonicalize.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/lodash.js +8 -0
- package/dist/{_virtual → node_modules/@milaboratories/pf-plots/dist/_virtual}/lodash.js.map +1 -1
- package/dist/{_virtual/lodash.js → node_modules/@milaboratories/pf-plots/dist/_virtual/lodash2.js} +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/lodash2.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/stringify.js +3 -0
- package/dist/{_virtual → node_modules/@milaboratories/pf-plots/dist/_virtual}/stringify.js.map +1 -1
- package/dist/{_virtual/stringify.js → node_modules/@milaboratories/pf-plots/dist/_virtual/stringify2.js} +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/_virtual/stringify2.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/constants.js +15 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/constants.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js +198 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js +342 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js +278 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/dendro.js +453 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/dendro.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/discrete.js +203 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/discrete.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/heatmap.js +432 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/heatmap.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/histogram.js +170 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/histogram.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js +315 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js +323 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/demoStore.js +11 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/demoStore.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/index.js +36 -3426
- package/dist/node_modules/@milaboratories/pf-plots/dist/index.js.map +1 -1
- package/dist/node_modules/@milaboratories/{pl-error-like → pf-plots/dist/node_modules/@milaboratories/pl-error-like}/dist/index.js +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-error-like/dist/index.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/index.js +979 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/index.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/dist/index.js +1599 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/dist/index.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/canonicalize/lib/canonicalize.js +19 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/canonicalize/lib/canonicalize.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/json-stringify-safe/stringify.js +26 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/json-stringify-safe/stringify.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/lodash/lodash.js +3678 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/lodash/lodash.js.map +1 -0
- package/dist/node_modules/{zod → @milaboratories/pf-plots/dist/node_modules/zod}/lib/index.js +1141 -1141
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/zod/lib/index.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/pframe/ColumnsProvider.js +247 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/pframe/ColumnsProvider.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/spec.js +62 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/spec.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/utils.js +286 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/utils.js.map +1 -0
- package/package.json +3 -3
- package/dist/node_modules/@milaboratories/pl-error-like/dist/index.js.map +0 -1
- package/dist/node_modules/@milaboratories/pl-model-common/dist/index.js +0 -584
- package/dist/node_modules/@milaboratories/pl-model-common/dist/index.js.map +0 -1
- package/dist/node_modules/@platforma-sdk/model/dist/index.js +0 -1559
- package/dist/node_modules/@platforma-sdk/model/dist/index.js.map +0 -1
- package/dist/node_modules/json-stringify-safe/stringify.js +0 -20
- package/dist/node_modules/json-stringify-safe/stringify.js.map +0 -1
- package/dist/node_modules/lodash/lodash.js +0 -3678
- package/dist/node_modules/lodash/lodash.js.map +0 -1
- package/dist/node_modules/zod/lib/index.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ControllerBase.js","sources":["../../../../../../node_modules/@milaboratories/pf-plots/src/controllers/ControllerBase.ts"],"sourcesContent":["import {\n AxisSpec,\n LinkerMap,\n PColumnSpec,\n PObjectId,\n PTableRecordSingleValueFilterV2\n} from '@milaboratories/pl-model-common';\nimport {deriveLabels} from '@platforma-sdk/model';\nimport type {\n AxisData,\n ColumnData,\n ComponentGuideFilter,\n ComponentGuideSimple,\n ComponentsGuide,\n DataByColumns,\n FilterComponentControllers,\n FilterComponents,\n InputGuide,\n InputState,\n SelectorState,\n SelectorStateFilter,\n SelectorStateSimple,\n SimpleComponentControllers,\n SimpleComponents,\n} from '../common';\nimport { DISCRETE_VALUES_KEY, HIGH_CARDINALITY } from '../constants';\nimport { PValue } from '../store';\nimport type { DataStore } from '../store';\nimport type { ColumnOrAxisIdString } from '../spec';\nimport { AxisId, ColumnId, columnOrAxisIdFromString, isColumnId } from '../spec';\nimport {\n addSourceInfoToMap,\n createLinkerMap,\n dataColumnPredicateDefault,\n getColumnOrAxisValueLabelsId,\n getDefaultInfo,\n getStateCopy,\n} from '../utils';\nimport { ComponentController } from './ComponentController';\n\ntype InputOptionsUnion<State extends InputState> = Record<\n SimpleComponents<State> | FilterComponents<State>,\n ComponentGuideSimple | ComponentGuideFilter\n>;\nexport interface Controller<State extends InputState> {\n calculateOptions(\n store: DataStore,\n state: State,\n fixedIds?: string[],\n dataColumnPredicate?: (spec: PColumnSpec) => boolean\n ): Promise<InputGuide<State>>;\n\n getUniqueSourceValuesWithLabels(\n store: DataStore,\n inputGuide: InputGuide<State>,\n selectedSource: ColumnOrAxisIdString,\n limit?:number,\n searchQuery?: string,\n searchQueryByValue?: string,\n ): Promise<{\n values: {\n value: string;\n label: string;\n }[],\n overflow: boolean;\n }>;\n\n getEmptyInputGuide(state: State): InputGuide<State>;\n\n createDataForPlot(store: DataStore, state: State): Promise<PlotDataAndSettings>;\n\n changeSelected(\n inputName: keyof State['components'],\n store: DataStore,\n state: State,\n nextSelectorStates: SelectorStateFilter[] | SelectorStateSimple[]\n ): State;\n}\n\nexport interface PlotDataAndSettings {\n data: {\n byColumns: DataByColumns,\n axesData?: Record<string, PValue[]>\n };\n settings: Record<string, unknown>;\n}\n\nexport abstract class ControllerBase<State extends InputState> implements Controller<State> {\n readonly ignoredOptionIdNames: string[] = [];\n readonly dataInputs: string[] = [];\n readonly dontAllowUnfilteredHighCardinality: boolean = false;\n\n protected constructor(\n readonly simpleComponentControllers: SimpleComponentControllers<State>,\n readonly filterComponentControllers: FilterComponentControllers<State>\n ) {}\n\n get requiredComponents(): (keyof State['components'])[] {\n const components: (keyof State['components'])[] = [];\n for (const componentName of Object.keys(this.simpleComponentControllers) as SimpleComponents<State>[]) {\n if (this.simpleComponentControllers[componentName].isRequired) {\n components.push(componentName);\n }\n }\n return components;\n }\n\n get dimensionsConsumerComponents(): (keyof State['components'])[] {\n const components: (keyof State['components'])[] = [];\n for (const componentName of Object.keys(this.simpleComponentControllers) as SimpleComponents<State>[]) {\n if (this.simpleComponentControllers[componentName].isDimensionsConsumer) {\n components.push(componentName);\n }\n }\n for (const componentName of Object.keys(this.filterComponentControllers) as FilterComponents<State>[]) {\n if (this.filterComponentControllers[componentName].isDimensionsConsumer) {\n components.push(componentName);\n }\n }\n return components;\n }\n\n addSelected(\n inputName: keyof State['components'],\n state: State,\n selectorState: SelectorStateFilter | SelectorStateSimple\n ) {\n if (inputName in this.simpleComponentControllers) {\n return (\n this.simpleComponentControllers[\n inputName as keyof typeof this.simpleComponentControllers\n ] as ComponentController<State, typeof inputName>\n ).addSelected(state, selectorState);\n }\n if (inputName in this.filterComponentControllers) {\n return (\n this.filterComponentControllers[\n inputName as keyof typeof this.filterComponentControllers\n ] as ComponentController<State, typeof inputName>\n ).addSelected(state, selectorState);\n }\n throw Error(`Unknown input name: ${String(inputName)}`);\n }\n\n deleteSelected(\n inputName: keyof State['components'],\n store: DataStore,\n state: State,\n selectorState: SelectorStateFilter | SelectorStateSimple\n ) {\n if (inputName in this.simpleComponentControllers) {\n return (\n this.simpleComponentControllers[\n inputName as keyof typeof this.simpleComponentControllers\n ] as ComponentController<State, typeof inputName>\n ).deleteSelected(state, selectorState.selectedSource);\n }\n if (inputName in this.filterComponentControllers) {\n return (\n this.filterComponentControllers[\n inputName as keyof typeof this.filterComponentControllers\n ] as ComponentController<State, typeof inputName>\n ).deleteSelected(state, selectorState.selectedSource);\n }\n throw Error(`Unknown input name: ${String(inputName)}`);\n }\n\n changeSelected(\n inputName: keyof State['components'],\n store: DataStore,\n state: State,\n nextSelectorStates: SelectorState[]\n ) {\n const currentStates: SelectorState[] = state.components[inputName].selectorStates;\n const deletedStates = currentStates.filter(currentState => {\n return !nextSelectorStates.find(s => s.selectedSource === currentState.selectedSource);\n });\n const addedStates = nextSelectorStates.filter(nextState => {\n return !currentStates.find(s => s.selectedSource === nextState.selectedSource);\n });\n let nextState = getStateCopy(state);\n deletedStates.forEach(selectorState => {\n nextState = this.deleteSelected(inputName, store, nextState, selectorState);\n });\n addedStates.forEach(selectorState => {\n nextState = this.addSelected(inputName, nextState, selectorState);\n });\n // reorder\n state.components[inputName].selectorStates = nextSelectorStates\n .map(st =>\n (state.components[inputName].selectorStates as SelectorState[]).find(\n s => s.selectedSource === st.selectedSource\n )\n )\n .filter(Boolean) as SelectorStateFilter[] | SelectorStateSimple[];\n return nextState;\n }\n\n switchDividableAxis(state: State, axis: AxisId): State {\n // ***\n // logic for axis dividing/collapsing\n // ***\n return getStateCopy(state);\n }\n\n async getMustBeConsumedAxes(store: DataStore, state: State): Promise<Set<ColumnOrAxisIdString>> {\n return Promise.resolve(new Set());\n }\n\n private createEmptyComponentsGuide(state: State): InputOptionsUnion<State> {\n return Object.fromEntries(\n Object.entries(state.components).map(\n ([key, value]): [string, ComponentGuideSimple | ComponentGuideFilter] => {\n return [\n key,\n {\n options: [],\n optionsInfo: new Map(),\n stateConsistency: {},\n required: false,\n multipleSelectors: false,\n },\n ];\n }\n )\n ) as InputOptionsUnion<State>;\n }\n\n async getSelectedSourcesInfo(\n store: DataStore,\n state: State,\n labelsMap: Record<string, string>,\n linkerMap: LinkerMap\n ): Promise<Map<ColumnOrAxisIdString, AxisData | ColumnData>> {\n const result: Map<ColumnOrAxisIdString, AxisData> = new Map();\n\n const dataAxes = new Set<string>();\n const dataAxesList: AxisSpec[] = [];\n for (const inputName of this.dataInputs) {\n for (const selectorState of state.components[inputName].selectorStates) {\n const id = columnOrAxisIdFromString(selectorState.selectedSource);\n if (isColumnId(id)) {\n const columnSpec = await store.pFrameProvider.getColumnSpecById(id);\n if (columnSpec) {\n columnSpec.axesSpec.forEach(axisSpec => {\n const idStr = AxisId.fromAxisSpec(axisSpec).toCanonicalString();\n if (!dataAxes.has(idStr)) {\n dataAxes.add(idStr);\n dataAxesList.push(axisSpec);\n }\n });\n }\n }\n }\n }\n for (const [inputName , {selectorStates}] of Object.entries(state.components)) {\n const component = this.simpleComponentControllers[inputName as keyof typeof this.simpleComponentControllers]\n ?? this.filterComponentControllers[inputName as keyof typeof this.filterComponentControllers] as ComponentController<State, typeof inputName>;\n const fixedAxesAllowed = component.settings.columnsWithExtraAxesAllowed;\n for (const {selectedSource} of selectorStates) {\n await addSourceInfoToMap(\n store,\n selectedSource,\n labelsMap[selectedSource],\n result,\n dataAxesList,\n dataAxes,\n fixedAxesAllowed,\n linkerMap\n );\n }\n }\n return result;\n }\n\n getEmptyInputGuide(state: State): InputGuide<State> {\n return {\n components: this.createEmptyComponentsGuide(state) as ComponentsGuide<State['components']>,\n getSourceInfo: (sourceIdStr: ColumnOrAxisIdString) => getDefaultInfo(sourceIdStr),\n freeOptionsSet: new Set(),\n axesToBeFixedSet: new Set(),\n readyData: false,\n ready: false,\n consistent: true,\n };\n }\n\n getConsumedOptionsSet(state: State) {\n const consumedSourcesSet: Set<ColumnOrAxisIdString> = new Set();\n for (const componentName of this.dimensionsConsumerComponents) {\n for (const {selectedSource} of state.components[componentName].selectorStates) {\n consumedSourcesSet.add(selectedSource);\n }\n }\n return consumedSourcesSet;\n }\n\n async getLabelsMap(store: DataStore, state: State) {\n const availableColumns = await store.pFrameProvider.getColumnsFull(\n this.dataInputs.reduce((res: (ColumnId | AxisId)[], inputName) => {\n const componentState = state.components[inputName];\n const sources = componentState.selectorStates.map(st => columnOrAxisIdFromString(st.selectedSource));\n return res.concat(sources);\n }, []),\n false\n );\n return deriveLabels(availableColumns, el => el.spec).reduce((res: Record<string, string>, el) => {\n const id = new ColumnId({name: el.value.columnId, type: el.value.spec.valueType}).toCanonicalString();\n res[id] = el.label;\n return res;\n }, {});\n }\n\n async calculateOptions(\n store: DataStore,\n state: State,\n fixedIds: string[] = [],\n dataColumnPredicate = dataColumnPredicateDefault\n ): Promise<InputGuide<State>> {\n // creating empty options object corresponding to the provided state\n const resultComponentsGuide: InputOptionsUnion<State> = this.createEmptyComponentsGuide(state);\n\n // set of columns and axes that selected in consumer-dimensions components\n const consumedSourcesSet = this.getConsumedOptionsSet(state);\n // for trees block - to ignore treeId and donorId in the interface\n const ignoredNamesSet = new Set<string>(this.ignoredOptionIdNames);\n const fixedSelectedSet = new Set<ColumnOrAxisIdString>(fixedIds);\n\n const linkerMap = await createLinkerMap(store)\n\n const labelsMap = await this.getLabelsMap(store, state); // improved labels with name separation for different columns with the same name; for axes - name from spec or labels column\n const selectedColumnsOrAxesInfo = await this.getSelectedSourcesInfo(store, state, labelsMap, linkerMap);\n const optionsInfo: Map<ColumnOrAxisIdString, ColumnData | AxisData> = new Map();\n\n const allControllers = {...this.simpleComponentControllers, ...this.filterComponentControllers};\n const freeOptionsSet = new Set<ColumnOrAxisIdString>();\n for (const [name, componentController] of Object.entries(allControllers)) {\n const options = await (\n componentController as ComponentController<State, SimpleComponents<State> | FilterComponents<State>>\n ).getOptions(\n store,\n state,\n labelsMap,\n consumedSourcesSet,\n linkerMap,\n dataColumnPredicate,\n ignoredNamesSet,\n fixedSelectedSet\n );\n if (!this.dataInputs.includes(name as string)) {\n options.options.forEach(item => {\n freeOptionsSet.add(item.value);\n });\n }\n for (const [key, v] of options.optionsInfo) {\n optionsInfo.set(key, v);\n }\n resultComponentsGuide[name as keyof InputOptionsUnion<State>] =\n options as (typeof resultComponentsGuide)[keyof InputOptionsUnion<State>];\n }\n\n const markMustBeConsumed = (id: string) => {\n const option = optionsInfo.get(id);\n if (option && option.kind === 'axis') {\n option.mustBeConsumed = true;\n }\n const selected = selectedColumnsOrAxesInfo.get(id);\n if (selected && selected.kind === 'axis') {\n selected.mustBeConsumed = true;\n }\n };\n // axes from heatmap data column, to make visible what axes should be; hanging axes from scatterplot\n const mustBeConsumedAxes = await this.getMustBeConsumedAxes(store, state);\n for (const id of mustBeConsumedAxes) {\n markMustBeConsumed(id);\n }\n\n if (this.dontAllowUnfilteredHighCardinality) {\n // Axes marked 'high cardinality' should be in the filter. Or some column that has this axis should be in the filter.\n // If not - they are marked 'mustBeConsumed'.\n // But also they can be anywhere else.\n const isHighCardinality = (spec: AxisSpec) => spec?.annotations?.[HIGH_CARDINALITY] === 'true';\n const consumedHighCardinalityAxes =\n state.components['filters']?.selectorStates.reduce((consumed: Set<string>, s) => {\n const info = selectedColumnsOrAxesInfo.get(s.selectedSource);\n if (info?.kind === 'column') {\n const axes = info.spec.axesSpec.filter(isHighCardinality);\n axes.forEach(spec => consumed.add(AxisId.fromAxisSpec(spec).toCanonicalString()));\n }\n if (info?.kind === 'axis' && isHighCardinality(info.spec)) {\n consumed.add(AxisId.fromAxisSpec(info.spec).toCanonicalString());\n }\n return consumed;\n }, new Set<string>()) ?? new Set<string>();\n this.dataInputs.forEach(inputName => {\n for (const {selectedSource} of state.components[inputName].selectorStates) {\n const info = selectedColumnsOrAxesInfo.get(selectedSource);\n if (info?.kind === 'column') {\n const axes = info.spec.axesSpec.filter(isHighCardinality);\n axes.forEach(spec => {\n const idStr = AxisId.fromAxisSpec(spec).toCanonicalString();\n if (!freeOptionsSet.has(idStr) && !consumedHighCardinalityAxes.has(idStr)) {\n // return axis to the list of free axis if it is selected somewhere, but nothing with this axis is in the filters\n freeOptionsSet.add(idStr);\n }\n if (!consumedHighCardinalityAxes.has(idStr)) {\n markMustBeConsumed(idStr);\n }\n });\n }\n if (info?.kind === 'axis' && isHighCardinality(info.spec)) {\n const idStr = AxisId.fromAxisSpec(info.spec).toCanonicalString();\n if (!freeOptionsSet.has(idStr)) {\n freeOptionsSet.add(idStr);\n }\n if (!consumedHighCardinalityAxes.has(idStr)) {\n markMustBeConsumed(idStr);\n }\n }\n }\n });\n }\n\n const axesToBeFixedSet = new Set<ColumnOrAxisIdString>();\n for (const {selectorStates} of Object.values(state.components)) {\n for (const {selectedSource} of selectorStates) {\n const info = selectedColumnsOrAxesInfo.get(selectedSource);\n if (info && info.kind === 'column') {\n info.axesToBeFixed.forEach(axisIdStr => {\n axesToBeFixedSet.add(axisIdStr);\n });\n }\n }\n }\n\n const consistent = await this.isConsistent(store, state, linkerMap);\n const getSourceInfo = (sourceIdStr: ColumnOrAxisIdString) => {\n const id = columnOrAxisIdFromString(sourceIdStr).toCanonicalString() ?? sourceIdStr;\n return optionsInfo.get(id) ?? selectedColumnsOrAxesInfo.get(id) ?? getDefaultInfo(sourceIdStr);\n };\n return {\n components: resultComponentsGuide as ComponentsGuide<State['components']>,\n getSourceInfo,\n freeOptionsSet,\n axesToBeFixedSet,\n readyData: this.readyDataInputs(state),\n ready: this.readyForPlotBuilding(store, state, consistent, freeOptionsSet, getSourceInfo),\n consistent,\n };\n }\n\n async getUniqueSourceValuesWithLabels(\n store: DataStore,\n inputGuide: InputGuide<State>,\n selectedSource: ColumnOrAxisIdString,\n limit?:number,\n searchQuery?: string, // search by labels if axis labels exist\n searchQueryValue?: string // search by value, not by label\n ): Promise<{\n values: {\n value: string;\n label: string;\n }[],\n overflow: boolean;\n }> {\n const sortValues = (values:{value:string, label:string}[]) => values.sort((a, b) => a.label.localeCompare(b.label, 'en', {numeric: true}))\n const info = inputGuide.getSourceInfo(selectedSource);\n const discreteValuesStr = info.annotations?.[DISCRETE_VALUES_KEY];\n\n // if column's annotation contains discrete values - take them from it\n try {\n const discreteValues: string[] | null = discreteValuesStr\n ? (JSON.parse(discreteValuesStr) as (string | number)[]).map(v => String(v))\n : null;\n if (discreteValues) {\n const values = discreteValues.map(v => ({value: v, label: v}));\n sortValues(values);\n return {values, overflow: false};\n }\n } catch (err) {\n console.error(`Parsing error: discrete values annotation ${discreteValuesStr} in ${selectedSource}`)\n }\n\n // consider label column for axis\n if (info.kind === 'axis') {\n const axisId = columnOrAxisIdFromString(selectedSource) as AxisId;\n const parentSources = info.parentSources.map(columnOrAxisIdFromString) as ColumnId[];\n const labelsColumnId = await getColumnOrAxisValueLabelsId(store, selectedSource, info.parentSources);\n let filters:PTableRecordSingleValueFilterV2[] = [];\n if (labelsColumnId) {\n if (searchQuery) {\n filters = [{\n type: 'bySingleColumnV2',\n column: {\n type: 'column',\n id: labelsColumnId.name as PObjectId\n },\n predicate: {\n operator: 'StringIContains',\n substring: searchQuery\n }\n }];\n }\n if (searchQueryValue) {\n filters = [{\n type: 'bySingleColumnV2',\n column: {\n type: 'axis',\n id: axisId.toPFrameId()\n },\n predicate: {\n operator: 'StringIContains',\n substring: searchQueryValue\n }\n }];\n }\n const {data: dataValues, axesData} = await store.pFrameProvider.getSingleColumnData(labelsColumnId, filters);\n const axisKeys = axesData[axisId.toCanonicalString()];\n const values:{value: string, label: string}[] = [];\n for (let i = 0; i < Math.min(axisKeys.length, limit ?? axisKeys.length); i++) {\n values.push({value: String(axisKeys[i]), label: String(dataValues[i])});\n }\n sortValues(values);\n return {values, overflow: !(limit === undefined || axisKeys.length < limit)};\n }\n const searchInLabelsOrValue = searchQuery ?? searchQueryValue;\n if (searchInLabelsOrValue) {\n filters = [{\n type: 'bySingleColumnV2',\n column: {\n type: 'axis',\n id: axisId.toPFrameId()\n },\n predicate: {\n operator: 'StringIContains',\n substring: searchInLabelsOrValue\n }\n }];\n }\n const response = await store.pFrameProvider.getAxisUniqueValues(axisId, [parentSources[0]], limit, filters);\n const values = response.values.map(v => ({value: String(v), label: String(v)}));\n sortValues(values);\n return {values, overflow: response.overflow};\n }\n if (info.kind === 'column') {\n const searchInLabelsOrValue = searchQuery ?? searchQueryValue;\n const columnId = columnOrAxisIdFromString(selectedSource) as ColumnId;\n const filters:PTableRecordSingleValueFilterV2[] = searchInLabelsOrValue ? [{\n type: 'bySingleColumnV2',\n column: {\n type: 'column',\n id: columnId.name as PObjectId\n },\n predicate: {\n operator: 'StringIContains',\n substring: searchInLabelsOrValue\n }\n }] : [];\n const response = await store.pFrameProvider.getColumnUniqueValues(columnId, limit, filters);\n const values = response.values.map(v => ({value: String(v), label: String(v)}));\n sortValues(values);\n return {values, overflow: response.overflow};\n }\n return {values: [], overflow: false};\n }\n\n async checkStateConsistency(\n store: DataStore,\n state: State,\n linkerMap: LinkerMap\n ): Promise<Map<keyof State['components'], Record<string, boolean>>> {\n const result: Map<keyof State['components'], Record<string, boolean>> = new Map();\n for (const component of Object.keys(this.simpleComponentControllers) as SimpleComponents<State>[]) {\n result.set(\n component as keyof State['components'],\n await this.simpleComponentControllers[component].checkStateConsistency(store, state, linkerMap)\n );\n }\n for (const component of Object.keys(this.filterComponentControllers) as FilterComponents<State>[]) {\n result.set(\n component as keyof State['components'],\n await this.filterComponentControllers[component].checkStateConsistency(store, state, linkerMap)\n );\n }\n return result;\n }\n\n async isConsistent(store: DataStore, state: State, linkerMap: LinkerMap): Promise<boolean> {\n const consistency = await this.checkStateConsistency(store, state, linkerMap);\n for (const value of consistency.values()) {\n if (Object.values(value).some(item => !item)) {\n return false;\n }\n }\n return true;\n }\n\n readyDataInputs(state: State): boolean {\n return this.dataInputs.every(name => state.components[name].selectorStates.length > 0);\n }\n\n readyForPlotBuilding(\n store: DataStore,\n state: State,\n consistent: boolean,\n freeOptionsSet: Set<ColumnOrAxisIdString>,\n getSourceInfo: (id: ColumnOrAxisIdString) => ColumnData | AxisData\n ): boolean {\n if (!consistent || !this.readyDataInputs(state)) {\n return false;\n }\n let hasFreeDimensions: boolean = false;\n for (const optionId of freeOptionsSet) {\n const info = getSourceInfo(optionId);\n if (info && info.kind === 'axis' && info.mustBeConsumed) {\n hasFreeDimensions = true;\n break;\n }\n }\n let hasNotSelectedAxisToBeFixed: boolean = false;\n for (const {selectorStates} of Object.values(state.components)) {\n for (const {selectedSource, fixedAxes} of selectorStates) {\n const info = getSourceInfo(selectedSource);\n if (\n info &&\n info.kind === 'column' &&\n info.axesToBeFixed.some(\n id => (fixedAxes ?? []).find(el => el.axisSource === id)?.axisValue === undefined\n )\n ) {\n hasNotSelectedAxisToBeFixed = true;\n break;\n }\n }\n if (hasNotSelectedAxisToBeFixed) {\n break;\n }\n }\n return (\n this.requiredComponents.every(name => state.components[name].selectorStates.length > 0) &&\n !hasFreeDimensions &&\n !hasNotSelectedAxisToBeFixed\n );\n }\n\n abstract createDataByColumns(store: DataStore, state: State): Promise<PlotDataAndSettings['data']>;\n\n abstract createChartSettings(store: DataStore, state: State): Promise<PlotDataAndSettings['settings']>;\n\n async createDataForPlot(store: DataStore, state: State): Promise<PlotDataAndSettings> {\n return {\n data: await this.createDataByColumns(store, state),\n settings: await this.createChartSettings(store, state),\n };\n }\n}\n"],"names":["ControllerBase","simpleComponentControllers","filterComponentControllers","__publicField","components","componentName","inputName","state","selectorState","store","nextSelectorStates","currentStates","deletedStates","currentState","s","addedStates","nextState","h","getStateCopy","st","axis","key","value","labelsMap","linkerMap","result","dataAxes","dataAxesList","id","columnOrAxisIdFromString","isColumnId","columnSpec","axisSpec","idStr","AxisId","selectorStates","fixedAxesAllowed","selectedSource","addSourceInfoToMap","sourceIdStr","getDefaultInfo","consumedSourcesSet","availableColumns","res","sources","a","deriveLabels","el","ColumnId","fixedIds","dataColumnPredicate","dataColumnPredicateDefault","resultComponentsGuide","ignoredNamesSet","fixedSelectedSet","createLinkerMap","selectedColumnsOrAxesInfo","optionsInfo","allControllers","freeOptionsSet","name","componentController","options","item","v","markMustBeConsumed","option","selected","mustBeConsumedAxes","isHighCardinality","spec","_a","HIGH_CARDINALITY","consumedHighCardinalityAxes","consumed","info","axesToBeFixedSet","axisIdStr","consistent","getSourceInfo","inputGuide","limit","searchQuery","searchQueryValue","sortValues","values","b","discreteValuesStr","DISCRETE_VALUES_KEY","discreteValues","axisId","parentSources","labelsColumnId","getColumnOrAxisValueLabelsId","filters","dataValues","axesData","axisKeys","i","searchInLabelsOrValue","response","w","columnId","component","consistency","hasFreeDimensions","optionId","hasNotSelectedAxisToBeFixed","fixedAxes","S"],"mappings":"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","x_google_ignoreList":[0]}
|
package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js
ADDED
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
import H from "../../_virtual/canonicalize.js";
|
|
2
|
+
import { FORMAT as J } from "../../constants.js";
|
|
3
|
+
import { ControllerBase as K } from "../ControllerBase.js";
|
|
4
|
+
import { ComponentController as w } from "../ComponentController.js";
|
|
5
|
+
import { columnOrAxisIdFromString as C, AxisId as G, isColumnId as c } from "../../spec.js";
|
|
6
|
+
import { checkSourceBySpecForFilters as Q, createLinkerMap as W, getFiltersFromStates as X, getAxesSpecsFromSources as Y, getLinkerColumnsForSource as N, getColumnOrAxisValueLabelsId as A, getColumnOrAxisLabel as D, getColumnOrAxisSpec as Z } from "../../utils.js";
|
|
7
|
+
var _ = Object.defineProperty, $ = (m, e, t) => e in m ? _(m, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : m[e] = t, E = (m, e, t) => $(m, typeof e != "symbol" ? e + "" : e, t);
|
|
8
|
+
const se = {
|
|
9
|
+
type: "bubble",
|
|
10
|
+
components: {
|
|
11
|
+
valueSize: { type: "simple", selectorStates: [] },
|
|
12
|
+
valueColor: { type: "simple", selectorStates: [] },
|
|
13
|
+
x: { type: "simple", selectorStates: [] },
|
|
14
|
+
y: { type: "simple", selectorStates: [] },
|
|
15
|
+
filters: { type: "filter", selectorStates: [] },
|
|
16
|
+
tabBy: { type: "filter", selectorStates: [] },
|
|
17
|
+
facetBy: { type: "simple", selectorStates: [] },
|
|
18
|
+
tooltipContent: { type: "simple", selectorStates: [] }
|
|
19
|
+
},
|
|
20
|
+
dividedAxes: {}
|
|
21
|
+
};
|
|
22
|
+
function z(m, e) {
|
|
23
|
+
if (!e.length)
|
|
24
|
+
return [];
|
|
25
|
+
const t = e.map((l) => C(l)), v = Object.values(m.columnsData)[0].length, i = [];
|
|
26
|
+
for (let l = 0; l < v; l++) {
|
|
27
|
+
const u = t.map((p) => {
|
|
28
|
+
const d = p.toCanonicalString();
|
|
29
|
+
return c(p) ? m.columnsData[d][l] : m.axesData[d][l];
|
|
30
|
+
}).join(", ");
|
|
31
|
+
i.push(u);
|
|
32
|
+
}
|
|
33
|
+
return i;
|
|
34
|
+
}
|
|
35
|
+
class re extends K {
|
|
36
|
+
constructor() {
|
|
37
|
+
super({
|
|
38
|
+
valueSize: new w({
|
|
39
|
+
componentName: "valueSize",
|
|
40
|
+
allowedTypes: ["Int", "Long", "Double", "Float"],
|
|
41
|
+
strictlyDependsOnParents: !0,
|
|
42
|
+
parentComponents: ["valueColor"],
|
|
43
|
+
settings: {
|
|
44
|
+
isDataComponent: !0,
|
|
45
|
+
columnsAllowed: !0,
|
|
46
|
+
axesAllowed: !1,
|
|
47
|
+
required: !0
|
|
48
|
+
}
|
|
49
|
+
}),
|
|
50
|
+
valueColor: new w({
|
|
51
|
+
componentName: "valueColor",
|
|
52
|
+
allowedTypes: ["Int", "Long", "Double", "Float"],
|
|
53
|
+
strictlyDependsOnParents: !0,
|
|
54
|
+
parentComponents: ["valueSize"],
|
|
55
|
+
settings: {
|
|
56
|
+
isDataComponent: !0,
|
|
57
|
+
columnsAllowed: !0,
|
|
58
|
+
axesAllowed: !1,
|
|
59
|
+
required: !0
|
|
60
|
+
}
|
|
61
|
+
}),
|
|
62
|
+
x: new w({
|
|
63
|
+
componentName: "x",
|
|
64
|
+
allowedTypes: ["Int", "String", "Long"],
|
|
65
|
+
strictlyDependsOnParents: !0,
|
|
66
|
+
parentComponents: ["valueSize", "valueColor"],
|
|
67
|
+
settings: {
|
|
68
|
+
required: !0,
|
|
69
|
+
dimensionConsumer: !0,
|
|
70
|
+
multipleSelectors: !0,
|
|
71
|
+
axesAllowed: !0,
|
|
72
|
+
columnsAllowed: !1
|
|
73
|
+
}
|
|
74
|
+
}),
|
|
75
|
+
y: new w({
|
|
76
|
+
componentName: "y",
|
|
77
|
+
allowedTypes: ["Int", "String", "Long"],
|
|
78
|
+
strictlyDependsOnParents: !0,
|
|
79
|
+
parentComponents: ["valueSize", "valueColor"],
|
|
80
|
+
settings: {
|
|
81
|
+
required: !0,
|
|
82
|
+
dimensionConsumer: !0,
|
|
83
|
+
multipleSelectors: !0,
|
|
84
|
+
axesAllowed: !0,
|
|
85
|
+
columnsAllowed: !1
|
|
86
|
+
}
|
|
87
|
+
}),
|
|
88
|
+
tooltipContent: new w({
|
|
89
|
+
componentName: "tooltipContent",
|
|
90
|
+
allowedTypes: ["String", "Int", "Long", "Float", "Double"],
|
|
91
|
+
strictlyDependsOnParents: !0,
|
|
92
|
+
parentComponents: ["valueSize", "valueColor"],
|
|
93
|
+
settings: {
|
|
94
|
+
columnsAllowed: !0,
|
|
95
|
+
axesAllowed: !0,
|
|
96
|
+
multipleSelectors: !0
|
|
97
|
+
}
|
|
98
|
+
}),
|
|
99
|
+
facetBy: new w({
|
|
100
|
+
componentName: "facetBy",
|
|
101
|
+
allowedTypes: ["String", "Int", "Long"],
|
|
102
|
+
strictlyDependsOnParents: !0,
|
|
103
|
+
parentComponents: ["valueSize", "valueColor"],
|
|
104
|
+
settings: {
|
|
105
|
+
axesAllowed: !0,
|
|
106
|
+
dimensionConsumer: !0,
|
|
107
|
+
multipleSelectors: !0
|
|
108
|
+
}
|
|
109
|
+
})
|
|
110
|
+
}, {
|
|
111
|
+
filters: new w({
|
|
112
|
+
componentName: "filters",
|
|
113
|
+
allowedTypes: ["String", "Int", "Long", "Double", "Long"],
|
|
114
|
+
strictlyDependsOnParents: !0,
|
|
115
|
+
parentComponents: ["valueSize", "valueColor"],
|
|
116
|
+
settings: {
|
|
117
|
+
columnsAllowed: !0,
|
|
118
|
+
axesAllowed: !0,
|
|
119
|
+
dimensionConsumer: !0,
|
|
120
|
+
multipleSelectors: !0
|
|
121
|
+
},
|
|
122
|
+
checkSourceBySpec: Q
|
|
123
|
+
}),
|
|
124
|
+
tabBy: new w({
|
|
125
|
+
componentName: "tabBy",
|
|
126
|
+
allowedTypes: ["String", "Int"],
|
|
127
|
+
strictlyDependsOnParents: !0,
|
|
128
|
+
parentComponents: ["valueSize", "valueColor"],
|
|
129
|
+
settings: {
|
|
130
|
+
columnsAllowed: !0,
|
|
131
|
+
axesAllowed: !0,
|
|
132
|
+
dimensionConsumer: !0
|
|
133
|
+
}
|
|
134
|
+
})
|
|
135
|
+
}), E(this, "dataInputs", ["valueSize", "valueColor"]), E(this, "dontAllowUnfilteredHighCardinality", !0);
|
|
136
|
+
}
|
|
137
|
+
async getMustBeConsumedAxes(e, t) {
|
|
138
|
+
if (!t.components.valueColor.selectorStates.length)
|
|
139
|
+
return /* @__PURE__ */ new Set();
|
|
140
|
+
const v = t.components.valueColor.selectorStates[0].selectedSource, i = await e.pFrameProvider.getColumnSpecById(C(v));
|
|
141
|
+
return i ? new Set(i.axesSpec.map((l) => G.fromAxisSpec(l).toCanonicalString())) : /* @__PURE__ */ new Set();
|
|
142
|
+
}
|
|
143
|
+
async createDataByColumns(e, t) {
|
|
144
|
+
var v, i;
|
|
145
|
+
const l = (v = t.components.valueColor.selectorStates[0]) == null ? void 0 : v.selectedSource, u = (i = t.components.valueSize.selectorStates[0]) == null ? void 0 : i.selectedSource;
|
|
146
|
+
if (!l || !u)
|
|
147
|
+
throw Error("Value column is not valid");
|
|
148
|
+
const p = C(l), d = C(u);
|
|
149
|
+
if (!p || !d || !c(p) && !c(d))
|
|
150
|
+
throw Error("Value column is not valid");
|
|
151
|
+
const s = {
|
|
152
|
+
type: "columns",
|
|
153
|
+
id: H(t.components) ?? "",
|
|
154
|
+
values: {}
|
|
155
|
+
}, h = await W(e), g = [
|
|
156
|
+
...t.components.filters.selectorStates,
|
|
157
|
+
...t.components.tabBy.selectorStates
|
|
158
|
+
], I = X(g), O = g.map((o) => C(o.selectedSource)).filter(c), x = [p, d].filter(c), f = x.map((o) => o.toCanonicalString()), B = await Y(e, f), F = [
|
|
159
|
+
t.components.facetBy,
|
|
160
|
+
t.components.x,
|
|
161
|
+
t.components.y,
|
|
162
|
+
t.components.tooltipContent
|
|
163
|
+
], a = [], y = x.map(() => []), b = [], S = [];
|
|
164
|
+
for (const { selectedSource: o, fixedAxes: n } of g)
|
|
165
|
+
S.push(...await N(
|
|
166
|
+
e,
|
|
167
|
+
h,
|
|
168
|
+
B,
|
|
169
|
+
o,
|
|
170
|
+
n
|
|
171
|
+
)), y.push(
|
|
172
|
+
(n ?? []).map(({ axisIdx: L, axisValue: P }) => ({ idx: L, value: P }))
|
|
173
|
+
);
|
|
174
|
+
for (const o of F)
|
|
175
|
+
for (const { selectedSource: n, fixedAxes: L } of o.selectorStates) {
|
|
176
|
+
a.push(C(n)), b.push(
|
|
177
|
+
(L ?? []).map(({ axisIdx: U, axisValue: R }) => ({ idx: U, value: R }))
|
|
178
|
+
), S.push(...await N(
|
|
179
|
+
e,
|
|
180
|
+
h,
|
|
181
|
+
B,
|
|
182
|
+
n,
|
|
183
|
+
L
|
|
184
|
+
));
|
|
185
|
+
const P = await A(e, n, f);
|
|
186
|
+
P && a.push(P);
|
|
187
|
+
}
|
|
188
|
+
const r = await e.pFrameProvider.getTableOuterJoin(
|
|
189
|
+
[...x, ...S, ...O],
|
|
190
|
+
a,
|
|
191
|
+
I,
|
|
192
|
+
!0,
|
|
193
|
+
y,
|
|
194
|
+
b
|
|
195
|
+
);
|
|
196
|
+
a.forEach((o) => {
|
|
197
|
+
const n = o.toCanonicalString();
|
|
198
|
+
s.values[n] = c(o) ? r.columnsData[n] : r.axesData[n];
|
|
199
|
+
}), s.values[l] = c(p) ? r.columnsData[l] : r.axesData[l], s.values[u] = c(d) ? r.columnsData[u] : r.axesData[u];
|
|
200
|
+
const j = t.components.x.selectorStates.map((o) => o.selectedSource), V = j.join(", "), k = await Promise.all(j.map(
|
|
201
|
+
async (o) => {
|
|
202
|
+
var n;
|
|
203
|
+
return ((n = await A(e, o, f)) == null ? void 0 : n.toCanonicalString()) ?? o;
|
|
204
|
+
}
|
|
205
|
+
));
|
|
206
|
+
s.values[V] = z(r, j), s.values.xLabels = z(r, k);
|
|
207
|
+
const T = t.components.y.selectorStates.map((o) => o.selectedSource), q = T.join(", "), M = await Promise.all(T.map(
|
|
208
|
+
async (o) => {
|
|
209
|
+
var n;
|
|
210
|
+
return ((n = await A(e, o, f)) == null ? void 0 : n.toCanonicalString()) ?? o;
|
|
211
|
+
}
|
|
212
|
+
));
|
|
213
|
+
return s.values[q] = z(r, T), s.values.yLabels = z(r, M), { byColumns: s };
|
|
214
|
+
}
|
|
215
|
+
async createChartSettings(e, t) {
|
|
216
|
+
var v, i;
|
|
217
|
+
const l = (v = t.components.valueColor.selectorStates[0]) == null ? void 0 : v.selectedSource, u = (i = t.components.valueSize.selectorStates[0]) == null ? void 0 : i.selectedSource;
|
|
218
|
+
if (!l || !u)
|
|
219
|
+
throw Error("Value column is not valid");
|
|
220
|
+
const p = C(l), d = C(u);
|
|
221
|
+
if (!c(p) && !c(d))
|
|
222
|
+
throw Error("Value column is not valid");
|
|
223
|
+
const s = [p, d].filter(c).map((a) => a.toCanonicalString()), h = {
|
|
224
|
+
type: "column",
|
|
225
|
+
value: l,
|
|
226
|
+
label: await D(e, l, [])
|
|
227
|
+
}, g = {
|
|
228
|
+
type: "column",
|
|
229
|
+
value: u,
|
|
230
|
+
label: await D(e, u, [])
|
|
231
|
+
}, I = t.components.x.selectorStates.map(({ selectedSource: a }) => a).join(", "), O = t.components.y.selectorStates.map(({ selectedSource: a }) => a).join(", "), x = await Promise.all(t.components.facetBy.selectorStates.map(async (a) => {
|
|
232
|
+
var y;
|
|
233
|
+
return {
|
|
234
|
+
type: "column",
|
|
235
|
+
value: ((y = await A(e, a.selectedSource, s)) == null ? void 0 : y.toCanonicalString()) ?? a.selectedSource
|
|
236
|
+
};
|
|
237
|
+
})), f = (await Promise.all(t.components.x.selectorStates.map((a) => D(e, a.selectedSource, s)))).join(", "), B = (await Promise.all(t.components.y.selectorStates.map((a) => D(e, a.selectedSource, s)))).join(", "), F = await Promise.all(
|
|
238
|
+
t.components.tooltipContent.selectorStates.map(async (a) => {
|
|
239
|
+
var y, b;
|
|
240
|
+
const S = a.selectedSource, r = await Z(e, S, s);
|
|
241
|
+
return {
|
|
242
|
+
type: "column",
|
|
243
|
+
label: await D(e, S, s) || S,
|
|
244
|
+
value: S,
|
|
245
|
+
valueLabels: ((y = await A(e, S, s)) == null ? void 0 : y.toCanonicalString()) ?? S,
|
|
246
|
+
format: ((b = r == null ? void 0 : r.annotations) == null ? void 0 : b[J]) ?? ".0%"
|
|
247
|
+
};
|
|
248
|
+
})
|
|
249
|
+
);
|
|
250
|
+
return {
|
|
251
|
+
type: "bubble",
|
|
252
|
+
valueColor: h,
|
|
253
|
+
valueSize: g,
|
|
254
|
+
xColumn: {
|
|
255
|
+
type: "column",
|
|
256
|
+
value: I,
|
|
257
|
+
label: f,
|
|
258
|
+
valueLabels: "xLabels"
|
|
259
|
+
},
|
|
260
|
+
yColumn: {
|
|
261
|
+
type: "column",
|
|
262
|
+
value: O,
|
|
263
|
+
label: B,
|
|
264
|
+
valueLabels: "yLabels"
|
|
265
|
+
},
|
|
266
|
+
facetBy: x,
|
|
267
|
+
tooltips: {
|
|
268
|
+
show: !0,
|
|
269
|
+
content: F
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
export {
|
|
275
|
+
re as BubbleStateController,
|
|
276
|
+
se as InitialBubbleState
|
|
277
|
+
};
|
|
278
|
+
//# sourceMappingURL=bubble.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bubble.js","sources":["../../../../../../../node_modules/@milaboratories/pf-plots/src/controllers/controllersByChartType/bubble.ts"],"sourcesContent":["import canonicalize from 'canonicalize';\nimport type {\n ComponentStateFilter,\n ComponentStateSimple,\n DataByColumns,\n InputStateParent,\n} from '../../common';\nimport {FORMAT} from '../../constants';\nimport {PValue} from '../../store';\nimport {ControllerBase, PlotDataAndSettings} from '../ControllerBase';\nimport {ComponentController} from '../ComponentController';\nimport {columnOrAxisIdFromString, isColumnId} from '../../spec';\nimport type {DataStore} from '../../store';\nimport {\n checkSourceBySpecForFilters, createLinkerMap, getAxesSpecsFromSources,\n getColumnOrAxisLabel, getColumnOrAxisSpec,\n getColumnOrAxisValueLabelsId,\n getFiltersFromStates, getLinkerColumnsForSource,\n} from '../../utils';\nimport {AxisId, ColumnId} from '../../spec';\nimport type {ColumnsProvider} from '../../pframe/ColumnsProvider';\n\nexport interface BubbleUIState extends InputStateParent<'bubble'> {\n type: 'bubble';\n components: {\n valueSize: ComponentStateSimple;\n valueColor: ComponentStateSimple;\n x: ComponentStateSimple;\n y: ComponentStateSimple;\n filters: ComponentStateFilter;\n tabBy: ComponentStateFilter;\n facetBy: ComponentStateSimple;\n tooltipContent: ComponentStateSimple;\n };\n}\n\nexport const InitialBubbleState: BubbleUIState = {\n type: 'bubble',\n components: {\n valueSize: {type: 'simple', selectorStates: []},\n valueColor: {type: 'simple', selectorStates: []},\n x: {type: 'simple', selectorStates: []},\n y: {type: 'simple', selectorStates: []},\n filters: {type: 'filter', selectorStates: []},\n tabBy: {type: 'filter', selectorStates: []},\n facetBy: {type: 'simple', selectorStates: []},\n tooltipContent: {type: 'simple', selectorStates: []},\n },\n dividedAxes: {},\n};\n\nfunction getMultiSourceColumn(data: Awaited<ReturnType<ColumnsProvider['getTableOuterJoin']>>, selectedSources: string[]) {\n if (!selectedSources.length) {\n return [];\n }\n const selectedIds = selectedSources.map(str => columnOrAxisIdFromString(str));\n const n = Object.values(data.columnsData)[0].length;\n const result: string[] = [];\n for (let i = 0; i < n; i++) {\n const value = selectedIds\n .map((id) => {\n const key = id.toCanonicalString();\n return isColumnId(id)\n ? data.columnsData[key][i]\n : data.axesData[key][i];\n })\n .join(', ');\n result.push(value);\n }\n return result;\n}\n\nexport class BubbleStateController extends ControllerBase<BubbleUIState> {\n dataInputs = ['valueSize', 'valueColor'];\n dontAllowUnfilteredHighCardinality = true;\n constructor() {\n super({\n valueSize: new ComponentController<BubbleUIState, 'valueSize'>({\n componentName: 'valueSize',\n allowedTypes: ['Int', 'Long', 'Double', 'Float'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueColor'],\n settings: {\n isDataComponent: true,\n columnsAllowed: true,\n axesAllowed: false,\n required: true,\n }\n }),\n valueColor: new ComponentController<BubbleUIState, 'valueColor'>({\n componentName: 'valueColor',\n allowedTypes: ['Int', 'Long', 'Double', 'Float'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize'],\n settings: {\n isDataComponent: true,\n columnsAllowed: true,\n axesAllowed: false,\n required: true,\n },\n }),\n x: new ComponentController<BubbleUIState, 'x'>({\n componentName: 'x',\n allowedTypes: ['Int', 'String', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n required: true,\n dimensionConsumer: true,\n multipleSelectors: true,\n axesAllowed: true,\n columnsAllowed: false,\n },\n }),\n y: new ComponentController<BubbleUIState, 'y'>({\n componentName: 'y',\n allowedTypes: ['Int', 'String', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n required: true,\n dimensionConsumer: true,\n multipleSelectors: true,\n axesAllowed: true,\n columnsAllowed: false,\n },\n }),\n tooltipContent: new ComponentController<BubbleUIState, 'tooltipContent'>({\n componentName: 'tooltipContent',\n allowedTypes: ['String', 'Int', 'Long', 'Float', 'Double'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n columnsAllowed: true,\n axesAllowed: true,\n multipleSelectors: true,\n },\n }),\n facetBy: new ComponentController<BubbleUIState, 'facetBy'>({\n componentName: 'facetBy',\n allowedTypes: ['String', 'Int', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n axesAllowed: true,\n dimensionConsumer: true,\n multipleSelectors: true,\n },\n })\n }, {\n filters: new ComponentController<BubbleUIState, 'filters'>({\n componentName: 'filters',\n allowedTypes: ['String', 'Int', 'Long', 'Double', 'Long'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n columnsAllowed: true,\n axesAllowed: true,\n dimensionConsumer: true,\n multipleSelectors: true,\n },\n checkSourceBySpec: checkSourceBySpecForFilters\n }),\n tabBy: new ComponentController<BubbleUIState, 'tabBy'>({\n componentName: 'tabBy',\n allowedTypes: ['String', 'Int'],\n strictlyDependsOnParents: true,\n parentComponents: ['valueSize', 'valueColor'],\n settings: {\n columnsAllowed: true,\n axesAllowed: true,\n dimensionConsumer: true,\n },\n }),\n });\n }\n\n async getMustBeConsumedAxes(store: DataStore, state: BubbleUIState):Promise<Set<string>> {\n if (!state.components.valueColor.selectorStates.length) {\n return new Set<string>();\n }\n const sourceId = state.components.valueColor.selectorStates[0].selectedSource;\n const spec = await store.pFrameProvider.getColumnSpecById(columnOrAxisIdFromString(sourceId));\n if (!spec) {\n return new Set<string>();\n }\n return new Set(spec.axesSpec.map((s) => AxisId.fromAxisSpec(s).toCanonicalString()))\n }\n\n async createDataByColumns(store: DataStore, state: BubbleUIState): Promise<PlotDataAndSettings['data']> {\n const valueColorColumnIdString = state.components.valueColor.selectorStates[0]?.selectedSource;\n const valueSizeColumnIdString = state.components.valueSize.selectorStates[0]?.selectedSource;\n if (!valueColorColumnIdString || !valueSizeColumnIdString) {\n throw Error('Value column is not valid');\n }\n const valueColorColumnId = columnOrAxisIdFromString(valueColorColumnIdString);\n const valueSizeColumnId = columnOrAxisIdFromString(valueSizeColumnIdString);\n if ((!valueColorColumnId || !valueSizeColumnId) || !isColumnId(valueColorColumnId) && !isColumnId(valueSizeColumnId)) {\n throw Error('Value column is not valid');\n }\n const dataByColumns: DataByColumns = {\n type: 'columns',\n id: canonicalize(state.components) ?? '',\n values: {},\n };\n\n const linkerMap = await createLinkerMap(store);\n\n const filterSelectedStates = [\n ...state.components.filters.selectorStates,\n ...state.components.tabBy.selectorStates\n ]\n // filters for column/axes data requests\n const filters = getFiltersFromStates(filterSelectedStates);\n const filterColumns = filterSelectedStates.map(s => columnOrAxisIdFromString(s.selectedSource)).filter(isColumnId);\n\n const primaryColumns = ([valueColorColumnId, valueSizeColumnId]).filter(isColumnId);\n const parentSources = primaryColumns.map((v) => v.toCanonicalString());\n const parentAxesList = await getAxesSpecsFromSources(store, parentSources);\n const inputs = [\n state.components.facetBy,\n state.components.x,\n state.components.y,\n state.components.tooltipContent\n ];\n const secondarySources: (ColumnId | AxisId)[] = []; // primary sources are the only value column\n const primarySourcesFixedAxes:{idx: number, value: PValue}[][] = primaryColumns.map(() => []);\n const secondarySourcesFixedAxes:{idx: number, value: PValue}[][] = [];\n const linkerColumns:ColumnId[] = [];\n\n for (const {selectedSource, fixedAxes} of filterSelectedStates) {\n linkerColumns.push(...await getLinkerColumnsForSource(\n store,\n linkerMap,\n parentAxesList,\n selectedSource,\n fixedAxes\n ));\n primarySourcesFixedAxes.push(\n (fixedAxes ?? []).map(({axisIdx, axisValue}) => ({idx: axisIdx, value: axisValue as PValue}))\n );\n }\n\n for (const input of inputs) {\n for (const {selectedSource, fixedAxes} of input.selectorStates) {\n secondarySources.push(columnOrAxisIdFromString(selectedSource)!);\n secondarySourcesFixedAxes.push(\n (fixedAxes ?? []).map(({axisIdx, axisValue}) => ({idx: axisIdx, value: axisValue as PValue}))\n );\n linkerColumns.push(...await getLinkerColumnsForSource(\n store,\n linkerMap,\n parentAxesList,\n selectedSource,\n fixedAxes\n ));\n const labelsColumnId = await getColumnOrAxisValueLabelsId(store, selectedSource, parentSources);\n if (labelsColumnId) {\n secondarySources.push(labelsColumnId);\n }\n }\n }\n\n const data = await store.pFrameProvider.getTableOuterJoin(\n [...primaryColumns, ...linkerColumns, ...filterColumns],\n secondarySources,\n filters,\n true,\n primarySourcesFixedAxes,\n secondarySourcesFixedAxes\n );\n\n secondarySources.forEach(item => {\n const key = item.toCanonicalString();\n dataByColumns.values[key] = isColumnId(item)\n ? data.columnsData[key]\n : data.axesData[key];\n });\n dataByColumns.values[valueColorColumnIdString] = isColumnId(valueColorColumnId)\n ? data.columnsData[valueColorColumnIdString]\n : data.axesData[valueColorColumnIdString]\n dataByColumns.values[valueSizeColumnIdString] = isColumnId(valueSizeColumnId)\n ? data.columnsData[valueSizeColumnIdString]\n : data.axesData[valueSizeColumnIdString]\n\n const xAxes = state.components.x.selectorStates.map(state => state.selectedSource);\n const xKey = xAxes.join(', ');\n const xAxesLabeled = await Promise.all(xAxes.map(\n async id => (await getColumnOrAxisValueLabelsId(store, id, parentSources))?.toCanonicalString() ?? id,\n ));\n dataByColumns.values[xKey] = getMultiSourceColumn(data, xAxes);\n dataByColumns.values.xLabels = getMultiSourceColumn(data, xAxesLabeled);\n\n // y column should contain yGroup axes\n const yAxes = state.components.y.selectorStates.map(state => state.selectedSource);\n const yKey = yAxes.join(', ');\n const yAxesLabeled = await Promise.all(yAxes.map(\n async id => (await getColumnOrAxisValueLabelsId(store, id, parentSources))?.toCanonicalString() ?? id,\n ));\n dataByColumns.values[yKey] = getMultiSourceColumn(data, yAxes);\n dataByColumns.values.yLabels = getMultiSourceColumn(data, yAxesLabeled);\n\n return {byColumns: dataByColumns};\n }\n\n async createChartSettings(store: DataStore, state: BubbleUIState): Promise<Record<string, unknown>> {\n const valueColorColumnIdString = state.components.valueColor.selectorStates[0]?.selectedSource;\n const valueSizeColumnIdString = state.components.valueSize.selectorStates[0]?.selectedSource;\n if (!valueColorColumnIdString || !valueSizeColumnIdString) {\n throw Error('Value column is not valid');\n }\n const valueColorColumnId = columnOrAxisIdFromString(valueColorColumnIdString);\n const valueSizeColumnId = columnOrAxisIdFromString(valueSizeColumnIdString);\n if (!isColumnId(valueColorColumnId) && !isColumnId(valueSizeColumnId)) {\n throw Error('Value column is not valid');\n }\n\n const parentSources = ([valueColorColumnId, valueSizeColumnId]).filter(isColumnId).map((v) => v.toCanonicalString());\n const valueColor = {\n type: 'column',\n value: valueColorColumnIdString,\n label: await getColumnOrAxisLabel(store, valueColorColumnIdString, []),\n };\n const valueSize = {\n type: 'column',\n value: valueSizeColumnIdString,\n label: await getColumnOrAxisLabel(store, valueSizeColumnIdString, []),\n };\n const xAxes = state.components.x.selectorStates.map(({selectedSource}) => selectedSource)\n const xKey = xAxes.join(', ');\n\n const yAxes = state.components.y.selectorStates.map(({selectedSource}) => selectedSource)\n const yKey = yAxes.join(', ');\n\n const facetBy = await Promise.all(state.components.facetBy.selectorStates.map(async selectorState => ({\n type: 'column',\n value:\n (await getColumnOrAxisValueLabelsId(store, selectorState.selectedSource, parentSources))?.toCanonicalString() ??\n selectorState.selectedSource,\n })));\n\n const xAxisTitle = (await Promise.all(state.components.x.selectorStates\n .map(state => getColumnOrAxisLabel(store, state.selectedSource, parentSources))))\n .join(', ');\n const yAxisTitle = (await Promise.all(state.components.y.selectorStates\n .map(state => getColumnOrAxisLabel(store, state.selectedSource, parentSources))))\n .join(', ');\n\n const tooltipContent = await Promise.all(\n state.components.tooltipContent.selectorStates.map(async selectorState => {\n const source = selectorState.selectedSource;\n const spec = await getColumnOrAxisSpec(store, source, parentSources);\n return {\n type: 'column',\n label: (await getColumnOrAxisLabel(store, source, parentSources)) || source,\n value: source,\n valueLabels:\n (await getColumnOrAxisValueLabelsId(store, source, parentSources))?.toCanonicalString() ??\n source,\n format: spec?.annotations?.[FORMAT] ?? '.0%'\n };\n })\n );\n\n return {\n type: 'bubble',\n valueColor: valueColor,\n valueSize: valueSize,\n xColumn: {\n type: 'column',\n value: xKey,\n label: xAxisTitle,\n valueLabels: 'xLabels'\n },\n yColumn: {\n type: 'column',\n value: yKey,\n label: yAxisTitle,\n valueLabels: 'yLabels'\n },\n facetBy,\n tooltips: {\n show: true,\n content: tooltipContent\n }\n };\n }\n}\n"],"names":["InitialBubbleState","getMultiSourceColumn","data","selectedSources","selectedIds","str","columnOrAxisIdFromString","n","result","i","value","id","key","isColumnId","BubbleStateController","ControllerBase","ComponentController","checkSourceBySpecForFilters","__publicField","store","state","sourceId","spec","s","AxisId","valueColorColumnIdString","_a","valueSizeColumnIdString","_b","valueColorColumnId","valueSizeColumnId","dataByColumns","canonicalize","linkerMap","createLinkerMap","filterSelectedStates","filters","getFiltersFromStates","filterColumns","primaryColumns","parentSources","v","parentAxesList","getAxesSpecsFromSources","inputs","secondarySources","primarySourcesFixedAxes","secondarySourcesFixedAxes","linkerColumns","selectedSource","fixedAxes","getLinkerColumnsForSource","axisIdx","axisValue","input","labelsColumnId","getColumnOrAxisValueLabelsId","item","xAxes","xKey","xAxesLabeled","yAxes","yKey","yAxesLabeled","valueColor","getColumnOrAxisLabel","valueSize","facetBy","selectorState","xAxisTitle","yAxisTitle","tooltipContent","source","getColumnOrAxisSpec","FORMAT"],"mappings":"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","x_google_ignoreList":[0]}
|