X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/c16bd80e93d4f5613f4c0a8ef973502932c62486..38e6956f75e723cf5c442188c0e570e282d04395:/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 14be4ea7..71a6ee6a 100644 --- a/src/store/data-explorer/data-explorer-middleware-service.ts +++ b/src/store/data-explorer/data-explorer-middleware-service.ts @@ -4,6 +4,11 @@ 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"; export abstract class DataExplorerMiddlewareService { protected readonly id: string; @@ -16,5 +21,25 @@ export abstract class DataExplorerMiddlewareService { return this.id; } - abstract requestItems(api: MiddlewareAPI): void; + public getColumnFilters(columns: DataColumns, columnName: string): DataTableFilters { + return getDataExplorerColumnFilters(columns, columnName); + } + + abstract requestItems(api: MiddlewareAPI, criteriaChanged?: boolean): Promise; } + +export const getDataExplorerColumnFilters = (columns: DataColumns, 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 +}); + +export const listResultsToDataExplorerItemsMeta = ({ itemsAvailable, offset, limit }: ListResults) => ({ + itemsAvailable, + page: Math.floor(offset / limit), + rowsPerPage: limit +});