@mui/x-data-grid-generator 6.0.0-alpha.8 → 6.0.0-alpha.9
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 +129 -15
- package/columns/commodities.columns.js +0 -1
- package/columns/employees.columns.js +0 -1
- package/hooks/useDemoData.js +9 -31
- package/hooks/useMovieData.js +0 -1
- package/hooks/useQuery.js +6 -34
- 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 +0 -2
- package/legacy/hooks/useQuery.js +27 -64
- 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 +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 +6 -32
- 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 +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 +8 -48
- 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 +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 +4 -4
- package/renderer/renderAvatar.js +0 -1
- package/renderer/renderCountry.js +3 -4
- package/renderer/renderEditCountry.js +0 -3
- package/renderer/renderEditCurrency.js +0 -3
- package/renderer/renderEditIncoterm.js +0 -5
- package/renderer/renderEditProgress.js +0 -7
- package/renderer/renderEditRating.js +0 -5
- 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
|
@@ -6,35 +6,26 @@ export function getRealGridData(rowLength, columns) {
|
|
|
6
6
|
};
|
|
7
7
|
var rows = [];
|
|
8
8
|
var indexedValues = {};
|
|
9
|
-
|
|
10
9
|
function work() {
|
|
11
10
|
var row = {};
|
|
12
|
-
|
|
13
11
|
for (var j = 0; j < columns.length; j += 1) {
|
|
14
12
|
var column = columns[j];
|
|
15
|
-
|
|
16
13
|
if (column.generateData) {
|
|
17
14
|
var context = {};
|
|
18
|
-
|
|
19
15
|
if (column.dataGeneratorUniquenessEnabled) {
|
|
20
16
|
var fieldValues = indexedValues[column.field];
|
|
21
|
-
|
|
22
17
|
if (!fieldValues) {
|
|
23
18
|
fieldValues = {};
|
|
24
19
|
indexedValues[column.field] = fieldValues;
|
|
25
20
|
}
|
|
26
|
-
|
|
27
21
|
context.values = fieldValues;
|
|
28
22
|
}
|
|
29
|
-
|
|
30
23
|
row[column.field] = column.generateData(row, context);
|
|
31
24
|
}
|
|
32
25
|
}
|
|
33
|
-
|
|
34
26
|
rows.push(row);
|
|
35
27
|
tasks.current -= 1;
|
|
36
28
|
}
|
|
37
|
-
|
|
38
29
|
var columnVisibilityModel = {};
|
|
39
30
|
columns.forEach(function (col) {
|
|
40
31
|
if (col.hide) {
|
|
@@ -3,81 +3,65 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
|
3
3
|
import { randomArrayItem } from './random-generator';
|
|
4
4
|
export var addTreeDataOptionsToDemoData = function addTreeDataOptionsToDemoData(data) {
|
|
5
5
|
var _groupingCol$headerNa;
|
|
6
|
-
|
|
7
6
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
8
7
|
var _options$averageChild = options.averageChildren,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
averageChildren = _options$averageChild === void 0 ? 2 : _options$averageChild,
|
|
9
|
+
_options$maxDepth = options.maxDepth,
|
|
10
|
+
maxDepth = _options$maxDepth === void 0 ? 1 : _options$maxDepth,
|
|
11
|
+
groupingField = options.groupingField;
|
|
13
12
|
var hasTreeData = maxDepth > 1 && groupingField != null;
|
|
14
|
-
|
|
15
13
|
if (!hasTreeData) {
|
|
16
14
|
return data;
|
|
17
15
|
}
|
|
18
|
-
|
|
19
16
|
if (data.rows.length > 1000) {
|
|
20
17
|
throw new Error('MUI: useDemoData tree data mode only works up to 1000 rows.');
|
|
21
18
|
}
|
|
22
|
-
|
|
23
19
|
var rowsByTreeDepth = {};
|
|
24
20
|
var rowsCount = data.rows.length;
|
|
25
21
|
var groupingCol = data.columns.find(function (col) {
|
|
26
22
|
return col.field === options.groupingField;
|
|
27
23
|
});
|
|
28
|
-
|
|
29
24
|
if (!groupingCol) {
|
|
30
25
|
throw new Error('MUI: The tree data grouping field does not exist');
|
|
31
26
|
}
|
|
32
|
-
|
|
33
27
|
data.initialState.columns.columnVisibilityModel[groupingField] = false;
|
|
34
|
-
|
|
35
28
|
for (var i = 0; i < rowsCount; i += 1) {
|
|
36
29
|
var row = data.rows[i];
|
|
37
30
|
var currentChunk = Math.floor(i * (Math.pow(averageChildren, maxDepth) - 1) / rowsCount) + 1;
|
|
38
31
|
var currentDepth = Math.floor(Math.log(currentChunk) / Math.log(averageChildren));
|
|
39
|
-
|
|
40
32
|
if (!rowsByTreeDepth[currentDepth]) {
|
|
41
33
|
rowsByTreeDepth[currentDepth] = {
|
|
42
34
|
rows: {},
|
|
43
35
|
rowIndexes: []
|
|
44
36
|
};
|
|
45
37
|
}
|
|
46
|
-
|
|
47
38
|
rowsByTreeDepth[currentDepth].rows[i] = {
|
|
48
39
|
value: row,
|
|
49
40
|
parentIndex: null
|
|
50
41
|
};
|
|
51
42
|
rowsByTreeDepth[currentDepth].rowIndexes.push(i);
|
|
52
43
|
}
|
|
53
|
-
|
|
54
44
|
Object.entries(rowsByTreeDepth).forEach(function (_ref) {
|
|
55
45
|
var _ref2 = _slicedToArray(_ref, 2),
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
46
|
+
depthStr = _ref2[0],
|
|
47
|
+
rows = _ref2[1].rows;
|
|
59
48
|
var depth = Number(depthStr);
|
|
60
49
|
Object.values(rows).forEach(function (row) {
|
|
61
50
|
var path = [];
|
|
62
51
|
var previousRow = null;
|
|
63
|
-
|
|
64
52
|
for (var k = depth; k >= 0; k -= 1) {
|
|
65
53
|
var rowTemp = void 0;
|
|
66
|
-
|
|
67
54
|
if (k === depth) {
|
|
68
55
|
if (depth > 0) {
|
|
69
56
|
row.parentIndex = Number(randomArrayItem(rowsByTreeDepth[depth - 1].rowIndexes));
|
|
70
57
|
}
|
|
71
|
-
|
|
72
58
|
rowTemp = row;
|
|
73
59
|
} else {
|
|
74
60
|
rowTemp = rowsByTreeDepth[k].rows[previousRow.parentIndex];
|
|
75
61
|
}
|
|
76
|
-
|
|
77
62
|
path.unshift(rowTemp.value[groupingField]);
|
|
78
63
|
previousRow = rowTemp;
|
|
79
64
|
}
|
|
80
|
-
|
|
81
65
|
row.value.path = path;
|
|
82
66
|
});
|
|
83
67
|
});
|
|
@@ -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,36 +43,31 @@ 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
|
-
|
|
48
|
+
const propNames = Object.getOwnPropertyNames(object);
|
|
49
|
+
|
|
50
|
+
// Freeze properties before freezing self
|
|
57
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 => options.visibleFields?.includes(col.field) ? col : _extends({}, col, {
|
|
74
65
|
hide: true
|
|
75
66
|
}));
|
|
76
67
|
}
|
|
77
|
-
|
|
78
68
|
if (options.maxColumns) {
|
|
79
69
|
columns = columns.slice(0, options.maxColumns);
|
|
80
70
|
}
|
|
81
|
-
|
|
82
71
|
return columns;
|
|
83
72
|
};
|
|
84
73
|
export const getInitialState = (options, columns) => {
|
|
@@ -89,11 +78,9 @@ export const getInitialState = (options, columns) => {
|
|
|
89
78
|
}
|
|
90
79
|
});
|
|
91
80
|
const groupingField = options.treeData?.groupingField;
|
|
92
|
-
|
|
93
81
|
if (groupingField) {
|
|
94
82
|
columnVisibilityModel[groupingField] = false;
|
|
95
83
|
}
|
|
96
|
-
|
|
97
84
|
return {
|
|
98
85
|
columns: {
|
|
99
86
|
columnVisibilityModel
|
|
@@ -120,48 +107,43 @@ export const useDemoData = options => {
|
|
|
120
107
|
}, options.treeData);
|
|
121
108
|
});
|
|
122
109
|
React.useEffect(() => {
|
|
123
|
-
const cacheKey = `${options.dataSet}-${rowLength}-${index}-${options.maxColumns}`;
|
|
124
|
-
// of the demos.
|
|
110
|
+
const cacheKey = `${options.dataSet}-${rowLength}-${index}-${options.maxColumns}`;
|
|
125
111
|
|
|
112
|
+
// Cache to allow fast switch between the JavaScript and TypeScript version
|
|
113
|
+
// of the demos.
|
|
126
114
|
if (dataCache.has(cacheKey)) {
|
|
127
115
|
const newData = dataCache.get(cacheKey);
|
|
128
116
|
setData(newData);
|
|
129
117
|
setLoading(false);
|
|
130
118
|
return undefined;
|
|
131
119
|
}
|
|
132
|
-
|
|
133
120
|
let active = true;
|
|
134
|
-
|
|
135
121
|
(async () => {
|
|
136
122
|
setLoading(true);
|
|
137
123
|
let newData;
|
|
138
|
-
|
|
139
124
|
if (rowLength > 1000) {
|
|
140
125
|
newData = await getRealGridData(1000, columns);
|
|
141
126
|
newData = await extrapolateSeed(rowLength, newData);
|
|
142
127
|
} else {
|
|
143
128
|
newData = await getRealGridData(rowLength, columns);
|
|
144
129
|
}
|
|
145
|
-
|
|
146
130
|
if (!active) {
|
|
147
131
|
return;
|
|
148
132
|
}
|
|
149
|
-
|
|
150
133
|
newData = addTreeDataOptionsToDemoData(newData, {
|
|
151
134
|
maxDepth: options.treeData?.maxDepth,
|
|
152
135
|
groupingField: options.treeData?.groupingField,
|
|
153
136
|
averageChildren: options.treeData?.averageChildren
|
|
154
|
-
});
|
|
137
|
+
});
|
|
155
138
|
|
|
139
|
+
// It's quite slow. No need for it in production.
|
|
156
140
|
if (process.env.NODE_ENV !== 'production') {
|
|
157
141
|
deepFreeze(newData);
|
|
158
142
|
}
|
|
159
|
-
|
|
160
143
|
dataCache.set(cacheKey, newData);
|
|
161
144
|
setData(newData);
|
|
162
145
|
setLoading(false);
|
|
163
146
|
})();
|
|
164
|
-
|
|
165
147
|
return () => {
|
|
166
148
|
active = false;
|
|
167
149
|
};
|
package/modern/hooks/useQuery.js
CHANGED
|
@@ -3,25 +3,21 @@ 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
|
const params = {
|
|
9
8
|
id: row.id,
|
|
10
9
|
row,
|
|
11
10
|
field,
|
|
12
11
|
rowNode: {}
|
|
13
|
-
};
|
|
14
|
-
|
|
12
|
+
};
|
|
13
|
+
// @ts-ignore
|
|
15
14
|
return colDef.valueGetter?.(params) || row[field];
|
|
16
15
|
};
|
|
17
|
-
|
|
18
16
|
const getRowComparator = (sortModel, columnsWithDefaultColDef) => {
|
|
19
17
|
if (!sortModel) {
|
|
20
18
|
const comparator = () => 0;
|
|
21
|
-
|
|
22
19
|
return comparator;
|
|
23
20
|
}
|
|
24
|
-
|
|
25
21
|
const sortOperators = sortModel.map(sortItem => {
|
|
26
22
|
const columnField = sortItem.field;
|
|
27
23
|
const colDef = columnsWithDefaultColDef.find(({
|
|
@@ -32,7 +28,6 @@ const getRowComparator = (sortModel, columnsWithDefaultColDef) => {
|
|
|
32
28
|
sortComparator: colDef.sortComparator
|
|
33
29
|
});
|
|
34
30
|
});
|
|
35
|
-
|
|
36
31
|
const comparator = (row1, row2) => sortOperators.reduce((acc, {
|
|
37
32
|
valueGetter,
|
|
38
33
|
sort,
|
|
@@ -41,20 +36,16 @@ const getRowComparator = (sortModel, columnsWithDefaultColDef) => {
|
|
|
41
36
|
if (acc !== 0) {
|
|
42
37
|
return acc;
|
|
43
38
|
}
|
|
44
|
-
|
|
45
39
|
const v1 = valueGetter(row1);
|
|
46
40
|
const v2 = valueGetter(row2);
|
|
47
41
|
return sort === 'desc' ? -1 * sortComparator(v1, v2) : sortComparator(v1, v2);
|
|
48
42
|
}, 0);
|
|
49
|
-
|
|
50
43
|
return comparator;
|
|
51
44
|
};
|
|
52
|
-
|
|
53
45
|
const getFilteredRows = (rows, filterModel, columnsWithDefaultColDef) => {
|
|
54
46
|
if (filterModel === undefined || filterModel.items.length === 0) {
|
|
55
47
|
return rows;
|
|
56
48
|
}
|
|
57
|
-
|
|
58
49
|
const valueGetters = filterModel.items.map(({
|
|
59
50
|
columnField
|
|
60
51
|
}) => simplifiedValueGetter(columnField, columnsWithDefaultColDef.find(({
|
|
@@ -72,18 +63,15 @@ const getFilteredRows = (rows, filterModel, columnsWithDefaultColDef) => {
|
|
|
72
63
|
value
|
|
73
64
|
}) => operatorValue === value);
|
|
74
65
|
let parsedValue = filterItem.value;
|
|
75
|
-
|
|
76
66
|
if (colDef.valueParser) {
|
|
77
67
|
const parser = colDef.valueParser;
|
|
78
68
|
parsedValue = Array.isArray(filterItem.value) ? filterItem.value?.map(x => parser(x)) : parser(filterItem.value);
|
|
79
69
|
}
|
|
80
|
-
|
|
81
70
|
return filterOperator?.getApplyFilterFn({
|
|
82
71
|
filterItem,
|
|
83
72
|
value: parsedValue
|
|
84
73
|
}, colDef);
|
|
85
74
|
});
|
|
86
|
-
|
|
87
75
|
if (filterModel.linkOperator === GridLinkOperator.Or) {
|
|
88
76
|
return rows.filter(row => filterModel.items.some((_, index) => {
|
|
89
77
|
const value = valueGetters[index](row);
|
|
@@ -92,7 +80,6 @@ const getFilteredRows = (rows, filterModel, columnsWithDefaultColDef) => {
|
|
|
92
80
|
});
|
|
93
81
|
}));
|
|
94
82
|
}
|
|
95
|
-
|
|
96
83
|
return rows.filter(row => filterModel.items.every((_, index) => {
|
|
97
84
|
const value = valueGetters[index](row);
|
|
98
85
|
return filterFunctions[index] === null ? true : filterFunctions[index]({
|
|
@@ -100,22 +87,19 @@ const getFilteredRows = (rows, filterModel, columnsWithDefaultColDef) => {
|
|
|
100
87
|
});
|
|
101
88
|
}));
|
|
102
89
|
};
|
|
90
|
+
|
|
103
91
|
/**
|
|
104
92
|
* Simulates server data loading
|
|
105
93
|
*/
|
|
106
|
-
|
|
107
|
-
|
|
108
94
|
export const loadServerRows = (rows, queryOptions, serverOptions, columnsWithDefaultColDef) => {
|
|
109
95
|
const {
|
|
110
96
|
minDelay = 100,
|
|
111
97
|
maxDelay = 300,
|
|
112
98
|
useCursorPagination
|
|
113
99
|
} = serverOptions;
|
|
114
|
-
|
|
115
100
|
if (maxDelay < minDelay) {
|
|
116
101
|
throw new Error('serverOptions.minDelay is larger than serverOptions.maxDelay ');
|
|
117
102
|
}
|
|
118
|
-
|
|
119
103
|
const delay = Math.random() * (maxDelay - minDelay) + minDelay;
|
|
120
104
|
const {
|
|
121
105
|
cursor,
|
|
@@ -129,7 +113,6 @@ export const loadServerRows = (rows, queryOptions, serverOptions, columnsWithDef
|
|
|
129
113
|
const rowComparator = getRowComparator(queryOptions.sortModel, columnsWithDefaultColDef);
|
|
130
114
|
filteredRows = [...filteredRows].sort(rowComparator);
|
|
131
115
|
const totalRowCount = filteredRows.length;
|
|
132
|
-
|
|
133
116
|
if (!pageSize) {
|
|
134
117
|
firstRowIndex = 0;
|
|
135
118
|
lastRowIndex = filteredRows.length;
|
|
@@ -138,14 +121,12 @@ export const loadServerRows = (rows, queryOptions, serverOptions, columnsWithDef
|
|
|
138
121
|
id
|
|
139
122
|
}) => id === cursor) : 0;
|
|
140
123
|
firstRowIndex = Math.max(firstRowIndex, 0); // if cursor not found return 0
|
|
141
|
-
|
|
142
124
|
lastRowIndex = firstRowIndex + pageSize;
|
|
143
125
|
nextCursor = lastRowIndex >= filteredRows.length ? undefined : filteredRows[lastRowIndex].id;
|
|
144
126
|
} else {
|
|
145
127
|
firstRowIndex = page * pageSize;
|
|
146
128
|
lastRowIndex = (page + 1) * pageSize;
|
|
147
129
|
}
|
|
148
|
-
|
|
149
130
|
const response = {
|
|
150
131
|
returnedRows: filteredRows.slice(firstRowIndex, lastRowIndex),
|
|
151
132
|
nextCursor,
|
|
@@ -157,6 +138,7 @@ export const loadServerRows = (rows, queryOptions, serverOptions, columnsWithDef
|
|
|
157
138
|
}, delay); // simulate network latency
|
|
158
139
|
});
|
|
159
140
|
};
|
|
141
|
+
|
|
160
142
|
const DEFAULT_DATASET_OPTIONS = {
|
|
161
143
|
dataSet: 'Commodity',
|
|
162
144
|
rowLength: 100,
|
|
@@ -170,14 +152,11 @@ const DEFAULT_SERVER_OPTIONS = {
|
|
|
170
152
|
};
|
|
171
153
|
export const createFakeServer = (dataSetOptions, serverOptions) => {
|
|
172
154
|
const dataSetOptionsWithDefault = _extends({}, DEFAULT_DATASET_OPTIONS, dataSetOptions);
|
|
173
|
-
|
|
174
155
|
const serverOptionsWithDefault = _extends({}, DEFAULT_SERVER_OPTIONS, serverOptions);
|
|
175
|
-
|
|
176
156
|
const columns = getColumnsFromOptions(dataSetOptionsWithDefault);
|
|
177
157
|
const initialState = getInitialState(dataSetOptionsWithDefault, columns);
|
|
178
158
|
const defaultColDef = getGridDefaultColumnTypes();
|
|
179
159
|
const columnsWithDefaultColDef = columns.map(column => _extends({}, defaultColDef[column.type || 'string'], column));
|
|
180
|
-
|
|
181
160
|
const useQuery = queryOptions => {
|
|
182
161
|
const {
|
|
183
162
|
data: {
|
|
@@ -196,25 +175,21 @@ export const createFakeServer = (dataSetOptions, serverOptions) => {
|
|
|
196
175
|
// dataset is not ready
|
|
197
176
|
return () => {};
|
|
198
177
|
}
|
|
199
|
-
|
|
200
178
|
queryOptionsRef.current = queryOptions;
|
|
201
179
|
let active = true;
|
|
202
180
|
setIsLoading(true);
|
|
203
181
|
setResponse(prev => Object.keys(prev.pageInfo).length === 0 ? prev : _extends({}, prev, {
|
|
204
182
|
pageInfo: {}
|
|
205
183
|
}));
|
|
206
|
-
|
|
207
184
|
(async function fetchData() {
|
|
208
185
|
const {
|
|
209
186
|
returnedRows,
|
|
210
187
|
nextCursor,
|
|
211
188
|
totalRowCount
|
|
212
189
|
} = await loadServerRows(rows, queryOptions, serverOptionsWithDefault, columnsWithDefaultColDef);
|
|
213
|
-
|
|
214
190
|
if (!active) {
|
|
215
191
|
return;
|
|
216
192
|
}
|
|
217
|
-
|
|
218
193
|
const newRep = {
|
|
219
194
|
rows: returnedRows,
|
|
220
195
|
pageInfo: {
|
|
@@ -226,18 +201,17 @@ export const createFakeServer = (dataSetOptions, serverOptions) => {
|
|
|
226
201
|
setResponse(prev => isDeepEqual(prev, newRep) ? prev : newRep);
|
|
227
202
|
setIsLoading(false);
|
|
228
203
|
})();
|
|
229
|
-
|
|
230
204
|
return () => {
|
|
231
205
|
active = false;
|
|
232
206
|
};
|
|
233
|
-
}, [dataGenerationIsLoading, queryOptions, rows]);
|
|
207
|
+
}, [dataGenerationIsLoading, queryOptions, rows]);
|
|
234
208
|
|
|
209
|
+
// We use queryOptions pointer to be sure that isLoading===true as soon as the options change
|
|
235
210
|
const effectShouldStart = queryOptionsRef.current !== queryOptions;
|
|
236
211
|
return _extends({
|
|
237
212
|
isLoading: isLoading || effectShouldStart
|
|
238
213
|
}, response);
|
|
239
214
|
};
|
|
240
|
-
|
|
241
215
|
return {
|
|
242
216
|
columns,
|
|
243
217
|
columnsWithDefaultColDef,
|
package/modern/index.js
CHANGED
|
@@ -36,14 +36,13 @@ const Country = /*#__PURE__*/React.memo(function Country(props) {
|
|
|
36
36
|
export function renderCountry(params) {
|
|
37
37
|
if (params.value == null) {
|
|
38
38
|
return '';
|
|
39
|
-
}
|
|
40
|
-
// Then we fall back to the default rendering based on `valueGetter` instead of rendering the total price UI.
|
|
41
|
-
|
|
39
|
+
}
|
|
42
40
|
|
|
41
|
+
// If the aggregated value does not have the same unit as the other cell
|
|
42
|
+
// Then we fall back to the default rendering based on `valueGetter` instead of rendering the total price UI.
|
|
43
43
|
if (params.aggregation && !params.aggregation.hasCellUnit) {
|
|
44
44
|
return null;
|
|
45
45
|
}
|
|
46
|
-
|
|
47
46
|
return /*#__PURE__*/_jsx(Country, {
|
|
48
47
|
value: params.value
|
|
49
48
|
});
|
|
@@ -21,7 +21,6 @@ const StyledAutocomplete = styled(Autocomplete)(({
|
|
|
21
21
|
}
|
|
22
22
|
})
|
|
23
23
|
}));
|
|
24
|
-
|
|
25
24
|
function EditCountry(props) {
|
|
26
25
|
const {
|
|
27
26
|
id,
|
|
@@ -72,12 +71,10 @@ function EditCountry(props) {
|
|
|
72
71
|
id: params.id,
|
|
73
72
|
inputProps: _extends({}, params.inputProps, {
|
|
74
73
|
autoComplete: 'new-password' // disable autocomplete and autofill
|
|
75
|
-
|
|
76
74
|
})
|
|
77
75
|
}, params.InputProps))
|
|
78
76
|
});
|
|
79
77
|
}
|
|
80
|
-
|
|
81
78
|
export function renderEditCountry(params) {
|
|
82
79
|
return /*#__PURE__*/_jsx(EditCountry, _extends({}, params));
|
|
83
80
|
}
|
|
@@ -21,7 +21,6 @@ const StyledAutocomplete = styled(Autocomplete)(({
|
|
|
21
21
|
}
|
|
22
22
|
})
|
|
23
23
|
}));
|
|
24
|
-
|
|
25
24
|
function EditCurrency(props) {
|
|
26
25
|
const {
|
|
27
26
|
id,
|
|
@@ -71,12 +70,10 @@ function EditCurrency(props) {
|
|
|
71
70
|
id: params.id,
|
|
72
71
|
inputProps: _extends({}, params.inputProps, {
|
|
73
72
|
autoComplete: 'new-password' // disable autocomplete and autofill
|
|
74
|
-
|
|
75
73
|
})
|
|
76
74
|
}, params.InputProps))
|
|
77
75
|
});
|
|
78
76
|
}
|
|
79
|
-
|
|
80
77
|
export function renderEditCurrency(params) {
|
|
81
78
|
return /*#__PURE__*/_jsx(EditCurrency, _extends({}, params));
|
|
82
79
|
}
|
|
@@ -8,7 +8,6 @@ import ListItemText from '@mui/material/ListItemText';
|
|
|
8
8
|
import { INCOTERM_OPTIONS } from '../services/static-data';
|
|
9
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
10
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
-
|
|
12
11
|
function EditIncoterm(props) {
|
|
13
12
|
const {
|
|
14
13
|
id,
|
|
@@ -16,7 +15,6 @@ function EditIncoterm(props) {
|
|
|
16
15
|
field
|
|
17
16
|
} = props;
|
|
18
17
|
const apiRef = useGridApiContext();
|
|
19
|
-
|
|
20
18
|
const handleChange = async event => {
|
|
21
19
|
await apiRef.current.setEditCellValue({
|
|
22
20
|
id,
|
|
@@ -28,7 +26,6 @@ function EditIncoterm(props) {
|
|
|
28
26
|
field
|
|
29
27
|
});
|
|
30
28
|
};
|
|
31
|
-
|
|
32
29
|
const handleClose = (event, reason) => {
|
|
33
30
|
if (reason === 'backdropClick') {
|
|
34
31
|
apiRef.current.stopCellEditMode({
|
|
@@ -37,7 +34,6 @@ function EditIncoterm(props) {
|
|
|
37
34
|
});
|
|
38
35
|
}
|
|
39
36
|
};
|
|
40
|
-
|
|
41
37
|
return /*#__PURE__*/_jsx(Select, {
|
|
42
38
|
value: value,
|
|
43
39
|
onChange: handleChange,
|
|
@@ -75,7 +71,6 @@ function EditIncoterm(props) {
|
|
|
75
71
|
})
|
|
76
72
|
});
|
|
77
73
|
}
|
|
78
|
-
|
|
79
74
|
export function renderEditIncoterm(params) {
|
|
80
75
|
return /*#__PURE__*/_jsx(EditIncoterm, _extends({}, params));
|
|
81
76
|
}
|
|
@@ -44,7 +44,6 @@ const StyledSlider = styled(Slider)(({
|
|
|
44
44
|
backgroundColor: alpha('#000000', 0.2)
|
|
45
45
|
}
|
|
46
46
|
}));
|
|
47
|
-
|
|
48
47
|
function ValueLabelComponent(props) {
|
|
49
48
|
const {
|
|
50
49
|
children,
|
|
@@ -59,7 +58,6 @@ function ValueLabelComponent(props) {
|
|
|
59
58
|
children: children
|
|
60
59
|
});
|
|
61
60
|
}
|
|
62
|
-
|
|
63
61
|
function EditProgress(props) {
|
|
64
62
|
const {
|
|
65
63
|
id,
|
|
@@ -76,22 +74,18 @@ function EditProgress(props) {
|
|
|
76
74
|
});
|
|
77
75
|
}, [apiRef, field, id]);
|
|
78
76
|
const debouncedUpdateCellEditProps = React.useMemo(() => debounce(updateCellEditProps, 60), [updateCellEditProps]);
|
|
79
|
-
|
|
80
77
|
const handleChange = (event, newValue) => {
|
|
81
78
|
setValueState(newValue);
|
|
82
79
|
debouncedUpdateCellEditProps(newValue);
|
|
83
80
|
};
|
|
84
|
-
|
|
85
81
|
React.useEffect(() => {
|
|
86
82
|
setValueState(Number(value));
|
|
87
83
|
}, [value]);
|
|
88
|
-
|
|
89
84
|
const handleRef = element => {
|
|
90
85
|
if (element) {
|
|
91
86
|
element.querySelector('[type="range"]').focus();
|
|
92
87
|
}
|
|
93
88
|
};
|
|
94
|
-
|
|
95
89
|
return /*#__PURE__*/_jsx(StyledSlider, {
|
|
96
90
|
ref: handleRef,
|
|
97
91
|
classes: {
|
|
@@ -108,7 +102,6 @@ function EditProgress(props) {
|
|
|
108
102
|
valueLabelFormat: newValue => `${(newValue * 100).toLocaleString()} %`
|
|
109
103
|
});
|
|
110
104
|
}
|
|
111
|
-
|
|
112
105
|
export function renderEditProgress(params) {
|
|
113
106
|
return /*#__PURE__*/_jsx(EditProgress, _extends({}, params));
|
|
114
107
|
}
|
|
@@ -5,7 +5,6 @@ import Rating from '@mui/material/Rating';
|
|
|
5
5
|
import { useGridApiContext } from '@mui/x-data-grid-premium';
|
|
6
6
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
7
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
-
|
|
9
8
|
function EditRating(props) {
|
|
10
9
|
const {
|
|
11
10
|
id,
|
|
@@ -13,7 +12,6 @@ function EditRating(props) {
|
|
|
13
12
|
field
|
|
14
13
|
} = props;
|
|
15
14
|
const apiRef = useGridApiContext();
|
|
16
|
-
|
|
17
15
|
const handleChange = async event => {
|
|
18
16
|
await apiRef.current.setEditCellValue({
|
|
19
17
|
id,
|
|
@@ -25,13 +23,11 @@ function EditRating(props) {
|
|
|
25
23
|
field
|
|
26
24
|
});
|
|
27
25
|
};
|
|
28
|
-
|
|
29
26
|
const handleRef = element => {
|
|
30
27
|
if (element) {
|
|
31
28
|
element.querySelector(`input[value="${value}"]`).focus();
|
|
32
29
|
}
|
|
33
30
|
};
|
|
34
|
-
|
|
35
31
|
return /*#__PURE__*/_jsxs(Box, {
|
|
36
32
|
sx: {
|
|
37
33
|
display: 'flex',
|
|
@@ -52,7 +48,6 @@ function EditRating(props) {
|
|
|
52
48
|
}), Number(value)]
|
|
53
49
|
});
|
|
54
50
|
}
|
|
55
|
-
|
|
56
51
|
export function renderEditRating(params) {
|
|
57
52
|
return /*#__PURE__*/_jsx(EditRating, _extends({}, params));
|
|
58
53
|
}
|