- return typeFilters;
- // const statusFilters = getDataExplorerColumnFilters(columns, ProjectPanelColumnNames.STATUS);
- // return new FilterBuilder()
- // // TODO: update filters
- // // .addIsA("uuid", typeFilters.map(f => f.type))
- // .addILike("name", dataExplorer.searchValue, GroupContentsResourcePrefix.COLLECTION)
- // .addILike("name", dataExplorer.searchValue, GroupContentsResourcePrefix.PROCESS)
- // .addILike("name", dataExplorer.searchValue, GroupContentsResourcePrefix.PROJECT)
- // .getFilters();
+ const statusColumnFilters = getDataExplorerColumnFilters(columns, 'Status');
+ const activeStatusFilter = Object.keys(statusColumnFilters).find(
+ filterName => statusColumnFilters[filterName].selected
+ );
+
+ // TODO: Extract group contents name filter
+ const nameFilters = new FilterBuilder()
+ .addILike("name", dataExplorer.searchValue, GroupContentsResourcePrefix.COLLECTION)
+ .addILike("name", dataExplorer.searchValue, GroupContentsResourcePrefix.PROCESS)
+ .addILike("name", dataExplorer.searchValue, GroupContentsResourcePrefix.PROJECT)
+ .getFilters();
+
+ // Filter by container status
+ const fb = new FilterBuilder();
+ switch (activeStatusFilter) {
+ case ProcessStatusFilter.COMPLETED: {
+ fb.addEqual('container.state', 'Complete', GroupContentsResourcePrefix.PROCESS);
+ fb.addEqual('container.exit_code', '0', GroupContentsResourcePrefix.PROCESS);
+ break;
+ }
+ case ProcessStatusFilter.FAILED: {
+ fb.addEqual('container.state', 'Complete', GroupContentsResourcePrefix.PROCESS);
+ fb.addDistinct('container.exit_code', '0', GroupContentsResourcePrefix.PROCESS);
+ break;
+ }
+ case ProcessStatusFilter.CANCELLED:
+ case ProcessStatusFilter.LOCKED:
+ case ProcessStatusFilter.QUEUED:
+ case ProcessStatusFilter.RUNNING: {
+ fb.addEqual('container.state', activeStatusFilter, GroupContentsResourcePrefix.PROCESS);
+ break;
+ }
+ }
+ const statusFilters = fb.getFilters();
+
+ return joinFilters(
+ statusFilters,
+ typeFilters,
+ nameFilters,
+ );