1 | (function (global, factory) {
|
2 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react')) :
|
3 | typeof define === 'function' && define.amd ? define(['exports', 'react'], factory) :
|
4 | (global = global || self, factory(global.dataObjectHooks = {}, global.React));
|
5 | }(this, function (exports, react) { 'use strict';
|
6 |
|
7 | function _typeof2(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); }
|
8 |
|
9 | function _typeof(obj) {
|
10 | if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") {
|
11 | _typeof = function _typeof(obj) {
|
12 | return _typeof2(obj);
|
13 | };
|
14 | } else {
|
15 | _typeof = function _typeof(obj) {
|
16 | return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj);
|
17 | };
|
18 | }
|
19 |
|
20 | return _typeof(obj);
|
21 | }
|
22 |
|
23 | function getData(dataObject, filter) {
|
24 | var data = window.af.data;
|
25 | var dataHandler = new data.DataProviderHandler({
|
26 | dataSourceId: dataObject.getDataSourceId(),
|
27 | timeout: 30000
|
28 | });
|
29 | var fields = dataObject.getFields();
|
30 | return new Promise(function (resolve, reject) {
|
31 | var filterData = {
|
32 | filterString: "",
|
33 | whereClause: typeof filter === "string" ? filter : "",
|
34 | whereObject: _typeof(filter) === "object" ? filter : null
|
35 | };
|
36 | dataHandler.retrieve(filterData, function (error, data) {
|
37 | if (error !== null) {
|
38 | reject(error);
|
39 | } else {
|
40 | var records = [];
|
41 | var _iteratorNormalCompletion = true;
|
42 | var _didIteratorError = false;
|
43 | var _iteratorError = undefined;
|
44 |
|
45 | try {
|
46 | for (var _iterator = data[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
47 | var item = _step.value;
|
48 | var record = {};
|
49 |
|
50 | for (var i = 0; i < item.length; i++) {
|
51 | record[fields[i].name] = item[i];
|
52 | }
|
53 |
|
54 | records.push(record);
|
55 | }
|
56 | } catch (err) {
|
57 | _didIteratorError = true;
|
58 | _iteratorError = err;
|
59 | } finally {
|
60 | try {
|
61 | if (!_iteratorNormalCompletion && _iterator.return != null) {
|
62 | _iterator.return();
|
63 | }
|
64 | } finally {
|
65 | if (_didIteratorError) {
|
66 | throw _iteratorError;
|
67 | }
|
68 | }
|
69 | }
|
70 |
|
71 | resolve(records);
|
72 | }
|
73 | });
|
74 | });
|
75 | }
|
76 |
|
77 | function _arrayWithHoles(arr) {
|
78 | if (Array.isArray(arr)) return arr;
|
79 | }
|
80 |
|
81 | function _iterableToArrayLimit(arr, i) {
|
82 | var _arr = [];
|
83 | var _n = true;
|
84 | var _d = false;
|
85 | var _e = undefined;
|
86 |
|
87 | try {
|
88 | for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
|
89 | _arr.push(_s.value);
|
90 |
|
91 | if (i && _arr.length === i) break;
|
92 | }
|
93 | } catch (err) {
|
94 | _d = true;
|
95 | _e = err;
|
96 | } finally {
|
97 | try {
|
98 | if (!_n && _i["return"] != null) _i["return"]();
|
99 | } finally {
|
100 | if (_d) throw _e;
|
101 | }
|
102 | }
|
103 |
|
104 | return _arr;
|
105 | }
|
106 |
|
107 | function _nonIterableRest() {
|
108 | throw new TypeError("Invalid attempt to destructure non-iterable instance");
|
109 | }
|
110 |
|
111 | function _slicedToArray(arr, i) {
|
112 | return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
|
113 | }
|
114 |
|
115 | function useCurrentIndex(dataObject) {
|
116 | var _useState = react.useState(dataObject.getCurrentIndex()),
|
117 | _useState2 = _slicedToArray(_useState, 2),
|
118 | index = _useState2[0],
|
119 | setIndex = _useState2[1];
|
120 |
|
121 | react.useEffect(function () {
|
122 | dataObject.attachEvent("onCurrentIndexChanged", setIndex);
|
123 | setIndex(dataObject.getCurrentIndex());
|
124 | return function () {
|
125 | return dataObject.detachEvent("onCurrentIndexChanged", setIndex);
|
126 | };
|
127 | }, [dataObject]);
|
128 | return index;
|
129 | }
|
130 |
|
131 | function _arrayWithoutHoles(arr) {
|
132 | if (Array.isArray(arr)) {
|
133 | for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
|
134 | arr2[i] = arr[i];
|
135 | }
|
136 |
|
137 | return arr2;
|
138 | }
|
139 | }
|
140 |
|
141 | function _iterableToArray(iter) {
|
142 | if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
|
143 | }
|
144 |
|
145 | function _nonIterableSpread() {
|
146 | throw new TypeError("Invalid attempt to spread non-iterable instance");
|
147 | }
|
148 |
|
149 | function _toConsumableArray(arr) {
|
150 | return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
|
151 | }
|
152 |
|
153 |
|
154 | var dataUpdateEvents = ["onFieldChanged", "onRecordCreated", "onRecordDeleted", "onRecordRefreshed", "onAfterSave", "onCancelEdit", "onDataLoaded", "onPartialDataLoaded"];
|
155 |
|
156 | function useCurrentRow(dataObject) {
|
157 | var _useState = react.useState(dataObject.currentRow() || {}),
|
158 | _useState2 = _slicedToArray(_useState, 2),
|
159 | record = _useState2[0],
|
160 | setRecord = _useState2[1];
|
161 |
|
162 | var updateRecord = react.useCallback(function () {
|
163 | return setRecord(dataObject.currentRow());
|
164 | }, [dataObject]);
|
165 | react.useEffect(function () {
|
166 | var recordUpdateEvents = ["onCurrentIndexChanged"].concat(_toConsumableArray(dataUpdateEvents));
|
167 | recordUpdateEvents.forEach(function (event) {
|
168 | return dataObject.attachEvent(event, updateRecord);
|
169 | });
|
170 | updateRecord();
|
171 | return function () {
|
172 | return recordUpdateEvents.forEach(function (event) {
|
173 | return dataObject.detachEvent(event, updateRecord);
|
174 | });
|
175 | };
|
176 | }, [dataObject, updateRecord]);
|
177 | return record;
|
178 | }
|
179 |
|
180 | function useData(dataObject) {
|
181 | var _useState = react.useState(dataObject.getData()),
|
182 | _useState2 = _slicedToArray(_useState, 2),
|
183 | data = _useState2[0],
|
184 | setData = _useState2[1];
|
185 |
|
186 | var updateData = react.useCallback(function () {
|
187 | var data = dataObject.getData();
|
188 |
|
189 | var idx = dataObject.getCurrentIndex();
|
190 |
|
191 | if (idx >= 0) {
|
192 | data[idx] = dataObject.currentRow();
|
193 | }
|
194 |
|
195 | setData(data);
|
196 | }, [dataObject]);
|
197 | react.useEffect(function () {
|
198 | dataUpdateEvents.forEach(function (event) {
|
199 | return dataObject.attachEvent(event, updateData);
|
200 | });
|
201 | updateData();
|
202 | return function () {
|
203 | return dataUpdateEvents.forEach(function (event) {
|
204 | return dataObject.detachEvent(event, updateData);
|
205 | });
|
206 | };
|
207 | }, [dataObject, updateData]);
|
208 | return data;
|
209 | }
|
210 |
|
211 | function useDataLength(dataObject) {
|
212 | var _useState = react.useState(function () {
|
213 | return dataObject.getDataLength();
|
214 | }),
|
215 | _useState2 = _slicedToArray(_useState, 2),
|
216 | length = _useState2[0],
|
217 | setLength = _useState2[1];
|
218 |
|
219 | react.useEffect(function () {
|
220 | function update() {
|
221 | setLength(dataObject.getDataLength());
|
222 | }
|
223 |
|
224 | dataObject.attachEvent("onRecordCreated", update);
|
225 | dataObject.attachEvent("onRecordDeleted", update);
|
226 | dataObject.attachEvent("onDataLoaded", update);
|
227 | dataObject.attachEvent("onPartialDataLoaded", update);
|
228 | update();
|
229 | return function () {
|
230 | dataObject.detachEvent("onRecordCreated", update);
|
231 | dataObject.detachEvent("onRecordDeleted", update);
|
232 | dataObject.detachEvent("onDataLoaded", update);
|
233 | dataObject.detachEvent("onPartialDataLoaded", update);
|
234 | };
|
235 | }, [dataObject]);
|
236 | return length;
|
237 | }
|
238 |
|
239 | var isArray = Array.isArray;
|
240 | var keyList = Object.keys;
|
241 | var hasProp = Object.prototype.hasOwnProperty;
|
242 |
|
243 | var fastDeepEqual = function equal(a, b) {
|
244 | if (a === b) return true;
|
245 |
|
246 | if (a && b && typeof a == 'object' && typeof b == 'object') {
|
247 | var arrA = isArray(a)
|
248 | , arrB = isArray(b)
|
249 | , i
|
250 | , length
|
251 | , key;
|
252 |
|
253 | if (arrA && arrB) {
|
254 | length = a.length;
|
255 | if (length != b.length) return false;
|
256 | for (i = length; i-- !== 0;)
|
257 | if (!equal(a[i], b[i])) return false;
|
258 | return true;
|
259 | }
|
260 |
|
261 | if (arrA != arrB) return false;
|
262 |
|
263 | var dateA = a instanceof Date
|
264 | , dateB = b instanceof Date;
|
265 | if (dateA != dateB) return false;
|
266 | if (dateA && dateB) return a.getTime() == b.getTime();
|
267 |
|
268 | var regexpA = a instanceof RegExp
|
269 | , regexpB = b instanceof RegExp;
|
270 | if (regexpA != regexpB) return false;
|
271 | if (regexpA && regexpB) return a.toString() == b.toString();
|
272 |
|
273 | var keys = keyList(a);
|
274 | length = keys.length;
|
275 |
|
276 | if (length !== keyList(b).length)
|
277 | return false;
|
278 |
|
279 | for (i = length; i-- !== 0;)
|
280 | if (!hasProp.call(b, keys[i])) return false;
|
281 |
|
282 | for (i = length; i-- !== 0;) {
|
283 | key = keys[i];
|
284 | if (!equal(a[key], b[key])) return false;
|
285 | }
|
286 |
|
287 | return true;
|
288 | }
|
289 |
|
290 | return a!==a && b!==b;
|
291 | };
|
292 |
|
293 | function useFilter(dataObject, filter) {
|
294 | var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "filterString";
|
295 | react.useEffect(function () {
|
296 | var current = dataObject.getParameter(type);
|
297 |
|
298 | if (filter !== false) {
|
299 | if (!fastDeepEqual(current, filter) || !dataObject.isDataLoaded() && !dataObject.isDataLoading()) {
|
300 | dataObject.setParameter(type, filter);
|
301 | dataObject.refreshDataSource();
|
302 | }
|
303 | }
|
304 | }, [dataObject, filter, type]);
|
305 | }
|
306 |
|
307 | function useDataWithFilter(dataObject, filter) {
|
308 | var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "filterString";
|
309 | var data = useData(dataObject);
|
310 | useFilter(dataObject, filter, type);
|
311 | return data;
|
312 | }
|
313 |
|
314 | function useDirty(dataObject) {
|
315 | var _useState = react.useState(dataObject.isDirty() || false),
|
316 | _useState2 = _slicedToArray(_useState, 2),
|
317 | isDirty = _useState2[0],
|
318 | setDirty = _useState2[1];
|
319 |
|
320 | react.useEffect(function () {
|
321 | dataObject.attachEvent("onDirtyChanged", setDirty);
|
322 | setDirty(dataObject.isDirty());
|
323 | return function () {
|
324 | dataObject.detachEvent("onDirtyChanged", setDirty);
|
325 | };
|
326 | }, [dataObject]);
|
327 | return isDirty;
|
328 | }
|
329 |
|
330 | function useError(dataObject) {
|
331 | var _useState = react.useState(null),
|
332 | _useState2 = _slicedToArray(_useState, 2),
|
333 | loadError = _useState2[0],
|
334 | setError = _useState2[1];
|
335 |
|
336 | react.useEffect(function () {
|
337 | dataObject.attachEvent("onDataLoadFailed", setError);
|
338 | return function () {
|
339 | dataObject.detachEvent("onDataLoadFailed", setError);
|
340 | };
|
341 | }, [dataObject]);
|
342 | return loadError;
|
343 | }
|
344 |
|
345 | function useFetchData(dataObject, filter) {
|
346 | var _useState = react.useState([]),
|
347 | _useState2 = _slicedToArray(_useState, 2),
|
348 | data = _useState2[0],
|
349 | setData = _useState2[1];
|
350 |
|
351 | var _useState3 = react.useState(false),
|
352 | _useState4 = _slicedToArray(_useState3, 2),
|
353 | shouldUpdate = _useState4[0],
|
354 | setShouldUpdate = _useState4[1];
|
355 |
|
356 | var _useState5 = react.useState(filter !== false),
|
357 | _useState6 = _slicedToArray(_useState5, 2),
|
358 | isLoading = _useState6[0],
|
359 | setIsLoading = _useState6[1];
|
360 |
|
361 | var refresh = react.useCallback(function () {
|
362 | setShouldUpdate(function (shouldUpdate) {
|
363 | return !shouldUpdate;
|
364 | });
|
365 | }, []);
|
366 | var refreshRows = react.useCallback(function (filter) {
|
367 | var idField = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "PrimKey";
|
368 | getData(dataObject, filter).then(function (records) {
|
369 | var newData = _toConsumableArray(data);
|
370 |
|
371 | var _iteratorNormalCompletion = true;
|
372 | var _didIteratorError = false;
|
373 | var _iteratorError = undefined;
|
374 |
|
375 | try {
|
376 | for (var _iterator = records[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
377 | var record = _step.value;
|
378 |
|
379 | for (var i = 0; i < newData.length; i++) {
|
380 | var current = newData[i];
|
381 |
|
382 | if (current[idField] === record[idField]) {
|
383 | newData[i] = record;
|
384 | }
|
385 | }
|
386 | }
|
387 | } catch (err) {
|
388 | _didIteratorError = true;
|
389 | _iteratorError = err;
|
390 | } finally {
|
391 | try {
|
392 | if (!_iteratorNormalCompletion && _iterator.return != null) {
|
393 | _iterator.return();
|
394 | }
|
395 | } finally {
|
396 | if (_didIteratorError) {
|
397 | throw _iteratorError;
|
398 | }
|
399 | }
|
400 | }
|
401 |
|
402 | setData(newData);
|
403 | });
|
404 | }, [dataObject, data]);
|
405 | react.useEffect(function () {
|
406 | var isCancelled = false;
|
407 |
|
408 | if (filter !== false) {
|
409 | setIsLoading(true);
|
410 | getData(dataObject, filter).then(function (data) {
|
411 | if (!isCancelled) {
|
412 | if (data.length > 0) {
|
413 | setData(data);
|
414 | } else {
|
415 | setData([]);
|
416 | }
|
417 |
|
418 | setIsLoading(false);
|
419 | }
|
420 | });
|
421 | }
|
422 |
|
423 | return function () {
|
424 | return isCancelled = true;
|
425 | };
|
426 | }, [dataObject, filter, shouldUpdate]);
|
427 | return {
|
428 | data: data,
|
429 | refresh: refresh,
|
430 | refreshRows: refreshRows,
|
431 | isLoading: isLoading
|
432 | };
|
433 | }
|
434 |
|
435 | function useFetchRecord(dataObject, filter) {
|
436 | var _useFetchData = useFetchData(dataObject, filter),
|
437 | isLoading = _useFetchData.isLoading,
|
438 | data = _useFetchData.data,
|
439 | refresh = _useFetchData.refresh;
|
440 |
|
441 | var record = data.length > 0 ? data[0] : {};
|
442 | return {
|
443 | record: record,
|
444 | refresh: refresh,
|
445 | isLoading: isLoading
|
446 | };
|
447 | }
|
448 |
|
449 | function useLoading(dataObject) {
|
450 | var _useState = react.useState(dataObject.isDataLoading()),
|
451 | _useState2 = _slicedToArray(_useState, 2),
|
452 | isLoading = _useState2[0],
|
453 | setLoading = _useState2[1];
|
454 |
|
455 | function setIsLoading() {
|
456 | setLoading(true);
|
457 | }
|
458 |
|
459 | function setIsNotLoading() {
|
460 | setLoading(false);
|
461 | }
|
462 |
|
463 | react.useEffect(function () {
|
464 | dataObject.attachEvent("onBeforeLoad", setIsLoading);
|
465 | dataObject.attachEvent("onDataLoaded", setIsNotLoading);
|
466 | dataObject.attachEvent("onDataLoadFailed", setIsNotLoading);
|
467 | dataObject.attachEvent("onPartialDataLoaded", setIsNotLoading);
|
468 | setLoading(dataObject.isDataLoading());
|
469 | return function () {
|
470 | dataObject.detachEvent("onBeforeLoad", setIsLoading);
|
471 | dataObject.detachEvent("onDataLoaded", setIsNotLoading);
|
472 | dataObject.detachEvent("onDataLoadFailed", setIsNotLoading);
|
473 | dataObject.detachEvent("onPartialDataLoaded", setIsNotLoading);
|
474 | };
|
475 | }, [dataObject]);
|
476 | return isLoading;
|
477 | }
|
478 |
|
479 | function getCurrentData(dataObject) {
|
480 | return dataObject.getPagingComponent().getCurrentData() || [];
|
481 | }
|
482 |
|
483 | function usePagedData(dataObject) {
|
484 | var _useState = react.useState(function () {
|
485 | return getCurrentData(dataObject);
|
486 | }),
|
487 | _useState2 = _slicedToArray(_useState, 2),
|
488 | currentData = _useState2[0],
|
489 | setCurrentData = _useState2[1];
|
490 |
|
491 | react.useEffect(function () {
|
492 | function updateData() {
|
493 | setCurrentData(_toConsumableArray(getCurrentData(dataObject)));
|
494 | }
|
495 |
|
496 | dataUpdateEvents.forEach(function (event) {
|
497 | return dataObject.attachEvent(event, updateData);
|
498 | });
|
499 | var pagingComponent = dataObject.getPagingComponent();
|
500 | pagingComponent.attach("on", "pageChange", updateData);
|
501 | pagingComponent.attach("on", "pageRefresh", updateData);
|
502 | updateData();
|
503 | return function () {
|
504 | dataUpdateEvents.forEach(function (event) {
|
505 | return dataObject.detachEvent(event, updateData);
|
506 | });
|
507 | pagingComponent.detach("on", "pageChange", updateData);
|
508 | pagingComponent.detach("on", "pageRefresh", updateData);
|
509 | };
|
510 | }, [dataObject]);
|
511 | return currentData;
|
512 | }
|
513 |
|
514 | function usePagedDataWithFilter(dataObject, filter) {
|
515 | var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "filterString";
|
516 | var data = usePagedData(dataObject);
|
517 | useFilter(dataObject, filter, type);
|
518 | return data;
|
519 | }
|
520 |
|
521 | function usePaging(dataObject) {
|
522 | var _useState = react.useState(function () {
|
523 | return dataObject.getPagingComponent().getCurrentPage();
|
524 | }),
|
525 | _useState2 = _slicedToArray(_useState, 2),
|
526 | page = _useState2[0],
|
527 | setPage = _useState2[1];
|
528 |
|
529 | var _useState3 = react.useState(function () {
|
530 | return dataObject.getPagingComponent().getPageCount();
|
531 | }),
|
532 | _useState4 = _slicedToArray(_useState3, 2),
|
533 | pageCount = _useState4[0],
|
534 | setPageCount = _useState4[1];
|
535 |
|
536 | react.useEffect(function () {
|
537 | var paging = dataObject.getPagingComponent();
|
538 |
|
539 | var updateCurrentPage = function updateCurrentPage() {
|
540 | return setPage(paging.getCurrentPage());
|
541 | };
|
542 |
|
543 | var updatePageCount = function updatePageCount() {
|
544 | return setPageCount(paging.getPageCount());
|
545 | };
|
546 |
|
547 | paging.attach("on", "pageChange", updateCurrentPage);
|
548 | paging.attach("on", "pageCountChange", updatePageCount);
|
549 | return function () {
|
550 | paging.detach("on", "pageChange", updateCurrentPage);
|
551 | paging.detach("on", "pageCountChange", updatePageCount);
|
552 | };
|
553 | }, [dataObject]);
|
554 | return {
|
555 | page: page,
|
556 | pageCount: pageCount,
|
557 | changePage: dataObject.getPagingComponent().changePage
|
558 | };
|
559 | }
|
560 |
|
561 | function useParameter(dataObject, parameter) {
|
562 | var _useState = react.useState(function () {
|
563 | return dataObject.getParameter(parameter);
|
564 | }),
|
565 | _useState2 = _slicedToArray(_useState, 2),
|
566 | value = _useState2[0],
|
567 | setValue = _useState2[1];
|
568 |
|
569 | react.useEffect(function () {
|
570 | function update() {
|
571 | setValue(dataObject.getParameter(parameter));
|
572 | }
|
573 |
|
574 | dataObject.attachEvent("onParameterUpdated", update);
|
575 | update();
|
576 | return function () {
|
577 | dataObject.detachEvent("onParameterUpdated", update);
|
578 | };
|
579 | }, [dataObject, parameter]);
|
580 | return value;
|
581 | }
|
582 |
|
583 | function usePermissions(dataObject) {
|
584 | var _useState = react.useState(dataObject.isDeleteAllowed()),
|
585 | _useState2 = _slicedToArray(_useState, 2),
|
586 | allowDelete = _useState2[0],
|
587 | setAllowDelete = _useState2[1];
|
588 |
|
589 | var _useState3 = react.useState(dataObject.isInsertAllowed()),
|
590 | _useState4 = _slicedToArray(_useState3, 2),
|
591 | allowInsert = _useState4[0],
|
592 | setAllowInsert = _useState4[1];
|
593 |
|
594 | var _useState5 = react.useState(dataObject.isUpdateAllowed()),
|
595 | _useState6 = _slicedToArray(_useState5, 2),
|
596 | allowUpdate = _useState6[0],
|
597 | setAllowUpdate = _useState6[1];
|
598 |
|
599 | react.useEffect(function () {
|
600 | var updateAllowDelete = function updateAllowDelete() {
|
601 | return setAllowDelete(dataObject.isDeleteAllowed());
|
602 | };
|
603 |
|
604 | var updateAllowInsert = function updateAllowInsert() {
|
605 | return setAllowInsert(dataObject.isInsertAllowed());
|
606 | };
|
607 |
|
608 | var updateAllowUpdate = function updateAllowUpdate() {
|
609 | return setAllowUpdate(dataObject.isUpdateAllowed());
|
610 | };
|
611 |
|
612 | dataObject.attachEvent("onAllowDeleteChanged", updateAllowDelete);
|
613 | dataObject.attachEvent("onAllowInsertChanged", updateAllowInsert);
|
614 | dataObject.attachEvent("onAllowUpdateChanged", updateAllowUpdate);
|
615 | updateAllowDelete();
|
616 | updateAllowInsert();
|
617 | updateAllowUpdate();
|
618 | return function () {
|
619 | dataObject.detachEvent("onAllowDeleteChanged", updateAllowDelete);
|
620 | dataObject.detachEvent("onAllowInsertChanged", updateAllowInsert);
|
621 | dataObject.detachEvent("onAllowUpdateChanged", updateAllowUpdate);
|
622 | };
|
623 | }, [dataObject]);
|
624 | return {
|
625 | allowDelete: allowDelete,
|
626 | allowInsert: allowInsert,
|
627 | allowUpdate: allowUpdate
|
628 | };
|
629 | }
|
630 |
|
631 | function useDeepCompareMemoize(value) {
|
632 | var ref = react.useRef();
|
633 |
|
634 | if (!fastDeepEqual(value, ref.current)) {
|
635 | ref.current = value;
|
636 | }
|
637 |
|
638 | return ref.current;
|
639 | }
|
640 |
|
641 | function useDeepCompareEffect(callback, dependencies) {
|
642 | react.useEffect(callback, useDeepCompareMemoize(dependencies));
|
643 | }
|
644 | function useProcedure(procedure, params) {
|
645 | var _useState = react.useState([]),
|
646 | _useState2 = _slicedToArray(_useState, 2),
|
647 | data = _useState2[0],
|
648 | setData = _useState2[1];
|
649 |
|
650 | var _useState3 = react.useState(null),
|
651 | _useState4 = _slicedToArray(_useState3, 2),
|
652 | error = _useState4[0],
|
653 | setError = _useState4[1];
|
654 |
|
655 | var _useState5 = react.useState(false),
|
656 | _useState6 = _slicedToArray(_useState5, 2),
|
657 | isExecuting = _useState6[0],
|
658 | setIsExecuting = _useState6[1];
|
659 |
|
660 | useDeepCompareEffect(function () {
|
661 | var isAborted = false;
|
662 |
|
663 | if (params && procedure) {
|
664 | setIsExecuting(true);
|
665 | procedure.execute(params, function (err, data) {
|
666 | if (!isAborted) {
|
667 | setIsExecuting(false);
|
668 |
|
669 | if (err) {
|
670 | setError(err);
|
671 | setData([]);
|
672 | } else {
|
673 | setData(data);
|
674 | setError(null);
|
675 | }
|
676 | }
|
677 | });
|
678 | }
|
679 |
|
680 | return function () {
|
681 | isAborted = true;
|
682 | };
|
683 | }, [procedure, params]);
|
684 | return {
|
685 | data: data,
|
686 | error: error,
|
687 | isExecuting: isExecuting
|
688 | };
|
689 | }
|
690 |
|
691 | function useStatus(dataObject) {
|
692 | var _useState = react.useState(false),
|
693 | _useState2 = _slicedToArray(_useState, 2),
|
694 | isSaving = _useState2[0],
|
695 | setIsSaving = _useState2[1];
|
696 |
|
697 | var _useState3 = react.useState(false),
|
698 | _useState4 = _slicedToArray(_useState3, 2),
|
699 | isDeleting = _useState4[0],
|
700 | setIsDeleting = _useState4[1];
|
701 |
|
702 | function setSaving() {
|
703 | setIsSaving(true);
|
704 | }
|
705 |
|
706 | function setNotSaving() {
|
707 | setIsSaving(false);
|
708 | }
|
709 |
|
710 | function setDeleting() {
|
711 | setIsDeleting(true);
|
712 | }
|
713 |
|
714 | function setNotDeleting() {
|
715 | setIsDeleting(false);
|
716 | }
|
717 |
|
718 | react.useEffect(function () {
|
719 | dataObject.attachEvent("onBeforeSave", setSaving);
|
720 | dataObject.attachEvent("onAfterSave", setNotSaving);
|
721 | dataObject.attachEvent("onSaveFailed", setNotSaving);
|
722 | dataObject.attachEvent("onRecordDeleting", setDeleting);
|
723 | dataObject.attachEvent("onRecordDeleted", setNotDeleting);
|
724 | return function () {
|
725 | dataObject.detachEvent("onBeforeSave", setSaving);
|
726 | dataObject.detachEvent("onAfterSave", setNotSaving);
|
727 | dataObject.detachEvent("onSaveFailed", setNotSaving);
|
728 | dataObject.detachEvent("onRecordDeleting", setDeleting);
|
729 | dataObject.detachEvent("onRecordDeleted", setNotDeleting);
|
730 | };
|
731 | }, [dataObject]);
|
732 | return {
|
733 | isDeleting: isDeleting,
|
734 | isSaving: isSaving
|
735 | };
|
736 | }
|
737 |
|
738 | exports.getData = getData;
|
739 | exports.useCurrentIndex = useCurrentIndex;
|
740 | exports.useCurrentRow = useCurrentRow;
|
741 | exports.useData = useData;
|
742 | exports.useDataLength = useDataLength;
|
743 | exports.useDataWithFilter = useDataWithFilter;
|
744 | exports.useDirty = useDirty;
|
745 | exports.useError = useError;
|
746 | exports.useFetchData = useFetchData;
|
747 | exports.useFetchRecord = useFetchRecord;
|
748 | exports.useFilter = useFilter;
|
749 | exports.useLoading = useLoading;
|
750 | exports.usePagedData = usePagedData;
|
751 | exports.usePagedDataWithFilter = usePagedDataWithFilter;
|
752 | exports.usePaging = usePaging;
|
753 | exports.useParameter = useParameter;
|
754 | exports.usePermissions = usePermissions;
|
755 | exports.useProcedure = useProcedure;
|
756 | exports.useStatus = useStatus;
|
757 |
|
758 | Object.defineProperty(exports, '__esModule', { value: true });
|
759 |
|
760 | }));
|