@platforma-sdk/model 1.44.13 → 1.45.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/annotations/converter.cjs +29 -0
- package/dist/annotations/converter.cjs.map +1 -0
- package/dist/annotations/converter.d.ts +3 -0
- package/dist/annotations/converter.d.ts.map +1 -0
- package/dist/annotations/converter.js +27 -0
- package/dist/annotations/converter.js.map +1 -0
- package/dist/annotations/index.d.ts +3 -0
- package/dist/annotations/index.d.ts.map +1 -0
- package/dist/annotations/types.d.ts +22 -0
- package/dist/annotations/types.d.ts.map +1 -0
- package/dist/components/PlAnnotations/filter.d.ts.map +1 -1
- package/dist/components/PlAnnotations/filters_ui.cjs +1 -372
- package/dist/components/PlAnnotations/filters_ui.cjs.map +1 -1
- package/dist/components/PlAnnotations/filters_ui.d.ts +11 -756
- package/dist/components/PlAnnotations/filters_ui.d.ts.map +1 -1
- package/dist/components/PlAnnotations/filters_ui.js +2 -370
- package/dist/components/PlAnnotations/filters_ui.js.map +1 -1
- package/dist/components/PlAnnotations/index.d.ts.map +1 -1
- package/dist/components/PlAnnotations/types.d.ts.map +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/filters/converter.cjs +101 -0
- package/dist/filters/converter.cjs.map +1 -0
- package/dist/filters/converter.d.ts +5 -0
- package/dist/filters/converter.d.ts.map +1 -0
- package/dist/filters/converter.js +98 -0
- package/dist/filters/converter.js.map +1 -0
- package/dist/filters/index.d.ts +3 -0
- package/dist/filters/index.d.ts.map +1 -0
- package/dist/filters/types.d.ts +102 -0
- package/dist/filters/types.d.ts.map +1 -0
- package/dist/index.cjs +10 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/package.json.cjs +1 -1
- package/dist/package.json.js +1 -1
- package/dist/render/util/column_collection.cjs +2 -2
- package/dist/render/util/column_collection.cjs.map +1 -1
- package/dist/render/util/column_collection.d.ts +2 -2
- package/dist/render/util/column_collection.d.ts.map +1 -1
- package/dist/render/util/column_collection.js +2 -2
- package/dist/render/util/column_collection.js.map +1 -1
- package/dist/render/util/pcolumn_data.cjs +4 -0
- package/dist/render/util/pcolumn_data.cjs.map +1 -1
- package/dist/render/util/pcolumn_data.d.ts.map +1 -1
- package/dist/render/util/pcolumn_data.js +4 -0
- package/dist/render/util/pcolumn_data.js.map +1 -1
- package/package.json +7 -6
- package/src/annotations/converter.test.ts +74 -0
- package/src/annotations/converter.ts +28 -0
- package/src/annotations/index.ts +2 -0
- package/src/annotations/types.ts +23 -0
- package/src/components/PlAnnotations/filter.ts +1 -0
- package/src/components/PlAnnotations/filters_ui.test.ts +1 -0
- package/src/components/PlAnnotations/filters_ui.ts +56 -439
- package/src/components/PlAnnotations/index.ts +1 -0
- package/src/components/PlAnnotations/types.ts +1 -0
- package/src/components/index.ts +1 -1
- package/src/filters/converter.test.ts +336 -0
- package/src/filters/converter.ts +119 -0
- package/src/filters/index.ts +2 -0
- package/src/filters/types.ts +47 -0
- package/src/index.ts +2 -0
- package/src/render/util/column_collection.ts +19 -19
- package/src/render/util/pcolumn_data.ts +4 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"converter.cjs","sources":["../../src/filters/converter.ts"],"sourcesContent":["import { assertNever } from '@milaboratories/pl-model-common';\nimport { and, col, lit, or, rank, type Expression, type ExpressionImpl } from '@milaboratories/ptabler-expression-js';\nimport type { FilterSpec } from '../filters';\n\nexport function convertFilterUiToExpressionImpl(value: FilterSpec): ExpressionImpl {\n if (value.type === 'or') {\n const expressions = value.filters.filter((f) => f.type !== undefined).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.filter((f) => f.type !== undefined).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 === '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 (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":["or","and","col","lit","rank","assertNever"],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type Expression, type ExpressionImpl } from '@milaboratories/ptabler-expression-js';
|
|
2
|
+
import type { FilterSpec } from '../filters';
|
|
3
|
+
export declare function convertFilterUiToExpressionImpl(value: FilterSpec): ExpressionImpl;
|
|
4
|
+
export declare function convertFilterUiToExpressions(value: FilterSpec): Expression;
|
|
5
|
+
//# sourceMappingURL=converter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"converter.d.ts","sourceRoot":"","sources":["../../src/filters/converter.ts"],"names":[],"mappings":"AACA,OAAO,EAA2B,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACtH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CA8GjF;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAE1E"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { assertNever } from '@milaboratories/pl-model-common';
|
|
2
|
+
import { or, and, col, lit, rank } from '@milaboratories/ptabler-expression-js';
|
|
3
|
+
|
|
4
|
+
function convertFilterUiToExpressionImpl(value) {
|
|
5
|
+
if (value.type === 'or') {
|
|
6
|
+
const expressions = value.filters.filter((f) => f.type !== undefined).map(convertFilterUiToExpressionImpl);
|
|
7
|
+
if (expressions.length === 0) {
|
|
8
|
+
throw new Error('OR filter requires at least one operand');
|
|
9
|
+
}
|
|
10
|
+
return or(...expressions);
|
|
11
|
+
}
|
|
12
|
+
if (value.type === 'and') {
|
|
13
|
+
const expressions = value.filters.filter((f) => f.type !== undefined).map(convertFilterUiToExpressionImpl);
|
|
14
|
+
if (expressions.length === 0) {
|
|
15
|
+
throw new Error('AND filter requires at least one operand');
|
|
16
|
+
}
|
|
17
|
+
return and(...expressions);
|
|
18
|
+
}
|
|
19
|
+
if (value.type === 'not') {
|
|
20
|
+
return convertFilterUiToExpressionImpl(value.filter).not();
|
|
21
|
+
}
|
|
22
|
+
if (value.type === 'isNA') {
|
|
23
|
+
return col(value.column).isNull();
|
|
24
|
+
}
|
|
25
|
+
if (value.type === 'isNotNA') {
|
|
26
|
+
return col(value.column).isNotNull();
|
|
27
|
+
}
|
|
28
|
+
if (value.type === 'patternEquals') {
|
|
29
|
+
return col(value.column).eq(lit(value.value));
|
|
30
|
+
}
|
|
31
|
+
if (value.type === 'patternNotEquals') {
|
|
32
|
+
return col(value.column).neq(lit(value.value));
|
|
33
|
+
}
|
|
34
|
+
if (value.type === 'patternContainSubsequence') {
|
|
35
|
+
return col(value.column).strContains(value.value, false, true);
|
|
36
|
+
}
|
|
37
|
+
if (value.type === 'patternNotContainSubsequence') {
|
|
38
|
+
return col(value.column).strContains(value.value, false, true).not();
|
|
39
|
+
}
|
|
40
|
+
if (value.type === 'equal') {
|
|
41
|
+
return col(value.column).eq(lit(value.x));
|
|
42
|
+
}
|
|
43
|
+
if (value.type === 'lessThan') {
|
|
44
|
+
return col(value.column).lt(lit(value.x));
|
|
45
|
+
}
|
|
46
|
+
if (value.type === 'greaterThan') {
|
|
47
|
+
return col(value.column).gt(lit(value.x));
|
|
48
|
+
}
|
|
49
|
+
if (value.type === 'lessThanOrEqual') {
|
|
50
|
+
return col(value.column).le(lit(value.x));
|
|
51
|
+
}
|
|
52
|
+
if (value.type === 'greaterThanOrEqual') {
|
|
53
|
+
return col(value.column).ge(lit(value.x));
|
|
54
|
+
}
|
|
55
|
+
if (value.type === 'equalToColumn') {
|
|
56
|
+
return col(value.column).eq(col(value.rhs));
|
|
57
|
+
}
|
|
58
|
+
if (value.type === 'greaterThanColumn') {
|
|
59
|
+
if (value.minDiff !== undefined && value.minDiff !== 0) {
|
|
60
|
+
return col(value.column).plus(lit(value.minDiff)).gt(col(value.rhs));
|
|
61
|
+
}
|
|
62
|
+
return col(value.column).gt(col(value.rhs));
|
|
63
|
+
}
|
|
64
|
+
if (value.type === 'lessThanColumn') {
|
|
65
|
+
if (value.minDiff !== undefined && value.minDiff !== 0) {
|
|
66
|
+
return col(value.column).plus(lit(value.minDiff)).lt(col(value.rhs));
|
|
67
|
+
}
|
|
68
|
+
return col(value.column).lt(col(value.rhs));
|
|
69
|
+
}
|
|
70
|
+
if (value.type === 'greaterThanColumnOrEqual') {
|
|
71
|
+
if (value.minDiff !== undefined && value.minDiff !== 0) {
|
|
72
|
+
return col(value.column).plus(lit(value.minDiff)).ge(col(value.rhs));
|
|
73
|
+
}
|
|
74
|
+
return col(value.column).ge(col(value.rhs));
|
|
75
|
+
}
|
|
76
|
+
if (value.type === 'lessThanColumnOrEqual') {
|
|
77
|
+
if (value.minDiff !== undefined && value.minDiff !== 0) {
|
|
78
|
+
return col(value.column).plus(lit(value.minDiff)).le(col(value.rhs));
|
|
79
|
+
}
|
|
80
|
+
return col(value.column).le(col(value.rhs));
|
|
81
|
+
}
|
|
82
|
+
if (value.type === 'topN') {
|
|
83
|
+
return rank(col(value.column), true).over([]).le(lit(value.n));
|
|
84
|
+
}
|
|
85
|
+
if (value.type === 'bottomN') {
|
|
86
|
+
return rank(col(value.column), false).over([]).le(lit(value.n));
|
|
87
|
+
}
|
|
88
|
+
if (value.type === undefined) {
|
|
89
|
+
throw new Error('Filter type is undefined, this should not happen');
|
|
90
|
+
}
|
|
91
|
+
assertNever(value);
|
|
92
|
+
}
|
|
93
|
+
function convertFilterUiToExpressions(value) {
|
|
94
|
+
return convertFilterUiToExpressionImpl(value).toJSON();
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export { convertFilterUiToExpressionImpl, convertFilterUiToExpressions };
|
|
98
|
+
//# sourceMappingURL=converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"converter.js","sources":["../../src/filters/converter.ts"],"sourcesContent":["import { assertNever } from '@milaboratories/pl-model-common';\nimport { and, col, lit, or, rank, type Expression, type ExpressionImpl } from '@milaboratories/ptabler-expression-js';\nimport type { FilterSpec } from '../filters';\n\nexport function convertFilterUiToExpressionImpl(value: FilterSpec): ExpressionImpl {\n if (value.type === 'or') {\n const expressions = value.filters.filter((f) => f.type !== undefined).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.filter((f) => f.type !== undefined).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 === '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 (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/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import type { PColumnSpec, SUniversalPColumnId } from '@milaboratories/pl-model-common';
|
|
2
|
+
export type SimplifiedPColumnSpec = Pick<PColumnSpec, 'valueType' | 'annotations'>;
|
|
3
|
+
export type SimplifiedUniversalPColumnEntry = {
|
|
4
|
+
id: SUniversalPColumnId;
|
|
5
|
+
label: string;
|
|
6
|
+
obj: SimplifiedPColumnSpec;
|
|
7
|
+
};
|
|
8
|
+
export type FilterSpecNode<Leaf, Common = {}> = Common & Leaf | Common & {
|
|
9
|
+
type: 'not';
|
|
10
|
+
filter: Common & Leaf;
|
|
11
|
+
} | Common & {
|
|
12
|
+
type: 'or';
|
|
13
|
+
filters: FilterSpecNode<Leaf, Common>[];
|
|
14
|
+
} | Common & {
|
|
15
|
+
type: 'and';
|
|
16
|
+
filters: FilterSpecNode<Leaf, Common>[];
|
|
17
|
+
};
|
|
18
|
+
export type FilterSpecLeaf = {
|
|
19
|
+
type: undefined;
|
|
20
|
+
} | {
|
|
21
|
+
type: 'isNA';
|
|
22
|
+
column: SUniversalPColumnId;
|
|
23
|
+
} | {
|
|
24
|
+
type: 'isNotNA';
|
|
25
|
+
column: SUniversalPColumnId;
|
|
26
|
+
} | {
|
|
27
|
+
type: 'patternEquals';
|
|
28
|
+
column: SUniversalPColumnId;
|
|
29
|
+
value: string;
|
|
30
|
+
} | {
|
|
31
|
+
type: 'patternNotEquals';
|
|
32
|
+
column: SUniversalPColumnId;
|
|
33
|
+
value: string;
|
|
34
|
+
} | {
|
|
35
|
+
type: 'patternContainSubsequence';
|
|
36
|
+
column: SUniversalPColumnId;
|
|
37
|
+
value: string;
|
|
38
|
+
} | {
|
|
39
|
+
type: 'patternNotContainSubsequence';
|
|
40
|
+
column: SUniversalPColumnId;
|
|
41
|
+
value: string;
|
|
42
|
+
} | {
|
|
43
|
+
type: 'topN';
|
|
44
|
+
column: SUniversalPColumnId;
|
|
45
|
+
n: number;
|
|
46
|
+
} | {
|
|
47
|
+
type: 'bottomN';
|
|
48
|
+
column: SUniversalPColumnId;
|
|
49
|
+
n: number;
|
|
50
|
+
} | {
|
|
51
|
+
type: 'equal';
|
|
52
|
+
column: SUniversalPColumnId;
|
|
53
|
+
x: number;
|
|
54
|
+
} | {
|
|
55
|
+
type: 'lessThan';
|
|
56
|
+
column: SUniversalPColumnId;
|
|
57
|
+
x: number;
|
|
58
|
+
} | {
|
|
59
|
+
type: 'greaterThan';
|
|
60
|
+
column: SUniversalPColumnId;
|
|
61
|
+
x: number;
|
|
62
|
+
} | {
|
|
63
|
+
type: 'lessThanOrEqual';
|
|
64
|
+
column: SUniversalPColumnId;
|
|
65
|
+
x: number;
|
|
66
|
+
} | {
|
|
67
|
+
type: 'greaterThanOrEqual';
|
|
68
|
+
column: SUniversalPColumnId;
|
|
69
|
+
x: number;
|
|
70
|
+
} | {
|
|
71
|
+
type: 'equalToColumn';
|
|
72
|
+
column: SUniversalPColumnId;
|
|
73
|
+
rhs: SUniversalPColumnId;
|
|
74
|
+
} | {
|
|
75
|
+
type: 'lessThanColumn';
|
|
76
|
+
column: SUniversalPColumnId;
|
|
77
|
+
rhs: SUniversalPColumnId;
|
|
78
|
+
minDiff?: number;
|
|
79
|
+
} | {
|
|
80
|
+
type: 'greaterThanColumn';
|
|
81
|
+
column: SUniversalPColumnId;
|
|
82
|
+
rhs: SUniversalPColumnId;
|
|
83
|
+
minDiff?: number;
|
|
84
|
+
} | {
|
|
85
|
+
type: 'lessThanColumnOrEqual';
|
|
86
|
+
column: SUniversalPColumnId;
|
|
87
|
+
rhs: SUniversalPColumnId;
|
|
88
|
+
minDiff?: number;
|
|
89
|
+
} | {
|
|
90
|
+
type: 'greaterThanColumnOrEqual';
|
|
91
|
+
column: SUniversalPColumnId;
|
|
92
|
+
rhs: SUniversalPColumnId;
|
|
93
|
+
minDiff?: number;
|
|
94
|
+
};
|
|
95
|
+
export type FilterSpec<Leaf extends FilterSpecLeaf = FilterSpecLeaf, Common = {}> = FilterSpecNode<Leaf, Common>;
|
|
96
|
+
export type FilterSpecType = Exclude<FilterSpec, {
|
|
97
|
+
type: undefined;
|
|
98
|
+
}>['type'];
|
|
99
|
+
export type FilterSpecOfType<T extends FilterSpecType> = Extract<FilterSpec, {
|
|
100
|
+
type: T;
|
|
101
|
+
}>;
|
|
102
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/filters/types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
|
@@ -5,10 +5,10 @@ var builder = require('./builder.cjs');
|
|
|
5
5
|
var normalization = require('./bconfig/normalization.cjs');
|
|
6
6
|
var types = require('./bconfig/types.cjs');
|
|
7
7
|
var PFrameForGraphs = require('./components/PFrameForGraphs.cjs');
|
|
8
|
+
var filters_ui = require('./components/PlAnnotations/filters_ui.cjs');
|
|
8
9
|
var PlDataTable = require('./components/PlDataTable.cjs');
|
|
9
10
|
var PlMultiSequenceAlignment = require('./components/PlMultiSequenceAlignment.cjs');
|
|
10
11
|
var PlSelectionModel = require('./components/PlSelectionModel.cjs');
|
|
11
|
-
var filters_ui = require('./components/PlAnnotations/filters_ui.cjs');
|
|
12
12
|
var actions = require('./config/actions.cjs');
|
|
13
13
|
var pframe = require('./pframe.cjs');
|
|
14
14
|
var ref_util = require('./ref_util.cjs');
|
|
@@ -21,6 +21,8 @@ var column_collection = require('./render/util/column_collection.cjs');
|
|
|
21
21
|
var future = require('./render/future.cjs');
|
|
22
22
|
var sdk_info = require('./sdk_info.cjs');
|
|
23
23
|
var raw_globals = require('./raw_globals.cjs');
|
|
24
|
+
var converter = require('./filters/converter.cjs');
|
|
25
|
+
var converter$1 = require('./annotations/converter.cjs');
|
|
24
26
|
var plModelCommon = require('@milaboratories/pl-model-common');
|
|
25
27
|
var plErrorLike = require('@milaboratories/pl-error-like');
|
|
26
28
|
var internal = require('./render/internal.cjs');
|
|
@@ -41,6 +43,10 @@ exports.enrichCompatible = PFrameForGraphs.enrichCompatible;
|
|
|
41
43
|
exports.getAvailableWithLinkersAxes = PFrameForGraphs.getAvailableWithLinkersAxes;
|
|
42
44
|
exports.isColumnReady = PFrameForGraphs.isColumnReady;
|
|
43
45
|
exports.isLinkerColumn = PFrameForGraphs.isLinkerColumn;
|
|
46
|
+
exports.compileAnnotationScript = filters_ui.compileAnnotationScript;
|
|
47
|
+
exports.compileFilter = filters_ui.compileFilter;
|
|
48
|
+
exports.compileFilters = filters_ui.compileFilters;
|
|
49
|
+
exports.unreachable = filters_ui.unreachable;
|
|
44
50
|
exports.allColumnsComputed = PlDataTable.allColumnsComputed;
|
|
45
51
|
exports.createPlDataTableSheet = PlDataTable.createPlDataTableSheet;
|
|
46
52
|
exports.createPlDataTableStateV2 = PlDataTable.createPlDataTableStateV2;
|
|
@@ -54,13 +60,6 @@ exports.makeDefaultPTableParams = PlDataTable.makeDefaultPTableParams;
|
|
|
54
60
|
exports.upgradePlDataTableStateV2 = PlDataTable.upgradePlDataTableStateV2;
|
|
55
61
|
exports.createRowSelectionColumn = PlMultiSequenceAlignment.createRowSelectionColumn;
|
|
56
62
|
exports.createPlSelectionModel = PlSelectionModel.createPlSelectionModel;
|
|
57
|
-
exports.compileAnnotationScript = filters_ui.compileAnnotationScript;
|
|
58
|
-
exports.compileFilter = filters_ui.compileFilter;
|
|
59
|
-
exports.compileFilters = filters_ui.compileFilters;
|
|
60
|
-
exports.filterUiMetadata = filters_ui.filterUiMetadata;
|
|
61
|
-
exports.getFilterUiMetadata = filters_ui.getFilterUiMetadata;
|
|
62
|
-
exports.getFilterUiTypeOptions = filters_ui.getFilterUiTypeOptions;
|
|
63
|
-
exports.unreachable = filters_ui.unreachable;
|
|
64
63
|
exports.Args = actions.Args;
|
|
65
64
|
exports.It = actions.It;
|
|
66
65
|
exports.MainOutputs = actions.MainOutputs;
|
|
@@ -122,6 +121,9 @@ exports.FutureRef = future.FutureRef;
|
|
|
122
121
|
exports.CurrentSdkInfo = sdk_info.CurrentSdkInfo;
|
|
123
122
|
exports.getPlatformaApiVersion = raw_globals.getPlatformaApiVersion;
|
|
124
123
|
exports.getRawPlatformaInstance = raw_globals.getRawPlatformaInstance;
|
|
124
|
+
exports.convertFilterUiToExpressionImpl = converter.convertFilterUiToExpressionImpl;
|
|
125
|
+
exports.convertFilterUiToExpressions = converter.convertFilterUiToExpressions;
|
|
126
|
+
exports.convertFilterSpecsToExpressionSpecs = converter$1.convertFilterSpecsToExpressionSpecs;
|
|
125
127
|
exports.JsRenderInternal = internal;
|
|
126
128
|
exports.getEnvironmentValue = env_value.getEnvironmentValue;
|
|
127
129
|
Object.keys(plModelCommon).forEach(function (k) {
|
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.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ export * from './sdk_info';
|
|
|
12
12
|
export * from './raw_globals';
|
|
13
13
|
export * from './block_api_v1';
|
|
14
14
|
export * from './block_api_v2';
|
|
15
|
+
export * from './filters';
|
|
16
|
+
export * from './annotations';
|
|
15
17
|
export * from '@milaboratories/pl-model-common';
|
|
16
18
|
export * from '@milaboratories/pl-error-like';
|
|
17
19
|
export * as JsRenderInternal from './render/internal';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAG9B,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAE9C,OAAO,KAAK,gBAAgB,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,10 +3,10 @@ export { BlockModel } from './builder.js';
|
|
|
3
3
|
export { downgradeCfgOrLambda, extractConfig } from './bconfig/normalization.js';
|
|
4
4
|
export { isConfigLambda } from './bconfig/types.js';
|
|
5
5
|
export { allColumnsReady, createPFrameForGraphs, enrichCompatible, getAvailableWithLinkersAxes, isColumnReady, isLinkerColumn } from './components/PFrameForGraphs.js';
|
|
6
|
+
export { compileAnnotationScript, compileFilter, compileFilters, unreachable } from './components/PlAnnotations/filters_ui.js';
|
|
6
7
|
export { allColumnsComputed, createPlDataTableSheet, createPlDataTableStateV2, createPlDataTableV2, getAllLabelColumns, getMatchingLabelColumns, isColumnHidden, isColumnOptional, isLabelColumn, makeDefaultPTableParams, upgradePlDataTableStateV2 } from './components/PlDataTable.js';
|
|
7
8
|
export { createRowSelectionColumn } from './components/PlMultiSequenceAlignment.js';
|
|
8
9
|
export { createPlSelectionModel } from './components/PlSelectionModel.js';
|
|
9
|
-
export { compileAnnotationScript, compileFilter, compileFilters, filterUiMetadata, getFilterUiMetadata, getFilterUiTypeOptions, unreachable } from './components/PlAnnotations/filters_ui.js';
|
|
10
10
|
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';
|
|
11
11
|
export { PFrameImpl } from './pframe.js';
|
|
12
12
|
export { fromPlOption, fromPlRef } from './ref_util.js';
|
|
@@ -19,6 +19,8 @@ export { PColumnCollection } from './render/util/column_collection.js';
|
|
|
19
19
|
export { FutureRef } from './render/future.js';
|
|
20
20
|
export { CurrentSdkInfo } from './sdk_info.js';
|
|
21
21
|
export { getPlatformaApiVersion, getRawPlatformaInstance } from './raw_globals.js';
|
|
22
|
+
export { convertFilterUiToExpressionImpl, convertFilterUiToExpressions } from './filters/converter.js';
|
|
23
|
+
export { convertFilterSpecsToExpressionSpecs } from './annotations/converter.js';
|
|
22
24
|
export * from '@milaboratories/pl-model-common';
|
|
23
25
|
export * from '@milaboratories/pl-error-like';
|
|
24
26
|
import * as internal from './render/internal.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/package.json.cjs
CHANGED
package/dist/package.json.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var plModelCommon = require('@milaboratories/pl-model-common');
|
|
4
|
-
var label = require('./label.cjs');
|
|
5
4
|
var canonicalize = require('canonicalize');
|
|
6
|
-
var pcolumn_data = require('./pcolumn_data.cjs');
|
|
7
5
|
var axis_filtering = require('./axis_filtering.cjs');
|
|
6
|
+
var label = require('./label.cjs');
|
|
7
|
+
var pcolumn_data = require('./pcolumn_data.cjs');
|
|
8
8
|
|
|
9
9
|
function isPColumnValues(value) {
|
|
10
10
|
if (!Array.isArray(value))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column_collection.cjs","sources":["../../../src/render/util/column_collection.ts"],"sourcesContent":["import type {\n AnchoredIdDeriver,\n AxisId,\n PColumn,\n PColumnSelector,\n PColumnSpec,\n PObjectId,\n SUniversalPColumnId,\n AxisFilterValue,\n AxisFilterByIdx,\n AnchoredPColumnSelector,\n PartitionedDataInfoEntries,\n ResolveAnchorsOptions,\n NativePObjectId,\n PColumnValues,\n} from '@milaboratories/pl-model-common';\nimport {\n selectorsToPredicate,\n resolveAnchors,\n getAxisId,\n isPColumnSpec,\n canonicalizeAxisId,\n isPartitionedDataInfoEntries,\n entriesToDataInfo,\n deriveNativeId,\n Annotation,\n} from '@milaboratories/pl-model-common';\nimport type { TreeNodeAccessor } from '../accessor';\nimport type { LabelDerivationOps, TraceEntry } from './label';\nimport { deriveLabels } from './label';\nimport type { Optional } from 'utility-types';\nimport type { APColumnSelectorWithSplit, PColumnSelectorWithSplit } from './split_selectors';\nimport canonicalize from 'canonicalize';\nimport { getUniquePartitionKeys, convertOrParsePColumnData } from './pcolumn_data';\nimport { filterDataInfoEntries } from './axis_filtering';\nimport type { PColumnDataUniversal } from '../api';\n\nfunction isPColumnValues(value: unknown): value is PColumnValues {\n if (!Array.isArray(value)) return false;\n if (value.length === 0) return true;\n const first = value[0];\n return typeof first === 'object' && first !== null && 'key' in first && 'val' in first;\n}\n\nexport interface ColumnProvider {\n selectColumns(selectors: ((spec: PColumnSpec) => boolean) | PColumnSelector | PColumnSelector[]): PColumn<PColumnDataUniversal | undefined>[];\n}\n\nexport interface AxisLabelProvider {\n findLabels(axis: AxisId): Record<string | number, string> | undefined;\n}\n\n/**\n * A simple implementation of {@link ColumnProvider} backed by a pre-defined array of columns.\n */\nclass ArrayColumnProvider implements ColumnProvider {\n constructor(private readonly columns: PColumn<PColumnDataUniversal | undefined>[]) {}\n\n selectColumns(selectors: ((spec: PColumnSpec) => boolean) | PColumnSelector | PColumnSelector[]):\n PColumn<PColumnDataUniversal | undefined>[] {\n const predicate = typeof selectors === 'function' ? selectors : selectorsToPredicate(selectors);\n // Filter based on spec, ignoring data type for now\n return this.columns.filter((column): column is PColumn<PColumnDataUniversal | undefined> => predicate(column.spec));\n }\n}\n\nexport type PColumnEntryWithLabel = {\n id: PObjectId;\n spec: PColumnSpec;\n /** Lazy calculates the data, returns undefined if data is not ready. */\n data(): PColumnDataUniversal | undefined;\n label: string;\n};\n\n/** Universal column is a column that uses a universal column id, and always have label. */\nexport type PColumnEntryUniversal = PColumnEntryWithLabel & {\n id: SUniversalPColumnId;\n};\n\n// Helper types similar to those in api.ts\ntype AxisFilterInfo = {\n axisIdx: number;\n axisId: AxisId;\n value: AxisFilterValue;\n label: string;\n};\n\n// Intermediate representation for columns requiring splitting\ntype IntermediateSplitEntry = {\n type: 'split';\n originalColumn: PColumn<PColumnDataUniversal | undefined>;\n spec: PColumnSpec;\n /** With splitting axes removed */\n adjustedSpec: PColumnSpec;\n dataEntries: PartitionedDataInfoEntries<TreeNodeAccessor>;\n axisFilters: AxisFilterInfo[];\n};\n\n// Intermediate representation for columns NOT requiring splitting\ntype IntermediateDirectEntry = {\n type: 'direct';\n originalColumn: PColumn<PColumnDataUniversal | undefined>;\n spec: PColumnSpec;\n /** The same as `spec` */\n adjustedSpec: PColumnSpec;\n};\n\n// Union type for intermediate processing\ntype IntermediateColumnEntry = IntermediateSplitEntry | IntermediateDirectEntry;\n\nfunction splitFiltersToTrace(splitFilters?: AxisFilterInfo[]): TraceEntry[] | undefined {\n if (!splitFilters) return undefined;\n return splitFilters.map((filter) => ({\n type: `split:${canonicalizeAxisId(filter.axisId)}`,\n label: filter.label,\n importance: 1_000_000, // High importance for split filters in labels\n }));\n}\n\nfunction splitFiltersToAxisFilter(splitFilters?: AxisFilterInfo[]): AxisFilterByIdx[] | undefined {\n if (!splitFilters) return undefined;\n return splitFilters.map((filter): AxisFilterByIdx => [filter.axisIdx, filter.value]);\n}\n\nfunction fallbackIdDeriver(originalId: PObjectId, axisFilters?: AxisFilterByIdx[]): PObjectId {\n if (!axisFilters || axisFilters.length === 0) return originalId;\n const filtersToCanonicalize = [...axisFilters].sort((a, b) => a[0] - b[0]);\n return canonicalize({ id: originalId, axisFilters: filtersToCanonicalize })! as PObjectId;\n}\n\n/** Checks if a selector object uses any anchor properties */\nfunction hasAnchors(selector: unknown): selector is AnchoredPColumnSelector {\n if (!selector || typeof selector !== 'object') return false;\n const potentialAnchored = selector as Record<string, any>;\n const domainHasAnchors = potentialAnchored['domain'] && typeof potentialAnchored['domain'] === 'object' && Object.values(potentialAnchored['domain']).some((v: unknown) => typeof v === 'object' && v !== null && 'anchor' in v);\n const axesHaveAnchors = potentialAnchored['axes'] && Array.isArray(potentialAnchored['axes']) && potentialAnchored['axes'].some((a: unknown) => typeof a === 'object' && a !== null && 'anchor' in a);\n return !!potentialAnchored['domainAnchor'] || domainHasAnchors || axesHaveAnchors;\n}\n\n/**\n * Derives the indices of axes marked for splitting based on the selector.\n * Throws an error if splitting is requested alongside `partialAxesMatch`.\n */\nfunction getSplitAxisIndices(selector: APColumnSelectorWithSplit | ((spec: PColumnSpec) => boolean)): number[] {\n if (typeof selector !== 'object' || !('axes' in selector) || selector.axes === undefined) {\n return []; // No axes specified or not an object selector, no splitting\n }\n\n const splitIndices = selector.axes\n .map((axis, index) => (typeof axis === 'object' && 'split' in axis && axis.split === true) ? index : -1)\n .filter((index) => index !== -1);\n\n if (splitIndices.length > 0 && selector.partialAxesMatch !== undefined) {\n throw new Error('Axis splitting is not supported when `partialAxesMatch` is defined.');\n }\n\n splitIndices.sort((a, b) => a - b);\n return splitIndices;\n}\n\ntype UniversalPColumnOptsNoDeriver = {\n /** If provided, columns matching the provided selectors will be excluded from the result. */\n exclude?: AnchoredPColumnSelector | AnchoredPColumnSelector[];\n labelOps?: LabelDerivationOps;\n /** If true, incomplete data will cause the column to be skipped instead of returning undefined for the whole request. */\n dontWaitAllData?: boolean;\n /**\n * If true, the derived label will override the 'pl7.app/label' annotation\n * in the resulting PColumnSpec. It also forces `includeNativeLabel` in `labelOps` to true,\n * unless `labelOps.includeNativeLabel` is explicitly set to false.\n * Default value in getUniversalEntries is false, in getColumns it is true.\n */\n overrideLabelAnnotation?: boolean;\n};\n\ntype UniversalPColumnOpts = UniversalPColumnOptsNoDeriver & {\n anchorCtx: AnchoredIdDeriver;\n} & ResolveAnchorsOptions;\n\nexport class PColumnCollection {\n private readonly defaultProviderStore: PColumn<PColumnDataUniversal | undefined>[] = [];\n private readonly providers: ColumnProvider[] = [new ArrayColumnProvider(this.defaultProviderStore)];\n private readonly axisLabelProviders: AxisLabelProvider[] = [];\n\n constructor() {}\n\n public addColumnProvider(provider: ColumnProvider): this {\n this.providers.push(provider);\n return this;\n }\n\n public addAxisLabelProvider(provider: AxisLabelProvider): this {\n this.axisLabelProviders.push(provider);\n return this;\n }\n\n public addColumns(columns: PColumn<PColumnDataUniversal | undefined>[]): this {\n this.defaultProviderStore.push(...columns);\n return this;\n }\n\n public addColumn(column: PColumn<PColumnDataUniversal | undefined>): this {\n this.defaultProviderStore.push(column);\n return this;\n }\n\n /** Fetches labels for a given axis from the registered providers */\n private findLabels(axis: AxisId): Record<string | number, string> | undefined {\n for (const provider of this.axisLabelProviders) {\n const labels = provider.findLabels(axis);\n if (labels) return labels; // First provider wins\n }\n return undefined;\n }\n\n // Overload signatures updated to return PColumnEntry types\n public getUniversalEntries(\n predicateOrSelectors: ((spec: PColumnSpec) => boolean) | APColumnSelectorWithSplit | APColumnSelectorWithSplit[],\n opts: UniversalPColumnOpts): PColumnEntryUniversal[] | undefined;\n public getUniversalEntries(\n predicateOrSelectors: ((spec: PColumnSpec) => boolean) | PColumnSelectorWithSplit | PColumnSelectorWithSplit[],\n opts?: UniversalPColumnOptsNoDeriver): PColumnEntryWithLabel[] | undefined;\n public getUniversalEntries(\n predicateOrSelectors: ((spec: PColumnSpec) => boolean) | APColumnSelectorWithSplit | APColumnSelectorWithSplit[],\n opts?: Optional<UniversalPColumnOpts, 'anchorCtx'>): (PColumnEntryWithLabel | PColumnEntryUniversal)[] | undefined {\n const { anchorCtx, labelOps: rawLabelOps, dontWaitAllData = false, overrideLabelAnnotation = false, exclude } = opts ?? {};\n\n const labelOps: LabelDerivationOps = {\n ...(overrideLabelAnnotation && rawLabelOps?.includeNativeLabel !== false ? { includeNativeLabel: true } : {}),\n ...(rawLabelOps ?? {}),\n };\n\n let excludePredicate: ((spec: PColumnSpec) => boolean) = () => false;\n if (exclude) {\n const excludePredicartes = (Array.isArray(exclude) ? exclude : [exclude])\n .map((selector) => {\n if (hasAnchors(selector)) {\n if (!anchorCtx)\n throw new Error('Anchored selectors in exclude require an AnchoredIdDeriver to be provided in options.');\n return selectorsToPredicate(resolveAnchors(anchorCtx.anchors, selector, opts));\n } else\n return selectorsToPredicate(selector);\n });\n excludePredicate = (spec) => excludePredicartes.some((predicate) => predicate(spec));\n }\n\n const selectorsArray = typeof predicateOrSelectors === 'function'\n ? [predicateOrSelectors]\n : Array.isArray(predicateOrSelectors)\n ? predicateOrSelectors\n : [predicateOrSelectors];\n\n const intermediateResults: IntermediateColumnEntry[] = [];\n const selectedNativeIds = new Set<NativePObjectId>();\n\n for (const rawSelector of selectorsArray) {\n const usesAnchors = hasAnchors(rawSelector);\n\n let currentSelector: PColumnSelectorWithSplit | ((spec: PColumnSpec) => boolean);\n if (usesAnchors) {\n if (!anchorCtx)\n throw new Error('Anchored selectors require an AnchoredIdDeriver to be provided in options.');\n currentSelector = resolveAnchors(anchorCtx.anchors, rawSelector as AnchoredPColumnSelector, opts);\n } else\n currentSelector = rawSelector as PColumnSelectorWithSplit | ((spec: PColumnSpec) => boolean);\n\n const selectedIds = new Set<PObjectId>();\n const selectedColumns: PColumn<PColumnDataUniversal | undefined>[] = [];\n for (const provider of this.providers) {\n const providerColumns = provider.selectColumns(currentSelector);\n for (const col of providerColumns) {\n if (excludePredicate(col.spec)) continue;\n if (selectedIds.has(col.id))\n throw new Error(`Duplicate column id ${col.id} in provider ${provider.constructor.name}`);\n const nativeId = deriveNativeId(col.spec);\n if (selectedNativeIds.has(nativeId))\n continue;\n selectedIds.add(col.id);\n selectedNativeIds.add(nativeId);\n selectedColumns.push(col);\n }\n }\n\n if (selectedColumns.length === 0) continue;\n\n const splitAxisIdxs = getSplitAxisIndices(rawSelector);\n const needsSplitting = splitAxisIdxs.length > 0;\n\n for (const column of selectedColumns) {\n if (!isPColumnSpec(column.spec)) continue;\n\n const originalSpec = column.spec;\n\n if (needsSplitting) {\n if (isPColumnValues(column.data))\n throw new Error(`Splitting is not supported for PColumns with PColumnValues data format. Column id: ${column.id}`);\n const dataEntries = convertOrParsePColumnData(column.data);\n\n if (!dataEntries) {\n if (dontWaitAllData) continue;\n return undefined;\n }\n\n if (!isPartitionedDataInfoEntries(dataEntries))\n throw new Error(`Splitting requires Partitioned DataInfoEntries, but parsing resulted in ${dataEntries.type} for column ${column.id}`);\n\n const uniqueKeys = getUniquePartitionKeys(dataEntries);\n\n const maxSplitIdx = splitAxisIdxs[splitAxisIdxs.length - 1];\n if (maxSplitIdx >= dataEntries.partitionKeyLength)\n throw new Error(`Not enough partition keys (${dataEntries.partitionKeyLength}) for requested split axes (max index ${maxSplitIdx}) in column ${originalSpec.name}`);\n\n const axesLabels: (Record<string | number, string> | undefined)[] = splitAxisIdxs\n .map((idx) => this.findLabels(getAxisId(originalSpec.axesSpec[idx])));\n\n const keyCombinations: (string | number)[][] = [];\n const generateCombinations = (currentCombo: (string | number)[], sAxisIdx: number) => {\n if (sAxisIdx >= splitAxisIdxs.length) {\n keyCombinations.push([...currentCombo]);\n if (keyCombinations.length > 10000)\n throw new Error('Too many key combinations, aborting.');\n return;\n }\n const axisIdx = splitAxisIdxs[sAxisIdx];\n if (axisIdx >= uniqueKeys.length)\n throw new Error(`Axis index ${axisIdx} out of bounds for unique keys array (length ${uniqueKeys.length}) during split key generation for column ${column.id}`);\n const axisValues = uniqueKeys[axisIdx];\n if (!axisValues || axisValues.length === 0) {\n keyCombinations.length = 0; // No combinations possible if one axis has no keys\n return;\n }\n for (const val of axisValues) {\n currentCombo.push(val);\n generateCombinations(currentCombo, sAxisIdx + 1);\n currentCombo.pop();\n }\n };\n\n generateCombinations([], 0);\n\n if (keyCombinations.length === 0)\n continue;\n\n const newAxesSpec = [...originalSpec.axesSpec];\n const splitAxisOriginalIdxs = splitAxisIdxs.map((idx) => idx); // Keep original indices for axisId lookup\n // Remove axes in reverse order to maintain correct indices during removal\n for (let i = splitAxisIdxs.length - 1; i >= 0; i--) {\n newAxesSpec.splice(splitAxisIdxs[i], 1);\n }\n const adjustedSpec = { ...originalSpec, axesSpec: newAxesSpec };\n\n for (const keyCombo of keyCombinations) {\n const splitFilters: AxisFilterInfo[] = keyCombo.map((value, sAxisIdx) => {\n const axisIdx = splitAxisOriginalIdxs[sAxisIdx]; // Use original index for lookup\n const axisId = getAxisId(originalSpec.axesSpec[axisIdx]);\n const axisLabelMap = axesLabels[sAxisIdx];\n const label = axisLabelMap?.[value] ?? String(value);\n return { axisIdx, axisId, value: value as AxisFilterValue, label };\n });\n\n intermediateResults.push({\n type: 'split',\n originalColumn: column,\n spec: originalSpec,\n adjustedSpec,\n dataEntries,\n axisFilters: splitFilters,\n });\n }\n } else {\n intermediateResults.push({\n type: 'direct',\n originalColumn: column,\n spec: originalSpec,\n adjustedSpec: originalSpec,\n });\n }\n }\n }\n\n if (intermediateResults.length === 0) return [];\n\n const labeledResults = deriveLabels(\n intermediateResults,\n (entry) => ({\n spec: entry.spec,\n suffixTrace: entry.type === 'split' ? splitFiltersToTrace(entry.axisFilters) : undefined,\n }),\n labelOps,\n );\n\n const result: (PColumnEntryWithLabel | PColumnEntryUniversal)[] = [];\n\n for (const { value: entry, label } of labeledResults) {\n const { originalColumn, spec: originalSpec } = entry;\n\n const axisFilters = entry.type === 'split' ? entry.axisFilters : undefined;\n const axisFiltersTuple = splitFiltersToAxisFilter(axisFilters);\n\n let finalId: SUniversalPColumnId | PObjectId;\n if (anchorCtx) finalId = anchorCtx.deriveS(originalSpec, axisFiltersTuple);\n else finalId = fallbackIdDeriver(originalColumn.id, axisFiltersTuple);\n\n let finalSpec = { ...entry.adjustedSpec };\n\n if (overrideLabelAnnotation) {\n finalSpec = {\n ...finalSpec,\n annotations: {\n ...(finalSpec.annotations ?? {}),\n [Annotation.Label]: label,\n } satisfies Annotation,\n };\n }\n\n result.push({\n id: finalId,\n spec: finalSpec,\n data: () => entry.type === 'split'\n ? entriesToDataInfo(filterDataInfoEntries(entry.dataEntries, axisFiltersTuple!))\n : entry.originalColumn.data,\n label: label,\n });\n }\n\n return result;\n }\n\n public getColumns(\n predicateOrSelectors: ((spec: PColumnSpec) => boolean) | APColumnSelectorWithSplit | APColumnSelectorWithSplit[],\n opts: UniversalPColumnOpts): PColumn<PColumnDataUniversal>[] | undefined;\n public getColumns(\n predicateOrSelectors: ((spec: PColumnSpec) => boolean) | PColumnSelectorWithSplit | PColumnSelectorWithSplit[],\n opts?: UniversalPColumnOptsNoDeriver): PColumn<PColumnDataUniversal>[] | undefined;\n public getColumns(\n predicateOrSelectors: ((spec: PColumnSpec) => boolean) | APColumnSelectorWithSplit | APColumnSelectorWithSplit[],\n opts?: Optional<UniversalPColumnOpts, 'anchorCtx'>): PColumn<PColumnDataUniversal>[] | undefined {\n const entries = this.getUniversalEntries(predicateOrSelectors, {\n overrideLabelAnnotation: true, // default for getColumns\n ...(opts ?? {}),\n } as UniversalPColumnOpts);\n if (!entries) return undefined;\n\n const columns: PColumn<PColumnDataUniversal>[] = [];\n for (const entry of entries) {\n const data = entry.data();\n if (!data) {\n if (opts?.dontWaitAllData) continue;\n return undefined;\n }\n columns.push({\n id: entry.id,\n spec: entry.spec,\n data,\n });\n }\n\n return columns;\n }\n}\n"],"names":["selectorsToPredicate","canonicalizeAxisId","resolveAnchors","deriveNativeId","isPColumnSpec","convertOrParsePColumnData","isPartitionedDataInfoEntries","getUniquePartitionKeys","getAxisId","deriveLabels","Annotation","entriesToDataInfo","filterDataInfoEntries"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"column_collection.cjs","sources":["../../../src/render/util/column_collection.ts"],"sourcesContent":["import type {\n AnchoredIdDeriver,\n AnchoredPColumnSelector,\n AxisFilterByIdx,\n AxisFilterValue,\n AxisId,\n NativePObjectId,\n PartitionedDataInfoEntries,\n PColumn,\n PColumnSelector,\n PColumnSpec,\n PColumnValues,\n PObjectId,\n ResolveAnchorsOptions,\n SUniversalPColumnId,\n} from '@milaboratories/pl-model-common';\nimport {\n Annotation,\n canonicalizeAxisId,\n deriveNativeId,\n entriesToDataInfo,\n getAxisId,\n isPartitionedDataInfoEntries,\n isPColumnSpec,\n resolveAnchors,\n selectorsToPredicate,\n} from '@milaboratories/pl-model-common';\nimport canonicalize from 'canonicalize';\nimport type { Optional } from 'utility-types';\nimport type { TreeNodeAccessor } from '../accessor';\nimport type { PColumnDataUniversal } from '../api';\nimport { filterDataInfoEntries } from './axis_filtering';\nimport type { LabelDerivationOps, TraceEntry } from './label';\nimport { deriveLabels } from './label';\nimport { convertOrParsePColumnData, getUniquePartitionKeys } from './pcolumn_data';\nimport type { APColumnSelectorWithSplit, PColumnSelectorWithSplit } from './split_selectors';\n\nfunction isPColumnValues(value: unknown): value is PColumnValues {\n if (!Array.isArray(value)) return false;\n if (value.length === 0) return true;\n const first = value[0];\n return typeof first === 'object' && first !== null && 'key' in first && 'val' in first;\n}\n\nexport interface ColumnProvider {\n selectColumns(selectors: ((spec: PColumnSpec) => boolean) | PColumnSelector | PColumnSelector[]): PColumn<PColumnDataUniversal | undefined>[];\n}\n\nexport interface AxisLabelProvider {\n findLabels(axis: AxisId): Record<string | number, string> | undefined;\n}\n\n/**\n * A simple implementation of {@link ColumnProvider} backed by a pre-defined array of columns.\n */\nclass ArrayColumnProvider implements ColumnProvider {\n constructor(private readonly columns: PColumn<PColumnDataUniversal | undefined>[]) {}\n\n selectColumns(selectors: ((spec: PColumnSpec) => boolean) | PColumnSelector | PColumnSelector[]):\n PColumn<PColumnDataUniversal | undefined>[] {\n const predicate = typeof selectors === 'function' ? selectors : selectorsToPredicate(selectors);\n // Filter based on spec, ignoring data type for now\n return this.columns.filter((column): column is PColumn<PColumnDataUniversal | undefined> => predicate(column.spec));\n }\n}\n\nexport type PColumnEntryWithLabel = {\n id: PObjectId;\n spec: PColumnSpec;\n /** Lazy calculates the data, returns undefined if data is not ready. */\n data(): PColumnDataUniversal | undefined;\n label: string;\n};\n\n/** Universal column is a column that uses a universal column id, and always have label. */\nexport type PColumnEntryUniversal = PColumnEntryWithLabel & {\n id: SUniversalPColumnId;\n};\n\n// Helper types similar to those in api.ts\ntype AxisFilterInfo = {\n axisIdx: number;\n axisId: AxisId;\n value: AxisFilterValue;\n label: string;\n};\n\n// Intermediate representation for columns requiring splitting\ntype IntermediateSplitEntry = {\n type: 'split';\n originalColumn: PColumn<PColumnDataUniversal | undefined>;\n spec: PColumnSpec;\n /** With splitting axes removed */\n adjustedSpec: PColumnSpec;\n dataEntries: PartitionedDataInfoEntries<TreeNodeAccessor>;\n axisFilters: AxisFilterInfo[];\n};\n\n// Intermediate representation for columns NOT requiring splitting\ntype IntermediateDirectEntry = {\n type: 'direct';\n originalColumn: PColumn<PColumnDataUniversal | undefined>;\n spec: PColumnSpec;\n /** The same as `spec` */\n adjustedSpec: PColumnSpec;\n};\n\n// Union type for intermediate processing\ntype IntermediateColumnEntry = IntermediateSplitEntry | IntermediateDirectEntry;\n\nfunction splitFiltersToTrace(splitFilters?: AxisFilterInfo[]): TraceEntry[] | undefined {\n if (!splitFilters) return undefined;\n return splitFilters.map((filter) => ({\n type: `split:${canonicalizeAxisId(filter.axisId)}`,\n label: filter.label,\n importance: 1_000_000, // High importance for split filters in labels\n }));\n}\n\nfunction splitFiltersToAxisFilter(splitFilters?: AxisFilterInfo[]): AxisFilterByIdx[] | undefined {\n if (!splitFilters) return undefined;\n return splitFilters.map((filter): AxisFilterByIdx => [filter.axisIdx, filter.value]);\n}\n\nfunction fallbackIdDeriver(originalId: PObjectId, axisFilters?: AxisFilterByIdx[]): PObjectId {\n if (!axisFilters || axisFilters.length === 0) return originalId;\n const filtersToCanonicalize = [...axisFilters].sort((a, b) => a[0] - b[0]);\n return canonicalize({ id: originalId, axisFilters: filtersToCanonicalize })! as PObjectId;\n}\n\n/** Checks if a selector object uses any anchor properties */\nfunction hasAnchors(selector: unknown): selector is AnchoredPColumnSelector {\n if (!selector || typeof selector !== 'object') return false;\n const potentialAnchored = selector as Record<string, any>;\n const domainHasAnchors = potentialAnchored['domain'] && typeof potentialAnchored['domain'] === 'object' && Object.values(potentialAnchored['domain']).some((v: unknown) => typeof v === 'object' && v !== null && 'anchor' in v);\n const axesHaveAnchors = potentialAnchored['axes'] && Array.isArray(potentialAnchored['axes']) && potentialAnchored['axes'].some((a: unknown) => typeof a === 'object' && a !== null && 'anchor' in a);\n return !!potentialAnchored['domainAnchor'] || domainHasAnchors || axesHaveAnchors;\n}\n\n/**\n * Derives the indices of axes marked for splitting based on the selector.\n * Throws an error if splitting is requested alongside `partialAxesMatch`.\n */\nfunction getSplitAxisIndices(selector: APColumnSelectorWithSplit | ((spec: PColumnSpec) => boolean)): number[] {\n if (typeof selector !== 'object' || !('axes' in selector) || selector.axes === undefined) {\n return []; // No axes specified or not an object selector, no splitting\n }\n\n const splitIndices = selector.axes\n .map((axis, index) => (typeof axis === 'object' && 'split' in axis && axis.split === true) ? index : -1)\n .filter((index) => index !== -1);\n\n if (splitIndices.length > 0 && selector.partialAxesMatch !== undefined) {\n throw new Error('Axis splitting is not supported when `partialAxesMatch` is defined.');\n }\n\n splitIndices.sort((a, b) => a - b);\n return splitIndices;\n}\n\ntype UniversalPColumnOptsNoDeriver = {\n /** If provided, columns matching the provided selectors will be excluded from the result. */\n exclude?: AnchoredPColumnSelector | AnchoredPColumnSelector[];\n labelOps?: LabelDerivationOps;\n /** If true, incomplete data will cause the column to be skipped instead of returning undefined for the whole request. */\n dontWaitAllData?: boolean;\n /**\n * If true, the derived label will override the 'pl7.app/label' annotation\n * in the resulting PColumnSpec. It also forces `includeNativeLabel` in `labelOps` to true,\n * unless `labelOps.includeNativeLabel` is explicitly set to false.\n * Default value in getUniversalEntries is false, in getColumns it is true.\n */\n overrideLabelAnnotation?: boolean;\n};\n\ntype UniversalPColumnOpts = UniversalPColumnOptsNoDeriver & {\n anchorCtx: AnchoredIdDeriver;\n} & ResolveAnchorsOptions;\n\nexport class PColumnCollection {\n private readonly defaultProviderStore: PColumn<PColumnDataUniversal | undefined>[] = [];\n private readonly providers: ColumnProvider[] = [new ArrayColumnProvider(this.defaultProviderStore)];\n private readonly axisLabelProviders: AxisLabelProvider[] = [];\n\n constructor() {}\n\n public addColumnProvider(provider: ColumnProvider): this {\n this.providers.push(provider);\n return this;\n }\n\n public addAxisLabelProvider(provider: AxisLabelProvider): this {\n this.axisLabelProviders.push(provider);\n return this;\n }\n\n public addColumns(columns: PColumn<PColumnDataUniversal | undefined>[]): this {\n this.defaultProviderStore.push(...columns);\n return this;\n }\n\n public addColumn(column: PColumn<PColumnDataUniversal | undefined>): this {\n this.defaultProviderStore.push(column);\n return this;\n }\n\n /** Fetches labels for a given axis from the registered providers */\n private findLabels(axis: AxisId): Record<string | number, string> | undefined {\n for (const provider of this.axisLabelProviders) {\n const labels = provider.findLabels(axis);\n if (labels) return labels; // First provider wins\n }\n return undefined;\n }\n\n // Overload signatures updated to return PColumnEntry types\n public getUniversalEntries(\n predicateOrSelectors: ((spec: PColumnSpec) => boolean) | APColumnSelectorWithSplit | APColumnSelectorWithSplit[],\n opts: UniversalPColumnOpts): PColumnEntryUniversal[] | undefined;\n public getUniversalEntries(\n predicateOrSelectors: ((spec: PColumnSpec) => boolean) | PColumnSelectorWithSplit | PColumnSelectorWithSplit[],\n opts?: UniversalPColumnOptsNoDeriver): PColumnEntryWithLabel[] | undefined;\n public getUniversalEntries(\n predicateOrSelectors: ((spec: PColumnSpec) => boolean) | APColumnSelectorWithSplit | APColumnSelectorWithSplit[],\n opts?: Optional<UniversalPColumnOpts, 'anchorCtx'>): (PColumnEntryWithLabel | PColumnEntryUniversal)[] | undefined {\n const { anchorCtx, labelOps: rawLabelOps, dontWaitAllData = false, overrideLabelAnnotation = false, exclude } = opts ?? {};\n\n const labelOps: LabelDerivationOps = {\n ...(overrideLabelAnnotation && rawLabelOps?.includeNativeLabel !== false ? { includeNativeLabel: true } : {}),\n ...(rawLabelOps ?? {}),\n };\n\n let excludePredicate: ((spec: PColumnSpec) => boolean) = () => false;\n if (exclude) {\n const excludePredicartes = (Array.isArray(exclude) ? exclude : [exclude])\n .map((selector) => {\n if (hasAnchors(selector)) {\n if (!anchorCtx)\n throw new Error('Anchored selectors in exclude require an AnchoredIdDeriver to be provided in options.');\n return selectorsToPredicate(resolveAnchors(anchorCtx.anchors, selector, opts));\n } else\n return selectorsToPredicate(selector);\n });\n excludePredicate = (spec) => excludePredicartes.some((predicate) => predicate(spec));\n }\n\n const selectorsArray = typeof predicateOrSelectors === 'function'\n ? [predicateOrSelectors]\n : Array.isArray(predicateOrSelectors)\n ? predicateOrSelectors\n : [predicateOrSelectors];\n\n const intermediateResults: IntermediateColumnEntry[] = [];\n const selectedNativeIds = new Set<NativePObjectId>();\n\n for (const rawSelector of selectorsArray) {\n const usesAnchors = hasAnchors(rawSelector);\n\n let currentSelector: PColumnSelectorWithSplit | ((spec: PColumnSpec) => boolean);\n if (usesAnchors) {\n if (!anchorCtx)\n throw new Error('Anchored selectors require an AnchoredIdDeriver to be provided in options.');\n currentSelector = resolveAnchors(anchorCtx.anchors, rawSelector as AnchoredPColumnSelector, opts);\n } else\n currentSelector = rawSelector as PColumnSelectorWithSplit | ((spec: PColumnSpec) => boolean);\n\n const selectedIds = new Set<PObjectId>();\n const selectedColumns: PColumn<PColumnDataUniversal | undefined>[] = [];\n for (const provider of this.providers) {\n const providerColumns = provider.selectColumns(currentSelector);\n for (const col of providerColumns) {\n if (excludePredicate(col.spec)) continue;\n if (selectedIds.has(col.id))\n throw new Error(`Duplicate column id ${col.id} in provider ${provider.constructor.name}`);\n const nativeId = deriveNativeId(col.spec);\n if (selectedNativeIds.has(nativeId))\n continue;\n selectedIds.add(col.id);\n selectedNativeIds.add(nativeId);\n selectedColumns.push(col);\n }\n }\n\n if (selectedColumns.length === 0) continue;\n\n const splitAxisIdxs = getSplitAxisIndices(rawSelector);\n const needsSplitting = splitAxisIdxs.length > 0;\n\n for (const column of selectedColumns) {\n if (!isPColumnSpec(column.spec)) continue;\n\n const originalSpec = column.spec;\n\n if (needsSplitting) {\n if (isPColumnValues(column.data))\n throw new Error(`Splitting is not supported for PColumns with PColumnValues data format. Column id: ${column.id}`);\n const dataEntries = convertOrParsePColumnData(column.data);\n\n if (!dataEntries) {\n if (dontWaitAllData) continue;\n return undefined;\n }\n\n if (!isPartitionedDataInfoEntries(dataEntries))\n throw new Error(`Splitting requires Partitioned DataInfoEntries, but parsing resulted in ${dataEntries.type} for column ${column.id}`);\n\n const uniqueKeys = getUniquePartitionKeys(dataEntries);\n\n const maxSplitIdx = splitAxisIdxs[splitAxisIdxs.length - 1];\n if (maxSplitIdx >= dataEntries.partitionKeyLength)\n throw new Error(`Not enough partition keys (${dataEntries.partitionKeyLength}) for requested split axes (max index ${maxSplitIdx}) in column ${originalSpec.name}`);\n\n const axesLabels: (Record<string | number, string> | undefined)[] = splitAxisIdxs\n .map((idx) => this.findLabels(getAxisId(originalSpec.axesSpec[idx])));\n\n const keyCombinations: (string | number)[][] = [];\n const generateCombinations = (currentCombo: (string | number)[], sAxisIdx: number) => {\n if (sAxisIdx >= splitAxisIdxs.length) {\n keyCombinations.push([...currentCombo]);\n if (keyCombinations.length > 10000)\n throw new Error('Too many key combinations, aborting.');\n return;\n }\n const axisIdx = splitAxisIdxs[sAxisIdx];\n if (axisIdx >= uniqueKeys.length)\n throw new Error(`Axis index ${axisIdx} out of bounds for unique keys array (length ${uniqueKeys.length}) during split key generation for column ${column.id}`);\n const axisValues = uniqueKeys[axisIdx];\n if (!axisValues || axisValues.length === 0) {\n keyCombinations.length = 0; // No combinations possible if one axis has no keys\n return;\n }\n for (const val of axisValues) {\n currentCombo.push(val);\n generateCombinations(currentCombo, sAxisIdx + 1);\n currentCombo.pop();\n }\n };\n\n generateCombinations([], 0);\n\n if (keyCombinations.length === 0)\n continue;\n\n const newAxesSpec = [...originalSpec.axesSpec];\n const splitAxisOriginalIdxs = splitAxisIdxs.map((idx) => idx); // Keep original indices for axisId lookup\n // Remove axes in reverse order to maintain correct indices during removal\n for (let i = splitAxisIdxs.length - 1; i >= 0; i--) {\n newAxesSpec.splice(splitAxisIdxs[i], 1);\n }\n const adjustedSpec = { ...originalSpec, axesSpec: newAxesSpec };\n\n for (const keyCombo of keyCombinations) {\n const splitFilters: AxisFilterInfo[] = keyCombo.map((value, sAxisIdx) => {\n const axisIdx = splitAxisOriginalIdxs[sAxisIdx]; // Use original index for lookup\n const axisId = getAxisId(originalSpec.axesSpec[axisIdx]);\n const axisLabelMap = axesLabels[sAxisIdx];\n const label = axisLabelMap?.[value] ?? String(value);\n return { axisIdx, axisId, value: value as AxisFilterValue, label };\n });\n\n intermediateResults.push({\n type: 'split',\n originalColumn: column,\n spec: originalSpec,\n adjustedSpec,\n dataEntries,\n axisFilters: splitFilters,\n });\n }\n } else {\n intermediateResults.push({\n type: 'direct',\n originalColumn: column,\n spec: originalSpec,\n adjustedSpec: originalSpec,\n });\n }\n }\n }\n\n if (intermediateResults.length === 0) return [];\n\n const labeledResults = deriveLabels(\n intermediateResults,\n (entry) => ({\n spec: entry.spec,\n suffixTrace: entry.type === 'split' ? splitFiltersToTrace(entry.axisFilters) : undefined,\n }),\n labelOps,\n );\n\n const result: (PColumnEntryWithLabel | PColumnEntryUniversal)[] = [];\n\n for (const { value: entry, label } of labeledResults) {\n const { originalColumn, spec: originalSpec } = entry;\n\n const axisFilters = entry.type === 'split' ? entry.axisFilters : undefined;\n const axisFiltersTuple = splitFiltersToAxisFilter(axisFilters);\n\n let finalId: SUniversalPColumnId | PObjectId;\n if (anchorCtx) finalId = anchorCtx.deriveS(originalSpec, axisFiltersTuple);\n else finalId = fallbackIdDeriver(originalColumn.id, axisFiltersTuple);\n\n let finalSpec = { ...entry.adjustedSpec };\n\n if (overrideLabelAnnotation) {\n finalSpec = {\n ...finalSpec,\n annotations: {\n ...(finalSpec.annotations ?? {}),\n [Annotation.Label]: label,\n } satisfies Annotation,\n };\n }\n\n result.push({\n id: finalId,\n spec: finalSpec,\n data: () => entry.type === 'split'\n ? entriesToDataInfo(filterDataInfoEntries(entry.dataEntries, axisFiltersTuple!))\n : entry.originalColumn.data,\n label: label,\n });\n }\n\n return result;\n }\n\n public getColumns(\n predicateOrSelectors: ((spec: PColumnSpec) => boolean) | APColumnSelectorWithSplit | APColumnSelectorWithSplit[],\n opts: UniversalPColumnOpts): PColumn<PColumnDataUniversal>[] | undefined;\n public getColumns(\n predicateOrSelectors: ((spec: PColumnSpec) => boolean) | PColumnSelectorWithSplit | PColumnSelectorWithSplit[],\n opts?: UniversalPColumnOptsNoDeriver): PColumn<PColumnDataUniversal>[] | undefined;\n public getColumns(\n predicateOrSelectors: ((spec: PColumnSpec) => boolean) | APColumnSelectorWithSplit | APColumnSelectorWithSplit[],\n opts?: Optional<UniversalPColumnOpts, 'anchorCtx'>): PColumn<PColumnDataUniversal>[] | undefined {\n const entries = this.getUniversalEntries(predicateOrSelectors, {\n overrideLabelAnnotation: true, // default for getColumns\n ...(opts ?? {}),\n } as UniversalPColumnOpts);\n if (!entries) return undefined;\n\n const columns: PColumn<PColumnDataUniversal>[] = [];\n for (const entry of entries) {\n const data = entry.data();\n if (!data) {\n if (opts?.dontWaitAllData) continue;\n return undefined;\n }\n columns.push({\n id: entry.id,\n spec: entry.spec,\n data,\n });\n }\n\n return columns;\n }\n}\n"],"names":["selectorsToPredicate","canonicalizeAxisId","resolveAnchors","deriveNativeId","isPColumnSpec","convertOrParsePColumnData","isPartitionedDataInfoEntries","getUniquePartitionKeys","getAxisId","deriveLabels","Annotation","entriesToDataInfo","filterDataInfoEntries"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { AnchoredIdDeriver, AxisId, PColumn, PColumnSelector, PColumnSpec, PObjectId,
|
|
1
|
+
import type { AnchoredIdDeriver, AnchoredPColumnSelector, AxisId, PColumn, PColumnSelector, PColumnSpec, PObjectId, ResolveAnchorsOptions, SUniversalPColumnId } from '@milaboratories/pl-model-common';
|
|
2
|
+
import type { PColumnDataUniversal } from '../api';
|
|
2
3
|
import type { LabelDerivationOps } from './label';
|
|
3
4
|
import type { APColumnSelectorWithSplit, PColumnSelectorWithSplit } from './split_selectors';
|
|
4
|
-
import type { PColumnDataUniversal } from '../api';
|
|
5
5
|
export interface ColumnProvider {
|
|
6
6
|
selectColumns(selectors: ((spec: PColumnSpec) => boolean) | PColumnSelector | PColumnSelector[]): PColumn<PColumnDataUniversal | undefined>[];
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column_collection.d.ts","sourceRoot":"","sources":["../../../src/render/util/column_collection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,MAAM,
|
|
1
|
+
{"version":3,"file":"column_collection.d.ts","sourceRoot":"","sources":["../../../src/render/util/column_collection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { selectorsToPredicate, resolveAnchors, deriveNativeId, isPColumnSpec, isPartitionedDataInfoEntries, getAxisId, Annotation, entriesToDataInfo, canonicalizeAxisId } from '@milaboratories/pl-model-common';
|
|
2
|
-
import { deriveLabels } from './label.js';
|
|
3
2
|
import canonicalize from 'canonicalize';
|
|
4
|
-
import { convertOrParsePColumnData, getUniquePartitionKeys } from './pcolumn_data.js';
|
|
5
3
|
import { filterDataInfoEntries } from './axis_filtering.js';
|
|
4
|
+
import { deriveLabels } from './label.js';
|
|
5
|
+
import { convertOrParsePColumnData, getUniquePartitionKeys } from './pcolumn_data.js';
|
|
6
6
|
|
|
7
7
|
function isPColumnValues(value) {
|
|
8
8
|
if (!Array.isArray(value))
|