@platforma-sdk/model 1.48.13 → 1.48.14
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/index.cjs +3 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/package.json.cjs +1 -1
- package/dist/package.json.js +1 -1
- package/dist/pframe_utils/index.cjs +2 -0
- package/dist/pframe_utils/index.cjs.map +1 -1
- package/dist/pframe_utils/index.d.ts +1 -1
- package/dist/pframe_utils/index.d.ts.map +1 -1
- package/dist/pframe_utils/index.js +2 -0
- package/dist/pframe_utils/index.js.map +1 -1
- package/package.json +5 -5
- package/src/pframe_utils/index.ts +2 -0
package/dist/index.cjs
CHANGED
|
@@ -28,6 +28,7 @@ var plModelCommon = require('@milaboratories/pl-model-common');
|
|
|
28
28
|
var plErrorLike = require('@milaboratories/pl-error-like');
|
|
29
29
|
var internal = require('./render/internal.cjs');
|
|
30
30
|
var env_value = require('./env_value.cjs');
|
|
31
|
+
var columns = require('./pframe_utils/columns.cjs');
|
|
31
32
|
|
|
32
33
|
|
|
33
34
|
|
|
@@ -134,6 +135,8 @@ exports.getSingleColumnData = index.getSingleColumnData;
|
|
|
134
135
|
exports.getUniqueSourceValuesWithLabels = index.getUniqueSourceValuesWithLabels;
|
|
135
136
|
exports.JsRenderInternal = internal;
|
|
136
137
|
exports.getEnvironmentValue = env_value.getEnvironmentValue;
|
|
138
|
+
exports.getAllRelatedColumns = columns.getAllRelatedColumns;
|
|
139
|
+
exports.getRelatedColumns = columns.getRelatedColumns;
|
|
137
140
|
Object.keys(plModelCommon).forEach(function (k) {
|
|
138
141
|
if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
|
139
142
|
enumerable: true,
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.js
CHANGED
|
@@ -27,4 +27,5 @@ export * from '@milaboratories/pl-error-like';
|
|
|
27
27
|
import * as internal from './render/internal.js';
|
|
28
28
|
export { internal as JsRenderInternal };
|
|
29
29
|
export { getEnvironmentValue } from './env_value.js';
|
|
30
|
+
export { getAllRelatedColumns, getRelatedColumns } from './pframe_utils/columns.js';
|
|
30
31
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/package.json.cjs
CHANGED
package/dist/package.json.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/pframe_utils/index.ts"],"sourcesContent":["import { flatten, uniq } from 'es-toolkit';\n\nimport type {\n AxisSpec,\n CalculateTableDataRequest,\n PColumnSpec,\n PFrameHandle,\n PTableVector,\n UniqueValuesRequest,\n AxisId,\n CanonicalizedJson,\n FindColumnsRequest,\n FindColumnsResponse,\n FullPTableColumnData,\n PColumnIdAndSpec,\n PObjectId,\n PTableRecordSingleValueFilterV2,\n ValueType,\n} from '@milaboratories/pl-model-common';\nimport { pTableValue, Annotation, canonicalizeAxisId, getAxisId, readAnnotation, PColumnName } from '@milaboratories/pl-model-common';\n\n// Types\ntype PValue = string | number | null;\n\ntype SuggestionResponse = {\n values: {\n value: string;\n label: string;\n }[];\n overflow: boolean;\n};\n\ntype SingleColumnData = {\n axesData: Record<string, PValue[]>;\n data: PValue[];\n};\n\ntype UniqueValuesResponse = {\n values: string[];\n overflow: boolean;\n};\n\ntype GetUniqueSourceValuesParams = {\n columnId: PObjectId;\n axisIdx?: number;\n limit?: number;\n searchQuery?: string;\n searchQueryValue?: string;\n};\n\ntype GetAxisUniqueValuesParams = {\n axisId: AxisId;\n parentColumnIds: PObjectId[];\n limit?: number;\n filters?: PTableRecordSingleValueFilterV2[];\n};\n\ntype GetColumnsFullParams = {\n selectedSources: PObjectId[];\n strictlyCompatible: boolean;\n types?: ValueType[];\n names?: string[];\n annotations?: FindColumnsRequest['columnFilter']['annotationValue'];\n annotationsNotEmpty?: string[];\n};\n\n// Constants\nconst UNIQUE_VALUES_LIMIT = 1000000;\n\n// Helper functions\nconst sortValuesPredicate = (a: { label: string }, b: { label: string }) =>\n a.label.localeCompare(b.label, 'en', { numeric: true });\n\nfunction convertColumnData(type: ValueType, response: PTableVector, absentValue: number | null = null): PValue[] {\n if (type === 'String') {\n return response.data as PValue[];\n }\n const res: PValue[] = new Array(response.data.length);\n for (let i = 0; i < response.data.length; i++) {\n res[i] = pTableValue(response, i, { absent: absentValue, na: null }) as PValue;\n }\n return res;\n}\n\nfunction createSearchFilter(\n columnId: PObjectId,\n substring: string,\n): PTableRecordSingleValueFilterV2 {\n return {\n type: 'bySingleColumnV2',\n column: {\n type: 'column',\n id: columnId,\n },\n predicate: {\n operator: 'StringIContains',\n substring,\n },\n };\n}\n\nfunction createAxisSearchFilter(\n axisSpec: AxisSpec,\n substring: string,\n): PTableRecordSingleValueFilterV2 {\n return {\n type: 'bySingleColumnV2',\n column: {\n type: 'axis',\n id: {\n type: axisSpec.type,\n name: axisSpec.name,\n },\n },\n predicate: {\n operator: 'StringIContains',\n substring,\n },\n };\n}\n\nfunction mapValuesToSuggestions(values: string[]): { value: string; label: string }[] {\n return values.map((v) => ({ value: String(v), label: String(v) })).sort(sortValuesPredicate);\n}\n\nfunction getPFrameDriver() {\n if (typeof platforma === 'undefined') {\n throw new Error('Platforma instance is not available');\n }\n if (typeof platforma.pFrameDriver === 'undefined') {\n throw new Error('PFrame driver is not available in the current Platforma instance');\n }\n return platforma.pFrameDriver;\n}\n\n// Core functions\nexport async function getColumnSpecById(handle: PFrameHandle, id: PObjectId): Promise<PColumnSpec | null> {\n try {\n const response = await getPFrameDriver().getColumnSpec(handle, id);\n return response ?? null;\n } catch (err) {\n console.error('PFrame: get single column error', err);\n return null;\n }\n}\n\nexport async function getSingleColumnData(\n handle: PFrameHandle,\n id: PObjectId,\n filters: PTableRecordSingleValueFilterV2[] = [],\n): Promise<SingleColumnData> {\n try {\n const response: FullPTableColumnData[] = await getPFrameDriver().calculateTableData(handle, {\n src: {\n type: 'column',\n column: id,\n },\n filters,\n sorting: [],\n } as CalculateTableDataRequest<PObjectId>);\n\n const axes = response.filter((item) => item.spec.type === 'axis');\n const columns = response.filter((item) => item.spec.type === 'column');\n\n return {\n axesData: axes.reduce((res: Record<string, PValue[]>, item) => {\n const id = getAxisId(item.spec.spec as AxisSpec);\n res[canonicalizeAxisId(id)] = convertColumnData(id.type, item.data);\n return res;\n }, {}),\n data: columns.length ? convertColumnData(columns[0].data.type, columns[0].data) : [],\n };\n } catch (err) {\n console.error('PFrame: calculateTableData error');\n throw err;\n }\n}\n\nexport async function getColumnUniqueValues(\n handle: PFrameHandle,\n id: PObjectId,\n limit = UNIQUE_VALUES_LIMIT,\n filters: PTableRecordSingleValueFilterV2[] = [],\n): Promise<UniqueValuesResponse> {\n const request: UniqueValuesRequest = {\n columnId: id,\n filters,\n limit,\n };\n\n try {\n const response = await getPFrameDriver().getUniqueValues(handle, request);\n if (response.overflow) {\n console.warn(`More than ${limit} values for ${id} column`);\n }\n return {\n values: Array.from(response.values.data as ArrayLike<unknown>).map(String),\n overflow: response.overflow,\n };\n } catch (err) {\n console.error('PFrame: getUniqueValues for column error');\n throw err;\n }\n}\n\nexport async function getAxisUniqueValues(\n handle: PFrameHandle,\n params: GetAxisUniqueValuesParams,\n): Promise<UniqueValuesResponse> {\n const { axisId, parentColumnIds, limit = UNIQUE_VALUES_LIMIT, filters = [] } = params;\n const strAxisId = canonicalizeAxisId(axisId);\n\n const parentsSpecs = (await Promise.all(parentColumnIds.map((p) => getColumnSpecById(handle, p))))\n .flatMap((spec, i): [PObjectId, PColumnSpec][] =>\n spec != null && spec.kind === 'PColumn' ? [[parentColumnIds[i], spec]] : [],\n )\n .filter(([_, spec]) =>\n spec.axesSpec.some((axisSpec) => canonicalizeAxisId(getAxisId(axisSpec)) === strAxisId),\n );\n\n if (parentsSpecs.length === 0) {\n console.warn('Axis unique values requested without parent columns');\n return { values: [], overflow: false };\n }\n\n try {\n const responses = await Promise.all(\n parentsSpecs.map(([id]) =>\n getPFrameDriver().getUniqueValues(handle, {\n columnId: id,\n axis: axisId,\n filters,\n limit,\n }),\n ),\n );\n\n const overflow = responses.some((r) => r.overflow);\n return {\n values: uniq(\n flatten(responses.map((r) =>\n Array.from(r.values.data as ArrayLike<unknown>).map(String),\n )),\n ),\n overflow,\n };\n } catch (err) {\n console.error('PFrame: getUniqueValues for axis error', err);\n return { values: [], overflow: false };\n }\n}\n\nexport async function getRequestColumnsFromSelectedSources(\n handle: PFrameHandle,\n sources: PObjectId[],\n): Promise<AxisId[]> {\n const result: AxisId[] = [];\n for (const item of sources) {\n const spec = await getColumnSpecById(handle, item);\n if (spec?.kind === 'PColumn') {\n result.push(...spec.axesSpec.map((spec) => getAxisId(spec)));\n }\n }\n return result;\n}\n\nexport async function getColumnsFull(\n handle: PFrameHandle,\n params: GetColumnsFullParams,\n): Promise<PColumnIdAndSpec[]> {\n const { selectedSources, strictlyCompatible, types, names, annotations, annotationsNotEmpty } = params;\n\n try {\n const request: FindColumnsRequest = {\n columnFilter: {\n type: types,\n name: names,\n annotationValue: annotations,\n annotationPattern: annotationsNotEmpty?.reduce((res, v) => {\n res[v] = '.+';\n return res;\n }, {} as Record<string, string>),\n },\n compatibleWith: await getRequestColumnsFromSelectedSources(handle, selectedSources),\n strictlyCompatible,\n };\n\n const response: FindColumnsResponse = await getPFrameDriver().findColumns(handle, request);\n return response.hits;\n } catch (err) {\n console.error('PFrame: findColumns error');\n throw err;\n }\n}\n\nexport async function getColumnOrAxisValueLabelsId(\n handle: PFrameHandle,\n strAxisId: CanonicalizedJson<AxisId>,\n): Promise<PObjectId | undefined> {\n const labelColumns = await getColumnsFull(handle, {\n selectedSources: [],\n strictlyCompatible: false,\n names: [PColumnName.Label],\n });\n\n const labelColumn = labelColumns.find(({ spec }) => {\n return spec && spec.axesSpec.length === 1 && canonicalizeAxisId(spec.axesSpec[0]) === strAxisId;\n });\n\n return labelColumn?.columnId;\n}\n\nfunction getDiscreteValuesFromAnnotation(columnSpec: PColumnSpec): undefined | SuggestionResponse {\n const discreteValuesStr = readAnnotation(columnSpec, Annotation.DiscreteValues);\n if (!discreteValuesStr) {\n return undefined;\n }\n\n try {\n const discreteValues: string[] = (JSON.parse(discreteValuesStr) as (string | number)[]).map((v) => String(v));\n const values = discreteValues.map((v) => ({ value: v, label: v })).sort(sortValuesPredicate);\n return { values, overflow: false };\n } catch {\n console.error(`Parsing error: discrete values annotation ${discreteValuesStr}`);\n return undefined;\n }\n}\n\nasync function getAxisValuesWithLabels(\n handle: PFrameHandle,\n params: {\n columnId: PObjectId;\n axisSpec: AxisSpec;\n labelsColumnId: PObjectId | undefined;\n limit?: number;\n searchQuery?: string;\n searchQueryValue?: string;\n },\n): Promise<SuggestionResponse> {\n const { columnId, axisSpec, labelsColumnId, limit, searchQuery, searchQueryValue } = params;\n const strAxisId = canonicalizeAxisId(getAxisId(axisSpec));\n\n let filters: PTableRecordSingleValueFilterV2[] = [];\n\n if (labelsColumnId) {\n if (searchQuery) {\n filters = [createSearchFilter(labelsColumnId, searchQuery)];\n }\n if (searchQueryValue) {\n filters = [createAxisSearchFilter(axisSpec, searchQueryValue)];\n }\n\n const { data: dataValues, axesData } = await getSingleColumnData(handle, labelsColumnId, filters);\n const axisKeys = axesData[strAxisId];\n const values: { value: string; label: string }[] = [];\n\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\n values.sort(sortValuesPredicate);\n return { values, overflow: !(limit === undefined || axisKeys.length < limit) };\n } else {\n const searchInLabelsOrValue = searchQuery ?? searchQueryValue;\n if (searchInLabelsOrValue) {\n filters = [createAxisSearchFilter(axisSpec, searchInLabelsOrValue)];\n }\n\n const response = await getAxisUniqueValues(handle, {\n axisId: getAxisId(axisSpec),\n parentColumnIds: [columnId],\n limit,\n filters,\n });\n\n const values = mapValuesToSuggestions(response.values);\n return { values, overflow: response.overflow };\n }\n}\n\nasync function getColumnValuesWithLabels(\n handle: PFrameHandle,\n params: {\n columnId: PObjectId;\n limit?: number;\n searchQuery?: string;\n searchQueryValue?: string;\n },\n): Promise<SuggestionResponse> {\n const { columnId, limit, searchQuery, searchQueryValue } = params;\n const searchInLabelsOrValue = searchQuery ?? searchQueryValue;\n\n const filters: PTableRecordSingleValueFilterV2[] = searchInLabelsOrValue\n ? [createSearchFilter(columnId, searchInLabelsOrValue)]\n : [];\n\n const response = await getColumnUniqueValues(handle, columnId, limit, filters);\n const values = mapValuesToSuggestions(response.values);\n return { values, overflow: response.overflow };\n}\n\nexport async function getUniqueSourceValuesWithLabels(\n handle: PFrameHandle,\n params: GetUniqueSourceValuesParams,\n): Promise<SuggestionResponse> {\n const { columnId, axisIdx, limit, searchQuery, searchQueryValue } = params;\n\n const selectedSourceSpec = await getColumnSpecById(handle, columnId);\n if (selectedSourceSpec == null || selectedSourceSpec.kind !== 'PColumn') {\n return { values: [], overflow: false };\n }\n\n // Try to get discrete values from annotation\n const discreteValues = getDiscreteValuesFromAnnotation(selectedSourceSpec);\n if (discreteValues != null) {\n return discreteValues;\n }\n\n // Handle axis values\n if (axisIdx != null) {\n const axisSpec = selectedSourceSpec.axesSpec[axisIdx];\n const strAxisId = canonicalizeAxisId(getAxisId(axisSpec));\n const labelsColumnId = await getColumnOrAxisValueLabelsId(handle, strAxisId);\n\n return getAxisValuesWithLabels(handle, {\n columnId,\n axisSpec,\n labelsColumnId,\n limit,\n searchQuery,\n searchQueryValue,\n });\n }\n\n // Handle column values\n return getColumnValuesWithLabels(handle, {\n columnId,\n limit,\n searchQuery,\n searchQueryValue,\n });\n}\n"],"names":["pTableValue","getAxisId","canonicalizeAxisId","uniq","flatten","PColumnName","readAnnotation","Annotation"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/pframe_utils/index.ts"],"sourcesContent":["import { flatten, uniq } from 'es-toolkit';\n\nimport type {\n AxisSpec,\n CalculateTableDataRequest,\n PColumnSpec,\n PFrameHandle,\n PTableVector,\n UniqueValuesRequest,\n AxisId,\n CanonicalizedJson,\n FindColumnsRequest,\n FindColumnsResponse,\n FullPTableColumnData,\n PColumnIdAndSpec,\n PObjectId,\n PTableRecordSingleValueFilterV2,\n ValueType,\n} from '@milaboratories/pl-model-common';\nimport { pTableValue, Annotation, canonicalizeAxisId, getAxisId, readAnnotation, PColumnName } from '@milaboratories/pl-model-common';\n\nexport * from './columns';\n\n// Types\ntype PValue = string | number | null;\n\ntype SuggestionResponse = {\n values: {\n value: string;\n label: string;\n }[];\n overflow: boolean;\n};\n\ntype SingleColumnData = {\n axesData: Record<string, PValue[]>;\n data: PValue[];\n};\n\ntype UniqueValuesResponse = {\n values: string[];\n overflow: boolean;\n};\n\ntype GetUniqueSourceValuesParams = {\n columnId: PObjectId;\n axisIdx?: number;\n limit?: number;\n searchQuery?: string;\n searchQueryValue?: string;\n};\n\ntype GetAxisUniqueValuesParams = {\n axisId: AxisId;\n parentColumnIds: PObjectId[];\n limit?: number;\n filters?: PTableRecordSingleValueFilterV2[];\n};\n\ntype GetColumnsFullParams = {\n selectedSources: PObjectId[];\n strictlyCompatible: boolean;\n types?: ValueType[];\n names?: string[];\n annotations?: FindColumnsRequest['columnFilter']['annotationValue'];\n annotationsNotEmpty?: string[];\n};\n\n// Constants\nconst UNIQUE_VALUES_LIMIT = 1000000;\n\n// Helper functions\nconst sortValuesPredicate = (a: { label: string }, b: { label: string }) =>\n a.label.localeCompare(b.label, 'en', { numeric: true });\n\nfunction convertColumnData(type: ValueType, response: PTableVector, absentValue: number | null = null): PValue[] {\n if (type === 'String') {\n return response.data as PValue[];\n }\n const res: PValue[] = new Array(response.data.length);\n for (let i = 0; i < response.data.length; i++) {\n res[i] = pTableValue(response, i, { absent: absentValue, na: null }) as PValue;\n }\n return res;\n}\n\nfunction createSearchFilter(\n columnId: PObjectId,\n substring: string,\n): PTableRecordSingleValueFilterV2 {\n return {\n type: 'bySingleColumnV2',\n column: {\n type: 'column',\n id: columnId,\n },\n predicate: {\n operator: 'StringIContains',\n substring,\n },\n };\n}\n\nfunction createAxisSearchFilter(\n axisSpec: AxisSpec,\n substring: string,\n): PTableRecordSingleValueFilterV2 {\n return {\n type: 'bySingleColumnV2',\n column: {\n type: 'axis',\n id: {\n type: axisSpec.type,\n name: axisSpec.name,\n },\n },\n predicate: {\n operator: 'StringIContains',\n substring,\n },\n };\n}\n\nfunction mapValuesToSuggestions(values: string[]): { value: string; label: string }[] {\n return values.map((v) => ({ value: String(v), label: String(v) })).sort(sortValuesPredicate);\n}\n\nfunction getPFrameDriver() {\n if (typeof platforma === 'undefined') {\n throw new Error('Platforma instance is not available');\n }\n if (typeof platforma.pFrameDriver === 'undefined') {\n throw new Error('PFrame driver is not available in the current Platforma instance');\n }\n return platforma.pFrameDriver;\n}\n\n// Core functions\nexport async function getColumnSpecById(handle: PFrameHandle, id: PObjectId): Promise<PColumnSpec | null> {\n try {\n const response = await getPFrameDriver().getColumnSpec(handle, id);\n return response ?? null;\n } catch (err) {\n console.error('PFrame: get single column error', err);\n return null;\n }\n}\n\nexport async function getSingleColumnData(\n handle: PFrameHandle,\n id: PObjectId,\n filters: PTableRecordSingleValueFilterV2[] = [],\n): Promise<SingleColumnData> {\n try {\n const response: FullPTableColumnData[] = await getPFrameDriver().calculateTableData(handle, {\n src: {\n type: 'column',\n column: id,\n },\n filters,\n sorting: [],\n } as CalculateTableDataRequest<PObjectId>);\n\n const axes = response.filter((item) => item.spec.type === 'axis');\n const columns = response.filter((item) => item.spec.type === 'column');\n\n return {\n axesData: axes.reduce((res: Record<string, PValue[]>, item) => {\n const id = getAxisId(item.spec.spec as AxisSpec);\n res[canonicalizeAxisId(id)] = convertColumnData(id.type, item.data);\n return res;\n }, {}),\n data: columns.length ? convertColumnData(columns[0].data.type, columns[0].data) : [],\n };\n } catch (err) {\n console.error('PFrame: calculateTableData error');\n throw err;\n }\n}\n\nexport async function getColumnUniqueValues(\n handle: PFrameHandle,\n id: PObjectId,\n limit = UNIQUE_VALUES_LIMIT,\n filters: PTableRecordSingleValueFilterV2[] = [],\n): Promise<UniqueValuesResponse> {\n const request: UniqueValuesRequest = {\n columnId: id,\n filters,\n limit,\n };\n\n try {\n const response = await getPFrameDriver().getUniqueValues(handle, request);\n if (response.overflow) {\n console.warn(`More than ${limit} values for ${id} column`);\n }\n return {\n values: Array.from(response.values.data as ArrayLike<unknown>).map(String),\n overflow: response.overflow,\n };\n } catch (err) {\n console.error('PFrame: getUniqueValues for column error');\n throw err;\n }\n}\n\nexport async function getAxisUniqueValues(\n handle: PFrameHandle,\n params: GetAxisUniqueValuesParams,\n): Promise<UniqueValuesResponse> {\n const { axisId, parentColumnIds, limit = UNIQUE_VALUES_LIMIT, filters = [] } = params;\n const strAxisId = canonicalizeAxisId(axisId);\n\n const parentsSpecs = (await Promise.all(parentColumnIds.map((p) => getColumnSpecById(handle, p))))\n .flatMap((spec, i): [PObjectId, PColumnSpec][] =>\n spec != null && spec.kind === 'PColumn' ? [[parentColumnIds[i], spec]] : [],\n )\n .filter(([_, spec]) =>\n spec.axesSpec.some((axisSpec) => canonicalizeAxisId(getAxisId(axisSpec)) === strAxisId),\n );\n\n if (parentsSpecs.length === 0) {\n console.warn('Axis unique values requested without parent columns');\n return { values: [], overflow: false };\n }\n\n try {\n const responses = await Promise.all(\n parentsSpecs.map(([id]) =>\n getPFrameDriver().getUniqueValues(handle, {\n columnId: id,\n axis: axisId,\n filters,\n limit,\n }),\n ),\n );\n\n const overflow = responses.some((r) => r.overflow);\n return {\n values: uniq(\n flatten(responses.map((r) =>\n Array.from(r.values.data as ArrayLike<unknown>).map(String),\n )),\n ),\n overflow,\n };\n } catch (err) {\n console.error('PFrame: getUniqueValues for axis error', err);\n return { values: [], overflow: false };\n }\n}\n\nexport async function getRequestColumnsFromSelectedSources(\n handle: PFrameHandle,\n sources: PObjectId[],\n): Promise<AxisId[]> {\n const result: AxisId[] = [];\n for (const item of sources) {\n const spec = await getColumnSpecById(handle, item);\n if (spec?.kind === 'PColumn') {\n result.push(...spec.axesSpec.map((spec) => getAxisId(spec)));\n }\n }\n return result;\n}\n\nexport async function getColumnsFull(\n handle: PFrameHandle,\n params: GetColumnsFullParams,\n): Promise<PColumnIdAndSpec[]> {\n const { selectedSources, strictlyCompatible, types, names, annotations, annotationsNotEmpty } = params;\n\n try {\n const request: FindColumnsRequest = {\n columnFilter: {\n type: types,\n name: names,\n annotationValue: annotations,\n annotationPattern: annotationsNotEmpty?.reduce((res, v) => {\n res[v] = '.+';\n return res;\n }, {} as Record<string, string>),\n },\n compatibleWith: await getRequestColumnsFromSelectedSources(handle, selectedSources),\n strictlyCompatible,\n };\n\n const response: FindColumnsResponse = await getPFrameDriver().findColumns(handle, request);\n return response.hits;\n } catch (err) {\n console.error('PFrame: findColumns error');\n throw err;\n }\n}\n\nexport async function getColumnOrAxisValueLabelsId(\n handle: PFrameHandle,\n strAxisId: CanonicalizedJson<AxisId>,\n): Promise<PObjectId | undefined> {\n const labelColumns = await getColumnsFull(handle, {\n selectedSources: [],\n strictlyCompatible: false,\n names: [PColumnName.Label],\n });\n\n const labelColumn = labelColumns.find(({ spec }) => {\n return spec && spec.axesSpec.length === 1 && canonicalizeAxisId(spec.axesSpec[0]) === strAxisId;\n });\n\n return labelColumn?.columnId;\n}\n\nfunction getDiscreteValuesFromAnnotation(columnSpec: PColumnSpec): undefined | SuggestionResponse {\n const discreteValuesStr = readAnnotation(columnSpec, Annotation.DiscreteValues);\n if (!discreteValuesStr) {\n return undefined;\n }\n\n try {\n const discreteValues: string[] = (JSON.parse(discreteValuesStr) as (string | number)[]).map((v) => String(v));\n const values = discreteValues.map((v) => ({ value: v, label: v })).sort(sortValuesPredicate);\n return { values, overflow: false };\n } catch {\n console.error(`Parsing error: discrete values annotation ${discreteValuesStr}`);\n return undefined;\n }\n}\n\nasync function getAxisValuesWithLabels(\n handle: PFrameHandle,\n params: {\n columnId: PObjectId;\n axisSpec: AxisSpec;\n labelsColumnId: PObjectId | undefined;\n limit?: number;\n searchQuery?: string;\n searchQueryValue?: string;\n },\n): Promise<SuggestionResponse> {\n const { columnId, axisSpec, labelsColumnId, limit, searchQuery, searchQueryValue } = params;\n const strAxisId = canonicalizeAxisId(getAxisId(axisSpec));\n\n let filters: PTableRecordSingleValueFilterV2[] = [];\n\n if (labelsColumnId) {\n if (searchQuery) {\n filters = [createSearchFilter(labelsColumnId, searchQuery)];\n }\n if (searchQueryValue) {\n filters = [createAxisSearchFilter(axisSpec, searchQueryValue)];\n }\n\n const { data: dataValues, axesData } = await getSingleColumnData(handle, labelsColumnId, filters);\n const axisKeys = axesData[strAxisId];\n const values: { value: string; label: string }[] = [];\n\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\n values.sort(sortValuesPredicate);\n return { values, overflow: !(limit === undefined || axisKeys.length < limit) };\n } else {\n const searchInLabelsOrValue = searchQuery ?? searchQueryValue;\n if (searchInLabelsOrValue) {\n filters = [createAxisSearchFilter(axisSpec, searchInLabelsOrValue)];\n }\n\n const response = await getAxisUniqueValues(handle, {\n axisId: getAxisId(axisSpec),\n parentColumnIds: [columnId],\n limit,\n filters,\n });\n\n const values = mapValuesToSuggestions(response.values);\n return { values, overflow: response.overflow };\n }\n}\n\nasync function getColumnValuesWithLabels(\n handle: PFrameHandle,\n params: {\n columnId: PObjectId;\n limit?: number;\n searchQuery?: string;\n searchQueryValue?: string;\n },\n): Promise<SuggestionResponse> {\n const { columnId, limit, searchQuery, searchQueryValue } = params;\n const searchInLabelsOrValue = searchQuery ?? searchQueryValue;\n\n const filters: PTableRecordSingleValueFilterV2[] = searchInLabelsOrValue\n ? [createSearchFilter(columnId, searchInLabelsOrValue)]\n : [];\n\n const response = await getColumnUniqueValues(handle, columnId, limit, filters);\n const values = mapValuesToSuggestions(response.values);\n return { values, overflow: response.overflow };\n}\n\nexport async function getUniqueSourceValuesWithLabels(\n handle: PFrameHandle,\n params: GetUniqueSourceValuesParams,\n): Promise<SuggestionResponse> {\n const { columnId, axisIdx, limit, searchQuery, searchQueryValue } = params;\n\n const selectedSourceSpec = await getColumnSpecById(handle, columnId);\n if (selectedSourceSpec == null || selectedSourceSpec.kind !== 'PColumn') {\n return { values: [], overflow: false };\n }\n\n // Try to get discrete values from annotation\n const discreteValues = getDiscreteValuesFromAnnotation(selectedSourceSpec);\n if (discreteValues != null) {\n return discreteValues;\n }\n\n // Handle axis values\n if (axisIdx != null) {\n const axisSpec = selectedSourceSpec.axesSpec[axisIdx];\n const strAxisId = canonicalizeAxisId(getAxisId(axisSpec));\n const labelsColumnId = await getColumnOrAxisValueLabelsId(handle, strAxisId);\n\n return getAxisValuesWithLabels(handle, {\n columnId,\n axisSpec,\n labelsColumnId,\n limit,\n searchQuery,\n searchQueryValue,\n });\n }\n\n // Handle column values\n return getColumnValuesWithLabels(handle, {\n columnId,\n limit,\n searchQuery,\n searchQueryValue,\n });\n}\n"],"names":["pTableValue","getAxisId","canonicalizeAxisId","uniq","flatten","PColumnName","readAnnotation","Annotation"],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { PColumnSpec, PFrameHandle, AxisId, CanonicalizedJson, FindColumnsRequest, PColumnIdAndSpec, PObjectId, PTableRecordSingleValueFilterV2, ValueType } from '@milaboratories/pl-model-common';
|
|
2
|
+
export * from './columns';
|
|
2
3
|
type PValue = string | number | null;
|
|
3
4
|
type SuggestionResponse = {
|
|
4
5
|
values: {
|
|
@@ -44,5 +45,4 @@ export declare function getRequestColumnsFromSelectedSources(handle: PFrameHandl
|
|
|
44
45
|
export declare function getColumnsFull(handle: PFrameHandle, params: GetColumnsFullParams): Promise<PColumnIdAndSpec[]>;
|
|
45
46
|
export declare function getColumnOrAxisValueLabelsId(handle: PFrameHandle, strAxisId: CanonicalizedJson<AxisId>): Promise<PObjectId | undefined>;
|
|
46
47
|
export declare function getUniqueSourceValuesWithLabels(handle: PFrameHandle, params: GetUniqueSourceValuesParams): Promise<SuggestionResponse>;
|
|
47
|
-
export {};
|
|
48
48
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pframe_utils/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGV,WAAW,EACX,YAAY,EAGZ,MAAM,EACN,iBAAiB,EACjB,kBAAkB,EAGlB,gBAAgB,EAChB,SAAS,EACT,+BAA+B,EAC/B,SAAS,EACV,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pframe_utils/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { uniq, flatten } from 'es-toolkit';
|
|
2
2
|
import { getAxisId, canonicalizeAxisId, PColumnName, pTableValue, readAnnotation, Annotation } from '@milaboratories/pl-model-common';
|
|
3
|
+
import 'canonicalize';
|
|
4
|
+
import '../render/util/label.js';
|
|
3
5
|
|
|
4
6
|
// Constants
|
|
5
7
|
const UNIQUE_VALUES_LIMIT = 1000000;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/pframe_utils/index.ts"],"sourcesContent":["import { flatten, uniq } from 'es-toolkit';\n\nimport type {\n AxisSpec,\n CalculateTableDataRequest,\n PColumnSpec,\n PFrameHandle,\n PTableVector,\n UniqueValuesRequest,\n AxisId,\n CanonicalizedJson,\n FindColumnsRequest,\n FindColumnsResponse,\n FullPTableColumnData,\n PColumnIdAndSpec,\n PObjectId,\n PTableRecordSingleValueFilterV2,\n ValueType,\n} from '@milaboratories/pl-model-common';\nimport { pTableValue, Annotation, canonicalizeAxisId, getAxisId, readAnnotation, PColumnName } from '@milaboratories/pl-model-common';\n\n// Types\ntype PValue = string | number | null;\n\ntype SuggestionResponse = {\n values: {\n value: string;\n label: string;\n }[];\n overflow: boolean;\n};\n\ntype SingleColumnData = {\n axesData: Record<string, PValue[]>;\n data: PValue[];\n};\n\ntype UniqueValuesResponse = {\n values: string[];\n overflow: boolean;\n};\n\ntype GetUniqueSourceValuesParams = {\n columnId: PObjectId;\n axisIdx?: number;\n limit?: number;\n searchQuery?: string;\n searchQueryValue?: string;\n};\n\ntype GetAxisUniqueValuesParams = {\n axisId: AxisId;\n parentColumnIds: PObjectId[];\n limit?: number;\n filters?: PTableRecordSingleValueFilterV2[];\n};\n\ntype GetColumnsFullParams = {\n selectedSources: PObjectId[];\n strictlyCompatible: boolean;\n types?: ValueType[];\n names?: string[];\n annotations?: FindColumnsRequest['columnFilter']['annotationValue'];\n annotationsNotEmpty?: string[];\n};\n\n// Constants\nconst UNIQUE_VALUES_LIMIT = 1000000;\n\n// Helper functions\nconst sortValuesPredicate = (a: { label: string }, b: { label: string }) =>\n a.label.localeCompare(b.label, 'en', { numeric: true });\n\nfunction convertColumnData(type: ValueType, response: PTableVector, absentValue: number | null = null): PValue[] {\n if (type === 'String') {\n return response.data as PValue[];\n }\n const res: PValue[] = new Array(response.data.length);\n for (let i = 0; i < response.data.length; i++) {\n res[i] = pTableValue(response, i, { absent: absentValue, na: null }) as PValue;\n }\n return res;\n}\n\nfunction createSearchFilter(\n columnId: PObjectId,\n substring: string,\n): PTableRecordSingleValueFilterV2 {\n return {\n type: 'bySingleColumnV2',\n column: {\n type: 'column',\n id: columnId,\n },\n predicate: {\n operator: 'StringIContains',\n substring,\n },\n };\n}\n\nfunction createAxisSearchFilter(\n axisSpec: AxisSpec,\n substring: string,\n): PTableRecordSingleValueFilterV2 {\n return {\n type: 'bySingleColumnV2',\n column: {\n type: 'axis',\n id: {\n type: axisSpec.type,\n name: axisSpec.name,\n },\n },\n predicate: {\n operator: 'StringIContains',\n substring,\n },\n };\n}\n\nfunction mapValuesToSuggestions(values: string[]): { value: string; label: string }[] {\n return values.map((v) => ({ value: String(v), label: String(v) })).sort(sortValuesPredicate);\n}\n\nfunction getPFrameDriver() {\n if (typeof platforma === 'undefined') {\n throw new Error('Platforma instance is not available');\n }\n if (typeof platforma.pFrameDriver === 'undefined') {\n throw new Error('PFrame driver is not available in the current Platforma instance');\n }\n return platforma.pFrameDriver;\n}\n\n// Core functions\nexport async function getColumnSpecById(handle: PFrameHandle, id: PObjectId): Promise<PColumnSpec | null> {\n try {\n const response = await getPFrameDriver().getColumnSpec(handle, id);\n return response ?? null;\n } catch (err) {\n console.error('PFrame: get single column error', err);\n return null;\n }\n}\n\nexport async function getSingleColumnData(\n handle: PFrameHandle,\n id: PObjectId,\n filters: PTableRecordSingleValueFilterV2[] = [],\n): Promise<SingleColumnData> {\n try {\n const response: FullPTableColumnData[] = await getPFrameDriver().calculateTableData(handle, {\n src: {\n type: 'column',\n column: id,\n },\n filters,\n sorting: [],\n } as CalculateTableDataRequest<PObjectId>);\n\n const axes = response.filter((item) => item.spec.type === 'axis');\n const columns = response.filter((item) => item.spec.type === 'column');\n\n return {\n axesData: axes.reduce((res: Record<string, PValue[]>, item) => {\n const id = getAxisId(item.spec.spec as AxisSpec);\n res[canonicalizeAxisId(id)] = convertColumnData(id.type, item.data);\n return res;\n }, {}),\n data: columns.length ? convertColumnData(columns[0].data.type, columns[0].data) : [],\n };\n } catch (err) {\n console.error('PFrame: calculateTableData error');\n throw err;\n }\n}\n\nexport async function getColumnUniqueValues(\n handle: PFrameHandle,\n id: PObjectId,\n limit = UNIQUE_VALUES_LIMIT,\n filters: PTableRecordSingleValueFilterV2[] = [],\n): Promise<UniqueValuesResponse> {\n const request: UniqueValuesRequest = {\n columnId: id,\n filters,\n limit,\n };\n\n try {\n const response = await getPFrameDriver().getUniqueValues(handle, request);\n if (response.overflow) {\n console.warn(`More than ${limit} values for ${id} column`);\n }\n return {\n values: Array.from(response.values.data as ArrayLike<unknown>).map(String),\n overflow: response.overflow,\n };\n } catch (err) {\n console.error('PFrame: getUniqueValues for column error');\n throw err;\n }\n}\n\nexport async function getAxisUniqueValues(\n handle: PFrameHandle,\n params: GetAxisUniqueValuesParams,\n): Promise<UniqueValuesResponse> {\n const { axisId, parentColumnIds, limit = UNIQUE_VALUES_LIMIT, filters = [] } = params;\n const strAxisId = canonicalizeAxisId(axisId);\n\n const parentsSpecs = (await Promise.all(parentColumnIds.map((p) => getColumnSpecById(handle, p))))\n .flatMap((spec, i): [PObjectId, PColumnSpec][] =>\n spec != null && spec.kind === 'PColumn' ? [[parentColumnIds[i], spec]] : [],\n )\n .filter(([_, spec]) =>\n spec.axesSpec.some((axisSpec) => canonicalizeAxisId(getAxisId(axisSpec)) === strAxisId),\n );\n\n if (parentsSpecs.length === 0) {\n console.warn('Axis unique values requested without parent columns');\n return { values: [], overflow: false };\n }\n\n try {\n const responses = await Promise.all(\n parentsSpecs.map(([id]) =>\n getPFrameDriver().getUniqueValues(handle, {\n columnId: id,\n axis: axisId,\n filters,\n limit,\n }),\n ),\n );\n\n const overflow = responses.some((r) => r.overflow);\n return {\n values: uniq(\n flatten(responses.map((r) =>\n Array.from(r.values.data as ArrayLike<unknown>).map(String),\n )),\n ),\n overflow,\n };\n } catch (err) {\n console.error('PFrame: getUniqueValues for axis error', err);\n return { values: [], overflow: false };\n }\n}\n\nexport async function getRequestColumnsFromSelectedSources(\n handle: PFrameHandle,\n sources: PObjectId[],\n): Promise<AxisId[]> {\n const result: AxisId[] = [];\n for (const item of sources) {\n const spec = await getColumnSpecById(handle, item);\n if (spec?.kind === 'PColumn') {\n result.push(...spec.axesSpec.map((spec) => getAxisId(spec)));\n }\n }\n return result;\n}\n\nexport async function getColumnsFull(\n handle: PFrameHandle,\n params: GetColumnsFullParams,\n): Promise<PColumnIdAndSpec[]> {\n const { selectedSources, strictlyCompatible, types, names, annotations, annotationsNotEmpty } = params;\n\n try {\n const request: FindColumnsRequest = {\n columnFilter: {\n type: types,\n name: names,\n annotationValue: annotations,\n annotationPattern: annotationsNotEmpty?.reduce((res, v) => {\n res[v] = '.+';\n return res;\n }, {} as Record<string, string>),\n },\n compatibleWith: await getRequestColumnsFromSelectedSources(handle, selectedSources),\n strictlyCompatible,\n };\n\n const response: FindColumnsResponse = await getPFrameDriver().findColumns(handle, request);\n return response.hits;\n } catch (err) {\n console.error('PFrame: findColumns error');\n throw err;\n }\n}\n\nexport async function getColumnOrAxisValueLabelsId(\n handle: PFrameHandle,\n strAxisId: CanonicalizedJson<AxisId>,\n): Promise<PObjectId | undefined> {\n const labelColumns = await getColumnsFull(handle, {\n selectedSources: [],\n strictlyCompatible: false,\n names: [PColumnName.Label],\n });\n\n const labelColumn = labelColumns.find(({ spec }) => {\n return spec && spec.axesSpec.length === 1 && canonicalizeAxisId(spec.axesSpec[0]) === strAxisId;\n });\n\n return labelColumn?.columnId;\n}\n\nfunction getDiscreteValuesFromAnnotation(columnSpec: PColumnSpec): undefined | SuggestionResponse {\n const discreteValuesStr = readAnnotation(columnSpec, Annotation.DiscreteValues);\n if (!discreteValuesStr) {\n return undefined;\n }\n\n try {\n const discreteValues: string[] = (JSON.parse(discreteValuesStr) as (string | number)[]).map((v) => String(v));\n const values = discreteValues.map((v) => ({ value: v, label: v })).sort(sortValuesPredicate);\n return { values, overflow: false };\n } catch {\n console.error(`Parsing error: discrete values annotation ${discreteValuesStr}`);\n return undefined;\n }\n}\n\nasync function getAxisValuesWithLabels(\n handle: PFrameHandle,\n params: {\n columnId: PObjectId;\n axisSpec: AxisSpec;\n labelsColumnId: PObjectId | undefined;\n limit?: number;\n searchQuery?: string;\n searchQueryValue?: string;\n },\n): Promise<SuggestionResponse> {\n const { columnId, axisSpec, labelsColumnId, limit, searchQuery, searchQueryValue } = params;\n const strAxisId = canonicalizeAxisId(getAxisId(axisSpec));\n\n let filters: PTableRecordSingleValueFilterV2[] = [];\n\n if (labelsColumnId) {\n if (searchQuery) {\n filters = [createSearchFilter(labelsColumnId, searchQuery)];\n }\n if (searchQueryValue) {\n filters = [createAxisSearchFilter(axisSpec, searchQueryValue)];\n }\n\n const { data: dataValues, axesData } = await getSingleColumnData(handle, labelsColumnId, filters);\n const axisKeys = axesData[strAxisId];\n const values: { value: string; label: string }[] = [];\n\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\n values.sort(sortValuesPredicate);\n return { values, overflow: !(limit === undefined || axisKeys.length < limit) };\n } else {\n const searchInLabelsOrValue = searchQuery ?? searchQueryValue;\n if (searchInLabelsOrValue) {\n filters = [createAxisSearchFilter(axisSpec, searchInLabelsOrValue)];\n }\n\n const response = await getAxisUniqueValues(handle, {\n axisId: getAxisId(axisSpec),\n parentColumnIds: [columnId],\n limit,\n filters,\n });\n\n const values = mapValuesToSuggestions(response.values);\n return { values, overflow: response.overflow };\n }\n}\n\nasync function getColumnValuesWithLabels(\n handle: PFrameHandle,\n params: {\n columnId: PObjectId;\n limit?: number;\n searchQuery?: string;\n searchQueryValue?: string;\n },\n): Promise<SuggestionResponse> {\n const { columnId, limit, searchQuery, searchQueryValue } = params;\n const searchInLabelsOrValue = searchQuery ?? searchQueryValue;\n\n const filters: PTableRecordSingleValueFilterV2[] = searchInLabelsOrValue\n ? [createSearchFilter(columnId, searchInLabelsOrValue)]\n : [];\n\n const response = await getColumnUniqueValues(handle, columnId, limit, filters);\n const values = mapValuesToSuggestions(response.values);\n return { values, overflow: response.overflow };\n}\n\nexport async function getUniqueSourceValuesWithLabels(\n handle: PFrameHandle,\n params: GetUniqueSourceValuesParams,\n): Promise<SuggestionResponse> {\n const { columnId, axisIdx, limit, searchQuery, searchQueryValue } = params;\n\n const selectedSourceSpec = await getColumnSpecById(handle, columnId);\n if (selectedSourceSpec == null || selectedSourceSpec.kind !== 'PColumn') {\n return { values: [], overflow: false };\n }\n\n // Try to get discrete values from annotation\n const discreteValues = getDiscreteValuesFromAnnotation(selectedSourceSpec);\n if (discreteValues != null) {\n return discreteValues;\n }\n\n // Handle axis values\n if (axisIdx != null) {\n const axisSpec = selectedSourceSpec.axesSpec[axisIdx];\n const strAxisId = canonicalizeAxisId(getAxisId(axisSpec));\n const labelsColumnId = await getColumnOrAxisValueLabelsId(handle, strAxisId);\n\n return getAxisValuesWithLabels(handle, {\n columnId,\n axisSpec,\n labelsColumnId,\n limit,\n searchQuery,\n searchQueryValue,\n });\n }\n\n // Handle column values\n return getColumnValuesWithLabels(handle, {\n columnId,\n limit,\n searchQuery,\n searchQueryValue,\n });\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/pframe_utils/index.ts"],"sourcesContent":["import { flatten, uniq } from 'es-toolkit';\n\nimport type {\n AxisSpec,\n CalculateTableDataRequest,\n PColumnSpec,\n PFrameHandle,\n PTableVector,\n UniqueValuesRequest,\n AxisId,\n CanonicalizedJson,\n FindColumnsRequest,\n FindColumnsResponse,\n FullPTableColumnData,\n PColumnIdAndSpec,\n PObjectId,\n PTableRecordSingleValueFilterV2,\n ValueType,\n} from '@milaboratories/pl-model-common';\nimport { pTableValue, Annotation, canonicalizeAxisId, getAxisId, readAnnotation, PColumnName } from '@milaboratories/pl-model-common';\n\nexport * from './columns';\n\n// Types\ntype PValue = string | number | null;\n\ntype SuggestionResponse = {\n values: {\n value: string;\n label: string;\n }[];\n overflow: boolean;\n};\n\ntype SingleColumnData = {\n axesData: Record<string, PValue[]>;\n data: PValue[];\n};\n\ntype UniqueValuesResponse = {\n values: string[];\n overflow: boolean;\n};\n\ntype GetUniqueSourceValuesParams = {\n columnId: PObjectId;\n axisIdx?: number;\n limit?: number;\n searchQuery?: string;\n searchQueryValue?: string;\n};\n\ntype GetAxisUniqueValuesParams = {\n axisId: AxisId;\n parentColumnIds: PObjectId[];\n limit?: number;\n filters?: PTableRecordSingleValueFilterV2[];\n};\n\ntype GetColumnsFullParams = {\n selectedSources: PObjectId[];\n strictlyCompatible: boolean;\n types?: ValueType[];\n names?: string[];\n annotations?: FindColumnsRequest['columnFilter']['annotationValue'];\n annotationsNotEmpty?: string[];\n};\n\n// Constants\nconst UNIQUE_VALUES_LIMIT = 1000000;\n\n// Helper functions\nconst sortValuesPredicate = (a: { label: string }, b: { label: string }) =>\n a.label.localeCompare(b.label, 'en', { numeric: true });\n\nfunction convertColumnData(type: ValueType, response: PTableVector, absentValue: number | null = null): PValue[] {\n if (type === 'String') {\n return response.data as PValue[];\n }\n const res: PValue[] = new Array(response.data.length);\n for (let i = 0; i < response.data.length; i++) {\n res[i] = pTableValue(response, i, { absent: absentValue, na: null }) as PValue;\n }\n return res;\n}\n\nfunction createSearchFilter(\n columnId: PObjectId,\n substring: string,\n): PTableRecordSingleValueFilterV2 {\n return {\n type: 'bySingleColumnV2',\n column: {\n type: 'column',\n id: columnId,\n },\n predicate: {\n operator: 'StringIContains',\n substring,\n },\n };\n}\n\nfunction createAxisSearchFilter(\n axisSpec: AxisSpec,\n substring: string,\n): PTableRecordSingleValueFilterV2 {\n return {\n type: 'bySingleColumnV2',\n column: {\n type: 'axis',\n id: {\n type: axisSpec.type,\n name: axisSpec.name,\n },\n },\n predicate: {\n operator: 'StringIContains',\n substring,\n },\n };\n}\n\nfunction mapValuesToSuggestions(values: string[]): { value: string; label: string }[] {\n return values.map((v) => ({ value: String(v), label: String(v) })).sort(sortValuesPredicate);\n}\n\nfunction getPFrameDriver() {\n if (typeof platforma === 'undefined') {\n throw new Error('Platforma instance is not available');\n }\n if (typeof platforma.pFrameDriver === 'undefined') {\n throw new Error('PFrame driver is not available in the current Platforma instance');\n }\n return platforma.pFrameDriver;\n}\n\n// Core functions\nexport async function getColumnSpecById(handle: PFrameHandle, id: PObjectId): Promise<PColumnSpec | null> {\n try {\n const response = await getPFrameDriver().getColumnSpec(handle, id);\n return response ?? null;\n } catch (err) {\n console.error('PFrame: get single column error', err);\n return null;\n }\n}\n\nexport async function getSingleColumnData(\n handle: PFrameHandle,\n id: PObjectId,\n filters: PTableRecordSingleValueFilterV2[] = [],\n): Promise<SingleColumnData> {\n try {\n const response: FullPTableColumnData[] = await getPFrameDriver().calculateTableData(handle, {\n src: {\n type: 'column',\n column: id,\n },\n filters,\n sorting: [],\n } as CalculateTableDataRequest<PObjectId>);\n\n const axes = response.filter((item) => item.spec.type === 'axis');\n const columns = response.filter((item) => item.spec.type === 'column');\n\n return {\n axesData: axes.reduce((res: Record<string, PValue[]>, item) => {\n const id = getAxisId(item.spec.spec as AxisSpec);\n res[canonicalizeAxisId(id)] = convertColumnData(id.type, item.data);\n return res;\n }, {}),\n data: columns.length ? convertColumnData(columns[0].data.type, columns[0].data) : [],\n };\n } catch (err) {\n console.error('PFrame: calculateTableData error');\n throw err;\n }\n}\n\nexport async function getColumnUniqueValues(\n handle: PFrameHandle,\n id: PObjectId,\n limit = UNIQUE_VALUES_LIMIT,\n filters: PTableRecordSingleValueFilterV2[] = [],\n): Promise<UniqueValuesResponse> {\n const request: UniqueValuesRequest = {\n columnId: id,\n filters,\n limit,\n };\n\n try {\n const response = await getPFrameDriver().getUniqueValues(handle, request);\n if (response.overflow) {\n console.warn(`More than ${limit} values for ${id} column`);\n }\n return {\n values: Array.from(response.values.data as ArrayLike<unknown>).map(String),\n overflow: response.overflow,\n };\n } catch (err) {\n console.error('PFrame: getUniqueValues for column error');\n throw err;\n }\n}\n\nexport async function getAxisUniqueValues(\n handle: PFrameHandle,\n params: GetAxisUniqueValuesParams,\n): Promise<UniqueValuesResponse> {\n const { axisId, parentColumnIds, limit = UNIQUE_VALUES_LIMIT, filters = [] } = params;\n const strAxisId = canonicalizeAxisId(axisId);\n\n const parentsSpecs = (await Promise.all(parentColumnIds.map((p) => getColumnSpecById(handle, p))))\n .flatMap((spec, i): [PObjectId, PColumnSpec][] =>\n spec != null && spec.kind === 'PColumn' ? [[parentColumnIds[i], spec]] : [],\n )\n .filter(([_, spec]) =>\n spec.axesSpec.some((axisSpec) => canonicalizeAxisId(getAxisId(axisSpec)) === strAxisId),\n );\n\n if (parentsSpecs.length === 0) {\n console.warn('Axis unique values requested without parent columns');\n return { values: [], overflow: false };\n }\n\n try {\n const responses = await Promise.all(\n parentsSpecs.map(([id]) =>\n getPFrameDriver().getUniqueValues(handle, {\n columnId: id,\n axis: axisId,\n filters,\n limit,\n }),\n ),\n );\n\n const overflow = responses.some((r) => r.overflow);\n return {\n values: uniq(\n flatten(responses.map((r) =>\n Array.from(r.values.data as ArrayLike<unknown>).map(String),\n )),\n ),\n overflow,\n };\n } catch (err) {\n console.error('PFrame: getUniqueValues for axis error', err);\n return { values: [], overflow: false };\n }\n}\n\nexport async function getRequestColumnsFromSelectedSources(\n handle: PFrameHandle,\n sources: PObjectId[],\n): Promise<AxisId[]> {\n const result: AxisId[] = [];\n for (const item of sources) {\n const spec = await getColumnSpecById(handle, item);\n if (spec?.kind === 'PColumn') {\n result.push(...spec.axesSpec.map((spec) => getAxisId(spec)));\n }\n }\n return result;\n}\n\nexport async function getColumnsFull(\n handle: PFrameHandle,\n params: GetColumnsFullParams,\n): Promise<PColumnIdAndSpec[]> {\n const { selectedSources, strictlyCompatible, types, names, annotations, annotationsNotEmpty } = params;\n\n try {\n const request: FindColumnsRequest = {\n columnFilter: {\n type: types,\n name: names,\n annotationValue: annotations,\n annotationPattern: annotationsNotEmpty?.reduce((res, v) => {\n res[v] = '.+';\n return res;\n }, {} as Record<string, string>),\n },\n compatibleWith: await getRequestColumnsFromSelectedSources(handle, selectedSources),\n strictlyCompatible,\n };\n\n const response: FindColumnsResponse = await getPFrameDriver().findColumns(handle, request);\n return response.hits;\n } catch (err) {\n console.error('PFrame: findColumns error');\n throw err;\n }\n}\n\nexport async function getColumnOrAxisValueLabelsId(\n handle: PFrameHandle,\n strAxisId: CanonicalizedJson<AxisId>,\n): Promise<PObjectId | undefined> {\n const labelColumns = await getColumnsFull(handle, {\n selectedSources: [],\n strictlyCompatible: false,\n names: [PColumnName.Label],\n });\n\n const labelColumn = labelColumns.find(({ spec }) => {\n return spec && spec.axesSpec.length === 1 && canonicalizeAxisId(spec.axesSpec[0]) === strAxisId;\n });\n\n return labelColumn?.columnId;\n}\n\nfunction getDiscreteValuesFromAnnotation(columnSpec: PColumnSpec): undefined | SuggestionResponse {\n const discreteValuesStr = readAnnotation(columnSpec, Annotation.DiscreteValues);\n if (!discreteValuesStr) {\n return undefined;\n }\n\n try {\n const discreteValues: string[] = (JSON.parse(discreteValuesStr) as (string | number)[]).map((v) => String(v));\n const values = discreteValues.map((v) => ({ value: v, label: v })).sort(sortValuesPredicate);\n return { values, overflow: false };\n } catch {\n console.error(`Parsing error: discrete values annotation ${discreteValuesStr}`);\n return undefined;\n }\n}\n\nasync function getAxisValuesWithLabels(\n handle: PFrameHandle,\n params: {\n columnId: PObjectId;\n axisSpec: AxisSpec;\n labelsColumnId: PObjectId | undefined;\n limit?: number;\n searchQuery?: string;\n searchQueryValue?: string;\n },\n): Promise<SuggestionResponse> {\n const { columnId, axisSpec, labelsColumnId, limit, searchQuery, searchQueryValue } = params;\n const strAxisId = canonicalizeAxisId(getAxisId(axisSpec));\n\n let filters: PTableRecordSingleValueFilterV2[] = [];\n\n if (labelsColumnId) {\n if (searchQuery) {\n filters = [createSearchFilter(labelsColumnId, searchQuery)];\n }\n if (searchQueryValue) {\n filters = [createAxisSearchFilter(axisSpec, searchQueryValue)];\n }\n\n const { data: dataValues, axesData } = await getSingleColumnData(handle, labelsColumnId, filters);\n const axisKeys = axesData[strAxisId];\n const values: { value: string; label: string }[] = [];\n\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\n values.sort(sortValuesPredicate);\n return { values, overflow: !(limit === undefined || axisKeys.length < limit) };\n } else {\n const searchInLabelsOrValue = searchQuery ?? searchQueryValue;\n if (searchInLabelsOrValue) {\n filters = [createAxisSearchFilter(axisSpec, searchInLabelsOrValue)];\n }\n\n const response = await getAxisUniqueValues(handle, {\n axisId: getAxisId(axisSpec),\n parentColumnIds: [columnId],\n limit,\n filters,\n });\n\n const values = mapValuesToSuggestions(response.values);\n return { values, overflow: response.overflow };\n }\n}\n\nasync function getColumnValuesWithLabels(\n handle: PFrameHandle,\n params: {\n columnId: PObjectId;\n limit?: number;\n searchQuery?: string;\n searchQueryValue?: string;\n },\n): Promise<SuggestionResponse> {\n const { columnId, limit, searchQuery, searchQueryValue } = params;\n const searchInLabelsOrValue = searchQuery ?? searchQueryValue;\n\n const filters: PTableRecordSingleValueFilterV2[] = searchInLabelsOrValue\n ? [createSearchFilter(columnId, searchInLabelsOrValue)]\n : [];\n\n const response = await getColumnUniqueValues(handle, columnId, limit, filters);\n const values = mapValuesToSuggestions(response.values);\n return { values, overflow: response.overflow };\n}\n\nexport async function getUniqueSourceValuesWithLabels(\n handle: PFrameHandle,\n params: GetUniqueSourceValuesParams,\n): Promise<SuggestionResponse> {\n const { columnId, axisIdx, limit, searchQuery, searchQueryValue } = params;\n\n const selectedSourceSpec = await getColumnSpecById(handle, columnId);\n if (selectedSourceSpec == null || selectedSourceSpec.kind !== 'PColumn') {\n return { values: [], overflow: false };\n }\n\n // Try to get discrete values from annotation\n const discreteValues = getDiscreteValuesFromAnnotation(selectedSourceSpec);\n if (discreteValues != null) {\n return discreteValues;\n }\n\n // Handle axis values\n if (axisIdx != null) {\n const axisSpec = selectedSourceSpec.axesSpec[axisIdx];\n const strAxisId = canonicalizeAxisId(getAxisId(axisSpec));\n const labelsColumnId = await getColumnOrAxisValueLabelsId(handle, strAxisId);\n\n return getAxisValuesWithLabels(handle, {\n columnId,\n axisSpec,\n labelsColumnId,\n limit,\n searchQuery,\n searchQueryValue,\n });\n }\n\n // Handle column values\n return getColumnValuesWithLabels(handle, {\n columnId,\n limit,\n searchQuery,\n searchQueryValue,\n });\n}\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@platforma-sdk/model",
|
|
3
|
-
"version": "1.48.
|
|
3
|
+
"version": "1.48.14",
|
|
4
4
|
"description": "Platforma.bio SDK / Block Model",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
"canonicalize": "~2.1.0",
|
|
24
24
|
"es-toolkit": "^1.39.10",
|
|
25
25
|
"zod": "~3.23.8",
|
|
26
|
-
"@milaboratories/
|
|
26
|
+
"@milaboratories/pl-error-like": "1.12.5",
|
|
27
27
|
"@milaboratories/pl-model-common": "1.21.10",
|
|
28
|
-
"@milaboratories/
|
|
28
|
+
"@milaboratories/ptabler-expression-js": "1.1.7"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"typescript": "~5.6.3",
|
|
@@ -33,10 +33,10 @@
|
|
|
33
33
|
"@vitest/coverage-istanbul": "^4.0.16",
|
|
34
34
|
"fast-json-patch": "^3.1.1",
|
|
35
35
|
"@milaboratories/build-configs": "1.2.1",
|
|
36
|
-
"@milaboratories/eslint-config": "1.0.5",
|
|
37
36
|
"@milaboratories/helpers": "1.12.1",
|
|
38
37
|
"@milaboratories/ts-builder": "1.2.1",
|
|
39
|
-
"@milaboratories/ts-configs": "1.2.0"
|
|
38
|
+
"@milaboratories/ts-configs": "1.2.0",
|
|
39
|
+
"@milaboratories/eslint-config": "1.0.5"
|
|
40
40
|
},
|
|
41
41
|
"scripts": {
|
|
42
42
|
"type-check": "ts-builder types --target node",
|
|
@@ -19,6 +19,8 @@ import type {
|
|
|
19
19
|
} from '@milaboratories/pl-model-common';
|
|
20
20
|
import { pTableValue, Annotation, canonicalizeAxisId, getAxisId, readAnnotation, PColumnName } from '@milaboratories/pl-model-common';
|
|
21
21
|
|
|
22
|
+
export * from './columns';
|
|
23
|
+
|
|
22
24
|
// Types
|
|
23
25
|
type PValue = string | number | null;
|
|
24
26
|
|