@platforma-sdk/model 1.53.15 → 1.54.7
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/annotations/converter.cjs +8 -32
- package/dist/annotations/converter.cjs.map +1 -1
- package/dist/annotations/converter.d.ts.map +1 -1
- package/dist/annotations/converter.js +7 -31
- package/dist/annotations/converter.js.map +1 -1
- package/dist/block_model.cjs +1 -0
- package/dist/block_model.cjs.map +1 -1
- package/dist/block_model.d.ts.map +1 -1
- package/dist/block_model.js +1 -0
- package/dist/block_model.js.map +1 -1
- package/dist/builder.cjs +1 -0
- package/dist/builder.cjs.map +1 -1
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +1 -0
- package/dist/builder.js.map +1 -1
- package/dist/components/PlDataTable/index.d.ts +5 -0
- package/dist/components/PlDataTable/index.d.ts.map +1 -0
- package/dist/components/PlDataTable/labels.cjs +91 -0
- package/dist/components/PlDataTable/labels.cjs.map +1 -0
- package/dist/components/PlDataTable/labels.d.ts +7 -0
- package/dist/components/PlDataTable/labels.d.ts.map +1 -0
- package/dist/components/PlDataTable/labels.js +88 -0
- package/dist/components/PlDataTable/labels.js.map +1 -0
- package/dist/components/PlDataTable/state-migration.cjs +162 -0
- package/dist/components/PlDataTable/state-migration.cjs.map +1 -0
- package/dist/components/PlDataTable/state-migration.d.ts +94 -0
- package/dist/components/PlDataTable/state-migration.d.ts.map +1 -0
- package/dist/components/PlDataTable/state-migration.js +158 -0
- package/dist/components/PlDataTable/state-migration.js.map +1 -0
- package/dist/components/PlDataTable/table.cjs +188 -0
- package/dist/components/PlDataTable/table.cjs.map +1 -0
- package/dist/components/PlDataTable/table.d.ts +26 -0
- package/dist/components/PlDataTable/table.d.ts.map +1 -0
- package/dist/components/PlDataTable/table.js +184 -0
- package/dist/components/PlDataTable/table.js.map +1 -0
- package/dist/components/PlDataTable/v4.d.ts +157 -0
- package/dist/components/PlDataTable/v4.d.ts.map +1 -0
- package/dist/components/PlDataTable/v5.d.ts +113 -0
- package/dist/components/PlDataTable/v5.d.ts.map +1 -0
- package/dist/filters/converters/filterEmpty.cjs +49 -0
- package/dist/filters/converters/filterEmpty.cjs.map +1 -0
- package/dist/filters/converters/filterEmpty.d.ts +4 -0
- package/dist/filters/converters/filterEmpty.d.ts.map +1 -0
- package/dist/filters/converters/filterEmpty.js +46 -0
- package/dist/filters/converters/filterEmpty.js.map +1 -0
- package/dist/filters/converters/filterToQuery.cjs +244 -0
- package/dist/filters/converters/filterToQuery.cjs.map +1 -0
- package/dist/filters/converters/filterToQuery.d.ts +4 -0
- package/dist/filters/converters/filterToQuery.d.ts.map +1 -0
- package/dist/filters/converters/filterToQuery.js +242 -0
- package/dist/filters/converters/filterToQuery.js.map +1 -0
- package/dist/filters/{converter.cjs → converters/filterUiToExpressionImpl.cjs} +3 -2
- package/dist/filters/converters/filterUiToExpressionImpl.cjs.map +1 -0
- package/dist/filters/{converter.d.ts → converters/filterUiToExpressionImpl.d.ts} +2 -2
- package/dist/filters/converters/filterUiToExpressionImpl.d.ts.map +1 -0
- package/dist/filters/{converter.js → converters/filterUiToExpressionImpl.js} +3 -2
- package/dist/filters/converters/filterUiToExpressionImpl.js.map +1 -0
- package/dist/filters/converters/index.d.ts +3 -0
- package/dist/filters/converters/index.d.ts.map +1 -0
- package/dist/filters/distill.cjs +46 -0
- package/dist/filters/distill.cjs.map +1 -0
- package/dist/filters/distill.d.ts +6 -0
- package/dist/filters/distill.d.ts.map +1 -0
- package/dist/filters/distill.js +44 -0
- package/dist/filters/distill.js.map +1 -0
- package/dist/filters/index.d.ts +2 -1
- package/dist/filters/index.d.ts.map +1 -1
- package/dist/filters/types.d.ts +1 -117
- package/dist/filters/types.d.ts.map +1 -1
- package/dist/index.cjs +17 -15
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/package.json.cjs +1 -1
- package/dist/package.json.js +1 -1
- package/dist/pframe_utils/columns.cjs +2 -0
- package/dist/pframe_utils/columns.cjs.map +1 -1
- package/dist/pframe_utils/columns.js +2 -0
- package/dist/pframe_utils/columns.js.map +1 -1
- package/dist/pframe_utils/index.cjs +2 -0
- package/dist/pframe_utils/index.cjs.map +1 -1
- package/dist/pframe_utils/index.js +2 -0
- package/dist/pframe_utils/index.js.map +1 -1
- package/dist/pframe_utils/querySpec.d.ts +2 -0
- package/dist/pframe_utils/querySpec.d.ts.map +1 -0
- package/dist/render/api.cjs +7 -0
- package/dist/render/api.cjs.map +1 -1
- package/dist/render/api.d.ts +3 -2
- package/dist/render/api.d.ts.map +1 -1
- package/dist/render/api.js +8 -1
- package/dist/render/api.js.map +1 -1
- package/dist/render/future.d.ts +1 -1
- package/dist/render/index.d.ts +2 -1
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/internal.cjs.map +1 -1
- package/dist/render/internal.d.ts +4 -1
- package/dist/render/internal.d.ts.map +1 -1
- package/dist/render/internal.js.map +1 -1
- package/dist/render/util/column_collection.cjs.map +1 -1
- package/dist/render/util/column_collection.d.ts +1 -1
- package/dist/render/util/column_collection.d.ts.map +1 -1
- package/dist/render/util/column_collection.js.map +1 -1
- package/dist/render/util/pcolumn_data.cjs.map +1 -1
- package/dist/render/util/pcolumn_data.d.ts +1 -1
- package/dist/render/util/pcolumn_data.d.ts.map +1 -1
- package/dist/render/util/pcolumn_data.js.map +1 -1
- package/package.json +8 -6
- package/src/annotations/converter.ts +12 -40
- package/src/block_model.ts +1 -0
- package/src/builder.ts +1 -0
- package/src/components/PlDataTable/index.ts +22 -0
- package/src/components/PlDataTable/labels.ts +101 -0
- package/src/components/PlDataTable/state-migration.ts +285 -0
- package/src/components/PlDataTable/table.ts +279 -0
- package/src/components/PlDataTable/v4.ts +193 -0
- package/src/components/PlDataTable/v5.ts +140 -0
- package/src/filters/converters/filterEmpty.test.ts +125 -0
- package/src/filters/converters/filterEmpty.ts +57 -0
- package/src/filters/converters/filterToQuery.test.ts +417 -0
- package/src/filters/converters/filterToQuery.ts +258 -0
- package/src/filters/{converter.test.ts → converters/filterUiToExpressionImpl.test.ts} +2 -2
- package/src/filters/{converter.ts → converters/filterUiToExpressionImpl.ts} +3 -2
- package/src/filters/converters/index.ts +2 -0
- package/src/filters/distill.ts +59 -0
- package/src/filters/index.ts +2 -1
- package/src/filters/types.ts +8 -48
- package/src/pframe_utils/querySpec.ts +1 -0
- package/src/render/api.ts +13 -6
- package/src/render/index.ts +2 -1
- package/src/render/internal.ts +11 -0
- package/src/render/util/column_collection.ts +1 -1
- package/src/render/util/pcolumn_data.ts +1 -1
- package/dist/components/PlDataTable.cjs +0 -307
- package/dist/components/PlDataTable.cjs.map +0 -1
- package/dist/components/PlDataTable.d.ts +0 -366
- package/dist/components/PlDataTable.d.ts.map +0 -1
- package/dist/components/PlDataTable.js +0 -297
- package/dist/components/PlDataTable.js.map +0 -1
- package/dist/filters/converter.cjs.map +0 -1
- package/dist/filters/converter.d.ts.map +0 -1
- package/dist/filters/converter.js.map +0 -1
- package/src/components/PlDataTable.ts +0 -794
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterUiToExpressionImpl.js","sources":["../../../src/filters/converters/filterUiToExpressionImpl.ts"],"sourcesContent":["import { assertNever } from \"@milaboratories/pl-model-common\";\nimport {\n and,\n col,\n lit,\n or,\n rank,\n type Expression,\n type ExpressionImpl,\n} from \"@milaboratories/ptabler-expression-js\";\nimport type { FilterSpec } from \"../types\";\n\nexport function convertFilterUiToExpressionImpl(value: FilterSpec): ExpressionImpl {\n if (value.type === \"or\") {\n const expressions = value.filters\n .filter((f) => f.type !== undefined)\n .map(convertFilterUiToExpressionImpl);\n if (expressions.length === 0) {\n throw new Error(\"OR filter requires at least one operand\");\n }\n return or(...expressions);\n }\n\n if (value.type === \"and\") {\n const expressions = value.filters\n .filter((f) => f.type !== undefined)\n .map(convertFilterUiToExpressionImpl);\n if (expressions.length === 0) {\n throw new Error(\"AND filter requires at least one operand\");\n }\n return and(...expressions);\n }\n\n if (value.type === \"not\") {\n return convertFilterUiToExpressionImpl(value.filter).not();\n }\n\n if (value.type === \"isNA\") {\n return col(value.column).isNull();\n }\n\n if (value.type === \"isNotNA\") {\n return col(value.column).isNotNull();\n }\n\n if (value.type === \"patternEquals\") {\n return col(value.column).eq(lit(value.value));\n }\n\n if (value.type === \"patternNotEquals\") {\n return col(value.column).neq(lit(value.value));\n }\n\n if (value.type === \"patternContainSubsequence\") {\n return col(value.column).strContains(value.value, false, true);\n }\n\n if (value.type === \"patternNotContainSubsequence\") {\n return col(value.column).strContains(value.value, false, true).not();\n }\n\n if (value.type === \"equal\") {\n return col(value.column).eq(lit(value.x));\n }\n\n if (value.type === \"notEqual\") {\n return col(value.column).neq(lit(value.x));\n }\n\n if (value.type === \"lessThan\") {\n return col(value.column).lt(lit(value.x));\n }\n\n if (value.type === \"greaterThan\") {\n return col(value.column).gt(lit(value.x));\n }\n\n if (value.type === \"lessThanOrEqual\") {\n return col(value.column).le(lit(value.x));\n }\n\n if (value.type === \"greaterThanOrEqual\") {\n return col(value.column).ge(lit(value.x));\n }\n\n if (value.type === \"equalToColumn\") {\n return col(value.column).eq(col(value.rhs));\n }\n\n if (value.type === \"greaterThanColumn\") {\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).gt(col(value.rhs));\n }\n return col(value.column).gt(col(value.rhs));\n }\n\n if (value.type === \"lessThanColumn\") {\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).lt(col(value.rhs));\n }\n return col(value.column).lt(col(value.rhs));\n }\n\n if (value.type === \"greaterThanColumnOrEqual\") {\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).ge(col(value.rhs));\n }\n return col(value.column).ge(col(value.rhs));\n }\n\n if (value.type === \"lessThanColumnOrEqual\") {\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).le(col(value.rhs));\n }\n return col(value.column).le(col(value.rhs));\n }\n\n if (value.type === \"topN\") {\n return rank(col(value.column), true).over([]).le(lit(value.n));\n }\n\n if (value.type === \"bottomN\") {\n return rank(col(value.column), false).over([]).le(lit(value.n));\n }\n\n if (\n value.type === \"patternMatchesRegularExpression\" ||\n value.type === \"patternFuzzyContainSubsequence\" ||\n value.type === \"inSet\" ||\n value.type === \"notInSet\" ||\n value.type === \"ifNa\"\n ) {\n throw new Error(\"Not implemented filter type: \" + value.type);\n }\n\n if (value.type === undefined) {\n throw new Error(\"Filter type is undefined, this should not happen\");\n }\n\n assertNever(value);\n}\n\nexport function convertFilterUiToExpressions(value: FilterSpec): Expression {\n return convertFilterUiToExpressionImpl(value).toJSON();\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/filters/converters/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/** Compile-time check: every key in the tuple is a valid leaf key (via satisfies). */
|
|
4
|
+
const KNOWN_LEAF_KEYS_TUPLE = [
|
|
5
|
+
"n",
|
|
6
|
+
"x",
|
|
7
|
+
"rhs",
|
|
8
|
+
"type",
|
|
9
|
+
"value",
|
|
10
|
+
"column",
|
|
11
|
+
"minDiff",
|
|
12
|
+
"maxEdits",
|
|
13
|
+
"wildcard",
|
|
14
|
+
"replacement",
|
|
15
|
+
"substitutionsOnly",
|
|
16
|
+
];
|
|
17
|
+
const KNOWN_LEAF_KEYS = new Set(KNOWN_LEAF_KEYS_TUPLE);
|
|
18
|
+
function distillLeaf(node) {
|
|
19
|
+
const result = {};
|
|
20
|
+
for (const [key, value] of Object.entries(node)) {
|
|
21
|
+
if (KNOWN_LEAF_KEYS.has(key)) {
|
|
22
|
+
result[key] = value;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return result;
|
|
26
|
+
}
|
|
27
|
+
function distillNode(node) {
|
|
28
|
+
switch (node.type) {
|
|
29
|
+
case "and":
|
|
30
|
+
case "or":
|
|
31
|
+
return { type: node.type, filters: node.filters.map(distillNode) };
|
|
32
|
+
case "not":
|
|
33
|
+
return { type: "not", filter: distillNode(node.filter) };
|
|
34
|
+
default:
|
|
35
|
+
return distillLeaf(node);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/** Strips all non-FilterSpec metadata from the filter tree (whitelist approach). */
|
|
39
|
+
function distillFilter(filter) {
|
|
40
|
+
if (filter == null)
|
|
41
|
+
return null;
|
|
42
|
+
return distillNode(filter);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
exports.distillFilter = distillFilter;
|
|
46
|
+
//# sourceMappingURL=distill.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"distill.cjs","sources":["../../src/filters/distill.ts"],"sourcesContent":["import { DistributiveKeys, UnionToTuples } from \"@milaboratories/helpers\";\nimport {\n type FilterSpec,\n type FilterSpecLeaf,\n type PTableFilters,\n} from \"@milaboratories/pl-model-common\";\n\n/** All possible field names that can appear in any FilterSpecLeaf variant. */\ntype FilterSpecLeafKey = DistributiveKeys<FilterSpecLeaf<string>>;\n\n/** Compile-time check: every key in the tuple is a valid leaf key (via satisfies). */\nconst KNOWN_LEAF_KEYS_TUPLE: UnionToTuples<FilterSpecLeafKey> = [\n \"n\",\n \"x\",\n \"rhs\",\n \"type\",\n \"value\",\n \"column\",\n \"minDiff\",\n \"maxEdits\",\n \"wildcard\",\n \"replacement\",\n \"substitutionsOnly\",\n];\nconst KNOWN_LEAF_KEYS: Set<FilterSpecLeafKey> = new Set(KNOWN_LEAF_KEYS_TUPLE);\n\ntype UnknownFilterNode = FilterSpec<\n FilterSpecLeaf<string>,\n Record<string, unknown>,\n Record<string, unknown>\n>;\n\nfunction distillLeaf(node: Record<string, unknown>): FilterSpecLeaf<string> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(node)) {\n if (KNOWN_LEAF_KEYS.has(key as FilterSpecLeafKey)) {\n result[key] = value;\n }\n }\n return result as FilterSpecLeaf<string>;\n}\n\nfunction distillNode(node: UnknownFilterNode): FilterSpec<FilterSpecLeaf<string>> {\n switch (node.type) {\n case \"and\":\n case \"or\":\n return { type: node.type, filters: node.filters.map(distillNode) };\n case \"not\":\n return { type: \"not\", filter: distillNode(node.filter) };\n default:\n return distillLeaf(node as Record<string, unknown>);\n }\n}\n\n/** Strips all non-FilterSpec metadata from the filter tree (whitelist approach). */\nexport function distillFilter(filter: UnknownFilterNode | null | undefined): PTableFilters {\n if (filter == null) return null;\n return distillNode(filter);\n}\n"],"names":[],"mappings":";;AAUA;AACA,MAAM,qBAAqB,GAAqC;IAC9D,GAAG;IACH,GAAG;IACH,KAAK;IACL,MAAM;IACN,OAAO;IACP,QAAQ;IACR,SAAS;IACT,UAAU;IACV,UAAU;IACV,aAAa;IACb,mBAAmB;CACpB;AACD,MAAM,eAAe,GAA2B,IAAI,GAAG,CAAC,qBAAqB,CAAC;AAQ9E,SAAS,WAAW,CAAC,IAA6B,EAAA;IAChD,MAAM,MAAM,GAA4B,EAAE;AAC1C,IAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC/C,QAAA,IAAI,eAAe,CAAC,GAAG,CAAC,GAAwB,CAAC,EAAE;AACjD,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;QACrB;IACF;AACA,IAAA,OAAO,MAAgC;AACzC;AAEA,SAAS,WAAW,CAAC,IAAuB,EAAA;AAC1C,IAAA,QAAQ,IAAI,CAAC,IAAI;AACf,QAAA,KAAK,KAAK;AACV,QAAA,KAAK,IAAI;AACP,YAAA,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;AACpE,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC1D,QAAA;AACE,YAAA,OAAO,WAAW,CAAC,IAA+B,CAAC;;AAEzD;AAEA;AACM,SAAU,aAAa,CAAC,MAA4C,EAAA;IACxE,IAAI,MAAM,IAAI,IAAI;AAAE,QAAA,OAAO,IAAI;AAC/B,IAAA,OAAO,WAAW,CAAC,MAAM,CAAC;AAC5B;;;;"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type FilterSpec, type FilterSpecLeaf, type PTableFilters } from "@milaboratories/pl-model-common";
|
|
2
|
+
type UnknownFilterNode = FilterSpec<FilterSpecLeaf<string>, Record<string, unknown>, Record<string, unknown>>;
|
|
3
|
+
/** Strips all non-FilterSpec metadata from the filter tree (whitelist approach). */
|
|
4
|
+
export declare function distillFilter(filter: UnknownFilterNode | null | undefined): PTableFilters;
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=distill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"distill.d.ts","sourceRoot":"","sources":["../../src/filters/distill.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;AAqBzC,KAAK,iBAAiB,GAAG,UAAU,CACjC,cAAc,CAAC,MAAM,CAAC,EACtB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACxB,CAAC;AAwBF,oFAAoF;AACpF,wBAAgB,aAAa,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,GAAG,aAAa,CAGzF"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/** Compile-time check: every key in the tuple is a valid leaf key (via satisfies). */
|
|
2
|
+
const KNOWN_LEAF_KEYS_TUPLE = [
|
|
3
|
+
"n",
|
|
4
|
+
"x",
|
|
5
|
+
"rhs",
|
|
6
|
+
"type",
|
|
7
|
+
"value",
|
|
8
|
+
"column",
|
|
9
|
+
"minDiff",
|
|
10
|
+
"maxEdits",
|
|
11
|
+
"wildcard",
|
|
12
|
+
"replacement",
|
|
13
|
+
"substitutionsOnly",
|
|
14
|
+
];
|
|
15
|
+
const KNOWN_LEAF_KEYS = new Set(KNOWN_LEAF_KEYS_TUPLE);
|
|
16
|
+
function distillLeaf(node) {
|
|
17
|
+
const result = {};
|
|
18
|
+
for (const [key, value] of Object.entries(node)) {
|
|
19
|
+
if (KNOWN_LEAF_KEYS.has(key)) {
|
|
20
|
+
result[key] = value;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
25
|
+
function distillNode(node) {
|
|
26
|
+
switch (node.type) {
|
|
27
|
+
case "and":
|
|
28
|
+
case "or":
|
|
29
|
+
return { type: node.type, filters: node.filters.map(distillNode) };
|
|
30
|
+
case "not":
|
|
31
|
+
return { type: "not", filter: distillNode(node.filter) };
|
|
32
|
+
default:
|
|
33
|
+
return distillLeaf(node);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/** Strips all non-FilterSpec metadata from the filter tree (whitelist approach). */
|
|
37
|
+
function distillFilter(filter) {
|
|
38
|
+
if (filter == null)
|
|
39
|
+
return null;
|
|
40
|
+
return distillNode(filter);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export { distillFilter };
|
|
44
|
+
//# sourceMappingURL=distill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"distill.js","sources":["../../src/filters/distill.ts"],"sourcesContent":["import { DistributiveKeys, UnionToTuples } from \"@milaboratories/helpers\";\nimport {\n type FilterSpec,\n type FilterSpecLeaf,\n type PTableFilters,\n} from \"@milaboratories/pl-model-common\";\n\n/** All possible field names that can appear in any FilterSpecLeaf variant. */\ntype FilterSpecLeafKey = DistributiveKeys<FilterSpecLeaf<string>>;\n\n/** Compile-time check: every key in the tuple is a valid leaf key (via satisfies). */\nconst KNOWN_LEAF_KEYS_TUPLE: UnionToTuples<FilterSpecLeafKey> = [\n \"n\",\n \"x\",\n \"rhs\",\n \"type\",\n \"value\",\n \"column\",\n \"minDiff\",\n \"maxEdits\",\n \"wildcard\",\n \"replacement\",\n \"substitutionsOnly\",\n];\nconst KNOWN_LEAF_KEYS: Set<FilterSpecLeafKey> = new Set(KNOWN_LEAF_KEYS_TUPLE);\n\ntype UnknownFilterNode = FilterSpec<\n FilterSpecLeaf<string>,\n Record<string, unknown>,\n Record<string, unknown>\n>;\n\nfunction distillLeaf(node: Record<string, unknown>): FilterSpecLeaf<string> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(node)) {\n if (KNOWN_LEAF_KEYS.has(key as FilterSpecLeafKey)) {\n result[key] = value;\n }\n }\n return result as FilterSpecLeaf<string>;\n}\n\nfunction distillNode(node: UnknownFilterNode): FilterSpec<FilterSpecLeaf<string>> {\n switch (node.type) {\n case \"and\":\n case \"or\":\n return { type: node.type, filters: node.filters.map(distillNode) };\n case \"not\":\n return { type: \"not\", filter: distillNode(node.filter) };\n default:\n return distillLeaf(node as Record<string, unknown>);\n }\n}\n\n/** Strips all non-FilterSpec metadata from the filter tree (whitelist approach). */\nexport function distillFilter(filter: UnknownFilterNode | null | undefined): PTableFilters {\n if (filter == null) return null;\n return distillNode(filter);\n}\n"],"names":[],"mappings":"AAUA;AACA,MAAM,qBAAqB,GAAqC;IAC9D,GAAG;IACH,GAAG;IACH,KAAK;IACL,MAAM;IACN,OAAO;IACP,QAAQ;IACR,SAAS;IACT,UAAU;IACV,UAAU;IACV,aAAa;IACb,mBAAmB;CACpB;AACD,MAAM,eAAe,GAA2B,IAAI,GAAG,CAAC,qBAAqB,CAAC;AAQ9E,SAAS,WAAW,CAAC,IAA6B,EAAA;IAChD,MAAM,MAAM,GAA4B,EAAE;AAC1C,IAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC/C,QAAA,IAAI,eAAe,CAAC,GAAG,CAAC,GAAwB,CAAC,EAAE;AACjD,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;QACrB;IACF;AACA,IAAA,OAAO,MAAgC;AACzC;AAEA,SAAS,WAAW,CAAC,IAAuB,EAAA;AAC1C,IAAA,QAAQ,IAAI,CAAC,IAAI;AACf,QAAA,KAAK,KAAK;AACV,QAAA,KAAK,IAAI;AACP,YAAA,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;AACpE,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC1D,QAAA;AACE,YAAA,OAAO,WAAW,CAAC,IAA+B,CAAC;;AAEzD;AAEA;AACM,SAAU,aAAa,CAAC,MAA4C,EAAA;IACxE,IAAI,MAAM,IAAI,IAAI;AAAE,QAAA,OAAO,IAAI;AAC/B,IAAA,OAAO,WAAW,CAAC,MAAM,CAAC;AAC5B;;;;"}
|
package/dist/filters/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/filters/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/filters/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
|
package/dist/filters/types.d.ts
CHANGED
|
@@ -5,121 +5,5 @@ export type SimplifiedUniversalPColumnEntry = {
|
|
|
5
5
|
label: string;
|
|
6
6
|
obj: SimplifiedPColumnSpec;
|
|
7
7
|
};
|
|
8
|
-
export type FilterSpecNode
|
|
9
|
-
type: "not";
|
|
10
|
-
filter: FilterSpecNode<Leaf, CommonNode, CommonLeaf>;
|
|
11
|
-
}) | (CommonNode & {
|
|
12
|
-
type: "or";
|
|
13
|
-
filters: FilterSpecNode<Leaf, CommonNode, CommonLeaf>[];
|
|
14
|
-
}) | (CommonNode & {
|
|
15
|
-
type: "and";
|
|
16
|
-
filters: FilterSpecNode<Leaf, CommonNode, CommonLeaf>[];
|
|
17
|
-
});
|
|
18
|
-
export type FilterSpecLeaf<T = SUniversalPColumnId> = {
|
|
19
|
-
type: undefined;
|
|
20
|
-
} | {
|
|
21
|
-
type: "isNA";
|
|
22
|
-
column: T;
|
|
23
|
-
} | {
|
|
24
|
-
type: "isNotNA";
|
|
25
|
-
column: T;
|
|
26
|
-
} | {
|
|
27
|
-
type: "patternEquals";
|
|
28
|
-
column: T;
|
|
29
|
-
value: string;
|
|
30
|
-
} | {
|
|
31
|
-
type: "patternNotEquals";
|
|
32
|
-
column: T;
|
|
33
|
-
value: string;
|
|
34
|
-
} | {
|
|
35
|
-
type: "patternContainSubsequence";
|
|
36
|
-
column: T;
|
|
37
|
-
value: string;
|
|
38
|
-
} | {
|
|
39
|
-
type: "patternNotContainSubsequence";
|
|
40
|
-
column: T;
|
|
41
|
-
value: string;
|
|
42
|
-
} | {
|
|
43
|
-
type: "patternMatchesRegularExpression";
|
|
44
|
-
column: T;
|
|
45
|
-
value: string;
|
|
46
|
-
} | {
|
|
47
|
-
type: "patternFuzzyContainSubsequence";
|
|
48
|
-
column: T;
|
|
49
|
-
value: string;
|
|
50
|
-
maxEdits?: number;
|
|
51
|
-
substitutionsOnly?: boolean;
|
|
52
|
-
wildcard?: string;
|
|
53
|
-
} | {
|
|
54
|
-
type: "inSet";
|
|
55
|
-
column: T;
|
|
56
|
-
value: string[];
|
|
57
|
-
} | {
|
|
58
|
-
type: "notInSet";
|
|
59
|
-
column: T;
|
|
60
|
-
value: string[];
|
|
61
|
-
} | {
|
|
62
|
-
type: "topN";
|
|
63
|
-
column: T;
|
|
64
|
-
n: number;
|
|
65
|
-
} | {
|
|
66
|
-
type: "bottomN";
|
|
67
|
-
column: T;
|
|
68
|
-
n: number;
|
|
69
|
-
} | {
|
|
70
|
-
type: "equal";
|
|
71
|
-
column: T;
|
|
72
|
-
x: number;
|
|
73
|
-
} | {
|
|
74
|
-
type: "notEqual";
|
|
75
|
-
column: T;
|
|
76
|
-
x: number;
|
|
77
|
-
} | {
|
|
78
|
-
type: "lessThan";
|
|
79
|
-
column: T;
|
|
80
|
-
x: number;
|
|
81
|
-
} | {
|
|
82
|
-
type: "greaterThan";
|
|
83
|
-
column: T;
|
|
84
|
-
x: number;
|
|
85
|
-
} | {
|
|
86
|
-
type: "lessThanOrEqual";
|
|
87
|
-
column: T;
|
|
88
|
-
x: number;
|
|
89
|
-
} | {
|
|
90
|
-
type: "greaterThanOrEqual";
|
|
91
|
-
column: T;
|
|
92
|
-
x: number;
|
|
93
|
-
} | {
|
|
94
|
-
type: "equalToColumn";
|
|
95
|
-
column: T;
|
|
96
|
-
rhs: T;
|
|
97
|
-
} | {
|
|
98
|
-
type: "lessThanColumn";
|
|
99
|
-
column: T;
|
|
100
|
-
rhs: T;
|
|
101
|
-
minDiff?: number;
|
|
102
|
-
} | {
|
|
103
|
-
type: "greaterThanColumn";
|
|
104
|
-
column: T;
|
|
105
|
-
rhs: T;
|
|
106
|
-
minDiff?: number;
|
|
107
|
-
} | {
|
|
108
|
-
type: "lessThanColumnOrEqual";
|
|
109
|
-
column: T;
|
|
110
|
-
rhs: T;
|
|
111
|
-
minDiff?: number;
|
|
112
|
-
} | {
|
|
113
|
-
type: "greaterThanColumnOrEqual";
|
|
114
|
-
column: T;
|
|
115
|
-
rhs: T;
|
|
116
|
-
minDiff?: number;
|
|
117
|
-
};
|
|
118
|
-
export type FilterSpec<Leaf extends FilterSpecLeaf<unknown> = FilterSpecLeaf<SUniversalPColumnId>, CommonNode = {}, CommonLeaf = CommonNode> = FilterSpecNode<Leaf, CommonNode, CommonLeaf>;
|
|
119
|
-
export type FilterSpecType = Exclude<FilterSpec, {
|
|
120
|
-
type: undefined;
|
|
121
|
-
}>["type"];
|
|
122
|
-
export type FilterSpecOfType<T extends FilterSpecType> = Extract<FilterSpec, {
|
|
123
|
-
type: T;
|
|
124
|
-
}>;
|
|
8
|
+
export type { FilterSpecNode, FilterSpecLeaf, FilterSpec, FilterSpecType, FilterSpecOfType, PTableFilters, } from "@milaboratories/pl-model-common";
|
|
125
9
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/filters/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAExF,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,CAAC,CAAC;AAEnF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,EAAE,EAAE,mBAAmB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,qBAAqB,CAAC;CAC5B,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/filters/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAExF,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,CAAC,CAAC;AAEnF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,EAAE,EAAE,mBAAmB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,qBAAqB,CAAC;CAC5B,CAAC;AAEF,YAAY,EACV,cAAc,EACd,cAAc,EACd,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,aAAa,GACd,MAAM,iCAAiC,CAAC"}
|
package/dist/index.cjs
CHANGED
|
@@ -9,7 +9,8 @@ var normalization = require('./bconfig/normalization.cjs');
|
|
|
9
9
|
var types = require('./bconfig/types.cjs');
|
|
10
10
|
var PFrameForGraphs = require('./components/PFrameForGraphs.cjs');
|
|
11
11
|
var filters_ui = require('./components/PlAnnotations/filters_ui.cjs');
|
|
12
|
-
var
|
|
12
|
+
var stateMigration = require('./components/PlDataTable/state-migration.cjs');
|
|
13
|
+
var table = require('./components/PlDataTable/table.cjs');
|
|
13
14
|
var PlMultiSequenceAlignment = require('./components/PlMultiSequenceAlignment.cjs');
|
|
14
15
|
var PlSelectionModel = require('./components/PlSelectionModel.cjs');
|
|
15
16
|
var actions = require('./config/actions.cjs');
|
|
@@ -24,8 +25,10 @@ var column_collection = require('./render/util/column_collection.cjs');
|
|
|
24
25
|
var future = require('./render/future.cjs');
|
|
25
26
|
var sdk_info = require('./sdk_info.cjs');
|
|
26
27
|
var raw_globals = require('./raw_globals.cjs');
|
|
27
|
-
var
|
|
28
|
-
var
|
|
28
|
+
var filterToQuery = require('./filters/converters/filterToQuery.cjs');
|
|
29
|
+
var filterUiToExpressionImpl = require('./filters/converters/filterUiToExpressionImpl.cjs');
|
|
30
|
+
var distill = require('./filters/distill.cjs');
|
|
31
|
+
var converter = require('./annotations/converter.cjs');
|
|
29
32
|
var index = require('./pframe_utils/index.cjs');
|
|
30
33
|
var plModelCommon = require('@milaboratories/pl-model-common');
|
|
31
34
|
var plErrorLike = require('@milaboratories/pl-error-like');
|
|
@@ -78,15 +81,12 @@ exports.compileAnnotationScript = filters_ui.compileAnnotationScript;
|
|
|
78
81
|
exports.compileFilter = filters_ui.compileFilter;
|
|
79
82
|
exports.compileFilters = filters_ui.compileFilters;
|
|
80
83
|
exports.unreachable = filters_ui.unreachable;
|
|
81
|
-
exports.
|
|
82
|
-
exports.createPlDataTableStateV2 =
|
|
83
|
-
exports.
|
|
84
|
-
exports.
|
|
85
|
-
exports.
|
|
86
|
-
exports.
|
|
87
|
-
exports.isColumnOptional = PlDataTable.isColumnOptional;
|
|
88
|
-
exports.makeDefaultPTableParams = PlDataTable.makeDefaultPTableParams;
|
|
89
|
-
exports.upgradePlDataTableStateV2 = PlDataTable.upgradePlDataTableStateV2;
|
|
84
|
+
exports.createDefaultPTableParams = stateMigration.createDefaultPTableParams;
|
|
85
|
+
exports.createPlDataTableStateV2 = stateMigration.createPlDataTableStateV2;
|
|
86
|
+
exports.upgradePlDataTableStateV2 = stateMigration.upgradePlDataTableStateV2;
|
|
87
|
+
exports.createPlDataTableV2 = table.createPlDataTableV2;
|
|
88
|
+
exports.isColumnHidden = table.isColumnHidden;
|
|
89
|
+
exports.isColumnOptional = table.isColumnOptional;
|
|
90
90
|
exports.createRowSelectionColumn = PlMultiSequenceAlignment.createRowSelectionColumn;
|
|
91
91
|
exports.createPlSelectionModel = PlSelectionModel.createPlSelectionModel;
|
|
92
92
|
exports.Args = actions.Args;
|
|
@@ -154,9 +154,11 @@ exports.FutureRef = future.FutureRef;
|
|
|
154
154
|
exports.CurrentSdkInfo = sdk_info.CurrentSdkInfo;
|
|
155
155
|
exports.getPlatformaApiVersion = raw_globals.getPlatformaApiVersion;
|
|
156
156
|
exports.getRawPlatformaInstance = raw_globals.getRawPlatformaInstance;
|
|
157
|
-
exports.
|
|
158
|
-
exports.
|
|
159
|
-
exports.
|
|
157
|
+
exports.filterSpecToSpecQueryExpr = filterToQuery.filterSpecToSpecQueryExpr;
|
|
158
|
+
exports.convertFilterUiToExpressionImpl = filterUiToExpressionImpl.convertFilterUiToExpressionImpl;
|
|
159
|
+
exports.convertFilterUiToExpressions = filterUiToExpressionImpl.convertFilterUiToExpressions;
|
|
160
|
+
exports.distillFilter = distill.distillFilter;
|
|
161
|
+
exports.convertFilterSpecsToExpressionSpecs = converter.convertFilterSpecsToExpressionSpecs;
|
|
160
162
|
exports.getAxisUniqueValues = index.getAxisUniqueValues;
|
|
161
163
|
exports.getColumnOrAxisValueLabelsId = index.getColumnOrAxisValueLabelsId;
|
|
162
164
|
exports.getColumnSpecById = index.getColumnSpecById;
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.js
CHANGED
|
@@ -7,7 +7,8 @@ export { downgradeCfgOrLambda, extractConfig } from './bconfig/normalization.js'
|
|
|
7
7
|
export { isConfigLambda } from './bconfig/types.js';
|
|
8
8
|
export { createPFrameForGraphs, enrichCompatible, getAvailableWithLinkersAxes, isHiddenFromGraphColumn, isHiddenFromUIColumn } from './components/PFrameForGraphs.js';
|
|
9
9
|
export { compileAnnotationScript, compileFilter, compileFilters, unreachable } from './components/PlAnnotations/filters_ui.js';
|
|
10
|
-
export {
|
|
10
|
+
export { createDefaultPTableParams, createPlDataTableStateV2, upgradePlDataTableStateV2 } from './components/PlDataTable/state-migration.js';
|
|
11
|
+
export { createPlDataTableV2, isColumnHidden, isColumnOptional } from './components/PlDataTable/table.js';
|
|
11
12
|
export { createRowSelectionColumn } from './components/PlMultiSequenceAlignment.js';
|
|
12
13
|
export { createPlSelectionModel } from './components/PlSelectionModel.js';
|
|
13
14
|
export { Args, It, MainOutputs, StagingOutputs, UiState, and, extractArchiveAndGetURL, flatten, getBlobContent, getBlobContentAsJson, getBlobContentAsString, getDownloadedBlobContent, getFromCfg, getImmediate, getImportProgress, getJsonField, getLastLogs, getLogHandle, getOnDemandBlobContent, getProgressLog, getProgressLogWithInfo, getResourceField, getResourceValueAsJson, isEmpty, isolate, makeArray, makeObject, mapArrayValues, mapRecordValues, mapResourceFields, not, or } from './config/actions.js';
|
|
@@ -22,7 +23,9 @@ export { PColumnCollection } from './render/util/column_collection.js';
|
|
|
22
23
|
export { FutureRef } from './render/future.js';
|
|
23
24
|
export { CurrentSdkInfo } from './sdk_info.js';
|
|
24
25
|
export { getPlatformaApiVersion, getRawPlatformaInstance } from './raw_globals.js';
|
|
25
|
-
export {
|
|
26
|
+
export { filterSpecToSpecQueryExpr } from './filters/converters/filterToQuery.js';
|
|
27
|
+
export { convertFilterUiToExpressionImpl, convertFilterUiToExpressions } from './filters/converters/filterUiToExpressionImpl.js';
|
|
28
|
+
export { distillFilter } from './filters/distill.js';
|
|
26
29
|
export { convertFilterSpecsToExpressionSpecs } from './annotations/converter.js';
|
|
27
30
|
export { getAxisUniqueValues, getColumnOrAxisValueLabelsId, getColumnSpecById, getColumnUniqueValues, getColumnsFull, getRequestColumnsFromSelectedSources, getSingleColumnData, getUniqueSourceValuesWithLabels } from './pframe_utils/index.js';
|
|
28
31
|
export * from '@milaboratories/pl-model-common';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/package.json.cjs
CHANGED
package/dist/package.json.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
var plModelCommon = require('@milaboratories/pl-model-common');
|
|
4
4
|
var PFrameForGraphs = require('../components/PFrameForGraphs.cjs');
|
|
5
|
+
require('@milaboratories/ptabler-expression-js');
|
|
6
|
+
require('../filters/distill.cjs');
|
|
5
7
|
require('canonicalize');
|
|
6
8
|
var column_collection = require('../render/util/column_collection.cjs');
|
|
7
9
|
require('../render/util/label.cjs');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columns.cjs","sources":["../../src/pframe_utils/columns.ts"],"sourcesContent":["import type { PColumn, PColumnSpec, PColumnLazy, PFrameDef } from \"@milaboratories/pl-model-common\";\nimport {\n getNormalizedAxesList,\n getAxisId,\n canonicalizeJson,\n isLinkerColumn,\n matchAxisId,\n isLabelColumn,\n} from \"@milaboratories/pl-model-common\";\nimport type { AxesVault } from \"../components\";\nimport { enrichCompatible, getAvailableWithLinkersAxes } from \"../components\";\nimport type { RenderCtxBase, PColumnDataUniversal } from \"../render\";\nimport { PColumnCollection } from \"../render\";\n\nexport function getAllRelatedColumns<A, U>(\n ctx: RenderCtxBase<A, U>,\n predicate: (spec: PColumnSpec) => boolean,\n): PFrameDef<PColumn<PColumnDataUniversal> | PColumnLazy<undefined | PColumnDataUniversal>> {\n // if current block doesn't produce own columns then use all columns from result pool\n const columns = new PColumnCollection();\n columns.addColumnProvider(ctx.resultPool);\n const allColumns =\n columns.getColumns(predicate, {\n dontWaitAllData: true,\n overrideLabelAnnotation: false,\n }) ?? [];\n\n const allAxes: AxesVault = new Map(\n allColumns\n .flatMap((column) => getNormalizedAxesList(column.spec.axesSpec))\n .map((axisSpec) => {\n const axisId = getAxisId(axisSpec);\n return [canonicalizeJson(axisId), axisSpec];\n }),\n );\n\n // additional columns are duplicates with extra fields in domains for compatibility if there are ones with partial match\n const extendedColumns = enrichCompatible(allAxes, allColumns);\n\n return extendedColumns;\n}\n\nexport function getRelatedColumns<A, U>(\n ctx: RenderCtxBase<A, U>,\n {\n columns: rootColumns,\n predicate,\n }: {\n columns: PColumn<PColumnDataUniversal>[];\n predicate: (spec: PColumnSpec) => boolean;\n },\n): PFrameDef<PColumn<PColumnDataUniversal> | PColumnLazy<undefined | PColumnDataUniversal>> {\n // if current block has its own columns then take from result pool only compatible with them\n const columns = new PColumnCollection();\n columns.addColumnProvider(ctx.resultPool);\n columns.addColumns(rootColumns);\n\n // all possible axes from block columns\n const blockAxes: AxesVault = new Map();\n // axes from block columns and compatible result pool columns\n const allAxes: AxesVault = new Map();\n for (const c of rootColumns) {\n for (const spec of getNormalizedAxesList(c.spec.axesSpec)) {\n const aid = getAxisId(spec);\n blockAxes.set(canonicalizeJson(aid), spec);\n allAxes.set(canonicalizeJson(aid), spec);\n }\n }\n\n // all linker columns always go to pFrame - even it's impossible to use some of them they all are hidden\n const linkerColumns =\n columns.getColumns((spec) => predicate(spec) && isLinkerColumn(spec), {\n dontWaitAllData: true,\n }) ?? [];\n const availableWithLinkersAxes = getAvailableWithLinkersAxes(linkerColumns, blockAxes);\n\n // all possible axes from connected linkers\n for (const item of availableWithLinkersAxes) {\n blockAxes.set(...item);\n allAxes.set(...item);\n }\n\n const blockAxesArr = Array.from(blockAxes.values());\n // all compatible with block columns but without label columns\n let compatibleWithoutLabels = (\n columns.getColumns(\n (spec) =>\n predicate(spec) &&\n spec.axesSpec.some((axisSpec) => {\n const axisId = getAxisId(axisSpec);\n return blockAxesArr.some((selectorAxisSpec) =>\n matchAxisId(getAxisId(selectorAxisSpec), axisId),\n );\n }),\n { dontWaitAllData: true, overrideLabelAnnotation: false },\n ) ?? []\n ).filter((column) => !isLabelColumn(column.spec));\n\n // extend axes set for label columns request\n for (const c of compatibleWithoutLabels) {\n for (const spec of getNormalizedAxesList(c.spec.axesSpec)) {\n const aid = getAxisId(spec);\n allAxes.set(canonicalizeJson(aid), spec);\n }\n }\n\n const allAxesArr = Array.from(allAxes.values());\n // extend allowed columns - add columns thad doesn't have axes from block, but have all axes in 'allAxes' list (that means all axes from linkers or from 'hanging' of other selected columns)\n compatibleWithoutLabels = (\n columns.getColumns(\n (spec) =>\n predicate(spec) &&\n spec.axesSpec.every((axisSpec) => {\n const axisId = getAxisId(axisSpec);\n return allAxesArr.some((selectorAxisSpec) =>\n matchAxisId(getAxisId(selectorAxisSpec), axisId),\n );\n }),\n { dontWaitAllData: true, overrideLabelAnnotation: false },\n ) ?? []\n ).filter((column) => !isLabelColumn(column.spec));\n\n // label columns must be compatible with full set of axes - block axes and axes from compatible columns from result pool\n const compatibleLabels = (\n columns.getColumns(\n (spec) =>\n predicate(spec) &&\n spec.axesSpec.some((axisSpec) => {\n const axisId = getAxisId(axisSpec);\n return allAxesArr.some((selectorAxisSpec) =>\n matchAxisId(getAxisId(selectorAxisSpec), axisId),\n );\n }),\n { dontWaitAllData: true, overrideLabelAnnotation: false },\n ) ?? []\n ).filter((column) => isLabelColumn(column.spec));\n\n const compatible = [...compatibleWithoutLabels, ...compatibleLabels];\n\n // additional columns are duplicates with extra fields in domains for compatibility if there are ones with partial match\n const extendedColumns = enrichCompatible(blockAxes, compatible);\n\n return extendedColumns;\n}\n"],"names":["PColumnCollection","getNormalizedAxesList","getAxisId","canonicalizeJson","enrichCompatible","isLinkerColumn","getAvailableWithLinkersAxes","matchAxisId","isLabelColumn"],"mappings":"
|
|
1
|
+
{"version":3,"file":"columns.cjs","sources":["../../src/pframe_utils/columns.ts"],"sourcesContent":["import type { PColumn, PColumnSpec, PColumnLazy, PFrameDef } from \"@milaboratories/pl-model-common\";\nimport {\n getNormalizedAxesList,\n getAxisId,\n canonicalizeJson,\n isLinkerColumn,\n matchAxisId,\n isLabelColumn,\n} from \"@milaboratories/pl-model-common\";\nimport type { AxesVault } from \"../components\";\nimport { enrichCompatible, getAvailableWithLinkersAxes } from \"../components\";\nimport type { RenderCtxBase, PColumnDataUniversal } from \"../render\";\nimport { PColumnCollection } from \"../render\";\n\nexport function getAllRelatedColumns<A, U>(\n ctx: RenderCtxBase<A, U>,\n predicate: (spec: PColumnSpec) => boolean,\n): PFrameDef<PColumn<PColumnDataUniversal> | PColumnLazy<undefined | PColumnDataUniversal>> {\n // if current block doesn't produce own columns then use all columns from result pool\n const columns = new PColumnCollection();\n columns.addColumnProvider(ctx.resultPool);\n const allColumns =\n columns.getColumns(predicate, {\n dontWaitAllData: true,\n overrideLabelAnnotation: false,\n }) ?? [];\n\n const allAxes: AxesVault = new Map(\n allColumns\n .flatMap((column) => getNormalizedAxesList(column.spec.axesSpec))\n .map((axisSpec) => {\n const axisId = getAxisId(axisSpec);\n return [canonicalizeJson(axisId), axisSpec];\n }),\n );\n\n // additional columns are duplicates with extra fields in domains for compatibility if there are ones with partial match\n const extendedColumns = enrichCompatible(allAxes, allColumns);\n\n return extendedColumns;\n}\n\nexport function getRelatedColumns<A, U>(\n ctx: RenderCtxBase<A, U>,\n {\n columns: rootColumns,\n predicate,\n }: {\n columns: PColumn<PColumnDataUniversal>[];\n predicate: (spec: PColumnSpec) => boolean;\n },\n): PFrameDef<PColumn<PColumnDataUniversal> | PColumnLazy<undefined | PColumnDataUniversal>> {\n // if current block has its own columns then take from result pool only compatible with them\n const columns = new PColumnCollection();\n columns.addColumnProvider(ctx.resultPool);\n columns.addColumns(rootColumns);\n\n // all possible axes from block columns\n const blockAxes: AxesVault = new Map();\n // axes from block columns and compatible result pool columns\n const allAxes: AxesVault = new Map();\n for (const c of rootColumns) {\n for (const spec of getNormalizedAxesList(c.spec.axesSpec)) {\n const aid = getAxisId(spec);\n blockAxes.set(canonicalizeJson(aid), spec);\n allAxes.set(canonicalizeJson(aid), spec);\n }\n }\n\n // all linker columns always go to pFrame - even it's impossible to use some of them they all are hidden\n const linkerColumns =\n columns.getColumns((spec) => predicate(spec) && isLinkerColumn(spec), {\n dontWaitAllData: true,\n }) ?? [];\n const availableWithLinkersAxes = getAvailableWithLinkersAxes(linkerColumns, blockAxes);\n\n // all possible axes from connected linkers\n for (const item of availableWithLinkersAxes) {\n blockAxes.set(...item);\n allAxes.set(...item);\n }\n\n const blockAxesArr = Array.from(blockAxes.values());\n // all compatible with block columns but without label columns\n let compatibleWithoutLabels = (\n columns.getColumns(\n (spec) =>\n predicate(spec) &&\n spec.axesSpec.some((axisSpec) => {\n const axisId = getAxisId(axisSpec);\n return blockAxesArr.some((selectorAxisSpec) =>\n matchAxisId(getAxisId(selectorAxisSpec), axisId),\n );\n }),\n { dontWaitAllData: true, overrideLabelAnnotation: false },\n ) ?? []\n ).filter((column) => !isLabelColumn(column.spec));\n\n // extend axes set for label columns request\n for (const c of compatibleWithoutLabels) {\n for (const spec of getNormalizedAxesList(c.spec.axesSpec)) {\n const aid = getAxisId(spec);\n allAxes.set(canonicalizeJson(aid), spec);\n }\n }\n\n const allAxesArr = Array.from(allAxes.values());\n // extend allowed columns - add columns thad doesn't have axes from block, but have all axes in 'allAxes' list (that means all axes from linkers or from 'hanging' of other selected columns)\n compatibleWithoutLabels = (\n columns.getColumns(\n (spec) =>\n predicate(spec) &&\n spec.axesSpec.every((axisSpec) => {\n const axisId = getAxisId(axisSpec);\n return allAxesArr.some((selectorAxisSpec) =>\n matchAxisId(getAxisId(selectorAxisSpec), axisId),\n );\n }),\n { dontWaitAllData: true, overrideLabelAnnotation: false },\n ) ?? []\n ).filter((column) => !isLabelColumn(column.spec));\n\n // label columns must be compatible with full set of axes - block axes and axes from compatible columns from result pool\n const compatibleLabels = (\n columns.getColumns(\n (spec) =>\n predicate(spec) &&\n spec.axesSpec.some((axisSpec) => {\n const axisId = getAxisId(axisSpec);\n return allAxesArr.some((selectorAxisSpec) =>\n matchAxisId(getAxisId(selectorAxisSpec), axisId),\n );\n }),\n { dontWaitAllData: true, overrideLabelAnnotation: false },\n ) ?? []\n ).filter((column) => isLabelColumn(column.spec));\n\n const compatible = [...compatibleWithoutLabels, ...compatibleLabels];\n\n // additional columns are duplicates with extra fields in domains for compatibility if there are ones with partial match\n const extendedColumns = enrichCompatible(blockAxes, compatible);\n\n return extendedColumns;\n}\n"],"names":["PColumnCollection","getNormalizedAxesList","getAxisId","canonicalizeJson","enrichCompatible","isLinkerColumn","getAvailableWithLinkersAxes","matchAxisId","isLabelColumn"],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { getNormalizedAxesList, getAxisId, canonicalizeJson, isLinkerColumn, matchAxisId, isLabelColumn } from '@milaboratories/pl-model-common';
|
|
2
2
|
import { enrichCompatible, getAvailableWithLinkersAxes } from '../components/PFrameForGraphs.js';
|
|
3
|
+
import '@milaboratories/ptabler-expression-js';
|
|
4
|
+
import '../filters/distill.js';
|
|
3
5
|
import 'canonicalize';
|
|
4
6
|
import { PColumnCollection } from '../render/util/column_collection.js';
|
|
5
7
|
import '../render/util/label.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columns.js","sources":["../../src/pframe_utils/columns.ts"],"sourcesContent":["import type { PColumn, PColumnSpec, PColumnLazy, PFrameDef } from \"@milaboratories/pl-model-common\";\nimport {\n getNormalizedAxesList,\n getAxisId,\n canonicalizeJson,\n isLinkerColumn,\n matchAxisId,\n isLabelColumn,\n} from \"@milaboratories/pl-model-common\";\nimport type { AxesVault } from \"../components\";\nimport { enrichCompatible, getAvailableWithLinkersAxes } from \"../components\";\nimport type { RenderCtxBase, PColumnDataUniversal } from \"../render\";\nimport { PColumnCollection } from \"../render\";\n\nexport function getAllRelatedColumns<A, U>(\n ctx: RenderCtxBase<A, U>,\n predicate: (spec: PColumnSpec) => boolean,\n): PFrameDef<PColumn<PColumnDataUniversal> | PColumnLazy<undefined | PColumnDataUniversal>> {\n // if current block doesn't produce own columns then use all columns from result pool\n const columns = new PColumnCollection();\n columns.addColumnProvider(ctx.resultPool);\n const allColumns =\n columns.getColumns(predicate, {\n dontWaitAllData: true,\n overrideLabelAnnotation: false,\n }) ?? [];\n\n const allAxes: AxesVault = new Map(\n allColumns\n .flatMap((column) => getNormalizedAxesList(column.spec.axesSpec))\n .map((axisSpec) => {\n const axisId = getAxisId(axisSpec);\n return [canonicalizeJson(axisId), axisSpec];\n }),\n );\n\n // additional columns are duplicates with extra fields in domains for compatibility if there are ones with partial match\n const extendedColumns = enrichCompatible(allAxes, allColumns);\n\n return extendedColumns;\n}\n\nexport function getRelatedColumns<A, U>(\n ctx: RenderCtxBase<A, U>,\n {\n columns: rootColumns,\n predicate,\n }: {\n columns: PColumn<PColumnDataUniversal>[];\n predicate: (spec: PColumnSpec) => boolean;\n },\n): PFrameDef<PColumn<PColumnDataUniversal> | PColumnLazy<undefined | PColumnDataUniversal>> {\n // if current block has its own columns then take from result pool only compatible with them\n const columns = new PColumnCollection();\n columns.addColumnProvider(ctx.resultPool);\n columns.addColumns(rootColumns);\n\n // all possible axes from block columns\n const blockAxes: AxesVault = new Map();\n // axes from block columns and compatible result pool columns\n const allAxes: AxesVault = new Map();\n for (const c of rootColumns) {\n for (const spec of getNormalizedAxesList(c.spec.axesSpec)) {\n const aid = getAxisId(spec);\n blockAxes.set(canonicalizeJson(aid), spec);\n allAxes.set(canonicalizeJson(aid), spec);\n }\n }\n\n // all linker columns always go to pFrame - even it's impossible to use some of them they all are hidden\n const linkerColumns =\n columns.getColumns((spec) => predicate(spec) && isLinkerColumn(spec), {\n dontWaitAllData: true,\n }) ?? [];\n const availableWithLinkersAxes = getAvailableWithLinkersAxes(linkerColumns, blockAxes);\n\n // all possible axes from connected linkers\n for (const item of availableWithLinkersAxes) {\n blockAxes.set(...item);\n allAxes.set(...item);\n }\n\n const blockAxesArr = Array.from(blockAxes.values());\n // all compatible with block columns but without label columns\n let compatibleWithoutLabels = (\n columns.getColumns(\n (spec) =>\n predicate(spec) &&\n spec.axesSpec.some((axisSpec) => {\n const axisId = getAxisId(axisSpec);\n return blockAxesArr.some((selectorAxisSpec) =>\n matchAxisId(getAxisId(selectorAxisSpec), axisId),\n );\n }),\n { dontWaitAllData: true, overrideLabelAnnotation: false },\n ) ?? []\n ).filter((column) => !isLabelColumn(column.spec));\n\n // extend axes set for label columns request\n for (const c of compatibleWithoutLabels) {\n for (const spec of getNormalizedAxesList(c.spec.axesSpec)) {\n const aid = getAxisId(spec);\n allAxes.set(canonicalizeJson(aid), spec);\n }\n }\n\n const allAxesArr = Array.from(allAxes.values());\n // extend allowed columns - add columns thad doesn't have axes from block, but have all axes in 'allAxes' list (that means all axes from linkers or from 'hanging' of other selected columns)\n compatibleWithoutLabels = (\n columns.getColumns(\n (spec) =>\n predicate(spec) &&\n spec.axesSpec.every((axisSpec) => {\n const axisId = getAxisId(axisSpec);\n return allAxesArr.some((selectorAxisSpec) =>\n matchAxisId(getAxisId(selectorAxisSpec), axisId),\n );\n }),\n { dontWaitAllData: true, overrideLabelAnnotation: false },\n ) ?? []\n ).filter((column) => !isLabelColumn(column.spec));\n\n // label columns must be compatible with full set of axes - block axes and axes from compatible columns from result pool\n const compatibleLabels = (\n columns.getColumns(\n (spec) =>\n predicate(spec) &&\n spec.axesSpec.some((axisSpec) => {\n const axisId = getAxisId(axisSpec);\n return allAxesArr.some((selectorAxisSpec) =>\n matchAxisId(getAxisId(selectorAxisSpec), axisId),\n );\n }),\n { dontWaitAllData: true, overrideLabelAnnotation: false },\n ) ?? []\n ).filter((column) => isLabelColumn(column.spec));\n\n const compatible = [...compatibleWithoutLabels, ...compatibleLabels];\n\n // additional columns are duplicates with extra fields in domains for compatibility if there are ones with partial match\n const extendedColumns = enrichCompatible(blockAxes, compatible);\n\n return extendedColumns;\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"columns.js","sources":["../../src/pframe_utils/columns.ts"],"sourcesContent":["import type { PColumn, PColumnSpec, PColumnLazy, PFrameDef } from \"@milaboratories/pl-model-common\";\nimport {\n getNormalizedAxesList,\n getAxisId,\n canonicalizeJson,\n isLinkerColumn,\n matchAxisId,\n isLabelColumn,\n} from \"@milaboratories/pl-model-common\";\nimport type { AxesVault } from \"../components\";\nimport { enrichCompatible, getAvailableWithLinkersAxes } from \"../components\";\nimport type { RenderCtxBase, PColumnDataUniversal } from \"../render\";\nimport { PColumnCollection } from \"../render\";\n\nexport function getAllRelatedColumns<A, U>(\n ctx: RenderCtxBase<A, U>,\n predicate: (spec: PColumnSpec) => boolean,\n): PFrameDef<PColumn<PColumnDataUniversal> | PColumnLazy<undefined | PColumnDataUniversal>> {\n // if current block doesn't produce own columns then use all columns from result pool\n const columns = new PColumnCollection();\n columns.addColumnProvider(ctx.resultPool);\n const allColumns =\n columns.getColumns(predicate, {\n dontWaitAllData: true,\n overrideLabelAnnotation: false,\n }) ?? [];\n\n const allAxes: AxesVault = new Map(\n allColumns\n .flatMap((column) => getNormalizedAxesList(column.spec.axesSpec))\n .map((axisSpec) => {\n const axisId = getAxisId(axisSpec);\n return [canonicalizeJson(axisId), axisSpec];\n }),\n );\n\n // additional columns are duplicates with extra fields in domains for compatibility if there are ones with partial match\n const extendedColumns = enrichCompatible(allAxes, allColumns);\n\n return extendedColumns;\n}\n\nexport function getRelatedColumns<A, U>(\n ctx: RenderCtxBase<A, U>,\n {\n columns: rootColumns,\n predicate,\n }: {\n columns: PColumn<PColumnDataUniversal>[];\n predicate: (spec: PColumnSpec) => boolean;\n },\n): PFrameDef<PColumn<PColumnDataUniversal> | PColumnLazy<undefined | PColumnDataUniversal>> {\n // if current block has its own columns then take from result pool only compatible with them\n const columns = new PColumnCollection();\n columns.addColumnProvider(ctx.resultPool);\n columns.addColumns(rootColumns);\n\n // all possible axes from block columns\n const blockAxes: AxesVault = new Map();\n // axes from block columns and compatible result pool columns\n const allAxes: AxesVault = new Map();\n for (const c of rootColumns) {\n for (const spec of getNormalizedAxesList(c.spec.axesSpec)) {\n const aid = getAxisId(spec);\n blockAxes.set(canonicalizeJson(aid), spec);\n allAxes.set(canonicalizeJson(aid), spec);\n }\n }\n\n // all linker columns always go to pFrame - even it's impossible to use some of them they all are hidden\n const linkerColumns =\n columns.getColumns((spec) => predicate(spec) && isLinkerColumn(spec), {\n dontWaitAllData: true,\n }) ?? [];\n const availableWithLinkersAxes = getAvailableWithLinkersAxes(linkerColumns, blockAxes);\n\n // all possible axes from connected linkers\n for (const item of availableWithLinkersAxes) {\n blockAxes.set(...item);\n allAxes.set(...item);\n }\n\n const blockAxesArr = Array.from(blockAxes.values());\n // all compatible with block columns but without label columns\n let compatibleWithoutLabels = (\n columns.getColumns(\n (spec) =>\n predicate(spec) &&\n spec.axesSpec.some((axisSpec) => {\n const axisId = getAxisId(axisSpec);\n return blockAxesArr.some((selectorAxisSpec) =>\n matchAxisId(getAxisId(selectorAxisSpec), axisId),\n );\n }),\n { dontWaitAllData: true, overrideLabelAnnotation: false },\n ) ?? []\n ).filter((column) => !isLabelColumn(column.spec));\n\n // extend axes set for label columns request\n for (const c of compatibleWithoutLabels) {\n for (const spec of getNormalizedAxesList(c.spec.axesSpec)) {\n const aid = getAxisId(spec);\n allAxes.set(canonicalizeJson(aid), spec);\n }\n }\n\n const allAxesArr = Array.from(allAxes.values());\n // extend allowed columns - add columns thad doesn't have axes from block, but have all axes in 'allAxes' list (that means all axes from linkers or from 'hanging' of other selected columns)\n compatibleWithoutLabels = (\n columns.getColumns(\n (spec) =>\n predicate(spec) &&\n spec.axesSpec.every((axisSpec) => {\n const axisId = getAxisId(axisSpec);\n return allAxesArr.some((selectorAxisSpec) =>\n matchAxisId(getAxisId(selectorAxisSpec), axisId),\n );\n }),\n { dontWaitAllData: true, overrideLabelAnnotation: false },\n ) ?? []\n ).filter((column) => !isLabelColumn(column.spec));\n\n // label columns must be compatible with full set of axes - block axes and axes from compatible columns from result pool\n const compatibleLabels = (\n columns.getColumns(\n (spec) =>\n predicate(spec) &&\n spec.axesSpec.some((axisSpec) => {\n const axisId = getAxisId(axisSpec);\n return allAxesArr.some((selectorAxisSpec) =>\n matchAxisId(getAxisId(selectorAxisSpec), axisId),\n );\n }),\n { dontWaitAllData: true, overrideLabelAnnotation: false },\n ) ?? []\n ).filter((column) => isLabelColumn(column.spec));\n\n const compatible = [...compatibleWithoutLabels, ...compatibleLabels];\n\n // additional columns are duplicates with extra fields in domains for compatibility if there are ones with partial match\n const extendedColumns = enrichCompatible(blockAxes, compatible);\n\n return extendedColumns;\n}\n"],"names":[],"mappings":"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"}
|