UNPKG

4.06 kBJavaScriptView Raw
1import { useEffect, useState } from "react";
2
3export { useCurrentRow, useData } from "./hooks/use-data";
4export {
5 useSingleRecord,
6 useDataWithoutState,
7 useFetchData,
8 useFetchRecord
9} from "./hooks/use-fetch-data";
10
11export { getData } from "./get-data";
12
13export 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
27export 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
43export 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
57export 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
85export 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
126export 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}