1 | "use strict";
|
2 |
|
3 | function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
4 |
|
5 | Object.defineProperty(exports, "__esModule", {
|
6 | value: true
|
7 | });
|
8 | exports.default = void 0;
|
9 |
|
10 | var React = _interopRequireWildcard(require("react"));
|
11 |
|
12 | var _index = _interopRequireDefault(require("date-fns/format/index.js"));
|
13 |
|
14 | var _index2 = _interopRequireDefault(require("date-fns/getYear/index.js"));
|
15 |
|
16 | var _index3 = _interopRequireDefault(require("date-fns/getMonth/index.js"));
|
17 |
|
18 | var _index4 = _interopRequireDefault(require("date-fns/getQuarter/index.js"));
|
19 |
|
20 | var _index5 = _interopRequireDefault(require("date-fns/getDay/index.js"));
|
21 |
|
22 | var _index6 = _interopRequireDefault(require("date-fns/isAfter/index.js"));
|
23 |
|
24 | var _index7 = _interopRequireDefault(require("date-fns/isBefore/index.js"));
|
25 |
|
26 | var _index8 = _interopRequireDefault(require("date-fns/isEqual/index.js"));
|
27 |
|
28 | var _index9 = _interopRequireDefault(require("date-fns/set/index.js"));
|
29 |
|
30 | var _index10 = require("../button/index.js");
|
31 |
|
32 | var _index11 = require("../button-group/index.js");
|
33 |
|
34 | var _index12 = require("../checkbox/index.js");
|
35 |
|
36 | var _index13 = require("../datepicker/utils/index.js");
|
37 |
|
38 | var _index14 = require("../datepicker/index.js");
|
39 |
|
40 | var _index15 = require("../timepicker/index.js");
|
41 |
|
42 | var _index16 = require("../styles/index.js");
|
43 |
|
44 | var _index17 = require("../select/index.js");
|
45 |
|
46 | var _cellShell = _interopRequireDefault(require("./cell-shell.js"));
|
47 |
|
48 | var _constants = require("./constants.js");
|
49 |
|
50 | var _filterShell = _interopRequireDefault(require("./filter-shell.js"));
|
51 |
|
52 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
53 |
|
54 | function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
|
55 |
|
56 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
57 |
|
58 | function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
59 |
|
60 | function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
61 |
|
62 | 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; }
|
63 |
|
64 | function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
|
65 |
|
66 | function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
|
67 |
|
68 | function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
|
69 |
|
70 | function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
|
71 |
|
72 | function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
|
73 |
|
74 | function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
|
75 |
|
76 | function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
77 |
|
78 | function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
79 |
|
80 | var DATE_FORMAT = 'MM-dd-yyyy';
|
81 | var TIME_FORMAT = 'HH:mm ss:SS';
|
82 | var FORMAT_STRING = "".concat(DATE_FORMAT, " ").concat(TIME_FORMAT);
|
83 |
|
84 | function sortDates(a, b) {
|
85 | return a - b;
|
86 | }
|
87 |
|
88 | var RANGE_OPERATIONS = [{
|
89 | label: 'Date, Time',
|
90 | id: _constants.DATETIME_OPERATIONS.RANGE_DATETIME
|
91 | }, {
|
92 | label: 'Date',
|
93 | id: _constants.DATETIME_OPERATIONS.RANGE_DATE
|
94 | }, {
|
95 | label: 'Time',
|
96 | id: _constants.DATETIME_OPERATIONS.RANGE_TIME
|
97 | }];
|
98 | var CATEGORICAL_OPERATIONS = [{
|
99 | label: 'Weekday',
|
100 | id: _constants.DATETIME_OPERATIONS.WEEKDAY
|
101 | }, {
|
102 | label: 'Month',
|
103 | id: _constants.DATETIME_OPERATIONS.MONTH
|
104 | }, {
|
105 | label: 'Quarter',
|
106 | id: _constants.DATETIME_OPERATIONS.QUARTER
|
107 | }, {
|
108 | label: 'Half',
|
109 | id: _constants.DATETIME_OPERATIONS.HALF
|
110 | }, {
|
111 | label: 'Year',
|
112 | id: _constants.DATETIME_OPERATIONS.YEAR
|
113 | }];
|
114 | var WEEKDAYS = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
|
115 | var MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
|
116 | var QUARTERS = ['Q1', 'Q2', 'Q3', 'Q4'];
|
117 | var HALVES = ['H1', 'H2'];
|
118 |
|
119 | function Checks(props) {
|
120 | var _useStyletron = (0, _index16.useStyletron)(),
|
121 | _useStyletron2 = _slicedToArray(_useStyletron, 2),
|
122 | css = _useStyletron2[0],
|
123 | theme = _useStyletron2[1];
|
124 |
|
125 | return React.createElement("div", {
|
126 | className: css({
|
127 | maxHeight: '256px',
|
128 | overflowY: 'auto'
|
129 | })
|
130 | }, props.options.map(function (item) {
|
131 | var checked = props.value.includes(item.id);
|
132 | return React.createElement("div", {
|
133 | key: item.id,
|
134 | className: css({
|
135 | marginBottom: theme.sizing.scale200
|
136 | })
|
137 | }, React.createElement(_index12.Checkbox, {
|
138 | checked: checked,
|
139 | onChange: function onChange() {
|
140 | if (checked) {
|
141 | props.setValue(function (prev) {
|
142 | return prev.filter(function (i) {
|
143 | return i !== item.id;
|
144 | });
|
145 | });
|
146 | } else {
|
147 | props.setValue(function (prev) {
|
148 | return [].concat(_toConsumableArray(prev), [item.id]);
|
149 | });
|
150 | }
|
151 | }
|
152 | }, item.label));
|
153 | }));
|
154 | }
|
155 |
|
156 | function filterParamsToInitialState(input) {
|
157 | var output = {
|
158 | exclude: false,
|
159 | comparatorIndex: 0,
|
160 | rangeOperator: RANGE_OPERATIONS[0],
|
161 | categoricalOperator: CATEGORICAL_OPERATIONS[0],
|
162 | rangeDates: [],
|
163 | years: [],
|
164 | halves: [],
|
165 | quarters: [],
|
166 | months: [],
|
167 | weekdays: []
|
168 | };
|
169 |
|
170 | if (input) {
|
171 | var op = input.operation;
|
172 |
|
173 | if (input.range) {
|
174 | if (op === _constants.DATETIME_OPERATIONS.RANGE_DATETIME) {
|
175 | output.rangeDates = input.range;
|
176 | output.rangeOperator = RANGE_OPERATIONS[0];
|
177 | } else if (op === _constants.DATETIME_OPERATIONS.RANGE_DATE) {
|
178 | output.rangeDates = input.range;
|
179 | output.rangeOperator = RANGE_OPERATIONS[1];
|
180 | } else if (op === _constants.DATETIME_OPERATIONS.RANGE_TIME) {
|
181 | output.rangeDates = input.range;
|
182 | output.rangeOperator = RANGE_OPERATIONS[2];
|
183 | }
|
184 | } else if (input.selection) {
|
185 | output.comparatorIndex = 1;
|
186 |
|
187 | if (op === _constants.DATETIME_OPERATIONS.YEAR) {
|
188 | output.years = input.selection;
|
189 | output.categoricalOperator = CATEGORICAL_OPERATIONS[4];
|
190 | } else if (op === _constants.DATETIME_OPERATIONS.HALF) {
|
191 | output.halves = input.selection;
|
192 | output.categoricalOperator = CATEGORICAL_OPERATIONS[3];
|
193 | } else if (op === _constants.DATETIME_OPERATIONS.QUARTER) {
|
194 | output.quarters = input.selection;
|
195 | output.categoricalOperator = CATEGORICAL_OPERATIONS[2];
|
196 | } else if (op === _constants.DATETIME_OPERATIONS.MONTH) {
|
197 | output.months = input.selection;
|
198 | output.categoricalOperator = CATEGORICAL_OPERATIONS[1];
|
199 | } else if (op === _constants.DATETIME_OPERATIONS.WEEKDAY) {
|
200 | output.weekdays = input.selection;
|
201 | output.categoricalOperator = CATEGORICAL_OPERATIONS[0];
|
202 | }
|
203 | }
|
204 |
|
205 | if (input.exclude) {
|
206 | output.exclude = input.exclude;
|
207 | }
|
208 | }
|
209 |
|
210 | return output;
|
211 | }
|
212 |
|
213 | function DatetimeFilter(props) {
|
214 | var _useStyletron3 = (0, _index16.useStyletron)(),
|
215 | _useStyletron4 = _slicedToArray(_useStyletron3, 2),
|
216 | css = _useStyletron4[0],
|
217 | theme = _useStyletron4[1];
|
218 |
|
219 | var mountNode = React.useRef();
|
220 | var initialState = filterParamsToInitialState(props.filterParams);
|
221 | var datesSorted = React.useMemo(function () {
|
222 | return props.data.sort(sortDates);
|
223 | }, [props.data]);
|
224 | var presentYears = React.useMemo(function () {
|
225 | var dict = {};
|
226 | props.data.forEach(function (date) {
|
227 | dict[(0, _index2.default)(date)] = true;
|
228 | });
|
229 | return Object.keys(dict).map(function (n) {
|
230 | return parseInt(n);
|
231 | });
|
232 | }, [props.data]);
|
233 |
|
234 | var _React$useState = React.useState(initialState.exclude),
|
235 | _React$useState2 = _slicedToArray(_React$useState, 2),
|
236 | exclude = _React$useState2[0],
|
237 | setExclude = _React$useState2[1];
|
238 |
|
239 | var _React$useState3 = React.useState(initialState.comparatorIndex),
|
240 | _React$useState4 = _slicedToArray(_React$useState3, 2),
|
241 | comparatorIndex = _React$useState4[0],
|
242 | setComparatorIndex = _React$useState4[1];
|
243 |
|
244 | var _React$useState5 = React.useState([initialState.rangeOperator]),
|
245 | _React$useState6 = _slicedToArray(_React$useState5, 2),
|
246 | rangeOperator = _React$useState6[0],
|
247 | setRangeOperator = _React$useState6[1];
|
248 |
|
249 | var _React$useState7 = React.useState([initialState.categoricalOperator]),
|
250 | _React$useState8 = _slicedToArray(_React$useState7, 2),
|
251 | categoricalOperator = _React$useState8[0],
|
252 | setCategoricalOperator = _React$useState8[1];
|
253 |
|
254 |
|
255 | var _React$useState9 = React.useState(initialState.rangeDates.length ? initialState.rangeDates : [new Date(datesSorted[0]), new Date(datesSorted[datesSorted.length - 1])]),
|
256 | _React$useState10 = _slicedToArray(_React$useState9, 2),
|
257 | rangeDates = _React$useState10[0],
|
258 | setRangeDates = _React$useState10[1];
|
259 |
|
260 | var _React$useState11 = React.useState(initialState.years),
|
261 | _React$useState12 = _slicedToArray(_React$useState11, 2),
|
262 | years = _React$useState12[0],
|
263 | setYears = _React$useState12[1];
|
264 |
|
265 | var _React$useState13 = React.useState(initialState.halves),
|
266 | _React$useState14 = _slicedToArray(_React$useState13, 2),
|
267 | halves = _React$useState14[0],
|
268 | setHalves = _React$useState14[1];
|
269 |
|
270 | var _React$useState15 = React.useState(initialState.quarters),
|
271 | _React$useState16 = _slicedToArray(_React$useState15, 2),
|
272 | quarters = _React$useState16[0],
|
273 | setQuarters = _React$useState16[1];
|
274 |
|
275 | var _React$useState17 = React.useState(initialState.months),
|
276 | _React$useState18 = _slicedToArray(_React$useState17, 2),
|
277 | months = _React$useState18[0],
|
278 | setMonths = _React$useState18[1];
|
279 |
|
280 | var _React$useState19 = React.useState(initialState.weekdays),
|
281 | _React$useState20 = _slicedToArray(_React$useState19, 2),
|
282 | weekdays = _React$useState20[0],
|
283 | setWeekdays = _React$useState20[1];
|
284 |
|
285 | var isRange = comparatorIndex === 0;
|
286 | var isCategorical = comparatorIndex === 1;
|
287 | return React.createElement(_filterShell.default, {
|
288 | exclude: exclude,
|
289 | onExcludeChange: function onExcludeChange() {
|
290 | return setExclude(!exclude);
|
291 | },
|
292 | onApply: function onApply() {
|
293 | if (isRange) {
|
294 |
|
295 | var op = rangeOperator[0].id;
|
296 | var description = '';
|
297 |
|
298 | if (op === _constants.DATETIME_OPERATIONS.RANGE_DATETIME) {
|
299 | var left = (0, _index.default)(rangeDates[0], FORMAT_STRING);
|
300 | var right = (0, _index.default)(rangeDates[1], FORMAT_STRING);
|
301 | description = "".concat(left, " - ").concat(right);
|
302 | } else if (op === _constants.DATETIME_OPERATIONS.RANGE_DATE) {
|
303 | var _left = (0, _index.default)(rangeDates[0], DATE_FORMAT);
|
304 |
|
305 | var _right = (0, _index.default)(rangeDates[1], DATE_FORMAT);
|
306 |
|
307 | description = "".concat(_left, " - ").concat(_right);
|
308 | } else if (op === _constants.DATETIME_OPERATIONS.RANGE_TIME) {
|
309 | var _left2 = (0, _index.default)(rangeDates[0], TIME_FORMAT);
|
310 |
|
311 | var _right2 = (0, _index.default)(rangeDates[1], TIME_FORMAT);
|
312 |
|
313 | description = "".concat(_left2, " - ").concat(_right2);
|
314 | }
|
315 |
|
316 | props.setFilter({
|
317 | operation: op,
|
318 | range: rangeDates,
|
319 | selection: [],
|
320 | description: description,
|
321 | exclude: exclude
|
322 | });
|
323 | }
|
324 |
|
325 | if (isCategorical) {
|
326 |
|
327 | var _op = categoricalOperator[0].id;
|
328 | var selection = [];
|
329 |
|
330 | if (_op === _constants.DATETIME_OPERATIONS.WEEKDAY) {
|
331 | selection = weekdays;
|
332 | } else if (_op === _constants.DATETIME_OPERATIONS.MONTH) {
|
333 | selection = months;
|
334 | } else if (_op === _constants.DATETIME_OPERATIONS.QUARTER) {
|
335 | selection = quarters;
|
336 | } else if (_op === _constants.DATETIME_OPERATIONS.HALF) {
|
337 | selection = halves;
|
338 | } else if (_op === _constants.DATETIME_OPERATIONS.YEAR) {
|
339 | selection = years;
|
340 | }
|
341 |
|
342 | props.setFilter({
|
343 | operation: _op,
|
344 | range: [],
|
345 | selection: selection,
|
346 | description: "".concat(_op, " - ").concat(selection.join(', ')),
|
347 | exclude: exclude
|
348 | });
|
349 | }
|
350 |
|
351 | props.close();
|
352 | }
|
353 | }, React.createElement("div", {
|
354 | ref: mountNode
|
355 | }, React.createElement(_index11.ButtonGroup, {
|
356 | size: _index10.SIZE.compact,
|
357 | mode: _index11.MODE.radio,
|
358 | selected: comparatorIndex,
|
359 | onClick: function onClick(_, index) {
|
360 | return setComparatorIndex(index);
|
361 | },
|
362 | overrides: {
|
363 | Root: {
|
364 | style: function style(_ref) {
|
365 | var $theme = _ref.$theme;
|
366 | return {
|
367 | marginBottom: $theme.sizing.scale300
|
368 | };
|
369 | }
|
370 | }
|
371 | }
|
372 | }, React.createElement(_index10.Button, {
|
373 | type: "button",
|
374 | overrides: {
|
375 | BaseButton: {
|
376 | style: {
|
377 | width: '100%'
|
378 | }
|
379 | }
|
380 | }
|
381 | }, "Range"), React.createElement(_index10.Button, {
|
382 | type: "button",
|
383 | overrides: {
|
384 | BaseButton: {
|
385 | style: {
|
386 | width: '100%'
|
387 | }
|
388 | }
|
389 | }
|
390 | }, "Categorical")), isRange && React.createElement("div", null, React.createElement(_index17.Select, {
|
391 | value: rangeOperator,
|
392 | onChange: function onChange(params) {
|
393 | return setRangeOperator(params.value);
|
394 | }
|
395 | ,
|
396 | mountNode: mountNode.current,
|
397 | options: RANGE_OPERATIONS,
|
398 | size: "compact",
|
399 | clearable: false
|
400 | }), React.createElement("div", {
|
401 | className: css({
|
402 | paddingTop: theme.sizing.scale600
|
403 | })
|
404 | }, (rangeOperator[0].id === _constants.DATETIME_OPERATIONS.RANGE_DATETIME || rangeOperator[0].id === _constants.DATETIME_OPERATIONS.RANGE_DATE) && React.createElement(_index14.Datepicker
|
405 | , {
|
406 | mountNode: mountNode.current,
|
407 | value: rangeDates,
|
408 | onChange: function onChange(_ref2) {
|
409 | var date = _ref2.date;
|
410 |
|
411 | if (Array.isArray(date)) {
|
412 | if (!date.length) return;
|
413 | var nextDates = date.map(function (d, i) {
|
414 | return (0, _index13.applyDateToTime)(rangeDates[i], d);
|
415 | });
|
416 | setRangeDates(nextDates);
|
417 | }
|
418 | },
|
419 | formatString: DATE_FORMAT,
|
420 | placeholder: "MM-DD-YYYY - MM-DD-YYYY",
|
421 | minDate: datesSorted[0],
|
422 | maxDate: datesSorted[datesSorted.length - 1],
|
423 | timeSelectStart: rangeOperator[0].id === _constants.DATETIME_OPERATIONS.RANGE_DATETIME,
|
424 | timeSelectEnd: rangeOperator[0].id === _constants.DATETIME_OPERATIONS.RANGE_DATETIME,
|
425 | overrides: {
|
426 | TimeSelect: {
|
427 | props: {
|
428 | size: 'compact'
|
429 | }
|
430 | }
|
431 | },
|
432 | range: true,
|
433 | size: "compact"
|
434 | })), (rangeOperator[0].id === _constants.DATETIME_OPERATIONS.RANGE_DATETIME || rangeOperator[0].id === _constants.DATETIME_OPERATIONS.RANGE_TIME) && React.createElement("div", {
|
435 | className: css({
|
436 | display: 'flex',
|
437 | paddingTop: theme.sizing.scale100
|
438 | })
|
439 | }, React.createElement("div", {
|
440 | className: css({
|
441 | width: '100%',
|
442 | marginRight: theme.sizing.scale300
|
443 | })
|
444 | }, React.createElement(_index15.TimePicker, {
|
445 | format: "24",
|
446 | value: rangeDates[0],
|
447 | onChange: function onChange(time) {
|
448 | return time && setRangeDates([(0, _index13.applyTimeToDate)(rangeDates[0], time), rangeDates[1]]);
|
449 | },
|
450 | creatable: true,
|
451 | size: "compact"
|
452 | })), React.createElement("div", {
|
453 | className: css({
|
454 | width: '100%'
|
455 | })
|
456 | }, React.createElement(_index15.TimePicker, {
|
457 | format: "24",
|
458 | value: rangeDates[1],
|
459 | onChange: function onChange(time) {
|
460 | return time && setRangeDates([rangeDates[0], (0, _index13.applyTimeToDate)(rangeDates[1], time)]);
|
461 | },
|
462 | creatable: true,
|
463 | size: "compact"
|
464 | })))), isCategorical && React.createElement("div", null, React.createElement(_index17.Select, {
|
465 | value: categoricalOperator,
|
466 | onChange: function onChange(params) {
|
467 | return setCategoricalOperator(params.value);
|
468 | },
|
469 | options: CATEGORICAL_OPERATIONS
|
470 | ,
|
471 | mountNode: mountNode.current,
|
472 | size: "compact",
|
473 | clearable: false
|
474 | }), React.createElement("div", {
|
475 | className: css({
|
476 | paddingLeft: theme.sizing.scale300,
|
477 | paddingTop: theme.sizing.scale500
|
478 | })
|
479 | }, categoricalOperator[0].id === _constants.DATETIME_OPERATIONS.WEEKDAY && React.createElement(Checks, {
|
480 | value: weekdays,
|
481 | setValue: setWeekdays,
|
482 | options: WEEKDAYS.map(function (w, i) {
|
483 | return {
|
484 | label: w,
|
485 | id: i
|
486 | };
|
487 | })
|
488 | }), categoricalOperator[0].id === _constants.DATETIME_OPERATIONS.MONTH && React.createElement(Checks, {
|
489 | value: months,
|
490 | setValue: setMonths,
|
491 | options: MONTHS.map(function (m, i) {
|
492 | return {
|
493 | label: m,
|
494 | id: i
|
495 | };
|
496 | })
|
497 | }), categoricalOperator[0].id === _constants.DATETIME_OPERATIONS.QUARTER && React.createElement(Checks, {
|
498 | value: quarters,
|
499 | setValue: setQuarters,
|
500 | options: QUARTERS.map(function (q, i) {
|
501 | return {
|
502 | label: q,
|
503 | id: i
|
504 | };
|
505 | })
|
506 | }), categoricalOperator[0].id === _constants.DATETIME_OPERATIONS.HALF && React.createElement(Checks, {
|
507 | value: halves,
|
508 | setValue: setHalves,
|
509 | options: HALVES.map(function (h, i) {
|
510 | return {
|
511 | label: h,
|
512 | id: i
|
513 | };
|
514 | })
|
515 | }), categoricalOperator[0].id === _constants.DATETIME_OPERATIONS.YEAR && React.createElement(Checks, {
|
516 | value: years,
|
517 | setValue: setYears,
|
518 | options: presentYears.map(function (year) {
|
519 | return {
|
520 | label: year,
|
521 | id: year
|
522 | };
|
523 | })
|
524 | })))));
|
525 | }
|
526 |
|
527 | var DatetimeCell = React.forwardRef(function (props, ref) {
|
528 | var _useStyletron5 = (0, _index16.useStyletron)(),
|
529 | _useStyletron6 = _slicedToArray(_useStyletron5, 2),
|
530 | css = _useStyletron6[0],
|
531 | theme = _useStyletron6[1];
|
532 |
|
533 | return React.createElement(_cellShell.default, {
|
534 | ref: ref,
|
535 | isMeasured: props.isMeasured,
|
536 | isSelected: props.isSelected,
|
537 | onSelect: props.onSelect
|
538 | }, React.createElement("div", {
|
539 | className: css(_objectSpread({}, theme.typography.MonoParagraphXSmall, {
|
540 | display: 'flex',
|
541 | justifyContent: 'flex-end',
|
542 | width: '100%',
|
543 | whiteSpace: 'nowrap'
|
544 | }))
|
545 | }, (0, _index.default)(props.value, props.formatString)));
|
546 | });
|
547 | DatetimeCell.displayName = 'DatetimeCell';
|
548 | var defaultOptions = {
|
549 | title: '',
|
550 | sortable: true,
|
551 | filterable: true,
|
552 | formatString: FORMAT_STRING
|
553 | };
|
554 |
|
555 | function DatetimeColumn(options) {
|
556 | var normalizedOptions = _objectSpread({}, defaultOptions, {}, options);
|
557 |
|
558 | return {
|
559 | kind: _constants.COLUMNS.DATETIME,
|
560 | buildFilter: function buildFilter(params) {
|
561 | return function (data) {
|
562 | var included = true;
|
563 |
|
564 | if (params.operation === _constants.DATETIME_OPERATIONS.YEAR) {
|
565 | included = params.selection.includes((0, _index2.default)(data));
|
566 | } else if (params.operation === _constants.DATETIME_OPERATIONS.HALF) {
|
567 | var month = (0, _index3.default)(data);
|
568 | var half = month < 6 ? 0 : 1;
|
569 | included = params.selection.includes(half);
|
570 | } else if (params.operation === _constants.DATETIME_OPERATIONS.QUARTER) {
|
571 |
|
572 | var quarter = (0, _index4.default)(data) - 1;
|
573 | included = params.selection.includes(quarter);
|
574 | } else if (params.operation === _constants.DATETIME_OPERATIONS.MONTH) {
|
575 | included = params.selection.includes((0, _index3.default)(data));
|
576 | } else if (params.operation === _constants.DATETIME_OPERATIONS.WEEKDAY) {
|
577 | included = params.selection.includes((0, _index5.default)(data));
|
578 | }
|
579 |
|
580 | if (params.operation === _constants.DATETIME_OPERATIONS.RANGE_DATE || params.operation === _constants.DATETIME_OPERATIONS.RANGE_TIME || params.operation === _constants.DATETIME_OPERATIONS.RANGE_DATETIME) {
|
581 | var _params$range = _slicedToArray(params.range, 2),
|
582 | left = _params$range[0],
|
583 | right = _params$range[1];
|
584 |
|
585 | if (params.operation === _constants.DATETIME_OPERATIONS.RANGE_DATE) {
|
586 | left = (0, _index9.default)(left, {
|
587 | hours: 0,
|
588 | minutes: 0,
|
589 | seconds: 0
|
590 | });
|
591 | right = (0, _index9.default)(right, {
|
592 | hours: 0,
|
593 | minutes: 0,
|
594 | seconds: 0
|
595 | });
|
596 | data = (0, _index9.default)(data, {
|
597 | hours: 0,
|
598 | minutes: 0,
|
599 | seconds: 0
|
600 | });
|
601 | }
|
602 |
|
603 | if (params.operation === _constants.DATETIME_OPERATIONS.RANGE_TIME) {
|
604 | left = (0, _index9.default)(left, {
|
605 | year: 2000,
|
606 | month: 1,
|
607 | date: 1
|
608 | });
|
609 | right = (0, _index9.default)(right, {
|
610 | year: 2000,
|
611 | month: 1,
|
612 | date: 1
|
613 | });
|
614 | data = (0, _index9.default)(data, {
|
615 | year: 2000,
|
616 | month: 1,
|
617 | date: 1
|
618 | });
|
619 | }
|
620 |
|
621 | var after = (0, _index6.default)(data, left) || (0, _index8.default)(data, left);
|
622 | var before = (0, _index7.default)(data, right) || (0, _index8.default)(data, right);
|
623 | included = after && before;
|
624 | }
|
625 |
|
626 | return params.exclude ? !included : included;
|
627 | };
|
628 | },
|
629 | filterable: normalizedOptions.filterable,
|
630 | mapDataToValue: options.mapDataToValue,
|
631 | maxWidth: options.maxWidth,
|
632 | minWidth: options.minWidth,
|
633 | renderCell: React.forwardRef(function (props, ref) {
|
634 | return React.createElement(DatetimeCell, {
|
635 | ref: ref,
|
636 | isMeasured: props.isMeasured,
|
637 | isSelected: props.isSelected,
|
638 | onSelect: props.onSelect,
|
639 | value: props.value,
|
640 | formatString: normalizedOptions.formatString
|
641 | });
|
642 | }),
|
643 | renderFilter: DatetimeFilter,
|
644 | sortable: normalizedOptions.sortable,
|
645 | sortFn: sortDates,
|
646 | title: options.title
|
647 | };
|
648 | }
|
649 |
|
650 | var _default = DatetimeColumn;
|
651 | exports.default = _default; |
\ | No newline at end of file |