19988: Add resource type param to DataColumn to enable type-checked arbitrary field...
[arvados-workbench2.git] / src / store / all-processes-panel / all-processes-panel-middleware-service.ts
index 8881d72e5d7faf29ffb26e333a82e11d023cd359..fe9c8a9d184b7ed4d565b4f2ea773775658bfa1b 100644 (file)
@@ -21,8 +21,8 @@ import {
 } from "../resource-type-filters/resource-type-filters";
 import { AllProcessesPanelColumnNames } from "views/all-processes-panel/all-processes-panel";
 import { OrderBuilder, OrderDirection } from "services/api/order-builder";
-import { ProcessResource } from "models/process";
 import { SortDirection } from "components/data-table/data-column";
+import { containerRequestFieldsNoMounts, ContainerRequestResource } from "models/container-request";
 
 export class AllProcessesPanelMiddlewareService extends DataExplorerMiddlewareService {
     constructor(private services: ServiceRepository, id: string) {
@@ -66,43 +66,6 @@ export class AllProcessesPanelMiddlewareService extends DataExplorerMiddlewareSe
     }
 }
 
-export const containerRequestFieldsNoMounts = [
-    "command",
-    "container_count_max",
-    "container_count",
-    "container_image",
-    "container_uuid",
-    "created_at",
-    "cwd",
-    "description",
-    "environment",
-    "etag",
-    "expires_at",
-    "filters",
-    "href",
-    "kind",
-    "log_uuid",
-    "modified_at",
-    "modified_by_client_uuid",
-    "modified_by_user_uuid",
-    "name",
-    "output_name",
-    "output_path",
-    "output_properties",
-    "output_storage_classes",
-    "output_ttl",
-    "output_uuid",
-    "owner_uuid",
-    "priority",
-    "properties",
-    "requesting_container_uuid",
-    "runtime_constraints",
-    "scheduling_parameters",
-    "state",
-    "use_existing",
-    "uuid",
-];
-
 const getParams = ( dataExplorer: DataExplorer ) => ({
     ...dataExplorerToListParams(dataExplorer),
     order: getOrder(dataExplorer),
@@ -110,7 +73,7 @@ const getParams = ( dataExplorer: DataExplorer ) => ({
 });
 
 const getFilters = ( dataExplorer: DataExplorer ) => {
-    const columns = dataExplorer.columns as DataColumns<string>;
+    const columns = dataExplorer.columns as DataColumns<string, ContainerRequestResource>;
     const statusColumnFilters = getDataExplorerColumnFilters(columns, 'Status');
     const activeStatusFilter = Object.keys(statusColumnFilters).find(
         filterName => statusColumnFilters[filterName].selected
@@ -128,16 +91,15 @@ const getFilters = ( dataExplorer: DataExplorer ) => {
 };
 
 const getOrder = (dataExplorer: DataExplorer) => {
-    const sortColumn = getSortColumn(dataExplorer);
-    const order = new OrderBuilder<ProcessResource>();
-    if (sortColumn) {
-        const sortDirection = sortColumn && sortColumn.sortDirection === SortDirection.ASC
+    const sortColumn = getSortColumn<ContainerRequestResource>(dataExplorer);
+    const order = new OrderBuilder<ContainerRequestResource>();
+    if (sortColumn && sortColumn.sort) {
+        const sortDirection = sortColumn.sort.direction === SortDirection.ASC
             ? OrderDirection.ASC
             : OrderDirection.DESC;
 
-        const columnName = sortColumn && sortColumn.name === AllProcessesPanelColumnNames.NAME ? "name" : "createdAt";
         return order
-            .addOrder(sortDirection, columnName)
+            .addOrder(sortDirection, sortColumn.sort.field)
             .getOrder();
     } else {
         return order.getOrder();