@truedat/qx 8.6.7 → 8.7.1

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 (160) hide show
  1. package/package.json +3 -3
  2. package/src/components/__tests__/QxRoutes.spec.js +1 -1
  3. package/src/components/common/ClauseViewer.js +1 -1
  4. package/src/components/common/ResourceSelector.js +1 -1
  5. package/src/components/common/TypeSelector.js +7 -3
  6. package/src/components/common/__tests__/ResourceSelector.spec.js +6 -6
  7. package/src/components/common/expressions/FieldSelector.js +2 -2
  8. package/src/components/common/expressions/FunctionSelector.js +3 -3
  9. package/src/components/common/expressions/ParamSelector.js +1 -1
  10. package/src/components/common/expressions/ShapeSelector.js +4 -5
  11. package/src/components/common/expressions/__tests__/Clauses.spec.js +11 -11
  12. package/src/components/common/expressions/__tests__/Condition.spec.js +15 -13
  13. package/src/components/common/expressions/__tests__/ConstantSelector.spec.js +2 -2
  14. package/src/components/common/expressions/__tests__/Expression.spec.js +5 -5
  15. package/src/components/common/expressions/__tests__/FieldSelector.spec.js +6 -2
  16. package/src/components/common/expressions/__tests__/FunctionArgs.spec.js +3 -3
  17. package/src/components/common/expressions/__tests__/FunctionSelector.spec.js +3 -3
  18. package/src/components/common/expressions/__tests__/ParamSelector.spec.js +3 -3
  19. package/src/components/common/expressions/__tests__/ShapeSelector.spec.js +7 -7
  20. package/src/components/common/expressions/__tests__/useWatchParams.spec.js +3 -1
  21. package/src/components/common/expressions/constantInputs/AnySelector.js +0 -1
  22. package/src/components/common/expressions/constantInputs/BooleanSelector.js +5 -1
  23. package/src/components/common/expressions/constantInputs/__tests__/AnySelector.spec.js +6 -2
  24. package/src/components/common/expressions/constantInputs/__tests__/BooleanSelector.spec.js +8 -4
  25. package/src/components/common/expressions/constantInputs/__tests__/DefaultSelector.spec.js +6 -3
  26. package/src/components/common/resourceSelectors/DataStructureSelector.js +5 -1
  27. package/src/components/common/resourceSelectors/DataViewSelector.js +3 -3
  28. package/src/components/common/resourceSelectors/ReferenceDatasetSelector.js +7 -2
  29. package/src/components/common/resourceSelectors/__tests__/DataStructureSelector.spec.js +1 -1
  30. package/src/components/common/resourceSelectors/__tests__/DataViewSelector.spec.js +7 -7
  31. package/src/components/common/resourceSelectors/__tests__/ReferenceDatasetSelector.spec.js +6 -6
  32. package/src/components/dataViews/DataViewEditor.js +3 -2
  33. package/src/components/dataViews/DataViewSummary.js +1 -1
  34. package/src/components/dataViews/DataViews.js +2 -2
  35. package/src/components/dataViews/__tests__/AdvancedDataViewEditor.spec.js +3 -3
  36. package/src/components/dataViews/__tests__/DataViewEditor.spec.js +7 -7
  37. package/src/components/dataViews/__tests__/DataViewSelect.spec.js +1 -1
  38. package/src/components/dataViews/__tests__/DataViewSummary.spec.js +15 -15
  39. package/src/components/dataViews/__tests__/DataViews.spec.js +6 -6
  40. package/src/components/dataViews/__tests__/Queryable.spec.js +6 -6
  41. package/src/components/dataViews/__tests__/Queryables.spec.js +6 -6
  42. package/src/components/dataViews/__tests__/SimpleDataViewEditor.spec.js +17 -17
  43. package/src/components/dataViews/__tests__/queryableFunctions.spec.js +4 -4
  44. package/src/components/dataViews/advancedForm/AdvancedDataViewEditor.js +3 -3
  45. package/src/components/dataViews/advancedForm/DataViewSelect.js +1 -1
  46. package/src/components/dataViews/advancedForm/Queryable.js +3 -3
  47. package/src/components/dataViews/queryableFunctions.js +35 -35
  48. package/src/components/dataViews/queryableProperties/Select.js +1 -1
  49. package/src/components/dataViews/queryableProperties/SelectField.js +5 -5
  50. package/src/components/dataViews/queryableProperties/__tests__/From.spec.js +1 -1
  51. package/src/components/dataViews/queryableProperties/__tests__/GroupBy.spec.js +19 -19
  52. package/src/components/dataViews/queryableProperties/__tests__/Join.spec.js +1 -1
  53. package/src/components/dataViews/queryableProperties/__tests__/JoinTypeIcon.spec.js +1 -1
  54. package/src/components/dataViews/queryableProperties/__tests__/Select.spec.js +5 -5
  55. package/src/components/dataViews/queryableProperties/__tests__/SelectField.spec.js +3 -3
  56. package/src/components/dataViews/queryableProperties/__tests__/Where.spec.js +1 -1
  57. package/src/components/dataViews/queryableSummaryHelpers.js +1 -1
  58. package/src/components/dataViews/simpleForm/AggregationForm.js +2 -2
  59. package/src/components/dataViews/simpleForm/DatasetForm.js +1 -1
  60. package/src/components/dataViews/simpleForm/FormQueryable.js +3 -3
  61. package/src/components/dataViews/simpleForm/InformationForm.js +2 -2
  62. package/src/components/dataViews/simpleForm/SelectionForm.js +1 -1
  63. package/src/components/dataViews/simpleForm/SimpleDataViewEditor.js +3 -3
  64. package/src/components/dataViews/summary/GroupBy.js +1 -1
  65. package/src/components/dataViews/summary/Join.js +50 -48
  66. package/src/components/dataViews/summary/Select.js +1 -1
  67. package/src/components/dataViews/summary/Where.js +6 -1
  68. package/src/components/functions/FunctionEditor.js +1 -1
  69. package/src/components/functions/Functions.js +1 -1
  70. package/src/components/functions/__tests__/FunctionEditor.spec.js +7 -7
  71. package/src/components/functions/__tests__/FunctionParams.spec.js +4 -4
  72. package/src/components/qualityControls/ConceptLinkNew.js +2 -2
  73. package/src/components/qualityControls/ConceptLinks.js +1 -1
  74. package/src/components/qualityControls/ContentSummary.js +23 -21
  75. package/src/components/qualityControls/ControlProperties.js +1 -1
  76. package/src/components/qualityControls/ControlPropertiesView.js +1 -1
  77. package/src/components/qualityControls/EditQualityControl.js +1 -1
  78. package/src/components/qualityControls/NewDraftQualityControl.js +1 -1
  79. package/src/components/qualityControls/QualityControlActions.js +4 -4
  80. package/src/components/qualityControls/QualityControlEditor.js +11 -20
  81. package/src/components/qualityControls/QualityControlEvents.js +2 -2
  82. package/src/components/qualityControls/QualityControlHeader.js +2 -2
  83. package/src/components/qualityControls/QualityControlRoutes.js +1 -1
  84. package/src/components/qualityControls/QualityControlScores.js +3 -3
  85. package/src/components/qualityControls/QualityControlSelector.js +1 -1
  86. package/src/components/qualityControls/QualityControlSummary.js +17 -15
  87. package/src/components/qualityControls/QualityControls.js +9 -11
  88. package/src/components/qualityControls/QualityControlsTable.js +1 -1
  89. package/src/components/qualityControls/SegmentationForm.js +99 -100
  90. package/src/components/qualityControls/SegmentationSummary.js +113 -104
  91. package/src/components/qualityControls/StructureLinkNew.js +2 -2
  92. package/src/components/qualityControls/StructureLinks.js +1 -1
  93. package/src/components/qualityControls/__tests__/ConceptLinkNew.spec.js +5 -5
  94. package/src/components/qualityControls/__tests__/ConceptLinks.spec.js +3 -3
  95. package/src/components/qualityControls/__tests__/ControlProperties.spec.js +6 -2
  96. package/src/components/qualityControls/__tests__/ControlPropertiesForm.spec.js +6 -6
  97. package/src/components/qualityControls/__tests__/ControlPropertiesSummary.spec.js +7 -7
  98. package/src/components/qualityControls/__tests__/ControlPropertiesView.spec.js +7 -2
  99. package/src/components/qualityControls/__tests__/EditQualityControl.spec.js +12 -12
  100. package/src/components/qualityControls/__tests__/InformationForm.spec.js +29 -11
  101. package/src/components/qualityControls/__tests__/NewDraftQualityControl.spec.js +23 -21
  102. package/src/components/qualityControls/__tests__/NewQualityControl.spec.js +38 -38
  103. package/src/components/qualityControls/__tests__/QualityBadge.spec.js +7 -7
  104. package/src/components/qualityControls/__tests__/QualityControl.spec.js +7 -7
  105. package/src/components/qualityControls/__tests__/QualityControlActions.spec.js +16 -16
  106. package/src/components/qualityControls/__tests__/QualityControlCrumbs.spec.js +1 -1
  107. package/src/components/qualityControls/__tests__/QualityControlEditor.spec.js +6 -2
  108. package/src/components/qualityControls/__tests__/QualityControlEvents.spec.js +3 -3
  109. package/src/components/qualityControls/__tests__/QualityControlHeader.spec.js +3 -3
  110. package/src/components/qualityControls/__tests__/QualityControlHistory.spec.js +2 -2
  111. package/src/components/qualityControls/__tests__/QualityControlManageDomain.spec.js +4 -4
  112. package/src/components/qualityControls/__tests__/QualityControlQueryModal.spec.js +2 -2
  113. package/src/components/qualityControls/__tests__/QualityControlRoutes.spec.js +2 -2
  114. package/src/components/qualityControls/__tests__/QualityControlRow.spec.js +4 -4
  115. package/src/components/qualityControls/__tests__/QualityControlScores.spec.js +9 -9
  116. package/src/components/qualityControls/__tests__/QualityControlSelector.spec.js +21 -17
  117. package/src/components/qualityControls/__tests__/QualityControls.spec.js +21 -21
  118. package/src/components/qualityControls/__tests__/QualityControlsLabelResults.spec.js +5 -5
  119. package/src/components/qualityControls/__tests__/QualityControlsPagination.spec.js +1 -1
  120. package/src/components/qualityControls/__tests__/QualityControlsTable.spec.js +1 -1
  121. package/src/components/qualityControls/__tests__/ScoreCriteria.spec.js +6 -6
  122. package/src/components/qualityControls/__tests__/ScoreCriteriaView.spec.js +6 -6
  123. package/src/components/qualityControls/__tests__/StructureLinkNew.spec.js +9 -9
  124. package/src/components/qualityControls/__tests__/StructureLinks.spec.js +6 -6
  125. package/src/components/qualityControls/controlProperties/__tests__/ResourceWithValidation.spec.js +9 -9
  126. package/src/components/qualityControls/scoreCriterias/__tests__/Deviation.spec.js +5 -5
  127. package/src/components/qualityControls/scoreCriterias/__tests__/ErrorCount.spec.js +10 -10
  128. package/src/components/qualityControls/scoreCriterias/__tests__/Percentage.spec.js +6 -6
  129. package/src/components/scores/QualityBar.js +1 -1
  130. package/src/components/scores/ScoreDetails.js +1 -1
  131. package/src/components/scores/ScoreGroup.js +2 -2
  132. package/src/components/scores/ScoreGroupForm.js +1 -1
  133. package/src/components/scores/__tests__/MyScoreGroups.spec.js +1 -1
  134. package/src/components/scores/__tests__/QualityBar.spec.js +3 -3
  135. package/src/components/scores/__tests__/Score.spec.js +1 -1
  136. package/src/components/scores/__tests__/ScoreContext.spec.js +2 -2
  137. package/src/components/scores/__tests__/ScoreCrumbs.spec.js +2 -2
  138. package/src/components/scores/__tests__/ScoreDetails.spec.js +2 -2
  139. package/src/components/scores/__tests__/ScoreEvents.spec.js +1 -1
  140. package/src/components/scores/__tests__/ScoreGroup.spec.js +1 -1
  141. package/src/components/scores/__tests__/ScoreGroupBreadcrumbs.spec.js +1 -1
  142. package/src/components/scores/__tests__/ScoreGroupForm.spec.js +3 -3
  143. package/src/components/scores/__tests__/ScoreGroupLink.spec.js +1 -1
  144. package/src/components/scores/__tests__/ScoreGroupMessage.spec.js +1 -1
  145. package/src/components/scores/__tests__/ScoreGroupPopup.spec.js +2 -2
  146. package/src/components/scores/__tests__/ScoreGroupsRoutes.spec.js +1 -1
  147. package/src/components/scores/__tests__/ScoreGroupsTable.spec.js +2 -2
  148. package/src/components/scores/__tests__/ScorePagination.spec.js +1 -1
  149. package/src/components/scores/__tests__/ScoreStatusDecorator.spec.js +2 -2
  150. package/src/components/selectors/__tests__/getMyScoreGroupsColumns.spec.js +5 -5
  151. package/src/components/selectors/__tests__/getQualityControlScoresColumns.spec.js +3 -3
  152. package/src/components/selectors/getMyScoreGroupsColumns.js +1 -1
  153. package/src/components/selectors/getQualityControlScoresColumns.js +1 -1
  154. package/src/hooks/useDataViews.js +1 -1
  155. package/src/hooks/useExecutionGroups.js +2 -2
  156. package/src/hooks/useFunctions.js +1 -1
  157. package/src/hooks/useQualityControls.js +3 -3
  158. package/src/hooks/useScoreGroups.js +3 -3
  159. package/src/hooks/useScores.js +1 -1
  160. package/src/types.js +5 -3
@@ -22,7 +22,7 @@ describe("<Queryables />", () => {
22
22
  }}
23
23
  >
24
24
  <Queryables />
25
- </TestFormWrapper>
25
+ </TestFormWrapper>,
26
26
  );
27
27
  await waitForLoad(rendered);
28
28
  expect(rendered.container).toMatchSnapshot();
@@ -45,7 +45,7 @@ describe("<Queryables />", () => {
45
45
  }}
46
46
  >
47
47
  <Queryables />
48
- </TestFormWrapper>
48
+ </TestFormWrapper>,
49
49
  );
50
50
  await waitForLoad(rendered);
51
51
  expect(rendered.container).toMatchSnapshot();
@@ -68,7 +68,7 @@ describe("<Queryables />", () => {
68
68
  }}
69
69
  >
70
70
  <Queryables />
71
- </TestFormWrapper>
71
+ </TestFormWrapper>,
72
72
  );
73
73
  await waitForLoad(rendered);
74
74
  expect(rendered.container).toMatchSnapshot();
@@ -92,7 +92,7 @@ describe("<Queryables />", () => {
92
92
  }}
93
93
  >
94
94
  <Queryables />
95
- </TestFormWrapper>
95
+ </TestFormWrapper>,
96
96
  );
97
97
  await waitForLoad(rendered);
98
98
  expect(rendered.container).toMatchSnapshot();
@@ -125,7 +125,7 @@ describe("<Queryables />", () => {
125
125
  }}
126
126
  >
127
127
  <Queryables />
128
- </TestFormWrapper>
128
+ </TestFormWrapper>,
129
129
  );
130
130
  await waitForLoad(rendered);
131
131
 
@@ -135,7 +135,7 @@ describe("<Queryables />", () => {
135
135
 
136
136
  await waitFor(() => {
137
137
  expect(
138
- rendered.queryByText("queryables.group_by.form.add_group_field")
138
+ rendered.queryByText("queryables.group_by.form.add_group_field"),
139
139
  ).not.toBeInTheDocument();
140
140
  });
141
141
 
@@ -43,7 +43,7 @@ describe("<SimpleDataViewEditor /> (own rendering only, no child mocks)", () =>
43
43
  onCancel={jest.fn()}
44
44
  isSubmitting={false}
45
45
  mode="guided"
46
- />
46
+ />,
47
47
  );
48
48
  await waitForLoad(rendered);
49
49
  expect(rendered.container).toBeEmptyDOMElement();
@@ -58,35 +58,35 @@ describe("<SimpleDataViewEditor /> (own rendering only, no child mocks)", () =>
58
58
  onCancel={jest.fn()}
59
59
  isSubmitting={false}
60
60
  mode="guided"
61
- />
61
+ />,
62
62
  );
63
63
  await waitForLoad(rendered);
64
64
 
65
65
  // Step titles (they come from this component via formatMessage)
66
66
  expect(
67
- rendered.getByText("dataViews.form.step.information.title")
67
+ rendered.getByText("dataViews.form.step.information.title"),
68
68
  ).toBeInTheDocument();
69
69
  expect(
70
- rendered.getByText("dataViews.form.step.dataset.title")
70
+ rendered.getByText("dataViews.form.step.dataset.title"),
71
71
  ).toBeInTheDocument();
72
72
  expect(
73
- rendered.getByText("dataViews.form.step.aggregations.title")
73
+ rendered.getByText("dataViews.form.step.aggregations.title"),
74
74
  ).toBeInTheDocument();
75
75
  expect(
76
- rendered.getByText("dataViews.form.step.select.title")
76
+ rendered.getByText("dataViews.form.step.select.title"),
77
77
  ).toBeInTheDocument();
78
78
 
79
79
  // Initial actions: Cancel exists; Forward exists; Back should not (step 0)
80
80
  expect(
81
- screen.getByRole("button", { name: /dataViews\.action\.forward/i })
81
+ screen.getByRole("button", { name: /dataViews\.action\.forward/i }),
82
82
  ).toBeInTheDocument();
83
83
  expect(
84
- screen.queryByRole("button", { name: /dataViews\.action\.back/i })
84
+ screen.queryByRole("button", { name: /dataViews\.action\.back/i }),
85
85
  ).not.toBeInTheDocument();
86
86
 
87
87
  // Save button only appears on last step → not present yet
88
88
  expect(
89
- screen.queryByRole("button", { name: /actions\.save/i })
89
+ screen.queryByRole("button", { name: /actions\.save/i }),
90
90
  ).not.toBeInTheDocument();
91
91
  });
92
92
 
@@ -99,7 +99,7 @@ describe("<SimpleDataViewEditor /> (own rendering only, no child mocks)", () =>
99
99
  onCancel={jest.fn()}
100
100
  isSubmitting={true}
101
101
  mode="guided"
102
- />
102
+ />,
103
103
  );
104
104
  await waitForLoad(rendered);
105
105
 
@@ -109,7 +109,7 @@ describe("<SimpleDataViewEditor /> (own rendering only, no child mocks)", () =>
109
109
  expect(forward).toBeDisabled();
110
110
 
111
111
  expect(
112
- screen.queryByRole("button", { name: /dataViews\.action\.back/i })
112
+ screen.queryByRole("button", { name: /dataViews\.action\.back/i }),
113
113
  ).not.toBeInTheDocument();
114
114
  });
115
115
 
@@ -122,7 +122,7 @@ describe("<SimpleDataViewEditor /> (own rendering only, no child mocks)", () =>
122
122
  onCancel={jest.fn()}
123
123
  isSubmitting={false}
124
124
  mode="guided"
125
- />
125
+ />,
126
126
  );
127
127
  await waitForLoad(rendered);
128
128
 
@@ -143,21 +143,21 @@ describe("<SimpleDataViewEditor /> (own rendering only, no child mocks)", () =>
143
143
  onCancel={jest.fn()}
144
144
  isSubmitting={false}
145
145
  mode="guided"
146
- />
146
+ />,
147
147
  );
148
148
  await waitForLoad(rendered);
149
149
 
150
150
  expect(
151
- rendered.getByText("dataViews.form.step.information.description")
151
+ rendered.getByText("dataViews.form.step.information.description"),
152
152
  ).toBeInTheDocument();
153
153
  expect(
154
- rendered.getByText("dataViews.form.step.dataset.description")
154
+ rendered.getByText("dataViews.form.step.dataset.description"),
155
155
  ).toBeInTheDocument();
156
156
  expect(
157
- rendered.getByText("dataViews.form.step.aggregations.description")
157
+ rendered.getByText("dataViews.form.step.aggregations.description"),
158
158
  ).toBeInTheDocument();
159
159
  expect(
160
- rendered.getByText("dataViews.form.step.select.description")
160
+ rendered.getByText("dataViews.form.step.select.description"),
161
161
  ).toBeInTheDocument();
162
162
  });
163
163
  });
@@ -55,7 +55,7 @@ describe("reduceQueryableFields", () => {
55
55
  },
56
56
  ];
57
57
  expect(reduceQueryableFields(formatMessage)(queryables)).toStrictEqual(
58
- expected
58
+ expected,
59
59
  );
60
60
  });
61
61
 
@@ -103,7 +103,7 @@ describe("reduceQueryableFields", () => {
103
103
  },
104
104
  ];
105
105
  expect(reduceQueryableFields(formatMessage)(queryables)).toStrictEqual(
106
- expected
106
+ expected,
107
107
  );
108
108
  });
109
109
 
@@ -147,7 +147,7 @@ describe("reduceQueryableFields", () => {
147
147
  },
148
148
  ];
149
149
  expect(reduceQueryableFields(formatMessage)(queryables)).toStrictEqual(
150
- expected
150
+ expected,
151
151
  );
152
152
  });
153
153
 
@@ -201,7 +201,7 @@ describe("reduceQueryableFields", () => {
201
201
  },
202
202
  ];
203
203
  expect(reduceQueryableFields(formatMessage)(queryables)).toStrictEqual(
204
- expected
204
+ expected,
205
205
  );
206
206
  });
207
207
  });
@@ -12,12 +12,12 @@ import {
12
12
  } from "semantic-ui-react";
13
13
  import { FormProvider, useForm, Controller } from "react-hook-form";
14
14
  import QxContext from "@truedat/qx/components/QxContext";
15
+ import DataViewSummary from "../DataViewSummary";
15
16
  import DataViewSelect from "./DataViewSelect";
16
17
  import Queryables from "./Queryables";
17
- import DataViewSummary from "../DataViewSummary";
18
18
 
19
19
  const SourceSelector = lazy(
20
- () => import("@truedat/cx/sources/components/SourceSelector")
20
+ () => import("@truedat/cx/sources/components/SourceSelector"),
21
21
  );
22
22
 
23
23
  export default function AdvancedDataViewEditor({
@@ -59,7 +59,7 @@ export default function AdvancedDataViewEditor({
59
59
  rules={{
60
60
  required: formatMessage(
61
61
  { id: "form.validation.required" },
62
- { prop: formatMessage({ id: "dataViews.form.name" }) }
62
+ { prop: formatMessage({ id: "dataViews.form.name" }) },
63
63
  ),
64
64
  }}
65
65
  render={({
@@ -14,7 +14,7 @@ export default function DataViewSelect() {
14
14
 
15
15
  const fields = _.flow(
16
16
  watch,
17
- reduceQueryableFields(formatMessage)
17
+ reduceQueryableFields(formatMessage),
18
18
  )("queryables");
19
19
 
20
20
  return (
@@ -27,7 +27,7 @@ export default function Queryable({ index, onDelete }) {
27
27
  const fieldsOffset = _.prop(`[${index}].type`)(queryables) === "join" ? 1 : 0;
28
28
  const fields = _.flow(
29
29
  _.slice(0, index + fieldsOffset),
30
- reduceQueryableFields(formatMessage)
30
+ reduceQueryableFields(formatMessage),
31
31
  )(queryables);
32
32
 
33
33
  const queryable = watch(`queryables[${index}]`);
@@ -47,7 +47,7 @@ export default function Queryable({ index, onDelete }) {
47
47
  _.remove((qry) => qry.id == queryable.id),
48
48
  _.map("alias"),
49
49
  _.reject((alias) => _.isNil(alias) || _.isEmpty(alias)),
50
- _.includes(queryable.alias)
50
+ _.includes(queryable.alias),
51
51
  )(queryables)
52
52
  ? formatMessage({
53
53
  id: "dataViews.form.queryable.alias.duplicated",
@@ -58,7 +58,7 @@ export default function Queryable({ index, onDelete }) {
58
58
  _.remove((qry) => qry.id == queryable.id),
59
59
  _.map(queryableResourceKey),
60
60
  _.reject(_.isNil),
61
- _.includes(queryableResourceKey(queryable))
61
+ _.includes(queryableResourceKey(queryable)),
62
62
  )(queryables)
63
63
  ? formatMessage({
64
64
  id: "dataViews.form.queryable.resource.duplicated",
@@ -19,41 +19,41 @@ export const fieldsFromResource = (alias, parent_id) =>
19
19
  alias,
20
20
  parent_id,
21
21
  color: getColorById(parent_id),
22
- }))
22
+ })),
23
23
  );
24
24
 
25
25
  const queryableToFields =
26
26
  (formatMessage) =>
27
- ({ type, properties, alias, id: parent_id }) => {
28
- const selectFieldsMap = _.map.convert({ cap: false })((field) => ({
29
- id: field.id,
30
- alias: alias || formatMessage({ id: `dataViews.form.queryable.${type}` }),
31
- name: field.alias,
32
- parent_id,
33
- type: _.prop("expression.value.type")(field),
34
- color: getColorById(parent_id),
35
- }));
27
+ ({ type, properties, alias, id: parent_id }) => {
28
+ const selectFieldsMap = _.map.convert({ cap: false })((field) => ({
29
+ id: field.id,
30
+ alias: alias || formatMessage({ id: `dataViews.form.queryable.${type}` }),
31
+ name: field.alias,
32
+ parent_id,
33
+ type: _.prop("expression.value.type")(field),
34
+ color: getColorById(parent_id),
35
+ }));
36
36
 
37
- switch (type) {
38
- case "from":
39
- case "join":
40
- return fieldsFromResource(alias, parent_id)(properties);
41
- case "select":
42
- return _.flow(_.propOr([], "fields"), selectFieldsMap)(properties);
43
- case "group_by":
44
- const groupFields = _.flow(
45
- _.propOr([], "group_fields"),
46
- selectFieldsMap
47
- )(properties);
48
- const aggregateFields = _.flow(
49
- _.propOr([], "aggregate_fields"),
50
- selectFieldsMap
51
- )(properties);
52
- return _.concat(groupFields, aggregateFields);
53
- default:
54
- return [];
55
- }
56
- };
37
+ switch (type) {
38
+ case "from":
39
+ case "join":
40
+ return fieldsFromResource(alias, parent_id)(properties);
41
+ case "select":
42
+ return _.flow(_.propOr([], "fields"), selectFieldsMap)(properties);
43
+ case "group_by":
44
+ const groupFields = _.flow(
45
+ _.propOr([], "group_fields"),
46
+ selectFieldsMap,
47
+ )(properties);
48
+ const aggregateFields = _.flow(
49
+ _.propOr([], "aggregate_fields"),
50
+ selectFieldsMap,
51
+ )(properties);
52
+ return _.concat(groupFields, aggregateFields);
53
+ default:
54
+ return [];
55
+ }
56
+ };
57
57
 
58
58
  export const reduceQueryableFields = (formatMessage) => (queryables) => {
59
59
  // eslint-disable-next-line no-unused-vars
@@ -64,11 +64,11 @@ export const reduceQueryableFields = (formatMessage) => (queryables) => {
64
64
  halt
65
65
  ? [halt, accFields]
66
66
  : [
67
- _.includes(queryable.type)(["select", "group_by"]),
68
- _.concat(queryableToFields(formatMessage)(queryable), accFields),
69
- ],
70
- [false, []]
71
- )
67
+ _.includes(queryable.type)(["select", "group_by"]),
68
+ _.concat(queryableToFields(formatMessage)(queryable), accFields),
69
+ ],
70
+ [false, []],
71
+ ),
72
72
  )(queryables);
73
73
  return fields;
74
74
  };
@@ -25,7 +25,7 @@ export default function Select() {
25
25
  id: idx,
26
26
  alias: name,
27
27
  expression: { shape: "field", value: { id, parent_id, name, type } },
28
- })
28
+ }),
29
29
  )(ctxFields);
30
30
  const maxId = _.flow(_.map("id"), _.max)(fields) || 0;
31
31
 
@@ -29,12 +29,12 @@ export default function SelectField({ onDelete }) {
29
29
  queryable?.type == "select"
30
30
  ? queryable.properties.fields
31
31
  : _.concat(queryable?.properties.aggregate_fields)(
32
- queryable?.properties.group_fields
33
- );
32
+ queryable?.properties.group_fields,
33
+ );
34
34
 
35
35
  const queryableFieldsAlias = _.flow(
36
36
  _.remove((field) => field.id == id),
37
- _.map("alias")
37
+ _.map("alias"),
38
38
  )(queryableFields);
39
39
 
40
40
  useEffect(() => {
@@ -45,8 +45,8 @@ export default function SelectField({ onDelete }) {
45
45
  const validateField = (value) =>
46
46
  _.includes(value)(queryableFieldsAlias)
47
47
  ? formatMessage({
48
- id: "dataViews.form.queryable.alias.duplicated",
49
- })
48
+ id: "dataViews.form.queryable.alias.duplicated",
49
+ })
50
50
  : true;
51
51
 
52
52
  return (
@@ -21,7 +21,7 @@ describe("<From />", () => {
21
21
  <TestFormWrapper>
22
22
  <From />
23
23
  </TestFormWrapper>,
24
- renderOpts
24
+ renderOpts,
25
25
  );
26
26
 
27
27
  expect(container).toMatchSnapshot();
@@ -41,7 +41,7 @@ const renderGroupBy = (defaultValues) =>
41
41
  defaultValues={defaultValues}
42
42
  >
43
43
  <GroupBy />
44
- </TestFormWrapper>
44
+ </TestFormWrapper>,
45
45
  );
46
46
 
47
47
  describe("<GroupBy />", () => {
@@ -63,10 +63,10 @@ describe("<GroupBy />", () => {
63
63
  await waitForLoad(rendered);
64
64
 
65
65
  expect(
66
- rendered.getAllByRole("button", { name: /delete-group/i })
66
+ rendered.getAllByRole("button", { name: /delete-group/i }),
67
67
  ).toHaveLength(1);
68
68
  expect(
69
- rendered.getAllByRole("button", { name: /delete-aggregate/i })
69
+ rendered.getAllByRole("button", { name: /delete-aggregate/i }),
70
70
  ).toHaveLength(1);
71
71
  });
72
72
 
@@ -87,19 +87,19 @@ describe("<GroupBy />", () => {
87
87
  await waitForLoad(rendered);
88
88
 
89
89
  await user.click(
90
- rendered.getByRole("button", { name: /add_group_field/i })
90
+ rendered.getByRole("button", { name: /add_group_field/i }),
91
91
  );
92
92
  expect(
93
- rendered.getAllByRole("button", { name: /delete-group/i })
93
+ rendered.getAllByRole("button", { name: /delete-group/i }),
94
94
  ).toHaveLength(2);
95
95
 
96
96
  await user.click(
97
- rendered.getByRole("button", { name: /add_aggregate_field/i })
97
+ rendered.getByRole("button", { name: /add_aggregate_field/i }),
98
98
  );
99
99
  await waitFor(() =>
100
100
  expect(
101
- rendered.getAllByRole("button", { name: /delete-aggregate/i })
102
- ).toHaveLength(2)
101
+ rendered.getAllByRole("button", { name: /delete-aggregate/i }),
102
+ ).toHaveLength(2),
103
103
  );
104
104
  });
105
105
 
@@ -120,36 +120,36 @@ describe("<GroupBy />", () => {
120
120
  await waitForLoad(rendered);
121
121
 
122
122
  await user.click(
123
- rendered.getByRole("button", { name: /add_group_field/i })
123
+ rendered.getByRole("button", { name: /add_group_field/i }),
124
124
  );
125
125
  await user.click(
126
- rendered.getByRole("button", { name: /add_aggregate_field/i })
126
+ rendered.getByRole("button", { name: /add_aggregate_field/i }),
127
127
  );
128
128
  await waitFor(() =>
129
129
  expect(
130
- rendered.getAllByRole("button", { name: /delete-group/i })
131
- ).toHaveLength(2)
130
+ rendered.getAllByRole("button", { name: /delete-group/i }),
131
+ ).toHaveLength(2),
132
132
  );
133
133
  expect(
134
- rendered.getAllByRole("button", { name: /delete-aggregate/i })
134
+ rendered.getAllByRole("button", { name: /delete-aggregate/i }),
135
135
  ).toHaveLength(2);
136
136
 
137
137
  await user.click(
138
- rendered.getAllByRole("button", { name: /delete-group/i })[1]
138
+ rendered.getAllByRole("button", { name: /delete-group/i })[1],
139
139
  );
140
140
  await waitFor(() =>
141
141
  expect(
142
- rendered.getAllByRole("button", { name: /delete-group/i })
143
- ).toHaveLength(1)
142
+ rendered.getAllByRole("button", { name: /delete-group/i }),
143
+ ).toHaveLength(1),
144
144
  );
145
145
 
146
146
  await user.click(
147
- rendered.getAllByRole("button", { name: /delete-aggregate/i })[1]
147
+ rendered.getAllByRole("button", { name: /delete-aggregate/i })[1],
148
148
  );
149
149
  await waitFor(() =>
150
150
  expect(
151
- rendered.getAllByRole("button", { name: /delete-aggregate/i })
152
- ).toHaveLength(1)
151
+ rendered.getAllByRole("button", { name: /delete-aggregate/i }),
152
+ ).toHaveLength(1),
153
153
  );
154
154
  });
155
155
  });
@@ -7,7 +7,7 @@ describe("<Join />", () => {
7
7
  const rendered = render(
8
8
  <TestFormWrapper>
9
9
  <Join />
10
- </TestFormWrapper>
10
+ </TestFormWrapper>,
11
11
  );
12
12
  await waitForLoad(rendered);
13
13
  expect(rendered.container).toMatchSnapshot();
@@ -27,7 +27,7 @@ describe("<JoinTypeIcon />", () => {
27
27
  it("matches the latest snapshot for full_outer join", () => {
28
28
  const { container } = render(
29
29
  <JoinTypeIcon type="full_outer" />,
30
- renderOpts
30
+ renderOpts,
31
31
  );
32
32
 
33
33
  expect(container).toMatchSnapshot();
@@ -8,7 +8,7 @@ describe("<Select />", () => {
8
8
  const rendered = render(
9
9
  <TestFormWrapper>
10
10
  <Select />
11
- </TestFormWrapper>
11
+ </TestFormWrapper>,
12
12
  );
13
13
  await waitForLoad(rendered);
14
14
  expect(rendered.container).toMatchSnapshot();
@@ -56,12 +56,12 @@ describe("<Select />", () => {
56
56
  }}
57
57
  >
58
58
  <Select />
59
- </TestFormWrapper>
59
+ </TestFormWrapper>,
60
60
  );
61
61
  await waitForLoad(rendered);
62
62
 
63
63
  await user.click(
64
- rendered.getByRole("button", { name: /add_select_field/i })
64
+ rendered.getByRole("button", { name: /add_select_field/i }),
65
65
  );
66
66
  expect(rendered.container).toMatchSnapshot();
67
67
  });
@@ -105,12 +105,12 @@ describe("<Select />", () => {
105
105
  }}
106
106
  >
107
107
  <Select />
108
- </TestFormWrapper>
108
+ </TestFormWrapper>,
109
109
  );
110
110
  await waitForLoad(rendered);
111
111
 
112
112
  await user.click(
113
- rendered.getByRole("button", { name: /add_all_select_fields/i })
113
+ rendered.getByRole("button", { name: /add_all_select_fields/i }),
114
114
  );
115
115
  await user.hover(rendered.getAllByRole("textbox")[0]);
116
116
  await user.click(rendered.getByRole("button", { name: /delete/i }));
@@ -20,7 +20,7 @@ describe("<SelectField />", () => {
20
20
  }}
21
21
  >
22
22
  <SelectField />
23
- </TestFormWrapper>
23
+ </TestFormWrapper>,
24
24
  );
25
25
  await waitForLoad(rendered);
26
26
  expect(rendered.container).toMatchSnapshot();
@@ -45,7 +45,7 @@ describe("<SelectField />", () => {
45
45
  }}
46
46
  >
47
47
  <SelectField />
48
- </TestFormWrapper>
48
+ </TestFormWrapper>,
49
49
  );
50
50
  await waitForLoad(rendered);
51
51
  expect(rendered.container).toMatchSnapshot();
@@ -72,7 +72,7 @@ describe("<SelectField />", () => {
72
72
  }}
73
73
  >
74
74
  <SelectField onDelete={onDelete} />
75
- </TestFormWrapper>
75
+ </TestFormWrapper>,
76
76
  );
77
77
  await waitForLoad(rendered);
78
78
 
@@ -7,7 +7,7 @@ describe("<Where />", () => {
7
7
  const rendered = render(
8
8
  <TestFormWrapper>
9
9
  <Where />
10
- </TestFormWrapper>
10
+ </TestFormWrapper>,
11
11
  );
12
12
  await waitForLoad(rendered);
13
13
 
@@ -97,5 +97,5 @@ export const buildParentResourceMap = (queryables = []) =>
97
97
  _.flow(
98
98
  _.filter((q) => ["from", "join", "group_by"].includes(q.type)),
99
99
  _.map((q) => [q.id, { ...q, label: labelForQueryable(q) }]),
100
- _.fromPairs
100
+ _.fromPairs,
101
101
  )(queryables);
@@ -2,8 +2,8 @@ import _ from "lodash/fp";
2
2
  import { useEffect, useState } from "react";
3
3
  import { Accordion, Button, Divider, Icon } from "semantic-ui-react";
4
4
  import { useFormContext } from "react-hook-form";
5
- import { hasErrors } from "../queryableFunctions";
6
5
  import { useIntl } from "react-intl";
6
+ import { hasErrors } from "../queryableFunctions";
7
7
  import FormQueryable from "./FormQueryable";
8
8
 
9
9
  const formData = (groupByRange, havingRange) => {
@@ -29,7 +29,7 @@ const AggregationForm = ({
29
29
 
30
30
  const groupByIndex = _.flow(
31
31
  _.findIndex((q) => q.type == "group_by"),
32
- (index) => (index === -1 ? _.size(queryables) : index)
32
+ (index) => (index === -1 ? _.size(queryables) : index),
33
33
  )(queryables);
34
34
 
35
35
  const aggregations = _.slice(groupByIndex, _.size(queryables))(queryables);
@@ -2,8 +2,8 @@ import _ from "lodash/fp";
2
2
  import { useEffect, useState } from "react";
3
3
  import { Accordion, Button, Divider, Icon } from "semantic-ui-react";
4
4
  import { useFormContext } from "react-hook-form";
5
- import { hasErrors } from "../queryableFunctions";
6
5
  import { useIntl } from "react-intl";
6
+ import { hasErrors } from "../queryableFunctions";
7
7
  import FormQueryable from "./FormQueryable";
8
8
 
9
9
  const formData = (joinRange, whereRange) => {
@@ -15,7 +15,7 @@ const FormQueryable = ({ index = 0, prefix, type = "from", onDelete }) => {
15
15
  const fieldsOffset = _.prop(`[${index}].type`)(queryables) === "join" ? 1 : 0;
16
16
  const fields = _.flow(
17
17
  _.slice(0, index + fieldsOffset),
18
- reduceQueryableFields(formatMessage)
18
+ reduceQueryableFields(formatMessage),
19
19
  )(queryables);
20
20
 
21
21
  const queryable = watch(prefix);
@@ -36,7 +36,7 @@ const FormQueryable = ({ index = 0, prefix, type = "from", onDelete }) => {
36
36
  _.remove((qry) => qry.id == queryable.id),
37
37
  _.map("alias"),
38
38
  _.reject((alias) => _.isNil(alias) || _.isEmpty(alias)),
39
- _.includes(queryable.alias)
39
+ _.includes(queryable.alias),
40
40
  )(queryables)
41
41
  ? formatMessage({
42
42
  id: "dataViews.form.queryable.alias.duplicated",
@@ -47,7 +47,7 @@ const FormQueryable = ({ index = 0, prefix, type = "from", onDelete }) => {
47
47
  _.remove((qry) => qry.id == queryable.id),
48
48
  _.map(queryableResourceKey),
49
49
  _.reject(_.isNil),
50
- _.includes(queryableResourceKey(queryable))
50
+ _.includes(queryableResourceKey(queryable)),
51
51
  )(queryables)
52
52
  ? formatMessage({
53
53
  id: "dataViews.form.queryable.resource.duplicated",