Adjust for new code structure
authorDaniel Kos <daniel.kos@contractors.roche.com>
Fri, 31 Aug 2018 05:39:23 +0000 (07:39 +0200)
committerDaniel Kos <daniel.kos@contractors.roche.com>
Fri, 31 Aug 2018 05:39:23 +0000 (07:39 +0200)
Feature #13828

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

src/store/navigation/navigation-action.ts
src/store/side-panel/side-panel-action.ts
src/views/project-panel/project-panel.tsx
src/views/trash-panel/trash-panel.tsx

index 188acf12bd30afc55b838f6d31f279822e0b6628..2c0f2097e127c883c595c5cb2e822609604ebead 100644 (file)
@@ -28,6 +28,8 @@ export const navigateTo = (uuid: string) =>
 
 export const navigateToFavorites = push(Routes.FAVORITES);
 
+export const navigateToTrash = push(Routes.TRASH);
+
 export const navigateToProject = compose(push, getProjectUrl);
 
 export const navigateToCollection = compose(push, getCollectionUrl);
index 8c7ef4a7a1ff7ff6d8d3f1023e8d7d93cefd6f08..3b66157dcd83262b1edfc35e5e3b131e7d885cd0 100644 (file)
@@ -4,7 +4,7 @@
 
 import { Dispatch } from 'redux';
 import { isSidePanelTreeCategory, SidePanelTreeCategory } from '~/store/side-panel-tree/side-panel-tree-actions';
-import { navigateToFavorites, navigateTo } from '../navigation/navigation-action';
+import { navigateToFavorites, navigateTo, navigateToTrash } from '../navigation/navigation-action';
 import { snackbarActions } from '~/store/snackbar/snackbar-actions';
 
 export const navigateFromSidePanel = (id: string) =>
@@ -20,6 +20,8 @@ const getSidePanelTreeCategoryAction = (id: string) => {
     switch (id) {
         case SidePanelTreeCategory.FAVORITES:
             return navigateToFavorites;
+        case SidePanelTreeCategory.TRASH:
+            return navigateToTrash;
         default:
             return sidePanelTreeCategoryNotAvailable(id);
     }
@@ -29,4 +31,4 @@ const sidePanelTreeCategoryNotAvailable = (id: string) =>
     snackbarActions.OPEN_SNACKBAR({
         message: `${id} not available`,
         hideDuration: 3000,
-    });
\ No newline at end of file
+    });
index 3c7dd30c24c1396b66580c33586a1c4e7138222d..622c5d8264cd1a3e548ecb40f5b0ff9e0f115b80 100644 (file)
@@ -26,6 +26,7 @@ import { PROJECT_PANEL_CURRENT_UUID } from '~/store/project-panel/project-panel-
 import { openCollectionCreateDialog } from '../../store/collections/collection-create-actions';
 import { openProjectCreateDialog } from '~/store/projects/project-create-actions';
 import { ContainerRequestState } from "~/models/container-request";
+import { ProjectResource } from "~/models/project";
 
 type CssRules = 'root' | "toolbar" | "button";
 
@@ -57,14 +58,14 @@ export interface ProjectPanelFilter extends DataTableFilterItem {
     type: ResourceKind | ContainerRequestState;
 }
 
-export const projectPanelColumns: DataColumns<string, ProjectPanelFilter> = [
+export const projectPanelColumns: DataColumns<ProjectResource, ProjectPanelFilter> = [
     {
         name: ProjectPanelColumnNames.NAME,
         selected: true,
         configurable: true,
         sortDirection: SortDirection.ASC,
         filters: [],
-        render: uuid => <ResourceName uuid={uuid} />,
+        render: res => <ResourceName uuid={res.uuid} />,
         width: "450px"
     },
     {
@@ -89,7 +90,7 @@ export const projectPanelColumns: DataColumns<string, ProjectPanelFilter> = [
                 type: ContainerRequestState.UNCOMMITTED
             }
         ],
-        render: uuid => <ProcessStatus uuid={uuid} />,
+        render: res => <ProcessStatus uuid={res.uuid} />,
         width: "75px"
     },
     {
@@ -114,7 +115,7 @@ export const projectPanelColumns: DataColumns<string, ProjectPanelFilter> = [
                 type: ResourceKind.PROJECT
             }
         ],
-        render: uuid => <ResourceType uuid={uuid} />,
+        render: res => <ResourceType uuid={res.uuid} />,
         width: "125px"
     },
     {
@@ -123,7 +124,7 @@ export const projectPanelColumns: DataColumns<string, ProjectPanelFilter> = [
         configurable: true,
         sortDirection: SortDirection.NONE,
         filters: [],
-        render: uuid => <ResourceOwner uuid={uuid} />,
+        render: res => <ResourceOwner uuid={res.uuid} />,
         width: "200px"
     },
     {
@@ -132,7 +133,7 @@ export const projectPanelColumns: DataColumns<string, ProjectPanelFilter> = [
         configurable: true,
         sortDirection: SortDirection.NONE,
         filters: [],
-        render: uuid => <ResourceFileSize uuid={uuid} />,
+        render: res => <ResourceFileSize uuid={res.uuid} />,
         width: "50px"
     },
     {
@@ -141,7 +142,7 @@ export const projectPanelColumns: DataColumns<string, ProjectPanelFilter> = [
         configurable: true,
         sortDirection: SortDirection.NONE,
         filters: [],
-        render: uuid => <ResourceLastModifiedDate uuid={uuid} />,
+        render: res => <ResourceLastModifiedDate uuid={res.uuid} />,
         width: "150px"
     }
 ];
@@ -194,10 +195,16 @@ export const ProjectPanel = withStyles(styles)(
                 this.props.dispatch<any>(openCollectionCreateDialog(this.props.currentItemId));
             }
 
-            handleContextMenu = (event: React.MouseEvent<HTMLElement>, resourceUuid: string) => {
-                const kind = resourceKindToContextMenuKind(resourceUuid);
+            handleContextMenu = (event: React.MouseEvent<HTMLElement>, resource: ProjectResource) => {
+                const kind = resourceKindToContextMenuKind(resource.uuid);
                 if (kind) {
-                    this.props.dispatch<any>(openContextMenu(event, { name: '', uuid: resourceUuid, kind }));
+                    this.props.dispatch<any>(openContextMenu(event, {
+                        name: resource.name,
+                        uuid: resource.uuid,
+                        ownerUuid: resource.ownerUuid,
+                        isTrashed: resource.isTrashed,
+                        kind
+                    }));
                 }
             }
 
index bfb99310b82640c61594794a9e2e5fbafcf0241a..3c25a3e1cf92e703fc40f64cfce691551c55abf6 100644 (file)
@@ -20,6 +20,7 @@ import { TrashIcon } from '~/components/icon/icon';
 import { TRASH_PANEL_ID } from "~/store/trash-panel/trash-panel-action";
 import { getProperty } from "~/store/properties/properties";
 import { PROJECT_PANEL_CURRENT_UUID } from "~/store/project-panel/project-panel-action";
+import { openContextMenu, resourceKindToContextMenuKind } from "~/store/context-menu/context-menu-actions";
 
 type CssRules = "toolbar" | "button";
 
@@ -140,6 +141,13 @@ export const TrashPanel = withStyles(styles)(
                     defaultMessages={['Your trash list is empty.']}/>
                 ;
             }
+
+            handleContextMenu = (event: React.MouseEvent<HTMLElement>, resourceUuid: string) => {
+                const kind = resourceKindToContextMenuKind(resourceUuid);
+                if (kind) {
+                    this.props.dispatch<any>(openContextMenu(event, { name: '', uuid: resourceUuid, kind }));
+                }
+            }
         }
     )
 );