@milaboratories/uikit 2.4.30 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,489 @@
1
+ const t = {
2
+ equal: {
3
+ label: "Col = X (Equal)",
4
+ form: {
5
+ column: {
6
+ label: "Column",
7
+ fieldType: "SUniversalPColumnId",
8
+ defaultValue: () => {
9
+ }
10
+ },
11
+ type: {
12
+ label: "Predicate",
13
+ fieldType: "FilterType",
14
+ defaultValue: () => "equal"
15
+ },
16
+ x: {
17
+ label: "X",
18
+ fieldType: "number",
19
+ defaultValue: () => 0
20
+ }
21
+ },
22
+ supportedFor: a
23
+ },
24
+ lessThan: {
25
+ label: "Col < X (Less Than)",
26
+ form: {
27
+ column: {
28
+ label: "Column",
29
+ fieldType: "SUniversalPColumnId",
30
+ defaultValue: () => {
31
+ }
32
+ },
33
+ type: {
34
+ label: "Predicate",
35
+ fieldType: "FilterType",
36
+ defaultValue: () => "lessThan"
37
+ },
38
+ x: {
39
+ label: "X",
40
+ fieldType: "number",
41
+ defaultValue: () => 0
42
+ }
43
+ },
44
+ supportedFor: a
45
+ },
46
+ greaterThan: {
47
+ label: "Col > X (Greater Than)",
48
+ form: {
49
+ column: {
50
+ label: "Column",
51
+ fieldType: "SUniversalPColumnId",
52
+ defaultValue: () => {
53
+ }
54
+ },
55
+ type: {
56
+ label: "Predicate",
57
+ fieldType: "FilterType",
58
+ defaultValue: () => "greaterThan"
59
+ },
60
+ x: {
61
+ label: "X",
62
+ fieldType: "number",
63
+ defaultValue: () => 0
64
+ }
65
+ },
66
+ supportedFor: a
67
+ },
68
+ lessThanOrEqual: {
69
+ label: "Col ≤ X (Less Than or Equal)",
70
+ form: {
71
+ column: {
72
+ label: "Column",
73
+ fieldType: "SUniversalPColumnId",
74
+ defaultValue: () => {
75
+ }
76
+ },
77
+ type: {
78
+ label: "Predicate",
79
+ fieldType: "FilterType",
80
+ defaultValue: () => "lessThanOrEqual"
81
+ },
82
+ x: {
83
+ label: "X",
84
+ fieldType: "number",
85
+ defaultValue: () => 0
86
+ }
87
+ },
88
+ supportedFor: a
89
+ },
90
+ greaterThanOrEqual: {
91
+ label: "Col ≥ X (Greater Than or Equal)",
92
+ form: {
93
+ column: {
94
+ label: "Column",
95
+ fieldType: "SUniversalPColumnId",
96
+ defaultValue: () => {
97
+ }
98
+ },
99
+ type: {
100
+ label: "Predicate",
101
+ fieldType: "FilterType",
102
+ defaultValue: () => "greaterThanOrEqual"
103
+ },
104
+ x: {
105
+ label: "X",
106
+ fieldType: "number",
107
+ defaultValue: () => 0
108
+ }
109
+ },
110
+ supportedFor: a
111
+ },
112
+ // Columns comparison
113
+ equalToColumn: {
114
+ label: "Col₁ = Col₂ (Compare Columns)",
115
+ form: {
116
+ column: {
117
+ label: "Col₁",
118
+ fieldType: "SUniversalPColumnId",
119
+ defaultValue: () => {
120
+ }
121
+ },
122
+ type: {
123
+ label: "Predicate",
124
+ fieldType: "FilterType",
125
+ defaultValue: () => "equalToColumn"
126
+ },
127
+ rhs: {
128
+ label: "Col₂",
129
+ fieldType: "SUniversalPColumnId",
130
+ defaultValue: () => {
131
+ }
132
+ }
133
+ },
134
+ supportedFor: (e, l) => a(e) && (l === void 0 || a(l))
135
+ },
136
+ lessThanColumn: {
137
+ label: "Col₁ < Col₂ (Compare Columns)",
138
+ form: {
139
+ column: {
140
+ label: "Col₁",
141
+ fieldType: "SUniversalPColumnId",
142
+ defaultValue: () => {
143
+ }
144
+ },
145
+ type: {
146
+ label: "Predicate",
147
+ fieldType: "FilterType",
148
+ defaultValue: () => "lessThanColumn"
149
+ },
150
+ rhs: {
151
+ label: "Col₂",
152
+ fieldType: "SUniversalPColumnId",
153
+ defaultValue: () => {
154
+ }
155
+ },
156
+ minDiff: {
157
+ label: "Margin (positive)",
158
+ fieldType: "number?",
159
+ defaultValue: () => {
160
+ }
161
+ }
162
+ },
163
+ supportedFor: (e, l) => a(e) && (l === void 0 || a(l))
164
+ },
165
+ greaterThanColumn: {
166
+ label: "Col₁ > Col₂ (Compare Columns)",
167
+ form: {
168
+ column: {
169
+ label: "Col₁",
170
+ fieldType: "SUniversalPColumnId",
171
+ defaultValue: () => {
172
+ }
173
+ },
174
+ type: {
175
+ label: "Predicate",
176
+ fieldType: "FilterType",
177
+ defaultValue: () => "greaterThanColumn"
178
+ },
179
+ rhs: {
180
+ label: "Col₂",
181
+ fieldType: "SUniversalPColumnId",
182
+ defaultValue: () => {
183
+ }
184
+ },
185
+ minDiff: {
186
+ label: "Margin (positive)",
187
+ fieldType: "number?",
188
+ defaultValue: () => {
189
+ }
190
+ }
191
+ },
192
+ supportedFor: (e, l) => a(e) && (l === void 0 || a(l))
193
+ },
194
+ lessThanColumnOrEqual: {
195
+ label: "Col₁ ≤ Col₂ (Compare Columns)",
196
+ form: {
197
+ column: {
198
+ label: "Col₁",
199
+ fieldType: "SUniversalPColumnId",
200
+ defaultValue: () => {
201
+ }
202
+ },
203
+ type: {
204
+ label: "Predicate",
205
+ fieldType: "FilterType",
206
+ defaultValue: () => "lessThanColumnOrEqual"
207
+ },
208
+ rhs: {
209
+ label: "Col₂",
210
+ fieldType: "SUniversalPColumnId",
211
+ defaultValue: () => {
212
+ }
213
+ },
214
+ minDiff: {
215
+ label: "Margin (positive)",
216
+ fieldType: "number?",
217
+ defaultValue: () => {
218
+ }
219
+ }
220
+ },
221
+ supportedFor: (e, l) => a(e) && (l === void 0 || a(l))
222
+ },
223
+ greaterThanColumnOrEqual: {
224
+ label: "Col₁ ≥ Col₂ (Compare Columns)",
225
+ form: {
226
+ column: {
227
+ label: "Col₁",
228
+ fieldType: "SUniversalPColumnId",
229
+ defaultValue: () => {
230
+ }
231
+ },
232
+ type: {
233
+ label: "Predicate",
234
+ fieldType: "FilterType",
235
+ defaultValue: () => "greaterThanColumnOrEqual"
236
+ },
237
+ rhs: {
238
+ label: "Col₂",
239
+ fieldType: "SUniversalPColumnId",
240
+ defaultValue: () => {
241
+ }
242
+ },
243
+ minDiff: {
244
+ label: "Margin (positive)",
245
+ fieldType: "number?",
246
+ defaultValue: () => {
247
+ }
248
+ }
249
+ },
250
+ supportedFor: (e, l) => a(e) && (l === void 0 || a(l))
251
+ },
252
+ // Ordering filters
253
+ topN: {
254
+ label: "Top N",
255
+ form: {
256
+ column: {
257
+ label: "Rank By Column",
258
+ fieldType: "SUniversalPColumnId",
259
+ defaultValue: () => {
260
+ }
261
+ },
262
+ type: {
263
+ label: "Predicate",
264
+ fieldType: "FilterType",
265
+ defaultValue: () => "topN"
266
+ },
267
+ n: {
268
+ label: "N",
269
+ fieldType: "number",
270
+ defaultValue: () => 10
271
+ }
272
+ },
273
+ supportedFor: a
274
+ },
275
+ bottomN: {
276
+ label: "Bottom N",
277
+ form: {
278
+ column: {
279
+ label: "Rank By Column",
280
+ fieldType: "SUniversalPColumnId",
281
+ defaultValue: () => {
282
+ }
283
+ },
284
+ type: {
285
+ label: "Predicate",
286
+ fieldType: "FilterType",
287
+ defaultValue: () => "bottomN"
288
+ },
289
+ n: {
290
+ label: "N",
291
+ fieldType: "number",
292
+ defaultValue: () => 10
293
+ }
294
+ },
295
+ supportedFor: a
296
+ },
297
+ patternContainSubsequence: {
298
+ label: "Col ~ Seq (Contain Subsequence)",
299
+ form: {
300
+ column: {
301
+ label: "Column",
302
+ fieldType: "SUniversalPColumnId",
303
+ defaultValue: () => {
304
+ }
305
+ },
306
+ type: {
307
+ label: "Predicate",
308
+ fieldType: "FilterType",
309
+ defaultValue: () => "patternContainSubsequence"
310
+ },
311
+ value: {
312
+ label: "Seq",
313
+ fieldType: "string",
314
+ defaultValue: () => ""
315
+ }
316
+ },
317
+ supportedFor: u
318
+ },
319
+ patternNotContainSubsequence: {
320
+ label: "Col ≁ Seq (Not Contain Subsequence)",
321
+ form: {
322
+ column: {
323
+ label: "Column",
324
+ fieldType: "SUniversalPColumnId",
325
+ defaultValue: () => {
326
+ }
327
+ },
328
+ type: {
329
+ label: "Predicate",
330
+ fieldType: "FilterType",
331
+ defaultValue: () => "patternNotContainSubsequence"
332
+ },
333
+ value: {
334
+ label: "Seq",
335
+ fieldType: "string",
336
+ defaultValue: () => ""
337
+ }
338
+ },
339
+ supportedFor: u
340
+ },
341
+ patternEquals: {
342
+ label: "Col = Seq (Equals)",
343
+ form: {
344
+ column: {
345
+ label: "Column",
346
+ fieldType: "SUniversalPColumnId",
347
+ defaultValue: () => {
348
+ }
349
+ },
350
+ type: {
351
+ label: "Predicate",
352
+ fieldType: "FilterType",
353
+ defaultValue: () => "patternEquals"
354
+ },
355
+ value: {
356
+ label: "Seq",
357
+ fieldType: "string",
358
+ defaultValue: () => ""
359
+ }
360
+ },
361
+ supportedFor: u
362
+ },
363
+ patternNotEquals: {
364
+ label: "Col ≠ Seq (Not Equal)",
365
+ form: {
366
+ column: {
367
+ label: "Column",
368
+ fieldType: "SUniversalPColumnId",
369
+ defaultValue: () => {
370
+ }
371
+ },
372
+ type: {
373
+ label: "Predicate",
374
+ fieldType: "FilterType",
375
+ defaultValue: () => "patternNotEquals"
376
+ },
377
+ value: {
378
+ label: "Seq",
379
+ fieldType: "string",
380
+ defaultValue: () => ""
381
+ }
382
+ },
383
+ supportedFor: u
384
+ },
385
+ isNA: {
386
+ label: "Is NA",
387
+ form: {
388
+ column: {
389
+ label: "Column",
390
+ fieldType: "SUniversalPColumnId",
391
+ defaultValue: () => {
392
+ }
393
+ },
394
+ type: {
395
+ label: "Predicate",
396
+ fieldType: "FilterType",
397
+ defaultValue: () => "isNA"
398
+ }
399
+ },
400
+ supportedFor: () => !0
401
+ },
402
+ isNotNA: {
403
+ label: "Is Not NA",
404
+ form: {
405
+ column: {
406
+ label: "Column",
407
+ fieldType: "SUniversalPColumnId",
408
+ defaultValue: () => {
409
+ }
410
+ },
411
+ type: {
412
+ label: "Predicate",
413
+ fieldType: "FilterType",
414
+ defaultValue: () => "isNotNA"
415
+ }
416
+ },
417
+ supportedFor: () => !0
418
+ },
419
+ or: {
420
+ label: "Or",
421
+ form: {
422
+ type: {
423
+ fieldType: "FilterType",
424
+ label: "Predicate",
425
+ defaultValue: () => "or"
426
+ },
427
+ filters: {
428
+ fieldType: "unknown[]",
429
+ label: "Filters",
430
+ defaultValue: () => []
431
+ }
432
+ },
433
+ supportedFor: () => !1
434
+ },
435
+ and: {
436
+ label: "And",
437
+ form: {
438
+ type: {
439
+ fieldType: "FilterType",
440
+ label: "Predicate",
441
+ defaultValue: () => "and"
442
+ },
443
+ filters: {
444
+ fieldType: "unknown[]",
445
+ label: "Filters",
446
+ defaultValue: () => []
447
+ }
448
+ },
449
+ supportedFor: () => !1
450
+ },
451
+ not: {
452
+ label: "Not",
453
+ form: {
454
+ type: {
455
+ fieldType: "FilterType",
456
+ label: "Predicate",
457
+ defaultValue: () => "not"
458
+ },
459
+ filter: {
460
+ fieldType: "form",
461
+ label: "Filter",
462
+ defaultValue: () => {
463
+ }
464
+ }
465
+ },
466
+ supportedFor: () => !1
467
+ }
468
+ };
469
+ function r(e) {
470
+ return e ? Object.entries(t).filter(([l, o]) => o.supportedFor(e)).map(([l, o]) => ({
471
+ label: o.label,
472
+ value: l
473
+ })) : [];
474
+ }
475
+ function d(e) {
476
+ return t[e];
477
+ }
478
+ function a(e) {
479
+ return e.valueType === "Int" || e.valueType === "Long" || e.valueType === "Float" || e.valueType === "Double";
480
+ }
481
+ function u(e) {
482
+ return e.valueType === "String";
483
+ }
484
+ export {
485
+ t as filterUiMetadata,
486
+ d as getFilterUiMetadata,
487
+ r as getFilterUiTypeOptions
488
+ };
489
+ //# sourceMappingURL=metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.js","sources":["../../../src/composition/filters/metadata.ts"],"sourcesContent":["import type { FilterSpecType, SimplifiedPColumnSpec } from '@platforma-sdk/model';\nimport type { FilterSpecMetadataRecord } from './types';\n\nexport const filterUiMetadata = {\n equal: {\n label: 'Col = X (Equal)',\n form: {\n column: {\n label: 'Column',\n fieldType: 'SUniversalPColumnId',\n defaultValue: () => undefined,\n },\n type: {\n label: 'Predicate',\n fieldType: 'FilterType',\n defaultValue: () => 'equal',\n },\n x: {\n label: 'X',\n fieldType: 'number',\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n lessThan: {\n label: 'Col < X (Less Than)',\n form: {\n column: {\n label: 'Column',\n fieldType: 'SUniversalPColumnId',\n defaultValue: () => undefined,\n },\n type: {\n label: 'Predicate',\n fieldType: 'FilterType',\n defaultValue: () => 'lessThan',\n },\n x: {\n label: 'X',\n fieldType: 'number',\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n greaterThan: {\n label: 'Col > X (Greater Than)',\n form: {\n column: {\n label: 'Column',\n fieldType: 'SUniversalPColumnId',\n defaultValue: () => undefined,\n },\n type: {\n label: 'Predicate',\n fieldType: 'FilterType',\n defaultValue: () => 'greaterThan',\n },\n x: {\n label: 'X',\n fieldType: 'number',\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n lessThanOrEqual: {\n label: 'Col ≤ X (Less Than or Equal)',\n form: {\n column: {\n label: 'Column',\n fieldType: 'SUniversalPColumnId',\n defaultValue: () => undefined,\n },\n type: {\n label: 'Predicate',\n fieldType: 'FilterType',\n defaultValue: () => 'lessThanOrEqual',\n },\n x: {\n label: 'X',\n fieldType: 'number',\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n greaterThanOrEqual: {\n label: 'Col ≥ X (Greater Than or Equal)',\n form: {\n column: {\n label: 'Column',\n fieldType: 'SUniversalPColumnId',\n defaultValue: () => undefined,\n },\n type: {\n label: 'Predicate',\n fieldType: 'FilterType',\n defaultValue: () => 'greaterThanOrEqual',\n },\n x: {\n label: 'X',\n fieldType: 'number',\n defaultValue: () => 0,\n },\n },\n supportedFor: isNumericValueType,\n },\n // Columns comparison\n equalToColumn: {\n label: 'Col₁ = Col₂ (Compare Columns)',\n form: {\n column: {\n label: 'Col₁',\n fieldType: 'SUniversalPColumnId',\n defaultValue: () => undefined,\n },\n type: {\n label: 'Predicate',\n fieldType: 'FilterType',\n defaultValue: () => 'equalToColumn',\n },\n rhs: {\n label: 'Col₂',\n fieldType: 'SUniversalPColumnId',\n defaultValue: () => undefined,\n },\n },\n supportedFor: (spec1: SimplifiedPColumnSpec, spec2?: SimplifiedPColumnSpec): boolean => {\n return isNumericValueType(spec1) && (spec2 === undefined || isNumericValueType(spec2));\n },\n },\n lessThanColumn: {\n label: 'Col₁ < Col₂ (Compare Columns)',\n form: {\n column: {\n label: 'Col₁',\n fieldType: 'SUniversalPColumnId',\n defaultValue: () => undefined,\n },\n type: {\n label: 'Predicate',\n fieldType: 'FilterType',\n defaultValue: () => 'lessThanColumn',\n },\n rhs: {\n label: 'Col₂',\n fieldType: 'SUniversalPColumnId',\n defaultValue: () => undefined,\n },\n minDiff: {\n label: 'Margin (positive)',\n fieldType: 'number?',\n defaultValue: () => undefined,\n },\n },\n supportedFor: (spec1: SimplifiedPColumnSpec, spec2?: SimplifiedPColumnSpec): boolean => {\n return isNumericValueType(spec1) && (spec2 === undefined || isNumericValueType(spec2));\n },\n },\n greaterThanColumn: {\n label: 'Col₁ > Col₂ (Compare Columns)',\n form: {\n column: {\n label: 'Col₁',\n fieldType: 'SUniversalPColumnId',\n defaultValue: () => undefined,\n },\n type: {\n label: 'Predicate',\n fieldType: 'FilterType',\n defaultValue: () => 'greaterThanColumn',\n },\n rhs: {\n label: 'Col₂',\n fieldType: 'SUniversalPColumnId',\n defaultValue: () => undefined,\n },\n minDiff: {\n label: 'Margin (positive)',\n fieldType: 'number?',\n defaultValue: () => undefined,\n },\n },\n supportedFor: (spec1: SimplifiedPColumnSpec, spec2?: SimplifiedPColumnSpec): boolean => {\n return isNumericValueType(spec1) && (spec2 === undefined || isNumericValueType(spec2));\n },\n },\n lessThanColumnOrEqual: {\n label: 'Col₁ ≤ Col₂ (Compare Columns)',\n form: {\n column: {\n label: 'Col₁',\n fieldType: 'SUniversalPColumnId',\n defaultValue: () => undefined,\n },\n type: {\n label: 'Predicate',\n fieldType: 'FilterType',\n defaultValue: () => 'lessThanColumnOrEqual',\n },\n rhs: {\n label: 'Col₂',\n fieldType: 'SUniversalPColumnId',\n defaultValue: () => undefined,\n },\n minDiff: {\n label: 'Margin (positive)',\n fieldType: 'number?',\n defaultValue: () => undefined,\n },\n },\n supportedFor: (spec1: SimplifiedPColumnSpec, spec2?: SimplifiedPColumnSpec): boolean => {\n return isNumericValueType(spec1) && (spec2 === undefined || isNumericValueType(spec2));\n },\n },\n greaterThanColumnOrEqual: {\n label: 'Col₁ ≥ Col₂ (Compare Columns)',\n form: {\n column: {\n label: 'Col₁',\n fieldType: 'SUniversalPColumnId',\n defaultValue: () => undefined,\n },\n type: {\n label: 'Predicate',\n fieldType: 'FilterType',\n defaultValue: () => 'greaterThanColumnOrEqual',\n },\n rhs: {\n label: 'Col₂',\n fieldType: 'SUniversalPColumnId',\n defaultValue: () => undefined,\n },\n minDiff: {\n label: 'Margin (positive)',\n fieldType: 'number?',\n defaultValue: () => undefined,\n },\n },\n supportedFor: (spec1: SimplifiedPColumnSpec, spec2?: SimplifiedPColumnSpec): boolean => {\n return isNumericValueType(spec1) && (spec2 === undefined || isNumericValueType(spec2));\n },\n },\n // Ordering filters\n topN: {\n label: 'Top N',\n form: {\n column: {\n label: 'Rank By Column',\n fieldType: 'SUniversalPColumnId',\n defaultValue: () => undefined,\n },\n type: {\n label: 'Predicate',\n fieldType: 'FilterType',\n defaultValue: () => 'topN',\n },\n n: {\n label: 'N',\n fieldType: 'number',\n defaultValue: () => 10,\n },\n },\n supportedFor: isNumericValueType,\n },\n bottomN: {\n label: 'Bottom N',\n form: {\n column: {\n label: 'Rank By Column',\n fieldType: 'SUniversalPColumnId',\n defaultValue: () => undefined,\n },\n type: {\n label: 'Predicate',\n fieldType: 'FilterType',\n defaultValue: () => 'bottomN',\n },\n n: {\n label: 'N',\n fieldType: 'number',\n defaultValue: () => 10,\n },\n },\n supportedFor: isNumericValueType,\n },\n patternContainSubsequence: {\n label: 'Col ~ Seq (Contain Subsequence)',\n form: {\n column: {\n label: 'Column',\n fieldType: 'SUniversalPColumnId',\n defaultValue: () => undefined,\n },\n type: {\n label: 'Predicate',\n fieldType: 'FilterType',\n defaultValue: () => 'patternContainSubsequence',\n },\n value: {\n label: 'Seq',\n fieldType: 'string',\n defaultValue: () => '',\n },\n },\n supportedFor: isStringValueType,\n },\n patternNotContainSubsequence: {\n label: 'Col ≁ Seq (Not Contain Subsequence)',\n form: {\n column: {\n label: 'Column',\n fieldType: 'SUniversalPColumnId',\n defaultValue: () => undefined,\n },\n type: {\n label: 'Predicate',\n fieldType: 'FilterType',\n defaultValue: () => 'patternNotContainSubsequence',\n },\n value: {\n label: 'Seq',\n fieldType: 'string',\n defaultValue: () => '',\n },\n },\n supportedFor: isStringValueType,\n },\n patternEquals: {\n label: 'Col = Seq (Equals)',\n form: {\n column: {\n label: 'Column',\n fieldType: 'SUniversalPColumnId',\n defaultValue: () => undefined,\n },\n type: {\n label: 'Predicate',\n fieldType: 'FilterType',\n defaultValue: () => 'patternEquals',\n },\n value: {\n label: 'Seq',\n fieldType: 'string',\n defaultValue: () => '',\n },\n },\n supportedFor: isStringValueType,\n },\n patternNotEquals: {\n label: 'Col ≠ Seq (Not Equal)',\n form: {\n column: {\n label: 'Column',\n fieldType: 'SUniversalPColumnId',\n defaultValue: () => undefined,\n },\n type: {\n label: 'Predicate',\n fieldType: 'FilterType',\n defaultValue: () => 'patternNotEquals',\n },\n value: {\n label: 'Seq',\n fieldType: 'string',\n defaultValue: () => '',\n },\n },\n supportedFor: isStringValueType,\n },\n isNA: {\n label: 'Is NA',\n form: {\n column: {\n label: 'Column',\n fieldType: 'SUniversalPColumnId',\n defaultValue: () => undefined,\n },\n type: {\n label: 'Predicate',\n fieldType: 'FilterType',\n defaultValue: () => 'isNA',\n },\n },\n supportedFor: () => true,\n },\n isNotNA: {\n label: 'Is Not NA',\n form: {\n column: {\n label: 'Column',\n fieldType: 'SUniversalPColumnId',\n defaultValue: () => undefined,\n },\n type: {\n label: 'Predicate',\n fieldType: 'FilterType',\n defaultValue: () => 'isNotNA',\n },\n },\n supportedFor: () => true,\n },\n or: {\n label: 'Or',\n form: {\n type: {\n fieldType: 'FilterType',\n label: 'Predicate',\n defaultValue: () => 'or',\n },\n filters: {\n fieldType: 'unknown[]',\n label: 'Filters',\n defaultValue: () => [],\n },\n },\n supportedFor: () => false,\n },\n and: {\n label: 'And',\n form: {\n type: {\n fieldType: 'FilterType',\n label: 'Predicate',\n defaultValue: () => 'and',\n },\n filters: {\n fieldType: 'unknown[]',\n label: 'Filters',\n defaultValue: () => [],\n },\n },\n supportedFor: () => false,\n },\n not: {\n label: 'Not',\n form: {\n type: {\n fieldType: 'FilterType',\n label: 'Predicate',\n defaultValue: () => 'not',\n },\n filter: {\n fieldType: 'form',\n label: 'Filter',\n defaultValue: () => undefined,\n },\n },\n supportedFor: () => false,\n },\n} satisfies FilterSpecMetadataRecord<FilterSpecType>;\n\nexport function getFilterUiTypeOptions(columnSpec?: SimplifiedPColumnSpec) {\n if (!columnSpec) {\n return [];\n }\n\n return Object.entries(filterUiMetadata).filter(([_, metadata]) => metadata.supportedFor(columnSpec)).map(([type, metadata]) => ({\n label: metadata.label,\n value: type,\n }));\n}\n\nexport function getFilterUiMetadata(type: FilterSpecType) {\n return filterUiMetadata[type];\n}\n\nfunction isNumericValueType(spec: SimplifiedPColumnSpec): boolean {\n return spec.valueType === 'Int' || spec.valueType === 'Long' || spec.valueType === 'Float' || spec.valueType === 'Double';\n}\n\nfunction isStringValueType(spec: SimplifiedPColumnSpec): boolean {\n return spec.valueType === 'String';\n}\n"],"names":["filterUiMetadata","isNumericValueType","spec1","spec2","isStringValueType","getFilterUiTypeOptions","columnSpec","_","metadata","type","getFilterUiMetadata","spec"],"mappings":"AAGO,MAAMA,IAAmB;AAAA,EAC9B,OAAO;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,MAEtB,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,MAEtB,GAAG;AAAA,QACD,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,IACtB;AAAA,IAEF,cAAcC;AAAA,EAAA;AAAA,EAEhB,UAAU;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,MAEtB,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,MAEtB,GAAG;AAAA,QACD,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,IACtB;AAAA,IAEF,cAAcA;AAAA,EAAA;AAAA,EAEhB,aAAa;AAAA,IACX,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,MAEtB,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,MAEtB,GAAG;AAAA,QACD,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,IACtB;AAAA,IAEF,cAAcA;AAAA,EAAA;AAAA,EAEhB,iBAAiB;AAAA,IACf,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,MAEtB,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,MAEtB,GAAG;AAAA,QACD,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,IACtB;AAAA,IAEF,cAAcA;AAAA,EAAA;AAAA,EAEhB,oBAAoB;AAAA,IAClB,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,MAEtB,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,MAEtB,GAAG;AAAA,QACD,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,IACtB;AAAA,IAEF,cAAcA;AAAA,EAAA;AAAA;AAAA,EAGhB,eAAe;AAAA,IACb,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,MAEtB,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,MAEtB,KAAK;AAAA,QACH,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,IACtB;AAAA,IAEF,cAAc,CAACC,GAA8BC,MACpCF,EAAmBC,CAAK,MAAMC,MAAU,UAAaF,EAAmBE,CAAK;AAAA,EACtF;AAAA,EAEF,gBAAgB;AAAA,IACd,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,MAEtB,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,MAEtB,KAAK;AAAA,QACH,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,MAEtB,SAAS;AAAA,QACP,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,IACtB;AAAA,IAEF,cAAc,CAACD,GAA8BC,MACpCF,EAAmBC,CAAK,MAAMC,MAAU,UAAaF,EAAmBE,CAAK;AAAA,EACtF;AAAA,EAEF,mBAAmB;AAAA,IACjB,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,MAEtB,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,MAEtB,KAAK;AAAA,QACH,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,MAEtB,SAAS;AAAA,QACP,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,IACtB;AAAA,IAEF,cAAc,CAACD,GAA8BC,MACpCF,EAAmBC,CAAK,MAAMC,MAAU,UAAaF,EAAmBE,CAAK;AAAA,EACtF;AAAA,EAEF,uBAAuB;AAAA,IACrB,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,MAEtB,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,MAEtB,KAAK;AAAA,QACH,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,MAEtB,SAAS;AAAA,QACP,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,IACtB;AAAA,IAEF,cAAc,CAACD,GAA8BC,MACpCF,EAAmBC,CAAK,MAAMC,MAAU,UAAaF,EAAmBE,CAAK;AAAA,EACtF;AAAA,EAEF,0BAA0B;AAAA,IACxB,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,MAEtB,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,MAEtB,KAAK;AAAA,QACH,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,MAEtB,SAAS;AAAA,QACP,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,IACtB;AAAA,IAEF,cAAc,CAACD,GAA8BC,MACpCF,EAAmBC,CAAK,MAAMC,MAAU,UAAaF,EAAmBE,CAAK;AAAA,EACtF;AAAA;AAAA,EAGF,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,MAEtB,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,MAEtB,GAAG;AAAA,QACD,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,IACtB;AAAA,IAEF,cAAcF;AAAA,EAAA;AAAA,EAEhB,SAAS;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,MAEtB,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,MAEtB,GAAG;AAAA,QACD,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,IACtB;AAAA,IAEF,cAAcA;AAAA,EAAA;AAAA,EAEhB,2BAA2B;AAAA,IACzB,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,MAEtB,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,MAEtB,OAAO;AAAA,QACL,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,IACtB;AAAA,IAEF,cAAcG;AAAA,EAAA;AAAA,EAEhB,8BAA8B;AAAA,IAC5B,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,MAEtB,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,MAEtB,OAAO;AAAA,QACL,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,IACtB;AAAA,IAEF,cAAcA;AAAA,EAAA;AAAA,EAEhB,eAAe;AAAA,IACb,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,MAEtB,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,MAEtB,OAAO;AAAA,QACL,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,IACtB;AAAA,IAEF,cAAcA;AAAA,EAAA;AAAA,EAEhB,kBAAkB;AAAA,IAChB,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,MAEtB,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,MAEtB,OAAO;AAAA,QACL,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,IACtB;AAAA,IAEF,cAAcA;AAAA,EAAA;AAAA,EAEhB,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,MAEtB,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,IACtB;AAAA,IAEF,cAAc,MAAM;AAAA,EAAA;AAAA,EAEtB,SAAS;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,MAEtB,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,cAAc,MAAM;AAAA,MAAA;AAAA,IACtB;AAAA,IAEF,cAAc,MAAM;AAAA,EAAA;AAAA,EAEtB,IAAI;AAAA,IACF,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,MAAM;AAAA,QACJ,WAAW;AAAA,QACX,OAAO;AAAA,QACP,cAAc,MAAM;AAAA,MAAA;AAAA,MAEtB,SAAS;AAAA,QACP,WAAW;AAAA,QACX,OAAO;AAAA,QACP,cAAc,MAAM,CAAA;AAAA,MAAC;AAAA,IACvB;AAAA,IAEF,cAAc,MAAM;AAAA,EAAA;AAAA,EAEtB,KAAK;AAAA,IACH,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,MAAM;AAAA,QACJ,WAAW;AAAA,QACX,OAAO;AAAA,QACP,cAAc,MAAM;AAAA,MAAA;AAAA,MAEtB,SAAS;AAAA,QACP,WAAW;AAAA,QACX,OAAO;AAAA,QACP,cAAc,MAAM,CAAA;AAAA,MAAC;AAAA,IACvB;AAAA,IAEF,cAAc,MAAM;AAAA,EAAA;AAAA,EAEtB,KAAK;AAAA,IACH,OAAO;AAAA,IACP,MAAM;AAAA,MACJ,MAAM;AAAA,QACJ,WAAW;AAAA,QACX,OAAO;AAAA,QACP,cAAc,MAAM;AAAA,MAAA;AAAA,MAEtB,QAAQ;AAAA,QACN,WAAW;AAAA,QACX,OAAO;AAAA,QACP,cAAc,MAAA;AAAA;AAAA,MAAM;AAAA,IACtB;AAAA,IAEF,cAAc,MAAM;AAAA,EAAA;AAExB;AAEO,SAASC,EAAuBC,GAAoC;AACzE,SAAKA,IAIE,OAAO,QAAQN,CAAgB,EAAE,OAAO,CAAC,CAACO,GAAGC,CAAQ,MAAMA,EAAS,aAAaF,CAAU,CAAC,EAAE,IAAI,CAAC,CAACG,GAAMD,CAAQ,OAAO;AAAA,IAC9H,OAAOA,EAAS;AAAA,IAChB,OAAOC;AAAA,EAAA,EACP,IANO,CAAA;AAOX;AAEO,SAASC,EAAoBD,GAAsB;AACxD,SAAOT,EAAiBS,CAAI;AAC9B;AAEA,SAASR,EAAmBU,GAAsC;AAChE,SAAOA,EAAK,cAAc,SAASA,EAAK,cAAc,UAAUA,EAAK,cAAc,WAAWA,EAAK,cAAc;AACnH;AAEA,SAASP,EAAkBO,GAAsC;AAC/D,SAAOA,EAAK,cAAc;AAC5B;"}
@@ -0,0 +1,44 @@
1
+ import { FilterSpec, FilterSpecOfType, FilterSpecType, SimplifiedPColumnSpec, SUniversalPColumnId } from '@platforma-sdk/model';
2
+ /** Metadata about a single field in FilterSpec */
3
+ export type FilterSpecTypeField<V> = {
4
+ label: string;
5
+ fieldType: FilterSpecTypeToLiteral<V>;
6
+ defaultValue: () => V | undefined;
7
+ };
8
+ /** Converts each field in FilterSpec to FilterSpecTypeField */
9
+ export type FilterSpecTypeFieldRecord<T extends FilterSpec> = {
10
+ [K in keyof T]: FilterSpecTypeField<T[K]>;
11
+ };
12
+ /** Extracts FilterSpecOfType from FilterSpecType */
13
+ export type FilterSpecFormField<T extends FilterSpec> = {
14
+ [K in keyof T]: FilterSpecTypeField<T[K]>;
15
+ };
16
+ /** Metadata about all supported filter types */
17
+ export type FilterSpecMetadataRecord<T extends FilterSpecType> = {
18
+ [P in T]: {
19
+ label: string;
20
+ labelNot?: string;
21
+ form: FilterSpecFormField<FilterSpecOfType<P>>;
22
+ supportedFor: (spec1: SimplifiedPColumnSpec, spec2: SimplifiedPColumnSpec | undefined) => boolean;
23
+ };
24
+ };
25
+ /** Converts FilterSpecType to a literal string representing the type */
26
+ export type FilterSpecTypeToLiteral<T> = [
27
+ T
28
+ ] extends [FilterSpecType] ? 'FilterType' : [
29
+ T
30
+ ] extends [SUniversalPColumnId] ? 'SUniversalPColumnId' : [
31
+ T
32
+ ] extends [number] ? 'number' : [
33
+ T
34
+ ] extends [number | undefined] ? 'number?' : [
35
+ T
36
+ ] extends [string] ? 'string' : [
37
+ T
38
+ ] extends [string | undefined] ? 'string?' : [
39
+ T
40
+ ] extends [boolean] ? 'boolean' : [
41
+ T
42
+ ] extends [boolean | undefined] ? 'boolean?' : [
43
+ T
44
+ ] extends [unknown[]] ? 'unknown[]' : T extends number ? 'number' : T extends string ? 'string' : T extends boolean ? 'boolean' : T extends Record<string, unknown> ? 'form' : 'unknown';
package/dist/index.d.ts CHANGED
@@ -93,9 +93,10 @@ export { useScroll } from './composition/useScroll';
93
93
  export { useSortable } from './composition/useSortable';
94
94
  export { useSortable2 } from './composition/useSortable2';
95
95
  export { useTheme } from './composition/useTheme';
96
+ export * from './composition/computedCached';
97
+ export * from './composition/filters';
96
98
  export * from './composition/useWatchFetch';
97
99
  export * from './composition/watchCached';
98
- export * from './composition/computedCached';
99
100
  /**
100
101
  * Utils/Partials
101
102
  */