UNPKG

10.6 kBJavaScriptView Raw
1import { useState, useEffect } from 'react';
2
3function _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
17function _slicedToArray(arr, i) {
18 return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
19}
20
21function _arrayWithHoles(arr) {
22 if (Array.isArray(arr)) return arr;
23}
24
25function _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
51function _nonIterableRest() {
52 throw new TypeError("Invalid attempt to destructure non-iterable instance");
53}
54
55var dataUpdateEvents = ["onFieldChanged", "onRecordCreated", "onRecordDeleted", "onRecordRefreshed", "onAfterSave", "onCancelEdit", "onDataLoaded"];
56function 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}
80function 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
104function 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
158function useSingleRecord(dataObject, filter) {
159 // eslint-disable-next-line no-console
160 console.warn("DEPRECATED: useSingleRecord has been renamed to useRecord");
161 return useFetchRecord(dataObject, filter);
162}
163function useDataWithoutState(dataObject, filter) {
164 // eslint-disable-next-line no-console
165 console.warn("DEPRECATED: useDataWithoutState has been renamed to useRecord");
166 return useFetchData(dataObject, filter);
167}
168function 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}
181function 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
215function 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}
230function 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}
245function 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}
259function 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}
286function 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}
332function 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
365export { useCurrentIndex, useDirty, useError, useLoading, useStatus, usePermissions, useCurrentRow, useData, useSingleRecord, useDataWithoutState, useFetchData, useFetchRecord, getData };