7c64020ef3b46b7e9f2ff85b4e078741a352bab4
[arvados-workbench2.git] / src / store / data-explorer / data-explorer-middleware-service.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { Dispatch, MiddlewareAPI } from "redux";
6 import { RootState } from "../store";
7 import { DataColumns } from "~/components/data-table/data-table";
8 import { DataTableFilterItem } from "~/components/data-table-filters/data-table-filters";
9
10 export abstract class DataExplorerMiddlewareService {
11     protected readonly id: string;
12
13     protected constructor(id: string) {
14         this.id = id;
15     }
16
17     public getId() {
18         return this.id;
19     }
20
21     public getColumnFilters<T, F extends DataTableFilterItem>(columns: DataColumns<T, F>, columnName: string): F[] {
22         const column = columns.find(c => c.name === columnName);
23         return column ? column.filters.filter(f => f.selected) : [];
24     }
25
26     abstract requestItems(api: MiddlewareAPI<Dispatch, RootState>): void;
27 }