docs(changeset): Updated selected cols bug

This commit is contained in:
Hein
2025-10-30 14:23:30 +02:00
parent e6560aa990
commit 03210a3a7a
4 changed files with 86 additions and 62 deletions

View File

@@ -155,13 +155,14 @@ export interface GridlerState {
selection: Rectangle,
abortSignal: AbortSignal
) => CellArray | GetCellsThunk;
getGridSelectedRows: () => Array<any>;
getRowBuffer: (row: number) => Record<string, any>;
getRowIndexByKey: (key: number | string) => Promise<number | undefined>;
getState: <K extends keyof GridlerStoreState>(key: K) => GridlerStoreState[K];
hasLocalData: boolean;
isEmpty: boolean;
loadingData?: boolean;
loadingData?: boolean;
loadPage: (page: number, clearMode?: 'all' | 'page') => Promise<void>;
mounted: boolean;
onCellActivated: (cell: Item) => void;
@@ -278,6 +279,42 @@ const { Provider, useStore: useGridlerStore } = createSyncStore<GridlerStoreStat
return result as CellArray;
};
},
getGridSelectedRows: () => {
const state = get();
const buffers: Array<any> = [];
const page_data = state._page_data;
const pageSize = state.pageSize;
if (state._gridSelectionRows) {
for (const range of state._gridSelectionRows) {
let buffer = undefined;
for (const p in page_data) {
for (const r in page_data[p]) {
const idx = Number(p) * pageSize + Number(r);
if (isNaN(idx)) {
continue;
}
if (Number(page_data[p][r]?._rownumber) === range + 1) {
buffer = page_data[p][r];
//console.log('Found row', range, idx, page_data[p][r]?._rownumber);
break;
} else if (idx === range + 1) {
buffer = page_data[p][r];
//console.log('Found row 2', range, idx, page_data[p][r]?._rownumber);
break;
}
}
}
if (buffer !== undefined) {
buffers.push(buffer);
}
}
}
return buffers;
},
getRowBuffer: (row: number) => {
const state = get();
//Handle local data
@@ -300,7 +337,6 @@ const { Provider, useStore: useGridlerStore } = createSyncStore<GridlerStoreStat
return rowData;
},
getRowIndexByKey: async (key: number | string) => {
const state = get();
@@ -477,6 +513,7 @@ const { Provider, useStore: useGridlerStore } = createSyncStore<GridlerStoreStat
}
return true;
},
onColumnResize: (
column: GridColumn,
newSize: number,
@@ -501,7 +538,6 @@ const { Provider, useStore: useGridlerStore } = createSyncStore<GridlerStoreStat
});
}
},
onContextClick: (area: string, event: CellClickedEventArgs, col?: number, row?: number) => {
const s = get();
const coldef = s.renderColumns?.[col ?? -1];