fix(Gridler): 🐛 improve state management and cleanup

* Update `askAPIRowNumber` to return `null` or `number` for better type safety.
* Refactor conditionals to ensure proper handling of row indices.
* Clean up console logs for improved readability and performance.
* Ensure consistent formatting across the codebase.
This commit is contained in:
Hein
2026-02-09 14:41:49 +02:00
parent 31e46e6bd2
commit 6cb50978d0
5 changed files with 41 additions and 38 deletions

View File

@@ -140,7 +140,7 @@ export interface GridlerState {
_visibleArea: Rectangle;
_visiblePages: Rectangle;
addError: (err: string, ...args: Array<any>) => void;
askAPIRowNumber?: (key: string) => Promise<number>;
askAPIRowNumber?: (key: string) => Promise<null | number>;
colFilters?: Array<FilterOption>;
colOrder?: Record<string, number>;
colSize?: Record<string, number>;
@@ -162,7 +162,7 @@ export interface GridlerState {
hasLocalData: boolean;
isEmpty: boolean;
isValuesInPages: () => boolean
isValuesInPages: () => boolean;
loadingData?: boolean;
loadPage: (page: number, clearMode?: 'all' | 'page') => Promise<void>;
mounted: boolean;
@@ -191,7 +191,6 @@ export interface GridlerState {
freezeRegions?: readonly Rectangle[];
selected?: Item;
}
) => void;
pageSize: number;
@@ -200,10 +199,7 @@ export interface GridlerState {
reload?: () => Promise<void>;
renderColumns?: GridlerColumns;
setState: <K extends keyof GridlerStoreState>(
key: K,
value: GridlerStoreState[K]
) => void;
setState: <K extends keyof GridlerStoreState>(key: K, value: GridlerStoreState[K]) => void;
setStateFN: <K extends keyof GridlerStoreState>(
key: K,
value: (current: GridlerStoreState[K]) => Partial<GridlerStoreState[K]>
@@ -357,7 +353,7 @@ const { Provider, useStore: useGridlerStore } = createSyncStore<GridlerStoreStat
}
}
if (rowIndex > 0) {
console.log('Local row index', rowIndex, key);
//console.log('Local row index', rowIndex, key);
return rowIndex;
}
}
@@ -366,8 +362,8 @@ const { Provider, useStore: useGridlerStore } = createSyncStore<GridlerStoreStat
return rowIndex;
} else if (typeof state.askAPIRowNumber === 'function') {
const rn = await state.askAPIRowNumber(String(key));
if (rn && rn >= 0) {
console.log('Remote row index', rowIndex, key);
return rn;
}
}
@@ -402,8 +398,8 @@ const { Provider, useStore: useGridlerStore } = createSyncStore<GridlerStoreStat
}
}
}
return false
return false;
},
keyField: 'id',
loadPage: async (pPage: number, clearMode?: 'all' | 'page') => {
@@ -488,13 +484,16 @@ const { Provider, useStore: useGridlerStore } = createSyncStore<GridlerStoreStat
onCellClicked: (cell: Item, event: CellClickedEventArgs) => {
const state = get();
const [col, row] = cell;
const rowBuffer = state.getRowBuffer(row);
if (state.glideProps?.onCellClicked) {
state.glideProps?.onCellClicked?.(cell, event);
}
if (state.values?.length) {
if (state.values?.length && state.values?.length > 0) {
if (state.onChange) {
state.onChange(state.values);
}
} else if (rowBuffer && state.onChange) {
state.onChange([rowBuffer]);
}
state._events.dispatchEvent(
@@ -949,7 +948,7 @@ const { Provider, useStore: useGridlerStore } = createSyncStore<GridlerStoreStat
}
},
total_rows: 1000,
uniqueid: getUUID()
uniqueid: getUUID(),
}),
(props) => {
const [setState, getState] = props.useStore((s) => [s.setState, s.getState]);