@truedat/qx 7.13.6 → 7.13.8

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 (74) hide show
  1. package/package.json +3 -3
  2. package/src/components/QxRoutes.js +8 -6
  3. package/src/components/common/ResourceSelector.js +25 -6
  4. package/src/components/common/TypeSelector.js +14 -9
  5. package/src/components/common/__tests__/__snapshots__/ResourceSelector.spec.js.snap +269 -241
  6. package/src/components/common/__tests__/__snapshots__/TypeSelector.spec.js.snap +198 -190
  7. package/src/components/common/expressions/Clauses.js +19 -11
  8. package/src/components/common/expressions/Condition.js +32 -31
  9. package/src/components/common/expressions/FieldSelector.js +30 -16
  10. package/src/components/common/expressions/FunctionSelector.js +38 -23
  11. package/src/components/common/expressions/ShapeSelector.js +6 -5
  12. package/src/components/common/expressions/__tests__/ShapeSelector.spec.js +1 -1
  13. package/src/components/common/expressions/__tests__/__snapshots__/Clauses.spec.js.snap +36 -12
  14. package/src/components/common/expressions/__tests__/__snapshots__/Condition.spec.js.snap +87 -75
  15. package/src/components/common/expressions/__tests__/__snapshots__/ConstantSelector.spec.js.snap +99 -97
  16. package/src/components/common/expressions/__tests__/__snapshots__/Expression.spec.js.snap +236 -216
  17. package/src/components/common/expressions/__tests__/__snapshots__/FunctionArgs.spec.js.snap +97 -89
  18. package/src/components/common/expressions/__tests__/__snapshots__/FunctionSelector.spec.js.snap +373 -345
  19. package/src/components/common/expressions/constantInputs/AnySelector.js +2 -1
  20. package/src/components/common/expressions/constantInputs/BooleanSelector.js +20 -15
  21. package/src/components/common/expressions/constantInputs/DefaultSelector.js +0 -1
  22. package/src/components/common/expressions/constantInputs/__tests__/__snapshots__/AnySelector.spec.js.snap +189 -182
  23. package/src/components/common/expressions/constantInputs/__tests__/__snapshots__/BooleanSelector.spec.js.snap +74 -66
  24. package/src/components/common/expressions/constantInputs/__tests__/__snapshots__/DefaultSelector.spec.js.snap +2 -4
  25. package/src/components/common/resourceSelectors/DataStructureSelector.js +5 -4
  26. package/src/components/common/resourceSelectors/DataViewSelector.js +4 -3
  27. package/src/components/common/resourceSelectors/ReferenceDatasetSelector.js +4 -3
  28. package/src/components/common/resourceSelectors/__tests__/__snapshots__/DataStructureSelector.spec.js.snap +65 -61
  29. package/src/components/common/resourceSelectors/__tests__/__snapshots__/DataViewSelector.spec.js.snap +38 -34
  30. package/src/components/common/resourceSelectors/__tests__/__snapshots__/ReferenceDatasetSelector.spec.js.snap +38 -34
  31. package/src/components/dataViews/BreadCrumb.js +20 -0
  32. package/src/components/dataViews/DataViewEditor.js +169 -178
  33. package/src/components/dataViews/DataViews.js +113 -135
  34. package/src/components/dataViews/__tests__/AdvancedDataViewEditor.spec.js +260 -0
  35. package/src/components/dataViews/__tests__/DataViewEditor.spec.js +173 -239
  36. package/src/components/dataViews/__tests__/DataViewSelect.spec.js +1 -1
  37. package/src/components/dataViews/__tests__/DataViews.spec.js +124 -51
  38. package/src/components/dataViews/__tests__/Queryable.spec.js +1 -1
  39. package/src/components/dataViews/__tests__/Queryables.spec.js +1 -1
  40. package/src/components/dataViews/__tests__/SimpleDataViewEditor.spec.js +164 -0
  41. package/src/components/dataViews/__tests__/__snapshots__/{DataViewEditor.spec.js.snap → AdvancedDataViewEditor.spec.js.snap} +230 -200
  42. package/src/components/dataViews/__tests__/__snapshots__/DataViews.spec.js.snap +141 -29
  43. package/src/components/dataViews/__tests__/__snapshots__/Queryable.spec.js.snap +184 -141
  44. package/src/components/dataViews/__tests__/__snapshots__/Queryables.spec.js.snap +126 -91
  45. package/src/components/dataViews/actions/CancelButton.js +33 -0
  46. package/src/components/dataViews/actions/DeleteButton.js +33 -0
  47. package/src/components/dataViews/advancedForm/AdvancedDataViewEditor.js +159 -0
  48. package/src/components/dataViews/{DataViewSelect.js → advancedForm/DataViewSelect.js} +2 -2
  49. package/src/components/dataViews/{Queryable.js → advancedForm/Queryable.js} +2 -2
  50. package/src/components/dataViews/queryableFunctions.js +7 -0
  51. package/src/components/dataViews/queryableProperties/GroupBy.js +23 -27
  52. package/src/components/dataViews/queryableProperties/Join.js +0 -3
  53. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/From.spec.js.snap +30 -26
  54. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/GroupBy.spec.js.snap +130 -102
  55. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/Join.spec.js.snap +42 -31
  56. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/Select.spec.js.snap +81 -69
  57. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/SelectField.spec.js.snap +62 -54
  58. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/Where.spec.js.snap +12 -4
  59. package/src/components/dataViews/simpleForm/AggregationForm.js +179 -0
  60. package/src/components/dataViews/simpleForm/DatasetForm.js +199 -0
  61. package/src/components/dataViews/simpleForm/FormQueryable.js +114 -0
  62. package/src/components/dataViews/simpleForm/InformationForm.js +107 -0
  63. package/src/components/dataViews/simpleForm/SelectionForm.js +50 -0
  64. package/src/components/dataViews/simpleForm/SimpleDataViewEditor.js +265 -0
  65. package/src/components/functions/__tests__/__snapshots__/FunctionEditor.spec.js.snap +663 -631
  66. package/src/components/functions/__tests__/__snapshots__/FunctionParams.spec.js.snap +113 -109
  67. package/src/components/qualityControls/__tests__/__snapshots__/ControlProperties.spec.js.snap +92 -76
  68. package/src/components/qualityControls/__tests__/__snapshots__/EditQualityControl.spec.js.snap +108 -80
  69. package/src/components/qualityControls/__tests__/__snapshots__/NewDraftQualityControl.spec.js.snap +108 -80
  70. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlEditor.spec.js.snap +108 -80
  71. package/src/components/qualityControls/controlProperties/__tests__/__snapshots__/Count.spec.js.snap +40 -36
  72. package/src/components/qualityControls/controlProperties/__tests__/__snapshots__/Ratio.spec.js.snap +92 -76
  73. package/src/hooks/useDataViews.js +7 -0
  74. /package/src/components/dataViews/{Queryables.js → advancedForm/Queryables.js} +0 -0
@@ -24,13 +24,14 @@ export default function AnySelector() {
24
24
  <TypeSelector
25
25
  onBlur={onBlur}
26
26
  value={type}
27
- error={error?.message}
27
+ error={error}
28
28
  onChange={(_e, { value }) => {
29
29
  setValue(`${field}.value.value`, "");
30
30
  onChange(value);
31
31
  }}
32
32
  withoutTypeAny
33
33
  />
34
+
34
35
  )}
35
36
  />
36
37
  {type ? (
@@ -1,7 +1,8 @@
1
1
  import { use } from "react";
2
2
  import { useIntl } from "react-intl";
3
3
  import { Controller, useFormContext } from "react-hook-form";
4
- import { Dropdown } from "semantic-ui-react";
4
+ import { Dropdown, Form, Label } from "semantic-ui-react";
5
+
5
6
  import QxContext from "@truedat/qx/components/QxContext";
6
7
 
7
8
  export default function BooleanSelector() {
@@ -13,24 +14,28 @@ export default function BooleanSelector() {
13
14
  <Controller
14
15
  control={control}
15
16
  name={`${field}.value.value`}
16
- rules={{ required: true }}
17
+ rules={{
18
+ required: formatMessage({ id: "functions.form.required" }),
19
+ }}
17
20
  render={({
18
21
  field: { onBlur, onChange, value },
19
22
  fieldState: { error },
20
23
  }) => (
21
- <Dropdown
22
- fluid
23
- selection
24
- error={!!error}
25
- onBlur={onBlur}
26
- options={["true", "false"].map((v) => ({
27
- key: v,
28
- value: v,
29
- text: formatMessage({ id: `functions.expression.constant.${v}` }),
30
- }))}
31
- value={value}
32
- onChange={(_e, { value }) => onChange(value)}
33
- />
24
+ <Form.Field error={!!error?.message}>
25
+ <Dropdown
26
+ fluid
27
+ selection
28
+ onBlur={onBlur}
29
+ options={["true", "false"].map((v) => ({
30
+ key: v,
31
+ value: v,
32
+ text: formatMessage({ id: `functions.expression.constant.${v}` }),
33
+ }))}
34
+ value={value}
35
+ onChange={(_e, { value }) => onChange(value)}
36
+ />
37
+ {error?.message && <Label prompt pointing>{error?.message}</Label>}
38
+ </Form.Field>
34
39
  )}
35
40
  />
36
41
  );
@@ -26,7 +26,6 @@ export default function DefaultSelector() {
26
26
  onBlur={onBlur}
27
27
  onChange={(_e, { value }) => onChange(value)}
28
28
  value={value}
29
- required
30
29
  />
31
30
  )}
32
31
  />
@@ -3,103 +3,107 @@
3
3
  exports[`<AnySelector /> matches the latest snapshot 1`] = `
4
4
  <div>
5
5
  <div
6
- aria-expanded="false"
7
- class="ui basic button dropdown"
8
- name="type"
9
- role="listbox"
10
- tabindex="0"
6
+ class="field"
11
7
  >
12
- <i
13
- aria-hidden="true"
14
- class="dropdown icon"
15
- />
16
8
  <div
17
- class="menu transition"
9
+ aria-expanded="false"
10
+ class="ui button fluid dropdown"
11
+ name="type"
12
+ role="listbox"
13
+ tabindex="0"
18
14
  >
15
+ <i
16
+ aria-hidden="true"
17
+ class="dropdown icon"
18
+ />
19
19
  <div
20
- aria-checked="false"
21
- aria-selected="true"
22
- class="selected item"
23
- role="option"
24
- style="pointer-events: all;"
20
+ class="menu transition"
25
21
  >
26
- <i
27
- aria-hidden="true"
28
- class="adjust icon"
29
- />
30
- <span
31
- class="text"
22
+ <div
23
+ aria-checked="false"
24
+ aria-selected="true"
25
+ class="selected item"
26
+ role="option"
27
+ style="pointer-events: all;"
32
28
  >
33
- expressions.data_type.boolean
34
- </span>
35
- </div>
36
- <div
37
- aria-checked="false"
38
- aria-selected="false"
39
- class="item"
40
- role="option"
41
- style="pointer-events: all;"
42
- >
43
- <i
44
- aria-hidden="true"
45
- class="font icon"
46
- />
47
- <span
48
- class="text"
29
+ <i
30
+ aria-hidden="true"
31
+ class="adjust icon"
32
+ />
33
+ <span
34
+ class="text"
35
+ >
36
+ expressions.data_type.boolean
37
+ </span>
38
+ </div>
39
+ <div
40
+ aria-checked="false"
41
+ aria-selected="false"
42
+ class="item"
43
+ role="option"
44
+ style="pointer-events: all;"
49
45
  >
50
- expressions.data_type.string
51
- </span>
52
- </div>
53
- <div
54
- aria-checked="false"
55
- aria-selected="false"
56
- class="item"
57
- role="option"
58
- style="pointer-events: all;"
59
- >
60
- <i
61
- aria-hidden="true"
62
- class="hashtag icon"
63
- />
64
- <span
65
- class="text"
46
+ <i
47
+ aria-hidden="true"
48
+ class="font icon"
49
+ />
50
+ <span
51
+ class="text"
52
+ >
53
+ expressions.data_type.string
54
+ </span>
55
+ </div>
56
+ <div
57
+ aria-checked="false"
58
+ aria-selected="false"
59
+ class="item"
60
+ role="option"
61
+ style="pointer-events: all;"
66
62
  >
67
- expressions.data_type.number
68
- </span>
69
- </div>
70
- <div
71
- aria-checked="false"
72
- aria-selected="false"
73
- class="item"
74
- role="option"
75
- style="pointer-events: all;"
76
- >
77
- <i
78
- aria-hidden="true"
79
- class="calendar alternate outline icon"
80
- />
81
- <span
82
- class="text"
63
+ <i
64
+ aria-hidden="true"
65
+ class="hashtag icon"
66
+ />
67
+ <span
68
+ class="text"
69
+ >
70
+ expressions.data_type.number
71
+ </span>
72
+ </div>
73
+ <div
74
+ aria-checked="false"
75
+ aria-selected="false"
76
+ class="item"
77
+ role="option"
78
+ style="pointer-events: all;"
83
79
  >
84
- expressions.data_type.date
85
- </span>
86
- </div>
87
- <div
88
- aria-checked="false"
89
- aria-selected="false"
90
- class="item"
91
- role="option"
92
- style="pointer-events: all;"
93
- >
94
- <i
95
- aria-hidden="true"
96
- class="clock outline icon"
97
- />
98
- <span
99
- class="text"
80
+ <i
81
+ aria-hidden="true"
82
+ class="calendar alternate outline icon"
83
+ />
84
+ <span
85
+ class="text"
86
+ >
87
+ expressions.data_type.date
88
+ </span>
89
+ </div>
90
+ <div
91
+ aria-checked="false"
92
+ aria-selected="false"
93
+ class="item"
94
+ role="option"
95
+ style="pointer-events: all;"
100
96
  >
101
- expressions.data_type.timestamp
102
- </span>
97
+ <i
98
+ aria-hidden="true"
99
+ class="clock outline icon"
100
+ />
101
+ <span
102
+ class="text"
103
+ >
104
+ expressions.data_type.timestamp
105
+ </span>
106
+ </div>
103
107
  </div>
104
108
  </div>
105
109
  </div>
@@ -109,124 +113,127 @@ exports[`<AnySelector /> matches the latest snapshot 1`] = `
109
113
  exports[`<AnySelector /> user interaction 1`] = `
110
114
  <div>
111
115
  <div
112
- aria-expanded="false"
113
- class="ui basic button dropdown"
114
- name="type"
115
- role="listbox"
116
+ class="field"
116
117
  style=""
117
- tabindex="0"
118
118
  >
119
119
  <div
120
- aria-atomic="true"
121
- aria-live="polite"
122
- class="divider text"
123
- role="alert"
124
- >
125
- expressions.data_type.string
126
- </div>
127
- <i
128
- aria-hidden="true"
129
- class="dropdown icon"
130
- />
131
- <div
132
- class="menu transition"
120
+ aria-expanded="false"
121
+ class="ui button fluid dropdown"
122
+ name="type"
123
+ role="listbox"
124
+ tabindex="0"
133
125
  >
134
126
  <div
135
- aria-checked="false"
136
- aria-selected="false"
137
- class="item"
138
- role="option"
139
- style="pointer-events: all;"
127
+ aria-atomic="true"
128
+ aria-live="polite"
129
+ class="divider text"
130
+ role="alert"
140
131
  >
141
- <i
142
- aria-hidden="true"
143
- class="adjust icon"
144
- />
145
- <span
146
- class="text"
147
- >
148
- expressions.data_type.boolean
149
- </span>
132
+ expressions.data_type.string
150
133
  </div>
134
+ <i
135
+ aria-hidden="true"
136
+ class="dropdown icon"
137
+ />
151
138
  <div
152
- aria-checked="true"
153
- aria-selected="true"
154
- class="active selected item"
155
- role="option"
156
- style="pointer-events: all;"
139
+ class="menu transition"
157
140
  >
158
- <i
159
- aria-hidden="true"
160
- class="font icon"
161
- />
162
- <span
163
- class="text"
141
+ <div
142
+ aria-checked="false"
143
+ aria-selected="false"
144
+ class="item"
145
+ role="option"
146
+ style="pointer-events: all;"
164
147
  >
165
- expressions.data_type.string
166
- </span>
167
- </div>
168
- <div
169
- aria-checked="false"
170
- aria-selected="false"
171
- class="item"
172
- role="option"
173
- style="pointer-events: all;"
174
- >
175
- <i
176
- aria-hidden="true"
177
- class="hashtag icon"
178
- />
179
- <span
180
- class="text"
148
+ <i
149
+ aria-hidden="true"
150
+ class="adjust icon"
151
+ />
152
+ <span
153
+ class="text"
154
+ >
155
+ expressions.data_type.boolean
156
+ </span>
157
+ </div>
158
+ <div
159
+ aria-checked="true"
160
+ aria-selected="true"
161
+ class="active selected item"
162
+ role="option"
163
+ style="pointer-events: all;"
181
164
  >
182
- expressions.data_type.number
183
- </span>
184
- </div>
185
- <div
186
- aria-checked="false"
187
- aria-selected="false"
188
- class="item"
189
- role="option"
190
- style="pointer-events: all;"
191
- >
192
- <i
193
- aria-hidden="true"
194
- class="calendar alternate outline icon"
195
- />
196
- <span
197
- class="text"
165
+ <i
166
+ aria-hidden="true"
167
+ class="font icon"
168
+ />
169
+ <span
170
+ class="text"
171
+ >
172
+ expressions.data_type.string
173
+ </span>
174
+ </div>
175
+ <div
176
+ aria-checked="false"
177
+ aria-selected="false"
178
+ class="item"
179
+ role="option"
180
+ style="pointer-events: all;"
198
181
  >
199
- expressions.data_type.date
200
- </span>
201
- </div>
202
- <div
203
- aria-checked="false"
204
- aria-selected="false"
205
- class="item"
206
- role="option"
207
- style="pointer-events: all;"
208
- >
209
- <i
210
- aria-hidden="true"
211
- class="clock outline icon"
212
- />
213
- <span
214
- class="text"
182
+ <i
183
+ aria-hidden="true"
184
+ class="hashtag icon"
185
+ />
186
+ <span
187
+ class="text"
188
+ >
189
+ expressions.data_type.number
190
+ </span>
191
+ </div>
192
+ <div
193
+ aria-checked="false"
194
+ aria-selected="false"
195
+ class="item"
196
+ role="option"
197
+ style="pointer-events: all;"
198
+ >
199
+ <i
200
+ aria-hidden="true"
201
+ class="calendar alternate outline icon"
202
+ />
203
+ <span
204
+ class="text"
205
+ >
206
+ expressions.data_type.date
207
+ </span>
208
+ </div>
209
+ <div
210
+ aria-checked="false"
211
+ aria-selected="false"
212
+ class="item"
213
+ role="option"
214
+ style="pointer-events: all;"
215
215
  >
216
- expressions.data_type.timestamp
217
- </span>
216
+ <i
217
+ aria-hidden="true"
218
+ class="clock outline icon"
219
+ />
220
+ <span
221
+ class="text"
222
+ >
223
+ expressions.data_type.timestamp
224
+ </span>
225
+ </div>
218
226
  </div>
219
227
  </div>
220
228
  </div>
221
229
  <div
222
- class="required field"
230
+ class="field"
223
231
  >
224
232
  <div
225
233
  class="ui input"
226
234
  >
227
235
  <input
228
236
  autocomplete="off"
229
- required=""
230
237
  type="text"
231
238
  value=""
232
239
  />
@@ -3,43 +3,47 @@
3
3
  exports[`<BooleanSelector /> matches the latest snapshot 1`] = `
4
4
  <div>
5
5
  <div
6
- aria-expanded="false"
7
- class="ui fluid selection dropdown"
8
- role="listbox"
9
- tabindex="0"
6
+ class="field"
10
7
  >
11
- <i
12
- aria-hidden="true"
13
- class="dropdown icon"
14
- />
15
8
  <div
16
- class="menu transition"
9
+ aria-expanded="false"
10
+ class="ui fluid selection dropdown"
11
+ role="listbox"
12
+ tabindex="0"
17
13
  >
14
+ <i
15
+ aria-hidden="true"
16
+ class="dropdown icon"
17
+ />
18
18
  <div
19
- aria-checked="false"
20
- aria-selected="true"
21
- class="selected item"
22
- role="option"
23
- style="pointer-events: all;"
19
+ class="menu transition"
24
20
  >
25
- <span
26
- class="text"
21
+ <div
22
+ aria-checked="false"
23
+ aria-selected="true"
24
+ class="selected item"
25
+ role="option"
26
+ style="pointer-events: all;"
27
27
  >
28
- true
29
- </span>
30
- </div>
31
- <div
32
- aria-checked="false"
33
- aria-selected="false"
34
- class="item"
35
- role="option"
36
- style="pointer-events: all;"
37
- >
38
- <span
39
- class="text"
28
+ <span
29
+ class="text"
30
+ >
31
+ true
32
+ </span>
33
+ </div>
34
+ <div
35
+ aria-checked="false"
36
+ aria-selected="false"
37
+ class="item"
38
+ role="option"
39
+ style="pointer-events: all;"
40
40
  >
41
- false
42
- </span>
41
+ <span
42
+ class="text"
43
+ >
44
+ false
45
+ </span>
46
+ </div>
43
47
  </div>
44
48
  </div>
45
49
  </div>
@@ -49,51 +53,55 @@ exports[`<BooleanSelector /> matches the latest snapshot 1`] = `
49
53
  exports[`<BooleanSelector /> user interaction 1`] = `
50
54
  <div>
51
55
  <div
52
- aria-expanded="false"
53
- class="ui fluid selection dropdown"
54
- role="listbox"
55
- tabindex="0"
56
+ class="field"
56
57
  >
57
58
  <div
58
- aria-atomic="true"
59
- aria-live="polite"
60
- class="divider text"
61
- role="alert"
62
- >
63
- true
64
- </div>
65
- <i
66
- aria-hidden="true"
67
- class="dropdown icon"
68
- />
69
- <div
70
- class="menu transition"
59
+ aria-expanded="false"
60
+ class="ui fluid selection dropdown"
61
+ role="listbox"
62
+ tabindex="0"
71
63
  >
72
64
  <div
73
- aria-checked="true"
74
- aria-selected="true"
75
- class="active selected item"
76
- role="option"
77
- style="pointer-events: all;"
65
+ aria-atomic="true"
66
+ aria-live="polite"
67
+ class="divider text"
68
+ role="alert"
78
69
  >
79
- <span
80
- class="text"
81
- >
82
- true
83
- </span>
70
+ true
84
71
  </div>
72
+ <i
73
+ aria-hidden="true"
74
+ class="dropdown icon"
75
+ />
85
76
  <div
86
- aria-checked="false"
87
- aria-selected="false"
88
- class="item"
89
- role="option"
90
- style="pointer-events: all;"
77
+ class="menu transition"
91
78
  >
92
- <span
93
- class="text"
79
+ <div
80
+ aria-checked="true"
81
+ aria-selected="true"
82
+ class="active selected item"
83
+ role="option"
84
+ style="pointer-events: all;"
85
+ >
86
+ <span
87
+ class="text"
88
+ >
89
+ true
90
+ </span>
91
+ </div>
92
+ <div
93
+ aria-checked="false"
94
+ aria-selected="false"
95
+ class="item"
96
+ role="option"
97
+ style="pointer-events: all;"
94
98
  >
95
- false
96
- </span>
99
+ <span
100
+ class="text"
101
+ >
102
+ false
103
+ </span>
104
+ </div>
97
105
  </div>
98
106
  </div>
99
107
  </div>