@mui/x-data-grid-generator 6.0.0-alpha.0 → 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 +1428 -138
- package/columns/commodities.columns.js +6 -10
- package/columns/employees.columns.js +1 -2
- package/hooks/useDemoData.js +9 -31
- package/hooks/useMovieData.d.ts +1 -0
- package/hooks/useMovieData.js +35 -1
- package/hooks/useQuery.d.ts +6 -6
- package/hooks/useQuery.js +11 -43
- package/index.js +1 -1
- package/legacy/columns/commodities.columns.js +6 -10
- package/legacy/columns/employees.columns.js +1 -3
- 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 +1 -3
- 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 +9 -14
- 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 +6 -10
- package/modern/columns/employees.columns.js +1 -2
- 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 +1 -3
- 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 +9 -14
- 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 +7 -17
- package/node/columns/employees.columns.js +2 -9
- 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 +1 -10
- 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 +9 -27
- 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 +1 -3
- package/renderer/renderPnl.js +0 -3
- package/renderer/renderProgress.js +4 -5
- package/renderer/renderRating.js +3 -4
- package/renderer/renderStatus.js +9 -14
- 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/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
|
@@ -92,9 +92,8 @@ export var getCommodityColumns = function getCommodityColumns() {
|
|
|
92
92
|
field: 'subTotal',
|
|
93
93
|
headerName: 'Sub Total',
|
|
94
94
|
valueGetter: function valueGetter(_ref) {
|
|
95
|
-
var row = _ref.row
|
|
96
|
-
|
|
97
|
-
return rowNode.isAutoGenerated ? null : row.quantity * row.unitPrice;
|
|
95
|
+
var row = _ref.row;
|
|
96
|
+
return row.quantity == null || row.unitPrice == null ? null : row.quantity * row.unitPrice;
|
|
98
97
|
},
|
|
99
98
|
type: 'number',
|
|
100
99
|
width: 120
|
|
@@ -112,9 +111,8 @@ export var getCommodityColumns = function getCommodityColumns() {
|
|
|
112
111
|
field: 'feeAmount',
|
|
113
112
|
headerName: 'Fee Amount',
|
|
114
113
|
valueGetter: function valueGetter(_ref2) {
|
|
115
|
-
var row = _ref2.row
|
|
116
|
-
|
|
117
|
-
return rowNode.isAutoGenerated ? null : row.feeRate * row.quantity * row.unitPrice;
|
|
114
|
+
var row = _ref2.row;
|
|
115
|
+
return row.feeRate == null || row.quantity == null || row.unitPrice == null ? null : row.feeRate * row.quantity * row.unitPrice;
|
|
118
116
|
},
|
|
119
117
|
type: 'number',
|
|
120
118
|
width: 120
|
|
@@ -130,9 +128,8 @@ export var getCommodityColumns = function getCommodityColumns() {
|
|
|
130
128
|
field: 'totalPrice',
|
|
131
129
|
headerName: 'Total in USD',
|
|
132
130
|
valueGetter: function valueGetter(_ref3) {
|
|
133
|
-
var row = _ref3.row
|
|
134
|
-
|
|
135
|
-
return rowNode.isAutoGenerated ? null : row.feeRate + row.quantity * row.unitPrice;
|
|
131
|
+
var row = _ref3.row;
|
|
132
|
+
return row.feeRate == null || row.quantity == null || row.unitPrice == null ? null : row.feeRate + row.quantity * row.unitPrice;
|
|
136
133
|
},
|
|
137
134
|
renderCell: renderTotalPrice,
|
|
138
135
|
type: 'number',
|
|
@@ -187,7 +184,6 @@ export var getCommodityColumns = function getCommodityColumns() {
|
|
|
187
184
|
return country.value === value;
|
|
188
185
|
});
|
|
189
186
|
}
|
|
190
|
-
|
|
191
187
|
return value;
|
|
192
188
|
},
|
|
193
189
|
valueFormatter: function valueFormatter(_ref4) {
|
|
@@ -13,7 +13,7 @@ export var getEmployeeColumns = function getEmployeeColumns() {
|
|
|
13
13
|
generateData: randomColor,
|
|
14
14
|
renderCell: renderAvatar,
|
|
15
15
|
valueGetter: function valueGetter(params) {
|
|
16
|
-
return params.
|
|
16
|
+
return params.row.name == null || params.row.avatar == null ? null : {
|
|
17
17
|
name: params.row.name,
|
|
18
18
|
color: params.row.avatar
|
|
19
19
|
};
|
|
@@ -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);
|
|
@@ -3,13 +3,9 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
3
3
|
import _typeof from "@babel/runtime/helpers/esm/typeof";
|
|
4
4
|
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
5
5
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
6
|
-
|
|
7
6
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
8
|
-
|
|
9
7
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
10
|
-
|
|
11
8
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
12
|
-
|
|
13
9
|
import * as React from 'react';
|
|
14
10
|
import LRUCache from 'lru-cache';
|
|
15
11
|
import { getRealGridData } from '../services/real-data-service';
|
|
@@ -20,15 +16,12 @@ import { addTreeDataOptionsToDemoData } from '../services/tree-data-generator';
|
|
|
20
16
|
var dataCache = new LRUCache({
|
|
21
17
|
max: 10,
|
|
22
18
|
ttl: 60 * 5 * 1e3 // 5 minutes
|
|
23
|
-
|
|
24
19
|
});
|
|
25
|
-
|
|
26
20
|
// Generate fake data from a seed.
|
|
27
21
|
// It's about x20 faster than getRealData.
|
|
28
22
|
function extrapolateSeed(_x, _x2) {
|
|
29
23
|
return _extrapolateSeed.apply(this, arguments);
|
|
30
24
|
}
|
|
31
|
-
|
|
32
25
|
function _extrapolateSeed() {
|
|
33
26
|
_extrapolateSeed = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(rowLength, data) {
|
|
34
27
|
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
@@ -41,25 +34,20 @@ function _extrapolateSeed() {
|
|
|
41
34
|
var tasks = {
|
|
42
35
|
current: rowLength - seed.length
|
|
43
36
|
};
|
|
44
|
-
|
|
45
37
|
function work() {
|
|
46
38
|
var row = {};
|
|
47
|
-
|
|
48
39
|
for (var j = 0; j < data.columns.length; j += 1) {
|
|
49
40
|
var column = data.columns[j];
|
|
50
41
|
var index = Math.round(Math.random() * (seed.length - 1));
|
|
51
|
-
|
|
52
42
|
if (column.field === 'id') {
|
|
53
43
|
row.id = "id-".concat(tasks.current + seed.length);
|
|
54
44
|
} else {
|
|
55
45
|
row[column.field] = seed[index][column.field];
|
|
56
46
|
}
|
|
57
47
|
}
|
|
58
|
-
|
|
59
48
|
rows.push(row);
|
|
60
49
|
tasks.current -= 1;
|
|
61
50
|
}
|
|
62
|
-
|
|
63
51
|
asyncWorker({
|
|
64
52
|
work: work,
|
|
65
53
|
done: function done() {
|
|
@@ -70,7 +58,6 @@ function _extrapolateSeed() {
|
|
|
70
58
|
tasks: tasks
|
|
71
59
|
});
|
|
72
60
|
}));
|
|
73
|
-
|
|
74
61
|
case 1:
|
|
75
62
|
case "end":
|
|
76
63
|
return _context2.stop();
|
|
@@ -80,20 +67,19 @@ function _extrapolateSeed() {
|
|
|
80
67
|
}));
|
|
81
68
|
return _extrapolateSeed.apply(this, arguments);
|
|
82
69
|
}
|
|
83
|
-
|
|
84
70
|
var deepFreeze = function deepFreeze(object) {
|
|
85
71
|
// Retrieve the property names defined on object
|
|
86
|
-
var propNames = Object.getOwnPropertyNames(object);
|
|
87
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
72
|
+
var propNames = Object.getOwnPropertyNames(object);
|
|
88
73
|
|
|
89
|
-
|
|
90
|
-
_step;
|
|
74
|
+
// Freeze properties before freezing self
|
|
91
75
|
|
|
76
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
77
|
+
var _iterator = _createForOfIteratorHelper(propNames),
|
|
78
|
+
_step;
|
|
92
79
|
try {
|
|
93
80
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
94
81
|
var name = _step.value;
|
|
95
82
|
var value = object[name];
|
|
96
|
-
|
|
97
83
|
if (value && _typeof(value) === 'object') {
|
|
98
84
|
deepFreeze(value);
|
|
99
85
|
}
|
|
@@ -103,32 +89,25 @@ var deepFreeze = function deepFreeze(object) {
|
|
|
103
89
|
} finally {
|
|
104
90
|
_iterator.f();
|
|
105
91
|
}
|
|
106
|
-
|
|
107
92
|
return Object.freeze(object);
|
|
108
93
|
};
|
|
109
|
-
|
|
110
94
|
export var getColumnsFromOptions = function getColumnsFromOptions(options) {
|
|
111
95
|
var columns = options.dataSet === 'Commodity' ? getCommodityColumns(options.editable) : getEmployeeColumns();
|
|
112
|
-
|
|
113
96
|
if (options.visibleFields) {
|
|
114
97
|
columns = columns.map(function (col) {
|
|
115
98
|
var _options$visibleField;
|
|
116
|
-
|
|
117
99
|
return (_options$visibleField = options.visibleFields) != null && _options$visibleField.includes(col.field) ? col : _extends({}, col, {
|
|
118
100
|
hide: true
|
|
119
101
|
});
|
|
120
102
|
});
|
|
121
103
|
}
|
|
122
|
-
|
|
123
104
|
if (options.maxColumns) {
|
|
124
105
|
columns = columns.slice(0, options.maxColumns);
|
|
125
106
|
}
|
|
126
|
-
|
|
127
107
|
return columns;
|
|
128
108
|
};
|
|
129
109
|
export var getInitialState = function getInitialState(options, columns) {
|
|
130
110
|
var _options$treeData;
|
|
131
|
-
|
|
132
111
|
var columnVisibilityModel = {};
|
|
133
112
|
columns.forEach(function (col) {
|
|
134
113
|
if (col.hide) {
|
|
@@ -136,11 +115,9 @@ export var getInitialState = function getInitialState(options, columns) {
|
|
|
136
115
|
}
|
|
137
116
|
});
|
|
138
117
|
var groupingField = (_options$treeData = options.treeData) == null ? void 0 : _options$treeData.groupingField;
|
|
139
|
-
|
|
140
118
|
if (groupingField) {
|
|
141
119
|
columnVisibilityModel[groupingField] = false;
|
|
142
120
|
}
|
|
143
|
-
|
|
144
121
|
return {
|
|
145
122
|
columns: {
|
|
146
123
|
columnVisibilityModel: columnVisibilityModel
|
|
@@ -149,22 +126,18 @@ export var getInitialState = function getInitialState(options, columns) {
|
|
|
149
126
|
};
|
|
150
127
|
export var useDemoData = function useDemoData(options) {
|
|
151
128
|
var _options$treeData5, _options$treeData6, _options$treeData7;
|
|
152
|
-
|
|
153
129
|
var _React$useState = React.useState(options.rowLength),
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
130
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
131
|
+
rowLength = _React$useState2[0],
|
|
132
|
+
setRowLength = _React$useState2[1];
|
|
158
133
|
var _React$useState3 = React.useState(0),
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
134
|
+
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
135
|
+
index = _React$useState4[0],
|
|
136
|
+
setIndex = _React$useState4[1];
|
|
163
137
|
var _React$useState5 = React.useState(true),
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
138
|
+
_React$useState6 = _slicedToArray(_React$useState5, 2),
|
|
139
|
+
loading = _React$useState6[0],
|
|
140
|
+
setLoading = _React$useState6[1];
|
|
168
141
|
var columns = React.useMemo(function () {
|
|
169
142
|
return getColumnsFromOptions({
|
|
170
143
|
dataSet: options.dataSet,
|
|
@@ -173,89 +146,75 @@ export var useDemoData = function useDemoData(options) {
|
|
|
173
146
|
visibleFields: options.visibleFields
|
|
174
147
|
});
|
|
175
148
|
}, [options.dataSet, options.editable, options.maxColumns, options.visibleFields]);
|
|
176
|
-
|
|
177
149
|
var _React$useState7 = React.useState(function () {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
150
|
+
return addTreeDataOptionsToDemoData({
|
|
151
|
+
columns: columns,
|
|
152
|
+
rows: [],
|
|
153
|
+
initialState: getInitialState(options, columns)
|
|
154
|
+
}, options.treeData);
|
|
155
|
+
}),
|
|
156
|
+
_React$useState8 = _slicedToArray(_React$useState7, 2),
|
|
157
|
+
data = _React$useState8[0],
|
|
158
|
+
setData = _React$useState8[1];
|
|
188
159
|
React.useEffect(function () {
|
|
189
|
-
var cacheKey = "".concat(options.dataSet, "-").concat(rowLength, "-").concat(index, "-").concat(options.maxColumns);
|
|
190
|
-
// of the demos.
|
|
160
|
+
var cacheKey = "".concat(options.dataSet, "-").concat(rowLength, "-").concat(index, "-").concat(options.maxColumns);
|
|
191
161
|
|
|
162
|
+
// Cache to allow fast switch between the JavaScript and TypeScript version
|
|
163
|
+
// of the demos.
|
|
192
164
|
if (dataCache.has(cacheKey)) {
|
|
193
165
|
var newData = dataCache.get(cacheKey);
|
|
194
166
|
setData(newData);
|
|
195
167
|
setLoading(false);
|
|
196
168
|
return undefined;
|
|
197
169
|
}
|
|
198
|
-
|
|
199
170
|
var active = true;
|
|
200
|
-
|
|
201
171
|
_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
202
172
|
var _options$treeData2, _options$treeData3, _options$treeData4;
|
|
203
|
-
|
|
204
173
|
var newData;
|
|
205
174
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
206
175
|
while (1) {
|
|
207
176
|
switch (_context.prev = _context.next) {
|
|
208
177
|
case 0:
|
|
209
178
|
setLoading(true);
|
|
210
|
-
|
|
211
179
|
if (!(rowLength > 1000)) {
|
|
212
180
|
_context.next = 10;
|
|
213
181
|
break;
|
|
214
182
|
}
|
|
215
|
-
|
|
216
183
|
_context.next = 4;
|
|
217
184
|
return getRealGridData(1000, columns);
|
|
218
|
-
|
|
219
185
|
case 4:
|
|
220
186
|
newData = _context.sent;
|
|
221
187
|
_context.next = 7;
|
|
222
188
|
return extrapolateSeed(rowLength, newData);
|
|
223
|
-
|
|
224
189
|
case 7:
|
|
225
190
|
newData = _context.sent;
|
|
226
191
|
_context.next = 13;
|
|
227
192
|
break;
|
|
228
|
-
|
|
229
193
|
case 10:
|
|
230
194
|
_context.next = 12;
|
|
231
195
|
return getRealGridData(rowLength, columns);
|
|
232
|
-
|
|
233
196
|
case 12:
|
|
234
197
|
newData = _context.sent;
|
|
235
|
-
|
|
236
198
|
case 13:
|
|
237
199
|
if (active) {
|
|
238
200
|
_context.next = 15;
|
|
239
201
|
break;
|
|
240
202
|
}
|
|
241
|
-
|
|
242
203
|
return _context.abrupt("return");
|
|
243
|
-
|
|
244
204
|
case 15:
|
|
245
205
|
newData = addTreeDataOptionsToDemoData(newData, {
|
|
246
206
|
maxDepth: (_options$treeData2 = options.treeData) == null ? void 0 : _options$treeData2.maxDepth,
|
|
247
207
|
groupingField: (_options$treeData3 = options.treeData) == null ? void 0 : _options$treeData3.groupingField,
|
|
248
208
|
averageChildren: (_options$treeData4 = options.treeData) == null ? void 0 : _options$treeData4.averageChildren
|
|
249
|
-
});
|
|
209
|
+
});
|
|
250
210
|
|
|
211
|
+
// It's quite slow. No need for it in production.
|
|
251
212
|
if (process.env.NODE_ENV !== 'production') {
|
|
252
213
|
deepFreeze(newData);
|
|
253
214
|
}
|
|
254
|
-
|
|
255
215
|
dataCache.set(cacheKey, newData);
|
|
256
216
|
setData(newData);
|
|
257
217
|
setLoading(false);
|
|
258
|
-
|
|
259
218
|
case 20:
|
|
260
219
|
case "end":
|
|
261
220
|
return _context.stop();
|
|
@@ -263,7 +222,6 @@ export var useDemoData = function useDemoData(options) {
|
|
|
263
222
|
}
|
|
264
223
|
}, _callee);
|
|
265
224
|
}))();
|
|
266
|
-
|
|
267
225
|
return function () {
|
|
268
226
|
active = false;
|
|
269
227
|
};
|