@affino/datagrid-vue 0.3.31 → 0.3.32
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/dist/app/useDataGridAppClipboard.d.ts +3 -0
- package/dist/app/useDataGridAppClipboard.d.ts.map +1 -1
- package/dist/app/useDataGridAppClipboard.js +95 -21
- package/dist/app/useDataGridAppFill.d.ts +1 -0
- package/dist/app/useDataGridAppFill.d.ts.map +1 -1
- package/dist/app/useDataGridAppFill.js +7 -1
- package/dist/app/useDataGridAppIntentHistory.d.ts.map +1 -1
- package/dist/app/useDataGridAppIntentHistory.js +23 -2
- package/dist/app/useDataGridAppInteractionController.d.ts +1 -0
- package/dist/app/useDataGridAppInteractionController.d.ts.map +1 -1
- package/dist/app/useDataGridAppInteractionController.js +199 -49
- package/dist/app/useDataGridAppViewport.d.ts +4 -1
- package/dist/app/useDataGridAppViewport.d.ts.map +1 -1
- package/dist/app/useDataGridAppViewport.js +39 -4
- package/dist/composables/useDataGridRuntime.d.ts.map +1 -1
- package/dist/composables/useDataGridRuntime.js +41 -1
- package/package.json +3 -3
|
@@ -24,6 +24,7 @@ export interface UseDataGridAppClipboardOptions<TRow, TSnapshot> {
|
|
|
24
24
|
} | null;
|
|
25
25
|
applySelectionRange: (range: DataGridCopyRange) => void;
|
|
26
26
|
clearCellSelection: () => void;
|
|
27
|
+
setLastAction?: (message: string) => void;
|
|
27
28
|
captureRowsSnapshot: () => TSnapshot;
|
|
28
29
|
captureRowsSnapshotForRowIds?: (rowIds: readonly (string | number)[]) => TSnapshot;
|
|
29
30
|
recordEditTransaction: (beforeSnapshot: TSnapshot, afterSnapshotOverride?: TSnapshot, label?: string) => void;
|
|
@@ -56,5 +57,7 @@ export interface UseDataGridAppClipboardResult {
|
|
|
56
57
|
isCellInPendingClipboardRange: (rowOffset: number, columnIndex: number) => boolean;
|
|
57
58
|
isCellOnPendingClipboardEdge: (rowOffset: number, columnIndex: number, edge: DataGridAppPendingClipboardEdge) => boolean;
|
|
58
59
|
}
|
|
60
|
+
export declare function isDataGridRowMissingOrPlaceholder<TRow>(row: DataGridRowNode<TRow> | null | undefined): boolean;
|
|
61
|
+
export declare function resolveMissingRowIndexInRange<TRow>(getBodyRowAtIndex: (rowIndex: number) => DataGridRowNode<TRow> | null | undefined, range: DataGridCopyRange): number | null;
|
|
59
62
|
export declare function useDataGridAppClipboard<TRow, TSnapshot>(options: UseDataGridAppClipboardOptions<TRow, TSnapshot>): UseDataGridAppClipboardResult;
|
|
60
63
|
//# sourceMappingURL=useDataGridAppClipboard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDataGridAppClipboard.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppClipboard.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"useDataGridAppClipboard.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppClipboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
import { ref } from "vue";
|
|
2
2
|
import { useDataGridClipboardBridge, useDataGridCopyRangeHelpers } from "../advanced";
|
|
3
|
+
export function isDataGridRowMissingOrPlaceholder(row) {
|
|
4
|
+
if (!row) {
|
|
5
|
+
return true;
|
|
6
|
+
}
|
|
7
|
+
return row.__placeholder === true;
|
|
8
|
+
}
|
|
9
|
+
export function resolveMissingRowIndexInRange(getBodyRowAtIndex, range) {
|
|
10
|
+
for (let rowIndex = range.startRow; rowIndex <= range.endRow; rowIndex += 1) {
|
|
11
|
+
if (isDataGridRowMissingOrPlaceholder(getBodyRowAtIndex(rowIndex))) {
|
|
12
|
+
return rowIndex;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
3
17
|
export function useDataGridAppClipboard(options) {
|
|
4
18
|
const getBodyRowAtIndex = (rowIndex) => {
|
|
5
19
|
const runtime = options.runtime;
|
|
@@ -43,13 +57,15 @@ export function useDataGridAppClipboard(options) {
|
|
|
43
57
|
getCellValue: (row, columnKey) => (options.readClipboardCell
|
|
44
58
|
? options.readClipboardCell(row, columnKey)
|
|
45
59
|
: options.readCell(row, columnKey)),
|
|
46
|
-
setLastAction:
|
|
60
|
+
setLastAction: message => {
|
|
61
|
+
options.setLastAction?.(message);
|
|
62
|
+
},
|
|
47
63
|
closeContextMenu: () => undefined,
|
|
48
64
|
});
|
|
49
|
-
const
|
|
65
|
+
const collectClipboardEdits = (range, matrix) => {
|
|
50
66
|
const normalized = normalizeClipboardRange(range);
|
|
51
67
|
if (!normalized) {
|
|
52
|
-
return
|
|
68
|
+
return { normalizedRange: null, updates: [] };
|
|
53
69
|
}
|
|
54
70
|
const matrixHeight = Math.max(1, matrix.length);
|
|
55
71
|
const matrixWidth = Math.max(1, matrix[0]?.length ?? 1);
|
|
@@ -75,26 +91,35 @@ export function useDataGridAppClipboard(options) {
|
|
|
75
91
|
editsByRowId.set(row.rowId, current);
|
|
76
92
|
}
|
|
77
93
|
}
|
|
78
|
-
|
|
94
|
+
return {
|
|
95
|
+
normalizedRange: normalized,
|
|
96
|
+
updates: Array.from(editsByRowId.entries(), ([rowId, data]) => ({
|
|
97
|
+
rowId,
|
|
98
|
+
data: data,
|
|
99
|
+
})),
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
const applyClipboardEdits = options.applyClipboardEdits ?? (async (range, matrix, applyOptions = {}) => {
|
|
103
|
+
const { normalizedRange: normalized, updates } = collectClipboardEdits(range, matrix);
|
|
104
|
+
if (!normalized) {
|
|
105
|
+
return 0;
|
|
106
|
+
}
|
|
107
|
+
if (updates.length === 0) {
|
|
79
108
|
return 0;
|
|
80
109
|
}
|
|
81
|
-
const rowIds = Array.from(
|
|
110
|
+
const rowIds = Array.from(new Set(updates.map(update => update.rowId)));
|
|
82
111
|
const beforeSnapshot = applyOptions.recordHistory === false
|
|
83
112
|
? null
|
|
84
113
|
: (options.captureRowsSnapshotForRowIds?.(rowIds) ?? options.captureRowsSnapshot());
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}));
|
|
114
|
+
const afterSnapshot = beforeSnapshot != null
|
|
115
|
+
? buildAfterEditSnapshot(beforeSnapshot, updates)
|
|
116
|
+
: null;
|
|
89
117
|
await options.runtime.api.rows.applyEdits(updates);
|
|
90
118
|
options.applySelectionRange(normalized);
|
|
91
119
|
if (beforeSnapshot != null) {
|
|
92
|
-
|
|
93
|
-
? options.captureRowsSnapshotForRowIds(rowIds)
|
|
94
|
-
: options.captureRowsSnapshot();
|
|
95
|
-
options.recordEditTransaction(beforeSnapshot, afterSnapshot, applyOptions.recordHistoryLabel);
|
|
120
|
+
options.recordEditTransaction(beforeSnapshot, afterSnapshot ?? undefined, applyOptions.recordHistoryLabel);
|
|
96
121
|
}
|
|
97
|
-
return
|
|
122
|
+
return updates.length;
|
|
98
123
|
});
|
|
99
124
|
const rangesEqual = (left, right) => {
|
|
100
125
|
if (!left || !right) {
|
|
@@ -128,6 +153,35 @@ export function useDataGridAppClipboard(options) {
|
|
|
128
153
|
}
|
|
129
154
|
return options.captureRowsSnapshot();
|
|
130
155
|
};
|
|
156
|
+
const buildAfterEditSnapshot = (beforeSnapshot, updates) => {
|
|
157
|
+
if (!beforeSnapshot || typeof beforeSnapshot !== "object") {
|
|
158
|
+
return beforeSnapshot;
|
|
159
|
+
}
|
|
160
|
+
const snapshot = beforeSnapshot;
|
|
161
|
+
if (!Array.isArray(snapshot.rows)) {
|
|
162
|
+
return beforeSnapshot;
|
|
163
|
+
}
|
|
164
|
+
const updatesByRowId = new Map();
|
|
165
|
+
for (const update of updates) {
|
|
166
|
+
updatesByRowId.set(update.rowId, update.data);
|
|
167
|
+
}
|
|
168
|
+
return {
|
|
169
|
+
...beforeSnapshot,
|
|
170
|
+
rows: snapshot.rows.map(entry => {
|
|
171
|
+
const patch = updatesByRowId.get(entry.rowId);
|
|
172
|
+
if (!patch) {
|
|
173
|
+
return entry;
|
|
174
|
+
}
|
|
175
|
+
return {
|
|
176
|
+
...entry,
|
|
177
|
+
row: {
|
|
178
|
+
...entry.row,
|
|
179
|
+
...patch,
|
|
180
|
+
},
|
|
181
|
+
};
|
|
182
|
+
}),
|
|
183
|
+
};
|
|
184
|
+
};
|
|
131
185
|
const buildFillMatrixFromRange = options.buildFillMatrixFromRange ?? ((range) => {
|
|
132
186
|
const matrix = [];
|
|
133
187
|
for (let rowIndex = range.startRow; rowIndex <= range.endRow; rowIndex += 1) {
|
|
@@ -187,6 +241,14 @@ export function useDataGridAppClipboard(options) {
|
|
|
187
241
|
return true;
|
|
188
242
|
};
|
|
189
243
|
const copySelectedCells = async (trigger = "keyboard") => {
|
|
244
|
+
const sourceRange = copyRangeHelpers.resolveCopyRange();
|
|
245
|
+
if (sourceRange) {
|
|
246
|
+
const missingRowIndex = resolveMissingRowIndexInRange(getBodyRowAtIndex, sourceRange);
|
|
247
|
+
if (missingRowIndex != null) {
|
|
248
|
+
options.setLastAction?.("Selected range includes unloaded rows. Load rows or use server export.");
|
|
249
|
+
return false;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
190
252
|
return stageClipboardOperation("copy", trigger);
|
|
191
253
|
};
|
|
192
254
|
const pasteSelectedCells = async (trigger = "keyboard", pasteOptions = {}) => {
|
|
@@ -233,21 +295,33 @@ export function useDataGridAppClipboard(options) {
|
|
|
233
295
|
void trigger;
|
|
234
296
|
return true;
|
|
235
297
|
}
|
|
236
|
-
const beforeSnapshot = captureBeforeEditSnapshot(pendingOperation === "cut"
|
|
237
|
-
? [pendingSourceRange, normalizedTargetRange]
|
|
238
|
-
: [normalizedTargetRange]);
|
|
239
298
|
if (pendingOperation === "cut" && pendingSourceRange) {
|
|
240
|
-
|
|
299
|
+
const beforeSnapshot = captureBeforeEditSnapshot([pendingSourceRange, normalizedTargetRange]);
|
|
300
|
+
const sourceClearUpdates = collectClipboardEdits(pendingSourceRange, [[""]]).updates;
|
|
301
|
+
const targetUpdates = collectClipboardEdits(targetRange, matrix).updates;
|
|
302
|
+
await applyClipboardEdits(pendingSourceRange, [[""]], { recordHistory: false });
|
|
303
|
+
const appliedRows = await applyClipboardEdits(targetRange, matrix, { recordHistory: false });
|
|
304
|
+
if (appliedRows <= 0) {
|
|
305
|
+
return false;
|
|
306
|
+
}
|
|
307
|
+
const afterSnapshot = buildAfterEditSnapshot(beforeSnapshot, [
|
|
308
|
+
...sourceClearUpdates,
|
|
309
|
+
...targetUpdates,
|
|
310
|
+
]);
|
|
311
|
+
options.recordEditTransaction(beforeSnapshot, afterSnapshot);
|
|
312
|
+
clearPendingClipboardOperation(false);
|
|
313
|
+
options.applySelectionRange(normalizedTargetRange);
|
|
314
|
+
options.syncViewport();
|
|
315
|
+
void trigger;
|
|
316
|
+
return true;
|
|
241
317
|
}
|
|
242
|
-
const appliedRows = await applyClipboardEdits(targetRange, matrix, { recordHistory:
|
|
318
|
+
const appliedRows = await applyClipboardEdits(targetRange, matrix, { recordHistory: true });
|
|
243
319
|
if (appliedRows <= 0) {
|
|
244
320
|
return false;
|
|
245
321
|
}
|
|
246
|
-
options.recordEditTransaction(beforeSnapshot);
|
|
247
322
|
if (pendingOperation !== "none") {
|
|
248
323
|
clearPendingClipboardOperation(false);
|
|
249
324
|
}
|
|
250
|
-
options.applySelectionRange(normalizedTargetRange);
|
|
251
325
|
options.syncViewport();
|
|
252
326
|
void trigger;
|
|
253
327
|
return true;
|
|
@@ -45,6 +45,7 @@ export interface UseDataGridAppFillOptions {
|
|
|
45
45
|
affectedRange?: DataGridCopyRange | null;
|
|
46
46
|
behavior: DataGridFillBehavior;
|
|
47
47
|
} | null) => void;
|
|
48
|
+
syncServerFillViewport?: (range?: DataGridCopyRange | null) => void | Promise<void>;
|
|
48
49
|
syncViewport: () => void;
|
|
49
50
|
}
|
|
50
51
|
export interface UseDataGridAppFillResult {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDataGridAppFill.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppFill.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"useDataGridAppFill.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppFill.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,9 +26,15 @@ export function useDataGridAppFill(options) {
|
|
|
26
26
|
affectedRange: committed.affectedRange ?? previewRange,
|
|
27
27
|
behavior,
|
|
28
28
|
});
|
|
29
|
-
options.
|
|
29
|
+
if (options.syncServerFillViewport) {
|
|
30
|
+
await options.syncServerFillViewport(committed.invalidation?.range ?? committed.affectedRange ?? previewRange);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
options.syncViewport();
|
|
34
|
+
}
|
|
30
35
|
return true;
|
|
31
36
|
}
|
|
37
|
+
return false;
|
|
32
38
|
}
|
|
33
39
|
const matrix = buildDataGridFillMatrix({
|
|
34
40
|
baseRange,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDataGridAppIntentHistory.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppIntentHistory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAA;AAEjF,MAAM,WAAW,sBAAsB,CAAC,IAAI;IAC1C,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IACxB,IAAI,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,GAAG,EAAE,IAAI,CAAA;KAAE,CAAC,CAAA;CACnD;AAED,MAAM,WAAW,kCAAkC,CAAC,IAAI;IACtD,OAAO,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,mBAAmB,GAAG,yBAAyB,CAAC,CAAA;IACtG,YAAY,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,IAAI,CAAA;IACjC,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,iCAAiC,CAAC,IAAI;IACrD,mBAAmB,EAAE,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAA;IACvD,wBAAwB,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KAAK,sBAAsB,CAAC,IAAI,CAAC,CAAA;IAChG,OAAO,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAC7F,OAAO,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAC7F,gBAAgB,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAA;IAC/G,uBAAuB,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAA;IAC7H,OAAO,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;CAC9F;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAC9C,OAAO,EAAE,kCAAkC,CAAC,IAAI,CAAC,GAChD,iCAAiC,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"useDataGridAppIntentHistory.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppIntentHistory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAA;AAEjF,MAAM,WAAW,sBAAsB,CAAC,IAAI;IAC1C,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IACxB,IAAI,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,GAAG,EAAE,IAAI,CAAA;KAAE,CAAC,CAAA;CACnD;AAED,MAAM,WAAW,kCAAkC,CAAC,IAAI;IACtD,OAAO,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,mBAAmB,GAAG,yBAAyB,CAAC,CAAA;IACtG,YAAY,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,IAAI,CAAA;IACjC,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,iCAAiC,CAAC,IAAI;IACrD,mBAAmB,EAAE,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAA;IACvD,wBAAwB,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,KAAK,sBAAsB,CAAC,IAAI,CAAC,CAAA;IAChG,OAAO,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAC7F,OAAO,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAC7F,gBAAgB,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAA;IAC/G,uBAAuB,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAA;IAC7H,OAAO,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;CAC9F;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAC9C,OAAO,EAAE,kCAAkC,CAAC,IAAI,CAAC,GAChD,iCAAiC,CAAC,IAAI,CAAC,CAgIzC"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { useDataGridIntentHistory } from "../advanced";
|
|
2
2
|
export function useDataGridAppIntentHistory(options) {
|
|
3
|
+
const cloneSnapshot = (snapshot) => ({
|
|
4
|
+
kind: snapshot.kind,
|
|
5
|
+
rows: snapshot.rows.map(entry => ({
|
|
6
|
+
rowId: entry.rowId,
|
|
7
|
+
row: options.cloneRowData(entry.row),
|
|
8
|
+
})),
|
|
9
|
+
});
|
|
3
10
|
const resolveRuntimeRowById = (rowId) => {
|
|
4
11
|
const rowIndex = options.runtime.resolveBodyRowIndexById(rowId);
|
|
5
12
|
if (rowIndex >= 0) {
|
|
@@ -61,7 +68,21 @@ export function useDataGridAppIntentHistory(options) {
|
|
|
61
68
|
options.syncViewport();
|
|
62
69
|
return;
|
|
63
70
|
}
|
|
64
|
-
options.runtime.api.rows
|
|
71
|
+
const rowsApi = options.runtime.api.rows;
|
|
72
|
+
if (typeof rowsApi.hasDataMutationSupport === "function" && !rowsApi.hasDataMutationSupport()) {
|
|
73
|
+
const rowPatches = snapshot.rows.map(entry => ({
|
|
74
|
+
rowId: entry.rowId,
|
|
75
|
+
data: options.cloneRowData(entry.row),
|
|
76
|
+
}));
|
|
77
|
+
if (rowPatches.length > 0) {
|
|
78
|
+
return Promise.resolve(rowsApi.applyEdits?.(rowPatches)).then(() => {
|
|
79
|
+
options.syncViewport();
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
options.syncViewport();
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
rowsApi.setData?.(snapshot.rows.map((entry, index) => ({
|
|
65
86
|
rowId: entry.rowId,
|
|
66
87
|
originalIndex: index,
|
|
67
88
|
row: options.cloneRowData(entry.row),
|
|
@@ -75,7 +96,7 @@ export function useDataGridAppIntentHistory(options) {
|
|
|
75
96
|
?? (beforeSnapshot.kind === "partial"
|
|
76
97
|
? captureRowsSnapshotByIds(beforeSnapshot.rows.map(entry => entry.rowId))
|
|
77
98
|
: captureRowsSnapshot());
|
|
78
|
-
return intentHistory.recordIntentTransaction(descriptor, beforeSnapshot, afterSnapshot);
|
|
99
|
+
return intentHistory.recordIntentTransaction(descriptor, cloneSnapshot(beforeSnapshot), cloneSnapshot(afterSnapshot));
|
|
79
100
|
};
|
|
80
101
|
return {
|
|
81
102
|
captureRowsSnapshot,
|
|
@@ -152,6 +152,7 @@ export interface UseDataGridAppInteractionControllerOptions<TRow extends Record<
|
|
|
152
152
|
rangesEqual: (left: DataGridCopyRange | null, right: DataGridCopyRange | null) => boolean;
|
|
153
153
|
buildFillMatrixFromRange: (range: DataGridCopyRange) => string[][];
|
|
154
154
|
applyRangeMove?: (baseRange: DataGridCopyRange, targetRange: DataGridCopyRange) => boolean | Promise<boolean>;
|
|
155
|
+
refreshServerFillViewport?: (range?: DataGridCopyRange | null) => void | Promise<void>;
|
|
155
156
|
syncViewport: () => void;
|
|
156
157
|
editingCell: Ref<{
|
|
157
158
|
rowId: string | number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDataGridAppInteractionController.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppInteractionController.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,WAAW,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAA;AACzE,OAAO,KAAK,EACV,sBAAsB,EACtB,eAAe,EACf,yBAAyB,EAC1B,MAAM,uBAAuB,CAAA;AAM9B,OAAO,EACL,KAAK,oBAAoB,EAI1B,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAeL,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"useDataGridAppInteractionController.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppInteractionController.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { computed, nextTick, ref } from "vue";
|
|
|
2
2
|
import { invokeDataGridCellInteraction, resolveDataGridCellKeyboardAction, toggleDataGridCellValue, } from "@affino/datagrid-core";
|
|
3
3
|
import { buildDataGridFillMatrix, canToggleDataGridFillBehavior, resolveDataGridDefaultFillBehavior, } from "../composables/dataGridFillBehavior";
|
|
4
4
|
import { useDataGridAxisAutoScrollDelta, useDataGridCellNavigation, useDataGridCellPointerDownRouter, useDataGridDragPointerSelection, useDataGridFillHandleStart, useDataGridFillSelectionLifecycle, useDataGridHistoryActionRunner, useDataGridKeyboardCommandRouter, useDataGridPointerCellCoordResolver, useDataGridPointerAutoScroll, useDataGridPointerPreviewRouter, useDataGridRangeMoveLifecycle, useDataGridRangeMoveStart, useDataGridRangeMutationEngine, } from "../advanced";
|
|
5
|
+
import { resolveMissingRowIndexInRange } from "./useDataGridAppClipboard";
|
|
5
6
|
function getFillRangeStart(range) {
|
|
6
7
|
const candidate = range;
|
|
7
8
|
return Number.isFinite(candidate.startRow)
|
|
@@ -25,6 +26,28 @@ function formatServerFillAffectedRange(range, fallbackColumns) {
|
|
|
25
26
|
: fallbackColumns.endColumn;
|
|
26
27
|
return `${start}..${end} x ${startColumn}..${endColumn}`;
|
|
27
28
|
}
|
|
29
|
+
function normalizeServerFillInvalidationRange(range) {
|
|
30
|
+
if (!range) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
const candidate = range;
|
|
34
|
+
const rawStart = Number.isFinite(candidate.startRow)
|
|
35
|
+
? candidate.startRow
|
|
36
|
+
: candidate.start;
|
|
37
|
+
const rawEnd = Number.isFinite(candidate.endRow)
|
|
38
|
+
? candidate.endRow
|
|
39
|
+
: candidate.end;
|
|
40
|
+
const start = Number(rawStart);
|
|
41
|
+
const end = Number(rawEnd ?? rawStart);
|
|
42
|
+
if (!Number.isFinite(start) || !Number.isFinite(end)) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
start: Math.max(0, Math.trunc(start)),
|
|
47
|
+
end: Math.max(Math.max(0, Math.trunc(start)), Math.trunc(end)),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
const ROW_SELECTION_COLUMN_KEY = "__datagrid_row_selection__";
|
|
28
51
|
import { useDataGridAppFill, } from "./useDataGridAppFill";
|
|
29
52
|
import { restoreDataGridFocus } from "./dataGridFocusRestore";
|
|
30
53
|
const DRAG_SELECTION_POINTER_THRESHOLD_PX = 4;
|
|
@@ -53,10 +76,53 @@ export function useDataGridAppInteractionController(options) {
|
|
|
53
76
|
}
|
|
54
77
|
return options.readCell(row, columnKey).trim().length > 0;
|
|
55
78
|
};
|
|
79
|
+
const isServerBackedRowModel = () => {
|
|
80
|
+
const controllerRowModel = options.runtimeRowModel;
|
|
81
|
+
const runtimeRowModel = options.runtime.rowModel;
|
|
82
|
+
return controllerRowModel?.dataSource != null || runtimeRowModel?.dataSource != null;
|
|
83
|
+
};
|
|
84
|
+
const resolveSelectableColumnIndexes = () => {
|
|
85
|
+
return options.visibleColumns.value
|
|
86
|
+
.map((column, columnIndex) => ({ column, columnIndex }))
|
|
87
|
+
.filter(({ column }) => column.key !== ROW_SELECTION_COLUMN_KEY)
|
|
88
|
+
.map(({ columnIndex }) => columnIndex);
|
|
89
|
+
};
|
|
56
90
|
const resolveDirectionalSemanticJumpTarget = (current, direction, event) => {
|
|
57
91
|
if (!(event.ctrlKey || event.metaKey) || event.altKey) {
|
|
58
92
|
return undefined;
|
|
59
93
|
}
|
|
94
|
+
if (event.shiftKey && isServerBackedRowModel()) {
|
|
95
|
+
const lastRowIndex = Math.max(0, options.totalRows.value - 1);
|
|
96
|
+
const selectableColumnIndexes = resolveSelectableColumnIndexes();
|
|
97
|
+
const firstSelectableColumnIndex = selectableColumnIndexes[0] ?? 0;
|
|
98
|
+
const lastSelectableColumnIndex = selectableColumnIndexes[selectableColumnIndexes.length - 1] ?? Math.max(0, options.visibleColumns.value.length - 1);
|
|
99
|
+
switch (direction) {
|
|
100
|
+
case "down":
|
|
101
|
+
return options.normalizeCellCoord({
|
|
102
|
+
...current,
|
|
103
|
+
rowIndex: lastRowIndex,
|
|
104
|
+
rowId: getBodyRowAtIndex(lastRowIndex)?.rowId ?? null,
|
|
105
|
+
}) ?? current;
|
|
106
|
+
case "up":
|
|
107
|
+
return options.normalizeCellCoord({
|
|
108
|
+
...current,
|
|
109
|
+
rowIndex: 0,
|
|
110
|
+
rowId: getBodyRowAtIndex(0)?.rowId ?? null,
|
|
111
|
+
}) ?? current;
|
|
112
|
+
case "right":
|
|
113
|
+
return options.normalizeCellCoord({
|
|
114
|
+
...current,
|
|
115
|
+
columnIndex: lastSelectableColumnIndex,
|
|
116
|
+
rowId: getBodyRowAtIndex(current.rowIndex)?.rowId ?? null,
|
|
117
|
+
}) ?? current;
|
|
118
|
+
case "left":
|
|
119
|
+
return options.normalizeCellCoord({
|
|
120
|
+
...current,
|
|
121
|
+
columnIndex: firstSelectableColumnIndex,
|
|
122
|
+
rowId: getBodyRowAtIndex(current.rowIndex)?.rowId ?? null,
|
|
123
|
+
}) ?? current;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
60
126
|
const currentCellIsNonEmpty = isSemanticNavigationCellNonEmpty(current.rowIndex, current.columnIndex);
|
|
61
127
|
if (currentCellIsNonEmpty == null) {
|
|
62
128
|
return undefined;
|
|
@@ -458,15 +524,7 @@ export function useDataGridAppInteractionController(options) {
|
|
|
458
524
|
return false;
|
|
459
525
|
}
|
|
460
526
|
const rowCount = Math.max(0, previewRange.endRow - previewRange.startRow + 1);
|
|
461
|
-
|
|
462
|
-
return false;
|
|
463
|
-
}
|
|
464
|
-
for (let rowIndex = previewRange.startRow; rowIndex <= previewRange.endRow; rowIndex += 1) {
|
|
465
|
-
if (!options.runtime?.getBodyRowAtIndex?.(rowIndex)) {
|
|
466
|
-
return true;
|
|
467
|
-
}
|
|
468
|
-
}
|
|
469
|
-
return false;
|
|
527
|
+
return rowCount >= 256;
|
|
470
528
|
},
|
|
471
529
|
commitServerFill: async ({ baseRange, previewRange, behavior }) => {
|
|
472
530
|
const runtimeRowModelDataSource = options.runtimeRowModel?.dataSource;
|
|
@@ -478,60 +536,146 @@ export function useDataGridAppInteractionController(options) {
|
|
|
478
536
|
}
|
|
479
537
|
const snapshot = options.runtime.api.rows.getSnapshot();
|
|
480
538
|
const operationId = `fill-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
481
|
-
const
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
groupExpansion: snapshot.groupExpansion ?? { expandedByDefault: false, toggledGroupKeys: [] },
|
|
488
|
-
treeData: null,
|
|
489
|
-
pivot: null,
|
|
490
|
-
pagination: snapshot.pagination ?? {
|
|
491
|
-
enabled: false,
|
|
492
|
-
pageSize: 0,
|
|
493
|
-
currentPage: 0,
|
|
494
|
-
pageCount: 0,
|
|
495
|
-
totalRowCount: 0,
|
|
496
|
-
startIndex: 0,
|
|
497
|
-
endIndex: 0,
|
|
498
|
-
},
|
|
499
|
-
},
|
|
500
|
-
sourceRange: baseRange,
|
|
501
|
-
targetRange: previewRange,
|
|
502
|
-
fillColumns: options.visibleColumns.value
|
|
503
|
-
.slice(previewRange.startColumn, previewRange.endColumn + 1)
|
|
504
|
-
.map(column => String(column.key)),
|
|
505
|
-
referenceColumns: options.visibleColumns.value
|
|
506
|
-
.slice(baseRange.startColumn, baseRange.endColumn + 1)
|
|
507
|
-
.map(column => String(column.key)),
|
|
508
|
-
mode: behavior,
|
|
509
|
-
metadata: { origin: "double-click-fill", behaviorSource: "default" },
|
|
539
|
+
const sourceMatrix = options.buildFillMatrixFromRange(baseRange);
|
|
540
|
+
const fillMatrix = buildDataGridFillMatrix({
|
|
541
|
+
baseRange,
|
|
542
|
+
previewRange,
|
|
543
|
+
sourceMatrix,
|
|
544
|
+
behavior,
|
|
510
545
|
});
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
546
|
+
const materializedTargetRowIds = [];
|
|
547
|
+
const optimisticUpdatesByRowId = new Map();
|
|
548
|
+
let optimisticFillCandidate = options.captureRowsSnapshotForRowIds != null;
|
|
549
|
+
if (optimisticFillCandidate) {
|
|
550
|
+
for (let rowIndex = previewRange.startRow; rowIndex <= previewRange.endRow; rowIndex += 1) {
|
|
551
|
+
const targetRow = getBodyRowAtIndex(rowIndex);
|
|
552
|
+
const isMaterialized = options.isRowMaterializedAtIndex
|
|
553
|
+
? options.isRowMaterializedAtIndex(rowIndex)
|
|
554
|
+
: !!targetRow && targetRow.__placeholder !== true;
|
|
555
|
+
if (!isMaterialized || !targetRow || targetRow.kind === "group" || targetRow.rowId == null || targetRow.__placeholder === true) {
|
|
556
|
+
optimisticFillCandidate = false;
|
|
557
|
+
break;
|
|
558
|
+
}
|
|
559
|
+
materializedTargetRowIds.push(targetRow.rowId);
|
|
560
|
+
for (let columnIndex = previewRange.startColumn; columnIndex <= previewRange.endColumn; columnIndex += 1) {
|
|
561
|
+
const columnKey = options.visibleColumns.value[columnIndex]?.key;
|
|
562
|
+
if (!columnKey || columnKey === ROW_SELECTION_COLUMN_KEY) {
|
|
563
|
+
continue;
|
|
564
|
+
}
|
|
565
|
+
const rowOffset = rowIndex - previewRange.startRow;
|
|
566
|
+
const columnOffset = columnIndex - previewRange.startColumn;
|
|
567
|
+
const nextValue = fillMatrix[rowOffset]?.[columnOffset] ?? "";
|
|
568
|
+
const current = optimisticUpdatesByRowId.get(targetRow.rowId) ?? {};
|
|
569
|
+
current[columnKey] = nextValue;
|
|
570
|
+
optimisticUpdatesByRowId.set(targetRow.rowId, current);
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
let optimisticRollbackUpdates = null;
|
|
575
|
+
if (optimisticFillCandidate && materializedTargetRowIds.length > 0 && optimisticUpdatesByRowId.size > 0) {
|
|
576
|
+
const baselineSnapshot = options.captureRowsSnapshotForRowIds?.(materializedTargetRowIds);
|
|
577
|
+
const baselineRows = baselineSnapshot?.rows ?? [];
|
|
578
|
+
if (baselineRows.length === materializedTargetRowIds.length) {
|
|
579
|
+
const baselineByRowId = new Map();
|
|
580
|
+
for (const entry of baselineRows) {
|
|
581
|
+
baselineByRowId.set(entry.rowId, entry.row);
|
|
582
|
+
}
|
|
583
|
+
optimisticRollbackUpdates = materializedTargetRowIds.flatMap(rowId => {
|
|
584
|
+
const row = baselineByRowId.get(rowId);
|
|
585
|
+
return row ? [{ rowId, data: row }] : [];
|
|
586
|
+
});
|
|
587
|
+
if (optimisticRollbackUpdates.length > 0) {
|
|
588
|
+
options.reportFillPlumbingState?.("server_fill_optimistic_applied", true);
|
|
589
|
+
await Promise.resolve(options.runtime.api.rows.applyEdits(Array.from(optimisticUpdatesByRowId.entries()).map(([rowId, data]) => ({
|
|
590
|
+
rowId,
|
|
591
|
+
data: data,
|
|
592
|
+
}))));
|
|
593
|
+
}
|
|
594
|
+
else {
|
|
595
|
+
optimisticRollbackUpdates = null;
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
else {
|
|
599
|
+
optimisticFillCandidate = false;
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
let result = null;
|
|
603
|
+
try {
|
|
604
|
+
result = await dataSource.commitFillOperation({
|
|
605
|
+
operationId,
|
|
606
|
+
projection: {
|
|
607
|
+
sortModel: snapshot.sortModel ?? [],
|
|
608
|
+
filterModel: snapshot.filterModel ?? null,
|
|
609
|
+
groupBy: snapshot.groupBy ?? null,
|
|
610
|
+
groupExpansion: snapshot.groupExpansion ?? { expandedByDefault: false, toggledGroupKeys: [] },
|
|
611
|
+
treeData: null,
|
|
612
|
+
pivot: null,
|
|
613
|
+
pagination: snapshot.pagination ?? {
|
|
614
|
+
enabled: false,
|
|
615
|
+
pageSize: 0,
|
|
616
|
+
currentPage: 0,
|
|
617
|
+
pageCount: 0,
|
|
618
|
+
totalRowCount: 0,
|
|
619
|
+
startIndex: 0,
|
|
620
|
+
endIndex: 0,
|
|
621
|
+
},
|
|
622
|
+
},
|
|
623
|
+
sourceRange: baseRange,
|
|
624
|
+
targetRange: previewRange,
|
|
625
|
+
fillColumns: options.visibleColumns.value
|
|
626
|
+
.slice(previewRange.startColumn, previewRange.endColumn + 1)
|
|
627
|
+
.map(column => String(column.key)),
|
|
628
|
+
referenceColumns: options.visibleColumns.value
|
|
629
|
+
.slice(baseRange.startColumn, baseRange.endColumn + 1)
|
|
630
|
+
.map(column => String(column.key)),
|
|
631
|
+
mode: behavior,
|
|
632
|
+
metadata: { origin: "double-click-fill", behaviorSource: "default" },
|
|
633
|
+
});
|
|
634
|
+
options.reportFillPlumbingState?.("commitFillOperation_called", true);
|
|
635
|
+
options.reportFillPlumbingState?.("server_fill_operationId", true);
|
|
636
|
+
}
|
|
637
|
+
catch {
|
|
638
|
+
if (optimisticRollbackUpdates && optimisticRollbackUpdates.length > 0) {
|
|
639
|
+
await Promise.resolve(options.runtime.api.rows.applyEdits(optimisticRollbackUpdates));
|
|
640
|
+
}
|
|
514
641
|
options.reportFillWarning?.("server fill commit failed");
|
|
515
642
|
return null;
|
|
516
643
|
}
|
|
517
|
-
if (
|
|
518
|
-
|
|
644
|
+
if (!result) {
|
|
645
|
+
if (optimisticRollbackUpdates && optimisticRollbackUpdates.length > 0) {
|
|
646
|
+
await Promise.resolve(options.runtime.api.rows.applyEdits(optimisticRollbackUpdates));
|
|
647
|
+
}
|
|
648
|
+
options.reportFillWarning?.("server fill commit failed");
|
|
519
649
|
return null;
|
|
520
650
|
}
|
|
521
651
|
const invalidationRange = result.invalidation?.kind === "range" ? result.invalidation.range : previewRange;
|
|
522
|
-
|
|
523
|
-
options.
|
|
652
|
+
const normalizedInvalidationRange = normalizeServerFillInvalidationRange(invalidationRange);
|
|
653
|
+
options.reportFillPlumbingDetail?.("server_fill_raw_invalidation", JSON.stringify(invalidationRange ?? null));
|
|
654
|
+
options.reportFillPlumbingDetail?.("server_fill_normalized_invalidation", normalizedInvalidationRange ? `${normalizedInvalidationRange.start}..${normalizedInvalidationRange.end}` : "none");
|
|
655
|
+
options.reportFillPlumbingDetail?.("server_fill_affected_range", formatServerFillAffectedRange(normalizedInvalidationRange ?? invalidationRange, previewRange));
|
|
656
|
+
const affectedRowCount = result.affectedRowCount ?? 0;
|
|
657
|
+
const warnings = result.warnings ?? [];
|
|
658
|
+
options.reportFillWarning?.(warnings[0] ?? (affectedRowCount > 0 ? "server fill committed" : "server fill no-op"));
|
|
524
659
|
options.reportFillPlumbingState?.("server_fill_affectedRowCount", true);
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
660
|
+
if (!options.refreshServerFillViewport) {
|
|
661
|
+
const runtimeRowModel = options.runtimeRowModel;
|
|
662
|
+
const runtimeRowModelFallback = options.runtime.rowModel;
|
|
663
|
+
const rowsApi = options.runtime.api.rows;
|
|
664
|
+
const invalidateTarget = runtimeRowModel?.invalidateRange ?? runtimeRowModelFallback?.invalidateRange;
|
|
665
|
+
if (normalizedInvalidationRange && typeof invalidateTarget === "function") {
|
|
666
|
+
invalidateTarget(normalizedInvalidationRange);
|
|
667
|
+
options.reportFillPlumbingState?.("server_fill_invalidation_applied", true);
|
|
668
|
+
}
|
|
669
|
+
await Promise.resolve(rowsApi.refresh?.());
|
|
528
670
|
}
|
|
529
|
-
await Promise.resolve(rowsApi.refresh?.());
|
|
530
671
|
return {
|
|
531
672
|
operationId: result.operationId,
|
|
532
673
|
revision: result.revision,
|
|
533
674
|
affectedRange: invalidationRange,
|
|
534
675
|
invalidation: result.invalidation ?? null,
|
|
676
|
+
affectedRowCount,
|
|
677
|
+
affectedCellCount: result.affectedCellCount ?? affectedRowCount,
|
|
678
|
+
warnings,
|
|
535
679
|
};
|
|
536
680
|
},
|
|
537
681
|
applyClipboardEdits: options.applyClipboardEdits,
|
|
@@ -560,6 +704,7 @@ export function useDataGridAppInteractionController(options) {
|
|
|
560
704
|
mode: session.behavior,
|
|
561
705
|
});
|
|
562
706
|
},
|
|
707
|
+
syncServerFillViewport: options.refreshServerFillViewport,
|
|
563
708
|
syncViewport: options.syncViewport,
|
|
564
709
|
});
|
|
565
710
|
const applyCommittedFillRange = async (baseRange, previewRange, behavior) => {
|
|
@@ -1197,6 +1342,11 @@ export function useDataGridAppInteractionController(options) {
|
|
|
1197
1342
|
if (!range) {
|
|
1198
1343
|
return false;
|
|
1199
1344
|
}
|
|
1345
|
+
const missingRowIndex = resolveMissingRowIndexInRange(getBodyRowAtIndex, range);
|
|
1346
|
+
if (missingRowIndex != null) {
|
|
1347
|
+
options.reportFillWarning?.("Selected range includes unloaded rows. Load rows or use server operation.");
|
|
1348
|
+
return false;
|
|
1349
|
+
}
|
|
1200
1350
|
const beforeSnapshot = captureRowsSnapshotForRanges([range]);
|
|
1201
1351
|
options.clearPendingClipboardOperation(false);
|
|
1202
1352
|
const applied = await options.applyClipboardEdits(range, [[""]], { recordHistory: false });
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Ref } from "vue";
|
|
2
|
-
import type { DataGridColumnSnapshot, DataGridRowNode } from "@affino/datagrid-core";
|
|
2
|
+
import type { DataGridColumnSnapshot, DataGridRowNode, DataGridViewportRange } from "@affino/datagrid-core";
|
|
3
3
|
import type { UseDataGridRuntimeResult } from "../composables/useDataGridRuntime";
|
|
4
4
|
import type { DataGridAppMode, DataGridAppRowRenderMode } from "./useDataGridAppControls";
|
|
5
5
|
type MaybeRef<T> = T | Ref<T>;
|
|
@@ -38,8 +38,10 @@ export interface UseDataGridAppViewportResult<TRow> {
|
|
|
38
38
|
bodyViewportRef: Ref<HTMLElement | null>;
|
|
39
39
|
viewportScrollTop: Ref<number>;
|
|
40
40
|
displayRows: Ref<readonly DataGridRowNode<TRow>[]>;
|
|
41
|
+
displayRowsRevision: Ref<number>;
|
|
41
42
|
pinnedBottomRows: Ref<readonly DataGridRowNode<TRow>[]>;
|
|
42
43
|
renderedColumns: Ref<readonly DataGridColumnSnapshot[]>;
|
|
44
|
+
renderedViewportRange: Ref<DataGridViewportRange | null>;
|
|
43
45
|
viewportRowStart: Ref<number>;
|
|
44
46
|
viewportRowEnd: Ref<number>;
|
|
45
47
|
viewportColumnStart: Ref<number>;
|
|
@@ -53,6 +55,7 @@ export interface UseDataGridAppViewportResult<TRow> {
|
|
|
53
55
|
mainTrackStyle: Ref<Record<string, string>>;
|
|
54
56
|
indexColumnStyle: Ref<Record<string, string>>;
|
|
55
57
|
columnStyle: (key: string) => Record<string, string>;
|
|
58
|
+
syncRenderedRowsInRange: (range: DataGridViewportRange) => void;
|
|
56
59
|
handleViewportScroll: (event: Event) => void;
|
|
57
60
|
syncViewportFromDom: () => void;
|
|
58
61
|
scheduleViewportSync: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDataGridAppViewport.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppViewport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAA;AAC9F,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"useDataGridAppViewport.d.ts","sourceRoot":"","sources":["../../src/app/useDataGridAppViewport.ts"],"names":[],"mappings":"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"}
|
|
@@ -206,6 +206,8 @@ export function useDataGridAppViewport(options) {
|
|
|
206
206
|
const bodyViewportRef = ref(null);
|
|
207
207
|
const viewportScrollTop = ref(0);
|
|
208
208
|
const displayRows = shallowRef([]);
|
|
209
|
+
const displayRowsRevision = ref(0);
|
|
210
|
+
const renderedViewportRange = ref(null);
|
|
209
211
|
const viewportScrollLeft = ref(0);
|
|
210
212
|
const viewportClientWidth = ref(0);
|
|
211
213
|
const viewportShellClientWidth = ref(0);
|
|
@@ -589,6 +591,33 @@ export function useDataGridAppViewport(options) {
|
|
|
589
591
|
}
|
|
590
592
|
return nextRows;
|
|
591
593
|
};
|
|
594
|
+
const updateRenderedViewportRange = (rows) => {
|
|
595
|
+
if (rows.length === 0) {
|
|
596
|
+
renderedViewportRange.value = null;
|
|
597
|
+
return;
|
|
598
|
+
}
|
|
599
|
+
const first = rows[0];
|
|
600
|
+
const last = rows[rows.length - 1];
|
|
601
|
+
const start = first && Number.isFinite(first.displayIndex)
|
|
602
|
+
? Math.max(0, Math.trunc(first.displayIndex))
|
|
603
|
+
: null;
|
|
604
|
+
const end = last && Number.isFinite(last.displayIndex)
|
|
605
|
+
? Math.max(0, Math.trunc(last.displayIndex))
|
|
606
|
+
: null;
|
|
607
|
+
if (start == null || end == null) {
|
|
608
|
+
renderedViewportRange.value = null;
|
|
609
|
+
return;
|
|
610
|
+
}
|
|
611
|
+
renderedViewportRange.value = {
|
|
612
|
+
start,
|
|
613
|
+
end: Math.max(start, end),
|
|
614
|
+
};
|
|
615
|
+
};
|
|
616
|
+
const commitDisplayRows = (rows) => {
|
|
617
|
+
displayRows.value = rows;
|
|
618
|
+
displayRowsRevision.value += 1;
|
|
619
|
+
updateRenderedViewportRange(rows);
|
|
620
|
+
};
|
|
592
621
|
const syncVisibleRows = (range, force = false) => {
|
|
593
622
|
if (!force
|
|
594
623
|
&& lastSyncedRange
|
|
@@ -637,12 +666,12 @@ export function useDataGridAppViewport(options) {
|
|
|
637
666
|
setWindowRange(range);
|
|
638
667
|
setViewportRangeMs = resolveDataGridPerfNow() - setViewportRangeStart;
|
|
639
668
|
const displayRowsAssignStart = resolveDataGridPerfNow();
|
|
640
|
-
|
|
669
|
+
commitDisplayRows(incrementalRows);
|
|
641
670
|
displayRowsAssignMs = resolveDataGridPerfNow() - displayRowsAssignStart;
|
|
642
671
|
}
|
|
643
672
|
else {
|
|
644
673
|
setWindowRange(range);
|
|
645
|
-
|
|
674
|
+
commitDisplayRows(incrementalRows);
|
|
646
675
|
}
|
|
647
676
|
if (perfTraceEnabled) {
|
|
648
677
|
viewportCommitMs = resolveDataGridPerfNow() - commitStart;
|
|
@@ -650,7 +679,7 @@ export function useDataGridAppViewport(options) {
|
|
|
650
679
|
}
|
|
651
680
|
else {
|
|
652
681
|
const syncStart = perfTraceEnabled ? resolveDataGridPerfNow() : 0;
|
|
653
|
-
|
|
682
|
+
commitDisplayRows(options.runtime.syncBodyRowsInRange(range));
|
|
654
683
|
if (perfTraceEnabled) {
|
|
655
684
|
runtimeSyncMs = resolveDataGridPerfNow() - syncStart;
|
|
656
685
|
}
|
|
@@ -658,7 +687,7 @@ export function useDataGridAppViewport(options) {
|
|
|
658
687
|
}
|
|
659
688
|
else {
|
|
660
689
|
const syncStart = perfTraceEnabled ? resolveDataGridPerfNow() : 0;
|
|
661
|
-
|
|
690
|
+
commitDisplayRows(options.runtime.syncBodyRowsInRange(range));
|
|
662
691
|
if (perfTraceEnabled) {
|
|
663
692
|
runtimeSyncMs = resolveDataGridPerfNow() - syncStart;
|
|
664
693
|
}
|
|
@@ -688,6 +717,9 @@ export function useDataGridAppViewport(options) {
|
|
|
688
717
|
};
|
|
689
718
|
}
|
|
690
719
|
};
|
|
720
|
+
const syncRenderedRowsInRange = (range) => {
|
|
721
|
+
syncVisibleRows(range, true);
|
|
722
|
+
};
|
|
691
723
|
const syncHeaderScrollLeftFromBody = (bodyScrollLeft) => {
|
|
692
724
|
const headerViewport = headerViewportRef.value;
|
|
693
725
|
if (!headerViewport) {
|
|
@@ -869,8 +901,10 @@ export function useDataGridAppViewport(options) {
|
|
|
869
901
|
bodyViewportRef,
|
|
870
902
|
viewportScrollTop,
|
|
871
903
|
displayRows,
|
|
904
|
+
displayRowsRevision,
|
|
872
905
|
pinnedBottomRows: computed(() => options.runtime.rowPartition.value.pinnedBottomRows),
|
|
873
906
|
renderedColumns: computed(() => viewportColumnMetrics.value.renderedColumns),
|
|
907
|
+
renderedViewportRange,
|
|
874
908
|
viewportRowStart,
|
|
875
909
|
viewportRowEnd,
|
|
876
910
|
viewportColumnStart: computed(() => viewportColumnMetrics.value.start),
|
|
@@ -884,6 +918,7 @@ export function useDataGridAppViewport(options) {
|
|
|
884
918
|
mainTrackStyle,
|
|
885
919
|
indexColumnStyle,
|
|
886
920
|
columnStyle,
|
|
921
|
+
syncRenderedRowsInRange,
|
|
887
922
|
handleViewportScroll,
|
|
888
923
|
syncViewportFromDom,
|
|
889
924
|
scheduleViewportSync,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDataGridRuntime.d.ts","sourceRoot":"","sources":["../../src/composables/useDataGridRuntime.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"useDataGridRuntime.d.ts","sourceRoot":"","sources":["../../src/composables/useDataGridRuntime.ts"],"names":[],"mappings":"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"}
|
|
@@ -279,17 +279,38 @@ export function useDataGridRuntime(options) {
|
|
|
279
279
|
const normalizedRange = normalizeBodyViewportRange(range, rowPartition.value.bodyRowCount);
|
|
280
280
|
const syncedRows = runtime.syncRowsInRange(normalizedRange);
|
|
281
281
|
if (sparseRowModel) {
|
|
282
|
+
for (let bodyIndex = normalizedRange.start; bodyIndex <= normalizedRange.end; bodyIndex += 1) {
|
|
283
|
+
const previousRow = bodyRows[bodyIndex];
|
|
284
|
+
if (previousRow
|
|
285
|
+
&& (typeof previousRow.rowId === "string" || typeof previousRow.rowId === "number")
|
|
286
|
+
&& bodyRowIndexById.get(previousRow.rowId) === bodyIndex) {
|
|
287
|
+
bodyRowIndexById.delete(previousRow.rowId);
|
|
288
|
+
}
|
|
289
|
+
delete bodyRows[bodyIndex];
|
|
290
|
+
}
|
|
291
|
+
const rowsByBodyIndex = new Map();
|
|
282
292
|
for (const row of syncedRows) {
|
|
283
293
|
if (isPinnedBodyExcludedRow(row)) {
|
|
284
294
|
continue;
|
|
285
295
|
}
|
|
286
296
|
const bodyIndex = Math.max(0, Math.trunc(row.displayIndex));
|
|
297
|
+
if (bodyIndex < normalizedRange.start || bodyIndex > normalizedRange.end) {
|
|
298
|
+
continue;
|
|
299
|
+
}
|
|
287
300
|
bodyRows[bodyIndex] = row;
|
|
301
|
+
rowsByBodyIndex.set(bodyIndex, row);
|
|
288
302
|
if (typeof row.rowId === "string" || typeof row.rowId === "number") {
|
|
289
303
|
bodyRowIndexById.set(row.rowId, bodyIndex);
|
|
290
304
|
}
|
|
291
305
|
}
|
|
292
|
-
|
|
306
|
+
const rows = [];
|
|
307
|
+
for (let bodyIndex = normalizedRange.start; bodyIndex <= normalizedRange.end; bodyIndex += 1) {
|
|
308
|
+
const row = rowsByBodyIndex.get(bodyIndex);
|
|
309
|
+
if (row) {
|
|
310
|
+
rows.push(row);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
return rows;
|
|
293
314
|
}
|
|
294
315
|
if (rowPartition.value.bodyRowCount === 0 || bodyRows.length === 0) {
|
|
295
316
|
return [];
|
|
@@ -298,6 +319,25 @@ export function useDataGridRuntime(options) {
|
|
|
298
319
|
if (normalizedRange.start >= endExclusive) {
|
|
299
320
|
return [];
|
|
300
321
|
}
|
|
322
|
+
for (const row of syncedRows) {
|
|
323
|
+
if (isPinnedBodyExcludedRow(row)) {
|
|
324
|
+
continue;
|
|
325
|
+
}
|
|
326
|
+
let bodyIndex = -1;
|
|
327
|
+
if (typeof row.rowId === "string" || typeof row.rowId === "number") {
|
|
328
|
+
bodyIndex = resolveBodyRowIndexById(row.rowId);
|
|
329
|
+
}
|
|
330
|
+
if (bodyIndex < 0) {
|
|
331
|
+
bodyIndex = Math.max(0, Math.trunc(row.displayIndex));
|
|
332
|
+
}
|
|
333
|
+
if (bodyIndex < normalizedRange.start || bodyIndex >= endExclusive) {
|
|
334
|
+
continue;
|
|
335
|
+
}
|
|
336
|
+
bodyRows[bodyIndex] = row;
|
|
337
|
+
if (typeof row.rowId === "string" || typeof row.rowId === "number") {
|
|
338
|
+
bodyRowIndexById.set(row.rowId, bodyIndex);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
301
341
|
return bodyRows.slice(normalizedRange.start, endExclusive);
|
|
302
342
|
}
|
|
303
343
|
function getBodyRowAtIndex(rowIndex) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@affino/datagrid-vue",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.32",
|
|
4
4
|
"author": "Anton Pavlov <a.pavlov@affino.dev>",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Vue adapter and headless foundation for Affino DataGrid",
|
|
@@ -75,9 +75,9 @@
|
|
|
75
75
|
}
|
|
76
76
|
},
|
|
77
77
|
"dependencies": {
|
|
78
|
-
"@affino/datagrid-core": "0.3.
|
|
78
|
+
"@affino/datagrid-core": "0.3.21",
|
|
79
|
+
"@affino/datagrid-orchestration": "0.3.13",
|
|
79
80
|
"@affino/datagrid-pivot": "0.1.2",
|
|
80
|
-
"@affino/datagrid-orchestration": "0.3.12",
|
|
81
81
|
"@affino/datagrid-worker": "0.1.1"
|
|
82
82
|
},
|
|
83
83
|
"devDependencies": {
|