1 | import { useEffect, useState } from "react";
|
2 |
|
3 | export { useCurrentRow, useData } from "./hooks/use-data";
|
4 | export {
|
5 | useSingleRecord,
|
6 | useDataWithoutState,
|
7 | useFetchData,
|
8 | useFetchRecord
|
9 | } from "./hooks/use-fetch-data";
|
10 |
|
11 | export { getData } from "./get-data";
|
12 |
|
13 | export function useCurrentIndex(dataObject) {
|
14 | const [index, setIndex] = useState(dataObject.getCurrentIndex());
|
15 |
|
16 | useEffect(() => {
|
17 | dataObject.attachEvent("onCurrentIndexChanged", setIndex);
|
18 |
|
19 | setIndex(dataObject.getCurrentIndex());
|
20 |
|
21 | return () => dataObject.detachEvent("onCurrentIndexChanged", setIndex);
|
22 | }, [dataObject]);
|
23 |
|
24 | return index;
|
25 | }
|
26 |
|
27 | export function useDirty(dataObject) {
|
28 | const [isDirty, setDirty] = useState(false);
|
29 |
|
30 | useEffect(() => {
|
31 | dataObject.attachEvent("onDirtyChanged", setDirty);
|
32 |
|
33 | setDirty(dataObject.isDirty());
|
34 |
|
35 | return () => {
|
36 | dataObject.detachEvent("onDirtyChanged", setDirty);
|
37 | };
|
38 | }, [dataObject]);
|
39 |
|
40 | return isDirty;
|
41 | }
|
42 |
|
43 | export function useError(dataObject) {
|
44 | const [loadError, setError] = useState(null);
|
45 |
|
46 | useEffect(() => {
|
47 | dataObject.attachEvent("onDataLoadFailed", setError);
|
48 |
|
49 | return () => {
|
50 | dataObject.detachEvent("onDataLoadFailed", setError);
|
51 | };
|
52 | }, [dataObject]);
|
53 |
|
54 | return loadError;
|
55 | }
|
56 |
|
57 | export function useLoading(dataObject) {
|
58 | const [isLoading, setLoading] = useState(dataObject.isDataLoading());
|
59 |
|
60 | function setIsLoading() {
|
61 | setLoading(true);
|
62 | }
|
63 |
|
64 | function setIsNotLoading() {
|
65 | setLoading(false);
|
66 | }
|
67 |
|
68 | useEffect(() => {
|
69 | dataObject.attachEvent("onBeforeLoad", setIsLoading);
|
70 | dataObject.attachEvent("onDataLoaded", setIsNotLoading);
|
71 | dataObject.attachEvent("onDataLoadFailed", setIsNotLoading);
|
72 |
|
73 | setLoading(dataObject.isDataLoading());
|
74 |
|
75 | return () => {
|
76 | dataObject.detachEvent("onBeforeLoad", setIsLoading);
|
77 | dataObject.detachEvent("onDataLoaded", setIsNotLoading);
|
78 | dataObject.detachEvent("onDataLoadFailed", setIsNotLoading);
|
79 | };
|
80 | }, [dataObject]);
|
81 |
|
82 | return isLoading;
|
83 | }
|
84 |
|
85 | export function useStatus(dataObject) {
|
86 | const [isSaving, setIsSaving] = useState(false);
|
87 | const [isDeleting, setIsDeleting] = useState(false);
|
88 |
|
89 | function setSaving() {
|
90 | setIsSaving(true);
|
91 | }
|
92 | function setNotSaving() {
|
93 | setIsSaving(false);
|
94 | }
|
95 | function setDeleting() {
|
96 | setIsDeleting(true);
|
97 | }
|
98 | function setNotDeleting() {
|
99 | setIsDeleting(false);
|
100 | }
|
101 |
|
102 | useEffect(() => {
|
103 | dataObject.attachEvent("onBeforeSave", setSaving);
|
104 | dataObject.attachEvent("onAfterSave", setNotSaving);
|
105 | dataObject.attachEvent("onSaveFailed", setNotSaving);
|
106 |
|
107 | dataObject.attachEvent("onRecordDeleting", setDeleting);
|
108 | dataObject.attachEvent("onRecordDeleted", setNotDeleting);
|
109 |
|
110 | return () => {
|
111 | dataObject.detachEvent("onBeforeSave", setSaving);
|
112 | dataObject.detachEvent("onAfterSave", setNotSaving);
|
113 | dataObject.detachEvent("onSaveFailed", setNotSaving);
|
114 |
|
115 | dataObject.detachEvent("onRecordDeleting", setDeleting);
|
116 | dataObject.detachEvent("onRecordDeleted", setNotDeleting);
|
117 | };
|
118 | }, [dataObject]);
|
119 |
|
120 | return {
|
121 | isDeleting,
|
122 | isSaving
|
123 | };
|
124 | }
|
125 |
|
126 | export function usePermissions(dataObject) {
|
127 | const [allowDelete, setAllowDelete] = useState(dataObject.isDeleteAllowed());
|
128 | const [allowInsert, setAllowInsert] = useState(dataObject.isInsertAllowed());
|
129 | const [allowUpdate, setAllowUpdate] = useState(dataObject.isUpdateAllowed());
|
130 |
|
131 | useEffect(() => {
|
132 | dataObject.attachEvent("onAllowDeleteChanged", setAllowDelete);
|
133 | dataObject.attachEvent("onAllowInsertChanged", setAllowInsert);
|
134 | dataObject.attachEvent("onAllowUpdateChanged", setAllowUpdate);
|
135 |
|
136 | return () => {
|
137 | dataObject.detachEvent("onAllowDeleteChanged", setAllowDelete);
|
138 | dataObject.detachEvent("onAllowInsertChanged", setAllowInsert);
|
139 | dataObject.detachEvent("onAllowUpdateChanged", setAllowUpdate);
|
140 | };
|
141 | }, [dataObject]);
|
142 |
|
143 | return {
|
144 | allowDelete,
|
145 | allowInsert,
|
146 | allowUpdate
|
147 | };
|
148 | }
|