@truedat/qx 8.4.9 → 8.5.2

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 (52) hide show
  1. package/package.json +3 -3
  2. package/src/components/common/expressions/Clauses.js +5 -9
  3. package/src/components/common/expressions/Condition.js +36 -37
  4. package/src/components/common/expressions/__tests__/Clauses.spec.js +87 -0
  5. package/src/components/common/expressions/__tests__/Condition.spec.js +220 -1
  6. package/src/components/common/expressions/__tests__/__snapshots__/Clauses.spec.js.snap +22 -21
  7. package/src/components/common/expressions/__tests__/__snapshots__/Condition.spec.js.snap +212 -214
  8. package/src/components/dataViews/queryableProperties/GroupBy.js +4 -2
  9. package/src/components/dataViews/queryableProperties/__tests__/GroupBy.spec.js +134 -28
  10. package/src/components/qualityControls/ControlProperties.js +32 -16
  11. package/src/components/qualityControls/ControlPropertiesForm.js +3 -3
  12. package/src/components/qualityControls/ControlPropertiesSummary.js +127 -104
  13. package/src/components/qualityControls/ControlPropertiesView.js +48 -74
  14. package/src/components/qualityControls/InformationForm.js +181 -180
  15. package/src/components/qualityControls/ScoreCriteria.js +0 -4
  16. package/src/components/qualityControls/ScoreCriteriaView.js +6 -9
  17. package/src/components/qualityControls/__tests__/ControlProperties.spec.js +47 -16
  18. package/src/components/qualityControls/__tests__/ControlPropertiesForm.spec.js +100 -0
  19. package/src/components/qualityControls/__tests__/ControlPropertiesSummary.spec.js +141 -0
  20. package/src/components/qualityControls/__tests__/ControlPropertiesView.spec.js +102 -11
  21. package/src/components/qualityControls/__tests__/EditQualityControl.spec.js +27 -3
  22. package/src/components/qualityControls/__tests__/InformationForm.spec.js +342 -0
  23. package/src/components/qualityControls/__tests__/NewDraftQualityControl.spec.js +26 -6
  24. package/src/components/qualityControls/__tests__/NewQualityControl.spec.js +66 -20
  25. package/src/components/qualityControls/__tests__/QualityBadge.spec.js +30 -3
  26. package/src/components/qualityControls/__tests__/QualityControlEditor.spec.js +282 -45
  27. package/src/components/qualityControls/__tests__/ScoreCriteria.spec.js +25 -3
  28. package/src/components/qualityControls/__tests__/ScoreCriteriaView.spec.js +19 -3
  29. package/src/components/qualityControls/__tests__/__fixtures__/qualityControlHelper.js +1 -1
  30. package/src/components/qualityControls/__tests__/__snapshots__/ControlProperties.spec.js.snap +13 -1
  31. package/src/components/qualityControls/__tests__/__snapshots__/ControlPropertiesView.spec.js.snap +70 -40
  32. package/src/components/qualityControls/__tests__/__snapshots__/EditQualityControl.spec.js.snap +118 -132
  33. package/src/components/qualityControls/__tests__/__snapshots__/NewDraftQualityControl.spec.js.snap +118 -132
  34. package/src/components/qualityControls/__tests__/__snapshots__/NewQualityControl.spec.js.snap +0 -13
  35. package/src/components/qualityControls/__tests__/__snapshots__/QualityBadge.spec.js.snap +15 -5
  36. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlEditor.spec.js.snap +488 -125
  37. package/src/components/qualityControls/__tests__/__snapshots__/ScoreCriteria.spec.js.snap +13 -5
  38. package/src/components/qualityControls/__tests__/qualityByControlMode.spec.js +65 -14
  39. package/src/components/qualityControls/controlProperties/{Ratio.js → ResourceWithValidation.js} +19 -10
  40. package/src/components/qualityControls/controlProperties/__tests__/ResourceWithValidation.spec.js +192 -0
  41. package/src/components/qualityControls/qualityByControlMode.js +6 -30
  42. package/src/components/qualityControls/scoreCriterias/ErrorCount.js +0 -1
  43. package/src/components/qualityControls/scoreCriterias/__tests__/ErrorCount.spec.js +4 -4
  44. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/GroupBy.spec.js.snap +0 -604
  45. package/src/components/qualityControls/controlProperties/Count.js +0 -56
  46. package/src/components/qualityControls/controlProperties/__tests__/Count.spec.js +0 -66
  47. package/src/components/qualityControls/controlProperties/__tests__/Ratio.spec.js +0 -95
  48. package/src/components/qualityControls/controlProperties/__tests__/__snapshots__/Count.spec.js.snap +0 -67
  49. package/src/components/qualityControls/controlProperties/__tests__/__snapshots__/Ratio.spec.js.snap +0 -161
  50. package/src/components/qualityControls/scoreCriterias/Count.js +0 -88
  51. package/src/components/qualityControls/scoreCriterias/__tests__/Count.spec.js +0 -62
  52. package/src/components/qualityControls/scoreCriterias/__tests__/__snapshots__/Count.spec.js.snap +0 -58
@@ -1,604 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`<GroupBy /> matches the latest snapshot 1`] = `
4
- <div>
5
- <div
6
- class="required field"
7
- >
8
- <label>
9
- queryables.group_by.form.group_fields
10
- </label>
11
- <div
12
- class="ui list"
13
- role="list"
14
- >
15
- <div
16
- class="item"
17
- role="listitem"
18
- >
19
- <div>
20
- <div
21
- class="ui grid"
22
- >
23
- <div
24
- class="row"
25
- >
26
- <div
27
- class="column"
28
- />
29
- <div
30
- class="nine wide column"
31
- >
32
- <div
33
- class="ui grid"
34
- >
35
- <div
36
- class="sixteen wide column"
37
- >
38
- <div
39
- class="expression-container"
40
- >
41
- <div
42
- aria-expanded="false"
43
- class="ui top left pointing dropdown"
44
- role="listbox"
45
- tabindex="0"
46
- >
47
- <div
48
- class="shape-selector-trigger"
49
- >
50
- f(x)
51
- </div>
52
- <div
53
- class="menu transition"
54
- >
55
- <div
56
- aria-checked="false"
57
- aria-selected="false"
58
- class="item"
59
- role="option"
60
- style="pointer-events: all;"
61
- >
62
- <div
63
- class="text flex-center"
64
- >
65
- <small
66
- style="margin-right: 5px;"
67
- >
68
- <b>
69
- <code>
70
- [π]
71
- </code>
72
- </b>
73
- </small>
74
- functions.expression.shape.constant
75
- </div>
76
- </div>
77
- <div
78
- aria-checked="true"
79
- aria-selected="true"
80
- class="active selected item"
81
- role="option"
82
- style="pointer-events: all;"
83
- >
84
- <div
85
- class="text flex-center"
86
- >
87
- <small
88
- style="margin-right: 5px;"
89
- >
90
- <b>
91
- <code>
92
- f(x)
93
- </code>
94
- </b>
95
- </small>
96
- functions.expression.shape.function
97
- </div>
98
- </div>
99
- </div>
100
- </div>
101
- <div
102
- class="accordion ui fluid no-margin"
103
- >
104
- <div
105
- class="active title no-padding"
106
- >
107
- <div
108
- class="flex-center"
109
- >
110
- <i
111
- aria-hidden="true"
112
- class="dropdown icon"
113
- />
114
- <div
115
- class="sixteen wide field"
116
- >
117
- <div
118
- aria-expanded="false"
119
- class="ui fluid search selection dropdown"
120
- role="combobox"
121
- >
122
- <input
123
- aria-autocomplete="list"
124
- autocomplete="off"
125
- class="search"
126
- tabindex="0"
127
- type="text"
128
- value=""
129
- />
130
- <div
131
- aria-atomic="true"
132
- aria-live="polite"
133
- class="divider text"
134
- role="alert"
135
- >
136
- functions.form.expression.function.placeholder
137
- </div>
138
- <i
139
- aria-hidden="true"
140
- class="dropdown icon"
141
- />
142
- <div
143
- class="menu transition"
144
- role="listbox"
145
- >
146
- <div
147
- class="message"
148
- >
149
- No results found.
150
- </div>
151
- </div>
152
- </div>
153
- </div>
154
- </div>
155
- </div>
156
- <div
157
- class="content active no-padding"
158
- />
159
- </div>
160
- </div>
161
- </div>
162
- </div>
163
- </div>
164
- <div
165
- class="six wide column"
166
- >
167
- <div
168
- class="inline fields no-margin"
169
- >
170
- <div
171
- class="field"
172
- >
173
- <div
174
- class="ui input"
175
- >
176
- <input
177
- autocomplete="off"
178
- placeholder="queryables.select.form.alias"
179
- type="text"
180
- />
181
- </div>
182
- </div>
183
- </div>
184
- </div>
185
- </div>
186
- </div>
187
- </div>
188
- </div>
189
- <div
190
- class="item"
191
- role="listitem"
192
- >
193
- <div>
194
- <div
195
- class="ui grid"
196
- >
197
- <div
198
- class="row"
199
- >
200
- <div
201
- class="column"
202
- />
203
- <div
204
- class="nine wide column"
205
- >
206
- <div
207
- class="ui grid"
208
- >
209
- <div
210
- class="sixteen wide column"
211
- >
212
- <div
213
- class="expression-container"
214
- >
215
- <div
216
- aria-expanded="false"
217
- class="ui top left pointing dropdown"
218
- role="listbox"
219
- tabindex="0"
220
- >
221
- <div
222
- class="shape-selector-trigger"
223
- >
224
- f(x)
225
- </div>
226
- <div
227
- class="menu transition"
228
- >
229
- <div
230
- aria-checked="false"
231
- aria-selected="false"
232
- class="item"
233
- role="option"
234
- style="pointer-events: all;"
235
- >
236
- <div
237
- class="text flex-center"
238
- >
239
- <small
240
- style="margin-right: 5px;"
241
- >
242
- <b>
243
- <code>
244
- [π]
245
- </code>
246
- </b>
247
- </small>
248
- functions.expression.shape.constant
249
- </div>
250
- </div>
251
- <div
252
- aria-checked="true"
253
- aria-selected="true"
254
- class="active selected item"
255
- role="option"
256
- style="pointer-events: all;"
257
- >
258
- <div
259
- class="text flex-center"
260
- >
261
- <small
262
- style="margin-right: 5px;"
263
- >
264
- <b>
265
- <code>
266
- f(x)
267
- </code>
268
- </b>
269
- </small>
270
- functions.expression.shape.function
271
- </div>
272
- </div>
273
- </div>
274
- </div>
275
- <div
276
- class="accordion ui fluid no-margin"
277
- >
278
- <div
279
- class="active title no-padding"
280
- >
281
- <div
282
- class="flex-center"
283
- >
284
- <i
285
- aria-hidden="true"
286
- class="dropdown icon"
287
- />
288
- <div
289
- class="sixteen wide field"
290
- >
291
- <div
292
- aria-expanded="false"
293
- class="ui fluid search selection dropdown"
294
- role="combobox"
295
- >
296
- <input
297
- aria-autocomplete="list"
298
- autocomplete="off"
299
- class="search"
300
- tabindex="0"
301
- type="text"
302
- value=""
303
- />
304
- <div
305
- aria-atomic="true"
306
- aria-live="polite"
307
- class="divider text"
308
- role="alert"
309
- >
310
- functions.form.expression.function.placeholder
311
- </div>
312
- <i
313
- aria-hidden="true"
314
- class="dropdown icon"
315
- />
316
- <div
317
- class="menu transition"
318
- role="listbox"
319
- >
320
- <div
321
- class="message"
322
- >
323
- No results found.
324
- </div>
325
- </div>
326
- </div>
327
- </div>
328
- </div>
329
- </div>
330
- <div
331
- class="content active no-padding"
332
- />
333
- </div>
334
- </div>
335
- </div>
336
- </div>
337
- </div>
338
- <div
339
- class="six wide column"
340
- >
341
- <div
342
- class="inline fields no-margin"
343
- >
344
- <div
345
- class="field"
346
- >
347
- <div
348
- class="ui input"
349
- >
350
- <input
351
- autocomplete="off"
352
- placeholder="queryables.select.form.alias"
353
- type="text"
354
- value=""
355
- />
356
- </div>
357
- </div>
358
- </div>
359
- </div>
360
- </div>
361
- </div>
362
- </div>
363
- </div>
364
- <div
365
- class="item"
366
- role="listitem"
367
- >
368
- <div
369
- class="ui medium basic buttons"
370
- >
371
- <button
372
- class="ui button"
373
- >
374
- <i
375
- aria-hidden="true"
376
- class="plus icon"
377
- />
378
- queryables.group_by.form.add_group_field
379
- </button>
380
- </div>
381
- </div>
382
- </div>
383
- </div>
384
- <div
385
- class="field"
386
- >
387
- <label>
388
- queryables.group_by.form.aggregate_fields
389
- </label>
390
- <div
391
- class="ui list"
392
- role="list"
393
- >
394
- <div
395
- class="item"
396
- role="listitem"
397
- >
398
- <div>
399
- <div
400
- class="ui grid"
401
- >
402
- <div
403
- class="row"
404
- >
405
- <div
406
- class="column"
407
- />
408
- <div
409
- class="nine wide column"
410
- >
411
- <div
412
- class="ui grid"
413
- >
414
- <div
415
- class="sixteen wide column"
416
- >
417
- <div
418
- class="expression-container"
419
- />
420
- </div>
421
- </div>
422
- </div>
423
- <div
424
- class="six wide column"
425
- >
426
- <div
427
- class="inline fields no-margin"
428
- >
429
- <div
430
- class="field"
431
- >
432
- <div
433
- class="ui input"
434
- >
435
- <input
436
- autocomplete="off"
437
- placeholder="queryables.select.form.alias"
438
- type="text"
439
- />
440
- </div>
441
- </div>
442
- </div>
443
- </div>
444
- </div>
445
- </div>
446
- </div>
447
- </div>
448
- <div
449
- class="item"
450
- role="listitem"
451
- >
452
- <div>
453
- <div
454
- class="ui grid"
455
- >
456
- <div
457
- class="row"
458
- >
459
- <div
460
- class="column"
461
- />
462
- <div
463
- class="nine wide column"
464
- >
465
- <div
466
- class="ui grid"
467
- >
468
- <div
469
- class="sixteen wide column"
470
- >
471
- <div
472
- class="expression-container"
473
- >
474
- <div
475
- class="accordion ui fluid no-margin"
476
- >
477
- <div
478
- class="active title no-padding"
479
- >
480
- <div
481
- class="flex-center"
482
- >
483
- <i
484
- aria-hidden="true"
485
- class="dropdown icon"
486
- />
487
- <div
488
- class="sixteen wide field"
489
- >
490
- <div
491
- aria-expanded="false"
492
- class="ui fluid search selection dropdown"
493
- role="combobox"
494
- >
495
- <input
496
- aria-autocomplete="list"
497
- autocomplete="off"
498
- class="search"
499
- tabindex="0"
500
- type="text"
501
- value=""
502
- />
503
- <div
504
- aria-atomic="true"
505
- aria-live="polite"
506
- class="divider text"
507
- role="alert"
508
- >
509
- functions.form.expression.function.placeholder
510
- </div>
511
- <i
512
- aria-hidden="true"
513
- class="dropdown icon"
514
- />
515
- <div
516
- class="menu transition"
517
- role="listbox"
518
- >
519
- <div
520
- aria-checked="false"
521
- aria-selected="true"
522
- class="selected item"
523
- role="option"
524
- style="pointer-events: all;"
525
- >
526
- <div
527
- class="ui header"
528
- >
529
- <div
530
- class="flex-center"
531
- >
532
- <div>
533
- func
534
- </div>
535
- <div
536
- class="function-params-label"
537
- />
538
- </div>
539
- </div>
540
- <div
541
- class="sub header"
542
- />
543
- </div>
544
- </div>
545
- </div>
546
- </div>
547
- </div>
548
- </div>
549
- <div
550
- class="content active no-padding"
551
- />
552
- </div>
553
- </div>
554
- </div>
555
- </div>
556
- </div>
557
- <div
558
- class="six wide column"
559
- >
560
- <div
561
- class="inline fields no-margin"
562
- >
563
- <div
564
- class="field"
565
- >
566
- <div
567
- class="ui input"
568
- >
569
- <input
570
- autocomplete="off"
571
- placeholder="queryables.select.form.alias"
572
- type="text"
573
- value=""
574
- />
575
- </div>
576
- </div>
577
- </div>
578
- </div>
579
- </div>
580
- </div>
581
- </div>
582
- </div>
583
- <div
584
- class="item"
585
- role="listitem"
586
- >
587
- <div
588
- class="ui medium basic buttons"
589
- >
590
- <button
591
- class="ui button"
592
- >
593
- <i
594
- aria-hidden="true"
595
- class="plus icon"
596
- />
597
- queryables.group_by.form.add_aggregate_field
598
- </button>
599
- </div>
600
- </div>
601
- </div>
602
- </div>
603
- </div>
604
- `;
@@ -1,56 +0,0 @@
1
- import _ from "lodash/fp";
2
- import { use } from "react";
3
- import { useQuery } from "@apollo/client";
4
- import { useFormContext } from "react-hook-form";
5
- import { Loading } from "@truedat/core/components";
6
- import { lowerDeburrTrim } from "@truedat/core/services/sort";
7
- import { REFERENCE_DATASETS_HEADERS_QUERY } from "@truedat/dd/api/queries";
8
- import QxContext from "@truedat/qx/components/QxContext";
9
- import { useDataViews } from "@truedat/qx/hooks/useDataViews";
10
- import { useFunctions } from "@truedat/qx/hooks/useFunctions";
11
- import ResourceSelector from "@truedat/qx/components/common/ResourceSelector";
12
-
13
- export default function Count() {
14
- const { field } = use(QxContext);
15
- const { watch } = useFormContext();
16
-
17
- const formData = watch();
18
- const { source_id: sourceId } = formData;
19
-
20
- const { data, loading: dataViewsLoading } = useDataViews();
21
- const { data: functionsData, loading: functionsLoading } = useFunctions();
22
- const { data: referenceDatasetsData, loading: referenceDatasetsLoading } =
23
- useQuery(REFERENCE_DATASETS_HEADERS_QUERY);
24
-
25
- const loading =
26
- dataViewsLoading || functionsLoading || referenceDatasetsLoading;
27
-
28
- const dataViews = _.orderBy(["id"], ["asc"])(data?.data);
29
- const functions = functionsData?.data;
30
- const referenceDatasets = _.flow(
31
- _.getOr([], "referenceDatasets"),
32
- _.sortBy([({ name }) => lowerDeburrTrim(name), "name"]),
33
- _.map((row) => ({ ...row, id: Number(row?.id) }))
34
- )(referenceDatasetsData);
35
-
36
- const context = {
37
- dataViews,
38
- referenceDatasets,
39
- functions,
40
- };
41
-
42
- return loading ? (
43
- <Loading />
44
- ) : (
45
- <>
46
- <QxContext
47
- value={{ ...context, sourceId, field: `${field}.errors_resource` }}
48
- >
49
- <ResourceSelector
50
- required
51
- labelId="quality_control.form.control_properties.count.errors_resource"
52
- />
53
- </QxContext>
54
- </>
55
- );
56
- }