19988: Add resource type param to DataColumn to enable type-checked arbitrary field...
[arvados-workbench2.git] / src / store / data-explorer / data-explorer-middleware-service.ts
index 64e6e50baaa6cc18e51503fda4ece9d28b480a3d..347c73314da5bbd23d6149fdf2985275fdae6390 100644 (file)
@@ -2,13 +2,13 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-import { Dispatch, MiddlewareAPI } from "redux";
-import { RootState } from "../store";
-import { DataColumns } from "~/components/data-table/data-table";
+import { Dispatch, MiddlewareAPI } from 'redux';
+import { RootState } from '../store';
+import { DataColumns } from 'components/data-table/data-table';
 import { DataExplorer } from './data-explorer-reducer';
-import { ListResults } from '~/services/common-service/common-service';
-import { createTree } from "~/models/tree";
-import { DataTableFilters } from "~/components/data-table-filters/data-table-filters-tree";
+import { ListResults } from 'services/common-service/common-service';
+import { createTree } from 'models/tree';
+import { DataTableFilters } from 'components/data-table-filters/data-table-filters-tree';
 
 export abstract class DataExplorerMiddlewareService {
     protected readonly id: string;
@@ -21,25 +21,38 @@ export abstract class DataExplorerMiddlewareService {
         return this.id;
     }
 
-    public getColumnFilters<T>(columns: DataColumns<T>, columnName: string): DataTableFilters {
+    public getColumnFilters<T>(
+        columns: DataColumns<T, any>,
+        columnName: string
+    ): DataTableFilters {
         return getDataExplorerColumnFilters(columns, columnName);
     }
 
-    abstract requestItems(api: MiddlewareAPI<Dispatch, RootState>, criteriaChanged?: boolean): Promise<void>;
+    abstract requestItems(
+        api: MiddlewareAPI<Dispatch, RootState>,
+        criteriaChanged?: boolean
+    ): Promise<void>;
 }
 
-export const getDataExplorerColumnFilters = <T>(columns: DataColumns<T>, columnName: string): DataTableFilters => {
-    const column = columns.find(c => c.name === columnName);
+export const getDataExplorerColumnFilters = <T>(
+    columns: DataColumns<T, any>,
+    columnName: string
+): DataTableFilters => {
+    const column = columns.find((c) => c.name === columnName);
     return column ? column.filters : createTree();
 };
 
 export const dataExplorerToListParams = (dataExplorer: DataExplorer) => ({
     limit: dataExplorer.rowsPerPage,
-    offset: dataExplorer.page * dataExplorer.rowsPerPage
+    offset: dataExplorer.page * dataExplorer.rowsPerPage,
 });
 
-export const listResultsToDataExplorerItemsMeta = <R>({ itemsAvailable, offset, limit }: ListResults<R>) => ({
+export const listResultsToDataExplorerItemsMeta = <R>({
+    itemsAvailable,
+    offset,
+    limit,
+}: ListResults<R>) => ({
     itemsAvailable,
     page: Math.floor(offset / limit),
-    rowsPerPage: limit
+    rowsPerPage: limit,
 });