Fixed the selection and rendering issues of the syncstore

This commit is contained in:
Hein
2025-10-15 09:57:40 +02:00
parent 24227f2110
commit 9c11b609dc
9 changed files with 225 additions and 185 deletions

View File

@@ -77,48 +77,32 @@ export const Computer = React.memo(() => {
rowIndexes.push(idx);
}
}
//console.log('Setting SSS', { key, rowIndex });
}
//console.log('Setting selection', { rowIndexes, values });
return rowIndexes;
};
if (values) {
searchSelection().then((rowIndexes) => {
// const newObj : GridSelection = {
// ...cur,
let rows = CompactSelection.empty();
rowIndexes.forEach((r) => {
rows = rows.add(r);
});
// rows: {
// items: rowIndexes.map((r) => [r - 1, r]) ?? [],
// },
// };
// console.log('Setting selection', {
// rowIndexes,
// values,
// newObj,
// });
setStateFN('_gridSelectionRows', () => {
let rows = CompactSelection.empty();
rowIndexes.forEach((r) => {
rows = rows.add(r);
});
// for (const r of cur ?? CompactSelection.empty()) {
// rows = rows.add(r);
// }
setStateFN('_gridSelection', (c) => ({
columns: c?.columns ?? CompactSelection.empty(),
...c,
rows,
}));
return rows;
});
setStateFN('_gridSelection', (c) => ({
columns: c?.columns ?? CompactSelection.empty(),
...c,
rows,
}));
});
}
}, [values]);
useEffect(() => {
//console.log('Gridler:Computer: Selection changed', _gridSelectionRows?.toArray());
const onChange = getState('onChange');
if (onChange && typeof onChange === 'function') {
const page_data = getState('_page_data');
@@ -152,7 +136,7 @@ export const Computer = React.memo(() => {
}
}
}
//console.log('Calling onChange with buffers', buffers, _gridSelectionRows?.toArray());
const _values = getState('values');
if (JSON.stringify(_values) !== JSON.stringify(buffers)) {