@devgateway/dvz-wp-commons 1.1.0 → 1.3.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.
Files changed (65) hide show
  1. package/build/APIConfig.cjs +479 -0
  2. package/build/APIConfig.d.ts +31 -42
  3. package/build/APIConfig.js +366 -277
  4. package/build/APIutils.cjs +54 -0
  5. package/build/APIutils.d.ts +3 -3
  6. package/build/APIutils.js +11 -1
  7. package/build/Blocks.cjs +672 -0
  8. package/build/Blocks.d.ts +42 -65
  9. package/build/Blocks.js +524 -346
  10. package/build/CSVSourceConfig.cjs +99 -0
  11. package/build/CSVSourceConfig.d.ts +2 -3
  12. package/build/CSVSourceConfig.js +63 -41
  13. package/build/ChartColors.cjs +593 -0
  14. package/build/ChartColors.d.ts +4 -46
  15. package/build/ChartColors.js +431 -380
  16. package/build/ChartLegends.cjs +157 -0
  17. package/build/ChartLegends.d.ts +1 -33
  18. package/build/ChartLegends.js +173 -69
  19. package/build/ChartMeasures.cjs +192 -0
  20. package/build/ChartMeasures.d.ts +1 -23
  21. package/build/ChartMeasures.js +195 -108
  22. package/build/Constants.cjs +21 -0
  23. package/build/Constants.d.ts +18 -15
  24. package/build/Constants.js +3 -1
  25. package/build/DataFilters.cjs +176 -0
  26. package/build/DataFilters.d.ts +1 -12
  27. package/build/DataFilters.js +100 -93
  28. package/build/Format.cjs +1038 -0
  29. package/build/Format.d.ts +8 -10
  30. package/build/Format.js +428 -379
  31. package/build/MapCSVSourceConfig.cjs +36 -0
  32. package/build/MapCSVSourceConfig.d.ts +7 -9
  33. package/build/MapCSVSourceConfig.js +19 -9
  34. package/build/Measures.cjs +196 -0
  35. package/build/Measures.d.ts +1 -24
  36. package/build/Measures.js +208 -119
  37. package/build/MobileConfigUtils.cjs +92 -0
  38. package/build/MobileConfigUtils.d.ts +6 -6
  39. package/build/MobileConfigUtils.js +39 -32
  40. package/build/Tooltip.cjs +63 -0
  41. package/build/Tooltip.d.ts +1 -3
  42. package/build/Tooltip.js +27 -51
  43. package/build/Util.cjs +29 -0
  44. package/build/Util.d.ts +5 -6
  45. package/build/Util.js +9 -9
  46. package/build/hooks/index.cjs +1 -0
  47. package/build/hooks/index.js +0 -3
  48. package/build/icons/Chart.cjs +49 -0
  49. package/build/icons/Chart.d.ts +1 -2
  50. package/build/icons/Chart.js +10 -11
  51. package/build/icons/Generic.cjs +24 -0
  52. package/build/icons/Generic.d.ts +1 -2
  53. package/build/icons/Generic.js +25 -4
  54. package/build/icons/index.cjs +19 -0
  55. package/build/icons/index.d.ts +2 -2
  56. package/build/icons/index.js +2 -2
  57. package/build/index.cjs +225 -0
  58. package/build/index.d.ts +16 -18
  59. package/build/index.js +47 -19
  60. package/package.json +39 -30
  61. package/build/post-type.d.ts +0 -193
  62. package/build/post-type.js +0 -12
  63. package/build/tsconfig.tsbuildinfo +0 -1
  64. package/build/types.d.ts +0 -349
  65. package/build/types.js +0 -33
@@ -1,301 +1,390 @@
1
- import React from "react";
2
1
  import { Component } from "@wordpress/element";
3
2
  import { __ } from "@wordpress/i18n";
4
- import { Button, PanelBody, PanelRow, SelectControl, ToggleControl, } from "@wordpress/components";
5
- import Measures from "./Measures";
3
+ import {
4
+ Button,
5
+ PanelBody,
6
+ PanelRow,
7
+ SelectControl,
8
+ ToggleControl
9
+ } from "@wordpress/components";
10
+ import { Measures } from "./Measures.js";
6
11
  const defaultFormat = {
7
- style: "percent",
8
- minimumFractionDigits: 1,
9
- maximumFractionDigits: 1,
10
- currency: "USD",
12
+ style: "percent",
13
+ minimumFractionDigits: 1,
14
+ maximumFractionDigits: 1,
15
+ currency: "USD"
11
16
  };
12
- const FilterSelector = ({ param, index, options, onUpdateFilterParam }) => {
13
- const sortedOptions = options.sort(function (a, b) {
14
- var aLabel = a.label ? a.label.toLowerCase() : "";
15
- var bLabel = b.label ? b.label.toLowerCase() : "";
16
- return aLabel < bLabel ? -1 : aLabel > bLabel ? 1 : 0;
17
- });
18
- return (React.createElement(SelectControl, { onChange: (value) => {
19
- onUpdateFilterParam(value, index);
20
- }, value: param, options: sortedOptions }));
21
- };
22
- const CategoricalFilter = ({ value, index, items, onUpdateFilterValue }) => {
23
- if (items) {
24
- const sortedItems = items.sort(function (a, b) {
25
- if (a.position !== undefined && b.position !== undefined) {
26
- return a.position - b.position;
27
- }
28
- let aValue = a.value ? a.value.toLowerCase() : "";
29
- let bValue = b.value ? b.value.toLowerCase() : "";
30
- return aValue < bValue ? -1 : aValue > bValue ? 1 : 0;
31
- });
32
- return sortedItems.map((v) => (React.createElement(PanelRow, null,
33
- " ",
34
- React.createElement(ToggleControl, { label: v.value, checked: value.indexOf(v.id) > -1, onChange: (e) => {
35
- onUpdateFilterValue(v.id, index);
36
- } }))));
37
- }
38
- else {
39
- return null;
17
+ export const FilterSelector = ({ param, index, options, onUpdateFilterParam }) => {
18
+ const sortedOptions = options.sort(function(a, b) {
19
+ var aLabel = a.label ? a.label.toLowerCase() : "";
20
+ var bLabel = b.label ? b.label.toLowerCase() : "";
21
+ return aLabel < bLabel ? -1 : aLabel > bLabel ? 1 : 0;
22
+ });
23
+ return /* @__PURE__ */ React.createElement(
24
+ SelectControl,
25
+ {
26
+ onChange: (value) => {
27
+ onUpdateFilterParam(value, index);
28
+ },
29
+ value: param,
30
+ options: sortedOptions
40
31
  }
32
+ );
33
+ };
34
+ export const CategoricalFilter = ({ value, index, items, onUpdateFilterValue }) => {
35
+ if (items) {
36
+ const sortedItems = items.sort(function(a, b) {
37
+ if (a.position !== void 0 && b.position !== void 0 && a.position !== b.position) {
38
+ return a.position - b.position;
39
+ }
40
+ let aValue = a.value ? a.value.toLowerCase() : "";
41
+ let bValue = b.value ? b.value.toLowerCase() : "";
42
+ return aValue < bValue ? -1 : aValue > bValue ? 1 : 0;
43
+ });
44
+ return sortedItems.map((v) => /* @__PURE__ */ React.createElement(PanelRow, null, " ", /* @__PURE__ */ React.createElement(
45
+ ToggleControl,
46
+ {
47
+ label: v.value,
48
+ checked: value.indexOf(v.id) > -1,
49
+ onChange: (e) => {
50
+ onUpdateFilterValue(v.id, index);
51
+ }
52
+ }
53
+ )));
54
+ } else {
55
+ return null;
56
+ }
41
57
  };
42
58
  export class APIConfig extends Component {
43
- constructor(props) {
44
- super(props);
45
- this.onMeasuresChange = this.onMeasuresChange.bind(this);
46
- this.onSetSingleMeasure = this.onSetSingleMeasure.bind(this);
47
- this.addFilter = this.addFilter.bind(this);
48
- this.updateFilterParam = this.updateFilterParam.bind(this);
49
- this.updateFilterValue = this.updateFilterValue.bind(this);
50
- this.setFilterValue = this.setFilterValue.bind(this);
51
- this.removeFilter = this.removeFilter.bind(this);
52
- this.items = this.items.bind(this);
53
- this.onFormatChange = this.onFormatChange.bind(this);
54
- this.onCustomLabelToggleChange = this.onCustomLabelToggleChange.bind(this);
55
- this.onCustomLabelChange = this.onCustomLabelChange.bind(this);
56
- this.onUseCustomAxisFormatChange =
57
- this.onUseCustomAxisFormatChange.bind(this);
58
- //this.onCustomMeasureFieldChange = this.onCustomMeasureFieldChange.bind(this)
59
- this.state = {
60
- measures: [],
61
- dimensions: [],
62
- filters: [],
63
- categories: [],
64
- };
59
+ constructor(props) {
60
+ super(props);
61
+ this.onMeasuresChange = this.onMeasuresChange.bind(this);
62
+ this.onSetSingleMeasure = this.onSetSingleMeasure.bind(this);
63
+ this.addFilter = this.addFilter.bind(this);
64
+ this.updateFilterParam = this.updateFilterParam.bind(this);
65
+ this.updateFilterValue = this.updateFilterValue.bind(this);
66
+ this.setFilterValue = this.setFilterValue.bind(this);
67
+ this.removeFilter = this.removeFilter.bind(this);
68
+ this.items = this.items.bind(this);
69
+ this.onFormatChange = this.onFormatChange.bind(this);
70
+ this.onCustomLabelToggleChange = this.onCustomLabelToggleChange.bind(this);
71
+ this.onCustomLabelChange = this.onCustomLabelChange.bind(this);
72
+ this.onUseCustomAxisFormatChange = this.onUseCustomAxisFormatChange.bind(this);
73
+ this.state = {
74
+ measures: [],
75
+ dimensions: [],
76
+ filters: [],
77
+ categories: []
78
+ };
79
+ }
80
+ cleanSelection(prevState) {
81
+ const { setAttributes } = this.props;
82
+ setAttributes({ measures: [], filters: [] });
83
+ }
84
+ updateFilterParam(param, idx) {
85
+ const {
86
+ attributes: { filters },
87
+ setAttributes,
88
+ allFilters
89
+ } = this.props;
90
+ const newFilters = filters.slice();
91
+ const selected = allFilters.filter((f) => f.param === param)[0];
92
+ newFilters[idx] = { ...selected, value: [] };
93
+ setAttributes({ filters: newFilters });
94
+ }
95
+ updateFilterValue(value, idx) {
96
+ const {
97
+ attributes: { filters },
98
+ setAttributes,
99
+ allFilters
100
+ } = this.props;
101
+ const selected = filters[idx];
102
+ let values = selected.value;
103
+ if (values.indexOf(value) > -1) {
104
+ values = values.filter((v) => v != value);
105
+ } else {
106
+ values.push(value);
65
107
  }
66
- cleanSelection(prevState) {
67
- const { setAttributes } = this.props;
68
- setAttributes({ measures: [], filters: [] });
69
- }
70
- updateFilterParam(param, idx) {
71
- const { attributes: { filters }, setAttributes, allFilters, } = this.props;
72
- const newFilters = filters.slice();
73
- const selected = allFilters.filter((f) => f.param === param)[0];
74
- newFilters[idx] = { ...selected, value: [] };
75
- setAttributes({ filters: newFilters });
76
- }
77
- updateFilterValue(value, idx) {
78
- const { attributes: { filters }, setAttributes, allFilters, } = this.props;
79
- const selected = filters[idx];
80
- let values = selected.value;
81
- if (values.indexOf(value) > -1) {
82
- values = values.filter((v) => v != value);
83
- }
84
- else {
85
- values.push(value);
108
+ const newFilters = filters.slice();
109
+ newFilters[idx].value = values;
110
+ setAttributes({ filters: newFilters });
111
+ }
112
+ setFilterValue(value, idx) {
113
+ const {
114
+ attributes: { filters },
115
+ setAttributes,
116
+ allFilters
117
+ } = this.props;
118
+ const selected = filters[idx];
119
+ let values = selected.value;
120
+ values = value.split(",");
121
+ const newFilters = filters.slice();
122
+ newFilters[idx].value = values;
123
+ setAttributes({ filters: newFilters });
124
+ }
125
+ addFilter() {
126
+ const {
127
+ attributes: { filters },
128
+ setAttributes,
129
+ allFilters
130
+ } = this.props;
131
+ let index = filters.length > allFilters.length ? allFilters.length : filters.length;
132
+ const newFilter = allFilters && allFilters.length > 0 ? {
133
+ ...allFilters[index],
134
+ value: []
135
+ } : null;
136
+ let newFilters = filters.slice();
137
+ newFilters.push(newFilter);
138
+ setAttributes({ filters: newFilters });
139
+ }
140
+ removeFilter(f) {
141
+ const {
142
+ attributes: { filters },
143
+ setAttributes,
144
+ allFilters
145
+ } = this.props;
146
+ let newFilters = filters.slice(0, -1);
147
+ setAttributes({ filters: newFilters });
148
+ }
149
+ componentDidUpdate(prevProps) {
150
+ const {
151
+ setAttributes,
152
+ attributes: { type, colorBy, dimension2, types, measures, app }
153
+ } = this.props;
154
+ const {
155
+ attributes: { type: prevType, dimension2: prevDimension2 }
156
+ } = prevProps;
157
+ const prevTypeObject = types.filter((t) => t.value === prevType).length > 0 ? types.filter((t) => t.value === prevType)[0] : null;
158
+ if (dimension2 != prevDimension2) {
159
+ const uMs = Object.assign({}, measures);
160
+ if (dimension2 != "none") {
161
+ let i = 0;
162
+ if (uMs[app]) {
163
+ const selected = Object.keys(uMs[app]).map(
164
+ (k) => uMs[app][k].selected
165
+ ).length;
166
+ if (selected > 1) {
167
+ Object.keys(uMs[app]).forEach((k) => {
168
+ if (uMs[app][k].selected) {
169
+ uMs[app][k].prevSelected = true;
170
+ uMs[app][k].selected = i > 0 ? false : true;
171
+ } else {
172
+ uMs[app][k].prevSelected = false;
173
+ }
174
+ i++;
175
+ });
176
+ }
86
177
  }
87
- const newFilters = filters.slice();
88
- newFilters[idx].value = values;
89
- setAttributes({ filters: newFilters });
90
- }
91
- setFilterValue(value, idx) {
92
- const { attributes: { filters }, setAttributes, allFilters, } = this.props;
93
- const selected = filters[idx];
94
- let values = selected.value;
95
- values = value.split(",");
96
- const newFilters = filters.slice();
97
- newFilters[idx].value = values;
98
- setAttributes({ filters: newFilters });
99
- }
100
- addFilter() {
101
- const { attributes: { filters }, setAttributes, allFilters, } = this.props;
102
- let index = filters.length > allFilters.length ? allFilters.length : filters.length;
103
- const newFilter = allFilters && allFilters.length > 0
104
- ? {
105
- ...allFilters[index],
106
- value: [],
107
- }
108
- : null;
109
- let newFilters = filters.slice();
110
- newFilters.push(newFilter);
111
- setAttributes({ filters: newFilters });
112
- }
113
- removeFilter(f) {
114
- const { attributes: { filters }, setAttributes, allFilters, } = this.props;
115
- let newFilters = filters.slice(0, -1);
116
- setAttributes({ filters: newFilters });
178
+ setAttributes({ measures: uMs });
179
+ }
180
+ if (dimension2 == "none" && uMs[app]) {
181
+ Object.keys(uMs[app]).forEach((k) => {
182
+ if (uMs[app][k].prevSelected) {
183
+ uMs[app][k].selected = true;
184
+ uMs[app][k].prevSelected = false;
185
+ }
186
+ });
187
+ setAttributes({ measures: uMs });
188
+ }
117
189
  }
118
- componentDidUpdate(prevProps) {
119
- const { setAttributes, attributes: { type, colorBy, dimension2, types, measures, app }, } = this.props;
120
- const { attributes: { type: prevType, dimension2: prevDimension2 }, } = prevProps;
121
- const prevTypeObject = types.filter((t) => t.value === prevType).length > 0
122
- ? types.filter((t) => t.value === prevType)[0]
123
- : null;
124
- if (dimension2 != prevDimension2) {
125
- //TODO ensure only one measure remains selected when selecting a second dimensions
126
- const uMs = Object.assign({}, measures);
127
- if (dimension2 != "none") {
128
- let i = 0; //the idea is to keep one selected
129
- if (uMs[app]) {
130
- const selected = Object.keys(uMs[app]).map((k) => uMs[app][k].selected).length;
131
- if (selected > 1) {
132
- Object.keys(uMs[app]).forEach((k) => {
133
- if (uMs[app][k].selected) {
134
- uMs[app][k].prevSelected = true; //can be used to recover measures
135
- uMs[app][k].selected = i > 0 ? false : true;
136
- }
137
- else {
138
- uMs[app][k].prevSelected = false;
139
- }
140
- i++;
141
- });
142
- }
143
- }
144
- setAttributes({ measures: uMs });
145
- }
146
- if (dimension2 == "none" && uMs[app]) {
147
- Object.keys(uMs[app]).forEach((k) => {
148
- if (uMs[app][k].prevSelected) {
149
- uMs[app][k].selected = true; //can be used to recover measures
150
- uMs[app][k].prevSelected = false;
151
- }
152
- });
153
- setAttributes({ measures: uMs });
154
- }
155
- }
190
+ }
191
+ onSetSingleMeasure(value) {
192
+ const {
193
+ setAttributes,
194
+ attributes: { app, measures }
195
+ } = this.props;
196
+ const uMs = Object.assign({}, measures);
197
+ if (!uMs[app]) {
198
+ uMs[app] = {};
156
199
  }
157
- onSetSingleMeasure(value) {
158
- const { setAttributes, attributes: { app, measures }, } = this.props;
159
- const uMs = Object.assign({}, measures);
160
- if (!uMs[app]) {
161
- uMs[app] = {};
162
- }
163
- Object.keys(uMs[app])
164
- .filter((k) => typeof uMs[app][k] !== "boolean")
165
- .forEach((k) => (uMs[app][k].selected = false)); //single selection all other should be unselected
166
- if (uMs[app][value]) {
167
- uMs[app][value].selected = uMs[app][value].selected ? false : true;
168
- }
169
- else {
170
- uMs[app][value] = { selected: true, format: defaultFormat };
171
- }
172
- setAttributes({ measures: uMs });
200
+ Object.keys(uMs[app]).filter((k) => typeof uMs[app][k] !== "boolean").forEach((k) => uMs[app][k].selected = false);
201
+ if (uMs[app][value]) {
202
+ uMs[app][value].selected = uMs[app][value].selected ? false : true;
203
+ } else {
204
+ uMs[app][value] = { selected: true, format: defaultFormat };
173
205
  }
174
- onFormatChange(format, field) {
175
- const { setAttributes, attributes: { app, measures }, } = this.props;
176
- const uMs = Object.assign({}, { ...measures });
177
- if (!uMs[app]) {
178
- uMs[app] = {
179
- allowSelection: false,
180
- format: format,
181
- customFormat: format,
182
- selected: false,
183
- };
184
- }
185
- uMs[app][field] = format;
186
- setAttributes({ measures: uMs });
206
+ setAttributes({ measures: uMs });
207
+ }
208
+ onFormatChange(format, field) {
209
+ const {
210
+ setAttributes,
211
+ attributes: { app, measures }
212
+ } = this.props;
213
+ const uMs = Object.assign({}, { ...measures });
214
+ if (!uMs[app]) {
215
+ uMs[app] = {
216
+ allowSelection: false,
217
+ format,
218
+ customFormat: format,
219
+ selected: false
220
+ };
187
221
  }
188
- onUseCustomAxisFormatChange(value) {
189
- const { setAttributes, attributes: { app, measures }, } = this.props;
190
- const uMs = Object.assign({}, { ...measures });
191
- if (uMs[app]) {
192
- uMs[app].useCustomAxisFormat = value;
193
- setAttributes({ measures: uMs });
194
- }
195
- else {
196
- uMs[app] = {
197
- allowSelection: false,
198
- format: defaultFormat,
199
- customFormat: defaultFormat,
200
- selected: false,
201
- useCustomAxisFormat: value,
202
- };
203
- setAttributes({ measures: uMs });
204
- }
222
+ uMs[app][field] = format;
223
+ setAttributes({ measures: uMs });
224
+ }
225
+ onUseCustomAxisFormatChange(value) {
226
+ const {
227
+ setAttributes,
228
+ attributes: { app, measures }
229
+ } = this.props;
230
+ const uMs = Object.assign({}, { ...measures });
231
+ if (uMs[app]) {
232
+ uMs[app].useCustomAxisFormat = value;
233
+ setAttributes({ measures: uMs });
234
+ } else {
235
+ uMs[app] = {
236
+ allowSelection: false,
237
+ format: defaultFormat,
238
+ customFormat: defaultFormat,
239
+ selected: false,
240
+ useCustomAxisFormat: value
241
+ };
242
+ setAttributes({ measures: uMs });
205
243
  }
206
- /*
207
- onCustomMeasureFieldChange(measureName, field, value) {
244
+ }
245
+ /*
246
+ onCustomMeasureFieldChange(measureName, field, value) {
208
247
 
209
- const {setAttributes, attributes: {measures}} = this.props
210
- const uMs = Object.assign({}, {...measures})
248
+ const {setAttributes, attributes: {measures}} = this.props
249
+ const uMs = Object.assign({}, {...measures})
211
250
 
212
- if (uMs[measureName]) {
213
- uMs[measureName][field] = value
214
- } else {
215
- uMs[measureName] = {allowSelection: false, field: value, selected: false}
216
- }
251
+ if (uMs[measureName]) {
252
+ uMs[measureName][field] = value
253
+ } else {
254
+ uMs[measureName] = {allowSelection: false, field: value, selected: false}
255
+ }
217
256
 
218
- setAttributes({measures: uMs})
219
- }
220
- */
221
- onMeasuresChange(value) {
222
- const { setAttributes, attributes: { app, measures }, } = this.props;
223
- const uMs = Object.assign({}, measures);
224
- if (!uMs[app]) {
225
- uMs[app] = {};
226
- }
227
- if (uMs[app][value]) {
228
- uMs[app][value].selected = uMs[app][value].selected ? false : true;
257
+ setAttributes({measures: uMs})
229
258
  }
230
- else {
231
- uMs[app][value] = { selected: true, format: defaultFormat };
232
- }
233
- setAttributes({ measures: uMs });
259
+ */
260
+ onMeasuresChange(value) {
261
+ const {
262
+ setAttributes,
263
+ attributes: { app, measures }
264
+ } = this.props;
265
+ const uMs = Object.assign({}, measures);
266
+ if (!uMs[app]) {
267
+ uMs[app] = {};
234
268
  }
235
- onCustomLabelToggleChange(value) {
236
- const { setAttributes, attributes: { app, measures }, } = this.props;
237
- const uMs = Object.assign({}, measures);
238
- if (uMs[app] && uMs[app][value]) {
239
- uMs[app][value].hasCustomLabel = uMs[app][value].hasCustomLabel
240
- ? false
241
- : true;
242
- setAttributes({ measures: uMs });
243
- }
269
+ if (uMs[app][value]) {
270
+ uMs[app][value].selected = uMs[app][value].selected ? false : true;
271
+ } else {
272
+ uMs[app][value] = { selected: true, format: defaultFormat };
244
273
  }
245
- onCustomLabelChange(value, customLabel) {
246
- const { setAttributes, attributes: { app, measures }, } = this.props;
247
- const uMs = Object.assign({}, measures);
248
- if (uMs[app] && uMs[app][value] && uMs[app][value].hasCustomLabel) {
249
- uMs[app][value].customLabel = customLabel;
250
- setAttributes({ measures: uMs });
251
- }
274
+ setAttributes({ measures: uMs });
275
+ }
276
+ onCustomLabelToggleChange(value) {
277
+ const {
278
+ setAttributes,
279
+ attributes: { app, measures }
280
+ } = this.props;
281
+ const uMs = Object.assign({}, measures);
282
+ if (uMs[app] && uMs[app][value]) {
283
+ uMs[app][value].hasCustomLabel = uMs[app][value].hasCustomLabel ? false : true;
284
+ setAttributes({ measures: uMs });
252
285
  }
253
- items(type) {
254
- const values = this.props.allCategories
255
- ? this.props.allCategories.filter((c) => c.type === type)
256
- : [];
257
- const cat = values.length > 0 ? values[0] : null;
258
- let items = null;
259
- if (type === "Boolean") {
260
- items = [
261
- { value: "Yes", id: 1 },
262
- { value: "No", id: 0 },
263
- ];
264
- }
265
- else if (cat) {
266
- items = cat.items.map((item) => ({ value: item.value, id: item.id }));
267
- }
268
- return items;
286
+ }
287
+ onCustomLabelChange(value, customLabel) {
288
+ const {
289
+ setAttributes,
290
+ attributes: { app, measures }
291
+ } = this.props;
292
+ const uMs = Object.assign({}, measures);
293
+ if (uMs[app] && uMs[app][value] && uMs[app][value].hasCustomLabel) {
294
+ uMs[app][value].customLabel = customLabel;
295
+ setAttributes({ measures: uMs });
269
296
  }
270
- render() {
271
- const { allDimensions, allFilters, allMeasures, setAttributes, attributes: { measures, filters, dimension1, dimension2, type, types }, } = this.props;
272
- const currentType = types.filter((t) => t.value === type).length > 0
273
- ? types.filter((t) => t.value === type)[0]
274
- : null;
275
- return [
276
- React.createElement(PanelBody, { initialOpen: false, title: __(type == "map" ? "Fields" : `Dimensions`) },
277
- React.createElement(PanelRow, null,
278
- React.createElement(SelectControl, { multiple: false, label: __(type == "map" ? "Matching Field" : "First Dimension"), value: dimension1, onChange: (value) => {
279
- setAttributes({
280
- dimension1: value,
281
- dimension2: value == "none" ? "none" : dimension2,
282
- });
283
- }, options: allDimensions })),
284
- type != "line" && type != "radar" && (React.createElement(PanelRow, null,
285
- React.createElement(SelectControl, { multiple: false, label: __(type == "map" ? "Breakdown Field" : "Second Dimension"), value: dimension2, onChange: (value) => {
286
- setAttributes({ dimension2: value });
287
- }, options: allDimensions, disabled: dimension1 == "none" })))),
288
- React.createElement(Measures, { ...this.props, onFormatChange: this.onFormatChange, onUseCustomAxisFormatChange: this.onUseCustomAxisFormatChange, onSetSingleMeasure: this.onSetSingleMeasure, onMeasuresChange: this.onMeasuresChange, onCustomLabelToggleChange: this.onCustomLabelToggleChange, onCustomLabelChange: this.onCustomLabelChange, currentType: currentType }),
289
- React.createElement(React.Fragment, null,
290
- React.createElement(PanelBody, { initialOpen: false, title: __("Filters") },
291
- filters.map((f, index) => {
292
- return (React.createElement(PanelBody, { initialOpen: true, title: __(`Filter - ${f.label}`) },
293
- React.createElement(FilterSelector, { param: f.param, index: index, options: allFilters, onUpdateFilterParam: this.updateFilterParam }),
294
- React.createElement(CategoricalFilter, { value: f.value, index: index, items: this.items(f.type), onUpdateFilterValue: this.updateFilterValue })));
295
- }),
296
- React.createElement(PanelRow, null,
297
- React.createElement(Button, { variant: "link", onClick: this.addFilter }, __("Add Filter")),
298
- React.createElement(Button, { variant: "link", onClick: this.removeFilter }, __("Remove"))))),
299
- ];
297
+ }
298
+ items(type) {
299
+ const values = this.props.allCategories ? this.props.allCategories.filter((c) => c.type === type) : [];
300
+ const cat = values.length > 0 ? values[0] : null;
301
+ let items = null;
302
+ if (type === "Boolean") {
303
+ items = [
304
+ { value: "Yes", id: true },
305
+ { value: "No", id: false }
306
+ ];
307
+ } else if (cat) {
308
+ items = cat.items;
300
309
  }
310
+ return items;
311
+ }
312
+ render() {
313
+ const {
314
+ allDimensions,
315
+ allFilters,
316
+ allMeasures,
317
+ setAttributes,
318
+ attributes: { measures, filters, dimension1, dimension2, type, types }
319
+ } = this.props;
320
+ const currentType = types.filter((t) => t.value === type).length > 0 ? types.filter((t) => t.value === type)[0] : null;
321
+ return [
322
+ /* @__PURE__ */ React.createElement(
323
+ PanelBody,
324
+ {
325
+ initialOpen: false,
326
+ title: __(type == "map" ? "Fields" : `Dimensions`)
327
+ },
328
+ /* @__PURE__ */ React.createElement(PanelRow, null, /* @__PURE__ */ React.createElement(
329
+ SelectControl,
330
+ {
331
+ label: __(type == "map" ? "Matching Field" : "First Dimension"),
332
+ value: [dimension1],
333
+ onChange: (value) => {
334
+ setAttributes({
335
+ dimension1: value,
336
+ dimension2: value == "none" ? "none" : dimension2
337
+ });
338
+ },
339
+ options: allDimensions
340
+ }
341
+ )),
342
+ !["radar"].includes(type) && /* @__PURE__ */ React.createElement(PanelRow, null, /* @__PURE__ */ React.createElement(
343
+ SelectControl,
344
+ {
345
+ label: __(type == "map" ? "Breakdown Field" : "Second Dimension"),
346
+ value: [dimension2],
347
+ onChange: (value) => {
348
+ setAttributes({ dimension2: value });
349
+ },
350
+ options: allDimensions,
351
+ disabled: dimension1 == "none"
352
+ }
353
+ ))
354
+ ),
355
+ /* @__PURE__ */ React.createElement(
356
+ Measures,
357
+ {
358
+ onFormatChange: this.onFormatChange,
359
+ onUseCustomAxisFormatChange: this.onUseCustomAxisFormatChange,
360
+ onSetSingleMeasure: this.onSetSingleMeasure,
361
+ onMeasuresChange: this.onMeasuresChange,
362
+ onCustomLabelToggleChange: this.onCustomLabelToggleChange,
363
+ onCustomLabelChange: this.onCustomLabelChange,
364
+ ...this.props,
365
+ currentType
366
+ }
367
+ ),
368
+ /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(PanelBody, { initialOpen: false, title: __("Filters") }, filters.map((f, index) => {
369
+ return /* @__PURE__ */ React.createElement(PanelBody, { initialOpen: true, title: __(`Filter - ${f.label}`) }, /* @__PURE__ */ React.createElement(
370
+ FilterSelector,
371
+ {
372
+ param: f.param,
373
+ index,
374
+ options: allFilters,
375
+ onUpdateFilterParam: this.updateFilterParam
376
+ }
377
+ ), /* @__PURE__ */ React.createElement(
378
+ CategoricalFilter,
379
+ {
380
+ value: f.value,
381
+ index,
382
+ items: this.items(f.type),
383
+ onUpdateFilterValue: this.updateFilterValue
384
+ }
385
+ ));
386
+ }), /* @__PURE__ */ React.createElement(PanelRow, null, /* @__PURE__ */ React.createElement(Button, { variant: "link", onClick: this.addFilter }, __("Add Filter")), /* @__PURE__ */ React.createElement(Button, { variant: "link", onClick: this.removeFilter }, __("Remove")))))
387
+ ];
388
+ }
301
389
  }
390
+ export default APIConfig;