X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/b62944772ff96019c1e497426784690978bb9c96..84e4588aed7bea1bcf5727ef2eea1a692b4e3bab:/src/store/data-explorer/data-explorer-middleware-service.ts diff --git a/src/store/data-explorer/data-explorer-middleware-service.ts b/src/store/data-explorer/data-explorer-middleware-service.ts index 444e7400..934af7be 100644 --- a/src/store/data-explorer/data-explorer-middleware-service.ts +++ b/src/store/data-explorer/data-explorer-middleware-service.ts @@ -2,21 +2,44 @@ // // SPDX-License-Identifier: AGPL-3.0 -import { getDataExplorer } from "./data-explorer-reducer"; -import { MiddlewareAPI } from "../../../node_modules/redux"; -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 { DataTableFilterItem } from "~/components/data-table-filters/data-table-filters"; +import { DataExplorer } from './data-explorer-reducer'; +import { ListResults } from '~/services/common-service/common-resource-service'; export abstract class DataExplorerMiddlewareService { + protected readonly id: string; - abstract get Id(): string; - abstract get Columns(): DataColumns; - abstract requestItems (api: MiddlewareAPI): void; - - protected api: MiddlewareAPI; - set Api(value: MiddlewareAPI) { - this.api = value; + protected constructor(id: string) { + this.id = id; } - get DataExplorer () { - return getDataExplorer(this.api.getState(), this.Id); + + public getId() { + return this.id; + } + + public getColumnFilters(columns: DataColumns, columnName: string): F[] { + const column = columns.find(c => c.name === columnName); + return column ? column.filters.filter(f => f.selected) : []; } -} \ No newline at end of file + + abstract requestItems(api: MiddlewareAPI): void; +} + +export const getDataExplorerColumnFilters = (columns: DataColumns, columnName: string): F[] => { + const column = columns.find(c => c.name === columnName); + return column ? column.filters.filter(f => f.selected) : []; +}; + +export const dataExplorerToListParams = (dataExplorer: DataExplorer) => ({ + limit: dataExplorer.rowsPerPage, + offset: dataExplorer.page * dataExplorer.rowsPerPage, +}); + +export const listResultsToDataExplorerItemsMeta = ({ itemsAvailable, offset, limit }: ListResults) => ({ + itemsAvailable, + page: Math.floor(offset / limit), + rowsPerPage: limit +});