@mui/x-data-grid-generator 6.0.0-alpha.1 → 6.0.0-alpha.10
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 +1306 -149
- package/columns/commodities.columns.js +0 -1
- package/columns/employees.columns.js +0 -1
- package/hooks/useDemoData.js +9 -31
- package/hooks/useMovieData.d.ts +1 -0
- package/hooks/useMovieData.js +35 -1
- package/hooks/useQuery.js +11 -43
- package/index.js +1 -1
- 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 +35 -2
- package/legacy/hooks/useQuery.js +38 -77
- package/legacy/index.js +1 -1
- package/legacy/renderer/renderAvatar.js +0 -1
- package/legacy/renderer/renderCountry.js +3 -4
- package/legacy/renderer/renderEditCountry.js +32 -20
- package/legacy/renderer/renderEditCurrency.js +32 -20
- package/legacy/renderer/renderEditIncoterm.js +36 -26
- package/legacy/renderer/renderEditProgress.js +10 -20
- package/legacy/renderer/renderEditRating.js +32 -23
- 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 +35 -1
- package/modern/hooks/useQuery.js +11 -41
- package/modern/index.js +1 -1
- package/modern/renderer/renderAvatar.js +0 -1
- package/modern/renderer/renderCountry.js +3 -4
- package/modern/renderer/renderEditCountry.js +6 -13
- package/modern/renderer/renderEditCurrency.js +6 -13
- package/modern/renderer/renderEditIncoterm.js +7 -16
- package/modern/renderer/renderEditProgress.js +3 -10
- package/modern/renderer/renderEditRating.js +7 -17
- 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 +35 -3
- package/node/hooks/useQuery.js +13 -57
- package/node/index.js +1 -9
- 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 +6 -26
- package/node/renderer/renderEditCurrency.js +6 -26
- package/node/renderer/renderEditIncoterm.js +7 -28
- package/node/renderer/renderEditProgress.js +4 -24
- package/node/renderer/renderEditRating.js +7 -26
- 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 +7 -7
- package/renderer/renderAvatar.js +0 -1
- package/renderer/renderCountry.js +3 -4
- package/renderer/renderEditCountry.js +6 -13
- package/renderer/renderEditCurrency.js +6 -13
- package/renderer/renderEditIncoterm.js +7 -16
- package/renderer/renderEditProgress.js +3 -10
- package/renderer/renderEditRating.js +7 -17
- package/renderer/renderEditStatus.js +0 -10
- package/renderer/renderEmail.js +0 -1
- package/renderer/renderIncoterm.js +0 -2
- package/renderer/renderLink.js +0 -2
- package/renderer/renderPnl.js +0 -3
- package/renderer/renderProgress.js +4 -5
- package/renderer/renderRating.js +3 -4
- package/renderer/renderStatus.js +8 -13
- package/renderer/renderTotalPrice.js +5 -6
- package/services/asyncWorker.js +2 -4
- package/services/basic-data-service.js +0 -5
- 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.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
package/hooks/useMovieData.js
CHANGED
|
@@ -21,7 +21,6 @@ const COLUMNS = [{
|
|
|
21
21
|
if (!value) {
|
|
22
22
|
return '';
|
|
23
23
|
}
|
|
24
|
-
|
|
25
24
|
return currencyFormatter.format(value);
|
|
26
25
|
}
|
|
27
26
|
}, {
|
|
@@ -46,6 +45,7 @@ const ROWS = [{
|
|
|
46
45
|
id: 0,
|
|
47
46
|
title: 'Avatar',
|
|
48
47
|
gross: 2847246203,
|
|
48
|
+
budget: 237000000,
|
|
49
49
|
director: 'James Cameron',
|
|
50
50
|
company: '20th Century Fox',
|
|
51
51
|
year: 2009,
|
|
@@ -57,6 +57,7 @@ const ROWS = [{
|
|
|
57
57
|
id: 1,
|
|
58
58
|
title: 'Avengers: Endgame',
|
|
59
59
|
gross: 2797501328,
|
|
60
|
+
budget: 356000000,
|
|
60
61
|
director: 'Anthony & Joe Russo',
|
|
61
62
|
company: 'Disney Studios',
|
|
62
63
|
year: 2019,
|
|
@@ -69,6 +70,7 @@ const ROWS = [{
|
|
|
69
70
|
id: 2,
|
|
70
71
|
title: 'Titanic',
|
|
71
72
|
gross: 2187425379,
|
|
73
|
+
budget: 200000000,
|
|
72
74
|
director: 'James Cameron',
|
|
73
75
|
company: '20th Century Fox',
|
|
74
76
|
year: 1997,
|
|
@@ -80,6 +82,7 @@ const ROWS = [{
|
|
|
80
82
|
id: 3,
|
|
81
83
|
title: 'Star Wars: The Force Awakens',
|
|
82
84
|
gross: 2068223624,
|
|
85
|
+
budget: 306000000,
|
|
83
86
|
director: 'J. J. Abrams',
|
|
84
87
|
company: 'Disney Studios',
|
|
85
88
|
year: 2015,
|
|
@@ -92,6 +95,7 @@ const ROWS = [{
|
|
|
92
95
|
id: 4,
|
|
93
96
|
title: 'Avengers: Infinity War',
|
|
94
97
|
gross: 2048359754,
|
|
98
|
+
budget: 321000000,
|
|
95
99
|
director: 'Anthony & Joe Russo',
|
|
96
100
|
company: 'Disney Studios',
|
|
97
101
|
year: 2018,
|
|
@@ -104,6 +108,7 @@ const ROWS = [{
|
|
|
104
108
|
id: 5,
|
|
105
109
|
title: 'Spider-Man: No Way Home',
|
|
106
110
|
gross: 1892768346,
|
|
111
|
+
budget: 200000000,
|
|
107
112
|
director: 'Jon Watts',
|
|
108
113
|
company: 'Disney Studios',
|
|
109
114
|
year: 2021,
|
|
@@ -116,6 +121,7 @@ const ROWS = [{
|
|
|
116
121
|
id: 6,
|
|
117
122
|
title: 'Jurassic World',
|
|
118
123
|
gross: 1671713208,
|
|
124
|
+
budget: 150000000,
|
|
119
125
|
director: 'Colin Trevorrow',
|
|
120
126
|
company: 'Universal Pictures',
|
|
121
127
|
year: 2015,
|
|
@@ -128,6 +134,7 @@ const ROWS = [{
|
|
|
128
134
|
id: 7,
|
|
129
135
|
title: 'The Lion King',
|
|
130
136
|
gross: 1656943394,
|
|
137
|
+
budget: 260000000,
|
|
131
138
|
director: 'Jon Favreau',
|
|
132
139
|
company: 'Disney Studios',
|
|
133
140
|
year: 2019,
|
|
@@ -139,6 +146,7 @@ const ROWS = [{
|
|
|
139
146
|
id: 8,
|
|
140
147
|
title: 'The Avengers',
|
|
141
148
|
gross: 1518812988,
|
|
149
|
+
budget: 220000000,
|
|
142
150
|
director: 'Joss Whedon',
|
|
143
151
|
company: 'Disney Studios',
|
|
144
152
|
year: 2012,
|
|
@@ -151,6 +159,7 @@ const ROWS = [{
|
|
|
151
159
|
id: 9,
|
|
152
160
|
title: 'Furious 7',
|
|
153
161
|
gross: 1516045911,
|
|
162
|
+
budget: 190000000,
|
|
154
163
|
director: 'James Wan',
|
|
155
164
|
company: 'Universal Pictures',
|
|
156
165
|
year: 2015,
|
|
@@ -163,6 +172,7 @@ const ROWS = [{
|
|
|
163
172
|
id: 10,
|
|
164
173
|
title: 'Frozen II',
|
|
165
174
|
gross: 1450026933,
|
|
175
|
+
budget: 150000000,
|
|
166
176
|
director: 'Chris Buck & Jennifer Lee',
|
|
167
177
|
company: 'Disney Studios',
|
|
168
178
|
year: 2019,
|
|
@@ -175,6 +185,7 @@ const ROWS = [{
|
|
|
175
185
|
id: 11,
|
|
176
186
|
title: 'Avengers: Age of Ultron',
|
|
177
187
|
gross: 1402804868,
|
|
188
|
+
budget: 280000000,
|
|
178
189
|
director: 'Joss Whedon',
|
|
179
190
|
company: 'Disney Studios',
|
|
180
191
|
year: 2015,
|
|
@@ -187,6 +198,7 @@ const ROWS = [{
|
|
|
187
198
|
id: 12,
|
|
188
199
|
title: 'Black Panther',
|
|
189
200
|
gross: 1347280838,
|
|
201
|
+
budget: 200000000,
|
|
190
202
|
director: 'Ryan Coogler',
|
|
191
203
|
company: 'Disney Studios',
|
|
192
204
|
year: 2018,
|
|
@@ -199,6 +211,7 @@ const ROWS = [{
|
|
|
199
211
|
id: 13,
|
|
200
212
|
title: 'Harry Potter and the Deathly Hallows – Part 2',
|
|
201
213
|
gross: 1342025430,
|
|
214
|
+
budget: 125000000,
|
|
202
215
|
director: 'David Yates',
|
|
203
216
|
company: 'Warner Bros. Pictures',
|
|
204
217
|
year: 2011,
|
|
@@ -211,6 +224,7 @@ const ROWS = [{
|
|
|
211
224
|
id: 14,
|
|
212
225
|
title: 'Star Wars: The Last Jedi',
|
|
213
226
|
gross: 1332539889,
|
|
227
|
+
budget: 317000000,
|
|
214
228
|
director: 'Rian Johnson',
|
|
215
229
|
company: 'Disney Studios',
|
|
216
230
|
year: 2017,
|
|
@@ -223,6 +237,7 @@ const ROWS = [{
|
|
|
223
237
|
id: 15,
|
|
224
238
|
title: 'Jurassic World: Fallen Kingdom',
|
|
225
239
|
gross: 1309484461,
|
|
240
|
+
budget: 170000000,
|
|
226
241
|
director: 'J. A. Bayona',
|
|
227
242
|
company: 'Universal Pictures',
|
|
228
243
|
year: 2018,
|
|
@@ -235,6 +250,7 @@ const ROWS = [{
|
|
|
235
250
|
id: 16,
|
|
236
251
|
title: 'Frozen',
|
|
237
252
|
gross: 1290000000,
|
|
253
|
+
budget: 150000000,
|
|
238
254
|
director: 'Chris Buck & Jennifer Lee',
|
|
239
255
|
company: 'Disney Studios',
|
|
240
256
|
year: 2013,
|
|
@@ -247,6 +263,7 @@ const ROWS = [{
|
|
|
247
263
|
id: 17,
|
|
248
264
|
title: 'Beauty and the Beast',
|
|
249
265
|
gross: 1263521136,
|
|
266
|
+
budget: 160000000,
|
|
250
267
|
director: 'Bill Condon',
|
|
251
268
|
company: 'Disney Studios',
|
|
252
269
|
year: 2017,
|
|
@@ -258,6 +275,7 @@ const ROWS = [{
|
|
|
258
275
|
id: 18,
|
|
259
276
|
title: 'Incredibles 2',
|
|
260
277
|
gross: 1242805359,
|
|
278
|
+
budget: 200000000,
|
|
261
279
|
director: 'Brad Bird',
|
|
262
280
|
company: 'Disney Studios',
|
|
263
281
|
year: 2018,
|
|
@@ -269,6 +287,7 @@ const ROWS = [{
|
|
|
269
287
|
id: 19,
|
|
270
288
|
title: 'The Fate of the Furious',
|
|
271
289
|
gross: 1238764765,
|
|
290
|
+
budget: 250000000,
|
|
272
291
|
director: 'F. Gary Gray',
|
|
273
292
|
company: 'Universal Pictures',
|
|
274
293
|
year: 2017,
|
|
@@ -281,6 +300,7 @@ const ROWS = [{
|
|
|
281
300
|
id: 20,
|
|
282
301
|
title: 'Iron Man 3',
|
|
283
302
|
gross: 1214811252,
|
|
303
|
+
budget: 200000000,
|
|
284
304
|
director: 'Shane Black',
|
|
285
305
|
company: 'Disney Studios',
|
|
286
306
|
year: 2013,
|
|
@@ -293,6 +313,7 @@ const ROWS = [{
|
|
|
293
313
|
id: 21,
|
|
294
314
|
title: 'Minions',
|
|
295
315
|
gross: 1159398397,
|
|
316
|
+
budget: 74000000,
|
|
296
317
|
director: 'Pierre Coffin & Kyle Balda',
|
|
297
318
|
company: 'Universal Pictures',
|
|
298
319
|
year: 2015,
|
|
@@ -304,6 +325,7 @@ const ROWS = [{
|
|
|
304
325
|
id: 22,
|
|
305
326
|
title: 'Captain America: Civil War',
|
|
306
327
|
gross: 1153329473,
|
|
328
|
+
budget: 250000000,
|
|
307
329
|
director: 'Anthony & Joe Russo',
|
|
308
330
|
company: 'Disney Studios',
|
|
309
331
|
year: 2016,
|
|
@@ -316,6 +338,7 @@ const ROWS = [{
|
|
|
316
338
|
id: 23,
|
|
317
339
|
title: 'Aquaman',
|
|
318
340
|
gross: 1148485886,
|
|
341
|
+
budget: 160000000,
|
|
319
342
|
director: 'James Wan',
|
|
320
343
|
company: 'Warner Bros. Pictures',
|
|
321
344
|
year: 2018,
|
|
@@ -328,6 +351,7 @@ const ROWS = [{
|
|
|
328
351
|
id: 24,
|
|
329
352
|
title: 'The Lord of the Rings: The Return of the King',
|
|
330
353
|
gross: 1146030912,
|
|
354
|
+
budget: 94000000,
|
|
331
355
|
director: 'Peter Jackson',
|
|
332
356
|
company: 'New Line Cinema',
|
|
333
357
|
year: 2003,
|
|
@@ -340,6 +364,7 @@ const ROWS = [{
|
|
|
340
364
|
id: 25,
|
|
341
365
|
title: 'Spider-Man: Far From Home',
|
|
342
366
|
gross: 1131927996,
|
|
367
|
+
budget: 160000000,
|
|
343
368
|
director: 'Jon Watts',
|
|
344
369
|
company: 'Disney Studios',
|
|
345
370
|
year: 2019,
|
|
@@ -352,6 +377,7 @@ const ROWS = [{
|
|
|
352
377
|
id: 26,
|
|
353
378
|
title: 'Captain Marvel',
|
|
354
379
|
gross: 1128274794,
|
|
380
|
+
budget: 152000000,
|
|
355
381
|
director: 'Anna Boden & Ryan Fleck',
|
|
356
382
|
company: 'Disney Studios',
|
|
357
383
|
year: 2019,
|
|
@@ -364,6 +390,7 @@ const ROWS = [{
|
|
|
364
390
|
id: 27,
|
|
365
391
|
title: 'Transformers: Dark of the Moon',
|
|
366
392
|
gross: 1123794079,
|
|
393
|
+
budget: 195000000,
|
|
367
394
|
director: 'Michael Bay',
|
|
368
395
|
company: 'Paramount Pictures',
|
|
369
396
|
year: 2011,
|
|
@@ -376,6 +403,7 @@ const ROWS = [{
|
|
|
376
403
|
id: 28,
|
|
377
404
|
title: 'Skyfall',
|
|
378
405
|
gross: 1108561013,
|
|
406
|
+
budget: 200000000,
|
|
379
407
|
director: 'Sam Mendes',
|
|
380
408
|
company: '20th Century Fox',
|
|
381
409
|
year: 2012,
|
|
@@ -388,6 +416,7 @@ const ROWS = [{
|
|
|
388
416
|
id: 29,
|
|
389
417
|
title: 'Transformers: Age of Extinction',
|
|
390
418
|
gross: 1104054072,
|
|
419
|
+
budget: 210000000,
|
|
391
420
|
director: 'Michael Bay',
|
|
392
421
|
company: 'Paramount Pictures',
|
|
393
422
|
year: 2014,
|
|
@@ -400,6 +429,7 @@ const ROWS = [{
|
|
|
400
429
|
id: 30,
|
|
401
430
|
title: 'The Dark Knight Rises',
|
|
402
431
|
gross: 1081142612,
|
|
432
|
+
budget: 250000000,
|
|
403
433
|
director: 'Christopher Nolan',
|
|
404
434
|
company: 'Warner Bros. Pictures',
|
|
405
435
|
year: 2012,
|
|
@@ -412,6 +442,7 @@ const ROWS = [{
|
|
|
412
442
|
id: 31,
|
|
413
443
|
title: 'Joker',
|
|
414
444
|
gross: 1074251311,
|
|
445
|
+
budget: 55000000,
|
|
415
446
|
director: 'Todd Phillips',
|
|
416
447
|
company: 'Warner Bros. Pictures',
|
|
417
448
|
year: 2019,
|
|
@@ -424,6 +455,7 @@ const ROWS = [{
|
|
|
424
455
|
id: 32,
|
|
425
456
|
title: 'Star Wars: The Rise of Skywalker',
|
|
426
457
|
gross: 1074144248,
|
|
458
|
+
budget: 275000000,
|
|
427
459
|
director: 'J. J. Abrams',
|
|
428
460
|
company: 'Disney Studios',
|
|
429
461
|
year: 2019,
|
|
@@ -436,6 +468,7 @@ const ROWS = [{
|
|
|
436
468
|
id: 33,
|
|
437
469
|
title: 'Toy Story 4',
|
|
438
470
|
gross: 1073394593,
|
|
471
|
+
budget: 200000000,
|
|
439
472
|
director: 'Josh Cooley',
|
|
440
473
|
company: 'Disney Studios',
|
|
441
474
|
year: 2019,
|
|
@@ -448,6 +481,7 @@ const ROWS = [{
|
|
|
448
481
|
id: 34,
|
|
449
482
|
title: 'Toy Story 3',
|
|
450
483
|
gross: 1066969703,
|
|
484
|
+
budget: 200000000,
|
|
451
485
|
director: 'Lee Unkrich',
|
|
452
486
|
company: 'Disney Studios',
|
|
453
487
|
year: 2010,
|
package/hooks/useQuery.js
CHANGED
|
@@ -3,27 +3,22 @@ import * as React from 'react';
|
|
|
3
3
|
import { getGridDefaultColumnTypes, GridLinkOperator } 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,51 +37,39 @@ 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
73
|
if (filterModel.linkOperator === GridLinkOperator.Or) {
|
|
92
74
|
return rows.filter(row => filterModel.items.some((_, index) => {
|
|
93
75
|
const value = valueGetters[index](row);
|
|
@@ -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
|
@@ -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
|
}];
|