@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.
- package/build/APIConfig.cjs +479 -0
- package/build/APIConfig.d.ts +31 -42
- package/build/APIConfig.js +366 -277
- package/build/APIutils.cjs +54 -0
- package/build/APIutils.d.ts +3 -3
- package/build/APIutils.js +11 -1
- package/build/Blocks.cjs +672 -0
- package/build/Blocks.d.ts +42 -65
- package/build/Blocks.js +524 -346
- package/build/CSVSourceConfig.cjs +99 -0
- package/build/CSVSourceConfig.d.ts +2 -3
- package/build/CSVSourceConfig.js +63 -41
- package/build/ChartColors.cjs +593 -0
- package/build/ChartColors.d.ts +4 -46
- package/build/ChartColors.js +431 -380
- package/build/ChartLegends.cjs +157 -0
- package/build/ChartLegends.d.ts +1 -33
- package/build/ChartLegends.js +173 -69
- package/build/ChartMeasures.cjs +192 -0
- package/build/ChartMeasures.d.ts +1 -23
- package/build/ChartMeasures.js +195 -108
- package/build/Constants.cjs +21 -0
- package/build/Constants.d.ts +18 -15
- package/build/Constants.js +3 -1
- package/build/DataFilters.cjs +176 -0
- package/build/DataFilters.d.ts +1 -12
- package/build/DataFilters.js +100 -93
- package/build/Format.cjs +1038 -0
- package/build/Format.d.ts +8 -10
- package/build/Format.js +428 -379
- package/build/MapCSVSourceConfig.cjs +36 -0
- package/build/MapCSVSourceConfig.d.ts +7 -9
- package/build/MapCSVSourceConfig.js +19 -9
- package/build/Measures.cjs +196 -0
- package/build/Measures.d.ts +1 -24
- package/build/Measures.js +208 -119
- package/build/MobileConfigUtils.cjs +92 -0
- package/build/MobileConfigUtils.d.ts +6 -6
- package/build/MobileConfigUtils.js +39 -32
- package/build/Tooltip.cjs +63 -0
- package/build/Tooltip.d.ts +1 -3
- package/build/Tooltip.js +27 -51
- package/build/Util.cjs +29 -0
- package/build/Util.d.ts +5 -6
- package/build/Util.js +9 -9
- package/build/hooks/index.cjs +1 -0
- package/build/hooks/index.js +0 -3
- package/build/icons/Chart.cjs +49 -0
- package/build/icons/Chart.d.ts +1 -2
- package/build/icons/Chart.js +10 -11
- package/build/icons/Generic.cjs +24 -0
- package/build/icons/Generic.d.ts +1 -2
- package/build/icons/Generic.js +25 -4
- package/build/icons/index.cjs +19 -0
- package/build/icons/index.d.ts +2 -2
- package/build/icons/index.js +2 -2
- package/build/index.cjs +225 -0
- package/build/index.d.ts +16 -18
- package/build/index.js +47 -19
- package/package.json +39 -30
- package/build/post-type.d.ts +0 -193
- package/build/post-type.js +0 -12
- package/build/tsconfig.tsbuildinfo +0 -1
- package/build/types.d.ts +0 -349
- package/build/types.js +0 -33
package/build/ChartMeasures.js
CHANGED
|
@@ -1,117 +1,204 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import Format from './Format';
|
|
1
|
+
import { __ } from "@wordpress/i18n";
|
|
2
|
+
import { CheckboxControl, PanelBody, PanelRow, SelectControl, ToggleControl, TextControl } from "@wordpress/components";
|
|
3
|
+
import Format from "./Format.js";
|
|
5
4
|
import { togglePanel } from "./Util.js";
|
|
6
5
|
import { getTranslation } from "./APIutils.js";
|
|
7
6
|
const defaultFormat = {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
"style": "percent",
|
|
8
|
+
"minimumFractionDigits": 1,
|
|
9
|
+
"maximumFractionDigits": 1,
|
|
10
|
+
"currency": "USD"
|
|
12
11
|
};
|
|
13
12
|
export const ChartMeasures = (props) => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
13
|
+
const {
|
|
14
|
+
onMeasuresChange,
|
|
15
|
+
onFormatChange,
|
|
16
|
+
onUseCustomAxisFormatChange,
|
|
17
|
+
onSetSingleMeasure,
|
|
18
|
+
onCustomLabelToggleChange,
|
|
19
|
+
onCustomLabelChange,
|
|
20
|
+
allMeasures,
|
|
21
|
+
setAttributes,
|
|
22
|
+
title,
|
|
23
|
+
attributes: {
|
|
24
|
+
panelStatus,
|
|
25
|
+
measures,
|
|
26
|
+
dimension1,
|
|
27
|
+
dimension2,
|
|
28
|
+
type,
|
|
29
|
+
app
|
|
30
|
+
}
|
|
31
|
+
} = props;
|
|
32
|
+
const MToggle = ({ measure }) => {
|
|
33
|
+
const userMeasure = measures[app] ? measures[app][measure.value] : {};
|
|
34
|
+
return /* @__PURE__ */ React.createElement(
|
|
35
|
+
ToggleControl,
|
|
36
|
+
{
|
|
37
|
+
label: getTranslation(measure),
|
|
38
|
+
checked: userMeasure ? userMeasure.selected : false,
|
|
39
|
+
onChange: (value) => onMeasuresChange(measure.value)
|
|
40
|
+
}
|
|
41
|
+
);
|
|
42
|
+
};
|
|
43
|
+
const MCheckbox = ({ measure }) => {
|
|
44
|
+
const userMeasure = measures[app] ? measures[app][measure.value] : {};
|
|
45
|
+
return /* @__PURE__ */ React.createElement(
|
|
46
|
+
CheckboxControl,
|
|
47
|
+
{
|
|
48
|
+
label: getTranslation(measure),
|
|
49
|
+
checked: userMeasure ? userMeasure.selected : false,
|
|
50
|
+
onChange: (value) => onSetSingleMeasure(measure.value)
|
|
51
|
+
}
|
|
52
|
+
);
|
|
53
|
+
};
|
|
54
|
+
const MeasureOptions = ({ measure, single }) => {
|
|
55
|
+
return /* @__PURE__ */ React.createElement(PanelRow, null, single && /* @__PURE__ */ React.createElement(MCheckbox, { measure }), !single && /* @__PURE__ */ React.createElement(MToggle, { measure }));
|
|
56
|
+
};
|
|
57
|
+
const countSelected = (g) => {
|
|
58
|
+
if (measures[app]) {
|
|
59
|
+
const mG = allMeasures.filter((f) => getTranslation(f.group) === g);
|
|
60
|
+
let count = 0;
|
|
61
|
+
Object.keys(measures[app]).filter((l) => mG.map((m) => m.value).indexOf(l) > -1).forEach((k) => {
|
|
62
|
+
if (measures[app][k].selected) {
|
|
63
|
+
count++;
|
|
38
64
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return [];
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
return
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
65
|
+
});
|
|
66
|
+
return count;
|
|
67
|
+
}
|
|
68
|
+
return 0;
|
|
69
|
+
};
|
|
70
|
+
const countTotal = (g) => {
|
|
71
|
+
if (g) {
|
|
72
|
+
return allMeasures.filter((f) => getTranslation(f.group) === g).length;
|
|
73
|
+
}
|
|
74
|
+
return 0;
|
|
75
|
+
};
|
|
76
|
+
const getSelectedMeasures = () => {
|
|
77
|
+
if (measures[app] && allMeasures) {
|
|
78
|
+
return Object.keys(measures[app]).filter((k) => measures[app][k].selected).map((k) => {
|
|
79
|
+
return allMeasures.filter((m) => m.value === k)[0];
|
|
80
|
+
}).filter((m) => m);
|
|
81
|
+
}
|
|
82
|
+
return [];
|
|
83
|
+
};
|
|
84
|
+
const selectedMeasures = getSelectedMeasures();
|
|
85
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
|
|
86
|
+
PanelBody,
|
|
87
|
+
{
|
|
88
|
+
title: title ? title : __("Measures"),
|
|
89
|
+
initialOpen: panelStatus["MEASURES"],
|
|
90
|
+
onToggle: (e) => togglePanel("MEASURES", panelStatus, setAttributes)
|
|
91
|
+
},
|
|
92
|
+
/*
|
|
93
|
+
Multiple measures conditions
|
|
94
|
+
|
|
95
|
+
Bar:
|
|
96
|
+
no dimensions selected
|
|
97
|
+
one dimension is selected
|
|
98
|
+
- not available when second dimension gets selected
|
|
99
|
+
|
|
100
|
+
Line:
|
|
101
|
+
- Always multi measure as measures represents line series, one dimension should always be selected
|
|
102
|
+
|
|
103
|
+
Pie:
|
|
104
|
+
no dimensions selected
|
|
105
|
+
- not available when any dimension is selected
|
|
106
|
+
*/
|
|
107
|
+
(type == "line" || type == "bar" && dimension2 == "none" || type == "pie" && dimension1 == "none" && dimension2 == "none") && allMeasures && [...new Set(allMeasures.map((p) => getTranslation(p.group)))].map(
|
|
108
|
+
(g) => {
|
|
109
|
+
return /* @__PURE__ */ React.createElement(
|
|
110
|
+
PanelBody,
|
|
111
|
+
{
|
|
112
|
+
initialOpen: panelStatus[g],
|
|
113
|
+
onToggle: (e) => togglePanel(g, panelStatus, setAttributes),
|
|
114
|
+
title: `${g} (${countSelected(g)} / ${countTotal(g)} ) `
|
|
115
|
+
},
|
|
116
|
+
allMeasures.filter((f) => getTranslation(f.group) === g).map((m) => /* @__PURE__ */ React.createElement(PanelRow, null, /* @__PURE__ */ React.createElement(MeasureOptions, { single: false, measure: m })))
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
),
|
|
120
|
+
/*Single measure conditions
|
|
121
|
+
|
|
122
|
+
Bar:
|
|
123
|
+
2 dimensions selected
|
|
66
124
|
Line:
|
|
67
|
-
|
|
68
|
-
|
|
125
|
+
never
|
|
69
126
|
Pie:
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
127
|
+
any dimensions selected
|
|
128
|
+
|
|
129
|
+
*/
|
|
130
|
+
(type == "bar" && dimension2 != "none" || type == "pie" && (dimension1 != "none" || dimension2 != "none")) && allMeasures && [...new Set(allMeasures.map((p) => getTranslation(p.group)))].map((g) => {
|
|
131
|
+
return /* @__PURE__ */ React.createElement(
|
|
132
|
+
PanelBody,
|
|
133
|
+
{
|
|
134
|
+
initialOpen: panelStatus[g],
|
|
135
|
+
onToggle: (e) => togglePanel(g, panelStatus, setAttributes),
|
|
136
|
+
title: `${g} (${countSelected(g)} / ${allMeasures.filter((f) => f.group === g).length} ) `
|
|
137
|
+
},
|
|
138
|
+
allMeasures.filter((f) => getTranslation(f.group) === g).map((m) => /* @__PURE__ */ React.createElement(PanelRow, null, /* @__PURE__ */ React.createElement(MeasureOptions, { single: true, measure: m })))
|
|
139
|
+
);
|
|
140
|
+
}),
|
|
141
|
+
type == "overlay" && allMeasures && /* @__PURE__ */ React.createElement(
|
|
142
|
+
SelectControl,
|
|
143
|
+
{
|
|
144
|
+
label: "Measure",
|
|
145
|
+
value: selectedMeasures && selectedMeasures[0] ? selectedMeasures[0].value : null,
|
|
146
|
+
options: [{ value: "", label: "Select Measure" }, ...allMeasures],
|
|
147
|
+
onChange: (measure) => onSetSingleMeasure(measure),
|
|
148
|
+
__nextHasNoMarginBottom: true
|
|
149
|
+
}
|
|
150
|
+
),
|
|
151
|
+
type != "overlay" && /* @__PURE__ */ React.createElement(
|
|
152
|
+
PanelBody,
|
|
153
|
+
{
|
|
154
|
+
title: __("Format"),
|
|
155
|
+
initialOpen: panelStatus["FORMAT"],
|
|
156
|
+
onToggle: (e) => togglePanel("FORMAT", panelStatus, setAttributes)
|
|
157
|
+
},
|
|
158
|
+
/* @__PURE__ */ React.createElement(
|
|
159
|
+
Format,
|
|
160
|
+
{
|
|
161
|
+
format: measures[app] && measures[app].format ? measures[app].format : defaultFormat,
|
|
162
|
+
customFormat: measures[app] && measures[app].customFormat ? measures[app].customFormat : defaultFormat,
|
|
163
|
+
useCustomAxisFormat: measures[app] ? measures[app].useCustomAxisFormat : false,
|
|
164
|
+
onFormatChange: (format, field) => {
|
|
165
|
+
onFormatChange(format, field);
|
|
166
|
+
},
|
|
167
|
+
onUseCustomAxisFormatChange: (value) => {
|
|
168
|
+
onUseCustomAxisFormatChange(value);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
)
|
|
172
|
+
)
|
|
173
|
+
), type != "overlay" && selectedMeasures && selectedMeasures.length > 0 && /* @__PURE__ */ React.createElement(
|
|
174
|
+
PanelBody,
|
|
175
|
+
{
|
|
176
|
+
title: __("Measure Label Customization"),
|
|
177
|
+
initialOpen: panelStatus["MEASURES_LABEL_CUSTOMIZATION"],
|
|
178
|
+
onToggle: (e) => togglePanel("MEASURES_LABEL_CUSTOMIZATION", panelStatus, setAttributes)
|
|
179
|
+
},
|
|
180
|
+
selectedMeasures && [...new Set(selectedMeasures.map((p) => getTranslation(p.group)))].map(
|
|
181
|
+
(g) => {
|
|
182
|
+
return /* @__PURE__ */ React.createElement(
|
|
183
|
+
PanelBody,
|
|
184
|
+
{
|
|
185
|
+
initialOpen: panelStatus[g + "_LABEL_CUSTOMIZATION"],
|
|
186
|
+
onToggle: (e) => togglePanel(g + "_LABEL_CUSTOMIZATION", panelStatus, setAttributes),
|
|
187
|
+
title: `${g}`
|
|
188
|
+
},
|
|
189
|
+
selectedMeasures.filter((f) => getTranslation(f.group) === g).map((m) => {
|
|
190
|
+
const userMeasure = measures[app] ? measures[app][m.value] : {};
|
|
191
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(PanelRow, null, /* @__PURE__ */ React.createElement(
|
|
192
|
+
ToggleControl,
|
|
193
|
+
{
|
|
194
|
+
label: getTranslation(m),
|
|
195
|
+
checked: userMeasure ? userMeasure.hasCustomLabel : false,
|
|
196
|
+
onChange: (value) => onCustomLabelToggleChange(m.value)
|
|
197
|
+
}
|
|
198
|
+
), " "), userMeasure.hasCustomLabel && /* @__PURE__ */ React.createElement(PanelRow, null, /* @__PURE__ */ React.createElement(TextControl, { label: __("Custom Label"), value: userMeasure ? userMeasure.customLabel : "", onChange: (value) => onCustomLabelChange(m.value, value) })));
|
|
199
|
+
})
|
|
200
|
+
);
|
|
201
|
+
}
|
|
202
|
+
)
|
|
203
|
+
));
|
|
116
204
|
};
|
|
117
|
-
export default ChartMeasures;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.DEFAULT_FORMAT_SETTINGS = exports.BLOCKS_NS = exports.BLOCKS_CATEGORY = void 0;
|
|
7
|
+
const DEFAULT_FORMAT_SETTINGS = exports.DEFAULT_FORMAT_SETTINGS = {
|
|
8
|
+
format: {
|
|
9
|
+
style: "percent",
|
|
10
|
+
minimumFractionDigits: 2,
|
|
11
|
+
maximumFractionDigits: 2
|
|
12
|
+
},
|
|
13
|
+
customFormat: {
|
|
14
|
+
style: "percent",
|
|
15
|
+
minimumFractionDigits: 2,
|
|
16
|
+
maximumFractionDigits: 2
|
|
17
|
+
},
|
|
18
|
+
useCustomAxisFormat: false
|
|
19
|
+
};
|
|
20
|
+
const BLOCKS_CATEGORY = exports.BLOCKS_CATEGORY = 'wp-react-lib-blocks';
|
|
21
|
+
const BLOCKS_NS = exports.BLOCKS_NS = 'viz';
|
package/build/Constants.d.ts
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
export
|
|
2
|
-
format
|
|
3
|
-
style: string;
|
|
4
|
-
minimumFractionDigits: number;
|
|
5
|
-
maximumFractionDigits: number;
|
|
6
|
-
}
|
|
7
|
-
customFormat
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
export namespace DEFAULT_FORMAT_SETTINGS {
|
|
2
|
+
namespace format {
|
|
3
|
+
let style: string;
|
|
4
|
+
let minimumFractionDigits: number;
|
|
5
|
+
let maximumFractionDigits: number;
|
|
6
|
+
}
|
|
7
|
+
namespace customFormat {
|
|
8
|
+
let style_1: string;
|
|
9
|
+
export { style_1 as style };
|
|
10
|
+
let minimumFractionDigits_1: number;
|
|
11
|
+
export { minimumFractionDigits_1 as minimumFractionDigits };
|
|
12
|
+
let maximumFractionDigits_1: number;
|
|
13
|
+
export { maximumFractionDigits_1 as maximumFractionDigits };
|
|
14
|
+
}
|
|
15
|
+
let useCustomAxisFormat: boolean;
|
|
16
|
+
}
|
|
17
|
+
export const BLOCKS_CATEGORY: "wp-react-lib-blocks";
|
|
18
|
+
export const BLOCKS_NS: "viz";
|
package/build/Constants.js
CHANGED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
module.exports = exports.DataFilters = void 0;
|
|
7
|
+
var _components = require("@wordpress/components");
|
|
8
|
+
var _i18n = require("@wordpress/i18n");
|
|
9
|
+
const DataFilters = props => {
|
|
10
|
+
const updateFilterParam = (param, idx) => {
|
|
11
|
+
const {
|
|
12
|
+
attributes: {
|
|
13
|
+
filters: filters2
|
|
14
|
+
},
|
|
15
|
+
setAttributes,
|
|
16
|
+
allFilters: allFilters2
|
|
17
|
+
} = props;
|
|
18
|
+
const newFilters = filters2.slice();
|
|
19
|
+
const selected = allFilters2.filter(f => f.param === param)[0];
|
|
20
|
+
newFilters[idx] = {
|
|
21
|
+
...selected,
|
|
22
|
+
value: []
|
|
23
|
+
};
|
|
24
|
+
setAttributes({
|
|
25
|
+
filters: newFilters
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
const updateFilterValue = (value, idx) => {
|
|
29
|
+
const {
|
|
30
|
+
attributes: {
|
|
31
|
+
filters: filters2
|
|
32
|
+
},
|
|
33
|
+
setAttributes,
|
|
34
|
+
onChange
|
|
35
|
+
} = props;
|
|
36
|
+
const selected = filters2[idx];
|
|
37
|
+
let values = selected.value;
|
|
38
|
+
if (values.indexOf(value) > -1) {
|
|
39
|
+
values = values.filter(v => v != value);
|
|
40
|
+
} else {
|
|
41
|
+
values.push(value);
|
|
42
|
+
}
|
|
43
|
+
const newFilters = filters2.slice();
|
|
44
|
+
newFilters[idx].value = values;
|
|
45
|
+
setAttributes({
|
|
46
|
+
filters: newFilters
|
|
47
|
+
});
|
|
48
|
+
onChange();
|
|
49
|
+
};
|
|
50
|
+
const addFilter = () => {
|
|
51
|
+
const {
|
|
52
|
+
attributes: {
|
|
53
|
+
filters: filters2
|
|
54
|
+
},
|
|
55
|
+
setAttributes,
|
|
56
|
+
allFilters: allFilters2
|
|
57
|
+
} = props;
|
|
58
|
+
let index = filters2.length > allFilters2.length ? allFilters2.length : filters2.length;
|
|
59
|
+
const newFilter = allFilters2 && allFilters2.length > 0 ? {
|
|
60
|
+
...allFilters2[index],
|
|
61
|
+
"value": []
|
|
62
|
+
} : null;
|
|
63
|
+
let newFilters = filters2.slice();
|
|
64
|
+
newFilters.push(newFilter);
|
|
65
|
+
setAttributes({
|
|
66
|
+
filters: newFilters
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
const removeFilter = f => {
|
|
70
|
+
const {
|
|
71
|
+
attributes: {
|
|
72
|
+
filters: filters2
|
|
73
|
+
},
|
|
74
|
+
setAttributes
|
|
75
|
+
} = props;
|
|
76
|
+
let newFilters = filters2.slice(0, -1);
|
|
77
|
+
setAttributes({
|
|
78
|
+
filters: newFilters
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
const items = type => {
|
|
82
|
+
const values = props.allCategories ? props.allCategories.filter(c => c.type === type) : [];
|
|
83
|
+
const cat = values.length > 0 ? values[0] : null;
|
|
84
|
+
let items2 = null;
|
|
85
|
+
if (type === "Boolean") {
|
|
86
|
+
items2 = [{
|
|
87
|
+
"value": "Yes",
|
|
88
|
+
id: true
|
|
89
|
+
}, {
|
|
90
|
+
"value": "No",
|
|
91
|
+
id: false
|
|
92
|
+
}];
|
|
93
|
+
} else if (cat) {
|
|
94
|
+
items2 = cat.items;
|
|
95
|
+
}
|
|
96
|
+
return items2;
|
|
97
|
+
};
|
|
98
|
+
const FilterSelector = ({
|
|
99
|
+
param,
|
|
100
|
+
index,
|
|
101
|
+
options,
|
|
102
|
+
onUpdateFilterParam
|
|
103
|
+
}) => {
|
|
104
|
+
const sortedOptions = options.sort(function (a, b) {
|
|
105
|
+
var aLabel = a.label ? a.label.toLowerCase() : "";
|
|
106
|
+
var bLabel = b.label ? b.label.toLowerCase() : "";
|
|
107
|
+
return aLabel < bLabel ? -1 : aLabel > bLabel ? 1 : 0;
|
|
108
|
+
});
|
|
109
|
+
return /* @__PURE__ */React.createElement(_components.SelectControl, {
|
|
110
|
+
onChange: value => {
|
|
111
|
+
onUpdateFilterParam(value, index);
|
|
112
|
+
},
|
|
113
|
+
value: param,
|
|
114
|
+
options: sortedOptions
|
|
115
|
+
});
|
|
116
|
+
};
|
|
117
|
+
const CategoricalFilter = ({
|
|
118
|
+
value,
|
|
119
|
+
index,
|
|
120
|
+
items: items2,
|
|
121
|
+
onUpdateFilterValue
|
|
122
|
+
}) => {
|
|
123
|
+
if (items2) {
|
|
124
|
+
const sortedItems = items2.sort(function (a, b) {
|
|
125
|
+
if (a.position !== void 0 && b.position !== void 0 && a.position !== b.position) {
|
|
126
|
+
return a.position - b.position;
|
|
127
|
+
}
|
|
128
|
+
let aValue = a.value ? a.value.toLowerCase() : "";
|
|
129
|
+
let bValue = b.value ? b.value.toLowerCase() : "";
|
|
130
|
+
return aValue < bValue ? -1 : aValue > bValue ? 1 : 0;
|
|
131
|
+
});
|
|
132
|
+
return sortedItems.map(v => /* @__PURE__ */React.createElement(_components.PanelRow, null, /* @__PURE__ */React.createElement(_components.ToggleControl, {
|
|
133
|
+
label: v.value,
|
|
134
|
+
checked: value.indexOf(v.id) > -1,
|
|
135
|
+
onChange: e => {
|
|
136
|
+
onUpdateFilterValue(v.id, index);
|
|
137
|
+
}
|
|
138
|
+
})));
|
|
139
|
+
} else {
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
const {
|
|
144
|
+
allFilters,
|
|
145
|
+
attributes: {
|
|
146
|
+
filters
|
|
147
|
+
}
|
|
148
|
+
} = props;
|
|
149
|
+
return /* @__PURE__ */React.createElement(_components.PanelBody, {
|
|
150
|
+
initialOpen: false,
|
|
151
|
+
title: (0, _i18n.__)("Filters")
|
|
152
|
+
}, filters.map((f, index) => {
|
|
153
|
+
return /* @__PURE__ */React.createElement(_components.PanelBody, {
|
|
154
|
+
initialOpen: true,
|
|
155
|
+
title: (0, _i18n.__)(`Filter - ${f.label}`)
|
|
156
|
+
}, /* @__PURE__ */React.createElement(FilterSelector, {
|
|
157
|
+
param: f.param,
|
|
158
|
+
index,
|
|
159
|
+
options: allFilters,
|
|
160
|
+
onUpdateFilterParam: updateFilterParam
|
|
161
|
+
}), /* @__PURE__ */React.createElement(CategoricalFilter, {
|
|
162
|
+
value: f.value,
|
|
163
|
+
index,
|
|
164
|
+
items: items(f.type),
|
|
165
|
+
onUpdateFilterValue: updateFilterValue
|
|
166
|
+
}));
|
|
167
|
+
}), /* @__PURE__ */React.createElement(_components.PanelRow, null, /* @__PURE__ */React.createElement(_components.Button, {
|
|
168
|
+
variant: "link",
|
|
169
|
+
onClick: addFilter
|
|
170
|
+
}, (0, _i18n.__)("Add Filter")), /* @__PURE__ */React.createElement(_components.Button, {
|
|
171
|
+
variant: "link",
|
|
172
|
+
onClick: removeFilter
|
|
173
|
+
}, (0, _i18n.__)("Remove"))));
|
|
174
|
+
};
|
|
175
|
+
exports.DataFilters = DataFilters;
|
|
176
|
+
module.exports = DataFilters;
|
package/build/DataFilters.d.ts
CHANGED
|
@@ -1,13 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { Filter } from './types';
|
|
3
|
-
export type DataFiltersProps = {
|
|
4
|
-
allCategories: any[];
|
|
5
|
-
allFilters: any[];
|
|
6
|
-
onChange?: () => void;
|
|
7
|
-
attributes?: {
|
|
8
|
-
filters: Filter[];
|
|
9
|
-
};
|
|
10
|
-
setAttributes: (attributes: any) => void;
|
|
11
|
-
};
|
|
12
|
-
export declare const DataFilters: (props: DataFiltersProps) => React.JSX.Element;
|
|
1
|
+
export function DataFilters(props: any): import("react").JSX.Element;
|
|
13
2
|
export default DataFilters;
|