drf-react-by-schema 0.8.6 → 0.8.8
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.
|
@@ -18,6 +18,7 @@ interface GenericModelListProps {
|
|
|
18
18
|
hasHeader: boolean;
|
|
19
19
|
paginationMode: 'server' | 'client';
|
|
20
20
|
defaultFilter?: GridFilterModel;
|
|
21
|
+
queryParams?: string[];
|
|
21
22
|
}
|
|
22
|
-
declare const GenericModelList: ({ columnFields, hiddenFields, minWidthFields, indexFieldBasePath, indexField, customColumnOperations, customLinkDestination, sumRows, isAutoHeight, model, forceReload, LinkComponent, hasHeader, paginationMode, defaultFilter, }: GenericModelListProps) => JSX.Element;
|
|
23
|
+
declare const GenericModelList: ({ columnFields, hiddenFields, minWidthFields, indexFieldBasePath, indexField, customColumnOperations, customLinkDestination, sumRows, isAutoHeight, model, forceReload, LinkComponent, hasHeader, paginationMode, defaultFilter, queryParams, }: GenericModelListProps) => JSX.Element;
|
|
23
24
|
export default GenericModelList;
|
|
@@ -48,7 +48,7 @@ const utils_1 = require("../utils");
|
|
|
48
48
|
const api_1 = require("../api");
|
|
49
49
|
const DRFReactBySchemaContext_1 = require("../context/DRFReactBySchemaContext");
|
|
50
50
|
const APIWrapperContext_1 = require("../context/APIWrapperContext");
|
|
51
|
-
const GenericModelList = ({ columnFields, hiddenFields = [], minWidthFields, indexFieldBasePath, indexField, customColumnOperations, customLinkDestination, sumRows, isAutoHeight = true, model, forceReload = false, LinkComponent = null, hasHeader = false, paginationMode = 'client', defaultFilter, }) => {
|
|
51
|
+
const GenericModelList = ({ columnFields, hiddenFields = [], minWidthFields, indexFieldBasePath, indexField, customColumnOperations, customLinkDestination, sumRows, isAutoHeight = true, model, forceReload = false, LinkComponent = null, hasHeader = false, paginationMode = 'client', defaultFilter, queryParams, }) => {
|
|
52
52
|
const context = react_1.default.useContext(DRFReactBySchemaContext_1.DRFReactBySchemaContext);
|
|
53
53
|
const apiContext = react_1.default.useContext(APIWrapperContext_1.APIWrapperContext);
|
|
54
54
|
if (!apiContext) {
|
|
@@ -82,6 +82,7 @@ const GenericModelList = ({ columnFields, hiddenFields = [], minWidthFields, ind
|
|
|
82
82
|
columnFields,
|
|
83
83
|
hiddenFields,
|
|
84
84
|
isInBatches,
|
|
85
|
+
queryParams,
|
|
85
86
|
};
|
|
86
87
|
const loadedData = yield (0, api_1.getGenericModelList)(loadParams);
|
|
87
88
|
if (loadedData && typeof loadedData !== 'boolean') {
|
|
@@ -111,6 +112,7 @@ const GenericModelList = ({ columnFields, hiddenFields = [], minWidthFields, ind
|
|
|
111
112
|
hiddenFields,
|
|
112
113
|
page,
|
|
113
114
|
filter,
|
|
115
|
+
queryParams,
|
|
114
116
|
sort,
|
|
115
117
|
sumRows,
|
|
116
118
|
};
|
|
@@ -129,7 +131,7 @@ const GenericModelList = ({ columnFields, hiddenFields = [], minWidthFields, ind
|
|
|
129
131
|
}
|
|
130
132
|
(0, react_1.useEffect)(() => {
|
|
131
133
|
loadObjectList();
|
|
132
|
-
}, [model, defaultFilter]);
|
|
134
|
+
}, [model, defaultFilter, queryParams]);
|
|
133
135
|
(0, react_1.useEffect)(() => {
|
|
134
136
|
if (paginationMode === 'server') {
|
|
135
137
|
loadObjectList();
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { GridFilterModel } from '@mui/x-data-grid';
|
|
2
3
|
import { GridEnrichedBySchemaColDef, Id, Item } from '../utils';
|
|
3
4
|
import { SumRowsType } from '../api';
|
|
4
5
|
interface GenericRelatedModelListProps {
|
|
@@ -22,6 +23,9 @@ interface GenericRelatedModelListProps {
|
|
|
22
23
|
indexFieldBasePath?: string;
|
|
23
24
|
noCardWrapper?: boolean;
|
|
24
25
|
LinkComponent?: React.ReactNode;
|
|
26
|
+
paginationMode: 'server' | 'client';
|
|
27
|
+
defaultFilter?: GridFilterModel;
|
|
28
|
+
queryParams?: string[];
|
|
25
29
|
}
|
|
26
|
-
export default function GenericRelatedModelList({ id, model, relatedModel, columnFields, creatableFields, hiddenFields, usuaria, minWidthFields, indexField, addExistingModel, label, onProcessRow, sumRows, customColumnOperations, isEditable, isAutoHeight, isInBatches, indexFieldBasePath, noCardWrapper, }: GenericRelatedModelListProps): JSX.Element;
|
|
30
|
+
export default function GenericRelatedModelList({ id, model, relatedModel, columnFields, creatableFields, hiddenFields, usuaria, minWidthFields, indexField, addExistingModel, label, onProcessRow, sumRows, customColumnOperations, isEditable, isAutoHeight, isInBatches, indexFieldBasePath, noCardWrapper, paginationMode, defaultFilter, queryParams, }: GenericRelatedModelListProps): JSX.Element;
|
|
27
31
|
export {};
|
|
@@ -43,18 +43,24 @@ const CardContent_1 = __importDefault(require("@mui/material/CardContent"));
|
|
|
43
43
|
const DataGridBySchemaEditable_1 = __importDefault(require("./DataGridBySchemaEditable"));
|
|
44
44
|
const DataTotals_1 = __importDefault(require("./DataTotals"));
|
|
45
45
|
const APIWrapperContext_1 = require("../context/APIWrapperContext");
|
|
46
|
+
const utils_1 = require("../utils");
|
|
46
47
|
const api_1 = require("../api");
|
|
47
48
|
const styles_1 = require("../styles");
|
|
48
|
-
const ContentTable = ({ data, relatedModel, model, id, indexField, indexFieldBasePath, addExistingModel, isEditable, onEditModel, finalCustomColumnOperations, setVisibleRows, isAutoHeight, hideFooterPagination, onProcessRow, setData, sumRows, visibleRows, }) => (react_1.default.createElement(react_1.default.Fragment, null,
|
|
49
|
+
const ContentTable = ({ data, relatedModel, model, id, indexField, indexFieldBasePath, addExistingModel, isEditable, onEditModel, finalCustomColumnOperations, setVisibleRows, isAutoHeight, hideFooterPagination, onProcessRow, setData, sumRows, visibleRows, paginationMode = 'client', paginationModel, setPaginationModel, }) => (react_1.default.createElement(react_1.default.Fragment, null,
|
|
49
50
|
data.columns && (react_1.default.createElement(Box_1.default, { sx: styles_1.Layout.dataGridFixedHeight },
|
|
50
51
|
react_1.default.createElement(DataGridBySchemaEditable_1.default, { data: data.data, columns: data.columns, schema: data.schema, model: relatedModel, modelParent: model, modelParentId: id, indexField: indexField, indexFieldBasePath: indexFieldBasePath, addExistingModel: addExistingModel, isEditable: isEditable, onEditModel: onEditModel, customColumnOperations: finalCustomColumnOperations, setVisibleRows: setVisibleRows, isAutoHeight: isAutoHeight, hideFooterPagination: hideFooterPagination, onProcessRow: onProcessRow, onDataChange: (newData) => {
|
|
51
52
|
setData(Object.assign(Object.assign({}, data), { data: newData }));
|
|
52
|
-
}
|
|
53
|
+
}, paginationModel: paginationMode === 'server' ? paginationModel : undefined, setPaginationModel: paginationMode === 'server' ? setPaginationModel : undefined, rowCount: paginationMode === 'client'
|
|
54
|
+
? undefined
|
|
55
|
+
: typeof data.rowCount !== undefined
|
|
56
|
+
? data.rowCount
|
|
57
|
+
: 0 }))),
|
|
53
58
|
react_1.default.createElement(DataTotals_1.default, { data: data.data, sumRows: sumRows, visibleRows: visibleRows })));
|
|
54
|
-
function GenericRelatedModelList({ id, model, relatedModel, columnFields, creatableFields, hiddenFields, usuaria = null, minWidthFields, indexField, addExistingModel, label, onProcessRow, sumRows, customColumnOperations, isEditable = true, isAutoHeight = false, isInBatches = true, indexFieldBasePath, noCardWrapper = false, }) {
|
|
59
|
+
function GenericRelatedModelList({ id, model, relatedModel, columnFields, creatableFields, hiddenFields, usuaria = null, minWidthFields, indexField, addExistingModel, label, onProcessRow, sumRows, customColumnOperations, isEditable = true, isAutoHeight = false, isInBatches = true, indexFieldBasePath, noCardWrapper = false, paginationMode = 'client', defaultFilter, queryParams, }) {
|
|
55
60
|
const [data, setData] = (0, react_1.useState)(false);
|
|
56
61
|
const [visibleRows, setVisibleRows] = (0, react_1.useState)([]);
|
|
57
62
|
const [hideFooterPagination, setHideFooterPagination] = (0, react_1.useState)(false);
|
|
63
|
+
const [paginationModel, setPaginationModel] = (0, react_1.useState)(paginationMode === 'server' ? { page: 0, pageSize: 100 } : undefined);
|
|
58
64
|
const { onEditModel, onDeleteRelatedModel, serverEndPoint } = (0, APIWrapperContext_1.useAPIWrapper)();
|
|
59
65
|
const finalCustomColumnOperations = (column) => {
|
|
60
66
|
if (minWidthFields) {
|
|
@@ -68,40 +74,74 @@ function GenericRelatedModelList({ id, model, relatedModel, columnFields, creata
|
|
|
68
74
|
return column;
|
|
69
75
|
};
|
|
70
76
|
const loadObjectList = () => __awaiter(this, void 0, void 0, function* () {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
if (
|
|
90
|
-
|
|
91
|
-
|
|
77
|
+
switch (paginationMode) {
|
|
78
|
+
case 'client':
|
|
79
|
+
const loadParams = {
|
|
80
|
+
model,
|
|
81
|
+
id,
|
|
82
|
+
relatedModel,
|
|
83
|
+
indexFieldBasePath,
|
|
84
|
+
columnFields,
|
|
85
|
+
creatableFields,
|
|
86
|
+
hiddenFields,
|
|
87
|
+
usuaria,
|
|
88
|
+
isInBatches,
|
|
89
|
+
queryParams,
|
|
90
|
+
serverEndPoint,
|
|
91
|
+
};
|
|
92
|
+
const loadedData = yield (0, api_1.getGenericModelList)(loadParams);
|
|
93
|
+
if (loadedData && typeof loadedData !== 'boolean') {
|
|
94
|
+
setData(loadedData);
|
|
95
|
+
if (isInBatches && loadedData.data.length === 100) {
|
|
96
|
+
setHideFooterPagination(true);
|
|
97
|
+
(0, api_1.getGenericModelList)(Object.assign(Object.assign({}, loadParams), { loadedSchema: loadedData.schema })).then((lastBatchData) => {
|
|
98
|
+
if (lastBatchData) {
|
|
99
|
+
setData(Object.assign(Object.assign({}, loadedData), { data: [...loadedData.data, ...lastBatchData.data] }));
|
|
100
|
+
setHideFooterPagination(false);
|
|
101
|
+
}
|
|
102
|
+
});
|
|
92
103
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
console.log('error retrieving data!');
|
|
107
|
+
break;
|
|
108
|
+
case 'server':
|
|
109
|
+
const page = paginationModel ? paginationModel.page : 0;
|
|
110
|
+
const filter = (0, utils_1.mergeFilterItems)(defaultFilter, paginationModel ? paginationModel.filter : undefined);
|
|
111
|
+
const sort = paginationModel ? paginationModel.sort : undefined;
|
|
112
|
+
const loadPaginatedParams = {
|
|
113
|
+
model,
|
|
114
|
+
id,
|
|
115
|
+
relatedModel,
|
|
116
|
+
columnFields,
|
|
117
|
+
hiddenFields,
|
|
118
|
+
page,
|
|
119
|
+
filter,
|
|
120
|
+
sort,
|
|
121
|
+
sumRows,
|
|
122
|
+
queryParams,
|
|
123
|
+
serverEndPoint,
|
|
124
|
+
};
|
|
125
|
+
const paginatedData = yield (0, api_1.getGenericModelList)(loadPaginatedParams);
|
|
126
|
+
if (paginatedData && typeof paginatedData !== 'boolean') {
|
|
127
|
+
setData(paginatedData);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
console.log('error retrieving data!');
|
|
131
|
+
break;
|
|
96
132
|
}
|
|
97
|
-
console.log('error retrieving data!');
|
|
98
133
|
});
|
|
99
134
|
(0, react_1.useEffect)(() => {
|
|
100
135
|
loadObjectList();
|
|
101
|
-
}, []);
|
|
102
|
-
|
|
136
|
+
}, [model, defaultFilter, queryParams]);
|
|
137
|
+
(0, react_1.useEffect)(() => {
|
|
138
|
+
if (paginationMode === 'server') {
|
|
139
|
+
loadObjectList();
|
|
140
|
+
}
|
|
141
|
+
}, [paginationModel]);
|
|
142
|
+
return (react_1.default.createElement(react_1.default.Fragment, null, typeof data !== 'boolean' && data.columns && (react_1.default.createElement(react_1.default.Fragment, null, noCardWrapper ? (react_1.default.createElement(ContentTable, { data: data, model: model, relatedModel: relatedModel, id: id, indexField: indexField || '', indexFieldBasePath: indexFieldBasePath, addExistingModel: addExistingModel, isEditable: isEditable, onEditModel: onEditModel, onDeleteRelatedModel: onDeleteRelatedModel, finalCustomColumnOperations: finalCustomColumnOperations, setVisibleRows: setVisibleRows, isAutoHeight: isAutoHeight, hideFooterPagination: hideFooterPagination, onProcessRow: onProcessRow, setData: setData, sumRows: sumRows, visibleRows: visibleRows, paginationMode: paginationMode, paginationModel: paginationModel, setPaginationModel: setPaginationModel })) : (react_1.default.createElement(Card_1.default, { sx: styles_1.Layout.formCard },
|
|
103
143
|
react_1.default.createElement(CardHeader_1.default, { title: label }),
|
|
104
144
|
react_1.default.createElement(CardContent_1.default, null,
|
|
105
|
-
react_1.default.createElement(ContentTable, { data: data, model: model, relatedModel: relatedModel, id: id, indexField: indexField || '', indexFieldBasePath: indexFieldBasePath, addExistingModel: addExistingModel, isEditable: isEditable, onEditModel: onEditModel, onDeleteRelatedModel: onDeleteRelatedModel, finalCustomColumnOperations: finalCustomColumnOperations, setVisibleRows: setVisibleRows, isAutoHeight: isAutoHeight, hideFooterPagination: hideFooterPagination, onProcessRow: onProcessRow, setData: setData, sumRows: sumRows, visibleRows: visibleRows }))))))));
|
|
145
|
+
react_1.default.createElement(ContentTable, { data: data, model: model, relatedModel: relatedModel, id: id, indexField: indexField || '', indexFieldBasePath: indexFieldBasePath, addExistingModel: addExistingModel, isEditable: isEditable, onEditModel: onEditModel, onDeleteRelatedModel: onDeleteRelatedModel, finalCustomColumnOperations: finalCustomColumnOperations, setVisibleRows: setVisibleRows, isAutoHeight: isAutoHeight, hideFooterPagination: hideFooterPagination, onProcessRow: onProcessRow, setData: setData, sumRows: sumRows, visibleRows: visibleRows, paginationMode: paginationMode, paginationModel: paginationModel, setPaginationModel: setPaginationModel }))))))));
|
|
106
146
|
}
|
|
107
147
|
exports.default = GenericRelatedModelList;
|
package/package.json
CHANGED