drf-react-by-schema 0.5.3 → 0.6.0
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/api.d.ts +14 -16
- package/dist/api.js +89 -59
- package/dist/components/DataGridBySchemaEditable/FooterToolbar.d.ts +1 -1
- package/dist/components/DataGridBySchemaEditable/FooterToolbar.js +5 -11
- package/dist/components/DataGridBySchemaEditable/SelectEditInputCell.d.ts +5 -5
- package/dist/components/DataGridBySchemaEditable/SelectEditInputCell.js +33 -34
- package/dist/components/DataGridBySchemaEditable.d.ts +4 -1
- package/dist/components/DataGridBySchemaEditable.js +189 -133
- package/dist/components/GenericModelList.d.ts +3 -2
- package/dist/components/GenericModelList.js +68 -43
- package/dist/context/APIWrapper.js +9 -3
- package/dist/context/APIWrapperContext.d.ts +3 -7
- package/dist/utils.d.ts +16 -4
- package/dist/utils.js +7 -1
- package/package.json +3 -2
package/dist/api.d.ts
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { serverEndPointType } from './context/DRFReactBySchemaContext';
|
|
2
|
-
import { Item, SchemaType, modelOptionsType, DataSchemaColumnsType, ItemSchemaColumnsType } from './utils';
|
|
2
|
+
import { Item, SchemaType, modelOptionsType, DataSchemaColumnsType, ItemSchemaColumnsType, PaginatedResult } from './utils';
|
|
3
|
+
import { GridFilterModel } from '@mui/x-data-grid';
|
|
3
4
|
type Id = string | number | null;
|
|
4
|
-
/**
|
|
5
|
-
* Interface for CRUD on API
|
|
6
|
-
*
|
|
7
|
-
* @interface TargetApiParams
|
|
8
|
-
*/
|
|
9
5
|
interface TargetApiParams {
|
|
10
6
|
path: string;
|
|
11
7
|
serverEndPoint: serverEndPointType | null;
|
|
@@ -20,15 +16,15 @@ interface TargetApiParamsOptionalId {
|
|
|
20
16
|
}
|
|
21
17
|
/**
|
|
22
18
|
*
|
|
23
|
-
* @param
|
|
19
|
+
* @param options - params
|
|
24
20
|
* @returns Id when succesfully updated, false otherwise
|
|
25
21
|
*/
|
|
26
22
|
export declare const updateData: ({ path, serverEndPoint, data, id }: TargetApiParams) => Promise<any>;
|
|
27
23
|
export declare const partialUpdateData: ({ path, serverEndPoint, data, id }: TargetApiParams) => Promise<any>;
|
|
28
24
|
export declare const createData: ({ path, serverEndPoint, data }: Omit<TargetApiParams, 'id'>) => Promise<any>;
|
|
29
25
|
export declare const deleteData: (path: string, serverEndPoint: serverEndPointType | null, id: Id) => Promise<boolean>;
|
|
30
|
-
export declare const createOrUpdateData: ({ path, serverEndPoint, data, id }: TargetApiParamsOptionalId) => Promise<any>;
|
|
31
|
-
export declare const updateDataBySchema: ({ model, modelObjectId, serverEndPoint, data, schema, path }: {
|
|
26
|
+
export declare const createOrUpdateData: ({ path, serverEndPoint, data, id, }: TargetApiParamsOptionalId) => Promise<any>;
|
|
27
|
+
export declare const updateDataBySchema: ({ model, modelObjectId, serverEndPoint, data, schema, path, }: {
|
|
32
28
|
model: string;
|
|
33
29
|
modelObjectId: Id;
|
|
34
30
|
serverEndPoint: serverEndPointType | null;
|
|
@@ -36,22 +32,22 @@ export declare const updateDataBySchema: ({ model, modelObjectId, serverEndPoint
|
|
|
36
32
|
schema: SchemaType;
|
|
37
33
|
path?: string | null | undefined;
|
|
38
34
|
}) => Promise<any>;
|
|
39
|
-
export declare const addExistingRelatedModel: ({ model, serverEndPoint, id, data }: {
|
|
35
|
+
export declare const addExistingRelatedModel: ({ model, serverEndPoint, id, data, }: {
|
|
40
36
|
model: string;
|
|
41
37
|
serverEndPoint: serverEndPointType | null;
|
|
42
38
|
id: Id;
|
|
43
39
|
data: Item;
|
|
44
40
|
}) => Promise<any>;
|
|
45
|
-
export declare const getAutoComplete: ({ model, serverEndPoint }: {
|
|
41
|
+
export declare const getAutoComplete: ({ model, serverEndPoint, }: {
|
|
46
42
|
model: string;
|
|
47
43
|
serverEndPoint: serverEndPointType | null;
|
|
48
44
|
}) => Promise<false | Item[]>;
|
|
49
|
-
export declare const getJSONSchema: ({ model, serverEndPoint, id }: {
|
|
45
|
+
export declare const getJSONSchema: ({ model, serverEndPoint, id, }: {
|
|
50
46
|
model: string;
|
|
51
47
|
serverEndPoint: serverEndPointType | null;
|
|
52
48
|
id?: Id | undefined;
|
|
53
49
|
}) => Promise<any>;
|
|
54
|
-
export declare const createOrUpdateJSONSchema: ({ model, serverEndPoint, id, formData }: {
|
|
50
|
+
export declare const createOrUpdateJSONSchema: ({ model, serverEndPoint, id, formData, }: {
|
|
55
51
|
model: string;
|
|
56
52
|
serverEndPoint: serverEndPointType | null;
|
|
57
53
|
id?: Id | undefined;
|
|
@@ -59,7 +55,7 @@ export declare const createOrUpdateJSONSchema: ({ model, serverEndPoint, id, for
|
|
|
59
55
|
}) => Promise<any>;
|
|
60
56
|
export declare const loginByPayload: (payload: Item, serverEndPoint: serverEndPointType | null) => Promise<boolean>;
|
|
61
57
|
export declare const setAuthToken: (token: string | null) => void;
|
|
62
|
-
export declare const isLoggedIn: (serverEndPoint: serverEndPointType | null) => Promise<false | Item[]>;
|
|
58
|
+
export declare const isLoggedIn: (serverEndPoint: serverEndPointType | null) => Promise<false | Item[] | PaginatedResult>;
|
|
63
59
|
export interface getGenericModelListProps {
|
|
64
60
|
model: string;
|
|
65
61
|
serverEndPoint: serverEndPointType | null;
|
|
@@ -72,9 +68,11 @@ export interface getGenericModelListProps {
|
|
|
72
68
|
isInBatches?: boolean;
|
|
73
69
|
loadedSchema?: SchemaType | boolean;
|
|
74
70
|
loadedModelOptions?: modelOptionsType | boolean;
|
|
71
|
+
page?: number;
|
|
72
|
+
filter?: GridFilterModel;
|
|
75
73
|
}
|
|
76
|
-
export declare const getGenericModelList: ({ model, serverEndPoint, id, relatedModel, relatedModelId, columnFields, hiddenFields, creatableFields, isInBatches, loadedSchema, loadedModelOptions, }: getGenericModelListProps) => Promise<false | DataSchemaColumnsType>;
|
|
77
|
-
export declare const getGenericModel: ({ model, serverEndPoint, id, relatedModel, relatedModelId }: {
|
|
74
|
+
export declare const getGenericModelList: ({ model, serverEndPoint, id, relatedModel, relatedModelId, columnFields, hiddenFields, creatableFields, isInBatches, loadedSchema, loadedModelOptions, page, filter, }: getGenericModelListProps) => Promise<false | DataSchemaColumnsType>;
|
|
75
|
+
export declare const getGenericModel: ({ model, serverEndPoint, id, relatedModel, relatedModelId, }: {
|
|
78
76
|
model: string;
|
|
79
77
|
serverEndPoint: serverEndPointType | null;
|
|
80
78
|
id?: Id | undefined;
|
package/dist/api.js
CHANGED
|
@@ -16,8 +16,6 @@ exports.getGenericModel = exports.getGenericModelList = exports.isLoggedIn = exp
|
|
|
16
16
|
const axios_1 = __importDefault(require("axios"));
|
|
17
17
|
const moment_1 = __importDefault(require("moment"));
|
|
18
18
|
const utils_1 = require("./utils");
|
|
19
|
-
;
|
|
20
|
-
;
|
|
21
19
|
const getOptions = (path, serverEndPoint) => __awaiter(void 0, void 0, void 0, function* () {
|
|
22
20
|
var _a;
|
|
23
21
|
if (!serverEndPoint) {
|
|
@@ -30,7 +28,7 @@ const getOptions = (path, serverEndPoint) => __awaiter(void 0, void 0, void 0, f
|
|
|
30
28
|
return data;
|
|
31
29
|
}
|
|
32
30
|
catch (e) {
|
|
33
|
-
if (
|
|
31
|
+
if (axios_1.default.isAxiosError(e)) {
|
|
34
32
|
const err = e;
|
|
35
33
|
if (((_a = err.response) === null || _a === void 0 ? void 0 : _a.status) === 401) {
|
|
36
34
|
const isRefreshed = yield refreshToken(serverEndPoint);
|
|
@@ -68,7 +66,7 @@ const getSchema = (path, serverEndPoint) => __awaiter(void 0, void 0, void 0, fu
|
|
|
68
66
|
if (usuaria) {
|
|
69
67
|
options.actions.POST[key].model_default = {
|
|
70
68
|
id: usuaria.id,
|
|
71
|
-
label: usuaria.first_name
|
|
69
|
+
label: usuaria.first_name,
|
|
72
70
|
};
|
|
73
71
|
}
|
|
74
72
|
}
|
|
@@ -79,7 +77,7 @@ const getSchema = (path, serverEndPoint) => __awaiter(void 0, void 0, void 0, fu
|
|
|
79
77
|
delete modelOptions.actions;
|
|
80
78
|
return { schema: options.actions.POST, modelOptions };
|
|
81
79
|
});
|
|
82
|
-
const getData = (path, serverEndPoint, route = 'api') => __awaiter(void 0, void 0, void 0, function* () {
|
|
80
|
+
const getData = ({ path, serverEndPoint, route = 'api', page, }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
83
81
|
var _b;
|
|
84
82
|
if (!serverEndPoint) {
|
|
85
83
|
return false;
|
|
@@ -87,10 +85,10 @@ const getData = (path, serverEndPoint, route = 'api') => __awaiter(void 0, void
|
|
|
87
85
|
const url = `${serverEndPoint[route]}/${path}`;
|
|
88
86
|
try {
|
|
89
87
|
const { data } = yield axios_1.default.get(url);
|
|
90
|
-
return data;
|
|
88
|
+
return typeof page === 'undefined' ? data : data;
|
|
91
89
|
}
|
|
92
90
|
catch (e) {
|
|
93
|
-
if (
|
|
91
|
+
if (axios_1.default.isAxiosError(e)) {
|
|
94
92
|
const err = e;
|
|
95
93
|
if (((_b = err.response) === null || _b === void 0 ? void 0 : _b.status) === 401) {
|
|
96
94
|
const isRefreshed = yield refreshToken(serverEndPoint);
|
|
@@ -114,7 +112,7 @@ const getData = (path, serverEndPoint, route = 'api') => __awaiter(void 0, void
|
|
|
114
112
|
});
|
|
115
113
|
/**
|
|
116
114
|
*
|
|
117
|
-
* @param
|
|
115
|
+
* @param options - params
|
|
118
116
|
* @returns Id when succesfully updated, false otherwise
|
|
119
117
|
*/
|
|
120
118
|
const updateData = ({ path, serverEndPoint, data, id }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -127,7 +125,7 @@ const updateData = ({ path, serverEndPoint, data, id }) => __awaiter(void 0, voi
|
|
|
127
125
|
yield axios_1.default.put(url, data);
|
|
128
126
|
}
|
|
129
127
|
catch (e) {
|
|
130
|
-
if (
|
|
128
|
+
if (axios_1.default.isAxiosError(e)) {
|
|
131
129
|
const err = e;
|
|
132
130
|
if (((_c = err.response) === null || _c === void 0 ? void 0 : _c.status) === 401) {
|
|
133
131
|
const isRefreshed = yield refreshToken(serverEndPoint);
|
|
@@ -162,7 +160,7 @@ const partialUpdateData = ({ path, serverEndPoint, data, id }) => __awaiter(void
|
|
|
162
160
|
// DEBUG console.log({ path, data, id });
|
|
163
161
|
}
|
|
164
162
|
catch (e) {
|
|
165
|
-
if (
|
|
163
|
+
if (axios_1.default.isAxiosError(e)) {
|
|
166
164
|
const err = e;
|
|
167
165
|
if (((_f = err.response) === null || _f === void 0 ? void 0 : _f.status) === 401) {
|
|
168
166
|
const isRefreshed = yield refreshToken(serverEndPoint);
|
|
@@ -197,7 +195,7 @@ const createData = ({ path, serverEndPoint, data }) => __awaiter(void 0, void 0,
|
|
|
197
195
|
ret = yield axios_1.default.post(url, data);
|
|
198
196
|
}
|
|
199
197
|
catch (e) {
|
|
200
|
-
if (
|
|
198
|
+
if (axios_1.default.isAxiosError(e)) {
|
|
201
199
|
const err = e;
|
|
202
200
|
if (((_l = err.response) === null || _l === void 0 ? void 0 : _l.status) === 401) {
|
|
203
201
|
const isRefreshed = yield refreshToken(serverEndPoint);
|
|
@@ -232,7 +230,7 @@ const deleteData = (path, serverEndPoint, id) => __awaiter(void 0, void 0, void
|
|
|
232
230
|
yield axios_1.default.delete(url);
|
|
233
231
|
}
|
|
234
232
|
catch (e) {
|
|
235
|
-
if (
|
|
233
|
+
if (axios_1.default.isAxiosError(e)) {
|
|
236
234
|
const err = e;
|
|
237
235
|
if (((_p = err.response) === null || _p === void 0 ? void 0 : _p.status) === 401) {
|
|
238
236
|
const isRefreshed = yield refreshToken(serverEndPoint);
|
|
@@ -256,7 +254,7 @@ const deleteData = (path, serverEndPoint, id) => __awaiter(void 0, void 0, void
|
|
|
256
254
|
return true;
|
|
257
255
|
});
|
|
258
256
|
exports.deleteData = deleteData;
|
|
259
|
-
const createOrUpdateData = ({ path, serverEndPoint, data, id }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
257
|
+
const createOrUpdateData = ({ path, serverEndPoint, data, id, }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
260
258
|
if ((0, utils_1.isTmpId)(id)) {
|
|
261
259
|
id = null;
|
|
262
260
|
}
|
|
@@ -268,11 +266,16 @@ const createOrUpdateData = ({ path, serverEndPoint, data, id }) => __awaiter(voi
|
|
|
268
266
|
if (!responseCreate || Object.prototype.hasOwnProperty.call(responseCreate, 'errors')) {
|
|
269
267
|
return responseCreate;
|
|
270
268
|
}
|
|
271
|
-
const responseUpdate = yield (0, exports.updateData)({
|
|
269
|
+
const responseUpdate = yield (0, exports.updateData)({
|
|
270
|
+
path,
|
|
271
|
+
serverEndPoint,
|
|
272
|
+
data,
|
|
273
|
+
id: responseCreate.data.id,
|
|
274
|
+
});
|
|
272
275
|
return responseUpdate;
|
|
273
276
|
});
|
|
274
277
|
exports.createOrUpdateData = createOrUpdateData;
|
|
275
|
-
const prepareDataBySchema = ({ data, schema
|
|
278
|
+
const prepareDataBySchema = ({ data, schema }) => {
|
|
276
279
|
// console.log('Entered prepareDataBySchema', schema);
|
|
277
280
|
const dbData = {};
|
|
278
281
|
for (const [key, field] of Object.entries(schema)) {
|
|
@@ -288,13 +291,12 @@ const prepareDataBySchema = ({ data, schema, parentIsField = false }) => {
|
|
|
288
291
|
// OneToMany or ManyToMany relations:
|
|
289
292
|
if (field.type === 'field' && field.child) {
|
|
290
293
|
const dataArr = data[key];
|
|
291
|
-
dbData[key] = dataArr.map(row => {
|
|
294
|
+
dbData[key] = dataArr.map((row) => {
|
|
292
295
|
var _a;
|
|
293
296
|
return ((_a = field.child) === null || _a === void 0 ? void 0 : _a.children)
|
|
294
297
|
? prepareDataBySchema({
|
|
295
298
|
data: row,
|
|
296
299
|
schema: field.child.children,
|
|
297
|
-
parentIsField: true
|
|
298
300
|
})
|
|
299
301
|
: row;
|
|
300
302
|
});
|
|
@@ -302,10 +304,10 @@ const prepareDataBySchema = ({ data, schema, parentIsField = false }) => {
|
|
|
302
304
|
}
|
|
303
305
|
// Nested Object:
|
|
304
306
|
if (field.type === 'nested object' && field.children && typeof data[key] === 'object') {
|
|
305
|
-
dbData[key] = (
|
|
307
|
+
dbData[key] = (0, utils_1.isTmpId)(data[key].id)
|
|
306
308
|
? prepareDataBySchema({
|
|
307
309
|
data: data[key],
|
|
308
|
-
schema: field.children
|
|
310
|
+
schema: field.children,
|
|
309
311
|
})
|
|
310
312
|
: data[key].id;
|
|
311
313
|
continue;
|
|
@@ -330,9 +332,10 @@ const prepareDataBySchema = ({ data, schema, parentIsField = false }) => {
|
|
|
330
332
|
// Default:
|
|
331
333
|
dbData[key] = data[key];
|
|
332
334
|
}
|
|
335
|
+
// console.log({dbData});
|
|
333
336
|
return dbData;
|
|
334
337
|
};
|
|
335
|
-
const updateDataBySchema = ({ model, modelObjectId, serverEndPoint, data, schema, path = null }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
338
|
+
const updateDataBySchema = ({ model, modelObjectId, serverEndPoint, data, schema, path = null, }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
336
339
|
/*console.log({
|
|
337
340
|
model,
|
|
338
341
|
modelObjectId,
|
|
@@ -348,7 +351,7 @@ const updateDataBySchema = ({ model, modelObjectId, serverEndPoint, data, schema
|
|
|
348
351
|
path,
|
|
349
352
|
serverEndPoint,
|
|
350
353
|
data: dbData,
|
|
351
|
-
id: modelObjectId
|
|
354
|
+
id: modelObjectId,
|
|
352
355
|
});
|
|
353
356
|
if (typeof response !== 'object' && parseInt(response)) {
|
|
354
357
|
return response;
|
|
@@ -357,7 +360,7 @@ const updateDataBySchema = ({ model, modelObjectId, serverEndPoint, data, schema
|
|
|
357
360
|
return response;
|
|
358
361
|
});
|
|
359
362
|
exports.updateDataBySchema = updateDataBySchema;
|
|
360
|
-
const addExistingRelatedModel = ({ model, serverEndPoint, id, data }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
363
|
+
const addExistingRelatedModel = ({ model, serverEndPoint, id, data, }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
361
364
|
const response = yield (0, exports.partialUpdateData)({ path: model, serverEndPoint, data, id });
|
|
362
365
|
// DEBUG console.log({ model, id, data, response });
|
|
363
366
|
return response;
|
|
@@ -367,28 +370,32 @@ const getDataGridColumns = (schema, columnFields = [], hiddenFields = [], creata
|
|
|
367
370
|
if (!schema) {
|
|
368
371
|
return false;
|
|
369
372
|
}
|
|
370
|
-
columnFields =
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
373
|
+
columnFields =
|
|
374
|
+
!columnFields || columnFields.length === 0
|
|
375
|
+
? Object.keys(schema)
|
|
376
|
+
: columnFields.filter((field) => {
|
|
377
|
+
return Object.prototype.hasOwnProperty.call(schema, field);
|
|
378
|
+
});
|
|
379
|
+
return columnFields.map((field) => {
|
|
376
380
|
const column = {
|
|
377
381
|
field,
|
|
378
382
|
headerName: schema[field].label,
|
|
379
|
-
hide:
|
|
380
|
-
creatable:
|
|
381
|
-
width: 100
|
|
383
|
+
hide: hiddenFields.includes(field),
|
|
384
|
+
creatable: creatableFields.includes(field) || schema[field].creatable,
|
|
385
|
+
width: 100,
|
|
382
386
|
};
|
|
383
387
|
return column;
|
|
384
388
|
});
|
|
385
389
|
};
|
|
386
|
-
const getAutoComplete = ({ model, serverEndPoint }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
387
|
-
const data = yield getData(model, serverEndPoint, 'autocomplete');
|
|
390
|
+
const getAutoComplete = ({ model, serverEndPoint, }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
391
|
+
const data = yield getData({ path: model, serverEndPoint, route: 'autocomplete' });
|
|
392
|
+
if (data === false) {
|
|
393
|
+
return false;
|
|
394
|
+
}
|
|
388
395
|
return data;
|
|
389
396
|
});
|
|
390
397
|
exports.getAutoComplete = getAutoComplete;
|
|
391
|
-
const getJSONSchema = ({ model, serverEndPoint, id = 'create' }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
398
|
+
const getJSONSchema = ({ model, serverEndPoint, id = 'create', }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
392
399
|
var _q;
|
|
393
400
|
if (!serverEndPoint) {
|
|
394
401
|
console.log('Não há definição de API (serverEndPoint!');
|
|
@@ -400,7 +407,7 @@ const getJSONSchema = ({ model, serverEndPoint, id = 'create' }) => __awaiter(vo
|
|
|
400
407
|
return data;
|
|
401
408
|
}
|
|
402
409
|
catch (e) {
|
|
403
|
-
if (
|
|
410
|
+
if (axios_1.default.isAxiosError(e)) {
|
|
404
411
|
const err = e;
|
|
405
412
|
if (((_q = err.response) === null || _q === void 0 ? void 0 : _q.status) === 401) {
|
|
406
413
|
const isRefreshed = yield refreshToken(serverEndPoint);
|
|
@@ -423,7 +430,7 @@ const getJSONSchema = ({ model, serverEndPoint, id = 'create' }) => __awaiter(vo
|
|
|
423
430
|
}
|
|
424
431
|
});
|
|
425
432
|
exports.getJSONSchema = getJSONSchema;
|
|
426
|
-
const createOrUpdateJSONSchema = ({ model, serverEndPoint, id = 'create', formData }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
433
|
+
const createOrUpdateJSONSchema = ({ model, serverEndPoint, id = 'create', formData, }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
427
434
|
var _r;
|
|
428
435
|
if (!serverEndPoint) {
|
|
429
436
|
return { errors: 'Não há definição de API (serverEndPoint!' };
|
|
@@ -433,13 +440,11 @@ const createOrUpdateJSONSchema = ({ model, serverEndPoint, id = 'create', formDa
|
|
|
433
440
|
url += `${id}/`;
|
|
434
441
|
}
|
|
435
442
|
try {
|
|
436
|
-
const { data } =
|
|
437
|
-
? yield axios_1.default.post(url, formData)
|
|
438
|
-
: yield axios_1.default.patch(url, formData);
|
|
443
|
+
const { data } = id === 'create' ? yield axios_1.default.post(url, formData) : yield axios_1.default.patch(url, formData);
|
|
439
444
|
return data;
|
|
440
445
|
}
|
|
441
446
|
catch (e) {
|
|
442
|
-
if (
|
|
447
|
+
if (axios_1.default.isAxiosError(e)) {
|
|
443
448
|
const err = e;
|
|
444
449
|
if (((_r = err.response) === null || _r === void 0 ? void 0 : _r.status) === 401) {
|
|
445
450
|
const isRefreshed = yield refreshToken(serverEndPoint);
|
|
@@ -448,7 +453,7 @@ const createOrUpdateJSONSchema = ({ model, serverEndPoint, id = 'create', formDa
|
|
|
448
453
|
return { errors: 'Token expirou! Deve-se fazer login de novo!' };
|
|
449
454
|
}
|
|
450
455
|
try {
|
|
451
|
-
const { data } =
|
|
456
|
+
const { data } = id === 'create'
|
|
452
457
|
? yield axios_1.default.post(url, formData)
|
|
453
458
|
: yield axios_1.default.patch(url, formData);
|
|
454
459
|
return data;
|
|
@@ -511,7 +516,7 @@ const refreshToken = (serverEndPoint) => __awaiter(void 0, void 0, void 0, funct
|
|
|
511
516
|
}
|
|
512
517
|
try {
|
|
513
518
|
const { data } = yield axios_1.default.post(`${serverEndPoint.refreshToken}`, {
|
|
514
|
-
refresh: refreshToken
|
|
519
|
+
refresh: refreshToken,
|
|
515
520
|
});
|
|
516
521
|
(0, exports.setAuthToken)(data.access);
|
|
517
522
|
return true;
|
|
@@ -527,7 +532,7 @@ const isLoggedIn = (serverEndPoint) => __awaiter(void 0, void 0, void 0, functio
|
|
|
527
532
|
if (!token) {
|
|
528
533
|
return false;
|
|
529
534
|
}
|
|
530
|
-
const usuaria = yield getData('minhaconta', serverEndPoint);
|
|
535
|
+
const usuaria = yield getData({ path: 'minhaconta', serverEndPoint });
|
|
531
536
|
if (!usuaria) {
|
|
532
537
|
console.log('Erro ao recuperar dados de usuária!');
|
|
533
538
|
return false;
|
|
@@ -535,8 +540,7 @@ const isLoggedIn = (serverEndPoint) => __awaiter(void 0, void 0, void 0, functio
|
|
|
535
540
|
return usuaria;
|
|
536
541
|
});
|
|
537
542
|
exports.isLoggedIn = isLoggedIn;
|
|
538
|
-
|
|
539
|
-
const getGenericModelList = ({ model, serverEndPoint, id = '', relatedModel = '', relatedModelId = '', columnFields, hiddenFields = ['id'], creatableFields = [], isInBatches = false, loadedSchema, loadedModelOptions, }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
543
|
+
const getGenericModelList = ({ model, serverEndPoint, id = '', relatedModel = '', relatedModelId = '', columnFields, hiddenFields = ['id'], creatableFields = [], isInBatches = false, loadedSchema, loadedModelOptions, page, filter, }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
540
544
|
let path = `${model}/${id}`;
|
|
541
545
|
let schemaPath = model;
|
|
542
546
|
let schema = loadedSchema;
|
|
@@ -546,6 +550,31 @@ const getGenericModelList = ({ model, serverEndPoint, id = '', relatedModel = ''
|
|
|
546
550
|
path += `/${relatedModel}/${relatedModelId}`;
|
|
547
551
|
schemaPath += `/${id}/${relatedModel}`;
|
|
548
552
|
}
|
|
553
|
+
if (page || filter) {
|
|
554
|
+
path += '?';
|
|
555
|
+
}
|
|
556
|
+
if (page) {
|
|
557
|
+
path += `page=${page + 1}`;
|
|
558
|
+
}
|
|
559
|
+
if (filter) {
|
|
560
|
+
const filtersArr = [];
|
|
561
|
+
if (filter.quickFilterValues && filter.quickFilterValues.length > 0 && filter.quickFilterValues[0]) {
|
|
562
|
+
filtersArr.push(`search=${filter.quickFilterValues[0]}`);
|
|
563
|
+
}
|
|
564
|
+
for (const item of filter.items) {
|
|
565
|
+
if (!item.operatorValue) {
|
|
566
|
+
continue;
|
|
567
|
+
}
|
|
568
|
+
const queryParam = item.value
|
|
569
|
+
? `columnField=${item.columnField}&operatorValue=${item.operatorValue}&value=${item.value}`
|
|
570
|
+
: `columnField=${item.columnField}&operatorValue=${item.operatorValue}`;
|
|
571
|
+
filtersArr.push(queryParam);
|
|
572
|
+
}
|
|
573
|
+
if (page) {
|
|
574
|
+
path += '&';
|
|
575
|
+
}
|
|
576
|
+
path += filtersArr.join('&');
|
|
577
|
+
}
|
|
549
578
|
// Only get schema and columns if not in batches or in first batch:
|
|
550
579
|
if (!schema) {
|
|
551
580
|
const options = yield getSchema(schemaPath, serverEndPoint);
|
|
@@ -559,18 +588,21 @@ const getGenericModelList = ({ model, serverEndPoint, id = '', relatedModel = ''
|
|
|
559
588
|
return false;
|
|
560
589
|
}
|
|
561
590
|
}
|
|
591
|
+
let rowCount = 0;
|
|
562
592
|
let data = [];
|
|
563
593
|
if (!id || (id && !relatedModelId)) {
|
|
564
594
|
if (isInBatches) {
|
|
565
|
-
path +=
|
|
566
|
-
? '?is_last_batch=1'
|
|
567
|
-
: '?is_first_batch=1';
|
|
595
|
+
path += loadedSchema ? '?is_last_batch=1' : '?is_first_batch=1';
|
|
568
596
|
}
|
|
569
|
-
const ret = yield getData(path, serverEndPoint);
|
|
597
|
+
const ret = yield getData({ path, serverEndPoint, page });
|
|
570
598
|
if (ret === false) {
|
|
571
599
|
return false;
|
|
572
600
|
}
|
|
573
|
-
|
|
601
|
+
const dataRaw = 'results' in ret ? ret.results : ret;
|
|
602
|
+
if ('results' in ret) {
|
|
603
|
+
rowCount = ret.count;
|
|
604
|
+
}
|
|
605
|
+
data = dataRaw.map((row) => {
|
|
574
606
|
const newRow = {};
|
|
575
607
|
for (const [key, field] of Object.entries(schema)) {
|
|
576
608
|
if (!(key in row)) {
|
|
@@ -580,27 +612,25 @@ const getGenericModelList = ({ model, serverEndPoint, id = '', relatedModel = ''
|
|
|
580
612
|
newRow[key] = row[key]
|
|
581
613
|
? {
|
|
582
614
|
value: row[key],
|
|
583
|
-
display_name: (0, utils_1.getChoiceByValue)(row[key], field.choices)
|
|
615
|
+
display_name: (0, utils_1.getChoiceByValue)(row[key], field.choices),
|
|
584
616
|
}
|
|
585
617
|
: (0, utils_1.emptyByType)(field);
|
|
586
618
|
continue;
|
|
587
619
|
}
|
|
588
|
-
newRow[key] =
|
|
589
|
-
? row[key]
|
|
590
|
-
: (0, utils_1.emptyByType)(field);
|
|
620
|
+
newRow[key] = row[key] ? row[key] : (0, utils_1.emptyByType)(field);
|
|
591
621
|
}
|
|
592
622
|
return newRow;
|
|
593
623
|
});
|
|
594
624
|
}
|
|
595
625
|
if (loadedSchema) {
|
|
596
626
|
// DEBUG console.log({ path, data });
|
|
597
|
-
return { data };
|
|
627
|
+
return { data, rowCount };
|
|
598
628
|
}
|
|
599
629
|
// DEBUG console.log({ path, data, columns, schema });
|
|
600
|
-
return { data, columns, schema, modelOptions };
|
|
630
|
+
return { data, columns, schema, modelOptions, rowCount };
|
|
601
631
|
});
|
|
602
632
|
exports.getGenericModelList = getGenericModelList;
|
|
603
|
-
const getGenericModel = ({ model, serverEndPoint, id = '', relatedModel = '', relatedModelId = '' }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
633
|
+
const getGenericModel = ({ model, serverEndPoint, id = '', relatedModel = '', relatedModelId = '', }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
604
634
|
let path = `${model}/${id}`;
|
|
605
635
|
let schemaPath = model;
|
|
606
636
|
if (id && relatedModel) {
|
|
@@ -612,9 +642,9 @@ const getGenericModel = ({ model, serverEndPoint, id = '', relatedModel = '', re
|
|
|
612
642
|
return false;
|
|
613
643
|
}
|
|
614
644
|
const { schema, modelOptions } = options;
|
|
615
|
-
const data =
|
|
645
|
+
const data = !id || (id && relatedModel && !relatedModelId)
|
|
616
646
|
? {}
|
|
617
|
-
: yield getData(path, serverEndPoint);
|
|
647
|
+
: yield getData({ path, serverEndPoint });
|
|
618
648
|
// console.log({ schema, data }); // DEBUG
|
|
619
649
|
return { schema, modelOptions, data };
|
|
620
650
|
});
|
|
@@ -13,5 +13,5 @@ type FooterToolbarProps = {
|
|
|
13
13
|
indexField: string;
|
|
14
14
|
isEditable: boolean;
|
|
15
15
|
};
|
|
16
|
-
export declare const FooterToolbar: ({ name, setRowModesModel, dataGrid, setDataGrid, emptyItem, indexField, isEditable }: FooterToolbarProps) => JSX.Element;
|
|
16
|
+
export declare const FooterToolbar: ({ name, setRowModesModel, dataGrid, setDataGrid, emptyItem, indexField, isEditable, }: FooterToolbarProps) => JSX.Element;
|
|
17
17
|
export {};
|
|
@@ -9,16 +9,13 @@ const x_data_grid_1 = require("@mui/x-data-grid");
|
|
|
9
9
|
const Button_1 = __importDefault(require("@mui/material/Button"));
|
|
10
10
|
const Add_1 = __importDefault(require("@mui/icons-material/Add"));
|
|
11
11
|
const utils_1 = require("../../utils");
|
|
12
|
-
const FooterToolbar = ({ name, setRowModesModel, dataGrid, setDataGrid, emptyItem, indexField, isEditable }) => {
|
|
12
|
+
const FooterToolbar = ({ name, setRowModesModel, dataGrid, setDataGrid, emptyItem, indexField, isEditable, }) => {
|
|
13
13
|
const handleClick = () => {
|
|
14
14
|
const id = (0, utils_1.getTmpId)();
|
|
15
15
|
emptyItem.current.id = id;
|
|
16
|
-
const newData = [
|
|
17
|
-
Object.assign({}, emptyItem.current),
|
|
18
|
-
...dataGrid.data
|
|
19
|
-
];
|
|
16
|
+
const newData = [Object.assign({}, emptyItem.current), ...dataGrid.data];
|
|
20
17
|
setDataGrid({
|
|
21
|
-
data: newData
|
|
18
|
+
data: newData,
|
|
22
19
|
});
|
|
23
20
|
setRowModesModel((oldModel) => (Object.assign(Object.assign({}, oldModel), { [id]: { mode: x_data_grid_1.GridRowModes.Edit, fieldToFocus: indexField } })));
|
|
24
21
|
// Ugly hack to scroll to top, since scroll to cell is only available in Pro
|
|
@@ -32,10 +29,7 @@ const FooterToolbar = ({ name, setRowModesModel, dataGrid, setDataGrid, emptyIte
|
|
|
32
29
|
}
|
|
33
30
|
};
|
|
34
31
|
return (react_1.default.createElement(x_data_grid_1.GridFooterContainer, null,
|
|
35
|
-
isEditable &&
|
|
36
|
-
|
|
37
|
-
react_1.default.createElement(x_data_grid_1.GridFooter, { sx: (isEditable)
|
|
38
|
-
? { border: 'none' }
|
|
39
|
-
: { width: '100%' } })));
|
|
32
|
+
isEditable && (react_1.default.createElement(Button_1.default, { color: "primary", startIcon: react_1.default.createElement(Add_1.default, null), onClick: handleClick, sx: { ml: 2 } }, "Adicionar")),
|
|
33
|
+
react_1.default.createElement(x_data_grid_1.GridFooter, { sx: isEditable ? { border: 'none' } : { width: '100%' } })));
|
|
40
34
|
};
|
|
41
35
|
exports.FooterToolbar = FooterToolbar;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import { SxProps } from
|
|
3
|
-
import { GridEnrichedBySchemaColDef } from
|
|
4
|
-
import { OptionsACType, OnEditModelType } from
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { SxProps } from "@mui/material";
|
|
3
|
+
import { GridEnrichedBySchemaColDef } from "../../utils";
|
|
4
|
+
import { OptionsACType, OnEditModelType } from "../../context/APIWrapperContext";
|
|
5
5
|
interface SelectEditInputCellProps {
|
|
6
6
|
field: string;
|
|
7
7
|
id: number | string;
|
|
@@ -30,5 +30,5 @@ interface SelectEditInputCellProps {
|
|
|
30
30
|
* }
|
|
31
31
|
* @returns {*} {JSX.Element}
|
|
32
32
|
*/
|
|
33
|
-
export declare function SelectEditInputCell({ field, id, value, column, type, optionsAC, isIndexField, multiple, onEditModel, sx }: SelectEditInputCellProps): JSX.Element;
|
|
33
|
+
export declare function SelectEditInputCell({ field, id, value, column, type, optionsAC, isIndexField, multiple, onEditModel, sx, }: SelectEditInputCellProps): JSX.Element;
|
|
34
34
|
export {};
|