@platforma-sdk/model 1.53.10 → 1.53.13
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 +11 -11
- package/dist/annotations/converter.cjs.map +1 -1
- package/dist/annotations/converter.d.ts +1 -1
- package/dist/annotations/converter.d.ts.map +1 -1
- package/dist/annotations/converter.js +11 -11
- package/dist/annotations/converter.js.map +1 -1
- package/dist/annotations/index.d.ts +2 -2
- package/dist/annotations/types.d.ts +4 -4
- package/dist/bconfig/index.d.ts +5 -5
- package/dist/bconfig/lambdas.d.ts +7 -7
- package/dist/bconfig/lambdas.d.ts.map +1 -1
- package/dist/bconfig/normalization.cjs.map +1 -1
- package/dist/bconfig/normalization.d.ts +3 -3
- package/dist/bconfig/normalization.js.map +1 -1
- package/dist/bconfig/types.cjs.map +1 -1
- package/dist/bconfig/types.d.ts +2 -2
- package/dist/bconfig/types.d.ts.map +1 -1
- package/dist/bconfig/types.js.map +1 -1
- package/dist/bconfig/util.d.ts +4 -4
- package/dist/bconfig/v3.d.ts +3 -3
- package/dist/block_api_v1.d.ts +2 -2
- package/dist/block_api_v1.d.ts.map +1 -1
- package/dist/block_api_v2.d.ts +2 -2
- package/dist/block_api_v2.d.ts.map +1 -1
- package/dist/block_api_v3.d.ts +3 -3
- package/dist/block_migrations.cjs +10 -10
- package/dist/block_migrations.cjs.map +1 -1
- package/dist/block_migrations.d.ts.map +1 -1
- package/dist/block_migrations.js +10 -10
- package/dist/block_migrations.js.map +1 -1
- package/dist/block_model.cjs +11 -11
- package/dist/block_model.cjs.map +1 -1
- package/dist/block_model.d.ts +8 -8
- package/dist/block_model.d.ts.map +1 -1
- package/dist/block_model.js +11 -11
- package/dist/block_model.js.map +1 -1
- package/dist/block_state_patch.d.ts +2 -2
- package/dist/block_state_util.cjs +1 -1
- package/dist/block_state_util.cjs.map +1 -1
- package/dist/block_state_util.d.ts +3 -3
- package/dist/block_state_util.js +1 -1
- package/dist/block_state_util.js.map +1 -1
- package/dist/block_storage.cjs +10 -10
- package/dist/block_storage.cjs.map +1 -1
- package/dist/block_storage.d.ts +2 -2
- package/dist/block_storage.d.ts.map +1 -1
- package/dist/block_storage.js +10 -10
- package/dist/block_storage.js.map +1 -1
- package/dist/block_storage_vm.cjs +22 -22
- package/dist/block_storage_vm.cjs.map +1 -1
- package/dist/block_storage_vm.d.ts +1 -1
- package/dist/block_storage_vm.d.ts.map +1 -1
- package/dist/block_storage_vm.js +22 -22
- package/dist/block_storage_vm.js.map +1 -1
- package/dist/builder.cjs +32 -23
- package/dist/builder.cjs.map +1 -1
- package/dist/builder.d.ts +7 -7
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +32 -23
- package/dist/builder.js.map +1 -1
- package/dist/components/PFrameForGraphs.cjs +7 -6
- package/dist/components/PFrameForGraphs.cjs.map +1 -1
- package/dist/components/PFrameForGraphs.d.ts +4 -4
- package/dist/components/PFrameForGraphs.d.ts.map +1 -1
- package/dist/components/PFrameForGraphs.js +7 -6
- package/dist/components/PFrameForGraphs.js.map +1 -1
- package/dist/components/PlAnnotations/filter.d.ts +14 -14
- package/dist/components/PlAnnotations/filter.d.ts.map +1 -1
- package/dist/components/PlAnnotations/filters_ui.cjs +46 -46
- package/dist/components/PlAnnotations/filters_ui.cjs.map +1 -1
- package/dist/components/PlAnnotations/filters_ui.d.ts +10 -34
- package/dist/components/PlAnnotations/filters_ui.d.ts.map +1 -1
- package/dist/components/PlAnnotations/filters_ui.js +46 -46
- package/dist/components/PlAnnotations/filters_ui.js.map +1 -1
- package/dist/components/PlAnnotations/index.d.ts +2 -2
- package/dist/components/PlAnnotations/types.d.ts +2 -2
- package/dist/components/PlDataTable.cjs +19 -20
- package/dist/components/PlDataTable.cjs.map +1 -1
- package/dist/components/PlDataTable.d.ts +27 -27
- package/dist/components/PlDataTable.d.ts.map +1 -1
- package/dist/components/PlDataTable.js +19 -20
- package/dist/components/PlDataTable.js.map +1 -1
- package/dist/components/PlMultiSequenceAlignment.cjs +2 -2
- package/dist/components/PlMultiSequenceAlignment.cjs.map +1 -1
- package/dist/components/PlMultiSequenceAlignment.d.ts +6 -6
- package/dist/components/PlMultiSequenceAlignment.d.ts.map +1 -1
- package/dist/components/PlMultiSequenceAlignment.js +2 -2
- package/dist/components/PlMultiSequenceAlignment.js.map +1 -1
- package/dist/components/PlSelectionModel.cjs.map +1 -1
- package/dist/components/PlSelectionModel.d.ts +1 -1
- package/dist/components/PlSelectionModel.js.map +1 -1
- package/dist/components/index.d.ts +5 -5
- package/dist/config/actions.cjs +39 -39
- package/dist/config/actions.cjs.map +1 -1
- package/dist/config/actions.d.ts +9 -9
- package/dist/config/actions.d.ts.map +1 -1
- package/dist/config/actions.js +39 -39
- package/dist/config/actions.js.map +1 -1
- package/dist/config/actions_kinds.d.ts +30 -30
- package/dist/config/actions_kinds.d.ts.map +1 -1
- package/dist/config/index.d.ts +6 -6
- package/dist/config/model.d.ts +28 -28
- package/dist/config/model_meta.d.ts +1 -1
- package/dist/config/type_engine.d.ts +3 -3
- package/dist/config/type_util.d.ts +2 -2
- package/dist/env_value.cjs +1 -1
- package/dist/env_value.cjs.map +1 -1
- package/dist/env_value.js +1 -1
- package/dist/env_value.js.map +1 -1
- package/dist/filters/converter.cjs +36 -32
- package/dist/filters/converter.cjs.map +1 -1
- package/dist/filters/converter.d.ts +2 -2
- package/dist/filters/converter.d.ts.map +1 -1
- package/dist/filters/converter.js +36 -32
- package/dist/filters/converter.js.map +1 -1
- package/dist/filters/index.d.ts +2 -2
- package/dist/filters/types.d.ts +33 -33
- package/dist/filters/types.d.ts.map +1 -1
- package/dist/index.d.ts +24 -24
- package/dist/internal.cjs +7 -7
- package/dist/internal.cjs.map +1 -1
- package/dist/internal.d.ts +4 -4
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +7 -7
- package/dist/internal.js.map +1 -1
- package/dist/package.json.cjs +1 -1
- package/dist/package.json.js +1 -1
- package/dist/pframe.cjs +1 -1
- package/dist/pframe.cjs.map +1 -1
- package/dist/pframe.d.ts +1 -1
- package/dist/pframe.js +1 -1
- package/dist/pframe.js.map +1 -1
- package/dist/pframe_utils/columns.cjs +23 -15
- package/dist/pframe_utils/columns.cjs.map +1 -1
- package/dist/pframe_utils/columns.d.ts +3 -3
- package/dist/pframe_utils/columns.d.ts.map +1 -1
- package/dist/pframe_utils/columns.js +23 -15
- package/dist/pframe_utils/columns.js.map +1 -1
- package/dist/pframe_utils/index.cjs +25 -25
- package/dist/pframe_utils/index.cjs.map +1 -1
- package/dist/pframe_utils/index.d.ts +3 -3
- package/dist/pframe_utils/index.d.ts.map +1 -1
- package/dist/pframe_utils/index.js +25 -25
- package/dist/pframe_utils/index.js.map +1 -1
- package/dist/platforma.d.ts +7 -7
- package/dist/platforma.d.ts.map +1 -1
- package/dist/raw_globals.cjs +4 -1
- package/dist/raw_globals.cjs.map +1 -1
- package/dist/raw_globals.d.ts +2 -2
- package/dist/raw_globals.d.ts.map +1 -1
- package/dist/raw_globals.js +4 -1
- package/dist/raw_globals.js.map +1 -1
- package/dist/ref_util.cjs +4 -4
- package/dist/ref_util.cjs.map +1 -1
- package/dist/ref_util.d.ts +1 -1
- package/dist/ref_util.js +4 -4
- package/dist/ref_util.js.map +1 -1
- package/dist/render/accessor.cjs +24 -24
- package/dist/render/accessor.cjs.map +1 -1
- package/dist/render/accessor.d.ts +10 -10
- package/dist/render/accessor.d.ts.map +1 -1
- package/dist/render/accessor.js +24 -24
- package/dist/render/accessor.js.map +1 -1
- package/dist/render/api.cjs +23 -23
- package/dist/render/api.cjs.map +1 -1
- package/dist/render/api.d.ts +11 -11
- package/dist/render/api.d.ts.map +1 -1
- package/dist/render/api.js +23 -23
- package/dist/render/api.js.map +1 -1
- package/dist/render/future.cjs.map +1 -1
- package/dist/render/future.d.ts +1 -1
- package/dist/render/future.js.map +1 -1
- package/dist/render/index.d.ts +6 -6
- package/dist/render/internal.cjs +4 -4
- package/dist/render/internal.cjs.map +1 -1
- package/dist/render/internal.d.ts +7 -7
- package/dist/render/internal.d.ts.map +1 -1
- package/dist/render/internal.js +4 -4
- package/dist/render/internal.js.map +1 -1
- package/dist/render/traversal_ops.d.ts +1 -1
- package/dist/render/util/axis_filtering.cjs +48 -44
- package/dist/render/util/axis_filtering.cjs.map +1 -1
- package/dist/render/util/axis_filtering.d.ts +2 -2
- package/dist/render/util/axis_filtering.js +48 -44
- package/dist/render/util/axis_filtering.js.map +1 -1
- package/dist/render/util/column_collection.cjs +42 -35
- package/dist/render/util/column_collection.cjs.map +1 -1
- package/dist/render/util/column_collection.d.ts +4 -4
- package/dist/render/util/column_collection.d.ts.map +1 -1
- package/dist/render/util/column_collection.js +42 -35
- package/dist/render/util/column_collection.js.map +1 -1
- package/dist/render/util/index.d.ts +4 -4
- package/dist/render/util/label.cjs +15 -21
- package/dist/render/util/label.cjs.map +1 -1
- package/dist/render/util/label.d.ts +2 -2
- package/dist/render/util/label.d.ts.map +1 -1
- package/dist/render/util/label.js +15 -21
- package/dist/render/util/label.js.map +1 -1
- package/dist/render/util/pcolumn_data.cjs +56 -54
- package/dist/render/util/pcolumn_data.cjs.map +1 -1
- package/dist/render/util/pcolumn_data.d.ts +5 -5
- package/dist/render/util/pcolumn_data.d.ts.map +1 -1
- package/dist/render/util/pcolumn_data.js +56 -54
- package/dist/render/util/pcolumn_data.js.map +1 -1
- package/dist/render/util/pframe_upgraders.cjs +6 -6
- package/dist/render/util/pframe_upgraders.cjs.map +1 -1
- package/dist/render/util/pframe_upgraders.d.ts +1 -1
- package/dist/render/util/pframe_upgraders.d.ts.map +1 -1
- package/dist/render/util/pframe_upgraders.js +6 -6
- package/dist/render/util/pframe_upgraders.js.map +1 -1
- package/dist/render/util/split_selectors.d.ts +1 -1
- package/dist/render/util/split_selectors.d.ts.map +1 -1
- package/dist/sdk_info.cjs.map +1 -1
- package/dist/sdk_info.js.map +1 -1
- package/dist/version.cjs.map +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +23 -21
- package/src/annotations/converter.test.ts +98 -101
- package/src/annotations/converter.ts +21 -17
- package/src/annotations/index.ts +2 -2
- package/src/annotations/types.ts +4 -4
- package/src/bconfig/index.ts +5 -5
- package/src/bconfig/lambdas.ts +10 -12
- package/src/bconfig/normalization.ts +5 -5
- package/src/bconfig/types.ts +3 -5
- package/src/bconfig/util.ts +3 -3
- package/src/bconfig/v3.ts +3 -3
- package/src/block_api_v1.ts +7 -3
- package/src/block_api_v2.ts +7 -3
- package/src/block_api_v3.ts +3 -3
- package/src/block_migrations.test.ts +66 -67
- package/src/block_migrations.ts +16 -16
- package/src/block_model.ts +76 -140
- package/src/block_state_patch.ts +2 -2
- package/src/block_state_util.ts +4 -4
- package/src/block_storage.test.ts +106 -99
- package/src/block_storage.ts +22 -25
- package/src/block_storage_vm.ts +41 -35
- package/src/builder.ts +107 -95
- package/src/components/PFrameForGraphs.test.ts +261 -255
- package/src/components/PFrameForGraphs.ts +35 -22
- package/src/components/PlAnnotations/filter.ts +21 -15
- package/src/components/PlAnnotations/filters_ui.test.ts +230 -73
- package/src/components/PlAnnotations/filters_ui.ts +138 -105
- package/src/components/PlAnnotations/index.ts +2 -2
- package/src/components/PlAnnotations/types.ts +2 -2
- package/src/components/PlDataTable.ts +177 -164
- package/src/components/PlMultiSequenceAlignment.ts +11 -18
- package/src/components/PlSelectionModel.ts +1 -1
- package/src/components/index.ts +5 -5
- package/src/config/actions.ts +64 -59
- package/src/config/actions_kinds.ts +38 -34
- package/src/config/index.ts +6 -6
- package/src/config/model.ts +28 -28
- package/src/config/model_meta.ts +1 -1
- package/src/config/type_engine.ts +3 -3
- package/src/config/type_util.ts +2 -2
- package/src/env_value.ts +2 -2
- package/src/filters/converter.test.ts +185 -144
- package/src/filters/converter.ts +47 -35
- package/src/filters/index.ts +2 -2
- package/src/filters/types.ts +44 -39
- package/src/global.d.ts +1 -1
- package/src/index.ts +24 -24
- package/src/internal.ts +27 -17
- package/src/pframe.ts +3 -3
- package/src/pframe_utils/columns.ts +81 -31
- package/src/pframe_utils/index.ts +65 -43
- package/src/platforma.ts +44 -21
- package/src/raw_globals.ts +13 -7
- package/src/ref_util.ts +6 -6
- package/src/render/accessor.ts +43 -44
- package/src/render/api.ts +102 -78
- package/src/render/future.ts +2 -2
- package/src/render/index.ts +6 -6
- package/src/render/internal.ts +11 -12
- package/src/render/traversal_ops.ts +1 -1
- package/src/render/util/axis_filtering.ts +67 -52
- package/src/render/util/column_collection.ts +171 -91
- package/src/render/util/index.ts +4 -4
- package/src/render/util/label.test.ts +139 -139
- package/src/render/util/label.ts +42 -33
- package/src/render/util/pcolumn_data.ts +111 -75
- package/src/render/util/pframe_upgraders.ts +24 -13
- package/src/render/util/split_selectors.ts +6 -1
- package/src/sdk_info.ts +1 -1
- package/src/typing.test.ts +56 -56
- package/src/version.ts +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { AxisId, AxisSpec, CanonicalizedJson, ListOptionBase, PColumn, PColumnIdAndSpec, PObjectId, PTableColumnId, PTableColumnSpec, PTableHandle, PTableRecordFilter, PTableSorting } from
|
|
2
|
-
import { Annotation } from
|
|
3
|
-
import type { AxisLabelProvider, ColumnProvider, PColumnDataUniversal, RenderCtxBase } from
|
|
1
|
+
import type { AxisId, AxisSpec, CanonicalizedJson, ListOptionBase, PColumn, PColumnIdAndSpec, PObjectId, PTableColumnId, PTableColumnSpec, PTableHandle, PTableRecordFilter, PTableSorting } from "@milaboratories/pl-model-common";
|
|
2
|
+
import { Annotation } from "@milaboratories/pl-model-common";
|
|
3
|
+
import type { AxisLabelProvider, ColumnProvider, PColumnDataUniversal, RenderCtxBase } from "../render";
|
|
4
4
|
export type PlTableColumnId = {
|
|
5
5
|
/** Original column spec */
|
|
6
6
|
source: PTableColumnSpec;
|
|
@@ -21,7 +21,7 @@ export type PlDataTableGridStateCore = {
|
|
|
21
21
|
/** Column Id to apply the sort to. */
|
|
22
22
|
colId: PlTableColumnIdJson;
|
|
23
23
|
/** Sort direction */
|
|
24
|
-
sort:
|
|
24
|
+
sort: "asc" | "desc";
|
|
25
25
|
}[];
|
|
26
26
|
};
|
|
27
27
|
/** Includes column visibility */
|
|
@@ -55,7 +55,7 @@ export type PlDataTableStateV2 = {
|
|
|
55
55
|
sort?: {
|
|
56
56
|
sortModel: {
|
|
57
57
|
colId: CanonicalizedJson<PTableColumnSpec>;
|
|
58
|
-
sort:
|
|
58
|
+
sort: "asc" | "desc";
|
|
59
59
|
}[];
|
|
60
60
|
};
|
|
61
61
|
columnVisibility?: {
|
|
@@ -79,7 +79,7 @@ export type PlDataTableStateV2 = {
|
|
|
79
79
|
sort?: {
|
|
80
80
|
sortModel: {
|
|
81
81
|
colId: CanonicalizedJson<PTableColumnSpec>;
|
|
82
|
-
sort:
|
|
82
|
+
sort: "asc" | "desc";
|
|
83
83
|
}[];
|
|
84
84
|
};
|
|
85
85
|
columnVisibility?: {
|
|
@@ -104,7 +104,7 @@ export type PlDataTableStateV2 = {
|
|
|
104
104
|
sort?: {
|
|
105
105
|
sortModel: {
|
|
106
106
|
colId: CanonicalizedJson<PTableColumnSpec>;
|
|
107
|
-
sort:
|
|
107
|
+
sort: "asc" | "desc";
|
|
108
108
|
}[];
|
|
109
109
|
};
|
|
110
110
|
columnVisibility?: {
|
|
@@ -163,61 +163,61 @@ export type PlDataTableFilterState = {
|
|
|
163
163
|
/** PlTableFilters filter entry */
|
|
164
164
|
export type PlTableFilterIsNotNA = {
|
|
165
165
|
/** Predicate type */
|
|
166
|
-
type:
|
|
166
|
+
type: "isNotNA";
|
|
167
167
|
};
|
|
168
168
|
/** PlTableFilters filter entry */
|
|
169
169
|
export type PlTableFilterIsNA = {
|
|
170
170
|
/** Predicate type */
|
|
171
|
-
type:
|
|
171
|
+
type: "isNA";
|
|
172
172
|
};
|
|
173
173
|
/** PlTableFilters filter entries applicable to both string and number values */
|
|
174
174
|
export type PlTableFilterCommon = PlTableFilterIsNotNA | PlTableFilterIsNA;
|
|
175
175
|
/** PlTableFilters numeric filter entry */
|
|
176
176
|
export type PlTableFilterNumberEquals = {
|
|
177
177
|
/** Predicate type */
|
|
178
|
-
type:
|
|
178
|
+
type: "number_equals";
|
|
179
179
|
/** Reference value */
|
|
180
180
|
reference: number;
|
|
181
181
|
};
|
|
182
182
|
/** PlTableFilters numeric filter entry */
|
|
183
183
|
export type PlTableFilterNumberNotEquals = {
|
|
184
184
|
/** Predicate type */
|
|
185
|
-
type:
|
|
185
|
+
type: "number_notEquals";
|
|
186
186
|
/** Reference value */
|
|
187
187
|
reference: number;
|
|
188
188
|
};
|
|
189
189
|
/** PlTableFilters numeric filter entry */
|
|
190
190
|
export type PlTableFilterNumberGreaterThan = {
|
|
191
191
|
/** Predicate type */
|
|
192
|
-
type:
|
|
192
|
+
type: "number_greaterThan";
|
|
193
193
|
/** Reference value */
|
|
194
194
|
reference: number;
|
|
195
195
|
};
|
|
196
196
|
/** PlTableFilters numeric filter entry */
|
|
197
197
|
export type PlTableFilterNumberGreaterThanOrEqualTo = {
|
|
198
198
|
/** Predicate type */
|
|
199
|
-
type:
|
|
199
|
+
type: "number_greaterThanOrEqualTo";
|
|
200
200
|
/** Reference value */
|
|
201
201
|
reference: number;
|
|
202
202
|
};
|
|
203
203
|
/** PlTableFilters numeric filter entry */
|
|
204
204
|
export type PlTableFilterNumberLessThan = {
|
|
205
205
|
/** Predicate type */
|
|
206
|
-
type:
|
|
206
|
+
type: "number_lessThan";
|
|
207
207
|
/** Reference value */
|
|
208
208
|
reference: number;
|
|
209
209
|
};
|
|
210
210
|
/** PlTableFilters numeric filter entry */
|
|
211
211
|
export type PlTableFilterNumberLessThanOrEqualTo = {
|
|
212
212
|
/** Predicate type */
|
|
213
|
-
type:
|
|
213
|
+
type: "number_lessThanOrEqualTo";
|
|
214
214
|
/** Reference value */
|
|
215
215
|
reference: number;
|
|
216
216
|
};
|
|
217
217
|
/** PlTableFilters numeric filter entry */
|
|
218
218
|
export type PlTableFilterNumberBetween = {
|
|
219
219
|
/** Predicate type */
|
|
220
|
-
type:
|
|
220
|
+
type: "number_between";
|
|
221
221
|
/** Reference value for the lower bound */
|
|
222
222
|
lowerBound: number;
|
|
223
223
|
/** Defines whether values equal to lower bound reference value should be matched */
|
|
@@ -230,53 +230,53 @@ export type PlTableFilterNumberBetween = {
|
|
|
230
230
|
/** All PlTableFilters numeric filter entries */
|
|
231
231
|
export type PlTableFilterNumber = PlTableFilterCommon | PlTableFilterNumberEquals | PlTableFilterNumberNotEquals | PlTableFilterNumberGreaterThan | PlTableFilterNumberGreaterThanOrEqualTo | PlTableFilterNumberLessThan | PlTableFilterNumberLessThanOrEqualTo | PlTableFilterNumberBetween;
|
|
232
232
|
/** All types of PlTableFilters numeric filter entries */
|
|
233
|
-
export type PlTableFilterNumberType = PlTableFilterNumber[
|
|
233
|
+
export type PlTableFilterNumberType = PlTableFilterNumber["type"];
|
|
234
234
|
/** PlTableFilters string filter entry */
|
|
235
235
|
export type PlTableFilterStringEquals = {
|
|
236
236
|
/** Predicate type */
|
|
237
|
-
type:
|
|
237
|
+
type: "string_equals";
|
|
238
238
|
/** Reference value */
|
|
239
239
|
reference: string;
|
|
240
240
|
};
|
|
241
241
|
/** PlTableFilters string filter entry */
|
|
242
242
|
export type PlTableFilterStringNotEquals = {
|
|
243
243
|
/** Predicate type */
|
|
244
|
-
type:
|
|
244
|
+
type: "string_notEquals";
|
|
245
245
|
/** Reference value */
|
|
246
246
|
reference: string;
|
|
247
247
|
};
|
|
248
248
|
/** PlTableFilters string filter entry */
|
|
249
249
|
export type PlTableFilterStringContains = {
|
|
250
250
|
/** Predicate type */
|
|
251
|
-
type:
|
|
251
|
+
type: "string_contains";
|
|
252
252
|
/** Reference value */
|
|
253
253
|
reference: string;
|
|
254
254
|
};
|
|
255
255
|
/** PlTableFilters string filter entry */
|
|
256
256
|
export type PlTableFilterStringDoesNotContain = {
|
|
257
257
|
/** Predicate type */
|
|
258
|
-
type:
|
|
258
|
+
type: "string_doesNotContain";
|
|
259
259
|
/** Reference value */
|
|
260
260
|
reference: string;
|
|
261
261
|
};
|
|
262
262
|
/** PlTableFilters string filter entry */
|
|
263
263
|
export type PlTableFilterStringMatches = {
|
|
264
264
|
/** Predicate type */
|
|
265
|
-
type:
|
|
265
|
+
type: "string_matches";
|
|
266
266
|
/** Reference value */
|
|
267
267
|
reference: string;
|
|
268
268
|
};
|
|
269
269
|
/** PlTableFilters string filter entry */
|
|
270
270
|
export type PlTableFilterStringDoesNotMatch = {
|
|
271
271
|
/** Predicate type */
|
|
272
|
-
type:
|
|
272
|
+
type: "string_doesNotMatch";
|
|
273
273
|
/** Reference value */
|
|
274
274
|
reference: string;
|
|
275
275
|
};
|
|
276
276
|
/** PlTableFilters string filter entry */
|
|
277
277
|
export type PlTableFilterStringContainsFuzzyMatch = {
|
|
278
278
|
/** Predicate type */
|
|
279
|
-
type:
|
|
279
|
+
type: "string_containsFuzzyMatch";
|
|
280
280
|
/** Reference value */
|
|
281
281
|
reference: string;
|
|
282
282
|
/**
|
|
@@ -302,11 +302,11 @@ export type PlTableFilterStringContainsFuzzyMatch = {
|
|
|
302
302
|
/** All PlTableFilters string filter entries */
|
|
303
303
|
export type PlTableFilterString = PlTableFilterCommon | PlTableFilterStringEquals | PlTableFilterStringNotEquals | PlTableFilterStringContains | PlTableFilterStringDoesNotContain | PlTableFilterStringMatches | PlTableFilterStringDoesNotMatch | PlTableFilterStringContainsFuzzyMatch;
|
|
304
304
|
/** All types of PlTableFilters string filter entries */
|
|
305
|
-
export type PlTableFilterStringType = PlTableFilterString[
|
|
305
|
+
export type PlTableFilterStringType = PlTableFilterString["type"];
|
|
306
306
|
/** All PlTableFilters filter entries */
|
|
307
307
|
export type PlTableFilter = PlTableFilterNumber | PlTableFilterString;
|
|
308
308
|
/** All types of PlTableFilters filter entries */
|
|
309
|
-
export type PlTableFilterType = PlTableFilter[
|
|
309
|
+
export type PlTableFilterType = PlTableFilter["type"];
|
|
310
310
|
export type CreatePlDataTableOps = {
|
|
311
311
|
/** Filters for columns and non-partitioned axes */
|
|
312
312
|
filters?: PTableRecordFilter[];
|
|
@@ -329,7 +329,7 @@ export type CreatePlDataTableOps = {
|
|
|
329
329
|
*
|
|
330
330
|
* Default: 'full'
|
|
331
331
|
*/
|
|
332
|
-
coreJoinType?:
|
|
332
|
+
coreJoinType?: "inner" | "full";
|
|
333
333
|
};
|
|
334
334
|
/** Get all label columns from the result pool */
|
|
335
335
|
export declare function getAllLabelColumns(resultPool: AxisLabelProvider & ColumnProvider): PColumn<PColumnDataUniversal>[] | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlDataTable.d.ts","sourceRoot":"","sources":["../../src/components/PlDataTable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,QAAQ,EACR,iBAAiB,EAEjB,cAAc,EACd,OAAO,EACP,gBAAgB,EAEhB,SAAS,EACT,cAAc,EAGd,gBAAgB,EAEhB,YAAY,EACZ,kBAAkB,EAElB,aAAa,EACd,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,UAAU,EAUX,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,aAAa,EAEd,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"PlDataTable.d.ts","sourceRoot":"","sources":["../../src/components/PlDataTable.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,7 +29,7 @@ function upgradePlDataTableStateV2(state) {
|
|
|
29
29
|
return createPlDataTableStateV2();
|
|
30
30
|
}
|
|
31
31
|
// v1 -> v2
|
|
32
|
-
if (!(
|
|
32
|
+
if (!("version" in state)) {
|
|
33
33
|
// Non upgradeable as sourceId calculation algorithm has changed, resetting state to default
|
|
34
34
|
state = createPlDataTableStateV2();
|
|
35
35
|
}
|
|
@@ -145,12 +145,12 @@ function createPTableDef(params) {
|
|
|
145
145
|
secondaryColumns.push(...params.labelColumns);
|
|
146
146
|
return {
|
|
147
147
|
src: {
|
|
148
|
-
type:
|
|
148
|
+
type: "outer",
|
|
149
149
|
primary: {
|
|
150
150
|
type: params.coreJoinType,
|
|
151
|
-
entries: coreColumns.map((c) => ({ type:
|
|
151
|
+
entries: coreColumns.map((c) => ({ type: "column", column: c })),
|
|
152
152
|
},
|
|
153
|
-
secondary: secondaryColumns.map((c) => ({ type:
|
|
153
|
+
secondary: secondaryColumns.map((c) => ({ type: "column", column: c })),
|
|
154
154
|
},
|
|
155
155
|
partitionFilters: params.partitionFilters,
|
|
156
156
|
filters: params.filters,
|
|
@@ -159,11 +159,11 @@ function createPTableDef(params) {
|
|
|
159
159
|
}
|
|
160
160
|
/** Check if column should be omitted from the table */
|
|
161
161
|
function isColumnHidden(spec) {
|
|
162
|
-
return readAnnotation(spec, Annotation.Table.Visibility) ===
|
|
162
|
+
return readAnnotation(spec, Annotation.Table.Visibility) === "hidden";
|
|
163
163
|
}
|
|
164
164
|
/** Check if column is hidden by default */
|
|
165
165
|
function isColumnOptional(spec) {
|
|
166
|
-
return readAnnotation(spec, Annotation.Table.Visibility) ===
|
|
166
|
+
return readAnnotation(spec, Annotation.Table.Visibility) === "optional";
|
|
167
167
|
}
|
|
168
168
|
/**
|
|
169
169
|
* Create p-table spec and handle given ui table state
|
|
@@ -196,14 +196,13 @@ function createPlDataTableV2(ctx, columns, tableState, ops) {
|
|
|
196
196
|
const fullColumns = [...columns, ...fullLabelColumns];
|
|
197
197
|
const fullColumnsAxes = uniqueBy(fullColumns.flatMap((c) => c.spec.axesSpec.map((a) => getAxisId(a))), (a) => canonicalizeJson(a));
|
|
198
198
|
const fullColumnsIds = [
|
|
199
|
-
...fullColumnsAxes.map((a) => ({ type:
|
|
200
|
-
...fullColumns.map((c) => ({ type:
|
|
199
|
+
...fullColumnsAxes.map((a) => ({ type: "axis", id: a })),
|
|
200
|
+
...fullColumns.map((c) => ({ type: "column", id: c.id })),
|
|
201
201
|
];
|
|
202
202
|
const fullColumnsIdsSet = new Set(fullColumnsIds.map((c) => canonicalizeJson(c)));
|
|
203
203
|
const isValidColumnId = (id) => fullColumnsIdsSet.has(canonicalizeJson(id));
|
|
204
|
-
const coreJoinType = ops?.coreJoinType ??
|
|
205
|
-
const partitionFilters = tableStateNormalized.pTableParams.partitionFilters
|
|
206
|
-
.filter((f) => {
|
|
204
|
+
const coreJoinType = ops?.coreJoinType ?? "full";
|
|
205
|
+
const partitionFilters = tableStateNormalized.pTableParams.partitionFilters.filter((f) => {
|
|
207
206
|
const valid = isValidColumnId(f.column);
|
|
208
207
|
if (!valid)
|
|
209
208
|
ctx.logWarn(`Partition filter ${JSON.stringify(f)} does not match provided columns, skipping`);
|
|
@@ -235,19 +234,15 @@ function createPlDataTableV2(ctx, columns, tableState, ops) {
|
|
|
235
234
|
return undefined;
|
|
236
235
|
const hiddenColumns = new Set((() => {
|
|
237
236
|
// Inner join works as a filter - all columns must be present
|
|
238
|
-
if (coreJoinType ===
|
|
237
|
+
if (coreJoinType === "inner")
|
|
239
238
|
return [];
|
|
240
239
|
const hiddenColIds = tableStateNormalized.pTableParams.hiddenColIds;
|
|
241
240
|
if (hiddenColIds)
|
|
242
241
|
return hiddenColIds;
|
|
243
|
-
return columns
|
|
244
|
-
.filter((c) => isColumnOptional(c.spec))
|
|
245
|
-
.map((c) => c.id);
|
|
242
|
+
return columns.filter((c) => isColumnOptional(c.spec)).map((c) => c.id);
|
|
246
243
|
})());
|
|
247
244
|
// Preserve linker columns
|
|
248
|
-
columns
|
|
249
|
-
.filter((c) => isLinkerColumn(c.spec))
|
|
250
|
-
.forEach((c) => hiddenColumns.delete(c.id));
|
|
245
|
+
columns.filter((c) => isLinkerColumn(c.spec)).forEach((c) => hiddenColumns.delete(c.id));
|
|
251
246
|
// Preserve core columns as they change the shape of join.
|
|
252
247
|
const coreColumnPredicate = ops?.coreColumnPredicate;
|
|
253
248
|
if (coreColumnPredicate) {
|
|
@@ -255,8 +250,12 @@ function createPlDataTableV2(ctx, columns, tableState, ops) {
|
|
|
255
250
|
coreColumns.forEach((c) => hiddenColumns.delete(c));
|
|
256
251
|
}
|
|
257
252
|
// Filters decrease the number of result rows, sorting changes the order of result rows
|
|
258
|
-
[
|
|
259
|
-
.
|
|
253
|
+
[
|
|
254
|
+
...partitionFilters.map((f) => f.column),
|
|
255
|
+
...filters.map((f) => f.column),
|
|
256
|
+
...sorting.map((s) => s.column),
|
|
257
|
+
]
|
|
258
|
+
.filter((c) => c.type === "column")
|
|
260
259
|
.forEach((c) => hiddenColumns.delete(c.id));
|
|
261
260
|
const visibleColumns = columns.filter((c) => !hiddenColumns.has(c.id));
|
|
262
261
|
const visibleLabelColumns = getMatchingLabelColumns(visibleColumns.map(getColumnIdAndSpec), allLabelColumns);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlDataTable.js","sources":["../../src/components/PlDataTable.ts"],"sourcesContent":["import type {\n AxisId,\n AxisSpec,\n CanonicalizedJson,\n DataInfo,\n ListOptionBase,\n PColumn,\n PColumnIdAndSpec,\n PColumnValues,\n PObjectId,\n PTableColumnId,\n PTableColumnIdAxis,\n PTableColumnIdColumn,\n PTableColumnSpec,\n PTableDef,\n PTableHandle,\n PTableRecordFilter,\n PTableRecordSingleValueFilterV2,\n PTableSorting,\n} from '@milaboratories/pl-model-common';\nimport {\n Annotation,\n canonicalizeJson,\n getAxisId,\n getColumnIdAndSpec,\n isLabelColumn,\n isLinkerColumn,\n matchAxisId,\n PColumnName,\n readAnnotation,\n uniqueBy,\n} from '@milaboratories/pl-model-common';\nimport type {\n AxisLabelProvider,\n ColumnProvider,\n PColumnDataUniversal,\n RenderCtxBase,\n TreeNodeAccessor,\n} from '../render';\nimport {\n allPColumnsReady,\n deriveLabels,\n PColumnCollection,\n} from '../render';\nimport { identity } from 'es-toolkit';\n\nexport type PlTableColumnId = {\n /** Original column spec */\n source: PTableColumnSpec;\n /** Column spec with labeled axes replaced by label columns */\n labeled: PTableColumnSpec;\n};\n\nexport type PlTableColumnIdJson = CanonicalizedJson<PlTableColumnId>;\n\nexport type PlDataTableGridStateCore = {\n /** Includes column ordering */\n columnOrder?: {\n /** All colIds in order */\n orderedColIds: PlTableColumnIdJson[];\n };\n /** Includes current sort columns and direction */\n sort?: {\n /** Sorted columns and directions in order */\n sortModel: {\n /** Column Id to apply the sort to. */\n colId: PlTableColumnIdJson;\n /** Sort direction */\n sort: 'asc' | 'desc';\n }[];\n };\n /** Includes column visibility */\n columnVisibility?: {\n /** All colIds which were hidden */\n hiddenColIds: PlTableColumnIdJson[];\n };\n};\n\nexport type PlDataTableSheet = {\n /** spec of the axis to use */\n axis: AxisSpec;\n /** options to show in the filter dropdown */\n options: ListOptionBase<string | number>[];\n /** default (selected) value */\n defaultValue?: string | number;\n};\n\nexport type PlDataTableSheetState = {\n /** id of the axis */\n axisId: AxisId;\n /** selected value */\n value: string | number;\n};\n\n/**\n * PlDataTableV2 persisted state\n */\nexport type PlDataTableStateV2 =\n // Old versions of the state\n | {\n // no version\n gridState: {\n columnOrder?: {\n orderedColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sort?: {\n sortModel: {\n colId: CanonicalizedJson<PTableColumnSpec>;\n sort: 'asc' | 'desc';\n }[];\n };\n columnVisibility?: {\n hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sourceId?: string;\n sheets?: Record<CanonicalizedJson<AxisId>, string | number>;\n };\n pTableParams?: {\n sorting?: PTableSorting[];\n filters?: PTableRecordFilter[];\n };\n }\n | {\n version: 2;\n stateCache: {\n sourceId: string;\n gridState: {\n columnOrder?: {\n orderedColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sort?: {\n sortModel: {\n colId: CanonicalizedJson<PTableColumnSpec>;\n sort: 'asc' | 'desc';\n }[];\n };\n columnVisibility?: {\n hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n };\n sheetsState: PlDataTableSheetState[];\n }[];\n pTableParams: {\n hiddenColIds: PObjectId[] | null;\n filters: PTableRecordFilter[];\n sorting: PTableSorting[];\n };\n }\n | {\n version: 3;\n stateCache: {\n sourceId: string;\n gridState: {\n columnOrder?: {\n orderedColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sort?: {\n sortModel: {\n colId: CanonicalizedJson<PTableColumnSpec>;\n sort: 'asc' | 'desc';\n }[];\n };\n columnVisibility?: {\n hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n };\n sheetsState: PlDataTableSheetState[];\n filtersState: PlDataTableFilterState[];\n }[];\n pTableParams: PTableParamsV2;\n }\n // Normalized state\n | PlDataTableStateV2Normalized;\n\nexport type PlDataTableStateV2CacheEntry = {\n /** DataSource identifier for state management */\n sourceId: string;\n /** Internal ag-grid state */\n gridState: PlDataTableGridStateCore;\n /** Sheets state */\n sheetsState: PlDataTableSheetState[];\n /** Filters state */\n filtersState: PlDataTableFilterState[];\n};\n\nexport type PTableParamsV2 =\n | {\n sourceId: null;\n hiddenColIds: null;\n partitionFilters: [];\n filters: [];\n sorting: [];\n }\n | {\n sourceId: string;\n hiddenColIds: PObjectId[] | null;\n partitionFilters: PTableRecordFilter[];\n filters: PTableRecordFilter[];\n sorting: PTableSorting[];\n };\n\nexport type PlDataTableStateV2Normalized = {\n /** Version for upgrades */\n version: 4;\n /** Internal states, LRU cache for 5 sourceId-s */\n stateCache: PlDataTableStateV2CacheEntry[];\n /** PTable params derived from the cache state for the current sourceId */\n pTableParams: PTableParamsV2;\n};\n\nexport function makeDefaultPTableParams(): PTableParamsV2 {\n return {\n sourceId: null,\n hiddenColIds: null,\n partitionFilters: [],\n filters: [],\n sorting: [],\n };\n}\n\n/** Create default PlDataTableStateV2 */\nexport function createPlDataTableStateV2(): PlDataTableStateV2Normalized {\n return {\n version: 4,\n stateCache: [],\n pTableParams: makeDefaultPTableParams(),\n };\n}\n\n/** Upgrade PlDataTableStateV2 to the latest version */\nexport function upgradePlDataTableStateV2(state: PlDataTableStateV2 | undefined): PlDataTableStateV2Normalized {\n // Block just added, had no state, model started earlier than the UI\n if (!state) {\n return createPlDataTableStateV2();\n }\n // v1 -> v2\n if (!('version' in state)) {\n // Non upgradeable as sourceId calculation algorithm has changed, resetting state to default\n state = createPlDataTableStateV2();\n }\n // v2 -> v3\n if (state.version === 2) {\n state = {\n version: 3,\n stateCache: state.stateCache.map((entry) => ({\n ...entry,\n filtersState: [],\n })),\n pTableParams: makeDefaultPTableParams(),\n };\n }\n // v3 -> v4\n if (state.version === 3) {\n // Non upgradeable as column ids calculation algorithm has changed, resetting state to default\n state = createPlDataTableStateV2();\n }\n return state;\n}\n\nexport type PlDataTableFilterState = {\n id: PTableColumnId;\n alphabetic: boolean;\n filter: null | {\n value: PlTableFilter;\n disabled: boolean;\n };\n};\n\n/** PlTableFilters filter entry */\nexport type PlTableFilterIsNotNA = {\n /** Predicate type */\n type: 'isNotNA';\n};\n\n/** PlTableFilters filter entry */\nexport type PlTableFilterIsNA = {\n /** Predicate type */\n type: 'isNA';\n};\n\n/** PlTableFilters filter entries applicable to both string and number values */\nexport type PlTableFilterCommon = PlTableFilterIsNotNA | PlTableFilterIsNA;\n\n/** PlTableFilters numeric filter entry */\nexport type PlTableFilterNumberEquals = {\n /** Predicate type */\n type: 'number_equals';\n /** Reference value */\n reference: number;\n};\n\n/** PlTableFilters numeric filter entry */\nexport type PlTableFilterNumberNotEquals = {\n /** Predicate type */\n type: 'number_notEquals';\n /** Reference value */\n reference: number;\n};\n\n/** PlTableFilters numeric filter entry */\nexport type PlTableFilterNumberGreaterThan = {\n /** Predicate type */\n type: 'number_greaterThan';\n /** Reference value */\n reference: number;\n};\n\n/** PlTableFilters numeric filter entry */\nexport type PlTableFilterNumberGreaterThanOrEqualTo = {\n /** Predicate type */\n type: 'number_greaterThanOrEqualTo';\n /** Reference value */\n reference: number;\n};\n\n/** PlTableFilters numeric filter entry */\nexport type PlTableFilterNumberLessThan = {\n /** Predicate type */\n type: 'number_lessThan';\n /** Reference value */\n reference: number;\n};\n\n/** PlTableFilters numeric filter entry */\nexport type PlTableFilterNumberLessThanOrEqualTo = {\n /** Predicate type */\n type: 'number_lessThanOrEqualTo';\n /** Reference value */\n reference: number;\n};\n\n/** PlTableFilters numeric filter entry */\nexport type PlTableFilterNumberBetween = {\n /** Predicate type */\n type: 'number_between';\n /** Reference value for the lower bound */\n lowerBound: number;\n /** Defines whether values equal to lower bound reference value should be matched */\n includeLowerBound: boolean;\n /** Reference value for the upper bound */\n upperBound: number;\n /** Defines whether values equal to upper bound reference value should be matched */\n includeUpperBound: boolean;\n};\n\n/** All PlTableFilters numeric filter entries */\nexport type PlTableFilterNumber =\n | PlTableFilterCommon\n | PlTableFilterNumberEquals\n | PlTableFilterNumberNotEquals\n | PlTableFilterNumberGreaterThan\n | PlTableFilterNumberGreaterThanOrEqualTo\n | PlTableFilterNumberLessThan\n | PlTableFilterNumberLessThanOrEqualTo\n | PlTableFilterNumberBetween;\n/** All types of PlTableFilters numeric filter entries */\nexport type PlTableFilterNumberType = PlTableFilterNumber['type'];\n\n/** PlTableFilters string filter entry */\nexport type PlTableFilterStringEquals = {\n /** Predicate type */\n type: 'string_equals';\n /** Reference value */\n reference: string;\n};\n\n/** PlTableFilters string filter entry */\nexport type PlTableFilterStringNotEquals = {\n /** Predicate type */\n type: 'string_notEquals';\n /** Reference value */\n reference: string;\n};\n\n/** PlTableFilters string filter entry */\nexport type PlTableFilterStringContains = {\n /** Predicate type */\n type: 'string_contains';\n /** Reference value */\n reference: string;\n};\n\n/** PlTableFilters string filter entry */\nexport type PlTableFilterStringDoesNotContain = {\n /** Predicate type */\n type: 'string_doesNotContain';\n /** Reference value */\n reference: string;\n};\n\n/** PlTableFilters string filter entry */\nexport type PlTableFilterStringMatches = {\n /** Predicate type */\n type: 'string_matches';\n /** Reference value */\n reference: string;\n};\n\n/** PlTableFilters string filter entry */\nexport type PlTableFilterStringDoesNotMatch = {\n /** Predicate type */\n type: 'string_doesNotMatch';\n /** Reference value */\n reference: string;\n};\n\n/** PlTableFilters string filter entry */\nexport type PlTableFilterStringContainsFuzzyMatch = {\n /** Predicate type */\n type: 'string_containsFuzzyMatch';\n /** Reference value */\n reference: string;\n /**\n * Maximum acceptable edit distance between reference value and matched substring\n * @see https://en.wikipedia.org/wiki/Edit_distance\n */\n maxEdits: number;\n /**\n * When {@link substitutionsOnly} is set to false\n * Levenshtein distance is used as edit distance (substitutions and indels)\n * @see https://en.wikipedia.org/wiki/Levenshtein_distance\n * When {@link substitutionsOnly} is set to true\n * Hamming distance is used as edit distance (substitutions only)\n * @see https://en.wikipedia.org/wiki/Hamming_distance\n */\n substitutionsOnly: boolean;\n /**\n * Single character in {@link reference} that will labelColumn any\n * single character in searched text.\n */\n wildcard?: string;\n};\n\n/** All PlTableFilters string filter entries */\nexport type PlTableFilterString =\n | PlTableFilterCommon\n | PlTableFilterStringEquals\n | PlTableFilterStringNotEquals\n | PlTableFilterStringContains\n | PlTableFilterStringDoesNotContain\n | PlTableFilterStringMatches\n | PlTableFilterStringDoesNotMatch\n | PlTableFilterStringContainsFuzzyMatch;\n/** All types of PlTableFilters string filter entries */\nexport type PlTableFilterStringType = PlTableFilterString['type'];\n\n/** All PlTableFilters filter entries */\nexport type PlTableFilter = PlTableFilterNumber | PlTableFilterString;\n/** All types of PlTableFilters filter entries */\nexport type PlTableFilterType = PlTableFilter['type'];\n\nexport type CreatePlDataTableOps = {\n /** Filters for columns and non-partitioned axes */\n filters?: PTableRecordFilter[];\n\n /** Sorting to columns hidden from user */\n sorting?: PTableSorting[];\n\n /**\n * Selects columns for which will be inner-joined to the table.\n *\n * Default behaviour: all columns are considered to be core\n */\n coreColumnPredicate?: (spec: PColumnIdAndSpec) => boolean;\n\n /**\n * Determines how core columns should be joined together:\n * inner - so user will only see records present in all core columns\n * full - so user will only see records present in any of the core columns\n *\n * All non-core columns will be left joined to the table produced by the core\n * columns, in other words records form the pool of non-core columns will only\n * make their way into the final table if core table contains corresponding key.\n *\n * Default: 'full'\n */\n coreJoinType?: 'inner' | 'full';\n};\n\n/** Get all label columns from the result pool */\nexport function getAllLabelColumns(\n resultPool: AxisLabelProvider & ColumnProvider,\n): PColumn<PColumnDataUniversal>[] | undefined {\n return new PColumnCollection()\n .addAxisLabelProvider(resultPool)\n .addColumnProvider(resultPool)\n .getColumns({\n name: PColumnName.Label,\n axes: [{}], // exactly one axis\n }, { dontWaitAllData: true, overrideLabelAnnotation: false });\n}\n\n/** Get label columns matching the provided columns from the result pool */\nexport function getMatchingLabelColumns(\n columns: PColumnIdAndSpec[],\n allLabelColumns: PColumn<PColumnDataUniversal>[],\n): PColumn<PColumnDataUniversal>[] {\n // split input columns into label and value columns\n const inputLabelColumns: typeof columns = [];\n const inputValueColumns: typeof columns = [];\n for (const column of columns) {\n if (isLabelColumn(column.spec)) {\n inputLabelColumns.push(column);\n } else {\n inputValueColumns.push(column);\n }\n }\n\n // collect distinct axes of value columns\n const unlabeledAxes: AxisId[] = [];\n for (const column of inputValueColumns) {\n for (const axis of column.spec.axesSpec) {\n const axisId = getAxisId(axis);\n if (!unlabeledAxes.some((id) => matchAxisId(id, axisId))) {\n unlabeledAxes.push(axisId);\n }\n }\n }\n\n // remove axes matched by input label columns\n for (const labelColumn of inputLabelColumns) {\n const labelAxisId = getAxisId(labelColumn.spec.axesSpec[0]);\n const labelMatch = unlabeledAxes.findIndex((axisId) => matchAxisId(axisId, labelAxisId));\n if (labelMatch !== -1) {\n unlabeledAxes.splice(labelMatch, 1);\n }\n }\n\n // warning: changing this id will break backward compatibility\n const colId = (id: PObjectId, domain?: Record<string, string>): PObjectId => {\n let wid = id.toString();\n if (domain) {\n for (const k in domain) {\n wid += k;\n wid += domain[k];\n }\n }\n return wid as PObjectId;\n };\n\n // search label columns for unmatched axes\n const labelColumns: typeof allLabelColumns = [];\n for (const labelColumn of allLabelColumns) {\n const labelAxis = labelColumn.spec.axesSpec[0];\n const labelAxisId = getAxisId(labelAxis);\n const labelMatch = unlabeledAxes.findIndex((axisId) => matchAxisId(axisId, labelAxisId));\n if (labelMatch !== -1) {\n const axisId = unlabeledAxes[labelMatch];\n const dataDomainLen = Object.keys(axisId.domain ?? {}).length;\n const labelDomainLen = Object.keys(labelAxis.domain ?? {}).length;\n if (dataDomainLen > labelDomainLen) {\n labelColumns.push({\n id: colId(labelColumn.id, axisId.domain),\n spec: {\n ...labelColumn.spec,\n axesSpec: [{ ...axisId, annotations: labelAxis.annotations }],\n },\n data: labelColumn.data,\n });\n } else {\n labelColumns.push(labelColumn);\n }\n unlabeledAxes.splice(labelMatch, 1);\n }\n }\n return labelColumns;\n}\n\nfunction createPTableDef(params: {\n columns: PColumn<PColumnDataUniversal>[];\n labelColumns: PColumn<PColumnDataUniversal>[];\n coreJoinType: 'inner' | 'full';\n partitionFilters: PTableRecordSingleValueFilterV2[];\n filters: PTableRecordSingleValueFilterV2[];\n sorting: PTableSorting[];\n coreColumnPredicate?: ((spec: PColumnIdAndSpec) => boolean);\n}): PTableDef<PColumn<TreeNodeAccessor | PColumnValues | DataInfo<TreeNodeAccessor>>> {\n let coreColumns = params.columns;\n const secondaryColumns: typeof params.columns = [];\n\n if (params.coreColumnPredicate) {\n coreColumns = [];\n for (const c of params.columns)\n if (params.coreColumnPredicate(getColumnIdAndSpec(c))) coreColumns.push(c);\n else secondaryColumns.push(c);\n }\n\n secondaryColumns.push(...params.labelColumns);\n\n return {\n src: {\n type: 'outer',\n primary: {\n type: params.coreJoinType,\n entries: coreColumns.map((c) => ({ type: 'column', column: c })),\n },\n secondary: secondaryColumns.map((c) => ({ type: 'column', column: c })),\n },\n partitionFilters: params.partitionFilters,\n filters: params.filters,\n sorting: params.sorting,\n };\n}\n\n/** PlAgDataTable model */\nexport type PlDataTableModel = {\n /** DataSource identifier for state management */\n sourceId: string | null;\n /** p-table including all columns, used to show the full specification of the table */\n fullTableHandle: PTableHandle;\n /** p-table including only visible columns, used to get the data */\n visibleTableHandle: PTableHandle;\n};\n\n/** Check if column should be omitted from the table */\nexport function isColumnHidden(spec: { annotations?: Annotation }): boolean {\n return readAnnotation(spec, Annotation.Table.Visibility) === 'hidden';\n}\n\n/** Check if column is hidden by default */\nexport function isColumnOptional(spec: { annotations?: Annotation }): boolean {\n return readAnnotation(spec, Annotation.Table.Visibility) === 'optional';\n}\n\n/**\n * Create p-table spec and handle given ui table state\n *\n * @param ctx context\n * @param columns column list\n * @param tableState table ui state\n * @returns PlAgDataTableV2 table source\n */\nexport function createPlDataTableV2<A, U>(\n ctx: RenderCtxBase<A, U>,\n columns: PColumn<PColumnDataUniversal>[],\n tableState: PlDataTableStateV2 | undefined,\n ops?: CreatePlDataTableOps,\n): PlDataTableModel | undefined {\n if (columns.length === 0) return undefined;\n\n const tableStateNormalized = upgradePlDataTableStateV2(tableState);\n\n const allLabelColumns = getAllLabelColumns(ctx.resultPool);\n if (!allLabelColumns) return undefined;\n\n let fullLabelColumns = getMatchingLabelColumns(columns.map(getColumnIdAndSpec), allLabelColumns);\n fullLabelColumns = deriveLabels(fullLabelColumns, identity, { includeNativeLabel: true }).map((v) => {\n return {\n ...v.value,\n spec: {\n ...v.value.spec,\n annotations: {\n ...v.value.spec.annotations,\n [Annotation.Label]: v.label,\n },\n },\n };\n });\n\n const fullColumns = [...columns, ...fullLabelColumns];\n\n const fullColumnsAxes = uniqueBy(\n fullColumns.flatMap((c) => c.spec.axesSpec.map((a) => getAxisId(a))),\n (a) => canonicalizeJson<AxisId>(a),\n );\n const fullColumnsIds: PTableColumnId[] = [\n ...fullColumnsAxes.map((a) => ({ type: 'axis', id: a } satisfies PTableColumnIdAxis)),\n ...fullColumns.map((c) => ({ type: 'column', id: c.id } satisfies PTableColumnIdColumn)),\n ];\n const fullColumnsIdsSet = new Set(fullColumnsIds.map((c) => canonicalizeJson<PTableColumnId>(c)));\n const isValidColumnId = (id: PTableColumnId): boolean => fullColumnsIdsSet.has(canonicalizeJson<PTableColumnId>(id));\n\n const coreJoinType = ops?.coreJoinType ?? 'full';\n const partitionFilters: PTableRecordSingleValueFilterV2[]\n = tableStateNormalized.pTableParams.partitionFilters\n .filter((f) => {\n const valid = isValidColumnId(f.column);\n if (!valid) ctx.logWarn(`Partition filter ${JSON.stringify(f)} does not match provided columns, skipping`);\n return valid;\n });\n const filters: PTableRecordSingleValueFilterV2[]\n = uniqueBy(\n [...tableStateNormalized.pTableParams.filters, ...(ops?.filters ?? [])],\n (f) => canonicalizeJson<PTableColumnId>(f.column),\n ).filter((f) => {\n const valid = isValidColumnId(f.column);\n if (!valid) ctx.logWarn(`Filter ${JSON.stringify(f)} does not match provided columns, skipping`);\n return valid;\n });\n const sorting: PTableSorting[]\n = uniqueBy(\n [...tableStateNormalized.pTableParams.sorting, ...(ops?.sorting ?? [])],\n (s) => canonicalizeJson<PTableColumnId>(s.column),\n ).filter((s) => {\n const valid = isValidColumnId(s.column);\n if (!valid) ctx.logWarn(`Sorting ${JSON.stringify(s)} does not match provided columns, skipping`);\n return valid;\n });\n\n const fullDef = createPTableDef({\n columns,\n labelColumns: fullLabelColumns,\n coreJoinType,\n partitionFilters,\n filters,\n sorting,\n coreColumnPredicate: ops?.coreColumnPredicate,\n });\n const fullHandle = ctx.createPTable(fullDef);\n if (!fullHandle) return undefined;\n\n const hiddenColumns = new Set<PObjectId>(((): PObjectId[] => {\n // Inner join works as a filter - all columns must be present\n if (coreJoinType === 'inner') return [];\n\n const hiddenColIds = tableStateNormalized.pTableParams.hiddenColIds;\n if (hiddenColIds) return hiddenColIds;\n\n return columns\n .filter((c) => isColumnOptional(c.spec))\n .map((c) => c.id);\n })());\n\n // Preserve linker columns\n columns\n .filter((c) => isLinkerColumn(c.spec))\n .forEach((c) => hiddenColumns.delete(c.id));\n\n // Preserve core columns as they change the shape of join.\n const coreColumnPredicate = ops?.coreColumnPredicate;\n if (coreColumnPredicate) {\n const coreColumns = columns.flatMap((c) => coreColumnPredicate(getColumnIdAndSpec(c)) ? [c.id] : []);\n coreColumns.forEach((c) => hiddenColumns.delete(c));\n }\n\n // Filters decrease the number of result rows, sorting changes the order of result rows\n [...partitionFilters.map((f) => f.column), ...filters.map((f) => f.column), ...sorting.map((s) => s.column)]\n .filter((c): c is PTableColumnIdColumn => c.type === 'column')\n .forEach((c) => hiddenColumns.delete(c.id));\n\n const visibleColumns = columns.filter((c) => !hiddenColumns.has(c.id));\n const visibleLabelColumns = getMatchingLabelColumns(visibleColumns.map(getColumnIdAndSpec), allLabelColumns);\n\n // if at least one column is not yet computed, we can't show the table\n if (!allPColumnsReady([...visibleColumns, ...visibleLabelColumns])) return undefined;\n\n const visibleDef = createPTableDef({\n columns: visibleColumns,\n labelColumns: visibleLabelColumns,\n coreJoinType,\n partitionFilters,\n filters,\n sorting,\n coreColumnPredicate,\n });\n const visibleHandle = ctx.createPTable(visibleDef);\n if (!visibleHandle) return undefined;\n\n return {\n sourceId: tableStateNormalized.pTableParams.sourceId,\n fullTableHandle: fullHandle,\n visibleTableHandle: visibleHandle,\n } satisfies PlDataTableModel;\n}\n\n/** Create sheet entries for PlDataTable */\nexport function createPlDataTableSheet<A, U>(\n ctx: RenderCtxBase<A, U>,\n axis: AxisSpec,\n values: (string | number)[],\n): PlDataTableSheet {\n const labels = ctx.resultPool.findLabels(axis);\n return {\n axis,\n options: values.map((v) => ({\n value: v,\n label: labels?.[v] ?? v.toString(),\n })),\n defaultValue: values[0],\n };\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PlDataTable.js","sources":["../../src/components/PlDataTable.ts"],"sourcesContent":["import type {\n AxisId,\n AxisSpec,\n CanonicalizedJson,\n DataInfo,\n ListOptionBase,\n PColumn,\n PColumnIdAndSpec,\n PColumnValues,\n PObjectId,\n PTableColumnId,\n PTableColumnIdAxis,\n PTableColumnIdColumn,\n PTableColumnSpec,\n PTableDef,\n PTableHandle,\n PTableRecordFilter,\n PTableRecordSingleValueFilterV2,\n PTableSorting,\n} from \"@milaboratories/pl-model-common\";\nimport {\n Annotation,\n canonicalizeJson,\n getAxisId,\n getColumnIdAndSpec,\n isLabelColumn,\n isLinkerColumn,\n matchAxisId,\n PColumnName,\n readAnnotation,\n uniqueBy,\n} from \"@milaboratories/pl-model-common\";\nimport type {\n AxisLabelProvider,\n ColumnProvider,\n PColumnDataUniversal,\n RenderCtxBase,\n TreeNodeAccessor,\n} from \"../render\";\nimport { allPColumnsReady, deriveLabels, PColumnCollection } from \"../render\";\nimport { identity } from \"es-toolkit\";\n\nexport type PlTableColumnId = {\n /** Original column spec */\n source: PTableColumnSpec;\n /** Column spec with labeled axes replaced by label columns */\n labeled: PTableColumnSpec;\n};\n\nexport type PlTableColumnIdJson = CanonicalizedJson<PlTableColumnId>;\n\nexport type PlDataTableGridStateCore = {\n /** Includes column ordering */\n columnOrder?: {\n /** All colIds in order */\n orderedColIds: PlTableColumnIdJson[];\n };\n /** Includes current sort columns and direction */\n sort?: {\n /** Sorted columns and directions in order */\n sortModel: {\n /** Column Id to apply the sort to. */\n colId: PlTableColumnIdJson;\n /** Sort direction */\n sort: \"asc\" | \"desc\";\n }[];\n };\n /** Includes column visibility */\n columnVisibility?: {\n /** All colIds which were hidden */\n hiddenColIds: PlTableColumnIdJson[];\n };\n};\n\nexport type PlDataTableSheet = {\n /** spec of the axis to use */\n axis: AxisSpec;\n /** options to show in the filter dropdown */\n options: ListOptionBase<string | number>[];\n /** default (selected) value */\n defaultValue?: string | number;\n};\n\nexport type PlDataTableSheetState = {\n /** id of the axis */\n axisId: AxisId;\n /** selected value */\n value: string | number;\n};\n\n/**\n * PlDataTableV2 persisted state\n */\nexport type PlDataTableStateV2 =\n // Old versions of the state\n | {\n // no version\n gridState: {\n columnOrder?: {\n orderedColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sort?: {\n sortModel: {\n colId: CanonicalizedJson<PTableColumnSpec>;\n sort: \"asc\" | \"desc\";\n }[];\n };\n columnVisibility?: {\n hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sourceId?: string;\n sheets?: Record<CanonicalizedJson<AxisId>, string | number>;\n };\n pTableParams?: {\n sorting?: PTableSorting[];\n filters?: PTableRecordFilter[];\n };\n }\n | {\n version: 2;\n stateCache: {\n sourceId: string;\n gridState: {\n columnOrder?: {\n orderedColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sort?: {\n sortModel: {\n colId: CanonicalizedJson<PTableColumnSpec>;\n sort: \"asc\" | \"desc\";\n }[];\n };\n columnVisibility?: {\n hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n };\n sheetsState: PlDataTableSheetState[];\n }[];\n pTableParams: {\n hiddenColIds: PObjectId[] | null;\n filters: PTableRecordFilter[];\n sorting: PTableSorting[];\n };\n }\n | {\n version: 3;\n stateCache: {\n sourceId: string;\n gridState: {\n columnOrder?: {\n orderedColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n sort?: {\n sortModel: {\n colId: CanonicalizedJson<PTableColumnSpec>;\n sort: \"asc\" | \"desc\";\n }[];\n };\n columnVisibility?: {\n hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];\n };\n };\n sheetsState: PlDataTableSheetState[];\n filtersState: PlDataTableFilterState[];\n }[];\n pTableParams: PTableParamsV2;\n }\n // Normalized state\n | PlDataTableStateV2Normalized;\n\nexport type PlDataTableStateV2CacheEntry = {\n /** DataSource identifier for state management */\n sourceId: string;\n /** Internal ag-grid state */\n gridState: PlDataTableGridStateCore;\n /** Sheets state */\n sheetsState: PlDataTableSheetState[];\n /** Filters state */\n filtersState: PlDataTableFilterState[];\n};\n\nexport type PTableParamsV2 =\n | {\n sourceId: null;\n hiddenColIds: null;\n partitionFilters: [];\n filters: [];\n sorting: [];\n }\n | {\n sourceId: string;\n hiddenColIds: PObjectId[] | null;\n partitionFilters: PTableRecordFilter[];\n filters: PTableRecordFilter[];\n sorting: PTableSorting[];\n };\n\nexport type PlDataTableStateV2Normalized = {\n /** Version for upgrades */\n version: 4;\n /** Internal states, LRU cache for 5 sourceId-s */\n stateCache: PlDataTableStateV2CacheEntry[];\n /** PTable params derived from the cache state for the current sourceId */\n pTableParams: PTableParamsV2;\n};\n\nexport function makeDefaultPTableParams(): PTableParamsV2 {\n return {\n sourceId: null,\n hiddenColIds: null,\n partitionFilters: [],\n filters: [],\n sorting: [],\n };\n}\n\n/** Create default PlDataTableStateV2 */\nexport function createPlDataTableStateV2(): PlDataTableStateV2Normalized {\n return {\n version: 4,\n stateCache: [],\n pTableParams: makeDefaultPTableParams(),\n };\n}\n\n/** Upgrade PlDataTableStateV2 to the latest version */\nexport function upgradePlDataTableStateV2(\n state: PlDataTableStateV2 | undefined,\n): PlDataTableStateV2Normalized {\n // Block just added, had no state, model started earlier than the UI\n if (!state) {\n return createPlDataTableStateV2();\n }\n // v1 -> v2\n if (!(\"version\" in state)) {\n // Non upgradeable as sourceId calculation algorithm has changed, resetting state to default\n state = createPlDataTableStateV2();\n }\n // v2 -> v3\n if (state.version === 2) {\n state = {\n version: 3,\n stateCache: state.stateCache.map((entry) => ({\n ...entry,\n filtersState: [],\n })),\n pTableParams: makeDefaultPTableParams(),\n };\n }\n // v3 -> v4\n if (state.version === 3) {\n // Non upgradeable as column ids calculation algorithm has changed, resetting state to default\n state = createPlDataTableStateV2();\n }\n return state;\n}\n\nexport type PlDataTableFilterState = {\n id: PTableColumnId;\n alphabetic: boolean;\n filter: null | {\n value: PlTableFilter;\n disabled: boolean;\n };\n};\n\n/** PlTableFilters filter entry */\nexport type PlTableFilterIsNotNA = {\n /** Predicate type */\n type: \"isNotNA\";\n};\n\n/** PlTableFilters filter entry */\nexport type PlTableFilterIsNA = {\n /** Predicate type */\n type: \"isNA\";\n};\n\n/** PlTableFilters filter entries applicable to both string and number values */\nexport type PlTableFilterCommon = PlTableFilterIsNotNA | PlTableFilterIsNA;\n\n/** PlTableFilters numeric filter entry */\nexport type PlTableFilterNumberEquals = {\n /** Predicate type */\n type: \"number_equals\";\n /** Reference value */\n reference: number;\n};\n\n/** PlTableFilters numeric filter entry */\nexport type PlTableFilterNumberNotEquals = {\n /** Predicate type */\n type: \"number_notEquals\";\n /** Reference value */\n reference: number;\n};\n\n/** PlTableFilters numeric filter entry */\nexport type PlTableFilterNumberGreaterThan = {\n /** Predicate type */\n type: \"number_greaterThan\";\n /** Reference value */\n reference: number;\n};\n\n/** PlTableFilters numeric filter entry */\nexport type PlTableFilterNumberGreaterThanOrEqualTo = {\n /** Predicate type */\n type: \"number_greaterThanOrEqualTo\";\n /** Reference value */\n reference: number;\n};\n\n/** PlTableFilters numeric filter entry */\nexport type PlTableFilterNumberLessThan = {\n /** Predicate type */\n type: \"number_lessThan\";\n /** Reference value */\n reference: number;\n};\n\n/** PlTableFilters numeric filter entry */\nexport type PlTableFilterNumberLessThanOrEqualTo = {\n /** Predicate type */\n type: \"number_lessThanOrEqualTo\";\n /** Reference value */\n reference: number;\n};\n\n/** PlTableFilters numeric filter entry */\nexport type PlTableFilterNumberBetween = {\n /** Predicate type */\n type: \"number_between\";\n /** Reference value for the lower bound */\n lowerBound: number;\n /** Defines whether values equal to lower bound reference value should be matched */\n includeLowerBound: boolean;\n /** Reference value for the upper bound */\n upperBound: number;\n /** Defines whether values equal to upper bound reference value should be matched */\n includeUpperBound: boolean;\n};\n\n/** All PlTableFilters numeric filter entries */\nexport type PlTableFilterNumber =\n | PlTableFilterCommon\n | PlTableFilterNumberEquals\n | PlTableFilterNumberNotEquals\n | PlTableFilterNumberGreaterThan\n | PlTableFilterNumberGreaterThanOrEqualTo\n | PlTableFilterNumberLessThan\n | PlTableFilterNumberLessThanOrEqualTo\n | PlTableFilterNumberBetween;\n/** All types of PlTableFilters numeric filter entries */\nexport type PlTableFilterNumberType = PlTableFilterNumber[\"type\"];\n\n/** PlTableFilters string filter entry */\nexport type PlTableFilterStringEquals = {\n /** Predicate type */\n type: \"string_equals\";\n /** Reference value */\n reference: string;\n};\n\n/** PlTableFilters string filter entry */\nexport type PlTableFilterStringNotEquals = {\n /** Predicate type */\n type: \"string_notEquals\";\n /** Reference value */\n reference: string;\n};\n\n/** PlTableFilters string filter entry */\nexport type PlTableFilterStringContains = {\n /** Predicate type */\n type: \"string_contains\";\n /** Reference value */\n reference: string;\n};\n\n/** PlTableFilters string filter entry */\nexport type PlTableFilterStringDoesNotContain = {\n /** Predicate type */\n type: \"string_doesNotContain\";\n /** Reference value */\n reference: string;\n};\n\n/** PlTableFilters string filter entry */\nexport type PlTableFilterStringMatches = {\n /** Predicate type */\n type: \"string_matches\";\n /** Reference value */\n reference: string;\n};\n\n/** PlTableFilters string filter entry */\nexport type PlTableFilterStringDoesNotMatch = {\n /** Predicate type */\n type: \"string_doesNotMatch\";\n /** Reference value */\n reference: string;\n};\n\n/** PlTableFilters string filter entry */\nexport type PlTableFilterStringContainsFuzzyMatch = {\n /** Predicate type */\n type: \"string_containsFuzzyMatch\";\n /** Reference value */\n reference: string;\n /**\n * Maximum acceptable edit distance between reference value and matched substring\n * @see https://en.wikipedia.org/wiki/Edit_distance\n */\n maxEdits: number;\n /**\n * When {@link substitutionsOnly} is set to false\n * Levenshtein distance is used as edit distance (substitutions and indels)\n * @see https://en.wikipedia.org/wiki/Levenshtein_distance\n * When {@link substitutionsOnly} is set to true\n * Hamming distance is used as edit distance (substitutions only)\n * @see https://en.wikipedia.org/wiki/Hamming_distance\n */\n substitutionsOnly: boolean;\n /**\n * Single character in {@link reference} that will labelColumn any\n * single character in searched text.\n */\n wildcard?: string;\n};\n\n/** All PlTableFilters string filter entries */\nexport type PlTableFilterString =\n | PlTableFilterCommon\n | PlTableFilterStringEquals\n | PlTableFilterStringNotEquals\n | PlTableFilterStringContains\n | PlTableFilterStringDoesNotContain\n | PlTableFilterStringMatches\n | PlTableFilterStringDoesNotMatch\n | PlTableFilterStringContainsFuzzyMatch;\n/** All types of PlTableFilters string filter entries */\nexport type PlTableFilterStringType = PlTableFilterString[\"type\"];\n\n/** All PlTableFilters filter entries */\nexport type PlTableFilter = PlTableFilterNumber | PlTableFilterString;\n/** All types of PlTableFilters filter entries */\nexport type PlTableFilterType = PlTableFilter[\"type\"];\n\nexport type CreatePlDataTableOps = {\n /** Filters for columns and non-partitioned axes */\n filters?: PTableRecordFilter[];\n\n /** Sorting to columns hidden from user */\n sorting?: PTableSorting[];\n\n /**\n * Selects columns for which will be inner-joined to the table.\n *\n * Default behaviour: all columns are considered to be core\n */\n coreColumnPredicate?: (spec: PColumnIdAndSpec) => boolean;\n\n /**\n * Determines how core columns should be joined together:\n * inner - so user will only see records present in all core columns\n * full - so user will only see records present in any of the core columns\n *\n * All non-core columns will be left joined to the table produced by the core\n * columns, in other words records form the pool of non-core columns will only\n * make their way into the final table if core table contains corresponding key.\n *\n * Default: 'full'\n */\n coreJoinType?: \"inner\" | \"full\";\n};\n\n/** Get all label columns from the result pool */\nexport function getAllLabelColumns(\n resultPool: AxisLabelProvider & ColumnProvider,\n): PColumn<PColumnDataUniversal>[] | undefined {\n return new PColumnCollection()\n .addAxisLabelProvider(resultPool)\n .addColumnProvider(resultPool)\n .getColumns(\n {\n name: PColumnName.Label,\n axes: [{}], // exactly one axis\n },\n { dontWaitAllData: true, overrideLabelAnnotation: false },\n );\n}\n\n/** Get label columns matching the provided columns from the result pool */\nexport function getMatchingLabelColumns(\n columns: PColumnIdAndSpec[],\n allLabelColumns: PColumn<PColumnDataUniversal>[],\n): PColumn<PColumnDataUniversal>[] {\n // split input columns into label and value columns\n const inputLabelColumns: typeof columns = [];\n const inputValueColumns: typeof columns = [];\n for (const column of columns) {\n if (isLabelColumn(column.spec)) {\n inputLabelColumns.push(column);\n } else {\n inputValueColumns.push(column);\n }\n }\n\n // collect distinct axes of value columns\n const unlabeledAxes: AxisId[] = [];\n for (const column of inputValueColumns) {\n for (const axis of column.spec.axesSpec) {\n const axisId = getAxisId(axis);\n if (!unlabeledAxes.some((id) => matchAxisId(id, axisId))) {\n unlabeledAxes.push(axisId);\n }\n }\n }\n\n // remove axes matched by input label columns\n for (const labelColumn of inputLabelColumns) {\n const labelAxisId = getAxisId(labelColumn.spec.axesSpec[0]);\n const labelMatch = unlabeledAxes.findIndex((axisId) => matchAxisId(axisId, labelAxisId));\n if (labelMatch !== -1) {\n unlabeledAxes.splice(labelMatch, 1);\n }\n }\n\n // warning: changing this id will break backward compatibility\n const colId = (id: PObjectId, domain?: Record<string, string>): PObjectId => {\n let wid = id.toString();\n if (domain) {\n for (const k in domain) {\n wid += k;\n wid += domain[k];\n }\n }\n return wid as PObjectId;\n };\n\n // search label columns for unmatched axes\n const labelColumns: typeof allLabelColumns = [];\n for (const labelColumn of allLabelColumns) {\n const labelAxis = labelColumn.spec.axesSpec[0];\n const labelAxisId = getAxisId(labelAxis);\n const labelMatch = unlabeledAxes.findIndex((axisId) => matchAxisId(axisId, labelAxisId));\n if (labelMatch !== -1) {\n const axisId = unlabeledAxes[labelMatch];\n const dataDomainLen = Object.keys(axisId.domain ?? {}).length;\n const labelDomainLen = Object.keys(labelAxis.domain ?? {}).length;\n if (dataDomainLen > labelDomainLen) {\n labelColumns.push({\n id: colId(labelColumn.id, axisId.domain),\n spec: {\n ...labelColumn.spec,\n axesSpec: [{ ...axisId, annotations: labelAxis.annotations }],\n },\n data: labelColumn.data,\n });\n } else {\n labelColumns.push(labelColumn);\n }\n unlabeledAxes.splice(labelMatch, 1);\n }\n }\n return labelColumns;\n}\n\nfunction createPTableDef(params: {\n columns: PColumn<PColumnDataUniversal>[];\n labelColumns: PColumn<PColumnDataUniversal>[];\n coreJoinType: \"inner\" | \"full\";\n partitionFilters: PTableRecordSingleValueFilterV2[];\n filters: PTableRecordSingleValueFilterV2[];\n sorting: PTableSorting[];\n coreColumnPredicate?: (spec: PColumnIdAndSpec) => boolean;\n}): PTableDef<PColumn<TreeNodeAccessor | PColumnValues | DataInfo<TreeNodeAccessor>>> {\n let coreColumns = params.columns;\n const secondaryColumns: typeof params.columns = [];\n\n if (params.coreColumnPredicate) {\n coreColumns = [];\n for (const c of params.columns)\n if (params.coreColumnPredicate(getColumnIdAndSpec(c))) coreColumns.push(c);\n else secondaryColumns.push(c);\n }\n\n secondaryColumns.push(...params.labelColumns);\n\n return {\n src: {\n type: \"outer\",\n primary: {\n type: params.coreJoinType,\n entries: coreColumns.map((c) => ({ type: \"column\", column: c })),\n },\n secondary: secondaryColumns.map((c) => ({ type: \"column\", column: c })),\n },\n partitionFilters: params.partitionFilters,\n filters: params.filters,\n sorting: params.sorting,\n };\n}\n\n/** PlAgDataTable model */\nexport type PlDataTableModel = {\n /** DataSource identifier for state management */\n sourceId: string | null;\n /** p-table including all columns, used to show the full specification of the table */\n fullTableHandle: PTableHandle;\n /** p-table including only visible columns, used to get the data */\n visibleTableHandle: PTableHandle;\n};\n\n/** Check if column should be omitted from the table */\nexport function isColumnHidden(spec: { annotations?: Annotation }): boolean {\n return readAnnotation(spec, Annotation.Table.Visibility) === \"hidden\";\n}\n\n/** Check if column is hidden by default */\nexport function isColumnOptional(spec: { annotations?: Annotation }): boolean {\n return readAnnotation(spec, Annotation.Table.Visibility) === \"optional\";\n}\n\n/**\n * Create p-table spec and handle given ui table state\n *\n * @param ctx context\n * @param columns column list\n * @param tableState table ui state\n * @returns PlAgDataTableV2 table source\n */\nexport function createPlDataTableV2<A, U>(\n ctx: RenderCtxBase<A, U>,\n columns: PColumn<PColumnDataUniversal>[],\n tableState: PlDataTableStateV2 | undefined,\n ops?: CreatePlDataTableOps,\n): PlDataTableModel | undefined {\n if (columns.length === 0) return undefined;\n\n const tableStateNormalized = upgradePlDataTableStateV2(tableState);\n\n const allLabelColumns = getAllLabelColumns(ctx.resultPool);\n if (!allLabelColumns) return undefined;\n\n let fullLabelColumns = getMatchingLabelColumns(columns.map(getColumnIdAndSpec), allLabelColumns);\n fullLabelColumns = deriveLabels(fullLabelColumns, identity, { includeNativeLabel: true }).map(\n (v) => {\n return {\n ...v.value,\n spec: {\n ...v.value.spec,\n annotations: {\n ...v.value.spec.annotations,\n [Annotation.Label]: v.label,\n },\n },\n };\n },\n );\n\n const fullColumns = [...columns, ...fullLabelColumns];\n\n const fullColumnsAxes = uniqueBy(\n fullColumns.flatMap((c) => c.spec.axesSpec.map((a) => getAxisId(a))),\n (a) => canonicalizeJson<AxisId>(a),\n );\n const fullColumnsIds: PTableColumnId[] = [\n ...fullColumnsAxes.map((a) => ({ type: \"axis\", id: a }) satisfies PTableColumnIdAxis),\n ...fullColumns.map((c) => ({ type: \"column\", id: c.id }) satisfies PTableColumnIdColumn),\n ];\n const fullColumnsIdsSet = new Set(fullColumnsIds.map((c) => canonicalizeJson<PTableColumnId>(c)));\n const isValidColumnId = (id: PTableColumnId): boolean =>\n fullColumnsIdsSet.has(canonicalizeJson<PTableColumnId>(id));\n\n const coreJoinType = ops?.coreJoinType ?? \"full\";\n const partitionFilters: PTableRecordSingleValueFilterV2[] =\n tableStateNormalized.pTableParams.partitionFilters.filter((f) => {\n const valid = isValidColumnId(f.column);\n if (!valid)\n ctx.logWarn(\n `Partition filter ${JSON.stringify(f)} does not match provided columns, skipping`,\n );\n return valid;\n });\n const filters: PTableRecordSingleValueFilterV2[] = uniqueBy(\n [...tableStateNormalized.pTableParams.filters, ...(ops?.filters ?? [])],\n (f) => canonicalizeJson<PTableColumnId>(f.column),\n ).filter((f) => {\n const valid = isValidColumnId(f.column);\n if (!valid)\n ctx.logWarn(`Filter ${JSON.stringify(f)} does not match provided columns, skipping`);\n return valid;\n });\n const sorting: PTableSorting[] = uniqueBy(\n [...tableStateNormalized.pTableParams.sorting, ...(ops?.sorting ?? [])],\n (s) => canonicalizeJson<PTableColumnId>(s.column),\n ).filter((s) => {\n const valid = isValidColumnId(s.column);\n if (!valid)\n ctx.logWarn(`Sorting ${JSON.stringify(s)} does not match provided columns, skipping`);\n return valid;\n });\n\n const fullDef = createPTableDef({\n columns,\n labelColumns: fullLabelColumns,\n coreJoinType,\n partitionFilters,\n filters,\n sorting,\n coreColumnPredicate: ops?.coreColumnPredicate,\n });\n const fullHandle = ctx.createPTable(fullDef);\n if (!fullHandle) return undefined;\n\n const hiddenColumns = new Set<PObjectId>(\n ((): PObjectId[] => {\n // Inner join works as a filter - all columns must be present\n if (coreJoinType === \"inner\") return [];\n\n const hiddenColIds = tableStateNormalized.pTableParams.hiddenColIds;\n if (hiddenColIds) return hiddenColIds;\n\n return columns.filter((c) => isColumnOptional(c.spec)).map((c) => c.id);\n })(),\n );\n\n // Preserve linker columns\n columns.filter((c) => isLinkerColumn(c.spec)).forEach((c) => hiddenColumns.delete(c.id));\n\n // Preserve core columns as they change the shape of join.\n const coreColumnPredicate = ops?.coreColumnPredicate;\n if (coreColumnPredicate) {\n const coreColumns = columns.flatMap((c) =>\n coreColumnPredicate(getColumnIdAndSpec(c)) ? [c.id] : [],\n );\n coreColumns.forEach((c) => hiddenColumns.delete(c));\n }\n\n // Filters decrease the number of result rows, sorting changes the order of result rows\n [\n ...partitionFilters.map((f) => f.column),\n ...filters.map((f) => f.column),\n ...sorting.map((s) => s.column),\n ]\n .filter((c): c is PTableColumnIdColumn => c.type === \"column\")\n .forEach((c) => hiddenColumns.delete(c.id));\n\n const visibleColumns = columns.filter((c) => !hiddenColumns.has(c.id));\n const visibleLabelColumns = getMatchingLabelColumns(\n visibleColumns.map(getColumnIdAndSpec),\n allLabelColumns,\n );\n\n // if at least one column is not yet computed, we can't show the table\n if (!allPColumnsReady([...visibleColumns, ...visibleLabelColumns])) return undefined;\n\n const visibleDef = createPTableDef({\n columns: visibleColumns,\n labelColumns: visibleLabelColumns,\n coreJoinType,\n partitionFilters,\n filters,\n sorting,\n coreColumnPredicate,\n });\n const visibleHandle = ctx.createPTable(visibleDef);\n if (!visibleHandle) return undefined;\n\n return {\n sourceId: tableStateNormalized.pTableParams.sourceId,\n fullTableHandle: fullHandle,\n visibleTableHandle: visibleHandle,\n } satisfies PlDataTableModel;\n}\n\n/** Create sheet entries for PlDataTable */\nexport function createPlDataTableSheet<A, U>(\n ctx: RenderCtxBase<A, U>,\n axis: AxisSpec,\n values: (string | number)[],\n): PlDataTableSheet {\n const labels = ctx.resultPool.findLabels(axis);\n return {\n axis,\n options: values.map((v) => ({\n value: v,\n label: labels?.[v] ?? v.toString(),\n })),\n defaultValue: values[0],\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var plModelCommon = require('@milaboratories/pl-model-common');
|
|
4
4
|
|
|
5
|
-
function createRowSelectionColumn({ selection, columnId = plModelCommon.uniquePlId(), label =
|
|
5
|
+
function createRowSelectionColumn({ selection, columnId = plModelCommon.uniquePlId(), label = "Selection marker", domain, }) {
|
|
6
6
|
if (!selection?.axesSpec.length) {
|
|
7
7
|
return;
|
|
8
8
|
}
|
|
@@ -15,7 +15,7 @@ function createRowSelectionColumn({ selection, columnId = plModelCommon.uniquePl
|
|
|
15
15
|
return {
|
|
16
16
|
id: columnId,
|
|
17
17
|
spec: {
|
|
18
|
-
kind:
|
|
18
|
+
kind: "PColumn",
|
|
19
19
|
valueType: plModelCommon.ValueType.Int,
|
|
20
20
|
name: plModelCommon.PColumnName.Table.RowSelection,
|
|
21
21
|
axesSpec: selection.axesSpec,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlMultiSequenceAlignment.cjs","sources":["../../src/components/PlMultiSequenceAlignment.ts"],"sourcesContent":["import type {\n PColumn,\n PColumnIdAndSpec,\n PColumnKey,\n PColumnValues,\n PObjectId,\n PTableColumnId,\n} from
|
|
1
|
+
{"version":3,"file":"PlMultiSequenceAlignment.cjs","sources":["../../src/components/PlMultiSequenceAlignment.ts"],"sourcesContent":["import type {\n PColumn,\n PColumnIdAndSpec,\n PColumnKey,\n PColumnValues,\n PObjectId,\n PTableColumnId,\n} from \"@milaboratories/pl-model-common\";\nimport {\n Annotation,\n isPTableAbsent,\n PColumnName,\n stringifyJson,\n uniquePlId,\n ValueType,\n} from \"@milaboratories/pl-model-common\";\nimport type { PlSelectionModel } from \"./PlSelectionModel\";\n\nexport type PColumnPredicate = (column: PColumnIdAndSpec) => boolean | { default: boolean };\n\nexport interface PlMultiSequenceAlignmentSettings {\n sequenceColumnIds?: PObjectId[];\n labelColumnIds?: PTableColumnId[];\n colorScheme: PlMultiSequenceAlignmentColorSchemeOption;\n widgets: PlMultiSequenceAlignmentWidget[];\n alignmentParams: {\n gpo: number;\n gpe: number;\n tgpe: number;\n };\n}\n\nexport type PlMultiSequenceAlignmentWidget = \"consensus\" | \"seqLogo\" | \"tree\" | \"legend\";\n\nexport interface PlMultiSequenceAlignmentModel extends Partial<PlMultiSequenceAlignmentSettings> {\n version?: number;\n}\n\nexport type PlMultiSequenceAlignmentColorSchemeOption =\n | { type: \"no-color\" }\n | { type: \"chemical-properties\" }\n | { type: \"markup\"; columnIds: PObjectId[] };\n\nexport function createRowSelectionColumn({\n selection,\n columnId = uniquePlId() as string as PObjectId,\n label = \"Selection marker\",\n domain,\n}: {\n selection: PlSelectionModel | undefined;\n columnId?: PObjectId;\n label?: string;\n domain?: Record<string, string>;\n}): PColumn<PColumnValues> | undefined {\n if (!selection?.axesSpec.length) {\n return;\n }\n const data: PColumnValues = selection.selectedKeys\n .filter((r): r is PColumnKey => r.every((v) => !isPTableAbsent(v)))\n .map((r) => ({ key: r, val: 1 }));\n if (!data.length) {\n return;\n }\n return {\n id: columnId,\n spec: {\n kind: \"PColumn\",\n valueType: ValueType.Int,\n name: PColumnName.Table.RowSelection,\n axesSpec: selection.axesSpec,\n ...(domain && Object.keys(domain).length && { domain }),\n annotations: {\n [Annotation.Label]: label,\n [Annotation.DiscreteValues]: stringifyJson([1]),\n } satisfies Annotation,\n },\n data,\n };\n}\n"],"names":["uniquePlId","isPTableAbsent","ValueType","PColumnName","Annotation","stringifyJson"],"mappings":";;;;SA2CgB,wBAAwB,CAAC,EACvC,SAAS,EACT,QAAQ,GAAGA,wBAAU,EAAyB,EAC9C,KAAK,GAAG,kBAAkB,EAC1B,MAAM,GAMP,EAAA;AACC,IAAA,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,EAAE;QAC/B;IACF;AACA,IAAA,MAAM,IAAI,GAAkB,SAAS,CAAC;SACnC,MAAM,CAAC,CAAC,CAAC,KAAsB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAACC,4BAAc,CAAC,CAAC,CAAC,CAAC;AACjE,SAAA,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACnC,IAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QAChB;IACF;IACA,OAAO;AACL,QAAA,EAAE,EAAE,QAAQ;AACZ,QAAA,IAAI,EAAE;AACJ,YAAA,IAAI,EAAE,SAAS;YACf,SAAS,EAAEC,uBAAS,CAAC,GAAG;AACxB,YAAA,IAAI,EAAEC,yBAAW,CAAC,KAAK,CAAC,YAAY;YACpC,QAAQ,EAAE,SAAS,CAAC,QAAQ;AAC5B,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC;AACvD,YAAA,WAAW,EAAE;AACX,gBAAA,CAACC,wBAAU,CAAC,KAAK,GAAG,KAAK;gBACzB,CAACA,wBAAU,CAAC,cAAc,GAAGC,2BAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,aAAA;AACvB,SAAA;QACD,IAAI;KACL;AACH;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { PColumn, PColumnIdAndSpec, PColumnValues, PObjectId, PTableColumnId } from
|
|
2
|
-
import type { PlSelectionModel } from
|
|
1
|
+
import type { PColumn, PColumnIdAndSpec, PColumnValues, PObjectId, PTableColumnId } from "@milaboratories/pl-model-common";
|
|
2
|
+
import type { PlSelectionModel } from "./PlSelectionModel";
|
|
3
3
|
export type PColumnPredicate = (column: PColumnIdAndSpec) => boolean | {
|
|
4
4
|
default: boolean;
|
|
5
5
|
};
|
|
@@ -14,16 +14,16 @@ export interface PlMultiSequenceAlignmentSettings {
|
|
|
14
14
|
tgpe: number;
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
|
-
export type PlMultiSequenceAlignmentWidget =
|
|
17
|
+
export type PlMultiSequenceAlignmentWidget = "consensus" | "seqLogo" | "tree" | "legend";
|
|
18
18
|
export interface PlMultiSequenceAlignmentModel extends Partial<PlMultiSequenceAlignmentSettings> {
|
|
19
19
|
version?: number;
|
|
20
20
|
}
|
|
21
21
|
export type PlMultiSequenceAlignmentColorSchemeOption = {
|
|
22
|
-
type:
|
|
22
|
+
type: "no-color";
|
|
23
23
|
} | {
|
|
24
|
-
type:
|
|
24
|
+
type: "chemical-properties";
|
|
25
25
|
} | {
|
|
26
|
-
type:
|
|
26
|
+
type: "markup";
|
|
27
27
|
columnIds: PObjectId[];
|
|
28
28
|
};
|
|
29
29
|
export declare function createRowSelectionColumn({ selection, columnId, label, domain, }: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlMultiSequenceAlignment.d.ts","sourceRoot":"","sources":["../../src/components/PlMultiSequenceAlignment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,gBAAgB,EAEhB,aAAa,EACb,SAAS,EACT,cAAc,EACf,MAAM,iCAAiC,CAAC;AASzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"PlMultiSequenceAlignment.d.ts","sourceRoot":"","sources":["../../src/components/PlMultiSequenceAlignment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,gBAAgB,EAEhB,aAAa,EACb,SAAS,EACT,cAAc,EACf,MAAM,iCAAiC,CAAC;AASzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAE5F,MAAM,WAAW,gCAAgC;IAC/C,iBAAiB,CAAC,EAAE,SAAS,EAAE,CAAC;IAChC,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC;IAClC,WAAW,EAAE,yCAAyC,CAAC;IACvD,OAAO,EAAE,8BAA8B,EAAE,CAAC;IAC1C,eAAe,EAAE;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,MAAM,8BAA8B,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEzF,MAAM,WAAW,6BAA8B,SAAQ,OAAO,CAAC,gCAAgC,CAAC;IAC9F,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,yCAAyC,GACjD;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,qBAAqB,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,SAAS,EAAE,CAAA;CAAE,CAAC;AAE/C,wBAAgB,wBAAwB,CAAC,EACvC,SAAS,EACT,QAA8C,EAC9C,KAA0B,EAC1B,MAAM,GACP,EAAE;IACD,SAAS,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,SAAS,CAyBrC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isPTableAbsent, stringifyJson, PColumnName, ValueType, uniquePlId, Annotation } from '@milaboratories/pl-model-common';
|
|
2
2
|
|
|
3
|
-
function createRowSelectionColumn({ selection, columnId = uniquePlId(), label =
|
|
3
|
+
function createRowSelectionColumn({ selection, columnId = uniquePlId(), label = "Selection marker", domain, }) {
|
|
4
4
|
if (!selection?.axesSpec.length) {
|
|
5
5
|
return;
|
|
6
6
|
}
|
|
@@ -13,7 +13,7 @@ function createRowSelectionColumn({ selection, columnId = uniquePlId(), label =
|
|
|
13
13
|
return {
|
|
14
14
|
id: columnId,
|
|
15
15
|
spec: {
|
|
16
|
-
kind:
|
|
16
|
+
kind: "PColumn",
|
|
17
17
|
valueType: ValueType.Int,
|
|
18
18
|
name: PColumnName.Table.RowSelection,
|
|
19
19
|
axesSpec: selection.axesSpec,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlMultiSequenceAlignment.js","sources":["../../src/components/PlMultiSequenceAlignment.ts"],"sourcesContent":["import type {\n PColumn,\n PColumnIdAndSpec,\n PColumnKey,\n PColumnValues,\n PObjectId,\n PTableColumnId,\n} from
|
|
1
|
+
{"version":3,"file":"PlMultiSequenceAlignment.js","sources":["../../src/components/PlMultiSequenceAlignment.ts"],"sourcesContent":["import type {\n PColumn,\n PColumnIdAndSpec,\n PColumnKey,\n PColumnValues,\n PObjectId,\n PTableColumnId,\n} from \"@milaboratories/pl-model-common\";\nimport {\n Annotation,\n isPTableAbsent,\n PColumnName,\n stringifyJson,\n uniquePlId,\n ValueType,\n} from \"@milaboratories/pl-model-common\";\nimport type { PlSelectionModel } from \"./PlSelectionModel\";\n\nexport type PColumnPredicate = (column: PColumnIdAndSpec) => boolean | { default: boolean };\n\nexport interface PlMultiSequenceAlignmentSettings {\n sequenceColumnIds?: PObjectId[];\n labelColumnIds?: PTableColumnId[];\n colorScheme: PlMultiSequenceAlignmentColorSchemeOption;\n widgets: PlMultiSequenceAlignmentWidget[];\n alignmentParams: {\n gpo: number;\n gpe: number;\n tgpe: number;\n };\n}\n\nexport type PlMultiSequenceAlignmentWidget = \"consensus\" | \"seqLogo\" | \"tree\" | \"legend\";\n\nexport interface PlMultiSequenceAlignmentModel extends Partial<PlMultiSequenceAlignmentSettings> {\n version?: number;\n}\n\nexport type PlMultiSequenceAlignmentColorSchemeOption =\n | { type: \"no-color\" }\n | { type: \"chemical-properties\" }\n | { type: \"markup\"; columnIds: PObjectId[] };\n\nexport function createRowSelectionColumn({\n selection,\n columnId = uniquePlId() as string as PObjectId,\n label = \"Selection marker\",\n domain,\n}: {\n selection: PlSelectionModel | undefined;\n columnId?: PObjectId;\n label?: string;\n domain?: Record<string, string>;\n}): PColumn<PColumnValues> | undefined {\n if (!selection?.axesSpec.length) {\n return;\n }\n const data: PColumnValues = selection.selectedKeys\n .filter((r): r is PColumnKey => r.every((v) => !isPTableAbsent(v)))\n .map((r) => ({ key: r, val: 1 }));\n if (!data.length) {\n return;\n }\n return {\n id: columnId,\n spec: {\n kind: \"PColumn\",\n valueType: ValueType.Int,\n name: PColumnName.Table.RowSelection,\n axesSpec: selection.axesSpec,\n ...(domain && Object.keys(domain).length && { domain }),\n annotations: {\n [Annotation.Label]: label,\n [Annotation.DiscreteValues]: stringifyJson([1]),\n } satisfies Annotation,\n },\n data,\n };\n}\n"],"names":[],"mappings":";;SA2CgB,wBAAwB,CAAC,EACvC,SAAS,EACT,QAAQ,GAAG,UAAU,EAAyB,EAC9C,KAAK,GAAG,kBAAkB,EAC1B,MAAM,GAMP,EAAA;AACC,IAAA,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,EAAE;QAC/B;IACF;AACA,IAAA,MAAM,IAAI,GAAkB,SAAS,CAAC;SACnC,MAAM,CAAC,CAAC,CAAC,KAAsB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AACjE,SAAA,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACnC,IAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QAChB;IACF;IACA,OAAO;AACL,QAAA,EAAE,EAAE,QAAQ;AACZ,QAAA,IAAI,EAAE;AACJ,YAAA,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,SAAS,CAAC,GAAG;AACxB,YAAA,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,YAAY;YACpC,QAAQ,EAAE,SAAS,CAAC,QAAQ;AAC5B,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC;AACvD,YAAA,WAAW,EAAE;AACX,gBAAA,CAAC,UAAU,CAAC,KAAK,GAAG,KAAK;gBACzB,CAAC,UAAU,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,aAAA;AACvB,SAAA;QACD,IAAI;KACL;AACH;;;;"}
|