@truedat/qx 7.13.7 → 7.13.9

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
@@ -3,14 +3,13 @@
3
3
  exports[`<DefaultSelector /> matches the latest snapshot 1`] = `
4
4
  <div>
5
5
  <div
6
- class="required field"
6
+ class="field"
7
7
  >
8
8
  <div
9
9
  class="ui input"
10
10
  >
11
11
  <input
12
12
  autocomplete="off"
13
- required=""
14
13
  type="text"
15
14
  />
16
15
  </div>
@@ -21,14 +20,13 @@ exports[`<DefaultSelector /> matches the latest snapshot 1`] = `
21
20
  exports[`<DefaultSelector /> user interaction 1`] = `
22
21
  <div>
23
22
  <div
24
- class="required field"
23
+ class="field"
25
24
  >
26
25
  <div
27
26
  class="ui input"
28
27
  >
29
28
  <input
30
29
  autocomplete="off"
31
- required=""
32
30
  type="text"
33
31
  value="text"
34
32
  />
@@ -2,11 +2,11 @@ import _ from "lodash/fp";
2
2
  import { use, useState } from "react";
3
3
  import { useFormContext } from "react-hook-form";
4
4
  import { useIntl } from "react-intl";
5
- import { Icon, Form } from "semantic-ui-react";
5
+ import { Icon, Label, Form } from "semantic-ui-react";
6
6
  import QxContext from "@truedat/qx/components/QxContext";
7
7
  import StructureSelector from "@truedat/dd/components/StructureSelector";
8
8
 
9
- export default function DataStructureSelector({ onChange }) {
9
+ export default function DataStructureSelector({ onChange, error }) {
10
10
  const { formatMessage } = useIntl();
11
11
  const { field, sourceId } = use(QxContext);
12
12
  const { watch } = useFormContext();
@@ -30,7 +30,8 @@ export default function DataStructureSelector({ onChange }) {
30
30
  };
31
31
 
32
32
  return (
33
- <>
33
+ <Form.Field error={!!error}>
34
+ {error && <Label pointing="below" prompt>{error}</Label>}
34
35
  {active ? (
35
36
  <div onClick={onClick}>
36
37
  <Icon name="dropdown" />
@@ -59,6 +60,6 @@ export default function DataStructureSelector({ onChange }) {
59
60
  onSelect={handleSelect}
60
61
  />
61
62
  )}
62
- </>
63
+ </Form.Field>
63
64
  );
64
65
  }
@@ -1,11 +1,11 @@
1
1
  import _ from "lodash/fp";
2
2
  import { use, useState } from "react";
3
3
  import { useIntl } from "react-intl";
4
- import { Dropdown } from "semantic-ui-react";
4
+ import { Form } from "semantic-ui-react";
5
5
  import { matchSorter } from "match-sorter";
6
6
  import QxContext from "@truedat/qx/components/QxContext";
7
7
 
8
- export default function DataViewSelector({ onChange, onBlur, value }) {
8
+ export default function DataViewSelector({ onChange, onBlur, value, error }) {
9
9
  const { formatMessage } = useIntl();
10
10
  const [searchTerm, setSearchTerm] = useState("");
11
11
  const { dataViews, sourceId, currentDataViewId } = use(QxContext);
@@ -51,8 +51,9 @@ export default function DataViewSelector({ onChange, onBlur, value }) {
51
51
  setSearchTerm(searchQuery);
52
52
 
53
53
  return (
54
- <Dropdown
54
+ <Form.Dropdown
55
55
  selection
56
+ error={error}
56
57
  onSearchChange={handleSearchChange}
57
58
  search
58
59
  fluid
@@ -1,11 +1,11 @@
1
1
  import _ from "lodash/fp";
2
2
  import { use, useState } from "react";
3
3
  import { useIntl } from "react-intl";
4
- import { Dropdown } from "semantic-ui-react";
4
+ import { Form } from "semantic-ui-react";
5
5
  import { matchSorter } from "match-sorter";
6
6
  import QxContext from "@truedat/qx/components/QxContext";
7
7
 
8
- export default function ReferenceDatasetSelector({ onChange, onBlur, value }) {
8
+ export default function ReferenceDatasetSelector({ error, onChange, onBlur, value }) {
9
9
  const { formatMessage } = useIntl();
10
10
  const [searchTerm, setSearchTerm] = useState("");
11
11
  const { referenceDatasets } = use(QxContext);
@@ -43,8 +43,9 @@ export default function ReferenceDatasetSelector({ onChange, onBlur, value }) {
43
43
  }))(referenceDatasets);
44
44
 
45
45
  return (
46
- <Dropdown
46
+ <Form.Dropdown
47
47
  selection
48
+ error={error}
48
49
  onSearchChange={handleSearchChange}
49
50
  search
50
51
  fluid
@@ -2,91 +2,95 @@
2
2
 
3
3
  exports[`<DataStructureSelector /> matches the latest snapshot 1`] = `
4
4
  <div>
5
- <div>
6
- <i
7
- aria-hidden="true"
8
- class="dropdown icon"
9
- />
10
- </div>
11
5
  <div
12
- class="ui segment"
6
+ class="field"
13
7
  >
14
- <div
15
- class="ui action left icon input"
16
- >
8
+ <div>
17
9
  <i
18
10
  aria-hidden="true"
19
- class="search link icon"
20
- />
21
- <input
22
- placeholder="search.placeholder"
23
- type="text"
24
- value=""
11
+ class="dropdown icon"
25
12
  />
26
- <button
27
- class="ui icon button"
28
- >
29
- <i
30
- aria-hidden="true"
31
- class="calendar alternate outline icon"
32
- />
33
- </button>
13
+ </div>
14
+ <div
15
+ class="ui segment"
16
+ >
34
17
  <div
35
- aria-busy="false"
36
- aria-disabled="false"
37
- aria-expanded="false"
38
- class="ui button floating labeled scrolling dropdown icon"
39
- role="listbox"
40
- tabindex="0"
18
+ class="ui action left icon input"
41
19
  >
42
- <div
43
- aria-atomic="true"
44
- aria-live="polite"
45
- class="divider text"
46
- role="alert"
47
- >
48
- Filters
49
- </div>
50
20
  <i
51
21
  aria-hidden="true"
52
- class="filter icon"
22
+ class="search link icon"
53
23
  />
24
+ <input
25
+ placeholder="search.placeholder"
26
+ type="text"
27
+ value=""
28
+ />
29
+ <button
30
+ class="ui icon button"
31
+ >
32
+ <i
33
+ aria-hidden="true"
34
+ class="calendar alternate outline icon"
35
+ />
36
+ </button>
54
37
  <div
55
- class="menu transition"
38
+ aria-busy="false"
39
+ aria-disabled="false"
40
+ aria-expanded="false"
41
+ class="ui button floating labeled scrolling dropdown icon"
42
+ role="listbox"
43
+ tabindex="0"
56
44
  >
57
45
  <div
58
- class="item"
59
- role="option"
46
+ aria-atomic="true"
47
+ aria-live="polite"
48
+ class="divider text"
49
+ role="alert"
60
50
  >
61
- <em>
62
- (reset filters)
63
- </em>
51
+ Filters
52
+ </div>
53
+ <i
54
+ aria-hidden="true"
55
+ class="filter icon"
56
+ />
57
+ <div
58
+ class="menu transition"
59
+ >
60
+ <div
61
+ class="item"
62
+ role="option"
63
+ >
64
+ <em>
65
+ (reset filters)
66
+ </em>
67
+ </div>
64
68
  </div>
65
69
  </div>
66
70
  </div>
67
- </div>
68
- <div
69
- class="selectedFilters"
70
- />
71
- <div
72
- class="dimmable structure-table-overflow"
73
- >
74
71
  <div
75
- class="ui icon info message"
72
+ class="selectedFilters"
73
+ />
74
+ <div
75
+ class="dimmable structure-table-overflow"
76
76
  >
77
- <i
78
- aria-hidden="true"
79
- class="search icon"
80
- />
81
77
  <div
82
- class="content"
78
+ class="ui icon info message"
83
79
  >
80
+ <i
81
+ aria-hidden="true"
82
+ class="search icon"
83
+ />
84
84
  <div
85
- class="header"
85
+ class="content"
86
86
  >
87
- structures.not_found.header
87
+ <div
88
+ class="header"
89
+ >
90
+ structures.not_found.header
91
+ </div>
92
+ structures.not_found.body
88
93
  </div>
89
- structures.not_found.body
90
94
  </div>
91
95
  </div>
92
96
  </div>
@@ -3,46 +3,50 @@
3
3
  exports[`<DataViewSelector /> matches the latest snapshot 1`] = `
4
4
  <div>
5
5
  <div
6
- aria-expanded="false"
7
- class="ui fluid search selection dropdown"
8
- role="combobox"
6
+ class="field"
9
7
  >
10
- <input
11
- aria-autocomplete="list"
12
- autocomplete="off"
13
- class="search"
14
- tabindex="0"
15
- type="text"
16
- value=""
17
- />
18
8
  <div
19
- aria-atomic="true"
20
- aria-live="polite"
21
- class="divider default text"
22
- role="alert"
23
- >
24
- queryables.resource.selector.data_view
25
- </div>
26
- <i
27
- aria-hidden="true"
28
- class="dropdown icon"
29
- />
30
- <div
31
- class="menu transition"
32
- role="listbox"
9
+ aria-expanded="false"
10
+ class="ui fluid search selection dropdown"
11
+ role="combobox"
33
12
  >
13
+ <input
14
+ aria-autocomplete="list"
15
+ autocomplete="off"
16
+ class="search"
17
+ tabindex="0"
18
+ type="text"
19
+ value=""
20
+ />
21
+ <div
22
+ aria-atomic="true"
23
+ aria-live="polite"
24
+ class="divider default text"
25
+ role="alert"
26
+ >
27
+ queryables.resource.selector.data_view
28
+ </div>
29
+ <i
30
+ aria-hidden="true"
31
+ class="dropdown icon"
32
+ />
34
33
  <div
35
- aria-checked="false"
36
- aria-selected="true"
37
- class="selected item"
38
- role="option"
39
- style="pointer-events: all;"
34
+ class="menu transition"
35
+ role="listbox"
40
36
  >
41
- <span
42
- class="text"
37
+ <div
38
+ aria-checked="false"
39
+ aria-selected="true"
40
+ class="selected item"
41
+ role="option"
42
+ style="pointer-events: all;"
43
43
  >
44
- UserDataView
45
- </span>
44
+ <span
45
+ class="text"
46
+ >
47
+ UserDataView
48
+ </span>
49
+ </div>
46
50
  </div>
47
51
  </div>
48
52
  </div>
@@ -3,46 +3,50 @@
3
3
  exports[`<ReferenceDatasetSelector /> matches the latest snapshot 1`] = `
4
4
  <div>
5
5
  <div
6
- aria-expanded="false"
7
- class="ui fluid search selection dropdown"
8
- role="combobox"
6
+ class="field"
9
7
  >
10
- <input
11
- aria-autocomplete="list"
12
- autocomplete="off"
13
- class="search"
14
- tabindex="0"
15
- type="text"
16
- value=""
17
- />
18
8
  <div
19
- aria-atomic="true"
20
- aria-live="polite"
21
- class="divider default text"
22
- role="alert"
23
- >
24
- queryables.resource.selector.reference_dataset
25
- </div>
26
- <i
27
- aria-hidden="true"
28
- class="dropdown icon"
29
- />
30
- <div
31
- class="menu transition"
32
- role="listbox"
9
+ aria-expanded="false"
10
+ class="ui fluid search selection dropdown"
11
+ role="combobox"
33
12
  >
13
+ <input
14
+ aria-autocomplete="list"
15
+ autocomplete="off"
16
+ class="search"
17
+ tabindex="0"
18
+ type="text"
19
+ value=""
20
+ />
21
+ <div
22
+ aria-atomic="true"
23
+ aria-live="polite"
24
+ class="divider default text"
25
+ role="alert"
26
+ >
27
+ queryables.resource.selector.reference_dataset
28
+ </div>
29
+ <i
30
+ aria-hidden="true"
31
+ class="dropdown icon"
32
+ />
34
33
  <div
35
- aria-checked="false"
36
- aria-selected="true"
37
- class="selected item"
38
- role="option"
39
- style="pointer-events: all;"
34
+ class="menu transition"
35
+ role="listbox"
40
36
  >
41
- <span
42
- class="text"
37
+ <div
38
+ aria-checked="false"
39
+ aria-selected="true"
40
+ class="selected item"
41
+ role="option"
42
+ style="pointer-events: all;"
43
43
  >
44
- UserReferenceDataset
45
- </span>
44
+ <span
45
+ class="text"
46
+ >
47
+ UserReferenceDataset
48
+ </span>
49
+ </div>
46
50
  </div>
47
51
  </div>
48
52
  </div>
@@ -0,0 +1,20 @@
1
+ import React from "react";
2
+ import { Breadcrumb } from "semantic-ui-react";
3
+ import { useIntl } from "react-intl";
4
+ import { Link } from "react-router";
5
+ import { DATA_VIEWS } from "@truedat/core/routes";
6
+
7
+ export default function BreadCrumb({ text = "New" }) {
8
+ const { formatMessage } = useIntl();
9
+ return (
10
+ <Breadcrumb size="large">
11
+ <Breadcrumb.Section as={Link} to={DATA_VIEWS}>
12
+ {formatMessage({ id: "dataViews.header" })}
13
+ </Breadcrumb.Section>
14
+ <>
15
+ <Breadcrumb.Divider icon="right angle" />
16
+ <Breadcrumb.Section active>{text}</Breadcrumb.Section>
17
+ </>
18
+ </Breadcrumb>
19
+ );
20
+ }