drf-react-by-schema 0.24.4 → 0.24.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/@types/index.d.ts +136 -87
- package/dist/@types/index.d.ts.map +1 -1
- package/dist/@types/index.js +7 -0
- package/dist/api.d.ts +24 -17
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +612 -572
- package/dist/components/DataGridBySchemaEditable/DataGridDesktop.d.ts +19 -19
- package/dist/components/DataGridBySchemaEditable/DataGridDesktop.d.ts.map +1 -1
- package/dist/components/DataGridBySchemaEditable/DataGridDesktop.js +7 -7
- package/dist/components/DataGridBySchemaEditable/DataGridMobile.d.ts +2 -2
- package/dist/components/DataGridBySchemaEditable/DataGridMobile.d.ts.map +1 -1
- package/dist/components/DataGridBySchemaEditable/SelectEditInputCell.d.ts +1 -1
- package/dist/components/DataGridBySchemaEditable/SelectEditInputCell.d.ts.map +1 -1
- package/dist/components/DataGridBySchemaEditable/hooks/useDataGridActions.d.ts +12 -12
- package/dist/components/DataGridBySchemaEditable/hooks/useDataGridActions.d.ts.map +1 -1
- package/dist/components/DataGridBySchemaEditable/hooks/useOptionsAC.d.ts +8 -8
- package/dist/components/DataGridBySchemaEditable/hooks/useOptionsAC.d.ts.map +1 -1
- package/dist/components/DataGridBySchemaEditable/hooks/useOptionsAC.js +10 -5
- package/dist/components/DataGridBySchemaEditable/hooks/usePreparedColumns.d.ts +4 -4
- package/dist/components/DataGridBySchemaEditable/hooks/usePreparedColumns.d.ts.map +1 -1
- package/dist/components/DataGridBySchemaEditable/hooks/useProcessRowUpdate.d.ts +13 -13
- package/dist/components/DataGridBySchemaEditable/hooks/useProcessRowUpdate.d.ts.map +1 -1
- package/dist/components/DataGridBySchemaEditable/hooks/useProcessRowUpdate.js +156 -153
- package/dist/components/DataGridBySchemaEditable/utils/columnFactory.d.ts +11 -12
- package/dist/components/DataGridBySchemaEditable/utils/columnFactory.d.ts.map +1 -1
- package/dist/components/DataGridBySchemaEditable/utils/columnFactory.js +150 -148
- package/dist/components/DataGridBySchemaEditable/utils.d.ts +1 -1
- package/dist/components/DataGridBySchemaEditable/utils.d.ts.map +1 -1
- package/dist/components/DataGridBySchemaEditable/utils.js +4 -4
- package/dist/components/DataGridBySchemaEditable.d.ts +17 -17
- package/dist/components/DataGridBySchemaEditable.d.ts.map +1 -1
- package/dist/components/DataGridBySchemaEditable.js +44 -24
- package/dist/components/DataTotals.d.ts.map +1 -1
- package/dist/components/DataTotalsServer.d.ts +1 -1
- package/dist/components/DataTotalsServer.d.ts.map +1 -1
- package/dist/components/DataTotalsServer.js +7 -10
- package/dist/components/GenericModelList.d.ts +16 -18
- package/dist/components/GenericModelList.d.ts.map +1 -1
- package/dist/components/GenericModelList.js +2 -1
- package/dist/components/GenericRelatedModelList.d.ts +15 -16
- package/dist/components/GenericRelatedModelList.d.ts.map +1 -1
- package/dist/components/GenericRelatedModelList.js +2 -2
- package/dist/components/GenericRelatedModelListTable.d.ts +14 -14
- package/dist/components/GenericRelatedModelListTable.d.ts.map +1 -1
- package/dist/components/GenericRelatedModelListTable.js +3 -2
- package/dist/components/details/DetailBySchema.d.ts +1 -1
- package/dist/components/details/DetailBySchema.d.ts.map +1 -1
- package/dist/components/details/DetailBySchema.js +1 -1
- package/dist/components/forms/DialogFormBySchema.d.ts +8 -8
- package/dist/components/forms/DialogFormBySchema.d.ts.map +1 -1
- package/dist/components/forms/DialogFormBySchema.js +1 -1
- package/dist/components/forms/FieldBySchema.d.ts.map +1 -1
- package/dist/components/forms/FieldBySchema.js +4 -4
- package/dist/components/forms/Form.d.ts +35 -19
- package/dist/components/forms/Form.d.ts.map +1 -1
- package/dist/components/forms/Form.js +119 -60
- package/dist/components/forms/FormActions.d.ts +2 -1
- package/dist/components/forms/FormActions.d.ts.map +1 -1
- package/dist/components/forms/FormActions.js +14 -6
- package/dist/components/forms/FormBySchema.d.ts +11 -12
- package/dist/components/forms/FormBySchema.d.ts.map +1 -1
- package/dist/components/forms/FormBySchema.js +20 -13
- package/dist/components/forms/FormWatcher.d.ts +5 -4
- package/dist/components/forms/FormWatcher.d.ts.map +1 -1
- package/dist/components/forms/FormWatcher.js +2 -2
- package/dist/components/forms/inputs/AutocompleteFieldBySchema.d.ts.map +1 -1
- package/dist/components/forms/inputs/DesktopDatePickerBySchema.js +2 -1
- package/dist/components/forms/inputs/DesktopDateTimePickerBySchema.js +2 -1
- package/dist/components/forms/inputs/EditableAutocompleteFieldBySchema.d.ts +12 -2
- package/dist/components/forms/inputs/EditableAutocompleteFieldBySchema.d.ts.map +1 -1
- package/dist/components/forms/inputs/EditableAutocompleteFieldBySchema.js +6 -5
- package/dist/components/forms/inputs/FileFieldBySchema.js +2 -1
- package/dist/components/forms/inputs/FloatFieldBySchema.js +2 -1
- package/dist/components/forms/inputs/PatternFieldBySchema.js +2 -1
- package/dist/components/forms/inputs/TextFieldBySchema.js +2 -1
- package/dist/context/APIWrapper.d.ts +9 -4
- package/dist/context/APIWrapper.d.ts.map +1 -1
- package/dist/context/APIWrapper.js +76 -104
- package/dist/context/APIWrapperContext.d.ts +53 -56
- package/dist/context/APIWrapperContext.d.ts.map +1 -1
- package/dist/context/APIWrapperContext.js +17 -19
- package/dist/context/DRFReactBySchemaContext.d.ts +2 -10
- package/dist/context/DRFReactBySchemaContext.d.ts.map +1 -1
- package/dist/context/DRFReactBySchemaContext.js +0 -5
- package/dist/context/DRFReactBySchemaProvider.d.ts.map +1 -1
- package/dist/context/DRFReactBySchemaProvider.js +1 -31
- package/dist/context/Overlays.d.ts.map +1 -1
- package/dist/context/Overlays.js +34 -16
- package/dist/context/PrivateContext.d.ts +9 -0
- package/dist/context/PrivateContext.d.ts.map +1 -0
- package/dist/context/PrivateContext.js +16 -0
- package/dist/hooks/useDeepMemo.d.ts +2 -0
- package/dist/hooks/useDeepMemo.d.ts.map +1 -0
- package/dist/hooks/useDeepMemo.js +13 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -13
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +17 -0
- package/dist/{utils.d.ts → utils/utils.d.ts} +31 -5
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/{utils.js → utils/utils.js} +68 -76
- package/package.json +4 -1
- package/dist/components/DataGridBySchemaEditable/hooks/useRowMode.d.ts +0 -18
- package/dist/components/DataGridBySchemaEditable/hooks/useRowMode.d.ts.map +0 -1
- package/dist/components/DataGridBySchemaEditable/hooks/useRowMode.js +0 -43
- package/dist/components/DialogJSONSchemaForm.d.ts +0 -13
- package/dist/components/DialogJSONSchemaForm.js +0 -20
- package/dist/components/FilteredButton.d.ts +0 -2
- package/dist/components/FilteredButton.js +0 -23
- package/dist/components/FilteredGridActionsCellItem.d.ts +0 -2
- package/dist/components/FilteredGridActionsCellItem.js +0 -29
- package/dist/components/FormButtons.d.ts +0 -23
- package/dist/components/FormButtons.d.ts.map +0 -1
- package/dist/components/FormButtons.js +0 -43
- package/dist/components/forms/inputs/PatternBySchema.d.ts +0 -4
- package/dist/components/forms/inputs/PatternBySchema.d.ts.map +0 -1
- package/dist/components/forms/inputs/PatternBySchema.js +0 -45
- package/dist/context/Form.d.ts +0 -21
- package/dist/context/Form.js +0 -95
- package/dist/context/FormContext.d.ts +0 -71
- package/dist/context/FormContext.js +0 -8
- package/dist/utils.d.ts.map +0 -1
package/dist/api.js
CHANGED
|
@@ -12,450 +12,477 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.getAllModels = exports.
|
|
15
|
+
exports.getAllModels = exports.signUp = exports.getSignUpOptions = exports.isLoggedIn = exports.setAuthToken = exports.hasJWT = exports.clearJWT = exports.loginByPayload = void 0;
|
|
16
|
+
exports.getRawData = getRawData;
|
|
17
|
+
exports.getData = getData;
|
|
18
|
+
exports.updateData = updateData;
|
|
19
|
+
exports.partialUpdateData = partialUpdateData;
|
|
20
|
+
exports.createData = createData;
|
|
21
|
+
exports.deleteData = deleteData;
|
|
22
|
+
exports.createOrUpdateData = createOrUpdateData;
|
|
23
|
+
exports.updateDataBySchema = updateDataBySchema;
|
|
24
|
+
exports.addExistingRelatedModel = addExistingRelatedModel;
|
|
25
|
+
exports.getAutoComplete = getAutoComplete;
|
|
26
|
+
exports.getGenericModelList = getGenericModelList;
|
|
27
|
+
exports.getGenericModel = getGenericModel;
|
|
16
28
|
const axios_1 = __importDefault(require("axios"));
|
|
17
29
|
const dayjs_1 = __importDefault(require("dayjs"));
|
|
18
30
|
const utils_1 = require("./utils");
|
|
19
31
|
const expiredTokenMessage = 'Token expired! System must login again';
|
|
20
32
|
const noServerEndPointMessage = 'There is not API definition (serverEndPoint)!';
|
|
21
33
|
const unknownError = 'Unknown error!';
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
function getOptions(path, serverEndPoint, schemas) {
|
|
35
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
36
|
+
var _a;
|
|
37
|
+
if (schemas) {
|
|
38
|
+
const pathParts = path.split('/');
|
|
39
|
+
const model = pathParts[0];
|
|
40
|
+
const relatedModel = pathParts.length > 2 ? pathParts[2] : null;
|
|
41
|
+
const schemaKey = relatedModel
|
|
42
|
+
? (0, utils_1.slugToCamelCase)(`${model}_related_${relatedModel}_schema`, true)
|
|
43
|
+
: (0, utils_1.slugToCamelCase)(`${model}_schema`, true);
|
|
44
|
+
if (schemas[schemaKey]) {
|
|
45
|
+
const foundSchema = schemas[schemaKey];
|
|
46
|
+
if (typeof foundSchema === 'function') {
|
|
47
|
+
try {
|
|
48
|
+
const loaded = yield foundSchema();
|
|
49
|
+
return loaded.default || loaded;
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
console.error(`Failed to load schema for ${schemaKey}`, e);
|
|
53
|
+
}
|
|
38
54
|
}
|
|
39
|
-
|
|
40
|
-
|
|
55
|
+
else {
|
|
56
|
+
return foundSchema;
|
|
41
57
|
}
|
|
42
58
|
}
|
|
43
|
-
else {
|
|
44
|
-
return match;
|
|
45
|
-
}
|
|
46
59
|
}
|
|
47
|
-
|
|
48
|
-
if (!serverEndPoint) {
|
|
49
|
-
return {
|
|
50
|
-
message: noServerEndPointMessage,
|
|
51
|
-
isAxiosError: true,
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
const url = `${serverEndPoint.api}/${path}`;
|
|
55
|
-
try {
|
|
56
|
-
const { data } = yield axios_1.default.options(url);
|
|
57
|
-
return {
|
|
58
|
-
schema: data.actions.POST,
|
|
59
|
-
verbose_name: data.verbose_name,
|
|
60
|
-
verbose_name_plural: data.verbose_name_plural,
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
catch (e) {
|
|
64
|
-
if (axios_1.default.isAxiosError(e)) {
|
|
65
|
-
const err = e;
|
|
66
|
-
const message = `Error fetching options from ${url}`;
|
|
67
|
-
if (((_a = err.response) === null || _a === void 0 ? void 0 : _a.status) === 401) {
|
|
68
|
-
const isRefreshed = yield refreshToken(serverEndPoint);
|
|
69
|
-
if (!isRefreshed) {
|
|
70
|
-
console.log(expiredTokenMessage);
|
|
71
|
-
return {
|
|
72
|
-
message: expiredTokenMessage,
|
|
73
|
-
isAxiosError: true,
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
try {
|
|
77
|
-
const { data } = yield axios_1.default.options(url);
|
|
78
|
-
return {
|
|
79
|
-
schema: data.actions.POST,
|
|
80
|
-
verbose_name: data.verbose_name,
|
|
81
|
-
verbose_name_plural: data.verbose_name_plural,
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
catch (e) {
|
|
85
|
-
console.log(message, e);
|
|
86
|
-
return {
|
|
87
|
-
message,
|
|
88
|
-
isAxiosError: true,
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
console.log(message, e);
|
|
60
|
+
if (!serverEndPoint) {
|
|
93
61
|
return {
|
|
94
|
-
message,
|
|
62
|
+
message: noServerEndPointMessage,
|
|
95
63
|
isAxiosError: true,
|
|
96
64
|
};
|
|
97
65
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
if (axios_1.default.isAxiosError(options)) {
|
|
107
|
-
return options;
|
|
108
|
-
}
|
|
109
|
-
// Special default value of "currentUser":
|
|
110
|
-
let usuaria = false;
|
|
111
|
-
for (const [key, field] of Object.entries(options.schema)) {
|
|
112
|
-
if (field.model_default === 'currentUser') {
|
|
113
|
-
if (!usuaria) {
|
|
114
|
-
usuaria = yield (0, exports.isLoggedIn)(serverEndPoint);
|
|
115
|
-
}
|
|
116
|
-
if (usuaria) {
|
|
117
|
-
options.schema[key].model_default = {
|
|
118
|
-
id: usuaria.id,
|
|
119
|
-
label: usuaria.first_name,
|
|
120
|
-
};
|
|
121
|
-
}
|
|
66
|
+
const url = `${serverEndPoint.api}/${path}`;
|
|
67
|
+
try {
|
|
68
|
+
const { data } = yield axios_1.default.options(url);
|
|
69
|
+
return {
|
|
70
|
+
schema: data.actions.POST,
|
|
71
|
+
verbose_name: data.verbose_name,
|
|
72
|
+
verbose_name_plural: data.verbose_name_plural,
|
|
73
|
+
};
|
|
122
74
|
}
|
|
123
|
-
|
|
124
|
-
if (
|
|
125
|
-
const
|
|
126
|
-
|
|
75
|
+
catch (e) {
|
|
76
|
+
if (axios_1.default.isAxiosError(e)) {
|
|
77
|
+
const err = e;
|
|
78
|
+
const message = `Error fetching options from ${url}`;
|
|
79
|
+
if (((_a = err.response) === null || _a === void 0 ? void 0 : _a.status) === 401) {
|
|
80
|
+
const isRefreshed = yield refreshToken(serverEndPoint);
|
|
81
|
+
if (!isRefreshed) {
|
|
82
|
+
console.log(expiredTokenMessage);
|
|
83
|
+
return {
|
|
84
|
+
message: expiredTokenMessage,
|
|
85
|
+
isAxiosError: true,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
const { data } = yield axios_1.default.options(url);
|
|
90
|
+
return {
|
|
91
|
+
schema: data.actions.POST,
|
|
92
|
+
verbose_name: data.verbose_name,
|
|
93
|
+
verbose_name_plural: data.verbose_name_plural,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
catch (e) {
|
|
97
|
+
console.log(message, e);
|
|
98
|
+
return {
|
|
99
|
+
message,
|
|
100
|
+
isAxiosError: true,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
console.log(message, e);
|
|
105
|
+
return {
|
|
106
|
+
message,
|
|
107
|
+
isAxiosError: true,
|
|
108
|
+
};
|
|
127
109
|
}
|
|
110
|
+
return {
|
|
111
|
+
message: unknownError,
|
|
112
|
+
isAxiosError: true,
|
|
113
|
+
};
|
|
128
114
|
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
const url = `${serverEndPoint.api}/${path}`;
|
|
145
|
-
try {
|
|
146
|
-
const { data } = yield axios_1.default.get(url);
|
|
147
|
-
return data;
|
|
148
|
-
}
|
|
149
|
-
catch (e) {
|
|
150
|
-
const message = `Error fetching data from ${url}`;
|
|
151
|
-
if (axios_1.default.isAxiosError(e)) {
|
|
152
|
-
const err = e;
|
|
153
|
-
if (((_b = err.response) === null || _b === void 0 ? void 0 : _b.status) === 401) {
|
|
154
|
-
const isRefreshed = yield refreshToken(serverEndPoint);
|
|
155
|
-
if (!isRefreshed) {
|
|
156
|
-
console.log(expiredTokenMessage);
|
|
157
|
-
return {
|
|
158
|
-
message: expiredTokenMessage,
|
|
159
|
-
isAxiosError: true,
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
try {
|
|
163
|
-
const { data } = yield axios_1.default.get(url);
|
|
164
|
-
return data;
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
function getSchema(path, serverEndPoint, schemas) {
|
|
118
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
119
|
+
const options = yield getOptions(path, serverEndPoint, schemas);
|
|
120
|
+
if (axios_1.default.isAxiosError(options)) {
|
|
121
|
+
return options;
|
|
122
|
+
}
|
|
123
|
+
// Special default value of "currentUser":
|
|
124
|
+
let usuaria = false;
|
|
125
|
+
for (const [key, fieldRaw] of Object.entries(options.schema)) {
|
|
126
|
+
const field = fieldRaw;
|
|
127
|
+
if (field.model_default === 'currentUser') {
|
|
128
|
+
if (!usuaria) {
|
|
129
|
+
usuaria = yield (0, exports.isLoggedIn)(serverEndPoint);
|
|
165
130
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
message,
|
|
171
|
-
isAxiosError: true,
|
|
131
|
+
if (usuaria) {
|
|
132
|
+
options.schema[key].model_default = {
|
|
133
|
+
id: usuaria.id,
|
|
134
|
+
label: usuaria.first_name,
|
|
172
135
|
};
|
|
173
136
|
}
|
|
174
137
|
}
|
|
138
|
+
if (field.model_default && field.type === 'choice') {
|
|
139
|
+
if (field.choices) {
|
|
140
|
+
const modelDefault = field.choices.filter((choice) => choice.value === field.model_default);
|
|
141
|
+
options.schema[key].model_default =
|
|
142
|
+
modelDefault.length === 1 ? modelDefault[0] : undefined;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
175
145
|
}
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
isAxiosError: true,
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
});
|
|
183
|
-
exports.getRawData = getRawData;
|
|
184
|
-
const getData = (_a) => __awaiter(void 0, [_a], void 0, function* ({ path, serverEndPoint, route = 'api', }) {
|
|
185
|
-
var _b;
|
|
186
|
-
if (!serverEndPoint) {
|
|
187
|
-
return {
|
|
188
|
-
message: noServerEndPointMessage,
|
|
189
|
-
isAxiosError: true,
|
|
146
|
+
const modelOptions = {
|
|
147
|
+
verbose_name: options.verbose_name,
|
|
148
|
+
verbose_name_plural: options.verbose_name_plural,
|
|
190
149
|
};
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
150
|
+
return { schema: options.schema, modelOptions };
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
function getRawData(_a) {
|
|
154
|
+
return __awaiter(this, arguments, void 0, function* ({ path, serverEndPoint, }) {
|
|
155
|
+
var _b;
|
|
156
|
+
if (!serverEndPoint) {
|
|
157
|
+
return {
|
|
158
|
+
message: noServerEndPointMessage,
|
|
159
|
+
isAxiosError: true,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
const url = `${serverEndPoint.api}/${path}`;
|
|
163
|
+
try {
|
|
164
|
+
const { data } = yield axios_1.default.get(url);
|
|
165
|
+
return data;
|
|
166
|
+
}
|
|
167
|
+
catch (e) {
|
|
168
|
+
const message = `Error fetching data from ${url}`;
|
|
169
|
+
if (axios_1.default.isAxiosError(e)) {
|
|
170
|
+
const err = e;
|
|
171
|
+
if (((_b = err.response) === null || _b === void 0 ? void 0 : _b.status) === 401) {
|
|
172
|
+
const isRefreshed = yield refreshToken(serverEndPoint);
|
|
173
|
+
if (!isRefreshed) {
|
|
174
|
+
console.log(expiredTokenMessage);
|
|
175
|
+
return {
|
|
176
|
+
message: expiredTokenMessage,
|
|
177
|
+
isAxiosError: true,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
try {
|
|
181
|
+
const { data } = yield axios_1.default.get(url);
|
|
182
|
+
return data;
|
|
183
|
+
}
|
|
184
|
+
catch (e) {
|
|
185
|
+
const message = `Error fetching data from ${url}`;
|
|
186
|
+
console.log(message, e);
|
|
187
|
+
return {
|
|
188
|
+
message,
|
|
189
|
+
isAxiosError: true,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
212
192
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
193
|
+
}
|
|
194
|
+
console.log(message, e);
|
|
195
|
+
return {
|
|
196
|
+
message,
|
|
197
|
+
isAxiosError: true,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
function getData(_a) {
|
|
203
|
+
return __awaiter(this, arguments, void 0, function* ({ path, serverEndPoint, route = 'api', }) {
|
|
204
|
+
var _b;
|
|
205
|
+
if (!serverEndPoint) {
|
|
206
|
+
return {
|
|
207
|
+
message: noServerEndPointMessage,
|
|
208
|
+
isAxiosError: true,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
const url = `${serverEndPoint[route]}/${path}`;
|
|
212
|
+
try {
|
|
213
|
+
const { data } = yield axios_1.default.get(url);
|
|
214
|
+
return data;
|
|
215
|
+
}
|
|
216
|
+
catch (e) {
|
|
217
|
+
if (axios_1.default.isAxiosError(e)) {
|
|
218
|
+
const err = e;
|
|
219
|
+
if (((_b = err.response) === null || _b === void 0 ? void 0 : _b.status) === 401) {
|
|
220
|
+
const isRefreshed = yield refreshToken(serverEndPoint);
|
|
221
|
+
if (!isRefreshed) {
|
|
222
|
+
console.log(expiredTokenMessage);
|
|
223
|
+
return {
|
|
224
|
+
message: expiredTokenMessage,
|
|
225
|
+
isAxiosError: true,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
try {
|
|
229
|
+
const { data } = yield axios_1.default.get(url);
|
|
230
|
+
return data;
|
|
231
|
+
}
|
|
232
|
+
catch (e) {
|
|
233
|
+
console.log(expiredTokenMessage, e);
|
|
234
|
+
return {
|
|
235
|
+
message: expiredTokenMessage,
|
|
236
|
+
isAxiosError: true,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
219
239
|
}
|
|
220
240
|
}
|
|
241
|
+
const message = `Error fetching data from ${url}`;
|
|
242
|
+
console.log(message, e);
|
|
243
|
+
return {
|
|
244
|
+
message,
|
|
245
|
+
isAxiosError: true,
|
|
246
|
+
};
|
|
221
247
|
}
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
return {
|
|
225
|
-
message,
|
|
226
|
-
isAxiosError: true,
|
|
227
|
-
};
|
|
228
|
-
}
|
|
229
|
-
});
|
|
248
|
+
});
|
|
249
|
+
}
|
|
230
250
|
/**
|
|
231
251
|
*
|
|
232
252
|
* @param options - params
|
|
233
253
|
* @returns updatedData when succesfully updated, axiosError otherwise
|
|
234
254
|
*/
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
const url = `${serverEndPoint.api}/${path}/${id}/`;
|
|
244
|
-
const config = { headers: { 'Content-Type': contentType } };
|
|
245
|
-
try {
|
|
246
|
-
const { data: updatedData } = yield axios_1.default.put(url, data, config);
|
|
247
|
-
return updatedData;
|
|
248
|
-
}
|
|
249
|
-
catch (e) {
|
|
250
|
-
if (axios_1.default.isAxiosError(e)) {
|
|
251
|
-
const err = e;
|
|
252
|
-
const message = `Error updating data at ${url}`;
|
|
253
|
-
if (((_b = err.response) === null || _b === void 0 ? void 0 : _b.status) === 401) {
|
|
254
|
-
const isRefreshed = yield refreshToken(serverEndPoint);
|
|
255
|
-
if (!isRefreshed) {
|
|
256
|
-
console.log(expiredTokenMessage);
|
|
257
|
-
return {
|
|
258
|
-
message: expiredTokenMessage,
|
|
259
|
-
isAxiosError: true,
|
|
260
|
-
};
|
|
261
|
-
}
|
|
262
|
-
try {
|
|
263
|
-
const { data: updatedData } = yield axios_1.default.put(url, data, config);
|
|
264
|
-
return updatedData;
|
|
265
|
-
}
|
|
266
|
-
catch (e) {
|
|
267
|
-
console.log(message, data, (_c = err.response) === null || _c === void 0 ? void 0 : _c.data, e);
|
|
268
|
-
return { message, isAxiosError: true };
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
console.log(message, data, (_d = err.response) === null || _d === void 0 ? void 0 : _d.data);
|
|
272
|
-
return { message, isAxiosError: true };
|
|
255
|
+
function updateData(_a) {
|
|
256
|
+
return __awaiter(this, arguments, void 0, function* ({ path, serverEndPoint, data, id, contentType = 'application/json', }) {
|
|
257
|
+
var _b, _c, _d;
|
|
258
|
+
if (!serverEndPoint) {
|
|
259
|
+
return {
|
|
260
|
+
message: noServerEndPointMessage,
|
|
261
|
+
isAxiosError: true,
|
|
262
|
+
};
|
|
273
263
|
}
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
isAxiosError: true,
|
|
302
|
-
};
|
|
303
|
-
}
|
|
304
|
-
try {
|
|
305
|
-
const { data: updatedData } = yield axios_1.default.patch(url, data);
|
|
306
|
-
return updatedData;
|
|
307
|
-
}
|
|
308
|
-
catch (e) {
|
|
309
|
-
console.log(message, data, e);
|
|
310
|
-
return {
|
|
311
|
-
message: err.response ? err.response.data : message,
|
|
312
|
-
isAxiosError: true,
|
|
313
|
-
};
|
|
264
|
+
const url = `${serverEndPoint.api}/${path}/${id}/`;
|
|
265
|
+
const config = { headers: { 'Content-Type': contentType } };
|
|
266
|
+
try {
|
|
267
|
+
const { data: updatedData } = yield axios_1.default.put(url, data, config);
|
|
268
|
+
return updatedData;
|
|
269
|
+
}
|
|
270
|
+
catch (e) {
|
|
271
|
+
if (axios_1.default.isAxiosError(e)) {
|
|
272
|
+
const err = e;
|
|
273
|
+
const message = `Error updating data at ${url}`;
|
|
274
|
+
if (((_b = err.response) === null || _b === void 0 ? void 0 : _b.status) === 401) {
|
|
275
|
+
const isRefreshed = yield refreshToken(serverEndPoint);
|
|
276
|
+
if (!isRefreshed) {
|
|
277
|
+
console.log(expiredTokenMessage);
|
|
278
|
+
return {
|
|
279
|
+
message: expiredTokenMessage,
|
|
280
|
+
isAxiosError: true,
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
try {
|
|
284
|
+
const { data: updatedData } = yield axios_1.default.put(url, data, config);
|
|
285
|
+
return updatedData;
|
|
286
|
+
}
|
|
287
|
+
catch (e) {
|
|
288
|
+
console.log(message, data, (_c = err.response) === null || _c === void 0 ? void 0 : _c.data, e);
|
|
289
|
+
return { message, isAxiosError: true };
|
|
290
|
+
}
|
|
314
291
|
}
|
|
292
|
+
console.log(message, data, (_d = err.response) === null || _d === void 0 ? void 0 : _d.data);
|
|
293
|
+
return { message, isAxiosError: true };
|
|
315
294
|
}
|
|
316
|
-
|
|
295
|
+
}
|
|
296
|
+
return { message: unknownError, isAxiosError: true };
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
function partialUpdateData(_a) {
|
|
300
|
+
return __awaiter(this, arguments, void 0, function* ({ path, serverEndPoint, data, id, }) {
|
|
301
|
+
var _b, _c;
|
|
302
|
+
if (!serverEndPoint) {
|
|
317
303
|
return {
|
|
318
|
-
message:
|
|
304
|
+
message: noServerEndPointMessage,
|
|
319
305
|
isAxiosError: true,
|
|
320
306
|
};
|
|
321
307
|
}
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
});
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
try {
|
|
353
|
-
const { data: createdData } = yield axios_1.default.post(url, data);
|
|
354
|
-
return createdData;
|
|
355
|
-
}
|
|
356
|
-
catch (e) {
|
|
357
|
-
console.log(message, data, e);
|
|
358
|
-
return {
|
|
359
|
-
message: err.response ? err.response.data : message,
|
|
360
|
-
isAxiosError: true,
|
|
361
|
-
};
|
|
308
|
+
const url = `${serverEndPoint.api}/${path}/${id}/`;
|
|
309
|
+
try {
|
|
310
|
+
const { data: updatedData } = yield axios_1.default.patch(url, data);
|
|
311
|
+
return updatedData;
|
|
312
|
+
}
|
|
313
|
+
catch (e) {
|
|
314
|
+
if (axios_1.default.isAxiosError(e)) {
|
|
315
|
+
const err = e;
|
|
316
|
+
const message = `Error partial updating data at ${url}`;
|
|
317
|
+
if (((_b = err.response) === null || _b === void 0 ? void 0 : _b.status) === 401) {
|
|
318
|
+
const isRefreshed = yield refreshToken(serverEndPoint);
|
|
319
|
+
if (!isRefreshed) {
|
|
320
|
+
console.log(expiredTokenMessage);
|
|
321
|
+
return {
|
|
322
|
+
message: expiredTokenMessage,
|
|
323
|
+
isAxiosError: true,
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
try {
|
|
327
|
+
const { data: updatedData } = yield axios_1.default.patch(url, data);
|
|
328
|
+
return updatedData;
|
|
329
|
+
}
|
|
330
|
+
catch (e) {
|
|
331
|
+
console.log(message, data, e);
|
|
332
|
+
return {
|
|
333
|
+
message: err.response ? err.response.data : message,
|
|
334
|
+
isAxiosError: true,
|
|
335
|
+
};
|
|
336
|
+
}
|
|
362
337
|
}
|
|
338
|
+
console.log(message, data, (_c = err.response) === null || _c === void 0 ? void 0 : _c.data);
|
|
339
|
+
return {
|
|
340
|
+
message: err.response ? err.response.data : message,
|
|
341
|
+
isAxiosError: true,
|
|
342
|
+
};
|
|
363
343
|
}
|
|
364
|
-
|
|
344
|
+
}
|
|
345
|
+
return { message: unknownError, isAxiosError: true };
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
function createData(_a) {
|
|
349
|
+
return __awaiter(this, arguments, void 0, function* ({ path, serverEndPoint, data, contentType = 'application/json', }) {
|
|
350
|
+
var _b, _c;
|
|
351
|
+
if (!serverEndPoint) {
|
|
365
352
|
return {
|
|
366
|
-
message:
|
|
353
|
+
message: noServerEndPointMessage,
|
|
367
354
|
isAxiosError: true,
|
|
368
355
|
};
|
|
369
356
|
}
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
357
|
+
const url = `${serverEndPoint.api}/${path}/`;
|
|
358
|
+
const config = { headers: { 'Content-Type': contentType } };
|
|
359
|
+
try {
|
|
360
|
+
const { data: createdData } = yield axios_1.default.post(url, data, config);
|
|
361
|
+
return createdData;
|
|
362
|
+
}
|
|
363
|
+
catch (err) {
|
|
364
|
+
if (axios_1.default.isAxiosError(err)) {
|
|
365
|
+
const message = `Error creating data at ${url}`;
|
|
366
|
+
if (((_b = err.response) === null || _b === void 0 ? void 0 : _b.status) === 401) {
|
|
367
|
+
const isRefreshed = yield refreshToken(serverEndPoint);
|
|
368
|
+
if (!isRefreshed) {
|
|
369
|
+
console.log(expiredTokenMessage);
|
|
370
|
+
return {
|
|
371
|
+
message: expiredTokenMessage,
|
|
372
|
+
isAxiosError: true,
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
try {
|
|
376
|
+
const { data: createdData } = yield axios_1.default.post(url, data);
|
|
377
|
+
return createdData;
|
|
378
|
+
}
|
|
379
|
+
catch (e) {
|
|
380
|
+
console.log(message, data, e);
|
|
381
|
+
return {
|
|
382
|
+
message: err.response ? err.response.data : message,
|
|
383
|
+
isAxiosError: true,
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
console.log(message, data, (_c = err.response) === null || _c === void 0 ? void 0 : _c.data);
|
|
388
|
+
return {
|
|
389
|
+
message: err.response ? err.response.data : message,
|
|
390
|
+
isAxiosError: true,
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
}
|
|
380
394
|
return {
|
|
381
|
-
message:
|
|
395
|
+
message: unknownError,
|
|
382
396
|
isAxiosError: true,
|
|
383
397
|
};
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
catch (e) {
|
|
391
|
-
if (axios_1.default.isAxiosError(e)) {
|
|
392
|
-
const err = e;
|
|
393
|
-
const message = `Error deleting data from ${url}`;
|
|
394
|
-
if (((_a = err.response) === null || _a === void 0 ? void 0 : _a.status) === 401) {
|
|
395
|
-
const isRefreshed = yield refreshToken(serverEndPoint);
|
|
396
|
-
if (!isRefreshed) {
|
|
397
|
-
console.log(expiredTokenMessage);
|
|
398
|
-
return {
|
|
399
|
-
message: expiredTokenMessage,
|
|
400
|
-
isAxiosError: true,
|
|
401
|
-
};
|
|
402
|
-
}
|
|
403
|
-
try {
|
|
404
|
-
yield axios_1.default.delete(url);
|
|
405
|
-
return true;
|
|
406
|
-
}
|
|
407
|
-
catch (e) {
|
|
408
|
-
console.log(message, e);
|
|
409
|
-
return {
|
|
410
|
-
message: err.response ? err.response.data : message,
|
|
411
|
-
isAxiosError: true,
|
|
412
|
-
};
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
console.log(message, e);
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
function deleteData(path, serverEndPoint, id) {
|
|
401
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
402
|
+
var _a;
|
|
403
|
+
if (!serverEndPoint) {
|
|
416
404
|
return {
|
|
417
|
-
message:
|
|
405
|
+
message: noServerEndPointMessage,
|
|
418
406
|
isAxiosError: true,
|
|
419
407
|
};
|
|
420
408
|
}
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
const
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
409
|
+
const url = `${serverEndPoint.api}/${path}/${id}`;
|
|
410
|
+
try {
|
|
411
|
+
yield axios_1.default.delete(url);
|
|
412
|
+
return true;
|
|
413
|
+
}
|
|
414
|
+
catch (e) {
|
|
415
|
+
if (axios_1.default.isAxiosError(e)) {
|
|
416
|
+
const err = e;
|
|
417
|
+
const message = `Error deleting data from ${url}`;
|
|
418
|
+
if (((_a = err.response) === null || _a === void 0 ? void 0 : _a.status) === 401) {
|
|
419
|
+
const isRefreshed = yield refreshToken(serverEndPoint);
|
|
420
|
+
if (!isRefreshed) {
|
|
421
|
+
console.log(expiredTokenMessage);
|
|
422
|
+
return {
|
|
423
|
+
message: expiredTokenMessage,
|
|
424
|
+
isAxiosError: true,
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
try {
|
|
428
|
+
yield axios_1.default.delete(url);
|
|
429
|
+
return true;
|
|
430
|
+
}
|
|
431
|
+
catch (e) {
|
|
432
|
+
console.log(message, e);
|
|
433
|
+
return {
|
|
434
|
+
message: err.response ? err.response.data : message,
|
|
435
|
+
isAxiosError: true,
|
|
436
|
+
};
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
console.log(message, e);
|
|
440
|
+
return {
|
|
441
|
+
message: err.response ? err.response.data : message,
|
|
442
|
+
isAxiosError: true,
|
|
443
|
+
};
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
return {
|
|
447
|
+
message: unknownError,
|
|
448
|
+
isAxiosError: true,
|
|
449
|
+
};
|
|
450
|
+
});
|
|
451
|
+
}
|
|
452
|
+
function createOrUpdateData(_a) {
|
|
453
|
+
return __awaiter(this, arguments, void 0, function* ({ path, serverEndPoint, data, id, contentType = 'application/json', }) {
|
|
454
|
+
if ((0, utils_1.isTmpId)(id) || !id) {
|
|
455
|
+
const responseCreate = yield createData({ path, serverEndPoint, data, contentType });
|
|
456
|
+
return responseCreate;
|
|
457
|
+
}
|
|
458
|
+
const responseUpdate = yield updateData({ path, serverEndPoint, data, id, contentType });
|
|
459
|
+
return responseUpdate;
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
function prepareDataBySchemaRecursive({ data: typedData, schema, }) {
|
|
463
|
+
const data = typedData;
|
|
438
464
|
let requiresMultipart = false;
|
|
439
465
|
const dbData = {};
|
|
440
466
|
for (const [key, field] of Object.entries(schema)) {
|
|
441
|
-
|
|
467
|
+
const value = data[key];
|
|
468
|
+
if (!(key in data) || (key === 'id' && (0, utils_1.isTmpId)(value))) {
|
|
442
469
|
continue;
|
|
443
470
|
}
|
|
444
|
-
if (typeof
|
|
471
|
+
if (typeof value !== 'boolean' && !value) {
|
|
445
472
|
dbData[key] = (0, utils_1.emptyByType)(field, true);
|
|
446
473
|
continue;
|
|
447
474
|
}
|
|
448
475
|
// Check for file upload fields
|
|
449
|
-
if (['file upload', 'image upload'].includes(field.type)) {
|
|
476
|
+
if (field && ['file upload', 'image upload'].includes(field.type)) {
|
|
450
477
|
requiresMultipart = true;
|
|
451
478
|
if ('file' in data[key]) {
|
|
452
|
-
dbData[key] = { file:
|
|
479
|
+
dbData[key] = { file: value.file };
|
|
453
480
|
}
|
|
454
481
|
continue;
|
|
455
482
|
}
|
|
456
483
|
// OneToMany or ManyToMany relations:
|
|
457
|
-
if (field.type === 'field' && field.child) {
|
|
458
|
-
const dataArr =
|
|
484
|
+
if ((field === null || field === void 0 ? void 0 : field.type) === 'field' && field.child) {
|
|
485
|
+
const dataArr = value;
|
|
459
486
|
dbData[key] = dataArr.map((row) => {
|
|
460
487
|
var _a;
|
|
461
488
|
return ((_a = field.child) === null || _a === void 0 ? void 0 : _a.children)
|
|
@@ -468,68 +495,73 @@ const prepareDataBySchemaRecursive = ({ data, schema }) => {
|
|
|
468
495
|
continue;
|
|
469
496
|
}
|
|
470
497
|
// Nested Object:
|
|
471
|
-
if (field.type === 'nested object' && field.children && typeof
|
|
472
|
-
dbData[key] = (0, utils_1.isTmpId)(
|
|
498
|
+
if ((field === null || field === void 0 ? void 0 : field.type) === 'nested object' && field.children && typeof value === 'object') {
|
|
499
|
+
dbData[key] = (0, utils_1.isTmpId)(value === null || value === void 0 ? void 0 : value.id)
|
|
473
500
|
? prepareDataBySchemaRecursive({
|
|
474
|
-
data:
|
|
501
|
+
data: value,
|
|
475
502
|
schema: field.children,
|
|
476
503
|
}).data
|
|
477
|
-
:
|
|
504
|
+
: value.id;
|
|
478
505
|
continue;
|
|
479
506
|
}
|
|
480
507
|
// Choices:
|
|
481
|
-
if (field.type === 'choice') {
|
|
482
|
-
dbData[key] =
|
|
508
|
+
if ((field === null || field === void 0 ? void 0 : field.type) === 'choice') {
|
|
509
|
+
dbData[key] = value.value;
|
|
483
510
|
continue;
|
|
484
511
|
}
|
|
485
512
|
// Date:
|
|
486
|
-
if (field.type === 'date') {
|
|
487
|
-
dbData[key] = (0, dayjs_1.default)(
|
|
513
|
+
if ((field === null || field === void 0 ? void 0 : field.type) === 'date') {
|
|
514
|
+
dbData[key] = (0, dayjs_1.default)(value).format('YYYY-MM-DD');
|
|
488
515
|
continue;
|
|
489
516
|
}
|
|
490
517
|
// DateTime:
|
|
491
|
-
if (field.type === 'datetime') {
|
|
492
|
-
dbData[key] = (0, dayjs_1.default)(
|
|
518
|
+
if ((field === null || field === void 0 ? void 0 : field.type) === 'datetime') {
|
|
519
|
+
dbData[key] = (0, dayjs_1.default)(value).format('YYYY-MM-DDTHH:mm');
|
|
493
520
|
continue;
|
|
494
521
|
}
|
|
495
522
|
// Default:
|
|
496
|
-
dbData[key] =
|
|
523
|
+
dbData[key] = value;
|
|
497
524
|
}
|
|
498
525
|
return {
|
|
499
526
|
data: dbData,
|
|
500
527
|
requiresMultipart,
|
|
501
528
|
};
|
|
502
|
-
}
|
|
503
|
-
|
|
504
|
-
const { data: preparedData, requiresMultipart } = prepareDataBySchemaRecursive({
|
|
529
|
+
}
|
|
530
|
+
function prepareDataBySchema({ data, schema }) {
|
|
531
|
+
const { data: preparedData, requiresMultipart } = prepareDataBySchemaRecursive({
|
|
532
|
+
data,
|
|
533
|
+
schema,
|
|
534
|
+
});
|
|
505
535
|
return {
|
|
506
536
|
data: requiresMultipart ? (0, utils_1.convertToFormData)(preparedData) : preparedData,
|
|
507
537
|
contentType: requiresMultipart
|
|
508
538
|
? 'multipart/form-data'
|
|
509
539
|
: 'application/json',
|
|
510
540
|
};
|
|
511
|
-
}
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
path
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
541
|
+
}
|
|
542
|
+
function updateDataBySchema(_a) {
|
|
543
|
+
return __awaiter(this, arguments, void 0, function* ({ model, modelObjectId, serverEndPoint, data, schema, path = null, }) {
|
|
544
|
+
const { data: dbData, contentType } = prepareDataBySchema({ data, schema });
|
|
545
|
+
if (!path) {
|
|
546
|
+
path = model;
|
|
547
|
+
}
|
|
548
|
+
const response = yield createOrUpdateData({
|
|
549
|
+
path,
|
|
550
|
+
serverEndPoint,
|
|
551
|
+
data: dbData,
|
|
552
|
+
id: modelObjectId,
|
|
553
|
+
contentType,
|
|
554
|
+
});
|
|
555
|
+
return response;
|
|
523
556
|
});
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
const
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
}
|
|
531
|
-
|
|
532
|
-
const getDataGridColumns = (schema, columnFields, creatableFields, disabledFields) => {
|
|
557
|
+
}
|
|
558
|
+
function addExistingRelatedModel(_a) {
|
|
559
|
+
return __awaiter(this, arguments, void 0, function* ({ model, serverEndPoint, id, data, }) {
|
|
560
|
+
const response = yield partialUpdateData({ path: model, serverEndPoint, data, id });
|
|
561
|
+
return response;
|
|
562
|
+
});
|
|
563
|
+
}
|
|
564
|
+
function getDataGridColumns(schema, columnFields, creatableFields, disabledFields) {
|
|
533
565
|
if (!schema) {
|
|
534
566
|
return false;
|
|
535
567
|
}
|
|
@@ -539,35 +571,41 @@ const getDataGridColumns = (schema, columnFields, creatableFields, disabledField
|
|
|
539
571
|
return field in schema;
|
|
540
572
|
});
|
|
541
573
|
return finalColumnFields.map((field) => {
|
|
574
|
+
const fieldSchema = schema[field];
|
|
542
575
|
const column = {
|
|
543
576
|
field,
|
|
544
|
-
headerName:
|
|
577
|
+
headerName: fieldSchema === null || fieldSchema === void 0 ? void 0 : fieldSchema.label,
|
|
545
578
|
creatable: creatableFields && creatableFields.includes(field)
|
|
546
579
|
? true
|
|
547
|
-
: 'creatable' in
|
|
548
|
-
?
|
|
580
|
+
: fieldSchema && 'creatable' in fieldSchema
|
|
581
|
+
? fieldSchema.creatable
|
|
549
582
|
: false,
|
|
550
583
|
disabled: !!disabledFields && disabledFields.includes(field),
|
|
551
|
-
uiRequired:
|
|
584
|
+
uiRequired: (fieldSchema === null || fieldSchema === void 0 ? void 0 : fieldSchema.ui_required) || false,
|
|
552
585
|
width: 100,
|
|
553
586
|
};
|
|
554
587
|
return column;
|
|
555
588
|
});
|
|
556
|
-
}
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
589
|
+
}
|
|
590
|
+
function getAutoComplete(_a) {
|
|
591
|
+
return __awaiter(this, arguments, void 0, function* ({ model, serverEndPoint, }) {
|
|
592
|
+
const data = yield getData({
|
|
593
|
+
path: `${model}/`,
|
|
594
|
+
serverEndPoint,
|
|
595
|
+
route: 'autocomplete',
|
|
596
|
+
});
|
|
597
|
+
if (axios_1.default.isAxiosError(data)) {
|
|
598
|
+
return data;
|
|
599
|
+
}
|
|
600
|
+
const occurrences = {};
|
|
601
|
+
const sanitizedData = data.map((row) => {
|
|
602
|
+
const baseLabel = row.label;
|
|
603
|
+
occurrences[baseLabel] = (occurrences[baseLabel] || 0) + 1;
|
|
604
|
+
return Object.assign(Object.assign({}, row), { label: occurrences[baseLabel] > 1 ? `${baseLabel} (${occurrences[baseLabel]})` : baseLabel });
|
|
605
|
+
});
|
|
606
|
+
return sanitizedData;
|
|
567
607
|
});
|
|
568
|
-
|
|
569
|
-
});
|
|
570
|
-
exports.getAutoComplete = getAutoComplete;
|
|
608
|
+
}
|
|
571
609
|
const loginByPayload = (payload, serverEndPoint) => __awaiter(void 0, void 0, void 0, function* () {
|
|
572
610
|
if (!serverEndPoint) {
|
|
573
611
|
return {
|
|
@@ -729,164 +767,166 @@ const signUp = (data, serverEndPoint) => __awaiter(void 0, void 0, void 0, funct
|
|
|
729
767
|
};
|
|
730
768
|
});
|
|
731
769
|
exports.signUp = signUp;
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
if (filter
|
|
754
|
-
filter.quickFilterValues
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
770
|
+
function getGenericModelList(_a) {
|
|
771
|
+
return __awaiter(this, arguments, void 0, function* ({ model, serverEndPoint, id = '', relatedModel = '', relatedModelId = '', columnFields, creatableFields = [], disabledFields = [], isInBatches = false, loadedSchema, loadedModelOptions, page, filter, queryParams = [], sort, sumRows, schemas, }) {
|
|
772
|
+
const newQueryParams = [...queryParams];
|
|
773
|
+
let path = `${model}/${id}`;
|
|
774
|
+
let schemaPath = `${model}/`;
|
|
775
|
+
let schema = loadedSchema;
|
|
776
|
+
let modelOptions = loadedModelOptions;
|
|
777
|
+
let columns = [];
|
|
778
|
+
if (!(0, utils_1.isTmpId)(id) && relatedModel) {
|
|
779
|
+
path += `/${relatedModel}/`;
|
|
780
|
+
if (relatedModelId) {
|
|
781
|
+
path += `${relatedModelId}/`;
|
|
782
|
+
}
|
|
783
|
+
schemaPath += `${id}/${relatedModel}/`;
|
|
784
|
+
}
|
|
785
|
+
// SERVER-SIDE TOTALS (sumRows):
|
|
786
|
+
if (sumRows) {
|
|
787
|
+
const sumRowsParams = sumRows.rows.map((row) => row.field).join(',');
|
|
788
|
+
newQueryParams.push(`sum_rows=${sumRowsParams}`);
|
|
789
|
+
}
|
|
790
|
+
// SERVER-SIDE FILTERING:
|
|
791
|
+
if (filter) {
|
|
792
|
+
if (filter.quickFilterValues &&
|
|
793
|
+
filter.quickFilterValues.length > 0 &&
|
|
794
|
+
filter.quickFilterValues[0]) {
|
|
795
|
+
newQueryParams.push(`search=${filter.quickFilterValues[0]}`);
|
|
796
|
+
}
|
|
797
|
+
for (const item of filter.items) {
|
|
798
|
+
if (!item.operator) {
|
|
799
|
+
continue;
|
|
800
|
+
}
|
|
801
|
+
const queryParam = item.value
|
|
802
|
+
? `field=${item.field}&operator=${item.operator}&value=${item.value}`
|
|
803
|
+
: `field=${item.field}&operator=${item.operator}`;
|
|
804
|
+
newQueryParams.push(queryParam);
|
|
761
805
|
}
|
|
762
|
-
const queryParam = item.value
|
|
763
|
-
? `field=${item.field}&operator=${item.operator}&value=${item.value}`
|
|
764
|
-
: `field=${item.field}&operator=${item.operator}`;
|
|
765
|
-
newQueryParams.push(queryParam);
|
|
766
806
|
}
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
807
|
+
// SERVER-SIDE SORTING:
|
|
808
|
+
if (sort) {
|
|
809
|
+
const sortParams = [];
|
|
810
|
+
for (const item of sort) {
|
|
811
|
+
sortParams.push(item.sort === 'desc' ? `-${item.field}` : item.field);
|
|
812
|
+
}
|
|
813
|
+
newQueryParams.push(`ordering=${sortParams.join(',')}`);
|
|
814
|
+
}
|
|
815
|
+
// SERVER-SIDE PAGINATION:
|
|
816
|
+
if (page) {
|
|
817
|
+
newQueryParams.push(`page=${page + 1}`);
|
|
818
|
+
}
|
|
819
|
+
// Only get schema and columns if not in batches or in first batch:
|
|
820
|
+
if (!schema) {
|
|
821
|
+
const options = yield getSchema(schemaPath, serverEndPoint, schemas);
|
|
822
|
+
if (!options || axios_1.default.isAxiosError(options)) {
|
|
823
|
+
return (options || { message: unknownError, isAxiosError: true });
|
|
824
|
+
}
|
|
825
|
+
schema = options.schema;
|
|
826
|
+
if (!schema) {
|
|
827
|
+
return { message: `Schema not found for ${model}`, isAxiosError: true };
|
|
828
|
+
}
|
|
829
|
+
modelOptions = options.modelOptions;
|
|
830
|
+
columns = getDataGridColumns(schema, columnFields, creatableFields, disabledFields);
|
|
831
|
+
if (!columns) {
|
|
832
|
+
return {
|
|
833
|
+
message: `Columns could not be generated for ${model}`,
|
|
834
|
+
isAxiosError: true,
|
|
835
|
+
};
|
|
836
|
+
}
|
|
837
|
+
}
|
|
838
|
+
let rowCount = 0;
|
|
839
|
+
let sumRowsTotals = null;
|
|
840
|
+
let data = [];
|
|
841
|
+
if (!id || (id && !relatedModelId)) {
|
|
842
|
+
if (isInBatches) {
|
|
843
|
+
newQueryParams.push(loadedSchema ? 'is_last_batch=1' : 'is_first_batch=1');
|
|
844
|
+
}
|
|
845
|
+
if (newQueryParams.length > 0) {
|
|
846
|
+
path += `?${newQueryParams.join('&')}`;
|
|
847
|
+
}
|
|
848
|
+
const ret = yield getData({ path, serverEndPoint });
|
|
849
|
+
if (ret && axios_1.default.isAxiosError(ret)) {
|
|
850
|
+
return ret;
|
|
851
|
+
}
|
|
852
|
+
const dataRaw = 'results' in ret ? ret.results : ret;
|
|
853
|
+
if ('results' in ret) {
|
|
854
|
+
rowCount = ret.count;
|
|
855
|
+
if (sumRows) {
|
|
856
|
+
sumRowsTotals = ret.sum_rows;
|
|
857
|
+
}
|
|
858
|
+
}
|
|
859
|
+
if (!schema) {
|
|
860
|
+
return { message: `Schema not found for ${model}`, isAxiosError: true };
|
|
861
|
+
}
|
|
862
|
+
data = dataRaw.map((row) => {
|
|
863
|
+
const newRow = {};
|
|
864
|
+
for (const [key, field] of Object.entries(schema)) {
|
|
865
|
+
if (!(key in row)) {
|
|
866
|
+
continue;
|
|
867
|
+
}
|
|
868
|
+
if ((field === null || field === void 0 ? void 0 : field.type) === 'choice') {
|
|
869
|
+
newRow[key] = row[key]
|
|
870
|
+
? {
|
|
871
|
+
value: row[key],
|
|
872
|
+
display_name: (0, utils_1.getChoiceByValue)(row[key], field.choices),
|
|
873
|
+
}
|
|
874
|
+
: (0, utils_1.emptyByType)(field);
|
|
875
|
+
continue;
|
|
876
|
+
}
|
|
877
|
+
newRow[key] = row[key] ? row[key] : (0, utils_1.emptyByType)(field);
|
|
878
|
+
}
|
|
879
|
+
return newRow;
|
|
880
|
+
});
|
|
881
|
+
}
|
|
882
|
+
if (!schema || !columns) {
|
|
883
|
+
return {
|
|
884
|
+
message: `Schema or columns not found for ${model}`,
|
|
885
|
+
isAxiosError: true,
|
|
886
|
+
};
|
|
887
|
+
}
|
|
888
|
+
return { data, columns, schema, modelOptions, rowCount, sumRowsTotals };
|
|
889
|
+
});
|
|
890
|
+
}
|
|
891
|
+
function getGenericModel(_a) {
|
|
892
|
+
return __awaiter(this, arguments, void 0, function* ({ model, serverEndPoint, id = '', relatedModel = '', relatedModelId = '', schemas, }) {
|
|
893
|
+
let path = `${model}/${id}`;
|
|
894
|
+
let schemaPath = `${model}/`;
|
|
895
|
+
if (!(0, utils_1.isTmpId)(id) && relatedModel) {
|
|
896
|
+
path += `/${relatedModel}/`;
|
|
897
|
+
if (relatedModelId) {
|
|
898
|
+
path += `${relatedModelId}/`;
|
|
899
|
+
}
|
|
900
|
+
schemaPath += `${id}/${relatedModel}/`;
|
|
901
|
+
}
|
|
902
|
+
else if (id) {
|
|
903
|
+
path += '/';
|
|
773
904
|
}
|
|
774
|
-
newQueryParams.push(`ordering=${sortParams.join(',')}`);
|
|
775
|
-
}
|
|
776
|
-
// SERVER-SIDE PAGINATION:
|
|
777
|
-
if (page) {
|
|
778
|
-
newQueryParams.push(`page=${page + 1}`);
|
|
779
|
-
}
|
|
780
|
-
// Only get schema and columns if not in batches or in first batch:
|
|
781
|
-
if (!schema) {
|
|
782
905
|
const options = yield getSchema(schemaPath, serverEndPoint, schemas);
|
|
783
906
|
if (!options || axios_1.default.isAxiosError(options)) {
|
|
784
907
|
return (options || { message: unknownError, isAxiosError: true });
|
|
785
908
|
}
|
|
786
|
-
schema = options
|
|
787
|
-
|
|
788
|
-
return { message: `Schema not found for ${model}`, isAxiosError: true };
|
|
789
|
-
}
|
|
790
|
-
modelOptions = options.modelOptions;
|
|
791
|
-
columns = getDataGridColumns(schema, columnFields, creatableFields, disabledFields);
|
|
909
|
+
const { schema, modelOptions } = options;
|
|
910
|
+
const columns = getDataGridColumns(schema);
|
|
792
911
|
if (!columns) {
|
|
793
912
|
return {
|
|
794
913
|
message: `Columns could not be generated for ${model}`,
|
|
795
914
|
isAxiosError: true,
|
|
796
915
|
};
|
|
797
916
|
}
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
if (isInBatches) {
|
|
804
|
-
newQueryParams.push(loadedSchema ? 'is_last_batch=1' : 'is_first_batch=1');
|
|
805
|
-
}
|
|
806
|
-
if (newQueryParams.length > 0) {
|
|
807
|
-
path += `?${newQueryParams.join('&')}`;
|
|
808
|
-
}
|
|
809
|
-
const ret = yield getData({ path, serverEndPoint });
|
|
810
|
-
if (ret && axios_1.default.isAxiosError(ret)) {
|
|
811
|
-
return ret;
|
|
812
|
-
}
|
|
813
|
-
const dataRaw = 'results' in ret ? ret.results : ret;
|
|
814
|
-
if ('results' in ret) {
|
|
815
|
-
rowCount = ret.count;
|
|
816
|
-
if (sumRows) {
|
|
817
|
-
sumRowsTotals = ret.sum_rows;
|
|
917
|
+
let data = {};
|
|
918
|
+
if (!(0, utils_1.isTmpId)(id) && (!relatedModel || (relatedModel && relatedModelId))) {
|
|
919
|
+
const response = yield getData({ path, serverEndPoint });
|
|
920
|
+
if (!axios_1.default.isAxiosError(response)) {
|
|
921
|
+
data = response;
|
|
818
922
|
}
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
return { message: `Schema not found for ${model}`, isAxiosError: true };
|
|
822
|
-
}
|
|
823
|
-
data = dataRaw.map((row) => {
|
|
824
|
-
const newRow = {};
|
|
825
|
-
for (const [key, field] of Object.entries(schema)) {
|
|
826
|
-
if (!(key in row)) {
|
|
827
|
-
continue;
|
|
828
|
-
}
|
|
829
|
-
if (field.type === 'choice') {
|
|
830
|
-
newRow[key] = row[key]
|
|
831
|
-
? {
|
|
832
|
-
value: row[key],
|
|
833
|
-
display_name: (0, utils_1.getChoiceByValue)(row[key], field.choices),
|
|
834
|
-
}
|
|
835
|
-
: (0, utils_1.emptyByType)(field);
|
|
836
|
-
continue;
|
|
837
|
-
}
|
|
838
|
-
newRow[key] = row[key] ? row[key] : (0, utils_1.emptyByType)(field);
|
|
923
|
+
else {
|
|
924
|
+
return response;
|
|
839
925
|
}
|
|
840
|
-
return newRow;
|
|
841
|
-
});
|
|
842
|
-
}
|
|
843
|
-
if (!schema || !columns) {
|
|
844
|
-
return {
|
|
845
|
-
message: `Schema or columns not found for ${model}`,
|
|
846
|
-
isAxiosError: true,
|
|
847
|
-
};
|
|
848
|
-
}
|
|
849
|
-
return { data, columns, schema, modelOptions, rowCount, sumRowsTotals };
|
|
850
|
-
});
|
|
851
|
-
exports.getGenericModelList = getGenericModelList;
|
|
852
|
-
const getGenericModel = (_a) => __awaiter(void 0, [_a], void 0, function* ({ model, serverEndPoint, id = '', relatedModel = '', relatedModelId = '', schemas, }) {
|
|
853
|
-
let path = `${model}/${id}`;
|
|
854
|
-
let schemaPath = `${model}/`;
|
|
855
|
-
if (!(0, utils_1.isTmpId)(id) && relatedModel) {
|
|
856
|
-
path += `/${relatedModel}/`;
|
|
857
|
-
if (relatedModelId) {
|
|
858
|
-
path += `${relatedModelId}/`;
|
|
859
|
-
}
|
|
860
|
-
schemaPath += `${id}/${relatedModel}/`;
|
|
861
|
-
}
|
|
862
|
-
else if (id) {
|
|
863
|
-
path += '/';
|
|
864
|
-
}
|
|
865
|
-
const options = yield getSchema(schemaPath, serverEndPoint, schemas);
|
|
866
|
-
if (!options || axios_1.default.isAxiosError(options)) {
|
|
867
|
-
return (options || { message: unknownError, isAxiosError: true });
|
|
868
|
-
}
|
|
869
|
-
const { schema, modelOptions } = options;
|
|
870
|
-
const columns = getDataGridColumns(schema);
|
|
871
|
-
if (!columns) {
|
|
872
|
-
return {
|
|
873
|
-
message: `Columns could not be generated for ${model}`,
|
|
874
|
-
isAxiosError: true,
|
|
875
|
-
};
|
|
876
|
-
}
|
|
877
|
-
let data = {};
|
|
878
|
-
if (!(0, utils_1.isTmpId)(id) && (!relatedModel || (relatedModel && relatedModelId))) {
|
|
879
|
-
const response = yield getData({ path, serverEndPoint });
|
|
880
|
-
if (!axios_1.default.isAxiosError(response)) {
|
|
881
|
-
data = response;
|
|
882
|
-
}
|
|
883
|
-
else {
|
|
884
|
-
return response;
|
|
885
926
|
}
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
}
|
|
889
|
-
exports.getGenericModel = getGenericModel;
|
|
927
|
+
return { schema, columns, modelOptions, data };
|
|
928
|
+
});
|
|
929
|
+
}
|
|
890
930
|
const getAllModels = (serverEndPoint) => __awaiter(void 0, void 0, void 0, function* () {
|
|
891
931
|
if (!serverEndPoint) {
|
|
892
932
|
return {
|