1 | import { useState, useEffect } from 'react';
|
2 |
|
3 | function _typeof(obj) {
|
4 | if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
|
5 | _typeof = function (obj) {
|
6 | return typeof obj;
|
7 | };
|
8 | } else {
|
9 | _typeof = function (obj) {
|
10 | return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
11 | };
|
12 | }
|
13 |
|
14 | return _typeof(obj);
|
15 | }
|
16 |
|
17 | function _slicedToArray(arr, i) {
|
18 | return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
|
19 | }
|
20 |
|
21 | function _arrayWithHoles(arr) {
|
22 | if (Array.isArray(arr)) return arr;
|
23 | }
|
24 |
|
25 | function _iterableToArrayLimit(arr, i) {
|
26 | var _arr = [];
|
27 | var _n = true;
|
28 | var _d = false;
|
29 | var _e = undefined;
|
30 |
|
31 | try {
|
32 | for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
|
33 | _arr.push(_s.value);
|
34 |
|
35 | if (i && _arr.length === i) break;
|
36 | }
|
37 | } catch (err) {
|
38 | _d = true;
|
39 | _e = err;
|
40 | } finally {
|
41 | try {
|
42 | if (!_n && _i["return"] != null) _i["return"]();
|
43 | } finally {
|
44 | if (_d) throw _e;
|
45 | }
|
46 | }
|
47 |
|
48 | return _arr;
|
49 | }
|
50 |
|
51 | function _nonIterableRest() {
|
52 | throw new TypeError("Invalid attempt to destructure non-iterable instance");
|
53 | }
|
54 |
|
55 | var dataUpdateEvents = ["onFieldChanged", "onRecordCreated", "onRecordDeleted", "onRecordRefreshed", "onAfterSave", "onCancelEdit", "onDataLoaded"];
|
56 | function useCurrentRow(dataObject) {
|
57 | var _useState = useState({}),
|
58 | _useState2 = _slicedToArray(_useState, 2),
|
59 | record = _useState2[0],
|
60 | setRecord = _useState2[1];
|
61 |
|
62 | function updateRecord() {
|
63 | setRecord(dataObject.currentRow());
|
64 | }
|
65 |
|
66 | useEffect(function () {
|
67 | var recordUpdateEvents = ["onCurrentIndexChanged"].concat(dataUpdateEvents);
|
68 | recordUpdateEvents.forEach(function (event) {
|
69 | return dataObject.attachEvent(event, updateRecord);
|
70 | });
|
71 | updateRecord();
|
72 | return function () {
|
73 | return recordUpdateEvents.forEach(function (event) {
|
74 | return dataObject.detachEvent(event, updateRecord);
|
75 | });
|
76 | };
|
77 | }, [dataObject]);
|
78 | return record;
|
79 | }
|
80 | function useData(dataObject) {
|
81 | var _useState3 = useState([]),
|
82 | _useState4 = _slicedToArray(_useState3, 2),
|
83 | data = _useState4[0],
|
84 | setData = _useState4[1];
|
85 |
|
86 | function updateData() {
|
87 | setData(dataObject.getData());
|
88 | }
|
89 |
|
90 | useEffect(function () {
|
91 | dataUpdateEvents.forEach(function (event) {
|
92 | return dataObject.attachEvent(event, updateData);
|
93 | });
|
94 | updateData();
|
95 | return function () {
|
96 | return dataUpdateEvents.forEach(function (event) {
|
97 | return dataObject.detachEvent(event, updateData);
|
98 | });
|
99 | };
|
100 | }, [dataObject]);
|
101 | return data;
|
102 | }
|
103 |
|
104 | function getData(dataObject, filter) {
|
105 | var data = window.af.data;
|
106 | var dataHandler = new data.DataProviderHandler({
|
107 | dataSourceId: dataObject.getDataSourceId(),
|
108 | timeout: 30000
|
109 | });
|
110 | var fields = dataObject.getFields();
|
111 | return new Promise(function (resolve, reject) {
|
112 | var filterData = {
|
113 | filterString: "",
|
114 | whereClause: typeof filter === "string" ? filter : "",
|
115 | whereObject: _typeof(filter) === "object" ? filter : null
|
116 | };
|
117 | dataHandler.retrieve(filterData, function (error, data) {
|
118 | if (error !== null) {
|
119 | reject(error);
|
120 | } else {
|
121 | var records = [];
|
122 | var _iteratorNormalCompletion = true;
|
123 | var _didIteratorError = false;
|
124 | var _iteratorError = undefined;
|
125 |
|
126 | try {
|
127 | for (var _iterator = data[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
128 | var item = _step.value;
|
129 | var record = {};
|
130 |
|
131 | for (var i = 0; i < item.length; i++) {
|
132 | record[fields[i].name] = item[i];
|
133 | }
|
134 |
|
135 | records.push(record);
|
136 | }
|
137 | } catch (err) {
|
138 | _didIteratorError = true;
|
139 | _iteratorError = err;
|
140 | } finally {
|
141 | try {
|
142 | if (!_iteratorNormalCompletion && _iterator.return != null) {
|
143 | _iterator.return();
|
144 | }
|
145 | } finally {
|
146 | if (_didIteratorError) {
|
147 | throw _iteratorError;
|
148 | }
|
149 | }
|
150 | }
|
151 |
|
152 | resolve(records);
|
153 | }
|
154 | });
|
155 | });
|
156 | }
|
157 |
|
158 | function useSingleRecord(dataObject, filter) {
|
159 |
|
160 | console.warn("DEPRECATED: useSingleRecord has been renamed to useRecord");
|
161 | return useFetchRecord(dataObject, filter);
|
162 | }
|
163 | function useDataWithoutState(dataObject, filter) {
|
164 |
|
165 | console.warn("DEPRECATED: useDataWithoutState has been renamed to useRecord");
|
166 | return useFetchData(dataObject, filter);
|
167 | }
|
168 | function useFetchRecord(dataObject, filter) {
|
169 | var _useFetchData = useFetchData(dataObject, filter),
|
170 | isLoading = _useFetchData.isLoading,
|
171 | data = _useFetchData.data,
|
172 | refresh = _useFetchData.refresh;
|
173 |
|
174 | var record = data.length > 0 ? data[0] : {};
|
175 | return {
|
176 | record: record,
|
177 | refresh: refresh,
|
178 | isLoading: isLoading
|
179 | };
|
180 | }
|
181 | function useFetchData(dataObject, filter) {
|
182 | var _useState = useState([]),
|
183 | _useState2 = _slicedToArray(_useState, 2),
|
184 | data = _useState2[0],
|
185 | setData = _useState2[1];
|
186 |
|
187 | var _useState3 = useState(true),
|
188 | _useState4 = _slicedToArray(_useState3, 2),
|
189 | isLoading = _useState4[0],
|
190 | setIsLoading = _useState4[1];
|
191 |
|
192 | function refresh() {
|
193 | setIsLoading(true);
|
194 | getData(dataObject, filter).then(function (data) {
|
195 | if (data.length > 0) {
|
196 | setData(data);
|
197 | } else {
|
198 | setData([]);
|
199 | }
|
200 |
|
201 | setIsLoading(false);
|
202 | });
|
203 | }
|
204 |
|
205 | useEffect(function () {
|
206 | refresh();
|
207 | }, [dataObject, filter]);
|
208 | return {
|
209 | data: data,
|
210 | refresh: refresh,
|
211 | isLoading: isLoading
|
212 | };
|
213 | }
|
214 |
|
215 | function useCurrentIndex(dataObject) {
|
216 | var _useState = useState(dataObject.getCurrentIndex()),
|
217 | _useState2 = _slicedToArray(_useState, 2),
|
218 | index = _useState2[0],
|
219 | setIndex = _useState2[1];
|
220 |
|
221 | useEffect(function () {
|
222 | dataObject.attachEvent("onCurrentIndexChanged", setIndex);
|
223 | setIndex(dataObject.getCurrentIndex());
|
224 | return function () {
|
225 | return dataObject.detachEvent("onCurrentIndexChanged", setIndex);
|
226 | };
|
227 | }, [dataObject]);
|
228 | return index;
|
229 | }
|
230 | function useDirty(dataObject) {
|
231 | var _useState3 = useState(false),
|
232 | _useState4 = _slicedToArray(_useState3, 2),
|
233 | isDirty = _useState4[0],
|
234 | setDirty = _useState4[1];
|
235 |
|
236 | useEffect(function () {
|
237 | dataObject.attachEvent("onDirtyChanged", setDirty);
|
238 | setDirty(dataObject.isDirty());
|
239 | return function () {
|
240 | dataObject.detachEvent("onDirtyChanged", setDirty);
|
241 | };
|
242 | }, [dataObject]);
|
243 | return isDirty;
|
244 | }
|
245 | function useError(dataObject) {
|
246 | var _useState5 = useState(null),
|
247 | _useState6 = _slicedToArray(_useState5, 2),
|
248 | loadError = _useState6[0],
|
249 | setError = _useState6[1];
|
250 |
|
251 | useEffect(function () {
|
252 | dataObject.attachEvent("onDataLoadFailed", setError);
|
253 | return function () {
|
254 | dataObject.detachEvent("onDataLoadFailed", setError);
|
255 | };
|
256 | }, [dataObject]);
|
257 | return loadError;
|
258 | }
|
259 | function useLoading(dataObject) {
|
260 | var _useState7 = useState(dataObject.isDataLoading()),
|
261 | _useState8 = _slicedToArray(_useState7, 2),
|
262 | isLoading = _useState8[0],
|
263 | setLoading = _useState8[1];
|
264 |
|
265 | function setIsLoading() {
|
266 | setLoading(true);
|
267 | }
|
268 |
|
269 | function setIsNotLoading() {
|
270 | setLoading(false);
|
271 | }
|
272 |
|
273 | useEffect(function () {
|
274 | dataObject.attachEvent("onBeforeLoad", setIsLoading);
|
275 | dataObject.attachEvent("onDataLoaded", setIsNotLoading);
|
276 | dataObject.attachEvent("onDataLoadFailed", setIsNotLoading);
|
277 | setLoading(dataObject.isDataLoading());
|
278 | return function () {
|
279 | dataObject.detachEvent("onBeforeLoad", setIsLoading);
|
280 | dataObject.detachEvent("onDataLoaded", setIsNotLoading);
|
281 | dataObject.detachEvent("onDataLoadFailed", setIsNotLoading);
|
282 | };
|
283 | }, [dataObject]);
|
284 | return isLoading;
|
285 | }
|
286 | function useStatus(dataObject) {
|
287 | var _useState9 = useState(false),
|
288 | _useState10 = _slicedToArray(_useState9, 2),
|
289 | isSaving = _useState10[0],
|
290 | setIsSaving = _useState10[1];
|
291 |
|
292 | var _useState11 = useState(false),
|
293 | _useState12 = _slicedToArray(_useState11, 2),
|
294 | isDeleting = _useState12[0],
|
295 | setIsDeleting = _useState12[1];
|
296 |
|
297 | function setSaving() {
|
298 | setIsSaving(true);
|
299 | }
|
300 |
|
301 | function setNotSaving() {
|
302 | setIsSaving(false);
|
303 | }
|
304 |
|
305 | function setDeleting() {
|
306 | setIsDeleting(true);
|
307 | }
|
308 |
|
309 | function setNotDeleting() {
|
310 | setIsDeleting(false);
|
311 | }
|
312 |
|
313 | useEffect(function () {
|
314 | dataObject.attachEvent("onBeforeSave", setSaving);
|
315 | dataObject.attachEvent("onAfterSave", setNotSaving);
|
316 | dataObject.attachEvent("onSaveFailed", setNotSaving);
|
317 | dataObject.attachEvent("onRecordDeleting", setDeleting);
|
318 | dataObject.attachEvent("onRecordDeleted", setNotDeleting);
|
319 | return function () {
|
320 | dataObject.detachEvent("onBeforeSave", setSaving);
|
321 | dataObject.detachEvent("onAfterSave", setNotSaving);
|
322 | dataObject.detachEvent("onSaveFailed", setNotSaving);
|
323 | dataObject.detachEvent("onRecordDeleting", setDeleting);
|
324 | dataObject.detachEvent("onRecordDeleted", setNotDeleting);
|
325 | };
|
326 | }, [dataObject]);
|
327 | return {
|
328 | isDeleting: isDeleting,
|
329 | isSaving: isSaving
|
330 | };
|
331 | }
|
332 | function usePermissions(dataObject) {
|
333 | var _useState13 = useState(dataObject.isDeleteAllowed()),
|
334 | _useState14 = _slicedToArray(_useState13, 2),
|
335 | allowDelete = _useState14[0],
|
336 | setAllowDelete = _useState14[1];
|
337 |
|
338 | var _useState15 = useState(dataObject.isInsertAllowed()),
|
339 | _useState16 = _slicedToArray(_useState15, 2),
|
340 | allowInsert = _useState16[0],
|
341 | setAllowInsert = _useState16[1];
|
342 |
|
343 | var _useState17 = useState(dataObject.isUpdateAllowed()),
|
344 | _useState18 = _slicedToArray(_useState17, 2),
|
345 | allowUpdate = _useState18[0],
|
346 | setAllowUpdate = _useState18[1];
|
347 |
|
348 | useEffect(function () {
|
349 | dataObject.attachEvent("onAllowDeleteChanged", setAllowDelete);
|
350 | dataObject.attachEvent("onAllowInsertChanged", setAllowInsert);
|
351 | dataObject.attachEvent("onAllowUpdateChanged", setAllowUpdate);
|
352 | return function () {
|
353 | dataObject.detachEvent("onAllowDeleteChanged", setAllowDelete);
|
354 | dataObject.detachEvent("onAllowInsertChanged", setAllowInsert);
|
355 | dataObject.detachEvent("onAllowUpdateChanged", setAllowUpdate);
|
356 | };
|
357 | }, [dataObject]);
|
358 | return {
|
359 | allowDelete: allowDelete,
|
360 | allowInsert: allowInsert,
|
361 | allowUpdate: allowUpdate
|
362 | };
|
363 | }
|
364 |
|
365 | export { useCurrentIndex, useDirty, useError, useLoading, useStatus, usePermissions, useCurrentRow, useData, useSingleRecord, useDataWithoutState, useFetchData, useFetchRecord, getData };
|