@platforma-sdk/model 1.53.14 → 1.54.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/dist/annotations/converter.cjs +8 -32
  2. package/dist/annotations/converter.cjs.map +1 -1
  3. package/dist/annotations/converter.d.ts.map +1 -1
  4. package/dist/annotations/converter.js +7 -31
  5. package/dist/annotations/converter.js.map +1 -1
  6. package/dist/block_model.cjs +1 -0
  7. package/dist/block_model.cjs.map +1 -1
  8. package/dist/block_model.d.ts.map +1 -1
  9. package/dist/block_model.js +1 -0
  10. package/dist/block_model.js.map +1 -1
  11. package/dist/builder.cjs +1 -0
  12. package/dist/builder.cjs.map +1 -1
  13. package/dist/builder.d.ts.map +1 -1
  14. package/dist/builder.js +1 -0
  15. package/dist/builder.js.map +1 -1
  16. package/dist/components/PlDataTable/index.d.ts +5 -0
  17. package/dist/components/PlDataTable/index.d.ts.map +1 -0
  18. package/dist/components/PlDataTable/labels.cjs +91 -0
  19. package/dist/components/PlDataTable/labels.cjs.map +1 -0
  20. package/dist/components/PlDataTable/labels.d.ts +7 -0
  21. package/dist/components/PlDataTable/labels.d.ts.map +1 -0
  22. package/dist/components/PlDataTable/labels.js +88 -0
  23. package/dist/components/PlDataTable/labels.js.map +1 -0
  24. package/dist/components/PlDataTable/state-migration.cjs +162 -0
  25. package/dist/components/PlDataTable/state-migration.cjs.map +1 -0
  26. package/dist/components/PlDataTable/state-migration.d.ts +94 -0
  27. package/dist/components/PlDataTable/state-migration.d.ts.map +1 -0
  28. package/dist/components/PlDataTable/state-migration.js +158 -0
  29. package/dist/components/PlDataTable/state-migration.js.map +1 -0
  30. package/dist/components/PlDataTable/table.cjs +188 -0
  31. package/dist/components/PlDataTable/table.cjs.map +1 -0
  32. package/dist/components/PlDataTable/table.d.ts +26 -0
  33. package/dist/components/PlDataTable/table.d.ts.map +1 -0
  34. package/dist/components/PlDataTable/table.js +184 -0
  35. package/dist/components/PlDataTable/table.js.map +1 -0
  36. package/dist/components/PlDataTable/v4.d.ts +157 -0
  37. package/dist/components/PlDataTable/v4.d.ts.map +1 -0
  38. package/dist/components/PlDataTable/v5.d.ts +113 -0
  39. package/dist/components/PlDataTable/v5.d.ts.map +1 -0
  40. package/dist/filters/converters/filterEmpty.cjs +49 -0
  41. package/dist/filters/converters/filterEmpty.cjs.map +1 -0
  42. package/dist/filters/converters/filterEmpty.d.ts +4 -0
  43. package/dist/filters/converters/filterEmpty.d.ts.map +1 -0
  44. package/dist/filters/converters/filterEmpty.js +46 -0
  45. package/dist/filters/converters/filterEmpty.js.map +1 -0
  46. package/dist/filters/converters/filterToQuery.cjs +244 -0
  47. package/dist/filters/converters/filterToQuery.cjs.map +1 -0
  48. package/dist/filters/converters/filterToQuery.d.ts +4 -0
  49. package/dist/filters/converters/filterToQuery.d.ts.map +1 -0
  50. package/dist/filters/converters/filterToQuery.js +242 -0
  51. package/dist/filters/converters/filterToQuery.js.map +1 -0
  52. package/dist/filters/{converter.cjs → converters/filterUiToExpressionImpl.cjs} +3 -2
  53. package/dist/filters/converters/filterUiToExpressionImpl.cjs.map +1 -0
  54. package/dist/filters/{converter.d.ts → converters/filterUiToExpressionImpl.d.ts} +2 -2
  55. package/dist/filters/converters/filterUiToExpressionImpl.d.ts.map +1 -0
  56. package/dist/filters/{converter.js → converters/filterUiToExpressionImpl.js} +3 -2
  57. package/dist/filters/converters/filterUiToExpressionImpl.js.map +1 -0
  58. package/dist/filters/converters/index.d.ts +3 -0
  59. package/dist/filters/converters/index.d.ts.map +1 -0
  60. package/dist/filters/distill.cjs +46 -0
  61. package/dist/filters/distill.cjs.map +1 -0
  62. package/dist/filters/distill.d.ts +6 -0
  63. package/dist/filters/distill.d.ts.map +1 -0
  64. package/dist/filters/distill.js +44 -0
  65. package/dist/filters/distill.js.map +1 -0
  66. package/dist/filters/index.d.ts +2 -1
  67. package/dist/filters/index.d.ts.map +1 -1
  68. package/dist/filters/types.d.ts +1 -117
  69. package/dist/filters/types.d.ts.map +1 -1
  70. package/dist/index.cjs +17 -15
  71. package/dist/index.cjs.map +1 -1
  72. package/dist/index.js +5 -2
  73. package/dist/index.js.map +1 -1
  74. package/dist/package.json.cjs +1 -1
  75. package/dist/package.json.js +1 -1
  76. package/dist/pframe_utils/columns.cjs +2 -0
  77. package/dist/pframe_utils/columns.cjs.map +1 -1
  78. package/dist/pframe_utils/columns.js +2 -0
  79. package/dist/pframe_utils/columns.js.map +1 -1
  80. package/dist/pframe_utils/index.cjs +2 -0
  81. package/dist/pframe_utils/index.cjs.map +1 -1
  82. package/dist/pframe_utils/index.js +2 -0
  83. package/dist/pframe_utils/index.js.map +1 -1
  84. package/dist/pframe_utils/querySpec.d.ts +2 -0
  85. package/dist/pframe_utils/querySpec.d.ts.map +1 -0
  86. package/dist/render/api.cjs +7 -0
  87. package/dist/render/api.cjs.map +1 -1
  88. package/dist/render/api.d.ts +3 -2
  89. package/dist/render/api.d.ts.map +1 -1
  90. package/dist/render/api.js +8 -1
  91. package/dist/render/api.js.map +1 -1
  92. package/dist/render/future.d.ts +1 -1
  93. package/dist/render/index.d.ts +2 -1
  94. package/dist/render/index.d.ts.map +1 -1
  95. package/dist/render/internal.cjs.map +1 -1
  96. package/dist/render/internal.d.ts +4 -1
  97. package/dist/render/internal.d.ts.map +1 -1
  98. package/dist/render/internal.js.map +1 -1
  99. package/dist/render/util/column_collection.cjs.map +1 -1
  100. package/dist/render/util/column_collection.d.ts +1 -1
  101. package/dist/render/util/column_collection.d.ts.map +1 -1
  102. package/dist/render/util/column_collection.js.map +1 -1
  103. package/dist/render/util/pcolumn_data.cjs.map +1 -1
  104. package/dist/render/util/pcolumn_data.d.ts +1 -1
  105. package/dist/render/util/pcolumn_data.d.ts.map +1 -1
  106. package/dist/render/util/pcolumn_data.js.map +1 -1
  107. package/package.json +9 -8
  108. package/src/annotations/converter.ts +12 -40
  109. package/src/block_model.ts +1 -0
  110. package/src/builder.ts +1 -0
  111. package/src/components/PlDataTable/index.ts +22 -0
  112. package/src/components/PlDataTable/labels.ts +101 -0
  113. package/src/components/PlDataTable/state-migration.ts +285 -0
  114. package/src/components/PlDataTable/table.ts +279 -0
  115. package/src/components/PlDataTable/v4.ts +193 -0
  116. package/src/components/PlDataTable/v5.ts +140 -0
  117. package/src/filters/converters/filterEmpty.test.ts +125 -0
  118. package/src/filters/converters/filterEmpty.ts +57 -0
  119. package/src/filters/converters/filterToQuery.test.ts +417 -0
  120. package/src/filters/converters/filterToQuery.ts +258 -0
  121. package/src/filters/{converter.test.ts → converters/filterUiToExpressionImpl.test.ts} +2 -2
  122. package/src/filters/{converter.ts → converters/filterUiToExpressionImpl.ts} +3 -2
  123. package/src/filters/converters/index.ts +2 -0
  124. package/src/filters/distill.ts +59 -0
  125. package/src/filters/index.ts +2 -1
  126. package/src/filters/types.ts +8 -48
  127. package/src/pframe_utils/querySpec.ts +1 -0
  128. package/src/render/api.ts +13 -6
  129. package/src/render/index.ts +2 -1
  130. package/src/render/internal.ts +11 -0
  131. package/src/render/util/column_collection.ts +1 -1
  132. package/src/render/util/pcolumn_data.ts +1 -1
  133. package/dist/components/PlDataTable.cjs +0 -307
  134. package/dist/components/PlDataTable.cjs.map +0 -1
  135. package/dist/components/PlDataTable.d.ts +0 -366
  136. package/dist/components/PlDataTable.d.ts.map +0 -1
  137. package/dist/components/PlDataTable.js +0 -297
  138. package/dist/components/PlDataTable.js.map +0 -1
  139. package/dist/filters/converter.cjs.map +0 -1
  140. package/dist/filters/converter.d.ts.map +0 -1
  141. package/dist/filters/converter.js.map +0 -1
  142. package/src/components/PlDataTable.ts +0 -794
@@ -1,366 +0,0 @@
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
- export type PlTableColumnId = {
5
- /** Original column spec */
6
- source: PTableColumnSpec;
7
- /** Column spec with labeled axes replaced by label columns */
8
- labeled: PTableColumnSpec;
9
- };
10
- export type PlTableColumnIdJson = CanonicalizedJson<PlTableColumnId>;
11
- export type PlDataTableGridStateCore = {
12
- /** Includes column ordering */
13
- columnOrder?: {
14
- /** All colIds in order */
15
- orderedColIds: PlTableColumnIdJson[];
16
- };
17
- /** Includes current sort columns and direction */
18
- sort?: {
19
- /** Sorted columns and directions in order */
20
- sortModel: {
21
- /** Column Id to apply the sort to. */
22
- colId: PlTableColumnIdJson;
23
- /** Sort direction */
24
- sort: "asc" | "desc";
25
- }[];
26
- };
27
- /** Includes column visibility */
28
- columnVisibility?: {
29
- /** All colIds which were hidden */
30
- hiddenColIds: PlTableColumnIdJson[];
31
- };
32
- };
33
- export type PlDataTableSheet = {
34
- /** spec of the axis to use */
35
- axis: AxisSpec;
36
- /** options to show in the filter dropdown */
37
- options: ListOptionBase<string | number>[];
38
- /** default (selected) value */
39
- defaultValue?: string | number;
40
- };
41
- export type PlDataTableSheetState = {
42
- /** id of the axis */
43
- axisId: AxisId;
44
- /** selected value */
45
- value: string | number;
46
- };
47
- /**
48
- * PlDataTableV2 persisted state
49
- */
50
- export type PlDataTableStateV2 = {
51
- gridState: {
52
- columnOrder?: {
53
- orderedColIds: CanonicalizedJson<PTableColumnSpec>[];
54
- };
55
- sort?: {
56
- sortModel: {
57
- colId: CanonicalizedJson<PTableColumnSpec>;
58
- sort: "asc" | "desc";
59
- }[];
60
- };
61
- columnVisibility?: {
62
- hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];
63
- };
64
- sourceId?: string;
65
- sheets?: Record<CanonicalizedJson<AxisId>, string | number>;
66
- };
67
- pTableParams?: {
68
- sorting?: PTableSorting[];
69
- filters?: PTableRecordFilter[];
70
- };
71
- } | {
72
- version: 2;
73
- stateCache: {
74
- sourceId: string;
75
- gridState: {
76
- columnOrder?: {
77
- orderedColIds: CanonicalizedJson<PTableColumnSpec>[];
78
- };
79
- sort?: {
80
- sortModel: {
81
- colId: CanonicalizedJson<PTableColumnSpec>;
82
- sort: "asc" | "desc";
83
- }[];
84
- };
85
- columnVisibility?: {
86
- hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];
87
- };
88
- };
89
- sheetsState: PlDataTableSheetState[];
90
- }[];
91
- pTableParams: {
92
- hiddenColIds: PObjectId[] | null;
93
- filters: PTableRecordFilter[];
94
- sorting: PTableSorting[];
95
- };
96
- } | {
97
- version: 3;
98
- stateCache: {
99
- sourceId: string;
100
- gridState: {
101
- columnOrder?: {
102
- orderedColIds: CanonicalizedJson<PTableColumnSpec>[];
103
- };
104
- sort?: {
105
- sortModel: {
106
- colId: CanonicalizedJson<PTableColumnSpec>;
107
- sort: "asc" | "desc";
108
- }[];
109
- };
110
- columnVisibility?: {
111
- hiddenColIds: CanonicalizedJson<PTableColumnSpec>[];
112
- };
113
- };
114
- sheetsState: PlDataTableSheetState[];
115
- filtersState: PlDataTableFilterState[];
116
- }[];
117
- pTableParams: PTableParamsV2;
118
- } | PlDataTableStateV2Normalized;
119
- export type PlDataTableStateV2CacheEntry = {
120
- /** DataSource identifier for state management */
121
- sourceId: string;
122
- /** Internal ag-grid state */
123
- gridState: PlDataTableGridStateCore;
124
- /** Sheets state */
125
- sheetsState: PlDataTableSheetState[];
126
- /** Filters state */
127
- filtersState: PlDataTableFilterState[];
128
- };
129
- export type PTableParamsV2 = {
130
- sourceId: null;
131
- hiddenColIds: null;
132
- partitionFilters: [];
133
- filters: [];
134
- sorting: [];
135
- } | {
136
- sourceId: string;
137
- hiddenColIds: PObjectId[] | null;
138
- partitionFilters: PTableRecordFilter[];
139
- filters: PTableRecordFilter[];
140
- sorting: PTableSorting[];
141
- };
142
- export type PlDataTableStateV2Normalized = {
143
- /** Version for upgrades */
144
- version: 4;
145
- /** Internal states, LRU cache for 5 sourceId-s */
146
- stateCache: PlDataTableStateV2CacheEntry[];
147
- /** PTable params derived from the cache state for the current sourceId */
148
- pTableParams: PTableParamsV2;
149
- };
150
- export declare function makeDefaultPTableParams(): PTableParamsV2;
151
- /** Create default PlDataTableStateV2 */
152
- export declare function createPlDataTableStateV2(): PlDataTableStateV2Normalized;
153
- /** Upgrade PlDataTableStateV2 to the latest version */
154
- export declare function upgradePlDataTableStateV2(state: PlDataTableStateV2 | undefined): PlDataTableStateV2Normalized;
155
- export type PlDataTableFilterState = {
156
- id: PTableColumnId;
157
- alphabetic: boolean;
158
- filter: null | {
159
- value: PlTableFilter;
160
- disabled: boolean;
161
- };
162
- };
163
- /** PlTableFilters filter entry */
164
- export type PlTableFilterIsNotNA = {
165
- /** Predicate type */
166
- type: "isNotNA";
167
- };
168
- /** PlTableFilters filter entry */
169
- export type PlTableFilterIsNA = {
170
- /** Predicate type */
171
- type: "isNA";
172
- };
173
- /** PlTableFilters filter entries applicable to both string and number values */
174
- export type PlTableFilterCommon = PlTableFilterIsNotNA | PlTableFilterIsNA;
175
- /** PlTableFilters numeric filter entry */
176
- export type PlTableFilterNumberEquals = {
177
- /** Predicate type */
178
- type: "number_equals";
179
- /** Reference value */
180
- reference: number;
181
- };
182
- /** PlTableFilters numeric filter entry */
183
- export type PlTableFilterNumberNotEquals = {
184
- /** Predicate type */
185
- type: "number_notEquals";
186
- /** Reference value */
187
- reference: number;
188
- };
189
- /** PlTableFilters numeric filter entry */
190
- export type PlTableFilterNumberGreaterThan = {
191
- /** Predicate type */
192
- type: "number_greaterThan";
193
- /** Reference value */
194
- reference: number;
195
- };
196
- /** PlTableFilters numeric filter entry */
197
- export type PlTableFilterNumberGreaterThanOrEqualTo = {
198
- /** Predicate type */
199
- type: "number_greaterThanOrEqualTo";
200
- /** Reference value */
201
- reference: number;
202
- };
203
- /** PlTableFilters numeric filter entry */
204
- export type PlTableFilterNumberLessThan = {
205
- /** Predicate type */
206
- type: "number_lessThan";
207
- /** Reference value */
208
- reference: number;
209
- };
210
- /** PlTableFilters numeric filter entry */
211
- export type PlTableFilterNumberLessThanOrEqualTo = {
212
- /** Predicate type */
213
- type: "number_lessThanOrEqualTo";
214
- /** Reference value */
215
- reference: number;
216
- };
217
- /** PlTableFilters numeric filter entry */
218
- export type PlTableFilterNumberBetween = {
219
- /** Predicate type */
220
- type: "number_between";
221
- /** Reference value for the lower bound */
222
- lowerBound: number;
223
- /** Defines whether values equal to lower bound reference value should be matched */
224
- includeLowerBound: boolean;
225
- /** Reference value for the upper bound */
226
- upperBound: number;
227
- /** Defines whether values equal to upper bound reference value should be matched */
228
- includeUpperBound: boolean;
229
- };
230
- /** All PlTableFilters numeric filter entries */
231
- export type PlTableFilterNumber = PlTableFilterCommon | PlTableFilterNumberEquals | PlTableFilterNumberNotEquals | PlTableFilterNumberGreaterThan | PlTableFilterNumberGreaterThanOrEqualTo | PlTableFilterNumberLessThan | PlTableFilterNumberLessThanOrEqualTo | PlTableFilterNumberBetween;
232
- /** All types of PlTableFilters numeric filter entries */
233
- export type PlTableFilterNumberType = PlTableFilterNumber["type"];
234
- /** PlTableFilters string filter entry */
235
- export type PlTableFilterStringEquals = {
236
- /** Predicate type */
237
- type: "string_equals";
238
- /** Reference value */
239
- reference: string;
240
- };
241
- /** PlTableFilters string filter entry */
242
- export type PlTableFilterStringNotEquals = {
243
- /** Predicate type */
244
- type: "string_notEquals";
245
- /** Reference value */
246
- reference: string;
247
- };
248
- /** PlTableFilters string filter entry */
249
- export type PlTableFilterStringContains = {
250
- /** Predicate type */
251
- type: "string_contains";
252
- /** Reference value */
253
- reference: string;
254
- };
255
- /** PlTableFilters string filter entry */
256
- export type PlTableFilterStringDoesNotContain = {
257
- /** Predicate type */
258
- type: "string_doesNotContain";
259
- /** Reference value */
260
- reference: string;
261
- };
262
- /** PlTableFilters string filter entry */
263
- export type PlTableFilterStringMatches = {
264
- /** Predicate type */
265
- type: "string_matches";
266
- /** Reference value */
267
- reference: string;
268
- };
269
- /** PlTableFilters string filter entry */
270
- export type PlTableFilterStringDoesNotMatch = {
271
- /** Predicate type */
272
- type: "string_doesNotMatch";
273
- /** Reference value */
274
- reference: string;
275
- };
276
- /** PlTableFilters string filter entry */
277
- export type PlTableFilterStringContainsFuzzyMatch = {
278
- /** Predicate type */
279
- type: "string_containsFuzzyMatch";
280
- /** Reference value */
281
- reference: string;
282
- /**
283
- * Maximum acceptable edit distance between reference value and matched substring
284
- * @see https://en.wikipedia.org/wiki/Edit_distance
285
- */
286
- maxEdits: number;
287
- /**
288
- * When {@link substitutionsOnly} is set to false
289
- * Levenshtein distance is used as edit distance (substitutions and indels)
290
- * @see https://en.wikipedia.org/wiki/Levenshtein_distance
291
- * When {@link substitutionsOnly} is set to true
292
- * Hamming distance is used as edit distance (substitutions only)
293
- * @see https://en.wikipedia.org/wiki/Hamming_distance
294
- */
295
- substitutionsOnly: boolean;
296
- /**
297
- * Single character in {@link reference} that will labelColumn any
298
- * single character in searched text.
299
- */
300
- wildcard?: string;
301
- };
302
- /** All PlTableFilters string filter entries */
303
- export type PlTableFilterString = PlTableFilterCommon | PlTableFilterStringEquals | PlTableFilterStringNotEquals | PlTableFilterStringContains | PlTableFilterStringDoesNotContain | PlTableFilterStringMatches | PlTableFilterStringDoesNotMatch | PlTableFilterStringContainsFuzzyMatch;
304
- /** All types of PlTableFilters string filter entries */
305
- export type PlTableFilterStringType = PlTableFilterString["type"];
306
- /** All PlTableFilters filter entries */
307
- export type PlTableFilter = PlTableFilterNumber | PlTableFilterString;
308
- /** All types of PlTableFilters filter entries */
309
- export type PlTableFilterType = PlTableFilter["type"];
310
- export type CreatePlDataTableOps = {
311
- /** Filters for columns and non-partitioned axes */
312
- filters?: PTableRecordFilter[];
313
- /** Sorting to columns hidden from user */
314
- sorting?: PTableSorting[];
315
- /**
316
- * Selects columns for which will be inner-joined to the table.
317
- *
318
- * Default behaviour: all columns are considered to be core
319
- */
320
- coreColumnPredicate?: (spec: PColumnIdAndSpec) => boolean;
321
- /**
322
- * Determines how core columns should be joined together:
323
- * inner - so user will only see records present in all core columns
324
- * full - so user will only see records present in any of the core columns
325
- *
326
- * All non-core columns will be left joined to the table produced by the core
327
- * columns, in other words records form the pool of non-core columns will only
328
- * make their way into the final table if core table contains corresponding key.
329
- *
330
- * Default: 'full'
331
- */
332
- coreJoinType?: "inner" | "full";
333
- };
334
- /** Get all label columns from the result pool */
335
- export declare function getAllLabelColumns(resultPool: AxisLabelProvider & ColumnProvider): PColumn<PColumnDataUniversal>[] | undefined;
336
- /** Get label columns matching the provided columns from the result pool */
337
- export declare function getMatchingLabelColumns(columns: PColumnIdAndSpec[], allLabelColumns: PColumn<PColumnDataUniversal>[]): PColumn<PColumnDataUniversal>[];
338
- /** PlAgDataTable model */
339
- export type PlDataTableModel = {
340
- /** DataSource identifier for state management */
341
- sourceId: string | null;
342
- /** p-table including all columns, used to show the full specification of the table */
343
- fullTableHandle: PTableHandle;
344
- /** p-table including only visible columns, used to get the data */
345
- visibleTableHandle: PTableHandle;
346
- };
347
- /** Check if column should be omitted from the table */
348
- export declare function isColumnHidden(spec: {
349
- annotations?: Annotation;
350
- }): boolean;
351
- /** Check if column is hidden by default */
352
- export declare function isColumnOptional(spec: {
353
- annotations?: Annotation;
354
- }): boolean;
355
- /**
356
- * Create p-table spec and handle given ui table state
357
- *
358
- * @param ctx context
359
- * @param columns column list
360
- * @param tableState table ui state
361
- * @returns PlAgDataTableV2 table source
362
- */
363
- export declare function createPlDataTableV2<A, U>(ctx: RenderCtxBase<A, U>, columns: PColumn<PColumnDataUniversal>[], tableState: PlDataTableStateV2 | undefined, ops?: CreatePlDataTableOps): PlDataTableModel | undefined;
364
- /** Create sheet entries for PlDataTable */
365
- export declare function createPlDataTableSheet<A, U>(ctx: RenderCtxBase<A, U>, axis: AxisSpec, values: (string | number)[]): PlDataTableSheet;
366
- //# sourceMappingURL=PlDataTable.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlDataTable.d.ts","sourceRoot":"","sources":["../../src/components/PlDataTable.ts"],"names":[],"mappings":"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"}
@@ -1,297 +0,0 @@
1
- import { PColumnName, isLabelColumn, getAxisId, matchAxisId, readAnnotation, Annotation, getColumnIdAndSpec, uniqueBy, canonicalizeJson, isLinkerColumn } from '@milaboratories/pl-model-common';
2
- import 'canonicalize';
3
- import { PColumnCollection } from '../render/util/column_collection.js';
4
- import { deriveLabels } from '../render/util/label.js';
5
- import { allPColumnsReady } from '../render/util/pcolumn_data.js';
6
- import { identity } from 'es-toolkit';
7
-
8
- function makeDefaultPTableParams() {
9
- return {
10
- sourceId: null,
11
- hiddenColIds: null,
12
- partitionFilters: [],
13
- filters: [],
14
- sorting: [],
15
- };
16
- }
17
- /** Create default PlDataTableStateV2 */
18
- function createPlDataTableStateV2() {
19
- return {
20
- version: 4,
21
- stateCache: [],
22
- pTableParams: makeDefaultPTableParams(),
23
- };
24
- }
25
- /** Upgrade PlDataTableStateV2 to the latest version */
26
- function upgradePlDataTableStateV2(state) {
27
- // Block just added, had no state, model started earlier than the UI
28
- if (!state) {
29
- return createPlDataTableStateV2();
30
- }
31
- // v1 -> v2
32
- if (!("version" in state)) {
33
- // Non upgradeable as sourceId calculation algorithm has changed, resetting state to default
34
- state = createPlDataTableStateV2();
35
- }
36
- // v2 -> v3
37
- if (state.version === 2) {
38
- state = {
39
- version: 3,
40
- stateCache: state.stateCache.map((entry) => ({
41
- ...entry,
42
- filtersState: [],
43
- })),
44
- pTableParams: makeDefaultPTableParams(),
45
- };
46
- }
47
- // v3 -> v4
48
- if (state.version === 3) {
49
- // Non upgradeable as column ids calculation algorithm has changed, resetting state to default
50
- state = createPlDataTableStateV2();
51
- }
52
- return state;
53
- }
54
- /** Get all label columns from the result pool */
55
- function getAllLabelColumns(resultPool) {
56
- return new PColumnCollection()
57
- .addAxisLabelProvider(resultPool)
58
- .addColumnProvider(resultPool)
59
- .getColumns({
60
- name: PColumnName.Label,
61
- axes: [{}], // exactly one axis
62
- }, { dontWaitAllData: true, overrideLabelAnnotation: false });
63
- }
64
- /** Get label columns matching the provided columns from the result pool */
65
- function getMatchingLabelColumns(columns, allLabelColumns) {
66
- // split input columns into label and value columns
67
- const inputLabelColumns = [];
68
- const inputValueColumns = [];
69
- for (const column of columns) {
70
- if (isLabelColumn(column.spec)) {
71
- inputLabelColumns.push(column);
72
- }
73
- else {
74
- inputValueColumns.push(column);
75
- }
76
- }
77
- // collect distinct axes of value columns
78
- const unlabeledAxes = [];
79
- for (const column of inputValueColumns) {
80
- for (const axis of column.spec.axesSpec) {
81
- const axisId = getAxisId(axis);
82
- if (!unlabeledAxes.some((id) => matchAxisId(id, axisId))) {
83
- unlabeledAxes.push(axisId);
84
- }
85
- }
86
- }
87
- // remove axes matched by input label columns
88
- for (const labelColumn of inputLabelColumns) {
89
- const labelAxisId = getAxisId(labelColumn.spec.axesSpec[0]);
90
- const labelMatch = unlabeledAxes.findIndex((axisId) => matchAxisId(axisId, labelAxisId));
91
- if (labelMatch !== -1) {
92
- unlabeledAxes.splice(labelMatch, 1);
93
- }
94
- }
95
- // warning: changing this id will break backward compatibility
96
- const colId = (id, domain) => {
97
- let wid = id.toString();
98
- if (domain) {
99
- for (const k in domain) {
100
- wid += k;
101
- wid += domain[k];
102
- }
103
- }
104
- return wid;
105
- };
106
- // search label columns for unmatched axes
107
- const labelColumns = [];
108
- for (const labelColumn of allLabelColumns) {
109
- const labelAxis = labelColumn.spec.axesSpec[0];
110
- const labelAxisId = getAxisId(labelAxis);
111
- const labelMatch = unlabeledAxes.findIndex((axisId) => matchAxisId(axisId, labelAxisId));
112
- if (labelMatch !== -1) {
113
- const axisId = unlabeledAxes[labelMatch];
114
- const dataDomainLen = Object.keys(axisId.domain ?? {}).length;
115
- const labelDomainLen = Object.keys(labelAxis.domain ?? {}).length;
116
- if (dataDomainLen > labelDomainLen) {
117
- labelColumns.push({
118
- id: colId(labelColumn.id, axisId.domain),
119
- spec: {
120
- ...labelColumn.spec,
121
- axesSpec: [{ ...axisId, annotations: labelAxis.annotations }],
122
- },
123
- data: labelColumn.data,
124
- });
125
- }
126
- else {
127
- labelColumns.push(labelColumn);
128
- }
129
- unlabeledAxes.splice(labelMatch, 1);
130
- }
131
- }
132
- return labelColumns;
133
- }
134
- function createPTableDef(params) {
135
- let coreColumns = params.columns;
136
- const secondaryColumns = [];
137
- if (params.coreColumnPredicate) {
138
- coreColumns = [];
139
- for (const c of params.columns)
140
- if (params.coreColumnPredicate(getColumnIdAndSpec(c)))
141
- coreColumns.push(c);
142
- else
143
- secondaryColumns.push(c);
144
- }
145
- secondaryColumns.push(...params.labelColumns);
146
- return {
147
- src: {
148
- type: "outer",
149
- primary: {
150
- type: params.coreJoinType,
151
- entries: coreColumns.map((c) => ({ type: "column", column: c })),
152
- },
153
- secondary: secondaryColumns.map((c) => ({ type: "column", column: c })),
154
- },
155
- partitionFilters: params.partitionFilters,
156
- filters: params.filters,
157
- sorting: params.sorting,
158
- };
159
- }
160
- /** Check if column should be omitted from the table */
161
- function isColumnHidden(spec) {
162
- return readAnnotation(spec, Annotation.Table.Visibility) === "hidden";
163
- }
164
- /** Check if column is hidden by default */
165
- function isColumnOptional(spec) {
166
- return readAnnotation(spec, Annotation.Table.Visibility) === "optional";
167
- }
168
- /**
169
- * Create p-table spec and handle given ui table state
170
- *
171
- * @param ctx context
172
- * @param columns column list
173
- * @param tableState table ui state
174
- * @returns PlAgDataTableV2 table source
175
- */
176
- function createPlDataTableV2(ctx, columns, tableState, ops) {
177
- if (columns.length === 0)
178
- return undefined;
179
- const tableStateNormalized = upgradePlDataTableStateV2(tableState);
180
- const allLabelColumns = getAllLabelColumns(ctx.resultPool);
181
- if (!allLabelColumns)
182
- return undefined;
183
- let fullLabelColumns = getMatchingLabelColumns(columns.map(getColumnIdAndSpec), allLabelColumns);
184
- fullLabelColumns = deriveLabels(fullLabelColumns, identity, { includeNativeLabel: true }).map((v) => {
185
- return {
186
- ...v.value,
187
- spec: {
188
- ...v.value.spec,
189
- annotations: {
190
- ...v.value.spec.annotations,
191
- [Annotation.Label]: v.label,
192
- },
193
- },
194
- };
195
- });
196
- const fullColumns = [...columns, ...fullLabelColumns];
197
- const fullColumnsAxes = uniqueBy(fullColumns.flatMap((c) => c.spec.axesSpec.map((a) => getAxisId(a))), (a) => canonicalizeJson(a));
198
- const fullColumnsIds = [
199
- ...fullColumnsAxes.map((a) => ({ type: "axis", id: a })),
200
- ...fullColumns.map((c) => ({ type: "column", id: c.id })),
201
- ];
202
- const fullColumnsIdsSet = new Set(fullColumnsIds.map((c) => canonicalizeJson(c)));
203
- const isValidColumnId = (id) => fullColumnsIdsSet.has(canonicalizeJson(id));
204
- const coreJoinType = ops?.coreJoinType ?? "full";
205
- const partitionFilters = tableStateNormalized.pTableParams.partitionFilters.filter((f) => {
206
- const valid = isValidColumnId(f.column);
207
- if (!valid)
208
- ctx.logWarn(`Partition filter ${JSON.stringify(f)} does not match provided columns, skipping`);
209
- return valid;
210
- });
211
- const filters = uniqueBy([...tableStateNormalized.pTableParams.filters, ...(ops?.filters ?? [])], (f) => canonicalizeJson(f.column)).filter((f) => {
212
- const valid = isValidColumnId(f.column);
213
- if (!valid)
214
- ctx.logWarn(`Filter ${JSON.stringify(f)} does not match provided columns, skipping`);
215
- return valid;
216
- });
217
- const sorting = uniqueBy([...tableStateNormalized.pTableParams.sorting, ...(ops?.sorting ?? [])], (s) => canonicalizeJson(s.column)).filter((s) => {
218
- const valid = isValidColumnId(s.column);
219
- if (!valid)
220
- ctx.logWarn(`Sorting ${JSON.stringify(s)} does not match provided columns, skipping`);
221
- return valid;
222
- });
223
- const fullDef = createPTableDef({
224
- columns,
225
- labelColumns: fullLabelColumns,
226
- coreJoinType,
227
- partitionFilters,
228
- filters,
229
- sorting,
230
- coreColumnPredicate: ops?.coreColumnPredicate,
231
- });
232
- const fullHandle = ctx.createPTable(fullDef);
233
- if (!fullHandle)
234
- return undefined;
235
- const hiddenColumns = new Set((() => {
236
- // Inner join works as a filter - all columns must be present
237
- if (coreJoinType === "inner")
238
- return [];
239
- const hiddenColIds = tableStateNormalized.pTableParams.hiddenColIds;
240
- if (hiddenColIds)
241
- return hiddenColIds;
242
- return columns.filter((c) => isColumnOptional(c.spec)).map((c) => c.id);
243
- })());
244
- // Preserve linker columns
245
- columns.filter((c) => isLinkerColumn(c.spec)).forEach((c) => hiddenColumns.delete(c.id));
246
- // Preserve core columns as they change the shape of join.
247
- const coreColumnPredicate = ops?.coreColumnPredicate;
248
- if (coreColumnPredicate) {
249
- const coreColumns = columns.flatMap((c) => coreColumnPredicate(getColumnIdAndSpec(c)) ? [c.id] : []);
250
- coreColumns.forEach((c) => hiddenColumns.delete(c));
251
- }
252
- // Filters decrease the number of result rows, sorting changes the order of result rows
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")
259
- .forEach((c) => hiddenColumns.delete(c.id));
260
- const visibleColumns = columns.filter((c) => !hiddenColumns.has(c.id));
261
- const visibleLabelColumns = getMatchingLabelColumns(visibleColumns.map(getColumnIdAndSpec), allLabelColumns);
262
- // if at least one column is not yet computed, we can't show the table
263
- if (!allPColumnsReady([...visibleColumns, ...visibleLabelColumns]))
264
- return undefined;
265
- const visibleDef = createPTableDef({
266
- columns: visibleColumns,
267
- labelColumns: visibleLabelColumns,
268
- coreJoinType,
269
- partitionFilters,
270
- filters,
271
- sorting,
272
- coreColumnPredicate,
273
- });
274
- const visibleHandle = ctx.createPTable(visibleDef);
275
- if (!visibleHandle)
276
- return undefined;
277
- return {
278
- sourceId: tableStateNormalized.pTableParams.sourceId,
279
- fullTableHandle: fullHandle,
280
- visibleTableHandle: visibleHandle,
281
- };
282
- }
283
- /** Create sheet entries for PlDataTable */
284
- function createPlDataTableSheet(ctx, axis, values) {
285
- const labels = ctx.resultPool.findLabels(axis);
286
- return {
287
- axis,
288
- options: values.map((v) => ({
289
- value: v,
290
- label: labels?.[v] ?? v.toString(),
291
- })),
292
- defaultValue: values[0],
293
- };
294
- }
295
-
296
- export { createPlDataTableSheet, createPlDataTableStateV2, createPlDataTableV2, getAllLabelColumns, getMatchingLabelColumns, isColumnHidden, isColumnOptional, makeDefaultPTableParams, upgradePlDataTableStateV2 };
297
- //# sourceMappingURL=PlDataTable.js.map