@milaboratories/graph-maker 1.1.166 → 1.1.167
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/constantsCommon.d.ts +0 -9
- package/dist/GraphMaker/constantsCommon.d.ts.map +1 -1
- package/dist/GraphMaker/constantsCommon.js +74 -81
- package/dist/GraphMaker/constantsCommon.js.map +1 -1
- package/dist/GraphMaker/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js +8 -2
- package/dist/GraphMaker/forms/AxesSettingsForm/DiscreteAxesSettingsForm.vue.js.map +1 -1
- package/dist/GraphMaker/forms/DataMappingForm/DiscreteForm.vue.js +26 -20
- package/dist/GraphMaker/forms/DataMappingForm/DiscreteForm.vue.js.map +1 -1
- package/dist/GraphMaker/forms/LayersForm/Layer/scatterplot/Scatter.vue.d.ts.map +1 -1
- package/dist/GraphMaker/forms/LayersForm/Layer/scatterplot/Scatter.vue.js +37 -31
- package/dist/GraphMaker/forms/LayersForm/Layer/scatterplot/Scatter.vue.js.map +1 -1
- package/dist/GraphMaker/forms/LayersForm/Layer/scatterplot-umap/Scatter.vue.js +30 -24
- package/dist/GraphMaker/forms/LayersForm/Layer/scatterplot-umap/Scatter.vue.js.map +1 -1
- package/dist/GraphMaker/forms/StatisticsForm/DiscreteStatisticsForm.vue.js +33 -27
- package/dist/GraphMaker/forms/StatisticsForm/DiscreteStatisticsForm.vue.js.map +1 -1
- package/dist/GraphMaker/index.vue.js +8 -2
- package/dist/GraphMaker/index.vue.js.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.js +22 -16
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeBubbleSettings.js.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.js +17 -11
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeDiscreteSettings.js.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.js +26 -20
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeHeatmapSettings.js.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeHistogramSettings.js +29 -23
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeHistogramSettings.js.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.d.ts.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.js +83 -68
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotSettings.js.map +1 -1
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js +25 -19
- package/dist/GraphMaker/utils/createChartSettingsForRender/composeScatterplotUmapSettings.js.map +1 -1
- package/dist/GraphMaker/utils/getUsedAesInMapping.js +37 -31
- package/dist/GraphMaker/utils/getUsedAesInMapping.js.map +1 -1
- package/dist/GraphMaker/utils/loadDefaultSources.d.ts.map +1 -1
- package/dist/GraphMaker/utils/loadDefaultSources.js +36 -31
- package/dist/GraphMaker/utils/loadDefaultSources.js.map +1 -1
- package/dist/_virtual/stringify.js +5 -0
- package/dist/_virtual/stringify.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js +106 -107
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js +120 -121
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ControllerBase.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js +83 -84
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/bubble.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/dendro.js +4 -4
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/discrete.js +11 -11
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/heatmap.js +123 -124
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/heatmap.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/histogram.js +8 -8
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js +88 -89
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot-umap.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js +103 -105
- package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/controllersByChartType/scatterplot.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/spec.js +148 -119
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/spec.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/dist/components/PlDataTable.js +4 -4
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/dist/render/util/label.js +5 -5
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/drivers/blob.js +8 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/drivers/blob.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/spec.js +182 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/spec.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/errors.js +18 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/errors.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/json.js +12 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/json.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/plid.js +7 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/plid.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/ref.js +8 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/ref.js.map +1 -0
- package/dist/node_modules/@milaboratories/pf-plots/dist/pframe/ColumnsProvider.js +105 -111
- package/dist/node_modules/@milaboratories/pf-plots/dist/pframe/ColumnsProvider.js.map +1 -1
- package/dist/node_modules/@milaboratories/pf-plots/dist/utils.js +158 -163
- package/dist/node_modules/@milaboratories/pf-plots/dist/utils.js.map +1 -1
- package/dist/node_modules/@milaboratories/pl-error-like/dist/error_like_shape.js +36 -0
- package/dist/node_modules/@milaboratories/pl-error-like/dist/error_like_shape.js.map +1 -0
- package/dist/node_modules/@milaboratories/pl-model-common/dist/drivers/blob.js +8 -0
- package/dist/node_modules/@milaboratories/pl-model-common/dist/drivers/blob.js.map +1 -0
- package/dist/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/spec.js +52 -0
- package/dist/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/spec.js.map +1 -0
- package/dist/node_modules/@milaboratories/pl-model-common/dist/plid.js +7 -0
- package/dist/node_modules/@milaboratories/pl-model-common/dist/plid.js.map +1 -0
- package/dist/node_modules/@milaboratories/pl-model-common/dist/ref.js +8 -0
- package/dist/node_modules/@milaboratories/pl-model-common/dist/ref.js.map +1 -0
- package/dist/node_modules/@platforma-sdk/model/dist/render/util/label.js +16 -0
- package/dist/node_modules/@platforma-sdk/model/dist/render/util/label.js.map +1 -0
- package/dist/node_modules/json-stringify-safe/stringify.js +20 -0
- package/dist/node_modules/json-stringify-safe/stringify.js.map +1 -0
- package/dist/node_modules/zod/lib/index.js +2978 -0
- package/dist/node_modules/zod/lib/index.js.map +1 -0
- package/package.json +3 -3
- package/dist/node_modules/@milaboratories/pf-plots/dist/constants.js +0 -18
- package/dist/node_modules/@milaboratories/pf-plots/dist/constants.js.map +0 -1
package/dist/node_modules/@milaboratories/pf-plots/dist/controllers/ComponentController.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentController.js","sources":["../../../../../../node_modules/@milaboratories/pf-plots/src/controllers/ComponentController.ts"],"sourcesContent":["import { getNormalizedAxesList, isLabelColumn } from '@platforma-sdk/model';\nimport type {\n ColumnData,\n ComponentGuideSimple,\n ComponentState,\n InputState,\n SelectorState,\n SelectorStateFilter,\n SelectorStateSimple,\n SourceOption,\n} from '../common';\nimport {\n COLUMN_LABEL_KEY,\n DISCRETE_FILTER_KEY,\n IS_LINKER_COLUMN,\n SUBSET_FILTER_KEY,\n} from '../constants';\nimport type { DataStore } from '../store';\nimport { AxesSet, ColumnId, ColumnOrAxisIdString } from '../spec';\nimport { AxisId, columnOrAxisIdFromString, isColumnId } from '../spec';\nimport { AxisSpec, LinkerMap, PColumnSpec, ValueType } from '@milaboratories/pl-model-common';\nimport { axisIsNonHomogenous, getColumnOrAxisLabel, getNotAllowedAxes, getStateCopy, MultipliesByMap } from '../utils';\n\nconst isLinkerColumn = (columnSpec: PColumnSpec) => columnSpec?.annotations?.[IS_LINKER_COLUMN] === 'true';\n\ninterface ComponentControllerSettings {\n isDataComponent: boolean; // X, Y, Data source etc.\n multipleSelectors: boolean; // more than 1 selected column in input\n required: boolean;\n homogeneous: boolean;\n axesAllowed: boolean;\n columnsAllowed: boolean;\n columnsWithExtraAxesAllowed: boolean; // can contain column with extra axes with fixed values\n dimensionConsumer: boolean; // remove extra dimension from data-mapping after selecting a heterogeneous axis\n}\n\ninterface FieldControllerOptions<State extends InputState, Field extends keyof State['components']> {\n componentName: Field;\n allowedTypes: ValueType[];\n checkSourceBySpec?: (spec: AxisSpec | PColumnSpec, state: State) => boolean; // for more complicated logic than type is in allowed types and annotation exists\n annotations?: Record<string, string>;\n parentComponents?: (keyof State['components'])[];\n dependsOn?: (keyof State['components'])[];\n strictlyDependsOnParents?: boolean;\n ignoredOptionIds?: string[];\n settings: Partial<ComponentControllerSettings>;\n}\n\nexport class ComponentController<State extends InputState, Field extends keyof State['components']> {\n private static DefaultSettings: ComponentControllerSettings = {\n isDataComponent: false,\n multipleSelectors: false,\n required: false,\n homogeneous: false,\n axesAllowed: false,\n columnsAllowed: true,\n columnsWithExtraAxesAllowed: true,\n dimensionConsumer: false,\n };\n\n readonly componentName: Field;\n readonly allowedTypes: ValueType[];\n readonly settings: ComponentControllerSettings;\n private readonly dependsOn: (keyof State['components'])[];\n private readonly parentComponents: (keyof State['components'])[];\n private readonly strictlyDependsOnParents: boolean;\n private readonly annotations: Record<string, string>;\n private readonly checkSourceBySpec?: (spec: AxisSpec | PColumnSpec, state: State) => boolean;\n\n constructor({\n componentName,\n allowedTypes,\n settings,\n strictlyDependsOnParents,\n dependsOn = [],\n parentComponents = [],\n annotations = {},\n checkSourceBySpec,\n }: FieldControllerOptions<State, Field>) {\n this.componentName = componentName;\n this.allowedTypes = [...allowedTypes];\n this.settings = { ...ComponentController.DefaultSettings, ...settings };\n this.dependsOn = [...dependsOn];\n this.parentComponents = [...parentComponents]; // corresponding data components for meta or X for Y in scatterplot\n this.strictlyDependsOnParents = strictlyDependsOnParents ?? true; // meta-inputs are strictly-depending on parents, X by Y (Y by X) - don't\n this.annotations = { ...annotations };\n if (checkSourceBySpec) {\n this.checkSourceBySpec = checkSourceBySpec;\n }\n }\n\n get isRequired(): boolean {\n return this.settings.required;\n }\n\n get isDimensionsConsumer(): boolean {\n return this.settings.dimensionConsumer;\n }\n\n addSelected(state: State, selectorState: SelectorStateSimple | SelectorStateFilter) {\n const nextState = getStateCopy(state);\n nextState.components[this.componentName].selectorStates.push(selectorState as SelectorStateFilter);\n\n // ***\n // here should be logic for possibly parent qualifications updating\n // ***\n\n return nextState;\n }\n\n deleteSelected(state: State, selectedSourceStr: ColumnOrAxisIdString) {\n const nextState = getStateCopy(state);\n // ***\n // here should be logic for removing unnecessary qualifications (it can appear when some sources are deleted)\n // ***\n nextState.components[this.componentName].selectorStates = (\n nextState.components[this.componentName].selectorStates as SelectorState[]\n ).filter(item => item.selectedSource !== selectedSourceStr);\n return nextState;\n }\n\n getParentSelectedSources(state: State): (ColumnId | AxisId)[] {\n const selectedSources = this.parentComponents.reduce((res: (ColumnId | AxisId)[], item) => {\n const selectedHere = state.components[item].selectorStates.map(s =>\n columnOrAxisIdFromString(s.selectedSource)\n );\n res.push(...selectedHere);\n return res;\n }, []);\n\n // ***\n // consider parent qualifications without selected here\n // ***\n return selectedSources;\n }\n\n async getParentsAxes(store: DataStore, state: State) {\n const parentSelectedSources = this.getParentSelectedSources(state);\n const parentAxes = new Map<ColumnOrAxisIdString, { parentSource: ColumnOrAxisIdString, spec: AxisSpec }>();\n for (const source of parentSelectedSources) {\n if (isColumnId(source)) {\n const columnSpec = await store.pFrameProvider.getColumnSpecById(source);\n for (const spec of columnSpec?.axesSpec ?? []) {\n const id = AxisId.fromAxisSpec(spec);\n const idStr = id.toCanonicalString();\n if (parentAxes.has(idStr)) {\n continue;\n }\n parentAxes.set(idStr, { parentSource: source.toCanonicalString(), spec });\n }\n }\n }\n\n return parentAxes;\n }\n\n async getParentAndHangingAxes(store: DataStore, state: State, linkerMap: LinkerMap, multipliesByMap: MultipliesByMap): Promise<{\n parentsAxes: AxesSet,\n hangingAxes: AxesSet,\n }> {\n const parentsAxes = await this.getParentsAxes(store, state);\n const hangingAxes: AxesSet = new Map();\n\n if (!this.settings.isDataComponent) {\n const thisState: ComponentState = state.components[this.componentName];\n const selectedHereSources = thisState.selectorStates.map((v) => v.selectedSource);\n for (const source of selectedHereSources) {\n const id = columnOrAxisIdFromString(source);\n if (!isColumnId(id)) {\n continue;\n }\n const columnSpec = await store.pFrameProvider.getColumnSpecById(id);\n if (!columnSpec) {\n continue;\n }\n const extraAxesSpecs = getNotAllowedAxes(columnSpec, Array.from(parentsAxes.values()).map(v => v.spec), linkerMap, multipliesByMap);\n\n for (const spec of extraAxesSpecs) {\n hangingAxes.set(AxisId.fromAxisSpec(spec).toCanonicalString(), { parentSource: source, spec });\n }\n }\n }\n\n return { parentsAxes, hangingAxes };\n }\n\n /** Get axes to check available columns compatibility: all parents axes + available with these parent axes linker axes */\n getColumnSourceAxes(\n allParentsAndHangingAxes: Record<keyof State['components'], { parentsAxes: AxesSet, hangingAxes: AxesSet }>,\n linkerMap: LinkerMap,\n multipliesByMap: MultipliesByMap,\n ): AxesSet {\n const result = new Map();\n const { parentsAxes } = allParentsAndHangingAxes[this.componentName];\n\n for (const v of parentsAxes) {\n result.set(...v);\n }\n\n if (this.settings.isDataComponent) {\n return result;\n }\n\n // normalized list concider axes parents (not component parents)\n const normalizedAxes = getNormalizedAxesList(Array.from(parentsAxes.values()).map((v) => v.spec));\n const axesAvailableWithLinkers = getNormalizedAxesList(linkerMap.getReachableByLinkersAxesFromAxes(normalizedAxes));\n\n for (const axisSpec of axesAvailableWithLinkers) {\n const key = LinkerMap.getLinkerKeyFromAxisSpec(axisSpec);\n const linkerRecord = linkerMap.data.get(key);\n const linked = Array.from(linkerRecord?.linkWith.keys() ?? []);\n const linkerColumn = linkerRecord?.linkWith.get(linked[0]);\n\n if (linkerColumn) {\n const axisId = AxisId.fromAxisSpec(axisSpec).toCanonicalString();\n const linkerColumnId = new ColumnId({ name: linkerColumn.columnId, type: linkerColumn.spec.valueType }).toCanonicalString();\n result.set(axisId, { parentSource: linkerColumnId, spec: axisSpec });\n }\n }\n\n for (const [id] of parentsAxes) {\n const multipliesByNode = multipliesByMap.get(id);\n const multipliesByKeys = Array.from(multipliesByNode?.keys() ?? []);\n if (multipliesByNode && multipliesByKeys.length) {\n for (const key of multipliesByKeys) {\n const el = multipliesByNode.get(key)!;\n const axisId = AxisId.fromAxisSpec(el.spec).toCanonicalString()\n result.set(axisId, { parentSource: el.parentSource, spec: el.spec });\n }\n }\n }\n\n return result;\n }\n\n /** Allowed: all axes from parent (data) inputs + hanging axes from another (not data) inputs + axes from linkers;\n * these are all axes that can be in a compatible columns + hanging axes.\n */\n getAllowedAxes(\n allParentsAndHangingAxes: Record<keyof State['components'], { parentsAxes: AxesSet, hangingAxes: AxesSet }>,\n linkerMap: LinkerMap,\n multipliesByMap: MultipliesByMap,\n ): AxesSet {\n const result = this.getColumnSourceAxes(allParentsAndHangingAxes, linkerMap, multipliesByMap);\n\n for (const [input, data] of Object.entries(allParentsAndHangingAxes)) {\n if (input === this.componentName && !this.settings.multipleSelectors) {\n continue;\n }\n for (const v of data.hangingAxes) {\n result.set(...v);\n }\n }\n return result;\n }\n\n checkStateConsistency(state: State, options: SourceOption[]) {\n const thisState: ComponentState = state.components[this.componentName];\n\n return thisState.selectorStates.reduce((res, v) => {\n res[v.selectedSource] = options.some(op => op.value === v.selectedSource);\n return res;\n }, {} as Record<string, boolean>);\n }\n\n\n async getOptions(\n store: DataStore,\n state: State,\n linkerMap: LinkerMap,\n multipliesByMap: MultipliesByMap,\n allParentAndHangingAxes: Record<keyof State['components'], { parentsAxes: AxesSet, hangingAxes: AxesSet }>, // hanging axes from all the inputs\n dataColumnPredicate: (spec: PColumnSpec) => boolean,\n ignoredNamesSet: Set<string> = new Set(),\n fixedSelectedSet: Set<ColumnOrAxisIdString> = new Set()\n ): Promise<ComponentGuideSimple> {\n const multipleSelectors = this.settings.multipleSelectors;\n const required = this.settings.required;\n const optionsInfo = new Map();\n\n if (this.dependsOn.length && this.dependsOn.some(dep => state.components[dep].selectorStates.length === 0)) {\n return { multipleSelectors, required, stateConsistency: this.checkStateConsistency(state, []), options: [], optionsInfo };\n }\n\n if (\n this.strictlyDependsOnParents &&\n !this.settings.isDataComponent &&\n this.parentComponents.some(name => state.components[name].selectorStates.length === 0)\n ) {\n return { multipleSelectors, required, stateConsistency: this.checkStateConsistency(state, []), options: [], optionsInfo };\n }\n\n const options: SourceOption[] = [];\n if (this.settings.axesAllowed) {\n const allowedAxes = this.getAllowedAxes(allParentAndHangingAxes, linkerMap, multipliesByMap);\n for (const [idStr, { spec, parentSource }] of allowedAxes.entries()) {\n const id = columnOrAxisIdFromString(idStr) as AxisId;\n\n const isNonHomogenous = axisIsNonHomogenous(spec);\n\n const typeOK = this.allowedTypes.includes(spec.type);\n const annotationsOK = Object.entries(this.annotations).every(\n ([k, v]) => spec.annotations?.[k] === v\n );\n const checkBySpecOK = this.checkSourceBySpec ? this.checkSourceBySpec(spec, state) : true;\n const axisNatureOK = !this.settings.homogeneous || !isNonHomogenous;\n const ignored = ignoredNamesSet.has(id.name) || fixedSelectedSet.has(idStr);\n\n optionsInfo.set(idStr, {\n kind: 'axis',\n name: spec.name,\n label: await getColumnOrAxisLabel(store, idStr, [parentSource]),\n type: spec.type,\n mustBeConsumed: false,\n dividable: false,\n spec,\n annotations: spec.annotations,\n isNonHomogenous,\n isSubsetFilter: spec.annotations?.[SUBSET_FILTER_KEY] === 'true',\n isDiscreteFilter: spec.type === 'String' || spec.annotations?.[DISCRETE_FILTER_KEY] === 'true',\n parentSources: [parentSource],\n });\n\n if (typeOK && annotationsOK && checkBySpecOK && axisNatureOK && !ignored) {\n options.push({ value: idStr });\n }\n }\n }\n\n if (this.settings.columnsAllowed) {\n const allowedColumns = await store.pFrameProvider.getColumns([], false, this.allowedTypes, undefined, this.annotations);\n const strictlyCompatible = !this.settings.columnsWithExtraAxesAllowed && this.strictlyDependsOnParents;\n const columnSourceAxes = this.getColumnSourceAxes(allParentAndHangingAxes, linkerMap, multipliesByMap);\n\n for (const columnId of allowedColumns) {\n const columnIdString = columnId.toCanonicalString();\n\n const columnSpec = await store.pFrameProvider.getColumnSpecById(columnId);\n if (!columnSpec) {\n continue;\n }\n const parentsAxes = allParentAndHangingAxes[this.componentName].parentsAxes;\n const columnAxesIds = columnSpec.axesSpec.map((spec) => AxisId.fromAxisSpec(spec).toCanonicalString());\n if (\n // do not add to available options label columns, or columns that are not fit by custom spec condition, or columns that are not fit by condition for data inputs\n isLabelColumn(columnSpec) || isLinkerColumn(columnSpec) ||\n (this.checkSourceBySpec && !this.checkSourceBySpec(columnSpec, state)) ||\n (this.settings.isDataComponent && !dataColumnPredicate(columnSpec)) ||\n strictlyCompatible && columnSourceAxes.size && columnAxesIds.some((id) => !columnSourceAxes.has(id)) ||\n parentsAxes.size && !(columnAxesIds.some((id) => parentsAxes.has(id)) || columnAxesIds.every((id) => columnSourceAxes.has(id)))\n ) {\n continue;\n }\n\n const columnInfo: ColumnData = {\n kind: 'column',\n name: columnSpec.name,\n label: columnSpec.annotations?.[COLUMN_LABEL_KEY] ?? columnSpec.name,\n type: columnSpec.valueType,\n spec: columnSpec,\n annotations: columnSpec.annotations,\n isSubsetFilter: columnSpec.annotations?.[SUBSET_FILTER_KEY] === 'true',\n isDiscreteFilter:\n columnSpec.valueType === 'String' ||\n columnSpec.annotations?.[DISCRETE_FILTER_KEY] === 'true'\n };\n optionsInfo.set(columnIdString, columnInfo);\n\n const ignored = ignoredNamesSet.has(columnId.name) || fixedSelectedSet.has(columnIdString);\n if (!ignored) {\n options.push({ value: columnIdString });\n }\n }\n }\n return {\n multipleSelectors,\n required,\n stateConsistency: this.checkStateConsistency(state, options),\n options,\n optionsInfo\n };\n }\n}\n"],"names":["isLinkerColumn","columnSpec","_a","IS_LINKER_COLUMN","_ComponentController","componentName","allowedTypes","settings","strictlyDependsOnParents","dependsOn","parentComponents","annotations","checkSourceBySpec","__publicField","state","selectorState","nextState","getStateCopy","selectedSourceStr","item","res","selectedHere","s","columnOrAxisIdFromString","store","parentSelectedSources","parentAxes","source","isColumnId","spec","idStr","AxisId","linkerMap","multipliesByMap","parentsAxes","hangingAxes","selectedHereSources","v","id","extraAxesSpecs","getNotAllowedAxes","allParentsAndHangingAxes","result","normalizedAxes","getNormalizedAxesList","axesAvailableWithLinkers","axisSpec","key","LinkerMap","linkerRecord","linked","linkerColumn","axisId","linkerColumnId","ColumnId","multipliesByNode","multipliesByKeys","el","input","data","options","op","allParentAndHangingAxes","dataColumnPredicate","ignoredNamesSet","fixedSelectedSet","multipleSelectors","required","optionsInfo","dep","name","allowedAxes","parentSource","isNonHomogenous","axisIsNonHomogenous","typeOK","annotationsOK","k","checkBySpecOK","axisNatureOK","ignored","getColumnOrAxisLabel","SUBSET_FILTER_KEY","_b","DISCRETE_FILTER_KEY","allowedColumns","strictlyCompatible","columnSourceAxes","columnId","columnIdString","columnAxesIds","isLabelColumn","columnInfo","_c","COLUMN_LABEL_KEY","_d","_e","ComponentController"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"ComponentController.js","sources":["../../../../../../node_modules/@milaboratories/pf-plots/src/controllers/ComponentController.ts"],"sourcesContent":["import { getNormalizedAxesList, isLabelColumn } from '@platforma-sdk/model';\nimport type {\n ColumnData,\n ComponentGuideSimple,\n ComponentState,\n InputState,\n SelectorState,\n SelectorStateFilter,\n SelectorStateSimple,\n SourceOption,\n} from '../common';\nimport type { DataStore } from '../store';\nimport { AxesSet, ColumnId, ColumnOrAxisIdString } from '../spec';\nimport { AxisId, columnOrAxisIdFromString, isColumnId } from '../spec';\nimport { Annotation, AxisSpec, LinkerMap, PColumnSpec, readAnnotation, ValueType } from '@milaboratories/pl-model-common';\nimport { axisIsNonHomogenous, getColumnOrAxisLabel, getNotAllowedAxes, getStateCopy, MultipliesByMap } from '../utils';\n\nconst isLinkerColumn = (columnSpec: PColumnSpec) => readAnnotation(columnSpec, Annotation.IsLinkerColumn) === 'true';\n\ninterface ComponentControllerSettings {\n isDataComponent: boolean; // X, Y, Data source etc.\n multipleSelectors: boolean; // more than 1 selected column in input\n required: boolean;\n homogeneous: boolean;\n axesAllowed: boolean;\n columnsAllowed: boolean;\n columnsWithExtraAxesAllowed: boolean; // can contain column with extra axes with fixed values\n dimensionConsumer: boolean; // remove extra dimension from data-mapping after selecting a heterogeneous axis\n}\n\ninterface FieldControllerOptions<State extends InputState, Field extends keyof State['components']> {\n componentName: Field;\n allowedTypes: ValueType[];\n checkSourceBySpec?: (spec: AxisSpec | PColumnSpec, state: State) => boolean; // for more complicated logic than type is in allowed types and annotation exists\n annotations?: Record<string, string>;\n parentComponents?: (keyof State['components'])[];\n dependsOn?: (keyof State['components'])[];\n strictlyDependsOnParents?: boolean;\n ignoredOptionIds?: string[];\n settings: Partial<ComponentControllerSettings>;\n}\n\nexport class ComponentController<State extends InputState, Field extends keyof State['components']> {\n private static DefaultSettings: ComponentControllerSettings = {\n isDataComponent: false,\n multipleSelectors: false,\n required: false,\n homogeneous: false,\n axesAllowed: false,\n columnsAllowed: true,\n columnsWithExtraAxesAllowed: true,\n dimensionConsumer: false,\n };\n\n readonly componentName: Field;\n readonly allowedTypes: ValueType[];\n readonly settings: ComponentControllerSettings;\n private readonly dependsOn: (keyof State['components'])[];\n private readonly parentComponents: (keyof State['components'])[];\n private readonly strictlyDependsOnParents: boolean;\n private readonly annotations: Record<string, string>;\n private readonly checkSourceBySpec?: (spec: AxisSpec | PColumnSpec, state: State) => boolean;\n\n constructor({\n componentName,\n allowedTypes,\n settings,\n strictlyDependsOnParents,\n dependsOn = [],\n parentComponents = [],\n annotations = {},\n checkSourceBySpec,\n }: FieldControllerOptions<State, Field>) {\n this.componentName = componentName;\n this.allowedTypes = [...allowedTypes];\n this.settings = { ...ComponentController.DefaultSettings, ...settings };\n this.dependsOn = [...dependsOn];\n this.parentComponents = [...parentComponents]; // corresponding data components for meta or X for Y in scatterplot\n this.strictlyDependsOnParents = strictlyDependsOnParents ?? true; // meta-inputs are strictly-depending on parents, X by Y (Y by X) - don't\n this.annotations = { ...annotations };\n if (checkSourceBySpec) {\n this.checkSourceBySpec = checkSourceBySpec;\n }\n }\n\n get isRequired(): boolean {\n return this.settings.required;\n }\n\n get isDimensionsConsumer(): boolean {\n return this.settings.dimensionConsumer;\n }\n\n addSelected(state: State, selectorState: SelectorStateSimple | SelectorStateFilter) {\n const nextState = getStateCopy(state);\n nextState.components[this.componentName].selectorStates.push(selectorState as SelectorStateFilter);\n\n // ***\n // here should be logic for possibly parent qualifications updating\n // ***\n\n return nextState;\n }\n\n deleteSelected(state: State, selectedSourceStr: ColumnOrAxisIdString) {\n const nextState = getStateCopy(state);\n // ***\n // here should be logic for removing unnecessary qualifications (it can appear when some sources are deleted)\n // ***\n nextState.components[this.componentName].selectorStates = (\n nextState.components[this.componentName].selectorStates as SelectorState[]\n ).filter(item => item.selectedSource !== selectedSourceStr);\n return nextState;\n }\n\n getParentSelectedSources(state: State): (ColumnId | AxisId)[] {\n const selectedSources = this.parentComponents.reduce((res: (ColumnId | AxisId)[], item) => {\n const selectedHere = state.components[item].selectorStates.map(s =>\n columnOrAxisIdFromString(s.selectedSource)\n );\n res.push(...selectedHere);\n return res;\n }, []);\n\n // ***\n // consider parent qualifications without selected here\n // ***\n return selectedSources;\n }\n\n async getParentsAxes(store: DataStore, state: State) {\n const parentSelectedSources = this.getParentSelectedSources(state);\n const parentAxes = new Map<ColumnOrAxisIdString, { parentSource: ColumnOrAxisIdString, spec: AxisSpec }>();\n for (const source of parentSelectedSources) {\n if (isColumnId(source)) {\n const columnSpec = await store.pFrameProvider.getColumnSpecById(source);\n for (const spec of columnSpec?.axesSpec ?? []) {\n const id = AxisId.fromAxisSpec(spec);\n const idStr = id.toCanonicalString();\n if (parentAxes.has(idStr)) {\n continue;\n }\n parentAxes.set(idStr, { parentSource: source.toCanonicalString(), spec });\n }\n }\n }\n\n return parentAxes;\n }\n\n async getParentAndHangingAxes(store: DataStore, state: State, linkerMap: LinkerMap, multipliesByMap: MultipliesByMap): Promise<{\n parentsAxes: AxesSet,\n hangingAxes: AxesSet,\n }> {\n const parentsAxes = await this.getParentsAxes(store, state);\n const hangingAxes: AxesSet = new Map();\n\n if (!this.settings.isDataComponent) {\n const thisState: ComponentState = state.components[this.componentName];\n const selectedHereSources = thisState.selectorStates.map((v) => v.selectedSource);\n for (const source of selectedHereSources) {\n const id = columnOrAxisIdFromString(source);\n if (!isColumnId(id)) {\n continue;\n }\n const columnSpec = await store.pFrameProvider.getColumnSpecById(id);\n if (!columnSpec) {\n continue;\n }\n const extraAxesSpecs = getNotAllowedAxes(columnSpec, Array.from(parentsAxes.values()).map(v => v.spec), linkerMap, multipliesByMap);\n\n for (const spec of extraAxesSpecs) {\n hangingAxes.set(AxisId.fromAxisSpec(spec).toCanonicalString(), { parentSource: source, spec });\n }\n }\n }\n\n return { parentsAxes, hangingAxes };\n }\n\n /** Get axes to check available columns compatibility: all parents axes + available with these parent axes linker axes */\n getColumnSourceAxes(\n allParentsAndHangingAxes: Record<keyof State['components'], { parentsAxes: AxesSet, hangingAxes: AxesSet }>,\n linkerMap: LinkerMap,\n multipliesByMap: MultipliesByMap,\n ): AxesSet {\n const result = new Map();\n const { parentsAxes } = allParentsAndHangingAxes[this.componentName];\n\n for (const v of parentsAxes) {\n result.set(...v);\n }\n\n if (this.settings.isDataComponent) {\n return result;\n }\n\n // normalized list concider axes parents (not component parents)\n const normalizedAxes = getNormalizedAxesList(Array.from(parentsAxes.values()).map((v) => v.spec));\n const axesAvailableWithLinkers = getNormalizedAxesList(linkerMap.getReachableByLinkersAxesFromAxes(normalizedAxes));\n\n for (const axisSpec of axesAvailableWithLinkers) {\n const key = LinkerMap.getLinkerKeyFromAxisSpec(axisSpec);\n const linkerRecord = linkerMap.data.get(key);\n const linked = Array.from(linkerRecord?.linkWith.keys() ?? []);\n const linkerColumn = linkerRecord?.linkWith.get(linked[0]);\n\n if (linkerColumn) {\n const axisId = AxisId.fromAxisSpec(axisSpec).toCanonicalString();\n const linkerColumnId = new ColumnId({ name: linkerColumn.columnId, type: linkerColumn.spec.valueType }).toCanonicalString();\n result.set(axisId, { parentSource: linkerColumnId, spec: axisSpec });\n }\n }\n\n for (const [id] of parentsAxes) {\n const multipliesByNode = multipliesByMap.get(id);\n const multipliesByKeys = Array.from(multipliesByNode?.keys() ?? []);\n if (multipliesByNode && multipliesByKeys.length) {\n for (const key of multipliesByKeys) {\n const el = multipliesByNode.get(key)!;\n const axisId = AxisId.fromAxisSpec(el.spec).toCanonicalString()\n result.set(axisId, { parentSource: el.parentSource, spec: el.spec });\n }\n }\n }\n\n return result;\n }\n\n /** Allowed: all axes from parent (data) inputs + hanging axes from another (not data) inputs + axes from linkers;\n * these are all axes that can be in a compatible columns + hanging axes.\n */\n getAllowedAxes(\n allParentsAndHangingAxes: Record<keyof State['components'], { parentsAxes: AxesSet, hangingAxes: AxesSet }>,\n linkerMap: LinkerMap,\n multipliesByMap: MultipliesByMap,\n ): AxesSet {\n const result = this.getColumnSourceAxes(allParentsAndHangingAxes, linkerMap, multipliesByMap);\n\n for (const [input, data] of Object.entries(allParentsAndHangingAxes)) {\n if (input === this.componentName && !this.settings.multipleSelectors) {\n continue;\n }\n for (const v of data.hangingAxes) {\n result.set(...v);\n }\n }\n return result;\n }\n\n checkStateConsistency(state: State, options: SourceOption[]) {\n const thisState: ComponentState = state.components[this.componentName];\n\n return thisState.selectorStates.reduce((res, v) => {\n res[v.selectedSource] = options.some(op => op.value === v.selectedSource);\n return res;\n }, {} as Record<string, boolean>);\n }\n\n\n async getOptions(\n store: DataStore,\n state: State,\n linkerMap: LinkerMap,\n multipliesByMap: MultipliesByMap,\n allParentAndHangingAxes: Record<keyof State['components'], { parentsAxes: AxesSet, hangingAxes: AxesSet }>, // hanging axes from all the inputs\n dataColumnPredicate: (spec: PColumnSpec) => boolean,\n ignoredNamesSet: Set<string> = new Set(),\n fixedSelectedSet: Set<ColumnOrAxisIdString> = new Set()\n ): Promise<ComponentGuideSimple> {\n const multipleSelectors = this.settings.multipleSelectors;\n const required = this.settings.required;\n const optionsInfo = new Map();\n\n if (this.dependsOn.length && this.dependsOn.some(dep => state.components[dep].selectorStates.length === 0)) {\n return { multipleSelectors, required, stateConsistency: this.checkStateConsistency(state, []), options: [], optionsInfo };\n }\n\n if (\n this.strictlyDependsOnParents &&\n !this.settings.isDataComponent &&\n this.parentComponents.some(name => state.components[name].selectorStates.length === 0)\n ) {\n return { multipleSelectors, required, stateConsistency: this.checkStateConsistency(state, []), options: [], optionsInfo };\n }\n\n const options: SourceOption[] = [];\n if (this.settings.axesAllowed) {\n const allowedAxes = this.getAllowedAxes(allParentAndHangingAxes, linkerMap, multipliesByMap);\n for (const [idStr, { spec, parentSource }] of allowedAxes.entries()) {\n const id = columnOrAxisIdFromString(idStr) as AxisId;\n\n const isNonHomogenous = axisIsNonHomogenous(spec);\n\n const typeOK = this.allowedTypes.includes(spec.type);\n const annotationsOK = Object.entries(this.annotations).every(\n ([k, v]) => spec.annotations?.[k] === v\n );\n const checkBySpecOK = this.checkSourceBySpec ? this.checkSourceBySpec(spec, state) : true;\n const axisNatureOK = !this.settings.homogeneous || !isNonHomogenous;\n const ignored = ignoredNamesSet.has(id.name) || fixedSelectedSet.has(idStr);\n\n optionsInfo.set(idStr, {\n kind: 'axis',\n name: spec.name,\n label: await getColumnOrAxisLabel(store, idStr, [parentSource]),\n type: spec.type,\n mustBeConsumed: false,\n dividable: false,\n spec,\n annotations: spec.annotations,\n isNonHomogenous,\n isSubsetFilter: readAnnotation(spec, Annotation.IsSubset),\n isDiscreteFilter: spec.type === 'String' || readAnnotation(spec, Annotation.IsDiscreteFilter) === 'true',\n parentSources: [parentSource],\n });\n\n if (typeOK && annotationsOK && checkBySpecOK && axisNatureOK && !ignored) {\n options.push({ value: idStr });\n }\n }\n }\n\n if (this.settings.columnsAllowed) {\n const allowedColumns = await store.pFrameProvider.getColumns([], false, this.allowedTypes, undefined, this.annotations);\n const strictlyCompatible = !this.settings.columnsWithExtraAxesAllowed && this.strictlyDependsOnParents;\n const columnSourceAxes = this.getColumnSourceAxes(allParentAndHangingAxes, linkerMap, multipliesByMap);\n\n for (const columnId of allowedColumns) {\n const columnIdString = columnId.toCanonicalString();\n\n const columnSpec = await store.pFrameProvider.getColumnSpecById(columnId);\n if (!columnSpec) {\n continue;\n }\n const parentsAxes = allParentAndHangingAxes[this.componentName].parentsAxes;\n const columnAxesIds = columnSpec.axesSpec.map((spec) => AxisId.fromAxisSpec(spec).toCanonicalString());\n if (\n // do not add to available options label columns, or columns that are not fit by custom spec condition, or columns that are not fit by condition for data inputs\n isLabelColumn(columnSpec) || isLinkerColumn(columnSpec) ||\n (this.checkSourceBySpec && !this.checkSourceBySpec(columnSpec, state)) ||\n (this.settings.isDataComponent && !dataColumnPredicate(columnSpec)) ||\n strictlyCompatible && columnSourceAxes.size && columnAxesIds.some((id) => !columnSourceAxes.has(id)) ||\n parentsAxes.size && !(columnAxesIds.some((id) => parentsAxes.has(id)) || columnAxesIds.every((id) => columnSourceAxes.has(id)))\n ) {\n continue;\n }\n\n const columnInfo: ColumnData = {\n kind: 'column',\n name: columnSpec.name,\n label: readAnnotation(columnSpec, Annotation.Label) ?? columnSpec.name,\n type: columnSpec.valueType,\n spec: columnSpec,\n annotations: columnSpec.annotations,\n isSubsetFilter: readAnnotation(columnSpec, Annotation.IsSubset) === 'true',\n isDiscreteFilter: columnSpec.valueType === 'String' || readAnnotation(columnSpec, Annotation.IsDiscreteFilter) === 'true'\n };\n optionsInfo.set(columnIdString, columnInfo);\n\n const ignored = ignoredNamesSet.has(columnId.name) || fixedSelectedSet.has(columnIdString);\n if (!ignored) {\n options.push({ value: columnIdString });\n }\n }\n }\n return {\n multipleSelectors,\n required,\n stateConsistency: this.checkStateConsistency(state, options),\n options,\n optionsInfo\n };\n }\n}\n"],"names":["isLinkerColumn","columnSpec","readAnnotation","Annotation","_ComponentController","componentName","allowedTypes","settings","strictlyDependsOnParents","dependsOn","parentComponents","annotations","checkSourceBySpec","__publicField","state","selectorState","nextState","getStateCopy","selectedSourceStr","item","res","selectedHere","s","columnOrAxisIdFromString","store","parentSelectedSources","parentAxes","source","isColumnId","spec","idStr","AxisId","linkerMap","multipliesByMap","parentsAxes","hangingAxes","selectedHereSources","v","id","extraAxesSpecs","getNotAllowedAxes","allParentsAndHangingAxes","result","normalizedAxes","getNormalizedAxesList","axesAvailableWithLinkers","axisSpec","key","LinkerMap","linkerRecord","linked","linkerColumn","axisId","linkerColumnId","ColumnId","multipliesByNode","multipliesByKeys","el","input","data","options","op","allParentAndHangingAxes","dataColumnPredicate","ignoredNamesSet","fixedSelectedSet","multipleSelectors","required","optionsInfo","dep","name","allowedAxes","parentSource","isNonHomogenous","axisIsNonHomogenous","typeOK","annotationsOK","k","_a","checkBySpecOK","axisNatureOK","ignored","getColumnOrAxisLabel","allowedColumns","strictlyCompatible","columnSourceAxes","columnId","columnIdString","columnAxesIds","isLabelColumn","columnInfo","ComponentController"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,17 +1,20 @@
|
|
|
1
|
-
import { DISCRETE_VALUES_KEY as E, HIGH_CARDINALITY as D } from "../constants.js";
|
|
2
|
-
import { AxisId as w, columnOrAxisIdFromString as A } from "../spec.js";
|
|
3
|
-
import { getStateCopy as k, getDefaultInfo as O, dataColumnPredicateDefault as B, createLinkerMap as P, createMultipliesByMap as j, getColumnOrAxisValueLabelsId as F } from "../utils.js";
|
|
4
1
|
import "../node_modules/@milaboratories/pl-model-common/dist/drivers/blob.js";
|
|
5
|
-
import "../node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/spec.js";
|
|
2
|
+
import { readAnnotation as I, Annotation as k } from "../node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/spec.js";
|
|
6
3
|
import "../_virtual/canonicalize.js";
|
|
7
4
|
import "../node_modules/@milaboratories/pl-model-common/dist/plid.js";
|
|
8
5
|
import "../node_modules/@milaboratories/pl-model-common/dist/ref.js";
|
|
6
|
+
import { AxisId as b, columnOrAxisIdFromString as A } from "../spec.js";
|
|
7
|
+
import { getStateCopy as O, getDefaultInfo as D, dataColumnPredicateDefault as B, createLinkerMap as E, createMultipliesByMap as P, getColumnOrAxisValueLabelsId as j } from "../utils.js";
|
|
8
|
+
import "../node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/drivers/blob.js";
|
|
9
|
+
import "../node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/drivers/pframe/spec/spec.js";
|
|
10
|
+
import "../node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/plid.js";
|
|
11
|
+
import "../node_modules/@platforma-sdk/model/node_modules/@milaboratories/pl-model-common/dist/ref.js";
|
|
9
12
|
import { deriveLabels as M } from "../node_modules/@platforma-sdk/model/dist/render/util/label.js";
|
|
10
13
|
import "../node_modules/@milaboratories/pl-error-like/dist/error_like_shape.js";
|
|
11
|
-
var
|
|
12
|
-
class
|
|
14
|
+
var F = Object.defineProperty, V = (g, e, t) => e in g ? F(g, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : g[e] = t, w = (g, e, t) => V(g, typeof e != "symbol" ? e + "" : e, t);
|
|
15
|
+
class z {
|
|
13
16
|
constructor(e, t) {
|
|
14
|
-
|
|
17
|
+
w(this, "ignoredOptionIdNames", []), w(this, "dataInputs", []), w(this, "dontAllowUnfilteredHighCardinality", !1), w(this, "allowHangingAxes", !1), this.simpleComponentControllers = e, this.filterComponentControllers = t;
|
|
15
18
|
}
|
|
16
19
|
addSelected(e, t, o) {
|
|
17
20
|
if (e in this.simpleComponentControllers)
|
|
@@ -28,20 +31,20 @@ class W {
|
|
|
28
31
|
throw Error(`Unknown input name: ${String(e)}`);
|
|
29
32
|
}
|
|
30
33
|
changeSelected(e, t, o, r) {
|
|
31
|
-
const
|
|
32
|
-
let
|
|
33
|
-
return a.forEach((
|
|
34
|
-
|
|
35
|
-
}),
|
|
36
|
-
|
|
34
|
+
const s = o.components[e].selectorStates, a = s.filter((i) => !r.find((n) => n.selectedSource === i.selectedSource)), c = r.filter((i) => !s.find((n) => n.selectedSource === i.selectedSource));
|
|
35
|
+
let u = O(o);
|
|
36
|
+
return a.forEach((i) => {
|
|
37
|
+
u = this.deleteSelected(e, t, u, i);
|
|
38
|
+
}), c.forEach((i) => {
|
|
39
|
+
u = this.addSelected(e, u, i);
|
|
37
40
|
}), o.components[e].selectorStates = r.map(
|
|
38
|
-
(
|
|
39
|
-
(
|
|
41
|
+
(i) => o.components[e].selectorStates.find(
|
|
42
|
+
(n) => n.selectedSource === i.selectedSource
|
|
40
43
|
)
|
|
41
|
-
).filter(Boolean),
|
|
44
|
+
).filter(Boolean), u;
|
|
42
45
|
}
|
|
43
46
|
switchDividableAxis(e, t) {
|
|
44
|
-
return
|
|
47
|
+
return O(e);
|
|
45
48
|
}
|
|
46
49
|
createEmptyComponentsGuide(e) {
|
|
47
50
|
return Object.fromEntries(
|
|
@@ -62,7 +65,7 @@ class W {
|
|
|
62
65
|
getEmptyInputGuide(e) {
|
|
63
66
|
return {
|
|
64
67
|
components: this.createEmptyComponentsGuide(e),
|
|
65
|
-
getSourceInfo: (t) =>
|
|
68
|
+
getSourceInfo: (t) => D(t),
|
|
66
69
|
fullOptionsSet: /* @__PURE__ */ new Set(),
|
|
67
70
|
readyData: !1,
|
|
68
71
|
ready: !1,
|
|
@@ -77,14 +80,14 @@ class W {
|
|
|
77
80
|
t.add(r);
|
|
78
81
|
for (const o of Object.keys(this.filterComponentControllers))
|
|
79
82
|
if (this.filterComponentControllers[o].isDimensionsConsumer)
|
|
80
|
-
for (const { selectedSource: r, type:
|
|
81
|
-
|
|
83
|
+
for (const { selectedSource: r, type: s, selectedFilterValues: a } of e.components[o].selectorStates)
|
|
84
|
+
s === "equals" && (a == null ? void 0 : a.length) === 1 && t.add(r);
|
|
82
85
|
return t;
|
|
83
86
|
}
|
|
84
87
|
async getParentAndHangingAxesByInputs(e, t, o, r) {
|
|
85
|
-
const
|
|
86
|
-
for (const [
|
|
87
|
-
a[
|
|
88
|
+
const s = { ...this.simpleComponentControllers, ...this.filterComponentControllers }, a = {};
|
|
89
|
+
for (const [c, u] of Object.entries(s))
|
|
90
|
+
a[c] = await u.getParentAndHangingAxes(e, t, o, r);
|
|
88
91
|
return a;
|
|
89
92
|
}
|
|
90
93
|
/** Depends on chart type. */
|
|
@@ -94,53 +97,50 @@ class W {
|
|
|
94
97
|
/** Axes that go to the "Drag to build the chart" section.
|
|
95
98
|
* If some of them is not moved to 'filters', 'tabBy' or 'facetBy' (dimension reducers) chart can't be rendered */
|
|
96
99
|
markMustBeConsumedAxes(e, t, o, r) {
|
|
97
|
-
var
|
|
98
|
-
const a = this.getConsumedOptionsSet(e),
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
},
|
|
102
|
-
for (const
|
|
103
|
-
a.has(
|
|
104
|
-
this.allowHangingAxes || Object.entries(r).forEach(([
|
|
105
|
-
for (const
|
|
106
|
-
a.has(
|
|
100
|
+
var s;
|
|
101
|
+
const a = this.getConsumedOptionsSet(e), c = (i) => {
|
|
102
|
+
const n = t.get(i);
|
|
103
|
+
n && n.kind === "axis" && (n.mustBeConsumed = !0);
|
|
104
|
+
}, u = this.getMustBeConsumedAxes(e, t);
|
|
105
|
+
for (const i of u)
|
|
106
|
+
a.has(i) || c(i);
|
|
107
|
+
this.allowHangingAxes || Object.entries(r).forEach(([i, { hangingAxes: n }]) => {
|
|
108
|
+
for (const l of n.keys())
|
|
109
|
+
a.has(l) || c(l);
|
|
107
110
|
});
|
|
108
|
-
for (const
|
|
109
|
-
const
|
|
110
|
-
(
|
|
111
|
+
for (const i of o) {
|
|
112
|
+
const n = t.get(i);
|
|
113
|
+
(n == null ? void 0 : n.kind) === "axis" && n.isNonHomogenous && !a.has(i) && c(i);
|
|
111
114
|
}
|
|
112
115
|
if (this.dontAllowUnfilteredHighCardinality) {
|
|
113
|
-
const s = (
|
|
114
|
-
var c;
|
|
115
|
-
return ((c = i == null ? void 0 : i.annotations) == null ? void 0 : c[D]) === "true";
|
|
116
|
-
}, l = ((n = e.components.filters) == null ? void 0 : n.selectorStates.reduce((i, c) => {
|
|
116
|
+
const i = (l) => I(l, k.Graph.Axis.HighCardinality) === "true", n = ((s = e.components.filters) == null ? void 0 : s.selectorStates.reduce((l, m) => {
|
|
117
117
|
var p;
|
|
118
|
-
if (((p =
|
|
119
|
-
return
|
|
120
|
-
const
|
|
121
|
-
return (
|
|
118
|
+
if (((p = m == null ? void 0 : m.selectedFilterValues) == null ? void 0 : p.length) !== 1 && m.type !== "subset")
|
|
119
|
+
return l;
|
|
120
|
+
const d = t.get(m.selectedSource);
|
|
121
|
+
return (d == null ? void 0 : d.kind) === "column" && d.spec.axesSpec.filter(i).forEach((f) => l.add(b.fromAxisSpec(f).toCanonicalString())), (d == null ? void 0 : d.kind) === "axis" && i(d.spec) && l.add(b.fromAxisSpec(d.spec).toCanonicalString()), l;
|
|
122
122
|
}, /* @__PURE__ */ new Set())) ?? /* @__PURE__ */ new Set();
|
|
123
|
-
this.dataInputs.forEach((
|
|
124
|
-
for (const { selectedSource:
|
|
125
|
-
const p = t.get(
|
|
126
|
-
if ((p == null ? void 0 : p.kind) === "column" && p.spec.axesSpec.filter(
|
|
127
|
-
const f =
|
|
128
|
-
|
|
129
|
-
}), (p == null ? void 0 : p.kind) === "axis" &&
|
|
130
|
-
const
|
|
131
|
-
|
|
123
|
+
this.dataInputs.forEach((l) => {
|
|
124
|
+
for (const { selectedSource: m } of e.components[l].selectorStates) {
|
|
125
|
+
const p = t.get(m);
|
|
126
|
+
if ((p == null ? void 0 : p.kind) === "column" && p.spec.axesSpec.filter(i).forEach((d) => {
|
|
127
|
+
const f = b.fromAxisSpec(d).toCanonicalString();
|
|
128
|
+
n.has(f) || c(f);
|
|
129
|
+
}), (p == null ? void 0 : p.kind) === "axis" && i(p.spec)) {
|
|
130
|
+
const d = b.fromAxisSpec(p.spec).toCanonicalString();
|
|
131
|
+
n.has(d) || c(d);
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
134
|
});
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
137
|
setColumnLabels(e, t) {
|
|
138
|
-
const o = [...e].filter((
|
|
138
|
+
const o = [...e].filter((s) => {
|
|
139
139
|
var a;
|
|
140
|
-
return ((a = t.get(
|
|
141
|
-
}), r = M(o, (
|
|
142
|
-
o.forEach((
|
|
143
|
-
t.get(
|
|
140
|
+
return ((a = t.get(s)) == null ? void 0 : a.kind) === "column";
|
|
141
|
+
}), r = M(o, (s) => t.get(s).spec);
|
|
142
|
+
o.forEach((s, a) => {
|
|
143
|
+
t.get(s).label = r[a].label;
|
|
144
144
|
});
|
|
145
145
|
}
|
|
146
146
|
/** Calculates information for data-mapping interface:
|
|
@@ -148,121 +148,120 @@ class W {
|
|
|
148
148
|
* information for every option (label, value type, must be consumed etc),
|
|
149
149
|
* information about full data-mapping state (ready to data loading and rendering or not, contains inconsistency or not) */
|
|
150
150
|
async calculateOptions(e, t, o = [], r = B) {
|
|
151
|
-
const
|
|
152
|
-
for (const [
|
|
153
|
-
const
|
|
151
|
+
const s = this.createEmptyComponentsGuide(t), a = new Set(this.ignoredOptionIdNames), c = new Set(o), u = await E(e), i = await P(e), n = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Set(), m = await this.getParentAndHangingAxesByInputs(e, t, u, i), p = { ...this.simpleComponentControllers, ...this.filterComponentControllers };
|
|
152
|
+
for (const [S, h] of Object.entries(p)) {
|
|
153
|
+
const y = await h.getOptions(
|
|
154
154
|
e,
|
|
155
155
|
t,
|
|
156
|
+
u,
|
|
157
|
+
i,
|
|
156
158
|
m,
|
|
157
|
-
s,
|
|
158
|
-
c,
|
|
159
159
|
r,
|
|
160
160
|
a,
|
|
161
|
-
|
|
161
|
+
c
|
|
162
162
|
);
|
|
163
|
-
for (const
|
|
164
|
-
|
|
165
|
-
for (const
|
|
166
|
-
|
|
167
|
-
|
|
163
|
+
for (const C of y.options)
|
|
164
|
+
l.add(C.value);
|
|
165
|
+
for (const C of y.optionsInfo)
|
|
166
|
+
n.set(...C);
|
|
167
|
+
s[S] = y;
|
|
168
168
|
}
|
|
169
|
-
this.markMustBeConsumedAxes(t,
|
|
170
|
-
const
|
|
169
|
+
this.markMustBeConsumedAxes(t, n, l, m), this.setColumnLabels(l, n);
|
|
170
|
+
const d = this.isConsistent(t, s), f = (S) => n.get(S) ?? D(S);
|
|
171
171
|
return {
|
|
172
|
-
components:
|
|
172
|
+
components: s,
|
|
173
173
|
getSourceInfo: f,
|
|
174
|
-
fullOptionsSet:
|
|
174
|
+
fullOptionsSet: l,
|
|
175
175
|
readyData: this.readyDataInputs(t),
|
|
176
|
-
ready: this.readyForPlotBuilding(t,
|
|
177
|
-
consistent:
|
|
176
|
+
ready: this.readyForPlotBuilding(t, d, l, f),
|
|
177
|
+
consistent: d
|
|
178
178
|
};
|
|
179
179
|
}
|
|
180
|
-
async getUniqueSourceValuesWithLabels(e, t, o, r,
|
|
181
|
-
|
|
182
|
-
const m = (i) => i.sort((c, p) => c.label.localeCompare(p.label, "en", { numeric: !0 })), s = t.getSourceInfo(o), l = (d = s.annotations) == null ? void 0 : d[E];
|
|
180
|
+
async getUniqueSourceValuesWithLabels(e, t, o, r, s, a) {
|
|
181
|
+
const c = (n) => n.sort((l, m) => l.label.localeCompare(m.label, "en", { numeric: !0 })), u = t.getSourceInfo(o), i = I(u.spec, k.DiscreteValues);
|
|
183
182
|
try {
|
|
184
|
-
const
|
|
185
|
-
if (
|
|
186
|
-
const
|
|
187
|
-
return
|
|
183
|
+
const n = i ? JSON.parse(i).map((l) => String(l)) : null;
|
|
184
|
+
if (n) {
|
|
185
|
+
const l = n.map((m) => ({ value: m, label: m }));
|
|
186
|
+
return c(l), { values: l, overflow: !1 };
|
|
188
187
|
}
|
|
189
188
|
} catch {
|
|
190
|
-
console.error(`Parsing error: discrete values annotation ${
|
|
189
|
+
console.error(`Parsing error: discrete values annotation ${i} in ${o}`);
|
|
191
190
|
}
|
|
192
|
-
if (
|
|
193
|
-
const
|
|
194
|
-
let
|
|
195
|
-
if (
|
|
196
|
-
|
|
191
|
+
if (u.kind === "axis") {
|
|
192
|
+
const n = A(o), l = u.parentSources.map(A), m = await j(e, o, u.parentSources);
|
|
193
|
+
let p = [];
|
|
194
|
+
if (m) {
|
|
195
|
+
s && (p = [{
|
|
197
196
|
type: "bySingleColumnV2",
|
|
198
197
|
column: {
|
|
199
198
|
type: "column",
|
|
200
|
-
id:
|
|
199
|
+
id: m.name
|
|
201
200
|
},
|
|
202
201
|
predicate: {
|
|
203
202
|
operator: "StringIContains",
|
|
204
|
-
substring:
|
|
203
|
+
substring: s
|
|
205
204
|
}
|
|
206
|
-
}]), a && (
|
|
205
|
+
}]), a && (p = [{
|
|
207
206
|
type: "bySingleColumnV2",
|
|
208
207
|
column: {
|
|
209
208
|
type: "axis",
|
|
210
|
-
id:
|
|
209
|
+
id: n.toPFrameId()
|
|
211
210
|
},
|
|
212
211
|
predicate: {
|
|
213
212
|
operator: "StringIContains",
|
|
214
213
|
substring: a
|
|
215
214
|
}
|
|
216
215
|
}]);
|
|
217
|
-
const { data:
|
|
218
|
-
for (let
|
|
219
|
-
|
|
220
|
-
return
|
|
216
|
+
const { data: h, axesData: y } = await e.pFrameProvider.getSingleColumnData(m, p), C = y[n.toCanonicalString()], x = [];
|
|
217
|
+
for (let v = 0; v < Math.min(C.length, r ?? C.length); v++)
|
|
218
|
+
x.push({ value: String(C[v]), label: String(h[v]) });
|
|
219
|
+
return c(x), { values: x, overflow: !(r === void 0 || C.length < r) };
|
|
221
220
|
}
|
|
222
|
-
const
|
|
223
|
-
|
|
221
|
+
const d = s ?? a;
|
|
222
|
+
d && (p = [{
|
|
224
223
|
type: "bySingleColumnV2",
|
|
225
224
|
column: {
|
|
226
225
|
type: "axis",
|
|
227
|
-
id:
|
|
226
|
+
id: n.toPFrameId()
|
|
228
227
|
},
|
|
229
228
|
predicate: {
|
|
230
229
|
operator: "StringIContains",
|
|
231
|
-
substring:
|
|
230
|
+
substring: d
|
|
232
231
|
}
|
|
233
232
|
}]);
|
|
234
|
-
const
|
|
235
|
-
return
|
|
233
|
+
const f = await e.pFrameProvider.getAxisUniqueValues(n, [l[0]], r, p), S = f.values.map((h) => ({ value: String(h), label: String(h) }));
|
|
234
|
+
return c(S), { values: S, overflow: f.overflow };
|
|
236
235
|
}
|
|
237
|
-
if (
|
|
238
|
-
const
|
|
236
|
+
if (u.kind === "column") {
|
|
237
|
+
const n = s ?? a, l = A(o), m = n ? [{
|
|
239
238
|
type: "bySingleColumnV2",
|
|
240
239
|
column: {
|
|
241
240
|
type: "column",
|
|
242
|
-
id:
|
|
241
|
+
id: l.name
|
|
243
242
|
},
|
|
244
243
|
predicate: {
|
|
245
244
|
operator: "StringIContains",
|
|
246
|
-
substring:
|
|
245
|
+
substring: n
|
|
247
246
|
}
|
|
248
|
-
}] : [],
|
|
249
|
-
return
|
|
247
|
+
}] : [], p = await e.pFrameProvider.getColumnUniqueValues(l, r, m), d = p.values.map((f) => ({ value: String(f), label: String(f) }));
|
|
248
|
+
return c(d), { values: d, overflow: p.overflow };
|
|
250
249
|
}
|
|
251
250
|
return { values: [], overflow: !1 };
|
|
252
251
|
}
|
|
253
252
|
checkStateConsistency(e, t) {
|
|
254
253
|
const o = /* @__PURE__ */ new Map(), r = { ...this.simpleComponentControllers, ...this.filterComponentControllers };
|
|
255
|
-
for (const
|
|
254
|
+
for (const s of Object.keys(r))
|
|
256
255
|
o.set(
|
|
257
|
-
|
|
258
|
-
r[
|
|
256
|
+
s,
|
|
257
|
+
r[s].checkStateConsistency(e, t[s].options)
|
|
259
258
|
);
|
|
260
259
|
return o;
|
|
261
260
|
}
|
|
262
261
|
isConsistent(e, t) {
|
|
263
262
|
const o = this.checkStateConsistency(e, t);
|
|
264
263
|
for (const r of o.values())
|
|
265
|
-
if (Object.values(r).some((
|
|
264
|
+
if (Object.values(r).some((s) => !s))
|
|
266
265
|
return !1;
|
|
267
266
|
return !0;
|
|
268
267
|
}
|
|
@@ -272,18 +271,18 @@ class W {
|
|
|
272
271
|
readyForPlotBuilding(e, t, o, r) {
|
|
273
272
|
if (!t || !this.readyDataInputs(e))
|
|
274
273
|
return !1;
|
|
275
|
-
let
|
|
276
|
-
for (const
|
|
277
|
-
const
|
|
278
|
-
if (
|
|
279
|
-
|
|
274
|
+
let s = !1;
|
|
275
|
+
for (const c of o) {
|
|
276
|
+
const u = r(c);
|
|
277
|
+
if (u && u.kind === "axis" && u.mustBeConsumed) {
|
|
278
|
+
s = !0;
|
|
280
279
|
break;
|
|
281
280
|
}
|
|
282
281
|
}
|
|
283
282
|
const a = [];
|
|
284
|
-
for (const
|
|
285
|
-
this.simpleComponentControllers[
|
|
286
|
-
return a.every((
|
|
283
|
+
for (const c of Object.keys(this.simpleComponentControllers))
|
|
284
|
+
this.simpleComponentControllers[c].isRequired && a.push(c);
|
|
285
|
+
return a.every((c) => e.components[c].selectorStates.length > 0) && !s;
|
|
287
286
|
}
|
|
288
287
|
async createDataForPlot(e, t) {
|
|
289
288
|
return {
|
|
@@ -293,6 +292,6 @@ class W {
|
|
|
293
292
|
}
|
|
294
293
|
}
|
|
295
294
|
export {
|
|
296
|
-
|
|
295
|
+
z as ControllerBase
|
|
297
296
|
};
|
|
298
297
|
//# sourceMappingURL=ControllerBase.js.map
|