@mui/x-data-grid-generator 6.0.0-alpha.8 → 6.0.0-beta.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/CHANGELOG.md +1163 -15
- package/columns/commodities.columns.js +0 -1
- package/columns/employees.columns.js +0 -1
- package/hooks/useDemoData.d.ts +2 -2
- package/hooks/useDemoData.js +9 -31
- package/hooks/useMovieData.d.ts +3 -3
- package/hooks/useMovieData.js +0 -1
- package/hooks/useQuery.d.ts +13 -13
- package/hooks/useQuery.js +13 -45
- package/index.js +4 -2
- package/legacy/columns/commodities.columns.js +0 -1
- package/legacy/columns/employees.columns.js +0 -2
- package/legacy/hooks/useBasicDemoData.js +6 -7
- package/legacy/hooks/useDemoData.js +28 -70
- package/legacy/hooks/useMovieData.js +0 -2
- package/legacy/hooks/useQuery.js +40 -79
- package/legacy/index.js +4 -2
- package/legacy/renderer/renderAvatar.js +0 -1
- package/legacy/renderer/renderCountry.js +3 -4
- package/legacy/renderer/renderEditCountry.js +2 -8
- package/legacy/renderer/renderEditCurrency.js +2 -8
- package/legacy/renderer/renderEditIncoterm.js +2 -10
- package/legacy/renderer/renderEditProgress.js +7 -17
- package/legacy/renderer/renderEditRating.js +2 -10
- package/legacy/renderer/renderEditStatus.js +2 -15
- package/legacy/renderer/renderEmail.js +0 -1
- package/legacy/renderer/renderIncoterm.js +0 -2
- package/legacy/renderer/renderLink.js +0 -2
- package/legacy/renderer/renderPnl.js +0 -3
- package/legacy/renderer/renderProgress.js +4 -5
- package/legacy/renderer/renderRating.js +3 -4
- package/legacy/renderer/renderStatus.js +8 -13
- package/legacy/renderer/renderTotalPrice.js +5 -6
- package/legacy/services/asyncWorker.js +4 -7
- package/legacy/services/basic-data-service.js +0 -5
- package/legacy/services/random-generator.js +6 -20
- package/legacy/services/real-data-service.js +0 -9
- package/legacy/services/tree-data-generator.js +6 -22
- package/modern/columns/commodities.columns.js +0 -1
- package/modern/columns/employees.columns.js +0 -1
- package/modern/hooks/useDemoData.js +9 -27
- package/modern/hooks/useMovieData.js +0 -1
- package/modern/hooks/useQuery.js +13 -43
- package/modern/index.js +4 -2
- package/modern/renderer/renderAvatar.js +0 -1
- package/modern/renderer/renderCountry.js +3 -4
- package/modern/renderer/renderEditCountry.js +0 -3
- package/modern/renderer/renderEditCurrency.js +0 -3
- package/modern/renderer/renderEditIncoterm.js +0 -5
- package/modern/renderer/renderEditProgress.js +0 -7
- package/modern/renderer/renderEditRating.js +0 -5
- package/modern/renderer/renderEditStatus.js +0 -10
- package/modern/renderer/renderIncoterm.js +0 -2
- package/modern/renderer/renderLink.js +0 -2
- package/modern/renderer/renderPnl.js +0 -3
- package/modern/renderer/renderProgress.js +4 -5
- package/modern/renderer/renderRating.js +3 -4
- package/modern/renderer/renderStatus.js +8 -13
- package/modern/renderer/renderTotalPrice.js +5 -6
- package/modern/services/asyncWorker.js +2 -4
- package/modern/services/basic-data-service.js +0 -5
- package/modern/services/random-generator.js +6 -19
- package/modern/services/real-data-service.js +0 -9
- package/modern/services/tree-data-generator.js +0 -14
- package/node/columns/commodities.columns.js +1 -8
- package/node/columns/employees.columns.js +1 -8
- package/node/columns/index.js +0 -4
- package/node/hooks/index.js +0 -8
- package/node/hooks/useBasicDemoData.js +0 -6
- package/node/hooks/useDemoData.js +17 -62
- package/node/hooks/useMovieData.js +0 -3
- package/node/hooks/useQuery.js +14 -58
- package/node/index.js +4 -10
- package/node/renderer/index.js +0 -32
- package/node/renderer/renderAvatar.js +0 -8
- package/node/renderer/renderCountry.js +3 -12
- package/node/renderer/renderEditCountry.js +0 -16
- package/node/renderer/renderEditCurrency.js +0 -16
- package/node/renderer/renderEditIncoterm.js +0 -17
- package/node/renderer/renderEditProgress.js +0 -20
- package/node/renderer/renderEditRating.js +0 -14
- package/node/renderer/renderEditStatus.js +0 -26
- package/node/renderer/renderEmail.js +1 -9
- package/node/renderer/renderIncoterm.js +0 -12
- package/node/renderer/renderLink.js +0 -9
- package/node/renderer/renderPnl.js +0 -12
- package/node/renderer/renderProgress.js +4 -14
- package/node/renderer/renderRating.js +3 -13
- package/node/renderer/renderStatus.js +8 -26
- package/node/renderer/renderTotalPrice.js +5 -15
- package/node/services/asyncWorker.js +2 -5
- package/node/services/basic-data-service.js +0 -7
- package/node/services/index.js +0 -8
- package/node/services/random-generator.js +7 -105
- package/node/services/real-data-service.js +0 -12
- package/node/services/static-data.js +0 -2
- package/node/services/tree-data-generator.js +1 -22
- package/package.json +5 -5
- package/renderer/renderAvatar.js +0 -1
- package/renderer/renderCountry.js +3 -4
- package/renderer/renderEditCountry.js +0 -3
- package/renderer/renderEditCurrency.d.ts +1 -1
- package/renderer/renderEditCurrency.js +0 -3
- package/renderer/renderEditIncoterm.d.ts +1 -1
- package/renderer/renderEditIncoterm.js +0 -5
- package/renderer/renderEditProgress.d.ts +1 -1
- package/renderer/renderEditProgress.js +0 -7
- package/renderer/renderEditRating.d.ts +1 -1
- package/renderer/renderEditRating.js +0 -5
- package/renderer/renderEditStatus.d.ts +1 -1
- package/renderer/renderEditStatus.js +0 -10
- package/renderer/renderEmail.d.ts +1 -1
- package/renderer/renderEmail.js +0 -1
- package/renderer/renderIncoterm.d.ts +1 -1
- package/renderer/renderIncoterm.js +0 -2
- package/renderer/renderLink.d.ts +1 -1
- package/renderer/renderLink.js +0 -2
- package/renderer/renderPnl.d.ts +1 -1
- package/renderer/renderPnl.js +0 -3
- package/renderer/renderProgress.d.ts +1 -1
- package/renderer/renderProgress.js +4 -5
- package/renderer/renderRating.d.ts +2 -4
- package/renderer/renderRating.js +3 -4
- package/renderer/renderStatus.d.ts +1 -1
- package/renderer/renderStatus.js +8 -13
- package/renderer/renderTotalPrice.d.ts +1 -1
- package/renderer/renderTotalPrice.js +5 -6
- package/services/asyncWorker.js +2 -4
- package/services/basic-data-service.js +0 -5
- package/services/gridColDefGenerator.d.ts +2 -2
- package/services/random-generator.d.ts +1 -1
- package/services/random-generator.js +6 -20
- package/services/real-data-service.js +0 -9
- package/services/tree-data-generator.js +0 -15
package/hooks/useDemoData.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { GridColumnVisibilityModel } from '@mui/x-data-grid-premium';
|
|
2
2
|
import { GridColDefGenerator } from '../services/gridColDefGenerator';
|
|
3
3
|
import { AddPathToDemoDataOptions, DemoTreeDataValue } from '../services/tree-data-generator';
|
|
4
|
-
export
|
|
4
|
+
export type DemoDataReturnType = {
|
|
5
5
|
data: DemoTreeDataValue;
|
|
6
6
|
loading: boolean;
|
|
7
7
|
setRowLength: (count: number) => void;
|
|
8
8
|
loadNewData: () => void;
|
|
9
9
|
};
|
|
10
|
-
|
|
10
|
+
type DataSet = 'Commodity' | 'Employee';
|
|
11
11
|
export interface UseDemoDataOptions {
|
|
12
12
|
dataSet: DataSet;
|
|
13
13
|
rowLength: number;
|
package/hooks/useDemoData.js
CHANGED
|
@@ -9,7 +9,6 @@ import { addTreeDataOptionsToDemoData } from '../services/tree-data-generator';
|
|
|
9
9
|
const dataCache = new LRUCache({
|
|
10
10
|
max: 10,
|
|
11
11
|
ttl: 60 * 5 * 1e3 // 5 minutes
|
|
12
|
-
|
|
13
12
|
});
|
|
14
13
|
|
|
15
14
|
// Generate fake data from a seed.
|
|
@@ -21,25 +20,20 @@ async function extrapolateSeed(rowLength, data) {
|
|
|
21
20
|
const tasks = {
|
|
22
21
|
current: rowLength - seed.length
|
|
23
22
|
};
|
|
24
|
-
|
|
25
23
|
function work() {
|
|
26
24
|
const row = {};
|
|
27
|
-
|
|
28
25
|
for (let j = 0; j < data.columns.length; j += 1) {
|
|
29
26
|
const column = data.columns[j];
|
|
30
27
|
const index = Math.round(Math.random() * (seed.length - 1));
|
|
31
|
-
|
|
32
28
|
if (column.field === 'id') {
|
|
33
29
|
row.id = `id-${tasks.current + seed.length}`;
|
|
34
30
|
} else {
|
|
35
31
|
row[column.field] = seed[index][column.field];
|
|
36
32
|
}
|
|
37
33
|
}
|
|
38
|
-
|
|
39
34
|
rows.push(row);
|
|
40
35
|
tasks.current -= 1;
|
|
41
36
|
}
|
|
42
|
-
|
|
43
37
|
asyncWorker({
|
|
44
38
|
work,
|
|
45
39
|
done: () => resolve(_extends({}, data, {
|
|
@@ -49,45 +43,38 @@ async function extrapolateSeed(rowLength, data) {
|
|
|
49
43
|
});
|
|
50
44
|
});
|
|
51
45
|
}
|
|
52
|
-
|
|
53
46
|
const deepFreeze = object => {
|
|
54
47
|
// Retrieve the property names defined on object
|
|
55
|
-
const propNames = Object.getOwnPropertyNames(object);
|
|
56
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
48
|
+
const propNames = Object.getOwnPropertyNames(object);
|
|
57
49
|
|
|
50
|
+
// Freeze properties before freezing self
|
|
51
|
+
|
|
52
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
58
53
|
for (const name of propNames) {
|
|
59
54
|
const value = object[name];
|
|
60
|
-
|
|
61
55
|
if (value && typeof value === 'object') {
|
|
62
56
|
deepFreeze(value);
|
|
63
57
|
}
|
|
64
58
|
}
|
|
65
|
-
|
|
66
59
|
return Object.freeze(object);
|
|
67
60
|
};
|
|
68
|
-
|
|
69
61
|
export const getColumnsFromOptions = options => {
|
|
70
62
|
let columns = options.dataSet === 'Commodity' ? getCommodityColumns(options.editable) : getEmployeeColumns();
|
|
71
|
-
|
|
72
63
|
if (options.visibleFields) {
|
|
73
64
|
columns = columns.map(col => {
|
|
74
65
|
var _options$visibleField;
|
|
75
|
-
|
|
76
66
|
return (_options$visibleField = options.visibleFields) != null && _options$visibleField.includes(col.field) ? col : _extends({}, col, {
|
|
77
67
|
hide: true
|
|
78
68
|
});
|
|
79
69
|
});
|
|
80
70
|
}
|
|
81
|
-
|
|
82
71
|
if (options.maxColumns) {
|
|
83
72
|
columns = columns.slice(0, options.maxColumns);
|
|
84
73
|
}
|
|
85
|
-
|
|
86
74
|
return columns;
|
|
87
75
|
};
|
|
88
76
|
export const getInitialState = (options, columns) => {
|
|
89
77
|
var _options$treeData;
|
|
90
|
-
|
|
91
78
|
const columnVisibilityModel = {};
|
|
92
79
|
columns.forEach(col => {
|
|
93
80
|
if (col.hide) {
|
|
@@ -95,11 +82,9 @@ export const getInitialState = (options, columns) => {
|
|
|
95
82
|
}
|
|
96
83
|
});
|
|
97
84
|
const groupingField = (_options$treeData = options.treeData) == null ? void 0 : _options$treeData.groupingField;
|
|
98
|
-
|
|
99
85
|
if (groupingField) {
|
|
100
86
|
columnVisibilityModel[groupingField] = false;
|
|
101
87
|
}
|
|
102
|
-
|
|
103
88
|
return {
|
|
104
89
|
columns: {
|
|
105
90
|
columnVisibilityModel
|
|
@@ -108,7 +93,6 @@ export const getInitialState = (options, columns) => {
|
|
|
108
93
|
};
|
|
109
94
|
export const useDemoData = options => {
|
|
110
95
|
var _options$treeData5, _options$treeData6, _options$treeData7;
|
|
111
|
-
|
|
112
96
|
const [rowLength, setRowLength] = React.useState(options.rowLength);
|
|
113
97
|
const [index, setIndex] = React.useState(0);
|
|
114
98
|
const [loading, setLoading] = React.useState(true);
|
|
@@ -128,50 +112,44 @@ export const useDemoData = options => {
|
|
|
128
112
|
}, options.treeData);
|
|
129
113
|
});
|
|
130
114
|
React.useEffect(() => {
|
|
131
|
-
const cacheKey = `${options.dataSet}-${rowLength}-${index}-${options.maxColumns}`;
|
|
132
|
-
// of the demos.
|
|
115
|
+
const cacheKey = `${options.dataSet}-${rowLength}-${index}-${options.maxColumns}`;
|
|
133
116
|
|
|
117
|
+
// Cache to allow fast switch between the JavaScript and TypeScript version
|
|
118
|
+
// of the demos.
|
|
134
119
|
if (dataCache.has(cacheKey)) {
|
|
135
120
|
const newData = dataCache.get(cacheKey);
|
|
136
121
|
setData(newData);
|
|
137
122
|
setLoading(false);
|
|
138
123
|
return undefined;
|
|
139
124
|
}
|
|
140
|
-
|
|
141
125
|
let active = true;
|
|
142
|
-
|
|
143
126
|
(async () => {
|
|
144
127
|
var _options$treeData2, _options$treeData3, _options$treeData4;
|
|
145
|
-
|
|
146
128
|
setLoading(true);
|
|
147
129
|
let newData;
|
|
148
|
-
|
|
149
130
|
if (rowLength > 1000) {
|
|
150
131
|
newData = await getRealGridData(1000, columns);
|
|
151
132
|
newData = await extrapolateSeed(rowLength, newData);
|
|
152
133
|
} else {
|
|
153
134
|
newData = await getRealGridData(rowLength, columns);
|
|
154
135
|
}
|
|
155
|
-
|
|
156
136
|
if (!active) {
|
|
157
137
|
return;
|
|
158
138
|
}
|
|
159
|
-
|
|
160
139
|
newData = addTreeDataOptionsToDemoData(newData, {
|
|
161
140
|
maxDepth: (_options$treeData2 = options.treeData) == null ? void 0 : _options$treeData2.maxDepth,
|
|
162
141
|
groupingField: (_options$treeData3 = options.treeData) == null ? void 0 : _options$treeData3.groupingField,
|
|
163
142
|
averageChildren: (_options$treeData4 = options.treeData) == null ? void 0 : _options$treeData4.averageChildren
|
|
164
|
-
});
|
|
143
|
+
});
|
|
165
144
|
|
|
145
|
+
// It's quite slow. No need for it in production.
|
|
166
146
|
if (process.env.NODE_ENV !== 'production') {
|
|
167
147
|
deepFreeze(newData);
|
|
168
148
|
}
|
|
169
|
-
|
|
170
149
|
dataCache.set(cacheKey, newData);
|
|
171
150
|
setData(newData);
|
|
172
151
|
setLoading(false);
|
|
173
152
|
})();
|
|
174
|
-
|
|
175
153
|
return () => {
|
|
176
154
|
active = false;
|
|
177
155
|
};
|
package/hooks/useMovieData.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export
|
|
1
|
+
import { GridColDef } from '@mui/x-data-grid-premium';
|
|
2
|
+
export type Movie = {
|
|
3
3
|
id: number;
|
|
4
4
|
title: string;
|
|
5
5
|
gross: number;
|
|
@@ -15,5 +15,5 @@ export declare type Movie = {
|
|
|
15
15
|
};
|
|
16
16
|
export declare const useMovieData: () => {
|
|
17
17
|
rows: Movie[];
|
|
18
|
-
columns:
|
|
18
|
+
columns: GridColDef<any, any, any>[];
|
|
19
19
|
};
|
package/hooks/useMovieData.js
CHANGED
package/hooks/useQuery.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ interface DefaultServerOptions {
|
|
|
20
20
|
maxDelay: number;
|
|
21
21
|
useCursorPagination?: boolean;
|
|
22
22
|
}
|
|
23
|
-
|
|
23
|
+
type ServerOptions = Partial<DefaultServerOptions>;
|
|
24
24
|
export interface QueryOptions {
|
|
25
25
|
cursor?: GridRowId;
|
|
26
26
|
page?: number;
|
|
@@ -52,30 +52,30 @@ export declare const createFakeServer: (dataSetOptions?: Partial<UseDemoDataOpti
|
|
|
52
52
|
pinnable?: boolean | undefined;
|
|
53
53
|
sortComparator?: import("@mui/x-data-grid-pro").GridComparatorFn<any> | undefined;
|
|
54
54
|
type?: string | undefined;
|
|
55
|
-
valueOptions?: import("@mui/x-data-grid-pro").ValueOptions[] | ((params: import("@mui/x-data-grid-pro").GridValueOptionsParams<
|
|
55
|
+
valueOptions?: import("@mui/x-data-grid-pro").ValueOptions[] | ((params: import("@mui/x-data-grid-pro").GridValueOptionsParams<import("@mui/x-data-grid-pro").GridValidRowModel>) => import("@mui/x-data-grid-pro").ValueOptions[]) | undefined;
|
|
56
56
|
align?: import("@mui/x-data-grid-pro").GridAlignment | undefined;
|
|
57
|
-
valueGetter?: ((params: import("@mui/x-data-grid-pro").GridValueGetterParams<
|
|
58
|
-
valueSetter?: ((params: import("@mui/x-data-grid-pro").GridValueSetterParams<any, any>) => any) | undefined;
|
|
57
|
+
valueGetter?: ((params: import("@mui/x-data-grid-pro").GridValueGetterParams<import("@mui/x-data-grid-pro").GridValidRowModel, any, import("@mui/x-data-grid-pro").GridTreeNodeWithRender>) => any) | undefined;
|
|
58
|
+
valueSetter?: ((params: import("@mui/x-data-grid-pro").GridValueSetterParams<any, any>) => any) | ((params: import("@mui/x-data-grid-pro").GridValueSetterParams<import("@mui/x-data-grid-pro").GridValidRowModel, any>) => import("@mui/x-data-grid-pro").GridValidRowModel) | undefined;
|
|
59
59
|
valueFormatter?: ((params: import("@mui/x-data-grid-pro").GridValueFormatterParams<any>) => any) | undefined;
|
|
60
|
-
valueParser?: ((value: any, params?: import("@mui/x-data-grid-pro").GridCellParams<
|
|
61
|
-
cellClassName?: import("@mui/x-data-grid-pro").
|
|
62
|
-
renderCell?: ((params: import("@mui/x-data-grid-pro").GridRenderCellParams<
|
|
63
|
-
renderEditCell?: ((params: import("@mui/x-data-grid-pro").GridRenderEditCellParams<
|
|
60
|
+
valueParser?: ((value: any, params?: import("@mui/x-data-grid-pro").GridCellParams<import("@mui/x-data-grid-pro").GridValidRowModel, any, any, import("@mui/x-data-grid-pro").GridTreeNode> | undefined) => any) | undefined;
|
|
61
|
+
cellClassName?: string | import("@mui/x-data-grid-pro").GridCellClassFn<import("@mui/x-data-grid-pro").GridValidRowModel, any> | undefined;
|
|
62
|
+
renderCell?: ((params: import("@mui/x-data-grid-pro").GridRenderCellParams<import("@mui/x-data-grid-pro").GridValidRowModel, any, any, import("@mui/x-data-grid-pro").GridTreeNodeWithRender>) => React.ReactNode) | undefined;
|
|
63
|
+
renderEditCell?: ((params: import("@mui/x-data-grid-pro").GridRenderEditCellParams<import("@mui/x-data-grid-pro").GridValidRowModel, any, any, import("@mui/x-data-grid-pro").GridTreeNodeWithRender>) => React.ReactNode) | undefined;
|
|
64
64
|
preProcessEditCellProps?: ((params: import("@mui/x-data-grid-pro").GridPreProcessEditCellProps<any, any>) => import("@mui/x-data-grid-pro").GridEditCellProps<any> | Promise<import("@mui/x-data-grid-pro").GridEditCellProps<any>>) | undefined;
|
|
65
65
|
headerClassName?: import("@mui/x-data-grid-pro").GridColumnHeaderClassNamePropType | undefined;
|
|
66
|
-
renderHeader?: ((params: import("@mui/x-data-grid-pro").GridColumnHeaderParams<any, any, any>) => React.ReactNode) | undefined;
|
|
66
|
+
renderHeader?: ((params: import("@mui/x-data-grid-pro").GridColumnHeaderParams<any, any, any>) => React.ReactNode) | ((params: import("@mui/x-data-grid-pro").GridColumnHeaderParams<import("@mui/x-data-grid-pro").GridValidRowModel, any, any>) => React.ReactNode) | undefined;
|
|
67
67
|
headerAlign?: import("@mui/x-data-grid-pro").GridAlignment | undefined;
|
|
68
68
|
hideSortIcons?: boolean | undefined;
|
|
69
69
|
disableColumnMenu?: boolean | undefined;
|
|
70
70
|
filterable?: boolean | undefined;
|
|
71
|
-
filterOperators?: GridFilterOperator<any, any, any>[] | undefined;
|
|
72
|
-
getApplyQuickFilterFn?: ((value: any, colDef: import("@mui/x-data-grid
|
|
71
|
+
filterOperators?: GridFilterOperator<any, any, any>[] | GridFilterOperator<import("@mui/x-data-grid-pro").GridValidRowModel, any, any>[] | undefined;
|
|
72
|
+
getApplyQuickFilterFn?: ((value: any, colDef: import("@mui/x-data-grid/internals").GridStateColDef<any, any, any>, apiRef: React.MutableRefObject<import("@mui/x-data-grid/internals").GridApiCommunity>) => ((params: import("@mui/x-data-grid-pro").GridCellParams<import("@mui/x-data-grid-pro").GridValidRowModel, any, any, import("@mui/x-data-grid-pro").GridTreeNode>) => boolean) | null) | undefined;
|
|
73
73
|
disableReorder?: boolean | undefined;
|
|
74
74
|
disableExport?: boolean | undefined;
|
|
75
|
-
colSpan?: number | ((params: import("@mui/x-data-grid-pro").GridCellParams<
|
|
75
|
+
colSpan?: number | ((params: import("@mui/x-data-grid-pro").GridCellParams<import("@mui/x-data-grid-pro").GridValidRowModel, any, any, import("@mui/x-data-grid-pro").GridTreeNode>) => number | undefined) | undefined;
|
|
76
76
|
aggregable?: boolean | undefined;
|
|
77
77
|
availableAggregationFunctions?: string[] | undefined;
|
|
78
|
-
groupingValueGetter?: ((params: import("@mui/x-data-grid-premium").GridGroupingValueGetterParams<any, any>) => import("@mui/x-data-grid-pro").GridKeyValue | null | undefined) | undefined;
|
|
78
|
+
groupingValueGetter?: ((params: import("@mui/x-data-grid-premium").GridGroupingValueGetterParams<any, any>) => import("@mui/x-data-grid-pro").GridKeyValue | null | undefined) | ((params: import("@mui/x-data-grid-premium").GridGroupingValueGetterParams<import("@mui/x-data-grid-pro").GridValidRowModel, any>) => import("@mui/x-data-grid-pro").GridKeyValue | null | undefined) | undefined;
|
|
79
79
|
extendType?: import("@mui/x-data-grid-pro").GridNativeColTypes | undefined;
|
|
80
80
|
}[];
|
|
81
81
|
initialState: {
|
package/hooks/useQuery.js
CHANGED
|
@@ -1,29 +1,24 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { getGridDefaultColumnTypes,
|
|
3
|
+
import { getGridDefaultColumnTypes, GridLogicOperator } from '@mui/x-data-grid-pro';
|
|
4
4
|
import { isDeepEqual } from '@mui/x-data-grid/internals';
|
|
5
5
|
import { useDemoData, getColumnsFromOptions, getInitialState } from './useDemoData';
|
|
6
|
-
|
|
7
6
|
const simplifiedValueGetter = (field, colDef) => row => {
|
|
8
7
|
var _colDef$valueGetter;
|
|
9
|
-
|
|
10
8
|
const params = {
|
|
11
9
|
id: row.id,
|
|
12
10
|
row,
|
|
13
11
|
field,
|
|
14
12
|
rowNode: {}
|
|
15
|
-
};
|
|
16
|
-
|
|
13
|
+
};
|
|
14
|
+
// @ts-ignore
|
|
17
15
|
return ((_colDef$valueGetter = colDef.valueGetter) == null ? void 0 : _colDef$valueGetter.call(colDef, params)) || row[field];
|
|
18
16
|
};
|
|
19
|
-
|
|
20
17
|
const getRowComparator = (sortModel, columnsWithDefaultColDef) => {
|
|
21
18
|
if (!sortModel) {
|
|
22
19
|
const comparator = () => 0;
|
|
23
|
-
|
|
24
20
|
return comparator;
|
|
25
21
|
}
|
|
26
|
-
|
|
27
22
|
const sortOperators = sortModel.map(sortItem => {
|
|
28
23
|
const columnField = sortItem.field;
|
|
29
24
|
const colDef = columnsWithDefaultColDef.find(({
|
|
@@ -34,7 +29,6 @@ const getRowComparator = (sortModel, columnsWithDefaultColDef) => {
|
|
|
34
29
|
sortComparator: colDef.sortComparator
|
|
35
30
|
});
|
|
36
31
|
});
|
|
37
|
-
|
|
38
32
|
const comparator = (row1, row2) => sortOperators.reduce((acc, {
|
|
39
33
|
valueGetter,
|
|
40
34
|
sort,
|
|
@@ -43,52 +37,40 @@ const getRowComparator = (sortModel, columnsWithDefaultColDef) => {
|
|
|
43
37
|
if (acc !== 0) {
|
|
44
38
|
return acc;
|
|
45
39
|
}
|
|
46
|
-
|
|
47
40
|
const v1 = valueGetter(row1);
|
|
48
41
|
const v2 = valueGetter(row2);
|
|
49
42
|
return sort === 'desc' ? -1 * sortComparator(v1, v2) : sortComparator(v1, v2);
|
|
50
43
|
}, 0);
|
|
51
|
-
|
|
52
44
|
return comparator;
|
|
53
45
|
};
|
|
54
|
-
|
|
55
46
|
const getFilteredRows = (rows, filterModel, columnsWithDefaultColDef) => {
|
|
56
47
|
if (filterModel === undefined || filterModel.items.length === 0) {
|
|
57
48
|
return rows;
|
|
58
49
|
}
|
|
59
|
-
|
|
60
50
|
const valueGetters = filterModel.items.map(({
|
|
61
|
-
columnField
|
|
62
|
-
}) => simplifiedValueGetter(columnField, columnsWithDefaultColDef.find(({
|
|
63
51
|
field
|
|
64
|
-
}) => field ===
|
|
52
|
+
}) => simplifiedValueGetter(field, columnsWithDefaultColDef.find(column => column.field === field)));
|
|
65
53
|
const filterFunctions = filterModel.items.map(filterItem => {
|
|
66
54
|
const {
|
|
67
|
-
|
|
68
|
-
|
|
55
|
+
field,
|
|
56
|
+
operator
|
|
69
57
|
} = filterItem;
|
|
70
|
-
const colDef = columnsWithDefaultColDef.find(
|
|
71
|
-
field
|
|
72
|
-
}) => field === columnField);
|
|
58
|
+
const colDef = columnsWithDefaultColDef.find(column => column.field === field);
|
|
73
59
|
const filterOperator = colDef.filterOperators.find(({
|
|
74
60
|
value
|
|
75
|
-
}) =>
|
|
61
|
+
}) => operator === value);
|
|
76
62
|
let parsedValue = filterItem.value;
|
|
77
|
-
|
|
78
63
|
if (colDef.valueParser) {
|
|
79
64
|
var _filterItem$value;
|
|
80
|
-
|
|
81
65
|
const parser = colDef.valueParser;
|
|
82
66
|
parsedValue = Array.isArray(filterItem.value) ? (_filterItem$value = filterItem.value) == null ? void 0 : _filterItem$value.map(x => parser(x)) : parser(filterItem.value);
|
|
83
67
|
}
|
|
84
|
-
|
|
85
68
|
return filterOperator == null ? void 0 : filterOperator.getApplyFilterFn({
|
|
86
69
|
filterItem,
|
|
87
70
|
value: parsedValue
|
|
88
71
|
}, colDef);
|
|
89
72
|
});
|
|
90
|
-
|
|
91
|
-
if (filterModel.linkOperator === GridLinkOperator.Or) {
|
|
73
|
+
if (filterModel.logicOperator === GridLogicOperator.Or) {
|
|
92
74
|
return rows.filter(row => filterModel.items.some((_, index) => {
|
|
93
75
|
const value = valueGetters[index](row);
|
|
94
76
|
return filterFunctions[index] === null ? true : filterFunctions[index]({
|
|
@@ -96,7 +78,6 @@ const getFilteredRows = (rows, filterModel, columnsWithDefaultColDef) => {
|
|
|
96
78
|
});
|
|
97
79
|
}));
|
|
98
80
|
}
|
|
99
|
-
|
|
100
81
|
return rows.filter(row => filterModel.items.every((_, index) => {
|
|
101
82
|
const value = valueGetters[index](row);
|
|
102
83
|
return filterFunctions[index] === null ? true : filterFunctions[index]({
|
|
@@ -104,22 +85,19 @@ const getFilteredRows = (rows, filterModel, columnsWithDefaultColDef) => {
|
|
|
104
85
|
});
|
|
105
86
|
}));
|
|
106
87
|
};
|
|
88
|
+
|
|
107
89
|
/**
|
|
108
90
|
* Simulates server data loading
|
|
109
91
|
*/
|
|
110
|
-
|
|
111
|
-
|
|
112
92
|
export const loadServerRows = (rows, queryOptions, serverOptions, columnsWithDefaultColDef) => {
|
|
113
93
|
const {
|
|
114
94
|
minDelay = 100,
|
|
115
95
|
maxDelay = 300,
|
|
116
96
|
useCursorPagination
|
|
117
97
|
} = serverOptions;
|
|
118
|
-
|
|
119
98
|
if (maxDelay < minDelay) {
|
|
120
99
|
throw new Error('serverOptions.minDelay is larger than serverOptions.maxDelay ');
|
|
121
100
|
}
|
|
122
|
-
|
|
123
101
|
const delay = Math.random() * (maxDelay - minDelay) + minDelay;
|
|
124
102
|
const {
|
|
125
103
|
cursor,
|
|
@@ -133,7 +111,6 @@ export const loadServerRows = (rows, queryOptions, serverOptions, columnsWithDef
|
|
|
133
111
|
const rowComparator = getRowComparator(queryOptions.sortModel, columnsWithDefaultColDef);
|
|
134
112
|
filteredRows = [...filteredRows].sort(rowComparator);
|
|
135
113
|
const totalRowCount = filteredRows.length;
|
|
136
|
-
|
|
137
114
|
if (!pageSize) {
|
|
138
115
|
firstRowIndex = 0;
|
|
139
116
|
lastRowIndex = filteredRows.length;
|
|
@@ -142,14 +119,12 @@ export const loadServerRows = (rows, queryOptions, serverOptions, columnsWithDef
|
|
|
142
119
|
id
|
|
143
120
|
}) => id === cursor) : 0;
|
|
144
121
|
firstRowIndex = Math.max(firstRowIndex, 0); // if cursor not found return 0
|
|
145
|
-
|
|
146
122
|
lastRowIndex = firstRowIndex + pageSize;
|
|
147
123
|
nextCursor = lastRowIndex >= filteredRows.length ? undefined : filteredRows[lastRowIndex].id;
|
|
148
124
|
} else {
|
|
149
125
|
firstRowIndex = page * pageSize;
|
|
150
126
|
lastRowIndex = (page + 1) * pageSize;
|
|
151
127
|
}
|
|
152
|
-
|
|
153
128
|
const response = {
|
|
154
129
|
returnedRows: filteredRows.slice(firstRowIndex, lastRowIndex),
|
|
155
130
|
nextCursor,
|
|
@@ -161,6 +136,7 @@ export const loadServerRows = (rows, queryOptions, serverOptions, columnsWithDef
|
|
|
161
136
|
}, delay); // simulate network latency
|
|
162
137
|
});
|
|
163
138
|
};
|
|
139
|
+
|
|
164
140
|
const DEFAULT_DATASET_OPTIONS = {
|
|
165
141
|
dataSet: 'Commodity',
|
|
166
142
|
rowLength: 100,
|
|
@@ -174,14 +150,11 @@ const DEFAULT_SERVER_OPTIONS = {
|
|
|
174
150
|
};
|
|
175
151
|
export const createFakeServer = (dataSetOptions, serverOptions) => {
|
|
176
152
|
const dataSetOptionsWithDefault = _extends({}, DEFAULT_DATASET_OPTIONS, dataSetOptions);
|
|
177
|
-
|
|
178
153
|
const serverOptionsWithDefault = _extends({}, DEFAULT_SERVER_OPTIONS, serverOptions);
|
|
179
|
-
|
|
180
154
|
const columns = getColumnsFromOptions(dataSetOptionsWithDefault);
|
|
181
155
|
const initialState = getInitialState(dataSetOptionsWithDefault, columns);
|
|
182
156
|
const defaultColDef = getGridDefaultColumnTypes();
|
|
183
157
|
const columnsWithDefaultColDef = columns.map(column => _extends({}, defaultColDef[column.type || 'string'], column));
|
|
184
|
-
|
|
185
158
|
const useQuery = queryOptions => {
|
|
186
159
|
const {
|
|
187
160
|
data: {
|
|
@@ -200,25 +173,21 @@ export const createFakeServer = (dataSetOptions, serverOptions) => {
|
|
|
200
173
|
// dataset is not ready
|
|
201
174
|
return () => {};
|
|
202
175
|
}
|
|
203
|
-
|
|
204
176
|
queryOptionsRef.current = queryOptions;
|
|
205
177
|
let active = true;
|
|
206
178
|
setIsLoading(true);
|
|
207
179
|
setResponse(prev => Object.keys(prev.pageInfo).length === 0 ? prev : _extends({}, prev, {
|
|
208
180
|
pageInfo: {}
|
|
209
181
|
}));
|
|
210
|
-
|
|
211
182
|
(async function fetchData() {
|
|
212
183
|
const {
|
|
213
184
|
returnedRows,
|
|
214
185
|
nextCursor,
|
|
215
186
|
totalRowCount
|
|
216
187
|
} = await loadServerRows(rows, queryOptions, serverOptionsWithDefault, columnsWithDefaultColDef);
|
|
217
|
-
|
|
218
188
|
if (!active) {
|
|
219
189
|
return;
|
|
220
190
|
}
|
|
221
|
-
|
|
222
191
|
const newRep = {
|
|
223
192
|
rows: returnedRows,
|
|
224
193
|
pageInfo: {
|
|
@@ -230,18 +199,17 @@ export const createFakeServer = (dataSetOptions, serverOptions) => {
|
|
|
230
199
|
setResponse(prev => isDeepEqual(prev, newRep) ? prev : newRep);
|
|
231
200
|
setIsLoading(false);
|
|
232
201
|
})();
|
|
233
|
-
|
|
234
202
|
return () => {
|
|
235
203
|
active = false;
|
|
236
204
|
};
|
|
237
|
-
}, [dataGenerationIsLoading, queryOptions, rows]);
|
|
205
|
+
}, [dataGenerationIsLoading, queryOptions, rows]);
|
|
238
206
|
|
|
207
|
+
// We use queryOptions pointer to be sure that isLoading===true as soon as the options change
|
|
239
208
|
const effectShouldStart = queryOptionsRef.current !== queryOptions;
|
|
240
209
|
return _extends({
|
|
241
210
|
isLoading: isLoading || effectShouldStart
|
|
242
211
|
}, response);
|
|
243
212
|
};
|
|
244
|
-
|
|
245
213
|
return {
|
|
246
214
|
columns,
|
|
247
215
|
columnsWithDefaultColDef,
|
package/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* @mui/x-data-grid-generator v6.0.0-beta.0
|
|
2
3
|
*
|
|
3
|
-
*
|
|
4
|
+
* @license MUI X Commercial
|
|
5
|
+
* This source code is licensed under the commercial license found in the
|
|
4
6
|
* LICENSE file in the root directory of this source tree.
|
|
5
7
|
*/
|
|
6
8
|
export * from './renderer';
|
|
@@ -134,11 +134,9 @@ export var getEmployeeColumns = function getEmployeeColumns() {
|
|
|
134
134
|
type: 'number',
|
|
135
135
|
valueFormatter: function valueFormatter(_ref2) {
|
|
136
136
|
var value = _ref2.value;
|
|
137
|
-
|
|
138
137
|
if (!value || typeof value !== 'number') {
|
|
139
138
|
return value;
|
|
140
139
|
}
|
|
141
|
-
|
|
142
140
|
return "".concat(value.toLocaleString(), "$");
|
|
143
141
|
}
|
|
144
142
|
}];
|
|
@@ -3,13 +3,12 @@ import * as React from 'react';
|
|
|
3
3
|
import { getBasicGridData } from '../services';
|
|
4
4
|
export var useBasicDemoData = function useBasicDemoData(nbRows, nbCols) {
|
|
5
5
|
var _React$useState = React.useState({
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
rows: [],
|
|
7
|
+
columns: []
|
|
8
|
+
}),
|
|
9
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
10
|
+
data = _React$useState2[0],
|
|
11
|
+
setData = _React$useState2[1];
|
|
13
12
|
React.useEffect(function () {
|
|
14
13
|
var newData = getBasicGridData(nbRows, nbCols);
|
|
15
14
|
setData(newData);
|