From 3887d08fcaec44470b875cdabc7087729c143f2a Mon Sep 17 00:00:00 2001 From: Hein Date: Wed, 11 Feb 2026 14:22:51 +0200 Subject: [PATCH] fix(Gridler): correct row index calculation logic * Update row index checks to handle negative values correctly * Simplify logic for determining row index from API --- src/Gridler/components/Computer.tsx | 29 +++---------------------- src/Gridler/components/GridlerStore.tsx | 6 ++--- 2 files changed, 6 insertions(+), 29 deletions(-) diff --git a/src/Gridler/components/Computer.tsx b/src/Gridler/components/Computer.tsx index 14a4f07..97f5a91 100644 --- a/src/Gridler/components/Computer.tsx +++ b/src/Gridler/components/Computer.tsx @@ -72,12 +72,9 @@ export const Computer = React.memo(() => { //When values change, update selection useEffect(() => { const searchSelection = async (values: Array>) => { - const page_data = getState('_page_data'); - const pageSize = getState('pageSize'); const keyField = getState('keyField') ?? 'id'; const rowIndexes = []; for (const vi in values as Array>) { - let rowIndex = -1; const key = String( typeof values?.[vi] === 'object' ? values?.[vi]?.[keyField] @@ -88,29 +85,9 @@ export const Computer = React.memo(() => { if (!key) { continue; } - for (const p in page_data) { - for (const r in page_data[p]) { - const idx = Number(p) * pageSize + Number(r); - - if (String(page_data[p][r]?.[keyField]) === key) { - //console.log('Found row S', idx, page_data[p][r], page_data[p][r]?.[keyField], key); - rowIndex = idx; - break; - } - } - if (rowIndex >= 0) { - rowIndexes.push(rowIndex); - break; - } - } - - if (rowIndex >= 0) { - rowIndexes.push(rowIndex); - } else { - const idx = await getRowIndexByKey(key); - if (idx !== null) { - rowIndexes.push(idx); - } + const idx = await getRowIndexByKey(key); + if (idx !== null && idx !== undefined) { + rowIndexes.push(idx); } } diff --git a/src/Gridler/components/GridlerStore.tsx b/src/Gridler/components/GridlerStore.tsx index b650dd8..7e21612 100644 --- a/src/Gridler/components/GridlerStore.tsx +++ b/src/Gridler/components/GridlerStore.tsx @@ -350,17 +350,17 @@ const { Provider, useStore: useGridlerStore } = createSyncStore 0 ? page_data[p][r]?._rownumber : idx > 0 ? idx : -1; + page_data[p][r]?._rownumber > 0 ? page_data[p][r]?._rownumber : idx >= 0 ? idx : -1; break; } } - if (rowIndex > 0) { + if (rowIndex >= 0) { //console.log('Local row index', rowIndex, key); return rowIndex; } } - if (rowIndex > 0) { + if (rowIndex >= 0) { return rowIndex; } else if (typeof state.askAPIRowNumber === 'function') { const rn = await state.askAPIRowNumber(String(key));