@platforma-sdk/model 1.63.12 → 1.64.0
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/columns/column_collection_builder.cjs +105 -92
- package/dist/columns/column_collection_builder.cjs.map +1 -1
- package/dist/columns/column_collection_builder.d.ts +13 -12
- package/dist/columns/column_collection_builder.d.ts.map +1 -1
- package/dist/columns/column_collection_builder.js +107 -94
- package/dist/columns/column_collection_builder.js.map +1 -1
- package/dist/columns/column_selector.cjs +8 -80
- package/dist/columns/column_selector.cjs.map +1 -1
- package/dist/columns/column_selector.d.ts +6 -14
- package/dist/columns/column_selector.d.ts.map +1 -1
- package/dist/columns/column_selector.js +6 -77
- package/dist/columns/column_selector.js.map +1 -1
- package/dist/columns/column_snapshot.cjs +3 -3
- package/dist/columns/column_snapshot.cjs.map +1 -1
- package/dist/columns/column_snapshot.d.ts +3 -3
- package/dist/columns/column_snapshot.d.ts.map +1 -1
- package/dist/columns/column_snapshot.js +3 -3
- package/dist/columns/column_snapshot.js.map +1 -1
- package/dist/columns/column_snapshot_provider.cjs +1 -1
- package/dist/columns/column_snapshot_provider.cjs.map +1 -1
- package/dist/columns/column_snapshot_provider.d.ts +8 -8
- package/dist/columns/column_snapshot_provider.d.ts.map +1 -1
- package/dist/columns/column_snapshot_provider.js +1 -1
- package/dist/columns/column_snapshot_provider.js.map +1 -1
- package/dist/columns/ctx_column_sources.cjs.map +1 -1
- package/dist/columns/ctx_column_sources.d.ts +2 -1
- package/dist/columns/ctx_column_sources.d.ts.map +1 -1
- package/dist/columns/ctx_column_sources.js.map +1 -1
- package/dist/columns/expand_by_partition.cjs +106 -0
- package/dist/columns/expand_by_partition.cjs.map +1 -0
- package/dist/columns/expand_by_partition.d.ts +33 -0
- package/dist/columns/expand_by_partition.d.ts.map +1 -0
- package/dist/columns/expand_by_partition.js +105 -0
- package/dist/columns/expand_by_partition.js.map +1 -0
- package/dist/columns/index.cjs +1 -0
- package/dist/columns/index.d.ts +4 -3
- package/dist/columns/index.js +1 -0
- package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.cjs +26 -0
- package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.cjs.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.js +25 -0
- package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.js.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.cjs +68 -0
- package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.cjs.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.js +67 -0
- package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.js.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs +20 -9
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.d.ts +4 -0
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.d.ts.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.js +21 -10
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.js.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs +257 -175
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.d.ts +37 -21
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.d.ts.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.js +260 -175
- package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.js.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/discoverColumns.cjs +64 -0
- package/dist/components/PlDataTable/createPlDataTable/discoverColumns.cjs.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/discoverColumns.d.ts +17 -0
- package/dist/components/PlDataTable/createPlDataTable/discoverColumns.d.ts.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/discoverColumns.js +63 -0
- package/dist/components/PlDataTable/createPlDataTable/discoverColumns.js.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/index.cjs +2 -1
- package/dist/components/PlDataTable/createPlDataTable/index.cjs.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/index.d.ts +2 -1
- package/dist/components/PlDataTable/createPlDataTable/index.d.ts.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/index.js +2 -1
- package/dist/components/PlDataTable/createPlDataTable/index.js.map +1 -1
- package/dist/components/PlDataTable/createPlDataTable/utils.cjs +109 -0
- package/dist/components/PlDataTable/createPlDataTable/utils.cjs.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/utils.d.ts +19 -0
- package/dist/components/PlDataTable/createPlDataTable/utils.d.ts.map +1 -0
- package/dist/components/PlDataTable/createPlDataTable/utils.js +102 -0
- package/dist/components/PlDataTable/createPlDataTable/utils.js.map +1 -0
- package/dist/components/PlDataTable/index.cjs +3 -1
- package/dist/components/PlDataTable/index.d.ts +4 -2
- package/dist/components/PlDataTable/index.js +3 -1
- package/dist/components/PlDataTable/labels.cjs +25 -11
- package/dist/components/PlDataTable/labels.cjs.map +1 -1
- package/dist/components/PlDataTable/labels.js +25 -11
- package/dist/components/PlDataTable/labels.js.map +1 -1
- package/dist/components/PlDataTable/state-migration.cjs +4 -1
- package/dist/components/PlDataTable/state-migration.cjs.map +1 -1
- package/dist/components/PlDataTable/state-migration.d.ts.map +1 -1
- package/dist/components/PlDataTable/state-migration.js +4 -1
- package/dist/components/PlDataTable/state-migration.js.map +1 -1
- package/dist/components/PlDataTable/typesV5.d.ts +5 -4
- package/dist/components/PlDataTable/typesV5.d.ts.map +1 -1
- package/dist/components/index.cjs +3 -1
- package/dist/components/index.d.ts +3 -1
- package/dist/components/index.js +3 -1
- package/dist/index.cjs +13 -9
- package/dist/index.d.ts +8 -6
- package/dist/index.js +6 -4
- package/dist/labels/derive_distinct_labels.cjs +39 -27
- package/dist/labels/derive_distinct_labels.cjs.map +1 -1
- package/dist/labels/derive_distinct_labels.d.ts +15 -15
- package/dist/labels/derive_distinct_labels.d.ts.map +1 -1
- package/dist/labels/derive_distinct_labels.js +39 -27
- package/dist/labels/derive_distinct_labels.js.map +1 -1
- package/dist/labels/index.cjs +0 -1
- package/dist/labels/index.d.ts +1 -2
- package/dist/labels/index.js +0 -1
- package/dist/package.cjs +1 -1
- package/dist/package.js +1 -1
- package/dist/render/api.cjs +10 -3
- package/dist/render/api.cjs.map +1 -1
- package/dist/render/api.d.ts +2 -2
- package/dist/render/api.d.ts.map +1 -1
- package/dist/render/api.js +10 -3
- package/dist/render/api.js.map +1 -1
- package/dist/render/util/column_collection.cjs +3 -3
- package/dist/render/util/column_collection.cjs.map +1 -1
- package/dist/render/util/column_collection.d.ts.map +1 -1
- package/dist/render/util/column_collection.js +3 -3
- package/dist/render/util/column_collection.js.map +1 -1
- package/dist/render/util/label.cjs +2 -2
- package/dist/render/util/label.cjs.map +1 -1
- package/dist/render/util/label.js +2 -2
- package/dist/render/util/label.js.map +1 -1
- package/dist/render/util/pcolumn_data.cjs.map +1 -1
- package/dist/render/util/pcolumn_data.d.ts +2 -2
- package/dist/render/util/pcolumn_data.d.ts.map +1 -1
- package/dist/render/util/pcolumn_data.js.map +1 -1
- package/package.json +6 -6
- package/src/columns/column_collection_builder.test.ts +40 -27
- package/src/columns/column_collection_builder.ts +176 -131
- package/src/columns/column_selector.test.ts +17 -399
- package/src/columns/column_selector.ts +14 -127
- package/src/columns/column_snapshot.ts +5 -5
- package/src/columns/column_snapshot_provider.ts +11 -10
- package/src/columns/ctx_column_sources.ts +2 -2
- package/src/columns/expand_by_partition.test.ts +4 -4
- package/src/columns/expand_by_partition.ts +4 -3
- package/src/columns/index.ts +1 -0
- package/src/components/PlDataTable/createPlDataTable/createPTableDefV2.ts +42 -0
- package/src/components/PlDataTable/createPlDataTable/createPTableDefV3.ts +89 -0
- package/src/components/PlDataTable/createPlDataTable/createPlDataTableV2.ts +39 -11
- package/src/components/PlDataTable/createPlDataTable/createPlDataTableV3.ts +502 -313
- package/src/components/PlDataTable/createPlDataTable/discoverColumns.ts +122 -0
- package/src/components/PlDataTable/createPlDataTable/index.ts +4 -2
- package/src/components/PlDataTable/createPlDataTable/utils.test.ts +257 -0
- package/src/components/PlDataTable/createPlDataTable/utils.ts +160 -0
- package/src/components/PlDataTable/index.ts +13 -2
- package/src/components/PlDataTable/labels.ts +29 -18
- package/src/components/PlDataTable/state-migration.ts +3 -1
- package/src/components/PlDataTable/typesV5.ts +4 -4
- package/src/labels/derive_distinct_labels.test.ts +143 -45
- package/src/labels/derive_distinct_labels.ts +102 -49
- package/src/labels/index.ts +0 -1
- package/src/render/api.ts +15 -5
- package/src/render/util/column_collection.ts +4 -3
- package/src/render/util/label.ts +2 -2
- package/src/render/util/pcolumn_data.ts +5 -3
- package/dist/labels/write_labels_to_specs.cjs +0 -14
- package/dist/labels/write_labels_to_specs.cjs.map +0 -1
- package/dist/labels/write_labels_to_specs.d.ts +0 -7
- package/dist/labels/write_labels_to_specs.d.ts.map +0 -1
- package/dist/labels/write_labels_to_specs.js +0 -13
- package/dist/labels/write_labels_to_specs.js.map +0 -1
- package/src/labels/write_labels_to_specs.ts +0 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labels.cjs","names":["
|
|
1
|
+
{"version":3,"file":"labels.cjs","names":["ColumnCollectionBuilder","collectCtxColumnSnapshotProviders","PColumnName"],"sources":["../../../src/components/PlDataTable/labels.ts"],"sourcesContent":["import type { AxisId, PColumn, PColumnSpec, PObjectId } from \"@milaboratories/pl-model-common\";\nimport {\n getAxisId,\n isLabelColumn,\n matchAxisId,\n PColumnName,\n Services,\n type RequireServices,\n} from \"@milaboratories/pl-model-common\";\nimport type { PColumnDataUniversal, RenderCtxBase } from \"../../render\";\nimport { ColumnCollectionBuilder, collectCtxColumnSnapshotProviders } from \"../../columns\";\nimport { throwError } from \"@milaboratories/helpers\";\n\n/**\n * Get all label columns visible in the current render context\n * (result pool + block outputs + prerun).\n */\nexport function getAllLabelColumns<A, U, S extends RequireServices<typeof Services.PFrameSpec>>(\n ctx: RenderCtxBase<A, U, S>,\n): PColumn<PColumnDataUniversal>[] {\n const pframeSpec =\n ctx.services.pframeSpec ?? throwError(\"PFrameSpec service is required for label discovery.\");\n const collection = new ColumnCollectionBuilder(pframeSpec)\n .addSources(collectCtxColumnSnapshotProviders(ctx))\n .build({ allowPartialColumnList: true });\n try {\n return collection\n .findColumns({ include: { name: PColumnName.Label, axes: [] } })\n .reduce<PColumn<PColumnDataUniversal>[]>((acc, hit) => {\n const data = hit.data?.get();\n return data === undefined ? acc : [...acc, { id: hit.id, spec: hit.spec, data }];\n }, []);\n } finally {\n collection.dispose();\n }\n}\n\n/** Get label columns matching the provided columns from the result pool */\nexport function getMatchingLabelColumns(\n columns: { spec: PColumnSpec }[],\n allLabelColumns: PColumn<PColumnDataUniversal>[],\n): PColumn<PColumnDataUniversal>[] {\n // split input columns into label and value columns\n const inputLabelColumns: typeof columns = [];\n const inputValueColumns: typeof columns = [];\n for (const column of columns) {\n if (isLabelColumn(column.spec)) {\n inputLabelColumns.push(column);\n } else {\n inputValueColumns.push(column);\n }\n }\n\n // collect distinct axes of value columns\n const unlabeledAxes: AxisId[] = [];\n for (const column of inputValueColumns) {\n for (const axis of column.spec.axesSpec) {\n const axisId = getAxisId(axis);\n if (!unlabeledAxes.some((id) => matchAxisId(id, axisId))) {\n unlabeledAxes.push(axisId);\n }\n }\n }\n\n // remove axes matched by input label columns\n for (const labelColumn of inputLabelColumns) {\n const labelAxisId = getAxisId(labelColumn.spec.axesSpec[0]);\n const labelMatch = unlabeledAxes.findIndex((axisId) => matchAxisId(axisId, labelAxisId));\n if (labelMatch !== -1) {\n unlabeledAxes.splice(labelMatch, 1);\n }\n }\n\n // warning: changing this id will break backward compatibility\n const colId = (\n id: PObjectId,\n domain?: Record<string, string>,\n contextDomain?: Record<string, string>,\n ): PObjectId => {\n let wid = id.toString();\n if (domain) {\n for (const k in domain) {\n wid += k;\n wid += domain[k];\n }\n }\n if (contextDomain) {\n for (const k in contextDomain) {\n wid += k;\n wid += contextDomain[k];\n }\n }\n return wid as PObjectId;\n };\n\n // search label columns for unmatched axes\n const labelColumns: typeof allLabelColumns = [];\n for (const labelColumn of allLabelColumns) {\n const labelAxis = labelColumn.spec.axesSpec[0];\n const labelAxisId = getAxisId(labelAxis);\n const labelMatch = unlabeledAxes.findIndex((axisId) => matchAxisId(axisId, labelAxisId));\n if (labelMatch !== -1) {\n const axisId = unlabeledAxes[labelMatch];\n const dataDomainLen =\n Object.keys(axisId.domain ?? {}).length + Object.keys(axisId.contextDomain ?? {}).length;\n const labelDomainLen =\n Object.keys(labelAxis.domain ?? {}).length +\n Object.keys(labelAxis.contextDomain ?? {}).length;\n if (dataDomainLen > labelDomainLen) {\n labelColumns.push({\n id: colId(labelColumn.id, axisId.domain, axisId.contextDomain),\n spec: {\n ...labelColumn.spec,\n axesSpec: [{ ...axisId, annotations: labelAxis.annotations }],\n },\n data: labelColumn.data,\n });\n } else {\n labelColumns.push(labelColumn);\n }\n unlabeledAxes.splice(labelMatch, 1);\n }\n }\n return labelColumns;\n}\n"],"mappings":";;;;;;;;;;;AAiBA,SAAgB,mBACd,KACiC;CAGjC,MAAM,aAAa,IAAIA,kCAAAA,wBADrB,IAAI,SAAS,eAAA,GAAA,wBAAA,YAAyB,sDAAsD,CACpC,CACvD,WAAWC,2BAAAA,kCAAkC,IAAI,CAAC,CAClD,MAAM,EAAE,wBAAwB,MAAM,CAAC;AAC1C,KAAI;AACF,SAAO,WACJ,YAAY,EAAE,SAAS;GAAE,MAAMC,gCAAAA,YAAY;GAAO,MAAM,EAAE;GAAE,EAAE,CAAC,CAC/D,QAAyC,KAAK,QAAQ;GACrD,MAAM,OAAO,IAAI,MAAM,KAAK;AAC5B,UAAO,SAAS,KAAA,IAAY,MAAM,CAAC,GAAG,KAAK;IAAE,IAAI,IAAI;IAAI,MAAM,IAAI;IAAM;IAAM,CAAC;KAC/E,EAAE,CAAC;WACA;AACR,aAAW,SAAS;;;;AAKxB,SAAgB,wBACd,SACA,iBACiC;CAEjC,MAAM,oBAAoC,EAAE;CAC5C,MAAM,oBAAoC,EAAE;AAC5C,MAAK,MAAM,UAAU,QACnB,MAAA,GAAA,gCAAA,eAAkB,OAAO,KAAK,CAC5B,mBAAkB,KAAK,OAAO;KAE9B,mBAAkB,KAAK,OAAO;CAKlC,MAAM,gBAA0B,EAAE;AAClC,MAAK,MAAM,UAAU,kBACnB,MAAK,MAAM,QAAQ,OAAO,KAAK,UAAU;EACvC,MAAM,UAAA,GAAA,gCAAA,WAAmB,KAAK;AAC9B,MAAI,CAAC,cAAc,MAAM,QAAA,GAAA,gCAAA,aAAmB,IAAI,OAAO,CAAC,CACtD,eAAc,KAAK,OAAO;;AAMhC,MAAK,MAAM,eAAe,mBAAmB;EAC3C,MAAM,eAAA,GAAA,gCAAA,WAAwB,YAAY,KAAK,SAAS,GAAG;EAC3D,MAAM,aAAa,cAAc,WAAW,YAAA,GAAA,gCAAA,aAAuB,QAAQ,YAAY,CAAC;AACxF,MAAI,eAAe,GACjB,eAAc,OAAO,YAAY,EAAE;;CAKvC,MAAM,SACJ,IACA,QACA,kBACc;EACd,IAAI,MAAM,GAAG,UAAU;AACvB,MAAI,OACF,MAAK,MAAM,KAAK,QAAQ;AACtB,UAAO;AACP,UAAO,OAAO;;AAGlB,MAAI,cACF,MAAK,MAAM,KAAK,eAAe;AAC7B,UAAO;AACP,UAAO,cAAc;;AAGzB,SAAO;;CAIT,MAAM,eAAuC,EAAE;AAC/C,MAAK,MAAM,eAAe,iBAAiB;EACzC,MAAM,YAAY,YAAY,KAAK,SAAS;EAC5C,MAAM,eAAA,GAAA,gCAAA,WAAwB,UAAU;EACxC,MAAM,aAAa,cAAc,WAAW,YAAA,GAAA,gCAAA,aAAuB,QAAQ,YAAY,CAAC;AACxF,MAAI,eAAe,IAAI;GACrB,MAAM,SAAS,cAAc;AAM7B,OAJE,OAAO,KAAK,OAAO,UAAU,EAAE,CAAC,CAAC,SAAS,OAAO,KAAK,OAAO,iBAAiB,EAAE,CAAC,CAAC,SAElF,OAAO,KAAK,UAAU,UAAU,EAAE,CAAC,CAAC,SACpC,OAAO,KAAK,UAAU,iBAAiB,EAAE,CAAC,CAAC,OAE3C,cAAa,KAAK;IAChB,IAAI,MAAM,YAAY,IAAI,OAAO,QAAQ,OAAO,cAAc;IAC9D,MAAM;KACJ,GAAG,YAAY;KACf,UAAU,CAAC;MAAE,GAAG;MAAQ,aAAa,UAAU;MAAa,CAAC;KAC9D;IACD,MAAM,YAAY;IACnB,CAAC;OAEF,cAAa,KAAK,YAAY;AAEhC,iBAAc,OAAO,YAAY,EAAE;;;AAGvC,QAAO"}
|
|
@@ -1,16 +1,30 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "../../
|
|
1
|
+
import { ColumnCollectionBuilder } from "../../columns/column_collection_builder.js";
|
|
2
|
+
import { collectCtxColumnSnapshotProviders } from "../../columns/ctx_column_sources.js";
|
|
3
|
+
import "../../columns/index.js";
|
|
3
4
|
import { PColumnName, getAxisId, isLabelColumn, matchAxisId } from "@milaboratories/pl-model-common";
|
|
5
|
+
import { throwError } from "@milaboratories/helpers";
|
|
4
6
|
//#region src/components/PlDataTable/labels.ts
|
|
5
|
-
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Get all label columns visible in the current render context
|
|
9
|
+
* (result pool + block outputs + prerun).
|
|
10
|
+
*/
|
|
11
|
+
function getAllLabelColumns(ctx) {
|
|
12
|
+
const collection = new ColumnCollectionBuilder(ctx.services.pframeSpec ?? throwError("PFrameSpec service is required for label discovery.")).addSources(collectCtxColumnSnapshotProviders(ctx)).build({ allowPartialColumnList: true });
|
|
13
|
+
try {
|
|
14
|
+
return collection.findColumns({ include: {
|
|
15
|
+
name: PColumnName.Label,
|
|
16
|
+
axes: []
|
|
17
|
+
} }).reduce((acc, hit) => {
|
|
18
|
+
const data = hit.data?.get();
|
|
19
|
+
return data === void 0 ? acc : [...acc, {
|
|
20
|
+
id: hit.id,
|
|
21
|
+
spec: hit.spec,
|
|
22
|
+
data
|
|
23
|
+
}];
|
|
24
|
+
}, []);
|
|
25
|
+
} finally {
|
|
26
|
+
collection.dispose();
|
|
27
|
+
}
|
|
14
28
|
}
|
|
15
29
|
/** Get label columns matching the provided columns from the result pool */
|
|
16
30
|
function getMatchingLabelColumns(columns, allLabelColumns) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labels.js","names":[],"sources":["../../../src/components/PlDataTable/labels.ts"],"sourcesContent":["import type { AxisId, PColumn,
|
|
1
|
+
{"version":3,"file":"labels.js","names":[],"sources":["../../../src/components/PlDataTable/labels.ts"],"sourcesContent":["import type { AxisId, PColumn, PColumnSpec, PObjectId } from \"@milaboratories/pl-model-common\";\nimport {\n getAxisId,\n isLabelColumn,\n matchAxisId,\n PColumnName,\n Services,\n type RequireServices,\n} from \"@milaboratories/pl-model-common\";\nimport type { PColumnDataUniversal, RenderCtxBase } from \"../../render\";\nimport { ColumnCollectionBuilder, collectCtxColumnSnapshotProviders } from \"../../columns\";\nimport { throwError } from \"@milaboratories/helpers\";\n\n/**\n * Get all label columns visible in the current render context\n * (result pool + block outputs + prerun).\n */\nexport function getAllLabelColumns<A, U, S extends RequireServices<typeof Services.PFrameSpec>>(\n ctx: RenderCtxBase<A, U, S>,\n): PColumn<PColumnDataUniversal>[] {\n const pframeSpec =\n ctx.services.pframeSpec ?? throwError(\"PFrameSpec service is required for label discovery.\");\n const collection = new ColumnCollectionBuilder(pframeSpec)\n .addSources(collectCtxColumnSnapshotProviders(ctx))\n .build({ allowPartialColumnList: true });\n try {\n return collection\n .findColumns({ include: { name: PColumnName.Label, axes: [] } })\n .reduce<PColumn<PColumnDataUniversal>[]>((acc, hit) => {\n const data = hit.data?.get();\n return data === undefined ? acc : [...acc, { id: hit.id, spec: hit.spec, data }];\n }, []);\n } finally {\n collection.dispose();\n }\n}\n\n/** Get label columns matching the provided columns from the result pool */\nexport function getMatchingLabelColumns(\n columns: { spec: PColumnSpec }[],\n allLabelColumns: PColumn<PColumnDataUniversal>[],\n): PColumn<PColumnDataUniversal>[] {\n // split input columns into label and value columns\n const inputLabelColumns: typeof columns = [];\n const inputValueColumns: typeof columns = [];\n for (const column of columns) {\n if (isLabelColumn(column.spec)) {\n inputLabelColumns.push(column);\n } else {\n inputValueColumns.push(column);\n }\n }\n\n // collect distinct axes of value columns\n const unlabeledAxes: AxisId[] = [];\n for (const column of inputValueColumns) {\n for (const axis of column.spec.axesSpec) {\n const axisId = getAxisId(axis);\n if (!unlabeledAxes.some((id) => matchAxisId(id, axisId))) {\n unlabeledAxes.push(axisId);\n }\n }\n }\n\n // remove axes matched by input label columns\n for (const labelColumn of inputLabelColumns) {\n const labelAxisId = getAxisId(labelColumn.spec.axesSpec[0]);\n const labelMatch = unlabeledAxes.findIndex((axisId) => matchAxisId(axisId, labelAxisId));\n if (labelMatch !== -1) {\n unlabeledAxes.splice(labelMatch, 1);\n }\n }\n\n // warning: changing this id will break backward compatibility\n const colId = (\n id: PObjectId,\n domain?: Record<string, string>,\n contextDomain?: Record<string, string>,\n ): PObjectId => {\n let wid = id.toString();\n if (domain) {\n for (const k in domain) {\n wid += k;\n wid += domain[k];\n }\n }\n if (contextDomain) {\n for (const k in contextDomain) {\n wid += k;\n wid += contextDomain[k];\n }\n }\n return wid as PObjectId;\n };\n\n // search label columns for unmatched axes\n const labelColumns: typeof allLabelColumns = [];\n for (const labelColumn of allLabelColumns) {\n const labelAxis = labelColumn.spec.axesSpec[0];\n const labelAxisId = getAxisId(labelAxis);\n const labelMatch = unlabeledAxes.findIndex((axisId) => matchAxisId(axisId, labelAxisId));\n if (labelMatch !== -1) {\n const axisId = unlabeledAxes[labelMatch];\n const dataDomainLen =\n Object.keys(axisId.domain ?? {}).length + Object.keys(axisId.contextDomain ?? {}).length;\n const labelDomainLen =\n Object.keys(labelAxis.domain ?? {}).length +\n Object.keys(labelAxis.contextDomain ?? {}).length;\n if (dataDomainLen > labelDomainLen) {\n labelColumns.push({\n id: colId(labelColumn.id, axisId.domain, axisId.contextDomain),\n spec: {\n ...labelColumn.spec,\n axesSpec: [{ ...axisId, annotations: labelAxis.annotations }],\n },\n data: labelColumn.data,\n });\n } else {\n labelColumns.push(labelColumn);\n }\n unlabeledAxes.splice(labelMatch, 1);\n }\n }\n return labelColumns;\n}\n"],"mappings":";;;;;;;;;;AAiBA,SAAgB,mBACd,KACiC;CAGjC,MAAM,aAAa,IAAI,wBADrB,IAAI,SAAS,cAAc,WAAW,sDAAsD,CACpC,CACvD,WAAW,kCAAkC,IAAI,CAAC,CAClD,MAAM,EAAE,wBAAwB,MAAM,CAAC;AAC1C,KAAI;AACF,SAAO,WACJ,YAAY,EAAE,SAAS;GAAE,MAAM,YAAY;GAAO,MAAM,EAAE;GAAE,EAAE,CAAC,CAC/D,QAAyC,KAAK,QAAQ;GACrD,MAAM,OAAO,IAAI,MAAM,KAAK;AAC5B,UAAO,SAAS,KAAA,IAAY,MAAM,CAAC,GAAG,KAAK;IAAE,IAAI,IAAI;IAAI,MAAM,IAAI;IAAM;IAAM,CAAC;KAC/E,EAAE,CAAC;WACA;AACR,aAAW,SAAS;;;;AAKxB,SAAgB,wBACd,SACA,iBACiC;CAEjC,MAAM,oBAAoC,EAAE;CAC5C,MAAM,oBAAoC,EAAE;AAC5C,MAAK,MAAM,UAAU,QACnB,KAAI,cAAc,OAAO,KAAK,CAC5B,mBAAkB,KAAK,OAAO;KAE9B,mBAAkB,KAAK,OAAO;CAKlC,MAAM,gBAA0B,EAAE;AAClC,MAAK,MAAM,UAAU,kBACnB,MAAK,MAAM,QAAQ,OAAO,KAAK,UAAU;EACvC,MAAM,SAAS,UAAU,KAAK;AAC9B,MAAI,CAAC,cAAc,MAAM,OAAO,YAAY,IAAI,OAAO,CAAC,CACtD,eAAc,KAAK,OAAO;;AAMhC,MAAK,MAAM,eAAe,mBAAmB;EAC3C,MAAM,cAAc,UAAU,YAAY,KAAK,SAAS,GAAG;EAC3D,MAAM,aAAa,cAAc,WAAW,WAAW,YAAY,QAAQ,YAAY,CAAC;AACxF,MAAI,eAAe,GACjB,eAAc,OAAO,YAAY,EAAE;;CAKvC,MAAM,SACJ,IACA,QACA,kBACc;EACd,IAAI,MAAM,GAAG,UAAU;AACvB,MAAI,OACF,MAAK,MAAM,KAAK,QAAQ;AACtB,UAAO;AACP,UAAO,OAAO;;AAGlB,MAAI,cACF,MAAK,MAAM,KAAK,eAAe;AAC7B,UAAO;AACP,UAAO,cAAc;;AAGzB,SAAO;;CAIT,MAAM,eAAuC,EAAE;AAC/C,MAAK,MAAM,eAAe,iBAAiB;EACzC,MAAM,YAAY,YAAY,KAAK,SAAS;EAC5C,MAAM,cAAc,UAAU,UAAU;EACxC,MAAM,aAAa,cAAc,WAAW,WAAW,YAAY,QAAQ,YAAY,CAAC;AACxF,MAAI,eAAe,IAAI;GACrB,MAAM,SAAS,cAAc;AAM7B,OAJE,OAAO,KAAK,OAAO,UAAU,EAAE,CAAC,CAAC,SAAS,OAAO,KAAK,OAAO,iBAAiB,EAAE,CAAC,CAAC,SAElF,OAAO,KAAK,UAAU,UAAU,EAAE,CAAC,CAAC,SACpC,OAAO,KAAK,UAAU,iBAAiB,EAAE,CAAC,CAAC,OAE3C,cAAa,KAAK;IAChB,IAAI,MAAM,YAAY,IAAI,OAAO,QAAQ,OAAO,cAAc;IAC9D,MAAM;KACJ,GAAG,YAAY;KACf,UAAU,CAAC;MAAE,GAAG;MAAQ,aAAa,UAAU;MAAa,CAAC;KAC9D;IACD,MAAM,YAAY;IACnB,CAAC;OAEF,cAAa,KAAK,YAAY;AAEhC,iBAAc,OAAO,YAAY,EAAE;;;AAGvC,QAAO"}
|
|
@@ -48,7 +48,10 @@ function migrateV4toV5(state) {
|
|
|
48
48
|
stateCache: migratedCache,
|
|
49
49
|
pTableParams: currentCache && oldSourceId ? {
|
|
50
50
|
sourceId: oldSourceId,
|
|
51
|
-
hiddenColIds: state.pTableParams.hiddenColIds
|
|
51
|
+
hiddenColIds: state.pTableParams.hiddenColIds?.map((id) => ({
|
|
52
|
+
type: "column",
|
|
53
|
+
id
|
|
54
|
+
})) ?? null,
|
|
52
55
|
filters: require_distill.distillFilterSpec(currentCache.filtersState),
|
|
53
56
|
sorting: state.pTableParams.sorting
|
|
54
57
|
} : createDefaultPTableParams()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-migration.cjs","names":["distillFilterSpec"],"sources":["../../../src/components/PlDataTable/state-migration.ts"],"sourcesContent":["import type {\n AxisId,\n CanonicalizedJson,\n PObjectId,\n PTableColumnId,\n PTableColumnSpec,\n PTableRecordFilter,\n PTableSorting,\n} from \"@milaboratories/pl-model-common\";\nimport { canonicalizeJson } from \"@milaboratories/pl-model-common\";\nimport { distillFilterSpec } from \"../../filters\";\nimport type { PlDataTableFilterState, PlTableFilter } from \"./typesV4\";\nimport type {\n PlDataTableFiltersWithMeta,\n PlDataTableGridStateCore,\n PlDataTableSheetState,\n PlDataTableStateV2CacheEntry,\n PlDataTableStateV2Normalized,\n PTableParamsV2,\n} from \"./typesV5\";\n\n/**\n * PlDataTableV2 persisted state\n */\nexport type PlDataTableStateV2 =\n // Old versions of the state\n | {\n // no version\n gridState: {\n columnOrder?: {\n orderedColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sort?: {\n sortModel: {\n colId: CanonicalizedJson<PTableColumnSpec>;\n sort: \"asc\" | \"desc\";\n }[];\n };\n columnVisibility?: {\n hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sourceId?: string;\n sheets?: Record<CanonicalizedJson<AxisId>, string | number>;\n };\n pTableParams?: {\n sorting?: PTableSorting[];\n filters?: PTableRecordFilter[];\n };\n }\n | {\n version: 2;\n stateCache: {\n sourceId: string;\n gridState: {\n columnOrder?: {\n orderedColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sort?: {\n sortModel: {\n colId: CanonicalizedJson<PTableColumnSpec>;\n sort: \"asc\" | \"desc\";\n }[];\n };\n columnVisibility?: {\n hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n };\n sheetsState: PlDataTableSheetState[];\n }[];\n pTableParams: {\n hiddenColIds: PObjectId[] | null;\n filters: PTableRecordFilter[];\n sorting: PTableSorting[];\n };\n }\n | {\n version: 3;\n stateCache: {\n sourceId: string;\n gridState: {\n columnOrder?: {\n orderedColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sort?: {\n sortModel: {\n colId: CanonicalizedJson<PTableColumnSpec>;\n sort: \"asc\" | \"desc\";\n }[];\n };\n columnVisibility?: {\n hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n };\n sheetsState: PlDataTableSheetState[];\n filtersState: PlDataTableFilterState[];\n }[];\n pTableParams: PTableParamsV2;\n }\n | {\n version: 4;\n stateCache: {\n sourceId: string;\n gridState: PlDataTableGridStateCore;\n sheetsState: PlDataTableSheetState[];\n filtersState: PlDataTableFilterState[];\n }[];\n /** Old format; only fields used in migration are typed */\n pTableParams: {\n sourceId: string | null;\n hiddenColIds: PObjectId[] | null;\n sorting: PTableSorting[];\n };\n }\n // Normalized state\n | PlDataTableStateV2Normalized;\n\n/** Upgrade PlDataTableStateV2 to the latest version */\nexport function upgradePlDataTableStateV2(\n state: PlDataTableStateV2 | undefined,\n): PlDataTableStateV2Normalized {\n // Block just added, had no state, model started earlier than the UI\n if (!state) {\n return createPlDataTableStateV2();\n }\n // v1 -> v2\n if (!(\"version\" in state)) {\n // Non upgradeable as sourceId calculation algorithm has changed, resetting state to default\n state = createPlDataTableStateV2();\n }\n // v2 -> v3\n if (state.version === 2) {\n state = {\n version: 3,\n stateCache: state.stateCache.map((entry) => ({\n ...entry,\n filtersState: [],\n })),\n pTableParams: createDefaultPTableParams(),\n };\n }\n // v3 -> v4\n if (state.version === 3) {\n // Non upgradeable as column ids calculation algorithm has changed, resetting state to default\n state = createPlDataTableStateV2();\n }\n // v4 -> v5: migrate per-column filters to tree-based format\n if (state.version === 4) {\n state = migrateV4toV5(state);\n }\n return state;\n}\n\n/** Migrate v4 state to v5: convert per-column filters to tree-based format */\nfunction migrateV4toV5(\n state: Extract<PlDataTableStateV2, { version: 4 }>,\n): PlDataTableStateV2Normalized {\n let idCounter = 0;\n const nextId = () => ++idCounter;\n\n const migratedCache: PlDataTableStateV2CacheEntry[] = state.stateCache.map((entry) => {\n const leaves: PlDataTableFiltersWithMeta[\"filters\"] = [];\n for (const f of entry.filtersState) {\n if (f.filter !== null && !f.filter.disabled) {\n const column = canonicalizeJson(f.id);\n leaves.push(migrateTableFilter(column, f.filter.value, nextId));\n }\n }\n const filtersState: PlDataTableFiltersWithMeta | null =\n leaves.length > 0 ? { id: nextId(), type: \"and\", filters: leaves } : null;\n\n return {\n sourceId: entry.sourceId,\n gridState: entry.gridState,\n sheetsState: entry.sheetsState,\n filtersState,\n };\n });\n\n const oldSourceId = state.pTableParams.sourceId;\n const currentCache = oldSourceId\n ? migratedCache.find((e) => e.sourceId === oldSourceId)\n : undefined;\n\n return {\n version: 5,\n stateCache: migratedCache,\n pTableParams:\n currentCache && oldSourceId\n ? {\n sourceId: oldSourceId,\n hiddenColIds: state.pTableParams.hiddenColIds,\n filters: distillFilterSpec(currentCache.filtersState),\n sorting: state.pTableParams.sorting,\n }\n : createDefaultPTableParams(),\n };\n}\n\n/** Migrate a single per-column PlTableFilter to a tree-based FilterSpec node */\nfunction migrateTableFilter(\n column: CanonicalizedJson<PTableColumnId>,\n filter: PlTableFilter,\n nextId: () => number,\n): PlDataTableFiltersWithMeta[\"filters\"][number] {\n const id = nextId();\n switch (filter.type) {\n case \"isNA\":\n return { id, type: \"isNA\", column };\n case \"isNotNA\":\n return { id, type: \"isNotNA\", column };\n case \"number_equals\":\n return { id, type: \"equal\", column, x: filter.reference };\n case \"number_notEquals\":\n return { id, type: \"notEqual\", column, x: filter.reference };\n case \"number_greaterThan\":\n return { id, type: \"greaterThan\", column, x: filter.reference };\n case \"number_greaterThanOrEqualTo\":\n return { id, type: \"greaterThanOrEqual\", column, x: filter.reference };\n case \"number_lessThan\":\n return { id, type: \"lessThan\", column, x: filter.reference };\n case \"number_lessThanOrEqualTo\":\n return { id, type: \"lessThanOrEqual\", column, x: filter.reference };\n case \"number_between\":\n return {\n id,\n type: \"and\",\n filters: [\n filter.includeLowerBound\n ? { id: nextId(), type: \"greaterThanOrEqual\" as const, column, x: filter.lowerBound }\n : { id: nextId(), type: \"greaterThan\" as const, column, x: filter.lowerBound },\n filter.includeUpperBound\n ? { id: nextId(), type: \"lessThanOrEqual\" as const, column, x: filter.upperBound }\n : { id: nextId(), type: \"lessThan\" as const, column, x: filter.upperBound },\n ],\n };\n case \"string_equals\":\n return { id, type: \"patternEquals\", column, value: filter.reference };\n case \"string_notEquals\":\n return { id, type: \"patternNotEquals\", column, value: filter.reference };\n case \"string_contains\":\n return { id, type: \"patternContainSubsequence\", column, value: filter.reference };\n case \"string_doesNotContain\":\n return { id, type: \"patternNotContainSubsequence\", column, value: filter.reference };\n case \"string_matches\":\n return { id, type: \"patternMatchesRegularExpression\", column, value: filter.reference };\n case \"string_doesNotMatch\":\n return {\n id,\n type: \"not\",\n filter: {\n id: nextId(),\n type: \"patternMatchesRegularExpression\",\n column,\n value: filter.reference,\n },\n };\n case \"string_containsFuzzyMatch\":\n return {\n id,\n type: \"patternFuzzyContainSubsequence\",\n column,\n value: filter.reference,\n maxEdits: filter.maxEdits,\n substitutionsOnly: filter.substitutionsOnly,\n ...(filter.wildcard !== undefined ? { wildcard: filter.wildcard } : {}),\n };\n }\n}\n\nexport function createDefaultPTableParams(): PTableParamsV2 {\n return {\n sourceId: null,\n hiddenColIds: null,\n filters: null,\n sorting: [],\n };\n}\n\nexport function createPlDataTableStateV2(): PlDataTableStateV2Normalized {\n return {\n version: 5,\n stateCache: [],\n pTableParams: createDefaultPTableParams(),\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"state-migration.cjs","names":["distillFilterSpec"],"sources":["../../../src/components/PlDataTable/state-migration.ts"],"sourcesContent":["import type {\n AxisId,\n CanonicalizedJson,\n PObjectId,\n PTableColumnId,\n PTableColumnSpec,\n PTableRecordFilter,\n PTableSorting,\n} from \"@milaboratories/pl-model-common\";\nimport { canonicalizeJson } from \"@milaboratories/pl-model-common\";\nimport { distillFilterSpec } from \"../../filters\";\nimport type { PlDataTableFilterState, PlTableFilter } from \"./typesV4\";\nimport type {\n PlDataTableFiltersWithMeta,\n PlDataTableGridStateCore,\n PlDataTableSheetState,\n PlDataTableStateV2CacheEntry,\n PlDataTableStateV2Normalized,\n PTableParamsV2,\n} from \"./typesV5\";\n\n/**\n * PlDataTableV2 persisted state\n */\nexport type PlDataTableStateV2 =\n // Old versions of the state\n | {\n // no version\n gridState: {\n columnOrder?: {\n orderedColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sort?: {\n sortModel: {\n colId: CanonicalizedJson<PTableColumnSpec>;\n sort: \"asc\" | \"desc\";\n }[];\n };\n columnVisibility?: {\n hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sourceId?: string;\n sheets?: Record<CanonicalizedJson<AxisId>, string | number>;\n };\n pTableParams?: {\n sorting?: PTableSorting[];\n filters?: PTableRecordFilter[];\n };\n }\n | {\n version: 2;\n stateCache: {\n sourceId: string;\n gridState: {\n columnOrder?: {\n orderedColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sort?: {\n sortModel: {\n colId: CanonicalizedJson<PTableColumnSpec>;\n sort: \"asc\" | \"desc\";\n }[];\n };\n columnVisibility?: {\n hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n };\n sheetsState: PlDataTableSheetState[];\n }[];\n pTableParams: {\n hiddenColIds: PObjectId[] | null;\n filters: PTableRecordFilter[];\n sorting: PTableSorting[];\n };\n }\n | {\n version: 3;\n stateCache: {\n sourceId: string;\n gridState: {\n columnOrder?: {\n orderedColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sort?: {\n sortModel: {\n colId: CanonicalizedJson<PTableColumnSpec>;\n sort: \"asc\" | \"desc\";\n }[];\n };\n columnVisibility?: {\n hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n };\n sheetsState: PlDataTableSheetState[];\n filtersState: PlDataTableFilterState[];\n }[];\n pTableParams: PTableParamsV2;\n }\n | {\n version: 4;\n stateCache: {\n sourceId: string;\n gridState: PlDataTableGridStateCore;\n sheetsState: PlDataTableSheetState[];\n filtersState: PlDataTableFilterState[];\n }[];\n /** Old format; only fields used in migration are typed */\n pTableParams: {\n sourceId: string | null;\n hiddenColIds: PObjectId[] | null;\n sorting: PTableSorting[];\n };\n }\n // Normalized state\n | PlDataTableStateV2Normalized;\n\n/** Upgrade PlDataTableStateV2 to the latest version */\nexport function upgradePlDataTableStateV2(\n state: PlDataTableStateV2 | undefined,\n): PlDataTableStateV2Normalized {\n // Block just added, had no state, model started earlier than the UI\n if (!state) {\n return createPlDataTableStateV2();\n }\n // v1 -> v2\n if (!(\"version\" in state)) {\n // Non upgradeable as sourceId calculation algorithm has changed, resetting state to default\n state = createPlDataTableStateV2();\n }\n // v2 -> v3\n if (state.version === 2) {\n state = {\n version: 3,\n stateCache: state.stateCache.map((entry) => ({\n ...entry,\n filtersState: [],\n })),\n pTableParams: createDefaultPTableParams(),\n };\n }\n // v3 -> v4\n if (state.version === 3) {\n // Non upgradeable as column ids calculation algorithm has changed, resetting state to default\n state = createPlDataTableStateV2();\n }\n // v4 -> v5: migrate per-column filters to tree-based format\n if (state.version === 4) {\n state = migrateV4toV5(state);\n }\n return state;\n}\n\n/** Migrate v4 state to v5: convert per-column filters to tree-based format */\nfunction migrateV4toV5(\n state: Extract<PlDataTableStateV2, { version: 4 }>,\n): PlDataTableStateV2Normalized {\n let idCounter = 0;\n const nextId = () => ++idCounter;\n\n const migratedCache: PlDataTableStateV2CacheEntry[] = state.stateCache.map((entry) => {\n const leaves: PlDataTableFiltersWithMeta[\"filters\"] = [];\n for (const f of entry.filtersState) {\n if (f.filter !== null && !f.filter.disabled) {\n const column = canonicalizeJson(f.id);\n leaves.push(migrateTableFilter(column, f.filter.value, nextId));\n }\n }\n const filtersState: PlDataTableFiltersWithMeta | null =\n leaves.length > 0 ? { id: nextId(), type: \"and\", filters: leaves } : null;\n\n return {\n sourceId: entry.sourceId,\n gridState: entry.gridState,\n sheetsState: entry.sheetsState,\n filtersState,\n };\n });\n\n const oldSourceId = state.pTableParams.sourceId;\n const currentCache = oldSourceId\n ? migratedCache.find((e) => e.sourceId === oldSourceId)\n : undefined;\n\n return {\n version: 5,\n stateCache: migratedCache,\n pTableParams:\n currentCache && oldSourceId\n ? {\n sourceId: oldSourceId,\n hiddenColIds:\n state.pTableParams.hiddenColIds?.map((id) => ({ type: \"column\" as const, id })) ??\n null,\n filters: distillFilterSpec(currentCache.filtersState),\n sorting: state.pTableParams.sorting,\n }\n : createDefaultPTableParams(),\n };\n}\n\n/** Migrate a single per-column PlTableFilter to a tree-based FilterSpec node */\nfunction migrateTableFilter(\n column: CanonicalizedJson<PTableColumnId>,\n filter: PlTableFilter,\n nextId: () => number,\n): PlDataTableFiltersWithMeta[\"filters\"][number] {\n const id = nextId();\n switch (filter.type) {\n case \"isNA\":\n return { id, type: \"isNA\", column };\n case \"isNotNA\":\n return { id, type: \"isNotNA\", column };\n case \"number_equals\":\n return { id, type: \"equal\", column, x: filter.reference };\n case \"number_notEquals\":\n return { id, type: \"notEqual\", column, x: filter.reference };\n case \"number_greaterThan\":\n return { id, type: \"greaterThan\", column, x: filter.reference };\n case \"number_greaterThanOrEqualTo\":\n return { id, type: \"greaterThanOrEqual\", column, x: filter.reference };\n case \"number_lessThan\":\n return { id, type: \"lessThan\", column, x: filter.reference };\n case \"number_lessThanOrEqualTo\":\n return { id, type: \"lessThanOrEqual\", column, x: filter.reference };\n case \"number_between\":\n return {\n id,\n type: \"and\",\n filters: [\n filter.includeLowerBound\n ? { id: nextId(), type: \"greaterThanOrEqual\" as const, column, x: filter.lowerBound }\n : { id: nextId(), type: \"greaterThan\" as const, column, x: filter.lowerBound },\n filter.includeUpperBound\n ? { id: nextId(), type: \"lessThanOrEqual\" as const, column, x: filter.upperBound }\n : { id: nextId(), type: \"lessThan\" as const, column, x: filter.upperBound },\n ],\n };\n case \"string_equals\":\n return { id, type: \"patternEquals\", column, value: filter.reference };\n case \"string_notEquals\":\n return { id, type: \"patternNotEquals\", column, value: filter.reference };\n case \"string_contains\":\n return { id, type: \"patternContainSubsequence\", column, value: filter.reference };\n case \"string_doesNotContain\":\n return { id, type: \"patternNotContainSubsequence\", column, value: filter.reference };\n case \"string_matches\":\n return { id, type: \"patternMatchesRegularExpression\", column, value: filter.reference };\n case \"string_doesNotMatch\":\n return {\n id,\n type: \"not\",\n filter: {\n id: nextId(),\n type: \"patternMatchesRegularExpression\",\n column,\n value: filter.reference,\n },\n };\n case \"string_containsFuzzyMatch\":\n return {\n id,\n type: \"patternFuzzyContainSubsequence\",\n column,\n value: filter.reference,\n maxEdits: filter.maxEdits,\n substitutionsOnly: filter.substitutionsOnly,\n ...(filter.wildcard !== undefined ? { wildcard: filter.wildcard } : {}),\n };\n }\n}\n\nexport function createDefaultPTableParams(): PTableParamsV2 {\n return {\n sourceId: null,\n hiddenColIds: null,\n filters: null,\n sorting: [],\n };\n}\n\nexport function createPlDataTableStateV2(): PlDataTableStateV2Normalized {\n return {\n version: 5,\n stateCache: [],\n pTableParams: createDefaultPTableParams(),\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-migration.d.ts","names":[],"sources":["../../../src/components/PlDataTable/state-migration.ts"],"mappings":";;;;;;;AAwBA;KAAY,kBAAA;EAIN,SAAA;IACE,WAAA;MACE,aAAA,EAAe,iBAAA,CAAkB,gBAAA;IAAA;IAEnC,IAAA;MACE,SAAA;QACE,KAAA,EAAO,iBAAA,CAAkB,gBAAA;QACzB,IAAA;MAAA;IAAA;IAGJ,gBAAA;MACE,YAAA,EAAc,iBAAA,CAAkB,gBAAA;IAAA;IAElC,QAAA;IACA,MAAA,GAAS,MAAA,CAAO,iBAAA,CAAkB,MAAA;EAAA;EAEpC,YAAA;IACE,OAAA,GAAU,aAAA;IACV,OAAA,GAAU,kBAAA;EAAA;AAAA;EAIZ,OAAA;EACA,UAAA;IACE,QAAA;IACA,SAAA;MACE,WAAA;QACE,aAAA,EAAe,iBAAA,CAAkB,gBAAA;MAAA;MAEnC,IAAA;QACE,SAAA;UACE,KAAA,EAAO,iBAAA,CAAkB,gBAAA;UACzB,IAAA;QAAA;MAAA;MAGJ,gBAAA;QACE,YAAA,EAAc,iBAAA,CAAkB,gBAAA;MAAA;IAAA;IAGpC,WAAA,EAAa,qBAAA;EAAA;EAEf,YAAA;IACE,YAAA,EAAc,SAAA;IACd,OAAA,EAAS,kBAAA;IACT,OAAA,EAAS,aAAA;EAAA;AAAA;EAIX,OAAA;EACA,UAAA;IACE,QAAA;IACA,SAAA;MACE,WAAA;QACE,aAAA,EAAe,iBAAA,CAAkB,gBAAA;MAAA;MAEnC,IAAA;QACE,SAAA;UACE,KAAA,EAAO,iBAAA,CAAkB,gBAAA;UACzB,IAAA;QAAA;MAAA;MAGJ,gBAAA;QACE,YAAA,EAAc,iBAAA,CAAkB,gBAAA;MAAA;IAAA;IAGpC,WAAA,EAAa,qBAAA;IACb,YAAA,EAAc,sBAAA;EAAA;EAEhB,YAAA,EAAc,cAAA;AAAA;EAGd,OAAA;EACA,UAAA;IACE,QAAA;IACA,SAAA,EAAW,wBAAA;IACX,WAAA,EAAa,qBAAA;IACb,YAAA,EAAc,sBAAA;EAAA,KA7CD;EAgDf,YAAA;IACE,QAAA;IACA,YAAA,EAAc,SAAA;IACd,OAAA,EAAS,aAAA;EAAA;AAAA,IAIb,4BAAA;;iBAGY,yBAAA,CACd,KAAA,EAAO,kBAAA,eACN,4BAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"state-migration.d.ts","names":[],"sources":["../../../src/components/PlDataTable/state-migration.ts"],"mappings":";;;;;;;AAwBA;KAAY,kBAAA;EAIN,SAAA;IACE,WAAA;MACE,aAAA,EAAe,iBAAA,CAAkB,gBAAA;IAAA;IAEnC,IAAA;MACE,SAAA;QACE,KAAA,EAAO,iBAAA,CAAkB,gBAAA;QACzB,IAAA;MAAA;IAAA;IAGJ,gBAAA;MACE,YAAA,EAAc,iBAAA,CAAkB,gBAAA;IAAA;IAElC,QAAA;IACA,MAAA,GAAS,MAAA,CAAO,iBAAA,CAAkB,MAAA;EAAA;EAEpC,YAAA;IACE,OAAA,GAAU,aAAA;IACV,OAAA,GAAU,kBAAA;EAAA;AAAA;EAIZ,OAAA;EACA,UAAA;IACE,QAAA;IACA,SAAA;MACE,WAAA;QACE,aAAA,EAAe,iBAAA,CAAkB,gBAAA;MAAA;MAEnC,IAAA;QACE,SAAA;UACE,KAAA,EAAO,iBAAA,CAAkB,gBAAA;UACzB,IAAA;QAAA;MAAA;MAGJ,gBAAA;QACE,YAAA,EAAc,iBAAA,CAAkB,gBAAA;MAAA;IAAA;IAGpC,WAAA,EAAa,qBAAA;EAAA;EAEf,YAAA;IACE,YAAA,EAAc,SAAA;IACd,OAAA,EAAS,kBAAA;IACT,OAAA,EAAS,aAAA;EAAA;AAAA;EAIX,OAAA;EACA,UAAA;IACE,QAAA;IACA,SAAA;MACE,WAAA;QACE,aAAA,EAAe,iBAAA,CAAkB,gBAAA;MAAA;MAEnC,IAAA;QACE,SAAA;UACE,KAAA,EAAO,iBAAA,CAAkB,gBAAA;UACzB,IAAA;QAAA;MAAA;MAGJ,gBAAA;QACE,YAAA,EAAc,iBAAA,CAAkB,gBAAA;MAAA;IAAA;IAGpC,WAAA,EAAa,qBAAA;IACb,YAAA,EAAc,sBAAA;EAAA;EAEhB,YAAA,EAAc,cAAA;AAAA;EAGd,OAAA;EACA,UAAA;IACE,QAAA;IACA,SAAA,EAAW,wBAAA;IACX,WAAA,EAAa,qBAAA;IACb,YAAA,EAAc,sBAAA;EAAA,KA7CD;EAgDf,YAAA;IACE,QAAA;IACA,YAAA,EAAc,SAAA;IACd,OAAA,EAAS,aAAA;EAAA;AAAA,IAIb,4BAAA;;iBAGY,yBAAA,CACd,KAAA,EAAO,kBAAA,eACN,4BAAA;AAAA,iBAwJa,yBAAA,CAAA,GAA6B,cAAA;AAAA,iBAS7B,wBAAA,CAAA,GAA4B,4BAAA"}
|
|
@@ -47,7 +47,10 @@ function migrateV4toV5(state) {
|
|
|
47
47
|
stateCache: migratedCache,
|
|
48
48
|
pTableParams: currentCache && oldSourceId ? {
|
|
49
49
|
sourceId: oldSourceId,
|
|
50
|
-
hiddenColIds: state.pTableParams.hiddenColIds
|
|
50
|
+
hiddenColIds: state.pTableParams.hiddenColIds?.map((id) => ({
|
|
51
|
+
type: "column",
|
|
52
|
+
id
|
|
53
|
+
})) ?? null,
|
|
51
54
|
filters: distillFilterSpec(currentCache.filtersState),
|
|
52
55
|
sorting: state.pTableParams.sorting
|
|
53
56
|
} : createDefaultPTableParams()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-migration.js","names":[],"sources":["../../../src/components/PlDataTable/state-migration.ts"],"sourcesContent":["import type {\n AxisId,\n CanonicalizedJson,\n PObjectId,\n PTableColumnId,\n PTableColumnSpec,\n PTableRecordFilter,\n PTableSorting,\n} from \"@milaboratories/pl-model-common\";\nimport { canonicalizeJson } from \"@milaboratories/pl-model-common\";\nimport { distillFilterSpec } from \"../../filters\";\nimport type { PlDataTableFilterState, PlTableFilter } from \"./typesV4\";\nimport type {\n PlDataTableFiltersWithMeta,\n PlDataTableGridStateCore,\n PlDataTableSheetState,\n PlDataTableStateV2CacheEntry,\n PlDataTableStateV2Normalized,\n PTableParamsV2,\n} from \"./typesV5\";\n\n/**\n * PlDataTableV2 persisted state\n */\nexport type PlDataTableStateV2 =\n // Old versions of the state\n | {\n // no version\n gridState: {\n columnOrder?: {\n orderedColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sort?: {\n sortModel: {\n colId: CanonicalizedJson<PTableColumnSpec>;\n sort: \"asc\" | \"desc\";\n }[];\n };\n columnVisibility?: {\n hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sourceId?: string;\n sheets?: Record<CanonicalizedJson<AxisId>, string | number>;\n };\n pTableParams?: {\n sorting?: PTableSorting[];\n filters?: PTableRecordFilter[];\n };\n }\n | {\n version: 2;\n stateCache: {\n sourceId: string;\n gridState: {\n columnOrder?: {\n orderedColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sort?: {\n sortModel: {\n colId: CanonicalizedJson<PTableColumnSpec>;\n sort: \"asc\" | \"desc\";\n }[];\n };\n columnVisibility?: {\n hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n };\n sheetsState: PlDataTableSheetState[];\n }[];\n pTableParams: {\n hiddenColIds: PObjectId[] | null;\n filters: PTableRecordFilter[];\n sorting: PTableSorting[];\n };\n }\n | {\n version: 3;\n stateCache: {\n sourceId: string;\n gridState: {\n columnOrder?: {\n orderedColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sort?: {\n sortModel: {\n colId: CanonicalizedJson<PTableColumnSpec>;\n sort: \"asc\" | \"desc\";\n }[];\n };\n columnVisibility?: {\n hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n };\n sheetsState: PlDataTableSheetState[];\n filtersState: PlDataTableFilterState[];\n }[];\n pTableParams: PTableParamsV2;\n }\n | {\n version: 4;\n stateCache: {\n sourceId: string;\n gridState: PlDataTableGridStateCore;\n sheetsState: PlDataTableSheetState[];\n filtersState: PlDataTableFilterState[];\n }[];\n /** Old format; only fields used in migration are typed */\n pTableParams: {\n sourceId: string | null;\n hiddenColIds: PObjectId[] | null;\n sorting: PTableSorting[];\n };\n }\n // Normalized state\n | PlDataTableStateV2Normalized;\n\n/** Upgrade PlDataTableStateV2 to the latest version */\nexport function upgradePlDataTableStateV2(\n state: PlDataTableStateV2 | undefined,\n): PlDataTableStateV2Normalized {\n // Block just added, had no state, model started earlier than the UI\n if (!state) {\n return createPlDataTableStateV2();\n }\n // v1 -> v2\n if (!(\"version\" in state)) {\n // Non upgradeable as sourceId calculation algorithm has changed, resetting state to default\n state = createPlDataTableStateV2();\n }\n // v2 -> v3\n if (state.version === 2) {\n state = {\n version: 3,\n stateCache: state.stateCache.map((entry) => ({\n ...entry,\n filtersState: [],\n })),\n pTableParams: createDefaultPTableParams(),\n };\n }\n // v3 -> v4\n if (state.version === 3) {\n // Non upgradeable as column ids calculation algorithm has changed, resetting state to default\n state = createPlDataTableStateV2();\n }\n // v4 -> v5: migrate per-column filters to tree-based format\n if (state.version === 4) {\n state = migrateV4toV5(state);\n }\n return state;\n}\n\n/** Migrate v4 state to v5: convert per-column filters to tree-based format */\nfunction migrateV4toV5(\n state: Extract<PlDataTableStateV2, { version: 4 }>,\n): PlDataTableStateV2Normalized {\n let idCounter = 0;\n const nextId = () => ++idCounter;\n\n const migratedCache: PlDataTableStateV2CacheEntry[] = state.stateCache.map((entry) => {\n const leaves: PlDataTableFiltersWithMeta[\"filters\"] = [];\n for (const f of entry.filtersState) {\n if (f.filter !== null && !f.filter.disabled) {\n const column = canonicalizeJson(f.id);\n leaves.push(migrateTableFilter(column, f.filter.value, nextId));\n }\n }\n const filtersState: PlDataTableFiltersWithMeta | null =\n leaves.length > 0 ? { id: nextId(), type: \"and\", filters: leaves } : null;\n\n return {\n sourceId: entry.sourceId,\n gridState: entry.gridState,\n sheetsState: entry.sheetsState,\n filtersState,\n };\n });\n\n const oldSourceId = state.pTableParams.sourceId;\n const currentCache = oldSourceId\n ? migratedCache.find((e) => e.sourceId === oldSourceId)\n : undefined;\n\n return {\n version: 5,\n stateCache: migratedCache,\n pTableParams:\n currentCache && oldSourceId\n ? {\n sourceId: oldSourceId,\n hiddenColIds: state.pTableParams.hiddenColIds,\n filters: distillFilterSpec(currentCache.filtersState),\n sorting: state.pTableParams.sorting,\n }\n : createDefaultPTableParams(),\n };\n}\n\n/** Migrate a single per-column PlTableFilter to a tree-based FilterSpec node */\nfunction migrateTableFilter(\n column: CanonicalizedJson<PTableColumnId>,\n filter: PlTableFilter,\n nextId: () => number,\n): PlDataTableFiltersWithMeta[\"filters\"][number] {\n const id = nextId();\n switch (filter.type) {\n case \"isNA\":\n return { id, type: \"isNA\", column };\n case \"isNotNA\":\n return { id, type: \"isNotNA\", column };\n case \"number_equals\":\n return { id, type: \"equal\", column, x: filter.reference };\n case \"number_notEquals\":\n return { id, type: \"notEqual\", column, x: filter.reference };\n case \"number_greaterThan\":\n return { id, type: \"greaterThan\", column, x: filter.reference };\n case \"number_greaterThanOrEqualTo\":\n return { id, type: \"greaterThanOrEqual\", column, x: filter.reference };\n case \"number_lessThan\":\n return { id, type: \"lessThan\", column, x: filter.reference };\n case \"number_lessThanOrEqualTo\":\n return { id, type: \"lessThanOrEqual\", column, x: filter.reference };\n case \"number_between\":\n return {\n id,\n type: \"and\",\n filters: [\n filter.includeLowerBound\n ? { id: nextId(), type: \"greaterThanOrEqual\" as const, column, x: filter.lowerBound }\n : { id: nextId(), type: \"greaterThan\" as const, column, x: filter.lowerBound },\n filter.includeUpperBound\n ? { id: nextId(), type: \"lessThanOrEqual\" as const, column, x: filter.upperBound }\n : { id: nextId(), type: \"lessThan\" as const, column, x: filter.upperBound },\n ],\n };\n case \"string_equals\":\n return { id, type: \"patternEquals\", column, value: filter.reference };\n case \"string_notEquals\":\n return { id, type: \"patternNotEquals\", column, value: filter.reference };\n case \"string_contains\":\n return { id, type: \"patternContainSubsequence\", column, value: filter.reference };\n case \"string_doesNotContain\":\n return { id, type: \"patternNotContainSubsequence\", column, value: filter.reference };\n case \"string_matches\":\n return { id, type: \"patternMatchesRegularExpression\", column, value: filter.reference };\n case \"string_doesNotMatch\":\n return {\n id,\n type: \"not\",\n filter: {\n id: nextId(),\n type: \"patternMatchesRegularExpression\",\n column,\n value: filter.reference,\n },\n };\n case \"string_containsFuzzyMatch\":\n return {\n id,\n type: \"patternFuzzyContainSubsequence\",\n column,\n value: filter.reference,\n maxEdits: filter.maxEdits,\n substitutionsOnly: filter.substitutionsOnly,\n ...(filter.wildcard !== undefined ? { wildcard: filter.wildcard } : {}),\n };\n }\n}\n\nexport function createDefaultPTableParams(): PTableParamsV2 {\n return {\n sourceId: null,\n hiddenColIds: null,\n filters: null,\n sorting: [],\n };\n}\n\nexport function createPlDataTableStateV2(): PlDataTableStateV2Normalized {\n return {\n version: 5,\n stateCache: [],\n pTableParams: createDefaultPTableParams(),\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"state-migration.js","names":[],"sources":["../../../src/components/PlDataTable/state-migration.ts"],"sourcesContent":["import type {\n AxisId,\n CanonicalizedJson,\n PObjectId,\n PTableColumnId,\n PTableColumnSpec,\n PTableRecordFilter,\n PTableSorting,\n} from \"@milaboratories/pl-model-common\";\nimport { canonicalizeJson } from \"@milaboratories/pl-model-common\";\nimport { distillFilterSpec } from \"../../filters\";\nimport type { PlDataTableFilterState, PlTableFilter } from \"./typesV4\";\nimport type {\n PlDataTableFiltersWithMeta,\n PlDataTableGridStateCore,\n PlDataTableSheetState,\n PlDataTableStateV2CacheEntry,\n PlDataTableStateV2Normalized,\n PTableParamsV2,\n} from \"./typesV5\";\n\n/**\n * PlDataTableV2 persisted state\n */\nexport type PlDataTableStateV2 =\n // Old versions of the state\n | {\n // no version\n gridState: {\n columnOrder?: {\n orderedColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sort?: {\n sortModel: {\n colId: CanonicalizedJson<PTableColumnSpec>;\n sort: \"asc\" | \"desc\";\n }[];\n };\n columnVisibility?: {\n hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sourceId?: string;\n sheets?: Record<CanonicalizedJson<AxisId>, string | number>;\n };\n pTableParams?: {\n sorting?: PTableSorting[];\n filters?: PTableRecordFilter[];\n };\n }\n | {\n version: 2;\n stateCache: {\n sourceId: string;\n gridState: {\n columnOrder?: {\n orderedColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sort?: {\n sortModel: {\n colId: CanonicalizedJson<PTableColumnSpec>;\n sort: \"asc\" | \"desc\";\n }[];\n };\n columnVisibility?: {\n hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n };\n sheetsState: PlDataTableSheetState[];\n }[];\n pTableParams: {\n hiddenColIds: PObjectId[] | null;\n filters: PTableRecordFilter[];\n sorting: PTableSorting[];\n };\n }\n | {\n version: 3;\n stateCache: {\n sourceId: string;\n gridState: {\n columnOrder?: {\n orderedColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sort?: {\n sortModel: {\n colId: CanonicalizedJson<PTableColumnSpec>;\n sort: \"asc\" | \"desc\";\n }[];\n };\n columnVisibility?: {\n hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n };\n sheetsState: PlDataTableSheetState[];\n filtersState: PlDataTableFilterState[];\n }[];\n pTableParams: PTableParamsV2;\n }\n | {\n version: 4;\n stateCache: {\n sourceId: string;\n gridState: PlDataTableGridStateCore;\n sheetsState: PlDataTableSheetState[];\n filtersState: PlDataTableFilterState[];\n }[];\n /** Old format; only fields used in migration are typed */\n pTableParams: {\n sourceId: string | null;\n hiddenColIds: PObjectId[] | null;\n sorting: PTableSorting[];\n };\n }\n // Normalized state\n | PlDataTableStateV2Normalized;\n\n/** Upgrade PlDataTableStateV2 to the latest version */\nexport function upgradePlDataTableStateV2(\n state: PlDataTableStateV2 | undefined,\n): PlDataTableStateV2Normalized {\n // Block just added, had no state, model started earlier than the UI\n if (!state) {\n return createPlDataTableStateV2();\n }\n // v1 -> v2\n if (!(\"version\" in state)) {\n // Non upgradeable as sourceId calculation algorithm has changed, resetting state to default\n state = createPlDataTableStateV2();\n }\n // v2 -> v3\n if (state.version === 2) {\n state = {\n version: 3,\n stateCache: state.stateCache.map((entry) => ({\n ...entry,\n filtersState: [],\n })),\n pTableParams: createDefaultPTableParams(),\n };\n }\n // v3 -> v4\n if (state.version === 3) {\n // Non upgradeable as column ids calculation algorithm has changed, resetting state to default\n state = createPlDataTableStateV2();\n }\n // v4 -> v5: migrate per-column filters to tree-based format\n if (state.version === 4) {\n state = migrateV4toV5(state);\n }\n return state;\n}\n\n/** Migrate v4 state to v5: convert per-column filters to tree-based format */\nfunction migrateV4toV5(\n state: Extract<PlDataTableStateV2, { version: 4 }>,\n): PlDataTableStateV2Normalized {\n let idCounter = 0;\n const nextId = () => ++idCounter;\n\n const migratedCache: PlDataTableStateV2CacheEntry[] = state.stateCache.map((entry) => {\n const leaves: PlDataTableFiltersWithMeta[\"filters\"] = [];\n for (const f of entry.filtersState) {\n if (f.filter !== null && !f.filter.disabled) {\n const column = canonicalizeJson(f.id);\n leaves.push(migrateTableFilter(column, f.filter.value, nextId));\n }\n }\n const filtersState: PlDataTableFiltersWithMeta | null =\n leaves.length > 0 ? { id: nextId(), type: \"and\", filters: leaves } : null;\n\n return {\n sourceId: entry.sourceId,\n gridState: entry.gridState,\n sheetsState: entry.sheetsState,\n filtersState,\n };\n });\n\n const oldSourceId = state.pTableParams.sourceId;\n const currentCache = oldSourceId\n ? migratedCache.find((e) => e.sourceId === oldSourceId)\n : undefined;\n\n return {\n version: 5,\n stateCache: migratedCache,\n pTableParams:\n currentCache && oldSourceId\n ? {\n sourceId: oldSourceId,\n hiddenColIds:\n state.pTableParams.hiddenColIds?.map((id) => ({ type: \"column\" as const, id })) ??\n null,\n filters: distillFilterSpec(currentCache.filtersState),\n sorting: state.pTableParams.sorting,\n }\n : createDefaultPTableParams(),\n };\n}\n\n/** Migrate a single per-column PlTableFilter to a tree-based FilterSpec node */\nfunction migrateTableFilter(\n column: CanonicalizedJson<PTableColumnId>,\n filter: PlTableFilter,\n nextId: () => number,\n): PlDataTableFiltersWithMeta[\"filters\"][number] {\n const id = nextId();\n switch (filter.type) {\n case \"isNA\":\n return { id, type: \"isNA\", column };\n case \"isNotNA\":\n return { id, type: \"isNotNA\", column };\n case \"number_equals\":\n return { id, type: \"equal\", column, x: filter.reference };\n case \"number_notEquals\":\n return { id, type: \"notEqual\", column, x: filter.reference };\n case \"number_greaterThan\":\n return { id, type: \"greaterThan\", column, x: filter.reference };\n case \"number_greaterThanOrEqualTo\":\n return { id, type: \"greaterThanOrEqual\", column, x: filter.reference };\n case \"number_lessThan\":\n return { id, type: \"lessThan\", column, x: filter.reference };\n case \"number_lessThanOrEqualTo\":\n return { id, type: \"lessThanOrEqual\", column, x: filter.reference };\n case \"number_between\":\n return {\n id,\n type: \"and\",\n filters: [\n filter.includeLowerBound\n ? { id: nextId(), type: \"greaterThanOrEqual\" as const, column, x: filter.lowerBound }\n : { id: nextId(), type: \"greaterThan\" as const, column, x: filter.lowerBound },\n filter.includeUpperBound\n ? { id: nextId(), type: \"lessThanOrEqual\" as const, column, x: filter.upperBound }\n : { id: nextId(), type: \"lessThan\" as const, column, x: filter.upperBound },\n ],\n };\n case \"string_equals\":\n return { id, type: \"patternEquals\", column, value: filter.reference };\n case \"string_notEquals\":\n return { id, type: \"patternNotEquals\", column, value: filter.reference };\n case \"string_contains\":\n return { id, type: \"patternContainSubsequence\", column, value: filter.reference };\n case \"string_doesNotContain\":\n return { id, type: \"patternNotContainSubsequence\", column, value: filter.reference };\n case \"string_matches\":\n return { id, type: \"patternMatchesRegularExpression\", column, value: filter.reference };\n case \"string_doesNotMatch\":\n return {\n id,\n type: \"not\",\n filter: {\n id: nextId(),\n type: \"patternMatchesRegularExpression\",\n column,\n value: filter.reference,\n },\n };\n case \"string_containsFuzzyMatch\":\n return {\n id,\n type: \"patternFuzzyContainSubsequence\",\n column,\n value: filter.reference,\n maxEdits: filter.maxEdits,\n substitutionsOnly: filter.substitutionsOnly,\n ...(filter.wildcard !== undefined ? { wildcard: filter.wildcard } : {}),\n };\n }\n}\n\nexport function createDefaultPTableParams(): PTableParamsV2 {\n return {\n sourceId: null,\n hiddenColIds: null,\n filters: null,\n sorting: [],\n };\n}\n\nexport function createPlDataTableStateV2(): PlDataTableStateV2Normalized {\n return {\n version: 5,\n stateCache: [],\n pTableParams: createDefaultPTableParams(),\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FilterSpecLeaf as FilterSpecLeaf$1 } from "../../filters/types.js";
|
|
2
|
-
import { AxisId, AxisSpec, CanonicalizedJson, ListOptionBase, PColumnIdAndSpec, PFrameHandle,
|
|
2
|
+
import { AxisId, AxisSpec, CanonicalizedJson, ListOptionBase, PColumnIdAndSpec, PFrameHandle, PTableColumnId, PTableColumnSpec, PTableHandle, PTableSorting, RootFilterSpec } from "@milaboratories/pl-model-common";
|
|
3
3
|
|
|
4
4
|
//#region src/components/PlDataTable/typesV5.d.ts
|
|
5
5
|
type PlTableColumnId = {
|
|
@@ -31,8 +31,9 @@ type PlDataTableSheetState = {
|
|
|
31
31
|
value: string | number;
|
|
32
32
|
};
|
|
33
33
|
/** Tree-based filter state compatible with PlAdvancedFilter's RootFilter */
|
|
34
|
-
type
|
|
35
|
-
type
|
|
34
|
+
type PlDataTableFilterSpecLeaf = FilterSpecLeaf$1<CanonicalizedJson<PTableColumnId>>;
|
|
35
|
+
type PlDataTableFilters = RootFilterSpec<PlDataTableFilterSpecLeaf>;
|
|
36
|
+
type PlDataTableFiltersWithMeta = RootFilterSpec<PlDataTableFilterSpecLeaf, {
|
|
36
37
|
id: number;
|
|
37
38
|
isExpanded?: boolean;
|
|
38
39
|
source?: "table-filter" | "table-search";
|
|
@@ -51,7 +52,7 @@ type PTableParamsV2 = {
|
|
|
51
52
|
sorting: [];
|
|
52
53
|
} | {
|
|
53
54
|
sourceId: string;
|
|
54
|
-
hiddenColIds: null |
|
|
55
|
+
hiddenColIds: null | PTableColumnId[];
|
|
55
56
|
filters: null | PlDataTableFilters;
|
|
56
57
|
sorting: PTableSorting[];
|
|
57
58
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typesV5.d.ts","names":[],"sources":["../../../src/components/PlDataTable/typesV5.ts"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"typesV5.d.ts","names":[],"sources":["../../../src/components/PlDataTable/typesV5.ts"],"mappings":";;;;KAeY,eAAA;6BAEV,MAAA,EAAQ,gBAAA,EAFE;EAIV,OAAA,EAAS,gBAAA;AAAA;AAAA,KAGC,mBAAA,GAAsB,iBAAA,CAAkB,eAAA;AAAA,KAExC,wBAAA;EAPF,+BASR,WAAA;IAPS,0BASP,aAAA,EAAe,mBAAA;EAAA,GANP;EASV,IAAA;IATkD,6CAWhD,SAAA;MAX+D,sCAa7D,KAAA,EAAO,mBAAA,EAXuB;MAa9B,IAAA;IAAA;EAAA,GAMY;EAFhB,gBAAA;IAEmC,mCAAjC,YAAA,EAAc,mBAAA;EAAA;AAAA;AAAA,KAIN,gBAAA;EAdR,8BAgBF,IAAA,EAAM,QAAA,EAdK;EAgBX,OAAA,EAAS,cAAA,qBAVT;EAYA,YAAA;AAAA;AAAA,KAGU,qBAAA;EAbyB,qBAenC,MAAA,EAAQ,MAAA,EAXkB;EAa1B,KAAA;AAAA;;KAIU,yBAAA,GAA4B,gBAAA,CAAe,iBAAA,CAAkB,cAAA;AAAA,KAC7D,kBAAA,GAAqB,cAAA,CAAe,yBAAA;AAAA,KACpC,0BAAA,GAA6B,cAAA,CACvC,yBAAA;EACE,EAAA;EAAY,UAAA;EAAsB,MAAA;AAAA;AAAA,KAG1B,4BAAA;mDAEV,QAAA,UAfA;EAiBA,SAAA,EAAW,wBAAA,EAfX;EAiBA,WAAA,EAAa,qBAAA,IAjBR;EAmBL,YAAA,SAAqB,0BAAA,EAfc;EAiBnC,YAAA;AAAA;AAAA,KAGU,cAAA;EAEN,QAAA;EACA,YAAA;EACA,OAAA;EACA,OAAA;AAAA;EAGA,QAAA;EACA,YAAA,SAAqB,cAAA;EACrB,OAAA,SAAgB,kBAAA;EAChB,OAAA,EAAS,aAAA;AAAA;AAAA,KAGH,4BAAA;EAjCqB,2BAmC/B,OAAA,KAlCU;EAoCV,UAAA,EAAY,4BAAA;EAEZ,YAAA,EAAc,cAAA;AAAA;;KAIJ,gBAAA;EAxCI,iDA0Cd,QAAA,iBA1C0C;EA4C1C,eAAA,EAAiB,YAAA,EAzCP;EA2CV,gBAAA,EAAkB,YAAA;EAElB,kBAAA,EAAoB,YAAA;AAAA;AAAA,KAGV,oBAAA;EAxCqC,mDA0C/C,OAAA,GAAU,kBAAA,EAhDV;EAmDA,OAAA,GAAU,aAAA;EAjDC;;;;;EAwDX,mBAAA,IAAuB,IAAA,EAAM,gBAAA;EAlDjB;;AAGd;;;;;;;;;EA4DE,YAAA;AAAA"}
|
|
@@ -3,8 +3,10 @@ require("./PFrameForGraphs.cjs");
|
|
|
3
3
|
require("./PlAnnotations/filters_ui.cjs");
|
|
4
4
|
require("./PlDataTable/state-migration.cjs");
|
|
5
5
|
require("./PlDataTable/createPlDataTableSheet.cjs");
|
|
6
|
-
require("./PlDataTable/createPlDataTable/
|
|
6
|
+
require("./PlDataTable/createPlDataTable/utils.cjs");
|
|
7
7
|
require("./PlDataTable/createPlDataTable/createPlDataTableV2.cjs");
|
|
8
|
+
require("./PlDataTable/createPlDataTable/discoverColumns.cjs");
|
|
9
|
+
require("./PlDataTable/createPlDataTable/createPlDataTableV3.cjs");
|
|
8
10
|
require("./PlDataTable/createPlDataTable/index.cjs");
|
|
9
11
|
require("./PlDataTable/index.cjs");
|
|
10
12
|
require("./PlMultiSequenceAlignment.cjs");
|
|
@@ -6,7 +6,9 @@ import { PTableParamsV2, PlDataTableFilters, PlDataTableFiltersWithMeta, PlDataT
|
|
|
6
6
|
import { PlDataTableStateV2, createDefaultPTableParams, createPlDataTableStateV2, upgradePlDataTableStateV2 } from "./PlDataTable/state-migration.js";
|
|
7
7
|
import { createPlDataTableSheet } from "./PlDataTable/createPlDataTableSheet.js";
|
|
8
8
|
import { createPlDataTableV2 } from "./PlDataTable/createPlDataTable/createPlDataTableV2.js";
|
|
9
|
-
import {
|
|
9
|
+
import { discoverTableColumnSnaphots } from "./PlDataTable/createPlDataTable/discoverColumns.js";
|
|
10
|
+
import { ColumnMatcher, ColumnOrderRule, ColumnVisibilityRule, ColumnsDisplayOptions, ColumnsSelectorConfig, createPlDataTableOptionsV3, createPlDataTableV3 } from "./PlDataTable/createPlDataTable/createPlDataTableV3.js";
|
|
10
11
|
import { createPlDataTable } from "./PlDataTable/createPlDataTable/index.js";
|
|
12
|
+
import { getEffectiveVisibility, getOrderPriority, isColumnHidden, isColumnOptional } from "./PlDataTable/createPlDataTable/utils.js";
|
|
11
13
|
import { PTableKey, PlSelectionModel, createPlSelectionModel } from "./PlSelectionModel.js";
|
|
12
14
|
import { PColumnPredicate, PlMultiSequenceAlignmentColorSchemeOption, PlMultiSequenceAlignmentModel, PlMultiSequenceAlignmentSettings, PlMultiSequenceAlignmentWidget, createRowSelectionColumn } from "./PlMultiSequenceAlignment.js";
|
package/dist/components/index.js
CHANGED
|
@@ -3,8 +3,10 @@ import "./PFrameForGraphs.js";
|
|
|
3
3
|
import "./PlAnnotations/filters_ui.js";
|
|
4
4
|
import "./PlDataTable/state-migration.js";
|
|
5
5
|
import "./PlDataTable/createPlDataTableSheet.js";
|
|
6
|
-
import "./PlDataTable/createPlDataTable/
|
|
6
|
+
import "./PlDataTable/createPlDataTable/utils.js";
|
|
7
7
|
import "./PlDataTable/createPlDataTable/createPlDataTableV2.js";
|
|
8
|
+
import "./PlDataTable/createPlDataTable/discoverColumns.js";
|
|
9
|
+
import "./PlDataTable/createPlDataTable/createPlDataTableV3.js";
|
|
8
10
|
import "./PlDataTable/createPlDataTable/index.js";
|
|
9
11
|
import "./PlDataTable/index.js";
|
|
10
12
|
import "./PlMultiSequenceAlignment.js";
|
package/dist/index.cjs
CHANGED
|
@@ -39,15 +39,17 @@ const require_column_snapshot_provider = require("./columns/column_snapshot_prov
|
|
|
39
39
|
const require_column_selector = require("./columns/column_selector.cjs");
|
|
40
40
|
const require_column_collection_builder = require("./columns/column_collection_builder.cjs");
|
|
41
41
|
const require_ctx_column_sources = require("./columns/ctx_column_sources.cjs");
|
|
42
|
+
const require_expand_by_partition = require("./columns/expand_by_partition.cjs");
|
|
42
43
|
require("./columns/index.cjs");
|
|
43
|
-
const
|
|
44
|
+
const require_utils = require("./components/PlDataTable/createPlDataTable/utils.cjs");
|
|
44
45
|
const require_createPlDataTableV2 = require("./components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs");
|
|
46
|
+
const require_discoverColumns = require("./components/PlDataTable/createPlDataTable/discoverColumns.cjs");
|
|
47
|
+
const require_createPlDataTableV3 = require("./components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs");
|
|
45
48
|
const require_index$5 = require("./components/PlDataTable/createPlDataTable/index.cjs");
|
|
46
49
|
const require_PlMultiSequenceAlignment = require("./components/PlMultiSequenceAlignment.cjs");
|
|
47
50
|
const require_PlSelectionModel = require("./components/PlSelectionModel.cjs");
|
|
48
51
|
require("./components/index.cjs");
|
|
49
52
|
const require_pframe = require("./pframe.cjs");
|
|
50
|
-
const require_write_labels_to_specs = require("./labels/write_labels_to_specs.cjs");
|
|
51
53
|
require("./labels/index.cjs");
|
|
52
54
|
const require_ref_util = require("./ref_util.cjs");
|
|
53
55
|
const require_raw_globals = require("./raw_globals.cjs");
|
|
@@ -110,14 +112,16 @@ exports.and = require_actions.and;
|
|
|
110
112
|
exports.blockServiceNames = require_block_services.blockServiceNames;
|
|
111
113
|
exports.buildServices = require_service_bridge.buildServices;
|
|
112
114
|
exports.collectCtxColumnSnapshotProviders = require_ctx_column_sources.collectCtxColumnSnapshotProviders;
|
|
113
|
-
exports.columnSelectorsToPredicate = require_column_selector.columnSelectorsToPredicate;
|
|
114
115
|
exports.compileAnnotationScript = require_filters_ui.compileAnnotationScript;
|
|
115
116
|
exports.compileFilter = require_filters_ui.compileFilter;
|
|
116
117
|
exports.compileFilters = require_filters_ui.compileFilters;
|
|
118
|
+
exports.convertColumnSelectorToMultiColumnSelector = require_column_selector.convertColumnSelectorToMultiColumnSelector;
|
|
117
119
|
exports.convertFilterSpecsToExpressionSpecs = require_converter.convertFilterSpecsToExpressionSpecs;
|
|
118
120
|
exports.convertFilterUiToExpressionImpl = require_filterUiToExpressionImpl.convertFilterUiToExpressionImpl;
|
|
119
121
|
exports.convertFilterUiToExpressions = require_filterUiToExpressionImpl.convertFilterUiToExpressions;
|
|
120
122
|
exports.convertOrParsePColumnData = require_pcolumn_data.convertOrParsePColumnData;
|
|
123
|
+
exports.convertRelaxedAxisSelectorToMultiAxisSelector = require_column_selector.convertRelaxedAxisSelectorToMultiAxisSelector;
|
|
124
|
+
exports.convertRelaxedColumnSelectorToMultiColumnSelector = require_column_selector.convertRelaxedColumnSelectorToMultiColumnSelector;
|
|
121
125
|
exports.createBlockStorage = require_block_storage.createBlockStorage;
|
|
122
126
|
exports.createColumnSnapshot = require_column_snapshot.createColumnSnapshot;
|
|
123
127
|
exports.createDefaultPTableParams = require_state_migration.createDefaultPTableParams;
|
|
@@ -134,9 +138,11 @@ exports.createRowSelectionColumn = require_PlMultiSequenceAlignment.createRowSel
|
|
|
134
138
|
exports.deriveDataFromStorage = require_block_storage.deriveDataFromStorage;
|
|
135
139
|
exports.deriveDistinctLabels = require_derive_distinct_labels.deriveDistinctLabels;
|
|
136
140
|
exports.deriveLabels = require_label.deriveLabels;
|
|
141
|
+
exports.discoverTableColumnSnaphots = require_discoverColumns.discoverTableColumnSnaphots;
|
|
137
142
|
exports.distillFilterSpec = require_distill.distillFilterSpec;
|
|
138
143
|
exports.downgradeCfgOrLambda = require_normalization.downgradeCfgOrLambda;
|
|
139
144
|
exports.enrichCompatible = require_axes.enrichCompatible;
|
|
145
|
+
exports.expandByPartition = require_expand_by_partition.expandByPartition;
|
|
140
146
|
exports.extractArchiveAndGetURL = require_actions.extractArchiveAndGetURL;
|
|
141
147
|
exports.extractConfig = require_normalization.extractConfig;
|
|
142
148
|
exports.filterDataInfoEntries = require_axis_filtering.filterDataInfoEntries;
|
|
@@ -155,6 +161,7 @@ exports.getColumnSpecById = require_index$9.getColumnSpecById;
|
|
|
155
161
|
exports.getColumnUniqueValues = require_index$9.getColumnUniqueValues;
|
|
156
162
|
exports.getColumnsFull = require_index$9.getColumnsFull;
|
|
157
163
|
exports.getDownloadedBlobContent = require_actions.getDownloadedBlobContent;
|
|
164
|
+
exports.getEffectiveVisibility = require_utils.getEffectiveVisibility;
|
|
158
165
|
exports.getEnvironmentValue = require_env_value.getEnvironmentValue;
|
|
159
166
|
exports.getFromCfg = require_actions.getFromCfg;
|
|
160
167
|
exports.getImmediate = require_actions.getImmediate;
|
|
@@ -163,6 +170,7 @@ exports.getJsonField = require_actions.getJsonField;
|
|
|
163
170
|
exports.getLastLogs = require_actions.getLastLogs;
|
|
164
171
|
exports.getLogHandle = require_actions.getLogHandle;
|
|
165
172
|
exports.getOnDemandBlobContent = require_actions.getOnDemandBlobContent;
|
|
173
|
+
exports.getOrderPriority = require_utils.getOrderPriority;
|
|
166
174
|
exports.getPartitionKeysList = require_pcolumn_data.getPartitionKeysList;
|
|
167
175
|
exports.getPlatformaApiVersion = require_raw_globals.getPlatformaApiVersion;
|
|
168
176
|
exports.getPluginData = require_block_storage.getPluginData;
|
|
@@ -179,8 +187,8 @@ exports.getUniquePartitionKeys = require_pcolumn_data.getUniquePartitionKeys;
|
|
|
179
187
|
exports.getUniqueSourceValuesWithLabels = require_index$9.getUniqueSourceValuesWithLabels;
|
|
180
188
|
exports.ifDef = require_accessor.ifDef;
|
|
181
189
|
exports.isBlockStorage = require_block_storage.isBlockStorage;
|
|
182
|
-
exports.isColumnHidden =
|
|
183
|
-
exports.isColumnOptional =
|
|
190
|
+
exports.isColumnHidden = require_utils.isColumnHidden;
|
|
191
|
+
exports.isColumnOptional = require_utils.isColumnOptional;
|
|
184
192
|
exports.isColumnSnapshotProvider = require_column_snapshot_provider.isColumnSnapshotProvider;
|
|
185
193
|
exports.isConfigLambda = require_types.isConfigLambda;
|
|
186
194
|
exports.isEmpty = require_actions.isEmpty;
|
|
@@ -194,11 +202,8 @@ exports.makeObject = require_actions.makeObject;
|
|
|
194
202
|
exports.mapArrayValues = require_actions.mapArrayValues;
|
|
195
203
|
exports.mapRecordValues = require_actions.mapRecordValues;
|
|
196
204
|
exports.mapResourceFields = require_actions.mapResourceFields;
|
|
197
|
-
exports.matchColumn = require_column_selector.matchColumn;
|
|
198
|
-
exports.matchColumnSelectors = require_column_selector.matchColumnSelectors;
|
|
199
205
|
exports.migrateBlockStorage = require_block_storage.migrateBlockStorage;
|
|
200
206
|
exports.normalizeBlockStorage = require_block_storage.normalizeBlockStorage;
|
|
201
|
-
exports.normalizeSelectors = require_column_selector.normalizeSelectors;
|
|
202
207
|
exports.not = require_actions.not;
|
|
203
208
|
exports.or = require_actions.or;
|
|
204
209
|
exports.parsePColumnData = require_pcolumn_data.parsePColumnData;
|
|
@@ -212,7 +217,6 @@ exports.unreachable = require_filters_ui.unreachable;
|
|
|
212
217
|
exports.updateStorageData = require_block_storage.updateStorageData;
|
|
213
218
|
exports.upgradePlDataTableStateV2 = require_state_migration.upgradePlDataTableStateV2;
|
|
214
219
|
exports.wrapOutputs = require_block_state_util.wrapOutputs;
|
|
215
|
-
exports.writeLabelsToSpecs = require_write_labels_to_specs.writeLabelsToSpecs;
|
|
216
220
|
var _milaboratories_pl_model_common = require("@milaboratories/pl-model-common");
|
|
217
221
|
Object.keys(_milaboratories_pl_model_common).forEach(function(k) {
|
|
218
222
|
if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
package/dist/index.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ import { CommonFieldTraverseOps, CommonTraversalOps, FieldTraversalStep, FieldTy
|
|
|
24
24
|
import { PColumnDataUniversal, internal_d_exports } from "./render/internal.js";
|
|
25
25
|
import { ExtractFutureRefType, FutureRef } from "./render/future.js";
|
|
26
26
|
import { TreeNodeAccessor, ifDef } from "./render/accessor.js";
|
|
27
|
-
import { DeriveLabelsOptions, Entry, Trace,
|
|
27
|
+
import { DeriveLabelsOptions, Entry, Trace, TraceEntry, deriveDistinctLabels } from "./labels/derive_distinct_labels.js";
|
|
28
28
|
import { deriveLabels } from "./render/util/label.js";
|
|
29
29
|
import { AxisLabelProvider, ColumnProvider, PColumnCollection, PColumnEntryUniversal, PColumnEntryWithLabel, PColumnLazyUniversal, PColumnLazyWithLabel } from "./render/util/column_collection.js";
|
|
30
30
|
import { BlockRenderCtx, InferRenderFunctionReturn, PluginRenderCtx, RenderCtx, RenderCtxBase, RenderCtxLegacy, RenderFunction, RenderFunctionLegacy, ResultPool, UniversalColumnOption, UnwrapFutureRef } from "./render/api.js";
|
|
@@ -50,15 +50,17 @@ import { createPlDataTableSheet } from "./components/PlDataTable/createPlDataTab
|
|
|
50
50
|
import { createPlDataTableV2 } from "./components/PlDataTable/createPlDataTable/createPlDataTableV2.js";
|
|
51
51
|
import { ColumnData, ColumnDataStatus, ColumnSnapshot, createColumnSnapshot, createReadyColumnData } from "./columns/column_snapshot.js";
|
|
52
52
|
import { ArrayColumnProvider, ColumnSnapshotProvider, ColumnSource, OutputColumnProvider, OutputColumnProviderOpts, SnapshotColumnProvider, isColumnSnapshotProvider, toColumnSnapshotProvider } from "./columns/column_snapshot_provider.js";
|
|
53
|
-
import {
|
|
54
|
-
import { AnchoredBuildOptions, AnchoredColumnCollection, AnchoredFindColumnsOptions, BuildOptions, ColumnCollection, ColumnCollectionBuilder, ColumnMatch, FindColumnsOptions, MatchQualifications, MatchVariant, MatchingMode } from "./columns/column_collection_builder.js";
|
|
53
|
+
import { ColumnSelector, RelaxedAxisSelector, RelaxedColumnSelector, RelaxedRecord, RelaxedStringMatchers, StringMatcher, convertColumnSelectorToMultiColumnSelector, convertRelaxedAxisSelectorToMultiAxisSelector, convertRelaxedColumnSelectorToMultiColumnSelector } from "./columns/column_selector.js";
|
|
54
|
+
import { AnchorEntry, AnchoredBuildOptions, AnchoredColumnCollection, AnchoredFindColumnsOptions, BuildOptions, ColumnCollection, ColumnCollectionBuilder, ColumnMatch, FindColumnsOptions, MatchQualifications, MatchVariant, MatchingMode } from "./columns/column_collection_builder.js";
|
|
55
55
|
import { ResultPoolColumnSnapshotProvider, collectCtxColumnSnapshotProviders } from "./columns/ctx_column_sources.js";
|
|
56
|
-
import {
|
|
56
|
+
import { ExpandByPartitionOpts, ExpandByPartitionResult, SplitAxis, expandByPartition } from "./columns/expand_by_partition.js";
|
|
57
|
+
import { discoverTableColumnSnaphots } from "./components/PlDataTable/createPlDataTable/discoverColumns.js";
|
|
58
|
+
import { ColumnMatcher, ColumnOrderRule, ColumnVisibilityRule, ColumnsDisplayOptions, ColumnsSelectorConfig, createPlDataTableOptionsV3, createPlDataTableV3 } from "./components/PlDataTable/createPlDataTable/createPlDataTableV3.js";
|
|
57
59
|
import { createPlDataTable } from "./components/PlDataTable/createPlDataTable/index.js";
|
|
60
|
+
import { getEffectiveVisibility, getOrderPriority, isColumnHidden, isColumnOptional } from "./components/PlDataTable/createPlDataTable/utils.js";
|
|
58
61
|
import { PTableKey, PlSelectionModel, createPlSelectionModel } from "./components/PlSelectionModel.js";
|
|
59
62
|
import { PColumnPredicate, PlMultiSequenceAlignmentColorSchemeOption, PlMultiSequenceAlignmentModel, PlMultiSequenceAlignmentSettings, PlMultiSequenceAlignmentWidget, createRowSelectionColumn } from "./components/PlMultiSequenceAlignment.js";
|
|
60
63
|
import { PFrameImpl } from "./pframe.js";
|
|
61
|
-
import { writeLabelsToSpecs } from "./labels/write_labels_to_specs.js";
|
|
62
64
|
import { fromPlOption, fromPlRef } from "./ref_util.js";
|
|
63
65
|
import { getPlatformaApiVersion, getRawPlatformaInstance } from "./raw_globals.js";
|
|
64
66
|
import { getAllRelatedColumns, getRelatedColumns } from "./pframe_utils/columns.js";
|
|
@@ -67,4 +69,4 @@ import { NodeServiceProxy, buildServices, createNodeServiceProxy } from "./servi
|
|
|
67
69
|
import { getEnvironmentValue } from "./env_value.js";
|
|
68
70
|
export * from "@milaboratories/pl-model-common";
|
|
69
71
|
export * from "@milaboratories/pl-error-like";
|
|
70
|
-
export { ActAnd, ActExtractArchiveAndGetURL, ActFlatten, ActGetBlobContent, ActGetBlobContentAsJson, ActGetBlobContentAsString, ActGetDownloadedBlobContent, ActGetField, ActGetFromCtx, ActGetImmediate, ActGetLastLogs, ActGetLogHandle, ActGetOnDemandBlobContent, ActGetProgressLog, ActGetProgressLogWithInfo, ActGetResourceField, ActGetResourceValueAsJson, ActImportProgress, ActIsEmpty, ActIsolate, ActMakeArray, ActMakeObject, ActMapArrayValues, ActMapRecordValues, ActMapResourceFields, ActNot, ActOr, ActionResult, AnchoredBuildOptions, AnchoredColumnCollection, AnchoredFindColumnsOptions, AndFilter, AnnotationFilter, AnnotationMode, AnnotationScript, AnnotationScript2, AnnotationScriptUi, AnnotationSpec, AnnotationSpecUi, AnnotationStep, AnnotationStepUi, AnyForm, Args, ArrayColumnProvider, AxesVault, AxisLabelProvider, BLOCK_SERVICE_FLAGS, BLOCK_STORAGE_FACADE_VERSION, BlockApiV1, BlockApiV2, BlockConfig, BlockConfigV3, BlockConfigV4, BlockDefaultModelServices, BlockDefaultUiServices, BlockModel, BlockModelInfo, BlockModelV3, BlockRenderCtx, BlockServiceFlags, BlockStatePatch, type BlockStorage, BlockStorageFacade, BlockStorageFacadeCallbacks, BlockStorageFacadeHandles, type BlockStorageSchemaVersion, BuildOptions, CancelSubscription, Cfg, CfgAnd, CfgBlobContent, CfgBlobContentAsJson, CfgBlobContentAsString, CfgDownloadedBlobContent, CfgExtractArchiveAndGetURL, CfgFlatten, CfgGetFromCtx, CfgGetJsonField, CfgGetResourceField, CfgImmediate, CfgImportProgress, CfgIsEmpty, CfgIsolate, CfgLastLogs, CfgLogHandle, CfgMakeArray, CfgMakeObject, CfgMapArrayValues, CfgMapRecordValues, CfgMapResourceFields, CfgNot, CfgOnDemandBlobContent, CfgOr, CfgProgressLog, CfgProgressLogWithInfo, CfgRenderingMode, CfgResourceValueAsJson, Checked, ColumnCollection, ColumnCollectionBuilder, ColumnData, ColumnDataStatus, ColumnMatch, ColumnProvider,
|
|
72
|
+
export { ActAnd, ActExtractArchiveAndGetURL, ActFlatten, ActGetBlobContent, ActGetBlobContentAsJson, ActGetBlobContentAsString, ActGetDownloadedBlobContent, ActGetField, ActGetFromCtx, ActGetImmediate, ActGetLastLogs, ActGetLogHandle, ActGetOnDemandBlobContent, ActGetProgressLog, ActGetProgressLogWithInfo, ActGetResourceField, ActGetResourceValueAsJson, ActImportProgress, ActIsEmpty, ActIsolate, ActMakeArray, ActMakeObject, ActMapArrayValues, ActMapRecordValues, ActMapResourceFields, ActNot, ActOr, ActionResult, AnchorEntry, AnchoredBuildOptions, AnchoredColumnCollection, AnchoredFindColumnsOptions, AndFilter, AnnotationFilter, AnnotationMode, AnnotationScript, AnnotationScript2, AnnotationScriptUi, AnnotationSpec, AnnotationSpecUi, AnnotationStep, AnnotationStepUi, AnyForm, Args, ArrayColumnProvider, AxesVault, AxisLabelProvider, BLOCK_SERVICE_FLAGS, BLOCK_STORAGE_FACADE_VERSION, BlockApiV1, BlockApiV2, BlockConfig, BlockConfigV3, BlockConfigV4, BlockDefaultModelServices, BlockDefaultUiServices, BlockModel, BlockModelInfo, BlockModelV3, BlockRenderCtx, BlockServiceFlags, BlockStatePatch, type BlockStorage, BlockStorageFacade, BlockStorageFacadeCallbacks, BlockStorageFacadeHandles, type BlockStorageSchemaVersion, BuildOptions, CancelSubscription, Cfg, CfgAnd, CfgBlobContent, CfgBlobContentAsJson, CfgBlobContentAsString, CfgDownloadedBlobContent, CfgExtractArchiveAndGetURL, CfgFlatten, CfgGetFromCtx, CfgGetJsonField, CfgGetResourceField, CfgImmediate, CfgImportProgress, CfgIsEmpty, CfgIsolate, CfgLastLogs, CfgLogHandle, CfgMakeArray, CfgMakeObject, CfgMapArrayValues, CfgMapRecordValues, CfgMapResourceFields, CfgNot, CfgOnDemandBlobContent, CfgOr, CfgProgressLog, CfgProgressLogWithInfo, CfgRenderingMode, CfgResourceValueAsJson, Checked, ColumnCollection, ColumnCollectionBuilder, ColumnData, ColumnDataStatus, ColumnMatch, ColumnMatcher, ColumnOrderRule, ColumnProvider, ColumnSelector, ColumnSnapshot, ColumnSnapshotProvider, ColumnSource, ColumnVisibilityRule, ColumnsDisplayOptions, ColumnsSelectorConfig, CommonFieldTraverseOps, CommonTraversalOps, ConfAction, ConfigRenderLambda, ConfigRenderLambdaFlags, ConfigResult, CurrentSdkInfo, DataModel, DataModelBuilder, DeriveHref, DeriveLabelsOptions, Entry, ExpandByPartitionOpts, ExpandByPartitionResult, ExpressionSpec, ExtractAction, ExtractFunctionHandleReturn, ExtractFutureRefType, FieldTraversalStep, FieldType, FilterSpec, FilterSpecLeaf, FilterSpecNode, FilterSpecOfType, FilterSpecType, FilterSpecUi, FilterUi, FilterUiOfType, FilterUiType, FindColumnsOptions, FormField, FutureRef, GetFieldStep, InferArgsType, InferBlockState, InferBlockStatePatch, InferDataType, InferFactoryData, InferFactoryModelServices, InferFactoryOutputs, InferFactoryParams, InferFactoryUiServices, InferHrefType, InferOutputType, InferOutputsFromConfigs, InferOutputsFromLambdas, InferOutputsType, InferPluginData, InferPluginHandle, InferPluginHandles, InferPluginNames, InferRenderFunctionReturn, InferUiState, InferVarTypeSafe, IsNA, It, internal_d_exports as JsRenderInternal, DeriveLabelsOptions as LabelDerivationOps, Log10, MainOutputs, MatchQualifications, MatchVariant, MatchingMode, type MigrateBlockStorageConfig, type MigrationFailure, type MigrationResult, type MigrationSuccess, ModelServices, type MutateStoragePayload, NodeServiceProxy, NotFilter, NumericalComparisonFilter, OptionalPlResourceEntry, OrFilter, OutputColumnProvider, OutputColumnProviderOpts, OutputError, PColumnCollection, PColumnDataUniversal, PColumnEntryUniversal, PColumnEntryWithLabel, PColumnKeyList, PColumnLazyUniversal, PColumnLazyWithLabel, PColumnPredicate, PColumnResourceMapData, PColumnResourceMapEntry, PFrameImpl, POCExtractAction, PTableKey, PTableParamsV2, type ParamsInput, Patch, PatternFilter, PatternPredicate, PatternPredicateContainSubsequence, PatternPredicateEquals, PlDataTableFilters, PlDataTableFiltersWithMeta, PlDataTableGridStateCore, PlDataTableModel, PlDataTableSheet, PlDataTableSheetState, PlDataTableStateV2, PlDataTableStateV2CacheEntry, PlDataTableStateV2Normalized, PlMultiSequenceAlignmentColorSchemeOption, PlMultiSequenceAlignmentModel, PlMultiSequenceAlignmentSettings, PlMultiSequenceAlignmentWidget, PlResourceEntry, PlSelectionModel, PlTableColumnId, PlTableColumnIdJson, Platforma, PlatformaApiVersion, PlatformaExtended, PlatformaFactory, PlatformaSDKVersion, PlatformaV1, PlatformaV2, PlatformaV3, type PluginConfig, type PluginData, PluginDataModel, PluginDataModelBuilder, type PluginDataModelVersions, type PluginFactory, PluginFactoryLike, PluginHandle, PluginInstance, PluginModel, type PluginName, type PluginOutputs, type PluginParams, type PluginRecord, type PluginRegistry, PluginRenderCtx, PrimitiveOrConfig, PrimitiveToCfg, RT_BINARY_PARTITIONED, RT_BINARY_SUPER_PARTITIONED, RT_JSON_PARTITIONED, RT_JSON_SUPER_PARTITIONED, RT_PARQUET_PARTITIONED, RT_PARQUET_SUPER_PARTITIONED, RT_RESOURCE_MAP, RT_RESOURCE_MAP_PARTITIONED, RelaxedAxisSelector, RelaxedColumnSelector, RelaxedRecord, RelaxedStringMatchers, RenderCtx, RenderCtxBase, RenderCtxLegacy, RenderFunction, RenderFunctionLegacy, ResolveCfgType, ResolveModelServices, ResolveUiServices, ResourceTraversalOps, ResourceType, ResultPool, ResultPoolColumnSnapshotProvider, SdkInfo, SimplifiedPColumnSpec, SimplifiedUniversalPColumnEntry, SnapshotColumnProvider, SortedCumulativeSum, Entry as SpecExtractorResult, SplitAxis, StagingOutputs, StdCtx, StdCtxArgsOnly, StringMatcher, Trace, TraceEntry, TransformedColumn, TreeNodeAccessor, TypeField, TypeFieldRecord, TypeForm, TypeToLiteral, TypedConfig, TypedConfigOrConfigLambda, TypedConfigOrString, UiServices, UiState, Unionize, UniversalColumnOption, UnwrapFutureRef, ValueRank, type VersionedData, allPColumnsReady, and, blockServiceNames, buildServices, collectCtxColumnSnapshotProviders, compileAnnotationScript, compileFilter, compileFilters, convertColumnSelectorToMultiColumnSelector, convertFilterSpecsToExpressionSpecs, convertFilterUiToExpressionImpl, convertFilterUiToExpressions, convertOrParsePColumnData, convertRelaxedAxisSelectorToMultiAxisSelector, convertRelaxedColumnSelectorToMultiColumnSelector, createBlockStorage, createColumnSnapshot, createDefaultPTableParams, createNodeServiceProxy, createPFrameForGraphs, createPlDataTable, createPlDataTableOptionsV3, createPlDataTableSheet, createPlDataTableStateV2, createPlDataTableV2, createPlDataTableV3, createPlSelectionModel, createReadyColumnData, createRowSelectionColumn, deriveDataFromStorage, deriveDistinctLabels, deriveLabels, discoverTableColumnSnaphots, distillFilterSpec, downgradeCfgOrLambda, enrichCompatible, expandByPartition, extractArchiveAndGetURL, extractConfig, filterDataInfoEntries, filterSpecToSpecQueryExpr, flatten, fromPlOption, fromPlRef, getAllRelatedColumns, getAvailableWithLinkersAxes, getAxisUniqueValues, getBlobContent, getBlobContentAsJson, getBlobContentAsString, getColumnOrAxisValueLabelsId, getColumnSpecById, getColumnUniqueValues, getColumnsFull, getDownloadedBlobContent, getEffectiveVisibility, getEnvironmentValue, getFromCfg, getImmediate, getImportProgress, getJsonField, getLastLogs, getLogHandle, getOnDemandBlobContent, getOrderPriority, getPartitionKeysList, getPlatformaApiVersion, getPluginData, getProgressLog, getProgressLogWithInfo, getRawPlatformaInstance, getRelatedColumns, getRequestColumnsFromSelectedSources, getResourceField, getResourceValueAsJson, getSingleColumnData, getStorageData, getUniquePartitionKeys, getUniqueSourceValuesWithLabels, ifDef, isBlockStorage, isColumnHidden, isColumnOptional, isColumnSnapshotProvider, isConfigLambda, isEmpty, isHiddenFromGraphColumn, isHiddenFromUIColumn, isPColumnReady, isPluginOutputKey, isolate, makeArray, makeObject, mapArrayValues, mapRecordValues, mapResourceFields, migrateBlockStorage, normalizeBlockStorage, not, or, parsePColumnData, parseResourceMap, pluginOutputKey, pluginOutputPrefix, readOutput, registerFacadeCallbacks, toColumnSnapshotProvider, unreachable, updateStorageData, upgradePlDataTableStateV2, wrapOutputs };
|
package/dist/index.js
CHANGED
|
@@ -35,18 +35,20 @@ import { createDefaultPTableParams, createPlDataTableStateV2, upgradePlDataTable
|
|
|
35
35
|
import { createPlDataTableSheet } from "./components/PlDataTable/createPlDataTableSheet.js";
|
|
36
36
|
import { createColumnSnapshot, createReadyColumnData } from "./columns/column_snapshot.js";
|
|
37
37
|
import { ArrayColumnProvider, OutputColumnProvider, SnapshotColumnProvider, isColumnSnapshotProvider, toColumnSnapshotProvider } from "./columns/column_snapshot_provider.js";
|
|
38
|
-
import {
|
|
38
|
+
import { convertColumnSelectorToMultiColumnSelector, convertRelaxedAxisSelectorToMultiAxisSelector, convertRelaxedColumnSelectorToMultiColumnSelector } from "./columns/column_selector.js";
|
|
39
39
|
import { ColumnCollectionBuilder } from "./columns/column_collection_builder.js";
|
|
40
40
|
import { ResultPoolColumnSnapshotProvider, collectCtxColumnSnapshotProviders } from "./columns/ctx_column_sources.js";
|
|
41
|
+
import { expandByPartition } from "./columns/expand_by_partition.js";
|
|
41
42
|
import "./columns/index.js";
|
|
42
|
-
import {
|
|
43
|
+
import { getEffectiveVisibility, getOrderPriority, isColumnHidden, isColumnOptional } from "./components/PlDataTable/createPlDataTable/utils.js";
|
|
43
44
|
import { createPlDataTableV2 } from "./components/PlDataTable/createPlDataTable/createPlDataTableV2.js";
|
|
45
|
+
import { discoverTableColumnSnaphots } from "./components/PlDataTable/createPlDataTable/discoverColumns.js";
|
|
46
|
+
import { createPlDataTableV3 } from "./components/PlDataTable/createPlDataTable/createPlDataTableV3.js";
|
|
44
47
|
import { createPlDataTable } from "./components/PlDataTable/createPlDataTable/index.js";
|
|
45
48
|
import { createRowSelectionColumn } from "./components/PlMultiSequenceAlignment.js";
|
|
46
49
|
import { createPlSelectionModel } from "./components/PlSelectionModel.js";
|
|
47
50
|
import "./components/index.js";
|
|
48
51
|
import { PFrameImpl } from "./pframe.js";
|
|
49
|
-
import { writeLabelsToSpecs } from "./labels/write_labels_to_specs.js";
|
|
50
52
|
import "./labels/index.js";
|
|
51
53
|
import { fromPlOption, fromPlRef } from "./ref_util.js";
|
|
52
54
|
import { getPlatformaApiVersion, getRawPlatformaInstance } from "./raw_globals.js";
|
|
@@ -58,4 +60,4 @@ import "./services/index.js";
|
|
|
58
60
|
import { getEnvironmentValue } from "./env_value.js";
|
|
59
61
|
export * from "@milaboratories/pl-model-common";
|
|
60
62
|
export * from "@milaboratories/pl-error-like";
|
|
61
|
-
export { Args, ArrayColumnProvider, BLOCK_SERVICE_FLAGS, BLOCK_STORAGE_FACADE_VERSION, BlockModel, BlockModelV3, BlockRenderCtx, BlockStorageFacadeCallbacks, BlockStorageFacadeHandles, ColumnCollectionBuilder, CurrentSdkInfo, DataModel, DataModelBuilder, FutureRef, It, internal_exports as JsRenderInternal, MainOutputs, OutputColumnProvider, OutputError, PColumnCollection, PFrameImpl, PlatformaSDKVersion, PluginDataModel, PluginDataModelBuilder, PluginInstance, PluginModel, PluginRenderCtx, RT_BINARY_PARTITIONED, RT_BINARY_SUPER_PARTITIONED, RT_JSON_PARTITIONED, RT_JSON_SUPER_PARTITIONED, RT_PARQUET_PARTITIONED, RT_PARQUET_SUPER_PARTITIONED, RT_RESOURCE_MAP, RT_RESOURCE_MAP_PARTITIONED, RenderCtxBase, RenderCtxLegacy, ResultPool, ResultPoolColumnSnapshotProvider, SnapshotColumnProvider, StagingOutputs, TreeNodeAccessor, UiState, allPColumnsReady, and, blockServiceNames, buildServices, collectCtxColumnSnapshotProviders,
|
|
63
|
+
export { Args, ArrayColumnProvider, BLOCK_SERVICE_FLAGS, BLOCK_STORAGE_FACADE_VERSION, BlockModel, BlockModelV3, BlockRenderCtx, BlockStorageFacadeCallbacks, BlockStorageFacadeHandles, ColumnCollectionBuilder, CurrentSdkInfo, DataModel, DataModelBuilder, FutureRef, It, internal_exports as JsRenderInternal, MainOutputs, OutputColumnProvider, OutputError, PColumnCollection, PFrameImpl, PlatformaSDKVersion, PluginDataModel, PluginDataModelBuilder, PluginInstance, PluginModel, PluginRenderCtx, RT_BINARY_PARTITIONED, RT_BINARY_SUPER_PARTITIONED, RT_JSON_PARTITIONED, RT_JSON_SUPER_PARTITIONED, RT_PARQUET_PARTITIONED, RT_PARQUET_SUPER_PARTITIONED, RT_RESOURCE_MAP, RT_RESOURCE_MAP_PARTITIONED, RenderCtxBase, RenderCtxLegacy, ResultPool, ResultPoolColumnSnapshotProvider, SnapshotColumnProvider, StagingOutputs, TreeNodeAccessor, UiState, allPColumnsReady, and, blockServiceNames, buildServices, collectCtxColumnSnapshotProviders, compileAnnotationScript, compileFilter, compileFilters, convertColumnSelectorToMultiColumnSelector, convertFilterSpecsToExpressionSpecs, convertFilterUiToExpressionImpl, convertFilterUiToExpressions, convertOrParsePColumnData, convertRelaxedAxisSelectorToMultiAxisSelector, convertRelaxedColumnSelectorToMultiColumnSelector, createBlockStorage, createColumnSnapshot, createDefaultPTableParams, createNodeServiceProxy, createPFrameForGraphs, createPlDataTable, createPlDataTableSheet, createPlDataTableStateV2, createPlDataTableV2, createPlDataTableV3, createPlSelectionModel, createReadyColumnData, createRowSelectionColumn, deriveDataFromStorage, deriveDistinctLabels, deriveLabels, discoverTableColumnSnaphots, distillFilterSpec, downgradeCfgOrLambda, enrichCompatible, expandByPartition, extractArchiveAndGetURL, extractConfig, filterDataInfoEntries, filterSpecToSpecQueryExpr, flatten, fromPlOption, fromPlRef, getAllRelatedColumns, getAvailableWithLinkersAxes, getAxisUniqueValues, getBlobContent, getBlobContentAsJson, getBlobContentAsString, getColumnOrAxisValueLabelsId, getColumnSpecById, getColumnUniqueValues, getColumnsFull, getDownloadedBlobContent, getEffectiveVisibility, getEnvironmentValue, getFromCfg, getImmediate, getImportProgress, getJsonField, getLastLogs, getLogHandle, getOnDemandBlobContent, getOrderPriority, getPartitionKeysList, getPlatformaApiVersion, getPluginData, getProgressLog, getProgressLogWithInfo, getRawPlatformaInstance, getRelatedColumns, getRequestColumnsFromSelectedSources, getResourceField, getResourceValueAsJson, getSingleColumnData, getStorageData, getUniquePartitionKeys, getUniqueSourceValuesWithLabels, ifDef, isBlockStorage, isColumnHidden, isColumnOptional, isColumnSnapshotProvider, isConfigLambda, isEmpty, isHiddenFromGraphColumn, isHiddenFromUIColumn, isPColumnReady, isPluginOutputKey, isolate, makeArray, makeObject, mapArrayValues, mapRecordValues, mapResourceFields, migrateBlockStorage, normalizeBlockStorage, not, or, parsePColumnData, parseResourceMap, pluginOutputKey, pluginOutputPrefix, readOutput, registerFacadeCallbacks, toColumnSnapshotProvider, unreachable, updateStorageData, upgradePlDataTableStateV2, wrapOutputs };
|