Fix trash panel access
authorDaniel Kos <daniel.kos@contractors.roche.com>
Thu, 20 Dec 2018 18:03:22 +0000 (19:03 +0100)
committerDaniel Kos <daniel.kos@contractors.roche.com>
Thu, 20 Dec 2018 18:03:22 +0000 (19:03 +0100)
Feature #14348

Arvados-DCO-1.1-Signed-off-by: Daniel Kos <daniel.kos@contractors.roche.com>

src/services/groups-service/groups-service.ts
src/store/resource-type-filters/resource-type-filters.ts
src/store/trash-panel/trash-panel-middleware-service.ts
src/views-components/form-fields/search-bar-form-fields.tsx
src/views/trash-panel/trash-panel.tsx

index d8b33f601f94c553e79e8be078f0dc2c9c4ee62f..668a0ac57ea3b8dda4eb922750c9fe04a9a1fc5d 100644 (file)
@@ -53,7 +53,7 @@ export class GroupsService<T extends GroupResource = GroupResource> extends Tras
                     .get(this.resourceType + pathUrl, {
                         params: CommonResourceService.mapKeys(_.snakeCase)(params)
                     }),
-                this.actions, 
+                this.actions,
                 false
             );
 
index 78777be10941a0e34d8b46a186fed8a8f6bfbd4f..a6abf44b7142a70e2552f945462fcafb3eb223b7 100644 (file)
@@ -52,6 +52,14 @@ export const getInitialResourceTypeFilters = pipe(
     initFilter(CollectionTypeFilter.LOG_COLLECTION, ObjectTypeFilter.COLLECTION),
 );
 
+export const getTrashPanelTypeFilters = pipe(
+    (): DataTableFilters => createTree<DataTableFilterItem>(),
+    initFilter(ObjectTypeFilter.PROJECT),
+    initFilter(ObjectTypeFilter.COLLECTION),
+    initFilter(CollectionTypeFilter.GENERAL_COLLECTION, ObjectTypeFilter.COLLECTION),
+    initFilter(CollectionTypeFilter.OUTPUT_COLLECTION, ObjectTypeFilter.COLLECTION),
+    initFilter(CollectionTypeFilter.LOG_COLLECTION, ObjectTypeFilter.COLLECTION),
+);
 
 const createFiltersBuilder = (filters: DataTableFilters) =>
     ({ fb: new FilterBuilder(), selectedFilters: getSelectedNodes(filters) });
index f52421a1d6581581cdf97f9613d848d6b3f74e15..3708f073b9033b60922348b180f14425dd35fc6f 100644 (file)
@@ -41,7 +41,7 @@ export class TrashPanelMiddlewareService extends DataExplorerMiddlewareService {
 
         const otherFilters = new FilterBuilder()
             .addILike("name", dataExplorer.searchValue, GroupContentsResourcePrefix.COLLECTION)
-            .addILike("name", dataExplorer.searchValue, GroupContentsResourcePrefix.PROCESS)
+            // .addILike("name", dataExplorer.searchValue, GroupContentsResourcePrefix.PROCESS)
             .addILike("name", dataExplorer.searchValue, GroupContentsResourcePrefix.PROJECT)
             .addEqual("is_trashed", true)
             .getFilters();
index 85abbe19f3f266769bb70b9f1da0e03d847399f1..6fb234980039ce38285a9d30c2f9ef2bb38e750c 100644 (file)
@@ -18,6 +18,8 @@ import { PropertyKeyInput } from '~/views-components/resource-properties-form/pr
 import { PropertyValueInput, PropertyValueFieldProps } from '~/views-components/resource-properties-form/property-value-field';
 import { VocabularyProp, connectVocabulary } from '~/views-components/resource-properties-form/property-field-common';
 import { compose } from 'redux';
+import { connect } from "react-redux";
+import { RootState } from "~/store/store";
 
 export const SearchBarTypeField = () =>
     <Field
@@ -30,16 +32,22 @@ export const SearchBarTypeField = () =>
             { key: ResourceKind.PROCESS, value: 'Process' }
         ]} />;
 
-export const SearchBarClusterField = () =>
-    <Field
+
+interface SearchBarClusterFieldProps {
+    clusters: { key: string, value: string }[];
+}
+
+export const SearchBarClusterField = connect(
+    (state: RootState) => ({
+        clusters: [{key: '', value: 'Any'}].concat(state.auth.sessions.map(s => ({
+            key: s.clusterId,
+            value: s.clusterId
+        })))
+    }))((props: SearchBarClusterFieldProps) => <Field
         name='cluster'
         component={NativeSelectField}
-        items={[
-            { key: '', value: 'Any' },
-            { key: ClusterObjectType.INDIANAPOLIS, value: 'Indianapolis' },
-            { key: ClusterObjectType.KAISERAUGST, value: 'Kaiseraugst' },
-            { key: ClusterObjectType.PENZBERG, value: 'Penzberg' }
-        ]} />;
+        items={props.clusters}/>
+    );
 
 export const SearchBarProjectField = () =>
     <Field
index bcc661144fe64f0f0aee9faf0499a7d2c3ff06b4..7a319ef70286ac08d8ba1b5282fc603680b6c73c 100644 (file)
@@ -32,7 +32,10 @@ import { ContextMenuKind } from "~/views-components/context-menu/context-menu";
 import { Dispatch } from "redux";
 import { DataTableDefaultView } from '~/components/data-table-default-view/data-table-default-view';
 import { createTree } from '~/models/tree';
-import { getInitialResourceTypeFilters } from '~/store/resource-type-filters/resource-type-filters';
+import {
+    getInitialResourceTypeFilters,
+    getTrashPanelTypeFilters
+} from '~/store/resource-type-filters/resource-type-filters';
 
 type CssRules = "toolbar" | "button";
 
@@ -93,7 +96,7 @@ export const trashPanelColumns: DataColumns<string> = [
         selected: true,
         configurable: true,
         sortDirection: SortDirection.NONE,
-        filters: getInitialResourceTypeFilters(),
+        filters: getTrashPanelTypeFilters(),
         render: uuid => <ResourceType uuid={uuid} />,
     },
     {