Unify use of Collection and Project resource types
[arvados-workbench2.git] / src / store / data-explorer / data-explorer-reducer.ts
index 0069085b1b43f318da79cf18896dcfe2c86e2900..01126170720c7593d9110eb74caffa3052558fd3 100644 (file)
@@ -10,16 +10,20 @@ import { DataColumns } from "../../components/data-table/data-table";
 interface DataExplorer {
     columns: DataColumns<any>;
     items: any[];
+    itemsAvailable: number;
     page: number;
     rowsPerPage: number;
+    rowsPerPageOptions?: number[];
     searchValue: string;
 }
 
 export const initialDataExplorer: DataExplorer = {
     columns: [],
     items: [],
+    itemsAvailable: 0,
     page: 0,
-    rowsPerPage: 0,
+    rowsPerPage: 10,
+    rowsPerPageOptions: [5, 10, 25, 50],
     searchValue: ""
 };
 
@@ -27,14 +31,17 @@ export type DataExplorerState = Record<string, DataExplorer | undefined>;
 
 const dataExplorerReducer = (state: DataExplorerState = {}, action: DataExplorerAction) =>
     actions.match(action, {
+        RESET_PAGINATION: ({ id }) =>
+            update(state, id, explorer => ({ ...explorer, page: 0 })),
+
         SET_COLUMNS: ({ id, columns }) =>
             update(state, id, setColumns(columns)),
 
         SET_FILTERS: ({ id, columnName, filters }) =>
             update(state, id, mapColumns(setFilters(columnName, filters))),
 
-        SET_ITEMS: ({ id, items }) =>
-            update(state, id, explorer => ({ ...explorer, items })),
+        SET_ITEMS: ({ id, items, itemsAvailable, page, rowsPerPage }) =>
+            update(state, id, explorer => ({ ...explorer, items, itemsAvailable, page, rowsPerPage })),
 
         SET_PAGE: ({ id, page }) =>
             update(state, id, explorer => ({ ...explorer, page })),
@@ -42,6 +49,9 @@ const dataExplorerReducer = (state: DataExplorerState = {}, action: DataExplorer
         SET_ROWS_PER_PAGE: ({ id, rowsPerPage }) =>
             update(state, id, explorer => ({ ...explorer, rowsPerPage })),
 
+        SET_SEARCH_VALUE: ({ id, searchValue }) =>
+            update(state, id, explorer => ({ ...explorer, searchValue })),
+
         TOGGLE_SORT: ({ id, columnName }) =>
             update(state, id, mapColumns(toggleSort(columnName))),