fix(Gridler): correct row index calculation logic
* Update row index checks to handle negative values correctly * Simplify logic for determining row index from API
This commit is contained in:
@@ -72,12 +72,9 @@ export const Computer = React.memo(() => {
|
|||||||
//When values change, update selection
|
//When values change, update selection
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const searchSelection = async (values: Array<Record<string, unknown>>) => {
|
const searchSelection = async (values: Array<Record<string, unknown>>) => {
|
||||||
const page_data = getState('_page_data');
|
|
||||||
const pageSize = getState('pageSize');
|
|
||||||
const keyField = getState('keyField') ?? 'id';
|
const keyField = getState('keyField') ?? 'id';
|
||||||
const rowIndexes = [];
|
const rowIndexes = [];
|
||||||
for (const vi in values as Array<Record<string, unknown>>) {
|
for (const vi in values as Array<Record<string, unknown>>) {
|
||||||
let rowIndex = -1;
|
|
||||||
const key = String(
|
const key = String(
|
||||||
typeof values?.[vi] === 'object'
|
typeof values?.[vi] === 'object'
|
||||||
? values?.[vi]?.[keyField]
|
? values?.[vi]?.[keyField]
|
||||||
@@ -88,29 +85,9 @@ export const Computer = React.memo(() => {
|
|||||||
if (!key) {
|
if (!key) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
for (const p in page_data) {
|
const idx = await getRowIndexByKey(key);
|
||||||
for (const r in page_data[p]) {
|
if (idx !== null && idx !== undefined) {
|
||||||
const idx = Number(p) * pageSize + Number(r);
|
rowIndexes.push(idx);
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -350,17 +350,17 @@ const { Provider, useStore: useGridlerStore } = createSyncStore<GridlerStoreStat
|
|||||||
//console.log('Found row', idx, page_data[p][r]?.[keyField], scrollToRowKey);
|
//console.log('Found row', idx, page_data[p][r]?.[keyField], scrollToRowKey);
|
||||||
if (String(page_data[p][r]?.[keyField]) === String(key)) {
|
if (String(page_data[p][r]?.[keyField]) === String(key)) {
|
||||||
rowIndex =
|
rowIndex =
|
||||||
page_data[p][r]?._rownumber > 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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (rowIndex > 0) {
|
if (rowIndex >= 0) {
|
||||||
//console.log('Local row index', rowIndex, key);
|
//console.log('Local row index', rowIndex, key);
|
||||||
return rowIndex;
|
return rowIndex;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rowIndex > 0) {
|
if (rowIndex >= 0) {
|
||||||
return rowIndex;
|
return rowIndex;
|
||||||
} else if (typeof state.askAPIRowNumber === 'function') {
|
} else if (typeof state.askAPIRowNumber === 'function') {
|
||||||
const rn = await state.askAPIRowNumber(String(key));
|
const rn = await state.askAPIRowNumber(String(key));
|
||||||
|
|||||||
Reference in New Issue
Block a user