@plusscommunities/pluss-core-web 1.2.8 → 1.2.9
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/dist/index.cjs.js +133 -19
- package/dist/index.esm.js +133 -19
- package/dist/index.umd.js +133 -19
- package/package.json +1 -1
- package/src/components/ExportCsvPopup.js +108 -8
package/dist/index.cjs.js
CHANGED
|
@@ -10188,8 +10188,6 @@ var ExportCsvPopup = /*#__PURE__*/function (_Component) {
|
|
|
10188
10188
|
});
|
|
10189
10189
|
|
|
10190
10190
|
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onToggleColumn", function (key) {
|
|
10191
|
-
var source = _this.props.source;
|
|
10192
|
-
|
|
10193
10191
|
var columns = ___default['default'].cloneDeep(_this.state.columns);
|
|
10194
10192
|
|
|
10195
10193
|
var column = columns.find(function (c) {
|
|
@@ -10205,25 +10203,132 @@ var ExportCsvPopup = /*#__PURE__*/function (_Component) {
|
|
|
10205
10203
|
var selectedHeaders = columns.filter(function (c) {
|
|
10206
10204
|
return c.key && c.selected;
|
|
10207
10205
|
});
|
|
10208
|
-
|
|
10209
|
-
|
|
10206
|
+
|
|
10207
|
+
_this.setState({
|
|
10208
|
+
columns: columns,
|
|
10209
|
+
selectedHeaders: selectedHeaders
|
|
10210
|
+
});
|
|
10211
|
+
}
|
|
10212
|
+
});
|
|
10213
|
+
|
|
10214
|
+
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onToggleStartDateFilter", function () {
|
|
10215
|
+
var filterDateStartVisible = _this.state.filterDateStartVisible;
|
|
10216
|
+
|
|
10217
|
+
if (filterDateStartVisible) {
|
|
10218
|
+
setTimeout(function () {
|
|
10219
|
+
return _this.setState({
|
|
10220
|
+
filterDateStartVisible: false
|
|
10221
|
+
});
|
|
10222
|
+
}, 200);
|
|
10223
|
+
} else {
|
|
10224
|
+
_this.setState({
|
|
10225
|
+
filterDateStartVisible: true
|
|
10210
10226
|
});
|
|
10211
|
-
|
|
10212
|
-
|
|
10227
|
+
}
|
|
10228
|
+
});
|
|
10229
|
+
|
|
10230
|
+
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onToggleEndDateFilter", function () {
|
|
10231
|
+
var filterDateEndVisible = _this.state.filterDateEndVisible;
|
|
10232
|
+
|
|
10233
|
+
if (filterDateEndVisible) {
|
|
10234
|
+
setTimeout(function () {
|
|
10235
|
+
return _this.setState({
|
|
10236
|
+
filterDateEndVisible: false
|
|
10237
|
+
});
|
|
10238
|
+
}, 200);
|
|
10239
|
+
} else {
|
|
10240
|
+
_this.setState({
|
|
10241
|
+
filterDateEndVisible: true
|
|
10213
10242
|
});
|
|
10243
|
+
}
|
|
10244
|
+
});
|
|
10245
|
+
|
|
10246
|
+
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onDateFilterStartChanged", function (date) {
|
|
10247
|
+
var filterDateEnd = _this.state.filterDateEnd;
|
|
10248
|
+
var start = moment__default['default'](date);
|
|
10214
10249
|
|
|
10250
|
+
if (start.isSameOrBefore(filterDateEnd)) {
|
|
10215
10251
|
_this.setState({
|
|
10216
|
-
|
|
10217
|
-
|
|
10218
|
-
|
|
10252
|
+
filterDateStart: start.startOf('day'),
|
|
10253
|
+
filterDateStartVisible: false
|
|
10254
|
+
});
|
|
10255
|
+
}
|
|
10256
|
+
});
|
|
10257
|
+
|
|
10258
|
+
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onDateFilterEndChanged", function (date) {
|
|
10259
|
+
var filterDateStart = _this.state.filterDateStart;
|
|
10260
|
+
var end = moment__default['default'](date);
|
|
10261
|
+
|
|
10262
|
+
if (end.isSameOrAfter(filterDateStart)) {
|
|
10263
|
+
_this.setState({
|
|
10264
|
+
filterDateEnd: end.endOf('day'),
|
|
10265
|
+
filterDateEndVisible: false
|
|
10219
10266
|
});
|
|
10220
10267
|
}
|
|
10221
10268
|
});
|
|
10222
10269
|
|
|
10270
|
+
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "getSelectedSource", function () {
|
|
10271
|
+
var source = _this.props.source;
|
|
10272
|
+
var selectedHeaders = _this.state.selectedHeaders;
|
|
10273
|
+
var result = source; // apply timestamp filter
|
|
10274
|
+
|
|
10275
|
+
if (_this.props.timestampFilter) {
|
|
10276
|
+
var _this$state = _this.state,
|
|
10277
|
+
filterDateStart = _this$state.filterDateStart,
|
|
10278
|
+
filterDateEnd = _this$state.filterDateEnd;
|
|
10279
|
+
var filterKey = _this.props.timestampFilter.filterKey;
|
|
10280
|
+
var minDate = filterDateStart.valueOf();
|
|
10281
|
+
var maxDate = filterDateEnd.valueOf();
|
|
10282
|
+
result = ___default['default'].filter(source, function (item) {
|
|
10283
|
+
return item[filterKey] >= minDate && item[filterKey] <= maxDate;
|
|
10284
|
+
});
|
|
10285
|
+
} // map result to columns
|
|
10286
|
+
|
|
10287
|
+
|
|
10288
|
+
var selectedheaderKeys = selectedHeaders.map(function (h) {
|
|
10289
|
+
return h.key;
|
|
10290
|
+
});
|
|
10291
|
+
return result.map(function (i) {
|
|
10292
|
+
return ___default['default'].pick(i, selectedheaderKeys);
|
|
10293
|
+
});
|
|
10294
|
+
});
|
|
10295
|
+
|
|
10296
|
+
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "renderTimestampFilter", function () {
|
|
10297
|
+
if (!_this.props.timestampFilter) {
|
|
10298
|
+
return null;
|
|
10299
|
+
}
|
|
10300
|
+
|
|
10301
|
+
return /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(GenericInput, {
|
|
10302
|
+
id: "dateStart",
|
|
10303
|
+
label: "Start Date",
|
|
10304
|
+
alwaysShowLabel: true,
|
|
10305
|
+
placeholder: 'Select start date',
|
|
10306
|
+
value: _this.state.filterDateStart.format('DD/MM/YYYY'),
|
|
10307
|
+
onClick: _this.onToggleStartDateFilter,
|
|
10308
|
+
readOnly: true
|
|
10309
|
+
}), _this.state.filterDateStartVisible ? /*#__PURE__*/React__default['default'].createElement(DatePicker, {
|
|
10310
|
+
hideTop: true,
|
|
10311
|
+
selectedDate: _this.state.filterDateStart,
|
|
10312
|
+
selectDate: _this.onDateFilterStartChanged
|
|
10313
|
+
}) : null, /*#__PURE__*/React__default['default'].createElement(GenericInput, {
|
|
10314
|
+
id: "dateEnd",
|
|
10315
|
+
label: "End Date",
|
|
10316
|
+
alwaysShowLabel: true,
|
|
10317
|
+
placeholder: 'Select end date',
|
|
10318
|
+
value: _this.state.filterDateEnd.format('DD/MM/YYYY'),
|
|
10319
|
+
onClick: _this.onToggleEndDateFilter,
|
|
10320
|
+
readOnly: true
|
|
10321
|
+
}), _this.state.filterDateEndVisible ? /*#__PURE__*/React__default['default'].createElement(DatePicker, {
|
|
10322
|
+
hideTop: true,
|
|
10323
|
+
selectedDate: _this.state.filterDateEnd,
|
|
10324
|
+
selectDate: _this.onDateFilterEndChanged
|
|
10325
|
+
}) : null);
|
|
10326
|
+
});
|
|
10327
|
+
|
|
10223
10328
|
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "renderContent", function () {
|
|
10224
|
-
var _this$
|
|
10225
|
-
saving = _this$
|
|
10226
|
-
columns = _this$
|
|
10329
|
+
var _this$state2 = _this.state,
|
|
10330
|
+
saving = _this$state2.saving,
|
|
10331
|
+
columns = _this$state2.columns;
|
|
10227
10332
|
|
|
10228
10333
|
if (saving) {
|
|
10229
10334
|
return /*#__PURE__*/React__default['default'].createElement("div", {
|
|
@@ -10258,27 +10363,35 @@ var ExportCsvPopup = /*#__PURE__*/function (_Component) {
|
|
|
10258
10363
|
}));
|
|
10259
10364
|
});
|
|
10260
10365
|
|
|
10261
|
-
|
|
10366
|
+
var state = {
|
|
10262
10367
|
columns: props.columns,
|
|
10368
|
+
selectedHeaders: props.columns.filter(function (c) {
|
|
10369
|
+
return c.key && c.selected;
|
|
10370
|
+
}),
|
|
10263
10371
|
selectedSource: [],
|
|
10264
10372
|
saving: false
|
|
10265
10373
|
};
|
|
10374
|
+
|
|
10375
|
+
if (props.timestampFilter) {
|
|
10376
|
+
state.filterDateStart = props.timestampFilter.startDate;
|
|
10377
|
+
state.filterDateEnd = props.timestampFilter.endDate;
|
|
10378
|
+
}
|
|
10379
|
+
|
|
10380
|
+
_this.state = state;
|
|
10266
10381
|
return _this;
|
|
10267
10382
|
}
|
|
10268
10383
|
|
|
10269
10384
|
_createClass__default['default'](ExportCsvPopup, [{
|
|
10270
10385
|
key: "render",
|
|
10271
10386
|
value: function render() {
|
|
10272
|
-
var
|
|
10273
|
-
selectedHeaders = _this$state2.selectedHeaders,
|
|
10274
|
-
selectedSource = _this$state2.selectedSource;
|
|
10387
|
+
var selectedHeaders = this.state.selectedHeaders;
|
|
10275
10388
|
var filename = this.props.filename;
|
|
10276
10389
|
var buttons = [{
|
|
10277
10390
|
type: 'primary',
|
|
10278
10391
|
isActive: this.canSave(),
|
|
10279
10392
|
text: /*#__PURE__*/React__default['default'].createElement(reactCsv.CSVLink, {
|
|
10280
10393
|
headers: selectedHeaders,
|
|
10281
|
-
data:
|
|
10394
|
+
data: this.getSelectedSource(),
|
|
10282
10395
|
style: {
|
|
10283
10396
|
textDecoration: 'none',
|
|
10284
10397
|
color: '#fff'
|
|
@@ -10294,7 +10407,6 @@ var ExportCsvPopup = /*#__PURE__*/function (_Component) {
|
|
|
10294
10407
|
}];
|
|
10295
10408
|
return /*#__PURE__*/React__default['default'].createElement(Popup, {
|
|
10296
10409
|
title: "Confirm Export",
|
|
10297
|
-
subtitle: "Select which columns to include in the export",
|
|
10298
10410
|
boxClasses: "flex flex-column",
|
|
10299
10411
|
innerClasses: "flex flex-column fillSpace flex-1",
|
|
10300
10412
|
minWidth: 500,
|
|
@@ -10304,7 +10416,9 @@ var ExportCsvPopup = /*#__PURE__*/function (_Component) {
|
|
|
10304
10416
|
hasPadding: true,
|
|
10305
10417
|
onClose: this.onClose,
|
|
10306
10418
|
buttons: buttons
|
|
10307
|
-
}, this.
|
|
10419
|
+
}, this.renderTimestampFilter(), /*#__PURE__*/React__default['default'].createElement(Text, {
|
|
10420
|
+
type: "bodyLarge"
|
|
10421
|
+
}, "Select which columns to include in the export"), this.renderContent());
|
|
10308
10422
|
}
|
|
10309
10423
|
}]);
|
|
10310
10424
|
|
package/dist/index.esm.js
CHANGED
|
@@ -10161,8 +10161,6 @@ var ExportCsvPopup = /*#__PURE__*/function (_Component) {
|
|
|
10161
10161
|
});
|
|
10162
10162
|
|
|
10163
10163
|
_defineProperty(_assertThisInitialized(_this), "onToggleColumn", function (key) {
|
|
10164
|
-
var source = _this.props.source;
|
|
10165
|
-
|
|
10166
10164
|
var columns = _.cloneDeep(_this.state.columns);
|
|
10167
10165
|
|
|
10168
10166
|
var column = columns.find(function (c) {
|
|
@@ -10178,25 +10176,132 @@ var ExportCsvPopup = /*#__PURE__*/function (_Component) {
|
|
|
10178
10176
|
var selectedHeaders = columns.filter(function (c) {
|
|
10179
10177
|
return c.key && c.selected;
|
|
10180
10178
|
});
|
|
10181
|
-
|
|
10182
|
-
|
|
10179
|
+
|
|
10180
|
+
_this.setState({
|
|
10181
|
+
columns: columns,
|
|
10182
|
+
selectedHeaders: selectedHeaders
|
|
10183
|
+
});
|
|
10184
|
+
}
|
|
10185
|
+
});
|
|
10186
|
+
|
|
10187
|
+
_defineProperty(_assertThisInitialized(_this), "onToggleStartDateFilter", function () {
|
|
10188
|
+
var filterDateStartVisible = _this.state.filterDateStartVisible;
|
|
10189
|
+
|
|
10190
|
+
if (filterDateStartVisible) {
|
|
10191
|
+
setTimeout(function () {
|
|
10192
|
+
return _this.setState({
|
|
10193
|
+
filterDateStartVisible: false
|
|
10194
|
+
});
|
|
10195
|
+
}, 200);
|
|
10196
|
+
} else {
|
|
10197
|
+
_this.setState({
|
|
10198
|
+
filterDateStartVisible: true
|
|
10183
10199
|
});
|
|
10184
|
-
|
|
10185
|
-
|
|
10200
|
+
}
|
|
10201
|
+
});
|
|
10202
|
+
|
|
10203
|
+
_defineProperty(_assertThisInitialized(_this), "onToggleEndDateFilter", function () {
|
|
10204
|
+
var filterDateEndVisible = _this.state.filterDateEndVisible;
|
|
10205
|
+
|
|
10206
|
+
if (filterDateEndVisible) {
|
|
10207
|
+
setTimeout(function () {
|
|
10208
|
+
return _this.setState({
|
|
10209
|
+
filterDateEndVisible: false
|
|
10210
|
+
});
|
|
10211
|
+
}, 200);
|
|
10212
|
+
} else {
|
|
10213
|
+
_this.setState({
|
|
10214
|
+
filterDateEndVisible: true
|
|
10186
10215
|
});
|
|
10216
|
+
}
|
|
10217
|
+
});
|
|
10218
|
+
|
|
10219
|
+
_defineProperty(_assertThisInitialized(_this), "onDateFilterStartChanged", function (date) {
|
|
10220
|
+
var filterDateEnd = _this.state.filterDateEnd;
|
|
10221
|
+
var start = moment(date);
|
|
10187
10222
|
|
|
10223
|
+
if (start.isSameOrBefore(filterDateEnd)) {
|
|
10188
10224
|
_this.setState({
|
|
10189
|
-
|
|
10190
|
-
|
|
10191
|
-
|
|
10225
|
+
filterDateStart: start.startOf('day'),
|
|
10226
|
+
filterDateStartVisible: false
|
|
10227
|
+
});
|
|
10228
|
+
}
|
|
10229
|
+
});
|
|
10230
|
+
|
|
10231
|
+
_defineProperty(_assertThisInitialized(_this), "onDateFilterEndChanged", function (date) {
|
|
10232
|
+
var filterDateStart = _this.state.filterDateStart;
|
|
10233
|
+
var end = moment(date);
|
|
10234
|
+
|
|
10235
|
+
if (end.isSameOrAfter(filterDateStart)) {
|
|
10236
|
+
_this.setState({
|
|
10237
|
+
filterDateEnd: end.endOf('day'),
|
|
10238
|
+
filterDateEndVisible: false
|
|
10192
10239
|
});
|
|
10193
10240
|
}
|
|
10194
10241
|
});
|
|
10195
10242
|
|
|
10243
|
+
_defineProperty(_assertThisInitialized(_this), "getSelectedSource", function () {
|
|
10244
|
+
var source = _this.props.source;
|
|
10245
|
+
var selectedHeaders = _this.state.selectedHeaders;
|
|
10246
|
+
var result = source; // apply timestamp filter
|
|
10247
|
+
|
|
10248
|
+
if (_this.props.timestampFilter) {
|
|
10249
|
+
var _this$state = _this.state,
|
|
10250
|
+
filterDateStart = _this$state.filterDateStart,
|
|
10251
|
+
filterDateEnd = _this$state.filterDateEnd;
|
|
10252
|
+
var filterKey = _this.props.timestampFilter.filterKey;
|
|
10253
|
+
var minDate = filterDateStart.valueOf();
|
|
10254
|
+
var maxDate = filterDateEnd.valueOf();
|
|
10255
|
+
result = _.filter(source, function (item) {
|
|
10256
|
+
return item[filterKey] >= minDate && item[filterKey] <= maxDate;
|
|
10257
|
+
});
|
|
10258
|
+
} // map result to columns
|
|
10259
|
+
|
|
10260
|
+
|
|
10261
|
+
var selectedheaderKeys = selectedHeaders.map(function (h) {
|
|
10262
|
+
return h.key;
|
|
10263
|
+
});
|
|
10264
|
+
return result.map(function (i) {
|
|
10265
|
+
return _.pick(i, selectedheaderKeys);
|
|
10266
|
+
});
|
|
10267
|
+
});
|
|
10268
|
+
|
|
10269
|
+
_defineProperty(_assertThisInitialized(_this), "renderTimestampFilter", function () {
|
|
10270
|
+
if (!_this.props.timestampFilter) {
|
|
10271
|
+
return null;
|
|
10272
|
+
}
|
|
10273
|
+
|
|
10274
|
+
return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(GenericInput, {
|
|
10275
|
+
id: "dateStart",
|
|
10276
|
+
label: "Start Date",
|
|
10277
|
+
alwaysShowLabel: true,
|
|
10278
|
+
placeholder: 'Select start date',
|
|
10279
|
+
value: _this.state.filterDateStart.format('DD/MM/YYYY'),
|
|
10280
|
+
onClick: _this.onToggleStartDateFilter,
|
|
10281
|
+
readOnly: true
|
|
10282
|
+
}), _this.state.filterDateStartVisible ? /*#__PURE__*/React.createElement(DatePicker, {
|
|
10283
|
+
hideTop: true,
|
|
10284
|
+
selectedDate: _this.state.filterDateStart,
|
|
10285
|
+
selectDate: _this.onDateFilterStartChanged
|
|
10286
|
+
}) : null, /*#__PURE__*/React.createElement(GenericInput, {
|
|
10287
|
+
id: "dateEnd",
|
|
10288
|
+
label: "End Date",
|
|
10289
|
+
alwaysShowLabel: true,
|
|
10290
|
+
placeholder: 'Select end date',
|
|
10291
|
+
value: _this.state.filterDateEnd.format('DD/MM/YYYY'),
|
|
10292
|
+
onClick: _this.onToggleEndDateFilter,
|
|
10293
|
+
readOnly: true
|
|
10294
|
+
}), _this.state.filterDateEndVisible ? /*#__PURE__*/React.createElement(DatePicker, {
|
|
10295
|
+
hideTop: true,
|
|
10296
|
+
selectedDate: _this.state.filterDateEnd,
|
|
10297
|
+
selectDate: _this.onDateFilterEndChanged
|
|
10298
|
+
}) : null);
|
|
10299
|
+
});
|
|
10300
|
+
|
|
10196
10301
|
_defineProperty(_assertThisInitialized(_this), "renderContent", function () {
|
|
10197
|
-
var _this$
|
|
10198
|
-
saving = _this$
|
|
10199
|
-
columns = _this$
|
|
10302
|
+
var _this$state2 = _this.state,
|
|
10303
|
+
saving = _this$state2.saving,
|
|
10304
|
+
columns = _this$state2.columns;
|
|
10200
10305
|
|
|
10201
10306
|
if (saving) {
|
|
10202
10307
|
return /*#__PURE__*/React.createElement("div", {
|
|
@@ -10231,27 +10336,35 @@ var ExportCsvPopup = /*#__PURE__*/function (_Component) {
|
|
|
10231
10336
|
}));
|
|
10232
10337
|
});
|
|
10233
10338
|
|
|
10234
|
-
|
|
10339
|
+
var state = {
|
|
10235
10340
|
columns: props.columns,
|
|
10341
|
+
selectedHeaders: props.columns.filter(function (c) {
|
|
10342
|
+
return c.key && c.selected;
|
|
10343
|
+
}),
|
|
10236
10344
|
selectedSource: [],
|
|
10237
10345
|
saving: false
|
|
10238
10346
|
};
|
|
10347
|
+
|
|
10348
|
+
if (props.timestampFilter) {
|
|
10349
|
+
state.filterDateStart = props.timestampFilter.startDate;
|
|
10350
|
+
state.filterDateEnd = props.timestampFilter.endDate;
|
|
10351
|
+
}
|
|
10352
|
+
|
|
10353
|
+
_this.state = state;
|
|
10239
10354
|
return _this;
|
|
10240
10355
|
}
|
|
10241
10356
|
|
|
10242
10357
|
_createClass(ExportCsvPopup, [{
|
|
10243
10358
|
key: "render",
|
|
10244
10359
|
value: function render() {
|
|
10245
|
-
var
|
|
10246
|
-
selectedHeaders = _this$state2.selectedHeaders,
|
|
10247
|
-
selectedSource = _this$state2.selectedSource;
|
|
10360
|
+
var selectedHeaders = this.state.selectedHeaders;
|
|
10248
10361
|
var filename = this.props.filename;
|
|
10249
10362
|
var buttons = [{
|
|
10250
10363
|
type: 'primary',
|
|
10251
10364
|
isActive: this.canSave(),
|
|
10252
10365
|
text: /*#__PURE__*/React.createElement(CSVLink, {
|
|
10253
10366
|
headers: selectedHeaders,
|
|
10254
|
-
data:
|
|
10367
|
+
data: this.getSelectedSource(),
|
|
10255
10368
|
style: {
|
|
10256
10369
|
textDecoration: 'none',
|
|
10257
10370
|
color: '#fff'
|
|
@@ -10267,7 +10380,6 @@ var ExportCsvPopup = /*#__PURE__*/function (_Component) {
|
|
|
10267
10380
|
}];
|
|
10268
10381
|
return /*#__PURE__*/React.createElement(Popup, {
|
|
10269
10382
|
title: "Confirm Export",
|
|
10270
|
-
subtitle: "Select which columns to include in the export",
|
|
10271
10383
|
boxClasses: "flex flex-column",
|
|
10272
10384
|
innerClasses: "flex flex-column fillSpace flex-1",
|
|
10273
10385
|
minWidth: 500,
|
|
@@ -10277,7 +10389,9 @@ var ExportCsvPopup = /*#__PURE__*/function (_Component) {
|
|
|
10277
10389
|
hasPadding: true,
|
|
10278
10390
|
onClose: this.onClose,
|
|
10279
10391
|
buttons: buttons
|
|
10280
|
-
}, this.
|
|
10392
|
+
}, this.renderTimestampFilter(), /*#__PURE__*/React.createElement(Text, {
|
|
10393
|
+
type: "bodyLarge"
|
|
10394
|
+
}, "Select which columns to include in the export"), this.renderContent());
|
|
10281
10395
|
}
|
|
10282
10396
|
}]);
|
|
10283
10397
|
|
package/dist/index.umd.js
CHANGED
|
@@ -10163,8 +10163,6 @@
|
|
|
10163
10163
|
});
|
|
10164
10164
|
|
|
10165
10165
|
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onToggleColumn", function (key) {
|
|
10166
|
-
var source = _this.props.source;
|
|
10167
|
-
|
|
10168
10166
|
var columns = ___default['default'].cloneDeep(_this.state.columns);
|
|
10169
10167
|
|
|
10170
10168
|
var column = columns.find(function (c) {
|
|
@@ -10180,25 +10178,132 @@
|
|
|
10180
10178
|
var selectedHeaders = columns.filter(function (c) {
|
|
10181
10179
|
return c.key && c.selected;
|
|
10182
10180
|
});
|
|
10183
|
-
|
|
10184
|
-
|
|
10181
|
+
|
|
10182
|
+
_this.setState({
|
|
10183
|
+
columns: columns,
|
|
10184
|
+
selectedHeaders: selectedHeaders
|
|
10185
|
+
});
|
|
10186
|
+
}
|
|
10187
|
+
});
|
|
10188
|
+
|
|
10189
|
+
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onToggleStartDateFilter", function () {
|
|
10190
|
+
var filterDateStartVisible = _this.state.filterDateStartVisible;
|
|
10191
|
+
|
|
10192
|
+
if (filterDateStartVisible) {
|
|
10193
|
+
setTimeout(function () {
|
|
10194
|
+
return _this.setState({
|
|
10195
|
+
filterDateStartVisible: false
|
|
10196
|
+
});
|
|
10197
|
+
}, 200);
|
|
10198
|
+
} else {
|
|
10199
|
+
_this.setState({
|
|
10200
|
+
filterDateStartVisible: true
|
|
10185
10201
|
});
|
|
10186
|
-
|
|
10187
|
-
|
|
10202
|
+
}
|
|
10203
|
+
});
|
|
10204
|
+
|
|
10205
|
+
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onToggleEndDateFilter", function () {
|
|
10206
|
+
var filterDateEndVisible = _this.state.filterDateEndVisible;
|
|
10207
|
+
|
|
10208
|
+
if (filterDateEndVisible) {
|
|
10209
|
+
setTimeout(function () {
|
|
10210
|
+
return _this.setState({
|
|
10211
|
+
filterDateEndVisible: false
|
|
10212
|
+
});
|
|
10213
|
+
}, 200);
|
|
10214
|
+
} else {
|
|
10215
|
+
_this.setState({
|
|
10216
|
+
filterDateEndVisible: true
|
|
10188
10217
|
});
|
|
10218
|
+
}
|
|
10219
|
+
});
|
|
10220
|
+
|
|
10221
|
+
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onDateFilterStartChanged", function (date) {
|
|
10222
|
+
var filterDateEnd = _this.state.filterDateEnd;
|
|
10223
|
+
var start = moment__default['default'](date);
|
|
10189
10224
|
|
|
10225
|
+
if (start.isSameOrBefore(filterDateEnd)) {
|
|
10190
10226
|
_this.setState({
|
|
10191
|
-
|
|
10192
|
-
|
|
10193
|
-
|
|
10227
|
+
filterDateStart: start.startOf('day'),
|
|
10228
|
+
filterDateStartVisible: false
|
|
10229
|
+
});
|
|
10230
|
+
}
|
|
10231
|
+
});
|
|
10232
|
+
|
|
10233
|
+
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onDateFilterEndChanged", function (date) {
|
|
10234
|
+
var filterDateStart = _this.state.filterDateStart;
|
|
10235
|
+
var end = moment__default['default'](date);
|
|
10236
|
+
|
|
10237
|
+
if (end.isSameOrAfter(filterDateStart)) {
|
|
10238
|
+
_this.setState({
|
|
10239
|
+
filterDateEnd: end.endOf('day'),
|
|
10240
|
+
filterDateEndVisible: false
|
|
10194
10241
|
});
|
|
10195
10242
|
}
|
|
10196
10243
|
});
|
|
10197
10244
|
|
|
10245
|
+
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "getSelectedSource", function () {
|
|
10246
|
+
var source = _this.props.source;
|
|
10247
|
+
var selectedHeaders = _this.state.selectedHeaders;
|
|
10248
|
+
var result = source; // apply timestamp filter
|
|
10249
|
+
|
|
10250
|
+
if (_this.props.timestampFilter) {
|
|
10251
|
+
var _this$state = _this.state,
|
|
10252
|
+
filterDateStart = _this$state.filterDateStart,
|
|
10253
|
+
filterDateEnd = _this$state.filterDateEnd;
|
|
10254
|
+
var filterKey = _this.props.timestampFilter.filterKey;
|
|
10255
|
+
var minDate = filterDateStart.valueOf();
|
|
10256
|
+
var maxDate = filterDateEnd.valueOf();
|
|
10257
|
+
result = ___default['default'].filter(source, function (item) {
|
|
10258
|
+
return item[filterKey] >= minDate && item[filterKey] <= maxDate;
|
|
10259
|
+
});
|
|
10260
|
+
} // map result to columns
|
|
10261
|
+
|
|
10262
|
+
|
|
10263
|
+
var selectedheaderKeys = selectedHeaders.map(function (h) {
|
|
10264
|
+
return h.key;
|
|
10265
|
+
});
|
|
10266
|
+
return result.map(function (i) {
|
|
10267
|
+
return ___default['default'].pick(i, selectedheaderKeys);
|
|
10268
|
+
});
|
|
10269
|
+
});
|
|
10270
|
+
|
|
10271
|
+
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "renderTimestampFilter", function () {
|
|
10272
|
+
if (!_this.props.timestampFilter) {
|
|
10273
|
+
return null;
|
|
10274
|
+
}
|
|
10275
|
+
|
|
10276
|
+
return /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(GenericInput, {
|
|
10277
|
+
id: "dateStart",
|
|
10278
|
+
label: "Start Date",
|
|
10279
|
+
alwaysShowLabel: true,
|
|
10280
|
+
placeholder: 'Select start date',
|
|
10281
|
+
value: _this.state.filterDateStart.format('DD/MM/YYYY'),
|
|
10282
|
+
onClick: _this.onToggleStartDateFilter,
|
|
10283
|
+
readOnly: true
|
|
10284
|
+
}), _this.state.filterDateStartVisible ? /*#__PURE__*/React__default['default'].createElement(DatePicker, {
|
|
10285
|
+
hideTop: true,
|
|
10286
|
+
selectedDate: _this.state.filterDateStart,
|
|
10287
|
+
selectDate: _this.onDateFilterStartChanged
|
|
10288
|
+
}) : null, /*#__PURE__*/React__default['default'].createElement(GenericInput, {
|
|
10289
|
+
id: "dateEnd",
|
|
10290
|
+
label: "End Date",
|
|
10291
|
+
alwaysShowLabel: true,
|
|
10292
|
+
placeholder: 'Select end date',
|
|
10293
|
+
value: _this.state.filterDateEnd.format('DD/MM/YYYY'),
|
|
10294
|
+
onClick: _this.onToggleEndDateFilter,
|
|
10295
|
+
readOnly: true
|
|
10296
|
+
}), _this.state.filterDateEndVisible ? /*#__PURE__*/React__default['default'].createElement(DatePicker, {
|
|
10297
|
+
hideTop: true,
|
|
10298
|
+
selectedDate: _this.state.filterDateEnd,
|
|
10299
|
+
selectDate: _this.onDateFilterEndChanged
|
|
10300
|
+
}) : null);
|
|
10301
|
+
});
|
|
10302
|
+
|
|
10198
10303
|
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "renderContent", function () {
|
|
10199
|
-
var _this$
|
|
10200
|
-
saving = _this$
|
|
10201
|
-
columns = _this$
|
|
10304
|
+
var _this$state2 = _this.state,
|
|
10305
|
+
saving = _this$state2.saving,
|
|
10306
|
+
columns = _this$state2.columns;
|
|
10202
10307
|
|
|
10203
10308
|
if (saving) {
|
|
10204
10309
|
return /*#__PURE__*/React__default['default'].createElement("div", {
|
|
@@ -10233,27 +10338,35 @@
|
|
|
10233
10338
|
}));
|
|
10234
10339
|
});
|
|
10235
10340
|
|
|
10236
|
-
|
|
10341
|
+
var state = {
|
|
10237
10342
|
columns: props.columns,
|
|
10343
|
+
selectedHeaders: props.columns.filter(function (c) {
|
|
10344
|
+
return c.key && c.selected;
|
|
10345
|
+
}),
|
|
10238
10346
|
selectedSource: [],
|
|
10239
10347
|
saving: false
|
|
10240
10348
|
};
|
|
10349
|
+
|
|
10350
|
+
if (props.timestampFilter) {
|
|
10351
|
+
state.filterDateStart = props.timestampFilter.startDate;
|
|
10352
|
+
state.filterDateEnd = props.timestampFilter.endDate;
|
|
10353
|
+
}
|
|
10354
|
+
|
|
10355
|
+
_this.state = state;
|
|
10241
10356
|
return _this;
|
|
10242
10357
|
}
|
|
10243
10358
|
|
|
10244
10359
|
_createClass__default['default'](ExportCsvPopup, [{
|
|
10245
10360
|
key: "render",
|
|
10246
10361
|
value: function render() {
|
|
10247
|
-
var
|
|
10248
|
-
selectedHeaders = _this$state2.selectedHeaders,
|
|
10249
|
-
selectedSource = _this$state2.selectedSource;
|
|
10362
|
+
var selectedHeaders = this.state.selectedHeaders;
|
|
10250
10363
|
var filename = this.props.filename;
|
|
10251
10364
|
var buttons = [{
|
|
10252
10365
|
type: 'primary',
|
|
10253
10366
|
isActive: this.canSave(),
|
|
10254
10367
|
text: /*#__PURE__*/React__default['default'].createElement(reactCsv.CSVLink, {
|
|
10255
10368
|
headers: selectedHeaders,
|
|
10256
|
-
data:
|
|
10369
|
+
data: this.getSelectedSource(),
|
|
10257
10370
|
style: {
|
|
10258
10371
|
textDecoration: 'none',
|
|
10259
10372
|
color: '#fff'
|
|
@@ -10269,7 +10382,6 @@
|
|
|
10269
10382
|
}];
|
|
10270
10383
|
return /*#__PURE__*/React__default['default'].createElement(Popup, {
|
|
10271
10384
|
title: "Confirm Export",
|
|
10272
|
-
subtitle: "Select which columns to include in the export",
|
|
10273
10385
|
boxClasses: "flex flex-column",
|
|
10274
10386
|
innerClasses: "flex flex-column fillSpace flex-1",
|
|
10275
10387
|
minWidth: 500,
|
|
@@ -10279,7 +10391,9 @@
|
|
|
10279
10391
|
hasPadding: true,
|
|
10280
10392
|
onClose: this.onClose,
|
|
10281
10393
|
buttons: buttons
|
|
10282
|
-
}, this.
|
|
10394
|
+
}, this.renderTimestampFilter(), /*#__PURE__*/React__default['default'].createElement(Text, {
|
|
10395
|
+
type: "bodyLarge"
|
|
10396
|
+
}, "Select which columns to include in the export"), this.renderContent());
|
|
10283
10397
|
}
|
|
10284
10398
|
}]);
|
|
10285
10399
|
|
package/package.json
CHANGED
|
@@ -1,19 +1,31 @@
|
|
|
1
1
|
import React, { Component } from 'react';
|
|
2
2
|
import _ from 'lodash';
|
|
3
|
+
import moment from 'moment';
|
|
3
4
|
import FontAwesome from 'react-fontawesome';
|
|
4
5
|
import { CSVLink } from 'react-csv';
|
|
5
6
|
import { Popup } from './Popup';
|
|
6
7
|
import { CheckBox } from './CheckBox';
|
|
8
|
+
import { GenericInput } from './GenericInput';
|
|
9
|
+
import { DatePicker } from './DatePicker';
|
|
10
|
+
import { Text } from './Text';
|
|
7
11
|
|
|
8
12
|
class ExportCsvPopup extends Component {
|
|
9
13
|
constructor(props) {
|
|
10
14
|
super(props);
|
|
11
15
|
|
|
12
|
-
|
|
16
|
+
const state = {
|
|
13
17
|
columns: props.columns,
|
|
18
|
+
selectedHeaders: props.columns.filter((c) => c.key && c.selected),
|
|
14
19
|
selectedSource: [],
|
|
15
20
|
saving: false,
|
|
16
21
|
};
|
|
22
|
+
|
|
23
|
+
if (props.timestampFilter) {
|
|
24
|
+
state.filterDateStart = props.timestampFilter.startDate;
|
|
25
|
+
state.filterDateEnd = props.timestampFilter.endDate;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
this.state = state;
|
|
17
29
|
}
|
|
18
30
|
|
|
19
31
|
canSave = () => {
|
|
@@ -29,19 +41,106 @@ class ExportCsvPopup extends Component {
|
|
|
29
41
|
};
|
|
30
42
|
|
|
31
43
|
onToggleColumn = (key) => {
|
|
32
|
-
const { source } = this.props;
|
|
33
44
|
const columns = _.cloneDeep(this.state.columns);
|
|
34
45
|
const column = columns.find((c) => c.key === key);
|
|
35
46
|
if (column) {
|
|
36
47
|
column.selected = !column.selected;
|
|
37
48
|
if (!column.key) columns.map((c) => (c.selected = column.selected)); // Toggle all
|
|
38
49
|
const selectedHeaders = columns.filter((c) => c.key && c.selected);
|
|
39
|
-
|
|
40
|
-
const selectedSource = source.map((i) => _.pick(i, selectedheaderKeys));
|
|
41
|
-
this.setState({ columns, selectedHeaders, selectedSource });
|
|
50
|
+
this.setState({ columns, selectedHeaders });
|
|
42
51
|
}
|
|
43
52
|
};
|
|
44
53
|
|
|
54
|
+
onToggleStartDateFilter = () => {
|
|
55
|
+
const { filterDateStartVisible } = this.state;
|
|
56
|
+
if (filterDateStartVisible) {
|
|
57
|
+
setTimeout(() => this.setState({ filterDateStartVisible: false }), 200);
|
|
58
|
+
} else {
|
|
59
|
+
this.setState({ filterDateStartVisible: true });
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
onToggleEndDateFilter = () => {
|
|
64
|
+
const { filterDateEndVisible } = this.state;
|
|
65
|
+
if (filterDateEndVisible) {
|
|
66
|
+
setTimeout(() => this.setState({ filterDateEndVisible: false }), 200);
|
|
67
|
+
} else {
|
|
68
|
+
this.setState({ filterDateEndVisible: true });
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
onDateFilterStartChanged = (date) => {
|
|
73
|
+
const { filterDateEnd } = this.state;
|
|
74
|
+
const start = moment(date);
|
|
75
|
+
if (start.isSameOrBefore(filterDateEnd)) {
|
|
76
|
+
this.setState({ filterDateStart: start.startOf('day'), filterDateStartVisible: false });
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
onDateFilterEndChanged = (date) => {
|
|
81
|
+
const { filterDateStart } = this.state;
|
|
82
|
+
const end = moment(date);
|
|
83
|
+
if (end.isSameOrAfter(filterDateStart)) {
|
|
84
|
+
this.setState({ filterDateEnd: end.endOf('day'), filterDateEndVisible: false });
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
getSelectedSource = () => {
|
|
89
|
+
const { source } = this.props;
|
|
90
|
+
const { selectedHeaders } = this.state;
|
|
91
|
+
|
|
92
|
+
let result = source;
|
|
93
|
+
|
|
94
|
+
// apply timestamp filter
|
|
95
|
+
if (this.props.timestampFilter) {
|
|
96
|
+
const { filterDateStart, filterDateEnd } = this.state;
|
|
97
|
+
const { filterKey } = this.props.timestampFilter;
|
|
98
|
+
const minDate = filterDateStart.valueOf();
|
|
99
|
+
const maxDate = filterDateEnd.valueOf();
|
|
100
|
+
result = _.filter(source, (item) => {
|
|
101
|
+
return item[filterKey] >= minDate && item[filterKey] <= maxDate;
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// map result to columns
|
|
106
|
+
const selectedheaderKeys = selectedHeaders.map((h) => h.key);
|
|
107
|
+
return result.map((i) => _.pick(i, selectedheaderKeys));
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
renderTimestampFilter = () => {
|
|
111
|
+
if (!this.props.timestampFilter) {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
return (
|
|
115
|
+
<div>
|
|
116
|
+
<GenericInput
|
|
117
|
+
id="dateStart"
|
|
118
|
+
label="Start Date"
|
|
119
|
+
alwaysShowLabel
|
|
120
|
+
placeholder={'Select start date'}
|
|
121
|
+
value={this.state.filterDateStart.format('DD/MM/YYYY')}
|
|
122
|
+
onClick={this.onToggleStartDateFilter}
|
|
123
|
+
readOnly
|
|
124
|
+
/>
|
|
125
|
+
{this.state.filterDateStartVisible ? (
|
|
126
|
+
<DatePicker hideTop selectedDate={this.state.filterDateStart} selectDate={this.onDateFilterStartChanged} />
|
|
127
|
+
) : null}
|
|
128
|
+
<GenericInput
|
|
129
|
+
id="dateEnd"
|
|
130
|
+
label="End Date"
|
|
131
|
+
alwaysShowLabel
|
|
132
|
+
placeholder={'Select end date'}
|
|
133
|
+
value={this.state.filterDateEnd.format('DD/MM/YYYY')}
|
|
134
|
+
onClick={this.onToggleEndDateFilter}
|
|
135
|
+
readOnly
|
|
136
|
+
/>
|
|
137
|
+
{this.state.filterDateEndVisible ? (
|
|
138
|
+
<DatePicker hideTop selectedDate={this.state.filterDateEnd} selectDate={this.onDateFilterEndChanged} />
|
|
139
|
+
) : null}
|
|
140
|
+
</div>
|
|
141
|
+
);
|
|
142
|
+
};
|
|
143
|
+
|
|
45
144
|
renderContent = () => {
|
|
46
145
|
const { saving, columns } = this.state;
|
|
47
146
|
|
|
@@ -72,7 +171,7 @@ class ExportCsvPopup extends Component {
|
|
|
72
171
|
};
|
|
73
172
|
|
|
74
173
|
render() {
|
|
75
|
-
const { selectedHeaders
|
|
174
|
+
const { selectedHeaders } = this.state;
|
|
76
175
|
const { filename } = this.props;
|
|
77
176
|
|
|
78
177
|
const buttons = [
|
|
@@ -82,7 +181,7 @@ class ExportCsvPopup extends Component {
|
|
|
82
181
|
text: (
|
|
83
182
|
<CSVLink
|
|
84
183
|
headers={selectedHeaders}
|
|
85
|
-
data={
|
|
184
|
+
data={this.getSelectedSource()}
|
|
86
185
|
style={{ textDecoration: 'none', color: '#fff' }}
|
|
87
186
|
filename={filename || 'export.csv'}
|
|
88
187
|
onClick={this.onConfirm}
|
|
@@ -102,7 +201,6 @@ class ExportCsvPopup extends Component {
|
|
|
102
201
|
return (
|
|
103
202
|
<Popup
|
|
104
203
|
title="Confirm Export"
|
|
105
|
-
subtitle="Select which columns to include in the export"
|
|
106
204
|
boxClasses="flex flex-column"
|
|
107
205
|
innerClasses="flex flex-column fillSpace flex-1"
|
|
108
206
|
minWidth={500}
|
|
@@ -113,6 +211,8 @@ class ExportCsvPopup extends Component {
|
|
|
113
211
|
onClose={this.onClose}
|
|
114
212
|
buttons={buttons}
|
|
115
213
|
>
|
|
214
|
+
{this.renderTimestampFilter()}
|
|
215
|
+
<Text type="bodyLarge">Select which columns to include in the export</Text>
|
|
116
216
|
{this.renderContent()}
|
|
117
217
|
</Popup>
|
|
118
218
|
);
|