From f4d717705f9824add63e7d0730f486f58a93cf83 Mon Sep 17 00:00:00 2001 From: Lucas Di Pentima Date: Fri, 20 Dec 2019 13:16:41 -0300 Subject: [PATCH] 15672: Fixes status filtering on subprocess panel. Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima --- src/services/api/filter-builder.ts | 4 ++++ .../subprocess-panel-middleware-service.ts | 22 +++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/services/api/filter-builder.ts b/src/services/api/filter-builder.ts index d5903c56..aa0f011b 100644 --- a/src/services/api/filter-builder.ts +++ b/src/services/api/filter-builder.ts @@ -13,6 +13,10 @@ export class FilterBuilder { return this.addCondition(field, "=", value, "", "", resourcePrefix); } + public addDistinct(field: string, value?: string | boolean | null, resourcePrefix?: string) { + return this.addCondition(field, "!=", value, "", "", resourcePrefix); + } + public addLike(field: string, value?: string, resourcePrefix?: string) { return this.addCondition(field, "like", value, "%", "%", resourcePrefix); } diff --git a/src/store/subprocess-panel/subprocess-panel-middleware-service.ts b/src/store/subprocess-panel/subprocess-panel-middleware-service.ts index 7b5353f3..c9e80557 100644 --- a/src/store/subprocess-panel/subprocess-panel-middleware-service.ts +++ b/src/store/subprocess-panel/subprocess-panel-middleware-service.ts @@ -20,6 +20,7 @@ import { SubprocessPanelColumnNames } from '~/views/subprocess-panel/subprocess- import { FilterBuilder } from '~/services/api/filter-builder'; import { subprocessPanelActions } from './subprocess-panel-actions'; import { DataColumns } from '~/components/data-table/data-table'; +import { ProcessStatusFilter } from '../resource-type-filters/resource-type-filters'; export class SubprocessMiddlewareService extends DataExplorerMiddlewareService { constructor(private services: ServiceRepository, id: string) { @@ -50,8 +51,25 @@ export class SubprocessMiddlewareService extends DataExplorerMiddlewareService { // Get all the subprocess' container requests and containers. const fb = new FilterBuilder().addEqual('requesting_container_uuid', parentContainerRequest.containerUuid); - if (activeStatusFilter !== undefined && activeStatusFilter !== 'All') { - fb.addEqual('container.state', activeStatusFilter); + switch (activeStatusFilter) { + case ProcessStatusFilter.COMPLETED: { + fb.addEqual('container.state', 'Complete'); + fb.addEqual('container.exit_code', '0'); + break; + } + case ProcessStatusFilter.FAILED: { + fb.addEqual('container.state', 'Complete'); + fb.addDistinct('container.exit_code', '0'); + break; + } + case ProcessStatusFilter.CANCELLED: + case ProcessStatusFilter.FAILED: + case ProcessStatusFilter.LOCKED: + case ProcessStatusFilter.QUEUED: + case ProcessStatusFilter.RUNNING: { + fb.addEqual('container.state', activeStatusFilter); + break; + } } const containerRequests = await this.services.containerRequestService.list( { ...getParams(dataExplorer), filters: fb.getFilters() }); -- 2.30.2