1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _isNil2 = require('ramda/src/isNil');
|
8 |
|
9 | var _isNil3 = _interopRequireDefault(_isNil2);
|
10 |
|
11 | var _filter2 = require('ramda/src/filter');
|
12 |
|
13 | var _filter3 = _interopRequireDefault(_filter2);
|
14 |
|
15 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
16 |
|
17 | var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
18 |
|
19 | var _templateObject = _taggedTemplateLiteral(['\n text-align: center;\n'], ['\n text-align: center;\n']),
|
20 | _templateObject2 = _taggedTemplateLiteral(['\n padding-left: 2em;\n padding-right: 2em;\n position: relative;\n'], ['\n padding-left: 2em;\n padding-right: 2em;\n position: relative;\n']),
|
21 | _templateObject3 = _taggedTemplateLiteral(['\n margin-top: 5px;\n margin-bottom: 3px;\n'], ['\n margin-top: 5px;\n margin-bottom: 3px;\n']);
|
22 |
|
23 | var _react = require('react');
|
24 |
|
25 | var _react2 = _interopRequireDefault(_react);
|
26 |
|
27 | var _Grid = require('@integec/grid-tools/lib/Grid');
|
28 |
|
29 | var _Grid2 = _interopRequireDefault(_Grid);
|
30 |
|
31 | var _flexRenderer = require('@integec/grid-tools/lib/flexRenderer');
|
32 |
|
33 | var _flexRenderer2 = _interopRequireDefault(_flexRenderer);
|
34 |
|
35 | var _editEngine = require('@integec/grid-tools/lib/editEngine');
|
36 |
|
37 | var freeEditEngine = _interopRequireWildcard(_editEngine);
|
38 |
|
39 | var _styledComponents = require('styled-components');
|
40 |
|
41 | var _styledComponents2 = _interopRequireDefault(_styledComponents);
|
42 |
|
43 | var _semanticUiReact = require('semantic-ui-react');
|
44 |
|
45 | var _propTypes = require('prop-types');
|
46 |
|
47 | var _propTypes2 = _interopRequireDefault(_propTypes);
|
48 |
|
49 | var _Overlay = require('./Overlay');
|
50 |
|
51 | var _Overlay2 = _interopRequireDefault(_Overlay);
|
52 |
|
53 | var _modal = require('../modal');
|
54 |
|
55 | var _gridTools = require('../grid-tools');
|
56 |
|
57 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
|
58 |
|
59 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
60 |
|
61 | function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
|
62 |
|
63 | function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
|
64 |
|
65 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
66 |
|
67 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
68 |
|
69 | function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
70 |
|
71 | function _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
72 |
|
73 |
|
74 |
|
75 |
|
76 |
|
77 | var Title = _styledComponents2.default.h3(_templateObject);
|
78 | var Container = _styledComponents2.default.div(_templateObject2);
|
79 | var Toolbar = _styledComponents2.default.div(_templateObject3);
|
80 |
|
81 | var createInitialEditInfo = function createInitialEditInfo(props) {
|
82 | return props && props.gridProps && props.gridProps.editMode === 'cell' ? freeEditEngine.generateInitialEditInfo() : undefined;
|
83 | };
|
84 |
|
85 | var Screen = function (_React$Component) {
|
86 | _inherits(Screen, _React$Component);
|
87 |
|
88 | function Screen() {
|
89 | var _ref2;
|
90 |
|
91 | var _temp, _this, _ret;
|
92 |
|
93 | _classCallCheck(this, Screen);
|
94 |
|
95 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
96 | args[_key] = arguments[_key];
|
97 | }
|
98 |
|
99 | return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref2 = Screen.__proto__ || Object.getPrototypeOf(Screen)).call.apply(_ref2, [this].concat(args))), _this), _this.state = {
|
100 | data: [],
|
101 | loading: false,
|
102 | saving: false,
|
103 | sorting: false,
|
104 | showAdd: false,
|
105 | fuzzyFilter: '',
|
106 | criteria: _this.props.initialCriteria || {},
|
107 | promptInfo: null,
|
108 | transLog: null,
|
109 | editInfo: createInitialEditInfo(_this.props)
|
110 | }, _this.onError = function (error) {
|
111 | return _this.setState({
|
112 | loading: false,
|
113 | saving: false,
|
114 | promptInfo: error,
|
115 | sorting: false
|
116 | });
|
117 | }, _this.onFuzzyFilterChange = function (fuzzyFilter) {
|
118 | return _this.setState({ fuzzyFilter: fuzzyFilter });
|
119 | }, _this.onSave = function (e) {
|
120 | var _this$props = _this.props,
|
121 | getModifyTask = _this$props.getModifyTask,
|
122 | apiTargetInfo = _this$props.apiTargetInfo,
|
123 | saveAllGridData = _this$props.saveAllGridData;
|
124 | var editInfo = _this.state.editInfo;
|
125 |
|
126 | console.log('saving ', _this.state.editInfo);
|
127 | var data = saveAllGridData ? { data: _this.state.data, editInfo: editInfo } : [].concat(_toConsumableArray(editInfo.updated), _toConsumableArray(editInfo.added));
|
128 |
|
129 | _this.setState(function (_) {
|
130 | return { saving: true };
|
131 | }, function (_) {
|
132 | return getModifyTask({
|
133 | apiTargetInfo: apiTargetInfo,
|
134 | criteria: _this.state.criteria,
|
135 | data: data
|
136 | }).fork(_this.onError,
|
137 |
|
138 | _this.onRetrieve);
|
139 | });
|
140 | }, _this.onEdit = function (_ref3) {
|
141 | var originalRow = _ref3.originalRow,
|
142 | editedRow = _ref3.editedRow;
|
143 | var _this$props2 = _this.props,
|
144 | getModifyTask = _this$props2.getModifyTask,
|
145 | getInsertTask = _this$props2.getInsertTask,
|
146 | apiTargetInfo = _this$props2.apiTargetInfo;
|
147 |
|
148 |
|
149 | if (originalRow) {
|
150 | console.log('adding row', editedRow);
|
151 | } else {
|
152 | console.log('updating row', originalRow, editedRow);
|
153 | }
|
154 |
|
155 | var getTask = originalRow === undefined ? getInsertTask || getModifyTask : getModifyTask;
|
156 |
|
157 | _this.setState(function (_) {
|
158 | return { saving: true };
|
159 | }, function (_) {
|
160 | return getTask({
|
161 | apiTargetInfo: apiTargetInfo,
|
162 | criteria: _this.state.criteria,
|
163 | data: [editedRow]
|
164 | }).fork(_this.onError,
|
165 |
|
166 | _this.onRetrieve);
|
167 | });
|
168 | }, _this.onAddRowClicked = function (_) {
|
169 | return _this.setState({ showAdd: true, addWithSelected: false });
|
170 | }, _this.onCopyRowClicked = function (_) {
|
171 | return _this.setState({ showAdd: true, addWithSelected: true });
|
172 | }, _this.confirmRemove = function (_) {
|
173 | return _this.setState({ confirm: 'Remove' });
|
174 | }, _this.cancelConfirm = function (_) {
|
175 | return _this.setState({ confirm: null });
|
176 | }, _this.doRemoveRows = function (_) {
|
177 | if (_this.selectedRows && _this.selectedRows.length > 0) {
|
178 | var _this$props3 = _this.props,
|
179 | getDeleteTask = _this$props3.getDeleteTask,
|
180 | apiTargetInfo = _this$props3.apiTargetInfo;
|
181 |
|
182 | _this.setState(function (_) {
|
183 | return { saving: true, confirm: null };
|
184 | }, function (_) {
|
185 | return getDeleteTask({
|
186 | apiTargetInfo: apiTargetInfo,
|
187 | criteria: _this.state.criteria,
|
188 | data: _this.selectedRows
|
189 | }).fork(_this.onError, _this.onRetrieve);
|
190 | });
|
191 | }
|
192 | }, _this.doConfirm = _this.doRemoveRows, _this.onEditCancel = function (_) {
|
193 | return _this.setState({ showAdd: false });
|
194 | }, _this.onHidePrompt = function (_) {
|
195 | return _this.setState({ promptInfo: undefined });
|
196 | }, _this.selectionChange = function (_ref4) {
|
197 | var selectedRows = _ref4.selectedRows,
|
198 | selectedHeaders = _ref4.selectedHeaders;
|
199 |
|
200 | _this.selectedRows = selectedRows;
|
201 | }, _this.onRetrieve = function (_) {
|
202 | var criteria = _this.state.criteria;
|
203 | var _this$props4 = _this.props,
|
204 | apiTargetInfo = _this$props4.apiTargetInfo,
|
205 | getRetrieveTask = _this$props4.getRetrieveTask;
|
206 |
|
207 | _this.setState(function (_) {
|
208 | return { saving: false, loading: true };
|
209 | }, function (_) {
|
210 | return getRetrieveTask(_extends({ apiTargetInfo: apiTargetInfo }, criteria)).fork(_this.onError, function (data) {
|
211 | _this.setState({
|
212 | data: data,
|
213 | loading: false,
|
214 | showAdd: false,
|
215 | editInfo: createInitialEditInfo(_this.props)
|
216 | });
|
217 | });
|
218 | });
|
219 | }, _this.onImport = function (_) {
|
220 | var criteria = _this.state.criteria;
|
221 | var _this$props5 = _this.props,
|
222 | apiTargetInfo = _this$props5.apiTargetInfo,
|
223 | getImportTask = _this$props5.getImportTask;
|
224 |
|
225 | _this.setState(function (_) {
|
226 | return { loading: true };
|
227 | }, function (_) {
|
228 | return getImportTask(_extends({ apiTargetInfo: apiTargetInfo }, criteria)).fork(_this.onError, function (data) {
|
229 | _this.setState({ loading: false });
|
230 | _this.onRetrieve(data);
|
231 | });
|
232 | });
|
233 | }, _this.onSubmit = function (_) {
|
234 | var criteria = _this.state.criteria;
|
235 | var _this$props6 = _this.props,
|
236 | apiTargetInfo = _this$props6.apiTargetInfo,
|
237 | getSubmitTask = _this$props6.getSubmitTask;
|
238 |
|
239 | _this.setState(function (_) {
|
240 | return { loading: true };
|
241 | }, function (_) {
|
242 | return getSubmitTask(_extends({ apiTargetInfo: apiTargetInfo }, criteria)).fork(_this.onError, function (data) {
|
243 | _this.setState({ data: data, loading: false });
|
244 |
|
245 | });
|
246 | });
|
247 | }, _this.onShowSubmitDetail = function () {
|
248 | var _this$props7 = _this.props,
|
249 | apiTargetInfo = _this$props7.apiTargetInfo,
|
250 | getShowSubmitDetailTask = _this$props7.getShowSubmitDetailTask;
|
251 |
|
252 | var extractSubmitId = function extractSubmitId(data) {
|
253 | var _ref;
|
254 |
|
255 | return (_ref = data) != null ? (_ref = _ref.submitInfo) != null ? _ref.submitTransId : _ref : _ref;
|
256 | };
|
257 | if (_this.selectedRows && _this.selectedRows.length > 0) {
|
258 | var ids = _this.selectedRows.map(extractSubmitId).filter(function (submitId) {
|
259 | return submitId != null;
|
260 | });
|
261 |
|
262 | if (ids.length > 0) {
|
263 | _this.setState(function (_) {
|
264 | return { loading: true };
|
265 | }, function (_) {
|
266 | return getShowSubmitDetailTask({
|
267 | apiTargetInfo: apiTargetInfo,
|
268 | ids: ids
|
269 | }).fork(_this.onError, _this.setTransLog);
|
270 | });
|
271 | }
|
272 | }
|
273 | }, _this.onCriteriaChange = function (data) {
|
274 | return _this.setState(function (_ref5) {
|
275 | var criteria = _ref5.criteria;
|
276 | return {
|
277 | criteria: _extends({}, criteria, data),
|
278 | data: []
|
279 | };
|
280 | });
|
281 | }, _this.getCriteriaProps = function (_) {
|
282 | return {
|
283 | data: _this.state.data,
|
284 | headers: _this.props.headers,
|
285 | loading: _this.state.loading,
|
286 | onCriteriaChange: _this.onCriteriaChange,
|
287 | onRetrieve: _this.onRetrieve,
|
288 | criteria: _this.state.criteria,
|
289 | onFuzzyFilterChange: _this.onFuzzyFilterChange,
|
290 | fuzzyFilter: _this.state.fuzzyFilter,
|
291 | onError: _this.onError,
|
292 | title: _this.props.title,
|
293 | onImport: _this.props.getImportTask ? _this.onImport : undefined,
|
294 | onSubmit: _this.props.getSubmitTask ? _this.onSubmit : undefined,
|
295 | onShowSubmitDetail: _this.props.getShowSubmitDetailTask ? _this.onShowSubmitDetail : undefined,
|
296 | hasSelectedRows: _this.selectedRows && _this.selectedRows.length > 0,
|
297 | onSave: _this.state.editInfo ? _this.onSave : undefined,
|
298 | saveEnabled: _this.state.editInfo && freeEditEngine.isDirty(_this.state.editInfo)
|
299 | };
|
300 | }, _this.setEditInfo = function (editInfo) {
|
301 | _this.setState(function (_) {
|
302 | return { editInfo: editInfo, showAdd: false };
|
303 | });
|
304 | }, _this.getGridProps = function (_) {
|
305 | var _this$state = _this.state,
|
306 | data = _this$state.data,
|
307 | showAdd = _this$state.showAdd,
|
308 | fuzzyFilter = _this$state.fuzzyFilter,
|
309 | addWithSelected = _this$state.addWithSelected,
|
310 | editInfo = _this$state.editInfo;
|
311 | var _this$props8 = _this.props,
|
312 | headers = _this$props8.headers,
|
313 | gridProps = _this$props8.gridProps,
|
314 | isEditable = _this$props8.isEditable,
|
315 | dataFilter = _this$props8.dataFilter;
|
316 |
|
317 |
|
318 | var _gridProps$render = gridProps.render,
|
319 | render = _gridProps$render === undefined ? (0, _flexRenderer2.default)() : _gridProps$render,
|
320 | _gridProps$renderRowE = gridProps.renderRowEditor,
|
321 | renderRowEditor = _gridProps$renderRowE === undefined ? (0, _gridTools.rowEditorRender)() : _gridProps$renderRowE,
|
322 | restOfGridProps = _objectWithoutProperties(gridProps, ['render', 'renderRowEditor']);
|
323 |
|
324 | return _extends({
|
325 | fuzzyFilter: fuzzyFilter,
|
326 | data: dataFilter ? (0, _filter3.default)(dataFilter, data) : data,
|
327 | headers: headers,
|
328 | render: render,
|
329 | renderRowEditor: renderRowEditor,
|
330 | onEdit: editInfo == null ? _this.onEdit : undefined,
|
331 | onSelectionChange: _this.selectionChange,
|
332 | isEditable: isEditable,
|
333 | showAdd: showAdd,
|
334 | addWithSelected: addWithSelected,
|
335 | onEditCancel: _this.onEditCancel,
|
336 | editInfo: editInfo,
|
337 | onEditInfoChange: editInfo && _this.setEditInfo
|
338 | }, restOfGridProps);
|
339 | }, _this.setTransLog = function (transLog) {
|
340 | return _this.setState({ transLog: transLog, loading: false });
|
341 | }, _temp), _possibleConstructorReturn(_this, _ret);
|
342 | }
|
343 |
|
344 | _createClass(Screen, [{
|
345 | key: 'componentDidMount',
|
346 | value: function componentDidMount() {
|
347 | var disableAutoRetrieve = this.props.disableAutoRetrieve;
|
348 |
|
349 | if (!disableAutoRetrieve) this.onRetrieve();
|
350 | }
|
351 |
|
352 |
|
353 |
|
354 | }, {
|
355 | key: 'render',
|
356 | value: function render() {
|
357 | var _state = this.state,
|
358 | data = _state.data,
|
359 | promptInfo = _state.promptInfo,
|
360 | criteria = _state.criteria,
|
361 | sorting = _state.sorting,
|
362 | saving = _state.saving,
|
363 | loading = _state.loading,
|
364 | confirm = _state.confirm,
|
365 | transLog = _state.transLog;
|
366 | var _props = this.props,
|
367 | title = _props.title,
|
368 | renderCriteria = _props.renderCriteria,
|
369 | renderPrompt = _props.renderPrompt,
|
370 | renderProcessing = _props.renderProcessing,
|
371 | renderSubmissionResponse = _props.renderSubmissionResponse,
|
372 | isEditable = _props.isEditable,
|
373 | isOnlyUpdatable = _props.isOnlyUpdatable,
|
374 | ErrorComponent = _props.ErrorComponent;
|
375 |
|
376 | var noYetRetrieved = data === undefined;
|
377 |
|
378 |
|
379 | console.log('rendering with', this.state.editInfo);
|
380 |
|
381 | return _react2.default.createElement(
|
382 | Container,
|
383 | null,
|
384 | _react2.default.createElement(
|
385 | Title,
|
386 | { 'data-testid': 'screen-title' },
|
387 | title
|
388 | ),
|
389 | renderCriteria(this.getCriteriaProps()),
|
390 | isEditable && !isOnlyUpdatable && _react2.default.createElement(
|
391 | Toolbar,
|
392 | null,
|
393 | _react2.default.createElement(
|
394 | _semanticUiReact.Button.Group,
|
395 | { color: 'grey', size: 'tiny' },
|
396 | _react2.default.createElement(
|
397 | _semanticUiReact.Button,
|
398 | { onClick: this.onAddRowClicked, id: 'add-row' },
|
399 | _react2.default.createElement(_semanticUiReact.Icon, { name: 'add square' }),
|
400 | 'New'
|
401 | ),
|
402 | _react2.default.createElement(
|
403 | _semanticUiReact.Button,
|
404 | { onClick: this.onCopyRowClicked, id: 'add-row' },
|
405 | _react2.default.createElement(_semanticUiReact.Icon, { name: 'add square' }),
|
406 | 'Copy Selected Row'
|
407 | ),
|
408 | _react2.default.createElement(
|
409 | _semanticUiReact.Button,
|
410 | { onClick: this.confirmRemove, id: 'remove-row' },
|
411 | _react2.default.createElement(_semanticUiReact.Icon, { name: 'remove circle' }),
|
412 | 'Remove'
|
413 | )
|
414 | )
|
415 | ),
|
416 | noYetRetrieved && 'Please Click on Retrieve',
|
417 | _react2.default.createElement(_Grid2.default, this.getGridProps()),
|
418 | promptInfo && renderPrompt && _react2.default.createElement(
|
419 | _Overlay2.default,
|
420 | {
|
421 | style: { paddingLeft: '10vw', paddingRight: '10vw' },
|
422 | onClose: this.onHidePrompt
|
423 | },
|
424 | renderPrompt(_extends({ promptInfo: promptInfo }, { criteria: criteria }))
|
425 | ),
|
426 | promptInfo && !renderPrompt && _react2.default.createElement(ErrorComponent, { modalInfo: promptInfo, setModalInfo: this.onHidePrompt }),
|
427 | _react2.default.createElement(_semanticUiReact.Confirm, {
|
428 | open: !(0, _isNil3.default)(confirm),
|
429 | header: 'Confirm ' + confirm + ' of selected rows',
|
430 | onCancel: this.cancelConfirm,
|
431 | confirmButton: 'Confirm ' + confirm,
|
432 | content: 'Are you sure you want to ' + confirm + ' the selected rows?',
|
433 | onConfirm: this.doConfirm
|
434 | }),
|
435 | (sorting || saving || loading) && _react2.default.createElement(
|
436 | _Overlay2.default,
|
437 | null,
|
438 | renderProcessing({ criteria: criteria })
|
439 | ),
|
440 | transLog && renderSubmissionResponse({
|
441 | transLog: transLog,
|
442 | setTransLog: this.setTransLog,
|
443 | selectedRows: this.selectedRows
|
444 | })
|
445 | );
|
446 | }
|
447 | }]);
|
448 |
|
449 | return Screen;
|
450 | }(_react2.default.Component);
|
451 |
|
452 | Screen.propTypes = {
|
453 | renderCriteria: _propTypes2.default.func.isRequired,
|
454 | title: _propTypes2.default.string.isRequired,
|
455 | headers: _propTypes2.default.array.isRequired,
|
456 |
|
457 | isEditable: _propTypes2.default.oneOfType([_propTypes2.default.func, _propTypes2.default.bool]),
|
458 | getRetrieveTask: _propTypes2.default.func.isRequired,
|
459 |
|
460 | getModifyTask: _propTypes2.default.func,
|
461 | getDeleteTask: _propTypes2.default.func,
|
462 |
|
463 | renderPrompt: _propTypes2.default.func,
|
464 | ErrorComponent: _propTypes2.default.element,
|
465 | renderProcessing: _propTypes2.default.func,
|
466 | heightOffSet: _propTypes2.default.number,
|
467 |
|
468 | gridProps: _propTypes2.default.object,
|
469 | isOnlyUpdatable: _propTypes2.default.oneOfType([_propTypes2.default.func, _propTypes2.default.bool]),
|
470 | saveAllGridData: _propTypes2.default.bool,
|
471 | dataFilter: _propTypes2.default.func
|
472 | };
|
473 | Screen.defaultProps = {
|
474 | heightOffSet: 0,
|
475 | gridProps: {},
|
476 | renderProcessing: function renderProcessing() {
|
477 | return _react2.default.createElement(_semanticUiReact.Loader, { active: true });
|
478 | },
|
479 | ErrorComponent: _modal.ErrorModal
|
480 | };
|
481 | exports.default = Screen;
|
482 |
|
\ | No newline at end of file |