baseui 0.0.0-next-61b07bc → 0.0.0-next-dc06a40
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/data-table/column-numerical.js +362 -320
- package/data-table/column-numerical.js.flow +287 -285
- package/data-table/constants.js +11 -17
- package/data-table/constants.js.flow +8 -11
- package/data-table/data-table.js +50 -53
- package/data-table/data-table.js.flow +13 -18
- package/data-table/filter-shell.js +4 -27
- package/data-table/filter-shell.js.flow +9 -33
- package/data-table/locale.js +2 -4
- package/data-table/locale.js.flow +2 -6
- package/data-table/measure-column-widths.js +121 -83
- package/data-table/measure-column-widths.js.flow +109 -87
- package/es/data-table/column-numerical.js +320 -252
- package/es/data-table/constants.js +8 -12
- package/es/data-table/data-table.js +16 -18
- package/es/data-table/filter-shell.js +4 -26
- package/es/data-table/locale.js +2 -4
- package/es/data-table/measure-column-widths.js +86 -75
- package/esm/data-table/column-numerical.js +360 -317
- package/esm/data-table/constants.js +8 -12
- package/esm/data-table/data-table.js +50 -53
- package/esm/data-table/filter-shell.js +4 -26
- package/esm/data-table/locale.js +2 -4
- package/esm/data-table/measure-column-widths.js +121 -83
- package/package.json +1 -2
|
@@ -17,17 +17,15 @@ var _index3 = require("../input/index.js");
|
|
|
17
17
|
|
|
18
18
|
var _index4 = require("../styles/index.js");
|
|
19
19
|
|
|
20
|
+
var _index5 = require("../typography/index.js");
|
|
21
|
+
|
|
20
22
|
var _column = _interopRequireDefault(require("./column.js"));
|
|
21
23
|
|
|
22
24
|
var _constants = require("./constants.js");
|
|
23
25
|
|
|
24
26
|
var _filterShell = _interopRequireDefault(require("./filter-shell.js"));
|
|
25
27
|
|
|
26
|
-
var
|
|
27
|
-
|
|
28
|
-
var _d2 = require("d3");
|
|
29
|
-
|
|
30
|
-
var _index6 = require("../slider/index.js");
|
|
28
|
+
var _index6 = require("../locale/index.js");
|
|
31
29
|
|
|
32
30
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
33
31
|
|
|
@@ -43,6 +41,14 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
43
41
|
|
|
44
42
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
45
43
|
|
|
44
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
45
|
+
|
|
46
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
47
|
+
|
|
48
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
|
|
49
|
+
|
|
50
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
51
|
+
|
|
46
52
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
47
53
|
|
|
48
54
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
@@ -100,231 +106,291 @@ function validateInput(input) {
|
|
|
100
106
|
return Boolean(parseFloat(input)) || input === '' || input === '-';
|
|
101
107
|
}
|
|
102
108
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
_useStyletron2 = _slicedToArray(_useStyletron, 2),
|
|
116
|
-
css = _useStyletron2[0],
|
|
117
|
-
theme = _useStyletron2[1];
|
|
118
|
-
|
|
119
|
-
var _React$useMemo = React.useMemo(function () {
|
|
120
|
-
var bins = (0, _d2.bin)().thresholds(Math.min(data.length, _constants.MAX_BIN_COUNT))(data);
|
|
121
|
-
var xScale = (0, _d2.scaleLinear)().domain([bins[0].x0, bins[bins.length - 1].x1]).range([0, _constants.HISTOGRAM_SIZE.width]).clamp(true);
|
|
122
|
-
var yScale = (0, _d2.scaleLinear)().domain([0, (0, _d2.max)(bins, function (d) {
|
|
123
|
-
return d.length;
|
|
124
|
-
})]).nice().range([_constants.HISTOGRAM_SIZE.height, 0]);
|
|
125
|
-
return {
|
|
126
|
-
bins: bins,
|
|
127
|
-
xScale: xScale,
|
|
128
|
-
yScale: yScale
|
|
129
|
-
};
|
|
130
|
-
}, [data]),
|
|
131
|
-
bins = _React$useMemo.bins,
|
|
132
|
-
xScale = _React$useMemo.xScale,
|
|
133
|
-
yScale = _React$useMemo.yScale; // We need to find the index of bar which is nearest to the given single value
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
var singleIndexNearest = React.useMemo(function () {
|
|
137
|
-
if (isRange) {
|
|
138
|
-
return null;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
return bisect.center(bins, lower);
|
|
142
|
-
}, [isRange, data, lower, upper]);
|
|
143
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
144
|
-
className: css({
|
|
145
|
-
display: 'flex',
|
|
146
|
-
marginTop: theme.sizing.scale600,
|
|
147
|
-
marginLeft: theme.sizing.scale200,
|
|
148
|
-
marginRight: 0,
|
|
149
|
-
marginBottom: theme.sizing.scale400,
|
|
150
|
-
justifyContent: 'space-between',
|
|
151
|
-
overflow: 'visible'
|
|
152
|
-
})
|
|
153
|
-
}, /*#__PURE__*/React.createElement("svg", _constants.HISTOGRAM_SIZE, bins.map(function (d, index) {
|
|
154
|
-
var x = xScale(d.x0) + 1;
|
|
155
|
-
var y = yScale(d.length);
|
|
156
|
-
var width = Math.max(0, xScale(d.x1) - xScale(d.x0) - 1);
|
|
157
|
-
var height = yScale(0) - yScale(d.length);
|
|
158
|
-
var included;
|
|
159
|
-
|
|
160
|
-
if (singleIndexNearest != null) {
|
|
161
|
-
included = index === singleIndexNearest;
|
|
109
|
+
function filterParamsToInitialState(filterParams) {
|
|
110
|
+
if (filterParams) {
|
|
111
|
+
if (filterParams.comparisons.length > 1) {
|
|
112
|
+
if (filterParams.comparisons[0].operation === _constants.NUMERICAL_OPERATIONS.LT && filterParams.comparisons[1].operation === _constants.NUMERICAL_OPERATIONS.GT) {
|
|
113
|
+
return {
|
|
114
|
+
exclude: !filterParams.exclude,
|
|
115
|
+
comparatorIndex: 0,
|
|
116
|
+
operatorIndex: 4,
|
|
117
|
+
right: filterParams.comparisons[1].value.toString(),
|
|
118
|
+
left: filterParams.comparisons[0].value.toString()
|
|
119
|
+
};
|
|
120
|
+
}
|
|
162
121
|
} else {
|
|
163
|
-
var
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
122
|
+
var comparison = filterParams.comparisons[0];
|
|
123
|
+
|
|
124
|
+
if (comparison.operation === _constants.NUMERICAL_OPERATIONS.LT) {
|
|
125
|
+
return {
|
|
126
|
+
exclude: filterParams.exclude,
|
|
127
|
+
comparatorIndex: 0,
|
|
128
|
+
operatorIndex: 0,
|
|
129
|
+
left: '',
|
|
130
|
+
right: comparison.value.toString()
|
|
131
|
+
};
|
|
132
|
+
} else if (comparison.operation === _constants.NUMERICAL_OPERATIONS.GT) {
|
|
133
|
+
return {
|
|
134
|
+
exclude: filterParams.exclude,
|
|
135
|
+
comparatorIndex: 0,
|
|
136
|
+
operatorIndex: 1,
|
|
137
|
+
left: comparison.value.toString(),
|
|
138
|
+
right: ''
|
|
139
|
+
};
|
|
140
|
+
} else if (comparison.operation === _constants.NUMERICAL_OPERATIONS.LTE) {
|
|
141
|
+
return {
|
|
142
|
+
exclude: filterParams.exclude,
|
|
143
|
+
comparatorIndex: 0,
|
|
144
|
+
operatorIndex: 2,
|
|
145
|
+
left: '',
|
|
146
|
+
right: comparison.value.toString()
|
|
147
|
+
};
|
|
148
|
+
} else if (comparison.operation === _constants.NUMERICAL_OPERATIONS.GTE) {
|
|
149
|
+
return {
|
|
150
|
+
exclude: filterParams.exclude,
|
|
151
|
+
comparatorIndex: 0,
|
|
152
|
+
operatorIndex: 3,
|
|
153
|
+
left: comparison.value.toString(),
|
|
154
|
+
right: ''
|
|
155
|
+
};
|
|
156
|
+
} else if (comparison.operation === _constants.NUMERICAL_OPERATIONS.EQ) {
|
|
157
|
+
return {
|
|
158
|
+
exclude: filterParams.exclude,
|
|
159
|
+
comparatorIndex: 1,
|
|
160
|
+
operatorIndex: 0,
|
|
161
|
+
left: comparison.value.toString(),
|
|
162
|
+
right: ''
|
|
163
|
+
};
|
|
164
|
+
}
|
|
170
165
|
}
|
|
166
|
+
}
|
|
171
167
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
})));
|
|
181
|
-
});
|
|
168
|
+
return {
|
|
169
|
+
exclude: false,
|
|
170
|
+
comparatorIndex: 0,
|
|
171
|
+
operatorIndex: 0,
|
|
172
|
+
left: '',
|
|
173
|
+
right: ''
|
|
174
|
+
};
|
|
175
|
+
}
|
|
182
176
|
|
|
183
177
|
function NumericalFilter(props) {
|
|
184
|
-
var
|
|
185
|
-
|
|
186
|
-
css =
|
|
187
|
-
theme =
|
|
188
|
-
|
|
189
|
-
var locale = React.useContext(_index5.LocaleContext);
|
|
190
|
-
var precision = props.options.precision; // The state handling of this component could be refactored and cleaned up if we used useReducer.
|
|
178
|
+
var _useStyletron = (0, _index4.useStyletron)(),
|
|
179
|
+
_useStyletron2 = _slicedToArray(_useStyletron, 2),
|
|
180
|
+
css = _useStyletron2[0],
|
|
181
|
+
theme = _useStyletron2[1];
|
|
191
182
|
|
|
192
|
-
var
|
|
193
|
-
|
|
194
|
-
exclude: false,
|
|
195
|
-
excludeKind: 'range',
|
|
196
|
-
comparatorIndex: 0,
|
|
197
|
-
lowerValue: null,
|
|
198
|
-
upperValue: null
|
|
199
|
-
};
|
|
200
|
-
}, [props.filterParams]);
|
|
183
|
+
var locale = React.useContext(_index6.LocaleContext);
|
|
184
|
+
var initialState = filterParamsToInitialState(props.filterParams);
|
|
201
185
|
|
|
202
186
|
var _React$useState = React.useState(initialState.exclude),
|
|
203
187
|
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
204
188
|
exclude = _React$useState2[0],
|
|
205
|
-
setExclude = _React$useState2[1];
|
|
206
|
-
// TODO look into allowing semantic names, similar to the radio component. Tricky part would be backwards compat
|
|
207
|
-
|
|
189
|
+
setExclude = _React$useState2[1];
|
|
208
190
|
|
|
209
|
-
var _React$useState3 = React.useState(
|
|
210
|
-
switch (initialState.excludeKind) {
|
|
211
|
-
case 'value':
|
|
212
|
-
return 1;
|
|
213
|
-
|
|
214
|
-
case 'range':
|
|
215
|
-
default:
|
|
216
|
-
// fallthrough
|
|
217
|
-
return 0;
|
|
218
|
-
}
|
|
219
|
-
}),
|
|
191
|
+
var _React$useState3 = React.useState(initialState.comparatorIndex),
|
|
220
192
|
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
221
193
|
comparatorIndex = _React$useState4[0],
|
|
222
|
-
setComparatorIndex = _React$useState4[1];
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
var _React$useMemo2 = React.useMemo(function () {
|
|
226
|
-
return (0, _d2.extent)(props.data);
|
|
227
|
-
}, [props.data]),
|
|
228
|
-
_React$useMemo3 = _slicedToArray(_React$useMemo2, 2),
|
|
229
|
-
min = _React$useMemo3[0],
|
|
230
|
-
max = _React$useMemo3[1];
|
|
194
|
+
setComparatorIndex = _React$useState4[1];
|
|
231
195
|
|
|
232
|
-
var _React$useState5 = React.useState(
|
|
233
|
-
return roundToFixed(initialState.lowerValue || min, precision);
|
|
234
|
-
}),
|
|
196
|
+
var _React$useState5 = React.useState(initialState.operatorIndex),
|
|
235
197
|
_React$useState6 = _slicedToArray(_React$useState5, 2),
|
|
236
|
-
|
|
237
|
-
|
|
198
|
+
operatorIndex = _React$useState6[0],
|
|
199
|
+
setOperatorIndex = _React$useState6[1];
|
|
238
200
|
|
|
239
|
-
var _React$useState7 = React.useState(
|
|
240
|
-
return roundToFixed(initialState.upperValue || max, precision);
|
|
241
|
-
}),
|
|
201
|
+
var _React$useState7 = React.useState(initialState.left),
|
|
242
202
|
_React$useState8 = _slicedToArray(_React$useState7, 2),
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
// the range and single values without losing their previous input.
|
|
203
|
+
left = _React$useState8[0],
|
|
204
|
+
setLeft = _React$useState8[1];
|
|
246
205
|
|
|
247
|
-
|
|
248
|
-
var _React$useState9 = React.useState(function () {
|
|
249
|
-
return roundToFixed(initialState.lowerValue || (0, _d2.median)(props.data), precision);
|
|
250
|
-
}),
|
|
206
|
+
var _React$useState9 = React.useState(initialState.right),
|
|
251
207
|
_React$useState10 = _slicedToArray(_React$useState9, 2),
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
// if we are in range or single value mode.
|
|
255
|
-
// Don't derive it via something else, e.g. lowerValue === upperValue, etc.
|
|
256
|
-
|
|
208
|
+
right = _React$useState10[0],
|
|
209
|
+
setRight = _React$useState10[1];
|
|
257
210
|
|
|
258
211
|
var isRange = comparatorIndex === 0;
|
|
259
|
-
var
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
var
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
}
|
|
212
|
+
var min = React.useMemo(function () {
|
|
213
|
+
return Math.min.apply(Math, _toConsumableArray(props.data));
|
|
214
|
+
}, [props.data]);
|
|
215
|
+
var max = React.useMemo(function () {
|
|
216
|
+
return Math.max.apply(Math, _toConsumableArray(props.data));
|
|
217
|
+
}, [props.data]);
|
|
218
|
+
React.useEffect(function () {
|
|
219
|
+
if (!left) {
|
|
220
|
+
setLeft(min.toString());
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
if (!right) {
|
|
224
|
+
setRight(max.toString());
|
|
225
|
+
}
|
|
226
|
+
}, []);
|
|
227
|
+
|
|
228
|
+
var _React$useMemo = React.useMemo(function () {
|
|
229
|
+
if (!isRange) return [false, false];
|
|
230
|
+
|
|
231
|
+
switch (operatorIndex) {
|
|
232
|
+
case 4:
|
|
233
|
+
return [false, false];
|
|
234
|
+
|
|
235
|
+
case 0:
|
|
236
|
+
case 2:
|
|
237
|
+
return [true, false];
|
|
238
|
+
|
|
239
|
+
case 1:
|
|
240
|
+
case 3:
|
|
241
|
+
return [false, true];
|
|
242
|
+
|
|
243
|
+
default:
|
|
244
|
+
return [true, true];
|
|
245
|
+
}
|
|
246
|
+
}, [operatorIndex, isRange]),
|
|
247
|
+
_React$useMemo2 = _slicedToArray(_React$useMemo, 2),
|
|
248
|
+
leftDisabled = _React$useMemo2[0],
|
|
249
|
+
rightDisabled = _React$useMemo2[1];
|
|
250
|
+
|
|
251
|
+
var leftInputRef = React.useRef(null);
|
|
252
|
+
var rightInputRef = React.useRef(null);
|
|
253
|
+
React.useEffect(function () {
|
|
254
|
+
if (!leftDisabled && leftInputRef.current) {
|
|
255
|
+
leftInputRef.current.focus({
|
|
256
|
+
preventScroll: true
|
|
257
|
+
});
|
|
258
|
+
} else if (!rightDisabled && rightInputRef.current) {
|
|
259
|
+
rightInputRef.current.focus({
|
|
260
|
+
preventScroll: true
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
}, [leftDisabled, rightDisabled, comparatorIndex]);
|
|
264
|
+
React.useEffect(function () {
|
|
265
|
+
switch (operatorIndex) {
|
|
266
|
+
case 4:
|
|
267
|
+
default:
|
|
268
|
+
break;
|
|
294
269
|
|
|
270
|
+
case 1:
|
|
271
|
+
case 3:
|
|
272
|
+
setRight(max.toString());
|
|
273
|
+
break;
|
|
274
|
+
|
|
275
|
+
case 0:
|
|
276
|
+
case 2:
|
|
277
|
+
setLeft(min.toString());
|
|
278
|
+
break;
|
|
279
|
+
}
|
|
280
|
+
}, [operatorIndex]);
|
|
295
281
|
return /*#__PURE__*/React.createElement(_filterShell.default, {
|
|
296
282
|
exclude: exclude,
|
|
297
283
|
onExcludeChange: function onExcludeChange() {
|
|
298
284
|
return setExclude(!exclude);
|
|
299
285
|
},
|
|
300
|
-
excludeKind: excludeKind,
|
|
301
286
|
onApply: function onApply() {
|
|
302
287
|
if (isRange) {
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
288
|
+
switch (operatorIndex) {
|
|
289
|
+
case 0:
|
|
290
|
+
{
|
|
291
|
+
var _value = parseFloat(right);
|
|
292
|
+
|
|
293
|
+
var operation = _constants.NUMERICAL_OPERATIONS.LT;
|
|
294
|
+
props.setFilter({
|
|
295
|
+
comparisons: [{
|
|
296
|
+
value: _value,
|
|
297
|
+
operation: operation
|
|
298
|
+
}],
|
|
299
|
+
description: "< ".concat(_value),
|
|
300
|
+
exclude: exclude
|
|
301
|
+
});
|
|
302
|
+
break;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
case 1:
|
|
306
|
+
{
|
|
307
|
+
var _value2 = parseFloat(left);
|
|
308
|
+
|
|
309
|
+
var _operation = _constants.NUMERICAL_OPERATIONS.GT;
|
|
310
|
+
props.setFilter({
|
|
311
|
+
comparisons: [{
|
|
312
|
+
value: _value2,
|
|
313
|
+
operation: _operation
|
|
314
|
+
}],
|
|
315
|
+
description: "> ".concat(_value2),
|
|
316
|
+
exclude: exclude
|
|
317
|
+
});
|
|
318
|
+
break;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
case 2:
|
|
322
|
+
{
|
|
323
|
+
var _value3 = parseFloat(right);
|
|
324
|
+
|
|
325
|
+
var _operation2 = _constants.NUMERICAL_OPERATIONS.LTE;
|
|
326
|
+
props.setFilter({
|
|
327
|
+
comparisons: [{
|
|
328
|
+
value: _value3,
|
|
329
|
+
operation: _operation2
|
|
330
|
+
}],
|
|
331
|
+
description: "\u2264 ".concat(_value3),
|
|
332
|
+
exclude: exclude
|
|
333
|
+
});
|
|
334
|
+
break;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
case 3:
|
|
338
|
+
{
|
|
339
|
+
var _value4 = parseFloat(left);
|
|
340
|
+
|
|
341
|
+
var _operation3 = _constants.NUMERICAL_OPERATIONS.GTE;
|
|
342
|
+
props.setFilter({
|
|
343
|
+
comparisons: [{
|
|
344
|
+
value: _value4,
|
|
345
|
+
operation: _operation3
|
|
346
|
+
}],
|
|
347
|
+
description: "\u2265 ".concat(_value4),
|
|
348
|
+
exclude: exclude
|
|
349
|
+
});
|
|
350
|
+
break;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
case 4:
|
|
354
|
+
{
|
|
355
|
+
// 'between' case is interesting since if we want less than 10 plus greater than 5
|
|
356
|
+
// comparators, the filter will include _all_ numbers.
|
|
357
|
+
var leftValue = parseFloat(left);
|
|
358
|
+
var rightValue = parseFloat(right);
|
|
359
|
+
props.setFilter({
|
|
360
|
+
comparisons: [{
|
|
361
|
+
value: leftValue,
|
|
362
|
+
operation: _constants.NUMERICAL_OPERATIONS.LT
|
|
363
|
+
}, {
|
|
364
|
+
value: rightValue,
|
|
365
|
+
operation: _constants.NUMERICAL_OPERATIONS.GT
|
|
366
|
+
}],
|
|
367
|
+
description: "\u2265 ".concat(leftValue, " & \u2264 ").concat(rightValue),
|
|
368
|
+
exclude: !exclude
|
|
369
|
+
});
|
|
370
|
+
break;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
default:
|
|
374
|
+
break;
|
|
375
|
+
}
|
|
312
376
|
} else {
|
|
313
|
-
var
|
|
377
|
+
var _value5 = parseFloat(left);
|
|
314
378
|
|
|
379
|
+
var _operation4 = _constants.NUMERICAL_OPERATIONS.EQ;
|
|
315
380
|
props.setFilter({
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
381
|
+
comparisons: [{
|
|
382
|
+
value: _value5,
|
|
383
|
+
operation: _operation4
|
|
384
|
+
}],
|
|
385
|
+
description: "= ".concat(_value5),
|
|
386
|
+
exclude: exclude
|
|
321
387
|
});
|
|
322
388
|
}
|
|
323
389
|
|
|
324
390
|
props.close();
|
|
325
391
|
}
|
|
326
392
|
}, /*#__PURE__*/React.createElement(_index2.ButtonGroup, {
|
|
327
|
-
size: _index.SIZE.
|
|
393
|
+
size: _index.SIZE.compact,
|
|
328
394
|
mode: _index2.MODE.radio,
|
|
329
395
|
selected: comparatorIndex,
|
|
330
396
|
onClick: function onClick(_, index) {
|
|
@@ -332,8 +398,8 @@ function NumericalFilter(props) {
|
|
|
332
398
|
},
|
|
333
399
|
overrides: {
|
|
334
400
|
Root: {
|
|
335
|
-
style: function style(
|
|
336
|
-
var $theme =
|
|
401
|
+
style: function style(_ref) {
|
|
402
|
+
var $theme = _ref.$theme;
|
|
337
403
|
return {
|
|
338
404
|
marginBottom: $theme.sizing.scale300
|
|
339
405
|
};
|
|
@@ -348,8 +414,7 @@ function NumericalFilter(props) {
|
|
|
348
414
|
width: '100%'
|
|
349
415
|
}
|
|
350
416
|
}
|
|
351
|
-
}
|
|
352
|
-
"aria-label": locale.datatable.numericalFilterRange
|
|
417
|
+
}
|
|
353
418
|
}, locale.datatable.numericalFilterRange), /*#__PURE__*/React.createElement(_index.Button, {
|
|
354
419
|
type: "button",
|
|
355
420
|
overrides: {
|
|
@@ -358,168 +423,123 @@ function NumericalFilter(props) {
|
|
|
358
423
|
width: '100%'
|
|
359
424
|
}
|
|
360
425
|
}
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
exclude: exclude,
|
|
369
|
-
precision: props.options.precision
|
|
370
|
-
}), /*#__PURE__*/React.createElement("div", {
|
|
371
|
-
className: css({
|
|
372
|
-
display: 'flex',
|
|
373
|
-
justifyContent: 'space-between'
|
|
374
|
-
})
|
|
375
|
-
}, /*#__PURE__*/React.createElement(_index6.Slider // The slider throws errors when switching between single and two values
|
|
376
|
-
// when it tries to read getThumbDistance on a thumb which is not there anymore
|
|
377
|
-
// if we create a new instance these errors are prevented.
|
|
378
|
-
, {
|
|
379
|
-
key: isRange.toString(),
|
|
380
|
-
min: 1,
|
|
381
|
-
max: _constants.MAX_BIN_COUNT,
|
|
382
|
-
value: sliderValue,
|
|
383
|
-
onChange: function onChange(_ref3) {
|
|
384
|
-
var value = _ref3.value;
|
|
385
|
-
|
|
386
|
-
if (!value) {
|
|
387
|
-
return;
|
|
388
|
-
} // we convert back from the slider scale to the actual data's scale
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
if (isRange) {
|
|
392
|
-
var _value2 = _slicedToArray(value, 2),
|
|
393
|
-
lowerValue = _value2[0],
|
|
394
|
-
upperValue = _value2[1];
|
|
395
|
-
|
|
396
|
-
setLower(sliderScale.invert(lowerValue));
|
|
397
|
-
setUpper(sliderScale.invert(upperValue));
|
|
398
|
-
} else {
|
|
399
|
-
var _value3 = _slicedToArray(value, 1),
|
|
400
|
-
singleValue = _value3[0];
|
|
401
|
-
|
|
402
|
-
setSingle(sliderScale.invert(singleValue));
|
|
403
|
-
}
|
|
426
|
+
}
|
|
427
|
+
}, locale.datatable.numericalFilterSingleValue)), isRange && /*#__PURE__*/React.createElement(_index2.ButtonGroup, {
|
|
428
|
+
size: _index.SIZE.compact,
|
|
429
|
+
mode: _index2.MODE.radio,
|
|
430
|
+
selected: operatorIndex,
|
|
431
|
+
onClick: function onClick(_, index) {
|
|
432
|
+
return setOperatorIndex(index);
|
|
404
433
|
},
|
|
405
434
|
overrides: {
|
|
406
|
-
InnerThumb: function InnerThumb(_ref4) {
|
|
407
|
-
var $value = _ref4.$value,
|
|
408
|
-
$thumbIndex = _ref4.$thumbIndex;
|
|
409
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, $value[$thumbIndex]);
|
|
410
|
-
},
|
|
411
|
-
TickBar: function TickBar(_ref5) {
|
|
412
|
-
var $min = _ref5.$min,
|
|
413
|
-
$max = _ref5.$max;
|
|
414
|
-
return null;
|
|
415
|
-
},
|
|
416
|
-
// we don't want the ticks
|
|
417
|
-
ThumbValue: function ThumbValue() {
|
|
418
|
-
return null;
|
|
419
|
-
},
|
|
420
435
|
Root: {
|
|
421
|
-
style: function style() {
|
|
436
|
+
style: function style(_ref2) {
|
|
437
|
+
var $theme = _ref2.$theme;
|
|
422
438
|
return {
|
|
423
|
-
|
|
424
|
-
width: 'calc(100% + 14px)',
|
|
425
|
-
margin: '0 -7px'
|
|
439
|
+
marginBottom: $theme.sizing.scale500
|
|
426
440
|
};
|
|
427
441
|
}
|
|
428
|
-
}
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
// we don't want the track standing out, so mute its color
|
|
437
|
-
background: theme.colors.mono400
|
|
438
|
-
};
|
|
439
|
-
}
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
}, /*#__PURE__*/React.createElement(_index.Button, {
|
|
445
|
+
type: "button",
|
|
446
|
+
overrides: {
|
|
447
|
+
BaseButton: {
|
|
448
|
+
style: {
|
|
449
|
+
width: '100%'
|
|
440
450
|
}
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
}, "<"), /*#__PURE__*/React.createElement(_index.Button, {
|
|
454
|
+
type: "button",
|
|
455
|
+
overrides: {
|
|
456
|
+
BaseButton: {
|
|
457
|
+
style: {
|
|
458
|
+
width: '100%'
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
}, ">"), /*#__PURE__*/React.createElement(_index.Button, {
|
|
463
|
+
type: "button",
|
|
464
|
+
overrides: {
|
|
465
|
+
BaseButton: {
|
|
466
|
+
style: {
|
|
467
|
+
width: '100%'
|
|
450
468
|
}
|
|
451
469
|
}
|
|
452
470
|
}
|
|
453
|
-
})
|
|
471
|
+
}, "\u2264"), /*#__PURE__*/React.createElement(_index.Button, {
|
|
472
|
+
type: "button",
|
|
473
|
+
overrides: {
|
|
474
|
+
BaseButton: {
|
|
475
|
+
style: {
|
|
476
|
+
width: '100%'
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
}, "\u2265"), /*#__PURE__*/React.createElement(_index.Button, {
|
|
481
|
+
type: "button",
|
|
482
|
+
overrides: {
|
|
483
|
+
BaseButton: {
|
|
484
|
+
style: {
|
|
485
|
+
width: '100%'
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
}, "=")), /*#__PURE__*/React.createElement("div", {
|
|
490
|
+
className: css({
|
|
491
|
+
display: 'flex',
|
|
492
|
+
justifyContent: 'space-between',
|
|
493
|
+
marginLeft: theme.sizing.scale300,
|
|
494
|
+
marginRight: theme.sizing.scale300
|
|
495
|
+
})
|
|
496
|
+
}, /*#__PURE__*/React.createElement(_index5.ParagraphXSmall, null, format(min, props.options)), ' ', /*#__PURE__*/React.createElement(_index5.ParagraphXSmall, null, format(max, props.options))), /*#__PURE__*/React.createElement("div", {
|
|
454
497
|
className: css({
|
|
455
498
|
display: 'flex',
|
|
456
|
-
marginTop: theme.sizing.scale400,
|
|
457
|
-
// This % gap is visually appealing given the filter box width
|
|
458
|
-
gap: '30%',
|
|
459
499
|
justifyContent: 'space-between'
|
|
460
500
|
})
|
|
461
501
|
}, /*#__PURE__*/React.createElement(_index3.Input, {
|
|
462
|
-
|
|
463
|
-
max: max,
|
|
464
|
-
size: _index3.SIZE.mini,
|
|
502
|
+
size: _index3.SIZE.compact,
|
|
465
503
|
overrides: {
|
|
466
504
|
Root: {
|
|
467
505
|
style: {
|
|
468
|
-
width: '100%'
|
|
506
|
+
width: isRange ? '152px' : '100%'
|
|
469
507
|
}
|
|
470
508
|
}
|
|
471
509
|
},
|
|
472
|
-
|
|
510
|
+
disabled: leftDisabled,
|
|
511
|
+
inputRef: leftInputRef,
|
|
512
|
+
value: left,
|
|
473
513
|
onChange: function onChange(event) {
|
|
474
514
|
if (validateInput(event.target.value)) {
|
|
475
|
-
|
|
476
|
-
setLower(event.target.value) : // $FlowFixMe - we know it is a number by now
|
|
477
|
-
setSingle(event.target.value);
|
|
515
|
+
setLeft(event.target.value);
|
|
478
516
|
}
|
|
479
|
-
},
|
|
480
|
-
onFocus: function onFocus() {
|
|
481
|
-
return setFocus(true);
|
|
482
|
-
},
|
|
483
|
-
onBlur: function onBlur() {
|
|
484
|
-
return setFocus(false);
|
|
485
517
|
}
|
|
486
518
|
}), isRange && /*#__PURE__*/React.createElement(_index3.Input, {
|
|
487
|
-
|
|
488
|
-
max: max,
|
|
489
|
-
size: _index3.SIZE.mini,
|
|
519
|
+
size: _index3.SIZE.compact,
|
|
490
520
|
overrides: {
|
|
491
|
-
Input: {
|
|
492
|
-
style: {
|
|
493
|
-
textAlign: 'right'
|
|
494
|
-
}
|
|
495
|
-
},
|
|
496
521
|
Root: {
|
|
497
522
|
style: {
|
|
498
|
-
width: '
|
|
523
|
+
width: '152px'
|
|
499
524
|
}
|
|
500
525
|
}
|
|
501
526
|
},
|
|
502
|
-
|
|
527
|
+
disabled: rightDisabled,
|
|
528
|
+
inputRef: rightInputRef,
|
|
529
|
+
value: right,
|
|
503
530
|
onChange: function onChange(event) {
|
|
504
531
|
if (validateInput(event.target.value)) {
|
|
505
|
-
|
|
506
|
-
setUpper(event.target.value);
|
|
532
|
+
setRight(event.target.value);
|
|
507
533
|
}
|
|
508
|
-
},
|
|
509
|
-
onFocus: function onFocus() {
|
|
510
|
-
return setFocus(true);
|
|
511
|
-
},
|
|
512
|
-
onBlur: function onBlur() {
|
|
513
|
-
return setFocus(false);
|
|
514
534
|
}
|
|
515
535
|
})));
|
|
516
536
|
}
|
|
517
537
|
|
|
518
538
|
function NumericalCell(props) {
|
|
519
|
-
var
|
|
520
|
-
|
|
521
|
-
css =
|
|
522
|
-
theme =
|
|
539
|
+
var _useStyletron3 = (0, _index4.useStyletron)(),
|
|
540
|
+
_useStyletron4 = _slicedToArray(_useStyletron3, 2),
|
|
541
|
+
css = _useStyletron4[0],
|
|
542
|
+
theme = _useStyletron4[1];
|
|
523
543
|
|
|
524
544
|
return /*#__PURE__*/React.createElement("div", {
|
|
525
545
|
className: css(_objectSpread(_objectSpread({}, theme.typography.MonoParagraphXSmall), {}, {
|
|
@@ -562,8 +582,30 @@ function NumericalColumn(options) {
|
|
|
562
582
|
kind: _constants.COLUMNS.NUMERICAL,
|
|
563
583
|
buildFilter: function buildFilter(params) {
|
|
564
584
|
return function (data) {
|
|
565
|
-
var
|
|
566
|
-
|
|
585
|
+
var included = params.comparisons.some(function (c) {
|
|
586
|
+
var left = roundToFixed(data, normalizedOptions.precision);
|
|
587
|
+
var right = roundToFixed(c.value, normalizedOptions.precision);
|
|
588
|
+
|
|
589
|
+
switch (c.operation) {
|
|
590
|
+
case _constants.NUMERICAL_OPERATIONS.EQ:
|
|
591
|
+
return left === right;
|
|
592
|
+
|
|
593
|
+
case _constants.NUMERICAL_OPERATIONS.GT:
|
|
594
|
+
return left > right;
|
|
595
|
+
|
|
596
|
+
case _constants.NUMERICAL_OPERATIONS.GTE:
|
|
597
|
+
return left >= right;
|
|
598
|
+
|
|
599
|
+
case _constants.NUMERICAL_OPERATIONS.LT:
|
|
600
|
+
return left < right;
|
|
601
|
+
|
|
602
|
+
case _constants.NUMERICAL_OPERATIONS.LTE:
|
|
603
|
+
return left <= right;
|
|
604
|
+
|
|
605
|
+
default:
|
|
606
|
+
return true;
|
|
607
|
+
}
|
|
608
|
+
});
|
|
567
609
|
return params.exclude ? !included : included;
|
|
568
610
|
};
|
|
569
611
|
},
|