[ARVADOS-WORKBENCH2] updated: 1.2.0-937-ge4b54c3

Git user git at public.curoverse.com
Wed Nov 21 10:14:25 EST 2018


Summary of changes:
 src/common/webdav.ts                               |  34 ++++-
 src/components/data-explorer/data-explorer.tsx     |   4 +-
 src/components/icon/icon.tsx                       |   2 +
 src/index.tsx                                      |   2 +
 src/models/repositories.ts                         |  10 ++
 src/models/resource.ts                             |   4 +
 src/models/ssh-key.ts                              |  17 +++
 src/models/tree.test.ts                            |  10 +-
 src/models/tree.ts                                 |   9 +-
 src/routes/route-change-handlers.ts                |  10 +-
 src/routes/routes.ts                               |  10 +-
 .../authorized-keys-service.ts                     |  34 +++++
 .../collection-service/collection-service.ts       |   4 +-
 .../common-service/common-resource-service.ts      |   3 +
 src/services/groups-service/groups-service.ts      |   2 +-
 src/services/project-service/project-service.ts    |  26 +++-
 .../repositories-service/repositories-service.ts   |  22 +++
 src/services/services.ts                           |   6 +
 src/store/advanced-tab/advanced-tab.ts             |  70 +++++++---
 src/store/auth/auth-action.ts                      |  63 ++++++++-
 src/store/auth/auth-reducer.test.ts                |   4 +-
 src/store/auth/auth-reducer.ts                     |  16 ++-
 .../collection-panel-files-actions.ts              |  18 ++-
 src/store/collections/collection-copy-actions.ts   |   2 +
 src/store/collections/collection-move-actions.ts   |   2 +
 .../collections/collection-partial-copy-actions.ts |   2 +
 src/store/collections/collection-upload-actions.ts |   2 +-
 src/store/context-menu/context-menu-actions.ts     |  15 +-
 src/store/details-panel/details-panel-action.ts    |  63 ++++++++-
 src/store/navigation/navigation-action.ts          |   4 +
 src/store/processes/process-copy-actions.ts        |   2 +
 src/store/processes/process-move-actions.ts        |   2 +
 src/store/projects/project-move-actions.ts         |   2 +
 src/store/repositories/repositories-actions.ts     | 107 ++++++++++++++
 src/store/repositories/repositories-reducer.ts     |  20 +++
 .../run-process-panel/run-process-panel-actions.ts |   2 +-
 src/store/store.ts                                 |   4 +-
 src/store/tree-picker/picker-id.tsx                |  16 +++
 src/store/tree-picker/tree-picker-actions.ts       |  37 +++--
 src/store/tree-picker/tree-picker-reducer.ts       |   4 +
 src/store/workbench/workbench-actions.ts           |  39 ++++--
 src/validators/is-rsa-key.tsx                      |  10 ++
 src/validators/validators.tsx                      |   8 +-
 .../advanced-tab-dialog/advanced-tab-dialog.tsx    |   2 +-
 .../action-sets/collection-action-set.ts           |   3 +-
 .../action-sets/collection-resource-action-set.ts  |   3 +-
 .../context-menu/action-sets/process-action-set.ts |   3 +-
 .../action-sets/process-resource-action-set.ts     |   4 +-
 .../context-menu/action-sets/project-action-set.ts |   3 +-
 .../action-sets/repository-action-set.ts           |  35 +++++
 .../action-sets/trashed-collection-action-set.ts   |   3 +-
 src/views-components/context-menu/context-menu.tsx |   3 +-
 .../details-panel/details-panel.tsx                |   5 +-
 .../details-panel/project-details.tsx              |  87 +++++++++---
 .../dialog-copy/dialog-collection-partial-copy.tsx |  19 ++-
 src/views-components/dialog-copy/dialog-copy.tsx   |  31 +++--
 .../dialog-create/dialog-repository-create.tsx     |  21 +++
 .../dialog-create/dialog-ssh-key-create.tsx        |  25 ++++
 .../dialog-forms/copy-collection-dialog.ts         |   4 +-
 .../dialog-forms/copy-process-dialog.ts            |   4 +-
 .../dialog-forms/create-repository-dialog.ts       |  19 +++
 .../dialog-forms/create-ssh-key-dialog.ts          |  19 +++
 .../dialog-forms/move-collection-dialog.ts         |   4 +-
 .../dialog-forms/move-process-dialog.ts            |   4 +-
 .../dialog-forms/move-project-dialog.ts            |   4 +-
 .../dialog-forms/partial-copy-collection-dialog.ts |   5 +-
 .../dialog-move/dialog-move-to.tsx                 |  18 ++-
 .../form-fields/collection-form-fields.tsx         |  13 +-
 .../form-fields/repository-form-fields.tsx         |  30 ++++
 .../form-fields/ssh-key-form-fields.tsx            |  25 ++++
 src/views-components/main-app-bar/account-menu.tsx |   8 +-
 .../main-content-bar/main-content-bar.tsx          |  21 ++-
 .../project-properties-dialog.tsx                  |  73 ++++++++++
 .../project-properties-form.tsx                    |  95 +++++++++++++
 .../project-tree-picker/project-tree-picker.tsx    |  17 ++-
 .../generic-projects-tree-picker.tsx               |   8 ++
 .../projects-tree-picker/projects-tree-picker.tsx  |  16 ++-
 .../repositories-sample-git-dialog.tsx             |  78 +++++++++++
 .../repository-attributes-dialog.tsx               |  89 ++++++++++++
 .../repository-remove-dialog.ts}                   |  13 +-
 .../rich-text-editor-dialog.tsx                    |   4 +-
 .../repositories-panel/repositories-panel.tsx      | 154 +++++++++++++++++++++
 src/views/ssh-key-panel/ssh-key-panel-root.tsx     |  55 ++++++++
 src/views/ssh-key-panel/ssh-key-panel.tsx          |  23 +++
 src/views/workbench/workbench.tsx                  |  16 +++
 85 files changed, 1602 insertions(+), 187 deletions(-)
 create mode 100644 src/models/repositories.ts
 create mode 100644 src/models/ssh-key.ts
 create mode 100644 src/services/authorized-keys-service/authorized-keys-service.ts
 create mode 100644 src/services/repositories-service/repositories-service.ts
 create mode 100644 src/store/repositories/repositories-actions.ts
 create mode 100644 src/store/repositories/repositories-reducer.ts
 create mode 100644 src/store/tree-picker/picker-id.tsx
 create mode 100644 src/validators/is-rsa-key.tsx
 create mode 100644 src/views-components/context-menu/action-sets/repository-action-set.ts
 create mode 100644 src/views-components/dialog-create/dialog-repository-create.tsx
 create mode 100644 src/views-components/dialog-create/dialog-ssh-key-create.tsx
 create mode 100644 src/views-components/dialog-forms/create-repository-dialog.ts
 create mode 100644 src/views-components/dialog-forms/create-ssh-key-dialog.ts
 create mode 100644 src/views-components/form-fields/repository-form-fields.tsx
 create mode 100644 src/views-components/form-fields/ssh-key-form-fields.tsx
 create mode 100644 src/views-components/project-properties-dialog/project-properties-dialog.tsx
 create mode 100644 src/views-components/project-properties-dialog/project-properties-form.tsx
 create mode 100644 src/views-components/repositories-sample-git-dialog/repositories-sample-git-dialog.tsx
 create mode 100644 src/views-components/repository-attributes-dialog/repository-attributes-dialog.tsx
 copy src/views-components/{process-remove-dialog/process-remove-dialog.tsx => repository-remove-dialog/repository-remove-dialog.ts} (55%)
 create mode 100644 src/views/repositories-panel/repositories-panel.tsx
 create mode 100644 src/views/ssh-key-panel/ssh-key-panel-root.tsx
 create mode 100644 src/views/ssh-key-panel/ssh-key-panel.tsx

       via  e4b54c3b5d99c99553e319ead28c3aa8dcd6eecc (commit)
       via  da61c0b626bfef292175bb0c623213cb1efad63d (commit)
       via  dab7bbaf5fdee0e4e56c0bbfe14da5ad42b5869d (commit)
       via  d4068786fd7136cfe21c3ef3ad3040f57ed3385a (commit)
       via  aed25c0fef7e65b307d702e8ee515567d6c2a7c1 (commit)
       via  b56fac763b24e34c5c2ba42cf9e183ffcc2014fc (commit)
       via  3bb5a602028d5ace55da8af3637a7f9d4eb48c00 (commit)
       via  9eaee66663fa21962f46e301ba6257ab63a9b10c (commit)
       via  65bdf250e5a09633e482bacd968666861643c150 (commit)
       via  c27efd822acfd3bd93fc3e2e3e24a24146811eb7 (commit)
       via  e4bb589377e9be89787f1b3cc15a0cd2f17a6f7a (commit)
       via  e858ef67d3d17323b31eeb92e99ff8de70b5d591 (commit)
       via  13bf073c77ca9fcf75ebd31098a9bf538e96c9c9 (commit)
       via  42db83a0075f9704dcbfb2cd29821c97ff0fe34b (commit)
       via  62ff5a943865229c1630c66366f824511048ce63 (commit)
       via  856192df2e78cb7182122a77592044f5e51b1888 (commit)
       via  e3d13624759c128c326b64e9e0e60996bd28aadf (commit)
       via  cab8fbece33e9c6188b911552790f459c740f4cd (commit)
       via  c31b1e6d6d213bbae060d1111e3831c728433466 (commit)
       via  2de62809f717c64091505a01961b517ee6ccc9d4 (commit)
       via  a0aedfcf68e7b3d4caeee3e36d776ca0b34780bf (commit)
       via  f06b0aa5faeecdc4dfbc803170635ecfc19293de (commit)
       via  70bf37e9881a433b740cc70376d4b6680a582910 (commit)
       via  ead22eaffc696e9619d0ba7a71c8d54099200685 (commit)
       via  1a59e5dcc15a9a1aebfd15a08903fcb75efd2aac (commit)
       via  0a0db4ca8433ae210df5cf1475dd2b77e4aabec9 (commit)
       via  82908c571a492f19f2ea402e033fa84b6df15b61 (commit)
       via  abf8502a9a1f061f58586b966a4012674d9cb71e (commit)
       via  123bae90530147cf31e220066999b416d3610ae2 (commit)
       via  9e1596de7ac6ed8286b17c5e3d2b39bc0c03fa8f (commit)
       via  6e7601cf151b8384b353b3c90134e4bbb4939d2f (commit)
       via  ed5c052b271d357da4b85a10db33edd10d43685d (commit)
       via  2636921500b01485584eb43263815957b867122a (commit)
       via  aed4e6256e6d5ecb5edc60a04a5aab6f04d9fb99 (commit)
       via  185f57cf4371e7811077bee56976028dd640688d (commit)
       via  fcda82dca52aa45926f8e656c45baf892acdc634 (commit)
       via  fc05ea3e89e7618ea0a52d88a377533512d5ec32 (commit)
       via  de434883528ce218d384686092e82742a18491c7 (commit)
       via  ea4c952433d2ee3906999f629b8bc2076e0af13c (commit)
       via  2edee5acc1ef219dd90a7314c87df5683569afaa (commit)
       via  6f08c46e8d91662aab3b3e600868328c1bd1bacd (commit)
       via  a5f55ef0fa6bd61ba5678d5ccdbf26589c093212 (commit)
       via  6d1da474f9ae85108bbde00fe341cca65fd0ca06 (commit)
       via  f528f6f6ca52c8654b52f84e52339da8e91a9d9c (commit)
       via  c1b42ed027b39f04d4bf61b27d0603818cdd2bee (commit)
       via  db6ff2ea8246badb7bdcfb0ec0ad169134c5c7ba (commit)
       via  dd00886a1098e82a70b814d7d4c2f30d3e6e69c7 (commit)
       via  fa8e4468481efa1d43065b73ae1fa08fb0e851a7 (commit)
       via  c4fb72d1ddf4080cae66e296b873e5605e83e326 (commit)
       via  0101b0b9c7416f7aadb94ca71258b4d4e60af58a (commit)
       via  a2783c48c8210410de72bd17a32ab72d0f364cde (commit)
       via  90f56604ead086b6acc582bcb745a75e8bde5267 (commit)
       via  59ddd20573eab6116c590c2a692c0131fa2f3f4f (commit)
       via  02e77918141f173e5a61b17623c8cad0e8a1bae3 (commit)
       via  807660c78edbb1672af8b60348961896e48487b6 (commit)
       via  61eb34ae0ce62f67769baeba02b4e15971873e34 (commit)
       via  1eb2cc60cbf40d86db2304e11a678c3aa51af321 (commit)
       via  bb89fb18a6edfd90e80470abf040f6a5b9f6da1d (commit)
       via  00ec76eb43a0f27c02669cbfce16d0d2211ff0b4 (commit)
       via  d1231b6ce7e8d40498b15011b88117812acdf632 (commit)
       via  ce19ce10f479c168f72003495696fdd0f01ecc52 (commit)
      from  9bfdbacc69b6ccbcedd07b3d906efbac6e192202 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit e4b54c3b5d99c99553e319ead28c3aa8dcd6eecc
Merge: 9bfdbac da61c0b
Author: Pawel Kowalczyk <pawel.kowalczyk at contractors.roche.com>
Date:   Wed Nov 21 16:14:05 2018 +0100

    fixed conflicts
    
    Feature #13864
    
    Arvados-DCO-1.1-Signed-off-by: Pawel Kowalczyk <pawel.kowalczyk at contractors.roche.com>

diff --cc src/models/resource.ts
index f200713,520520f..d2f524f
--- a/src/models/resource.ts
+++ b/src/models/resource.ts
@@@ -28,8 -28,8 +28,9 @@@ export enum ResourceKind 
      LOG = "arvados#log",
      PROCESS = "arvados#containerRequest",
      PROJECT = "arvados#group",
+     REPOSITORY = "arvados#repository",
      USER = "arvados#user",
 +    VIRTUAL_MACHINE = "arvados#virtualMachine",
      WORKFLOW = "arvados#workflow",
      NONE = "arvados#none"
  }
@@@ -40,8 -40,8 +41,9 @@@ export enum ResourceObjectType 
      CONTAINER_REQUEST = 'xvhdp',
      GROUP = 'j7d0g',
      LOG = '57u5n',
+     REPOSITORY = 's0uqq',
      USER = 'tpzed',
 +    VIRTUAL_MACHINE = '2x53u',
      WORKFLOW = '7fd4e',
  }
  
@@@ -75,8 -75,8 +77,10 @@@ export const extractUuidKind = (uuid: s
              return ResourceKind.LOG;
          case ResourceObjectType.WORKFLOW:
              return ResourceKind.WORKFLOW;
 +        case ResourceObjectType.VIRTUAL_MACHINE:
 +            return ResourceKind.VIRTUAL_MACHINE;
+         case ResourceObjectType.REPOSITORY:
+             return ResourceKind.REPOSITORY;
          default:
              return undefined;
      }
diff --cc src/routes/route-change-handlers.ts
index ca15a15,c7f3555..22d0b7c
--- a/src/routes/route-change-handlers.ts
+++ b/src/routes/route-change-handlers.ts
@@@ -4,8 -4,8 +4,8 @@@
  
  import { History, Location } from 'history';
  import { RootStore } from '~/store/store';
- import { matchProcessRoute, matchProcessLogRoute, matchProjectRoute, matchCollectionRoute, matchFavoritesRoute, matchTrashRoute, matchRootRoute, matchSharedWithMeRoute, matchRunProcessRoute, matchWorkflowRoute, matchSearchResultsRoute, matchVirtualMachineRoute } from './routes';
- import { loadProject, loadCollection, loadFavorites, loadTrash, loadProcess, loadProcessLog, loadVirtualMachines } from '~/store/workbench/workbench-actions';
 -import { matchProcessRoute, matchProcessLogRoute, matchProjectRoute, matchCollectionRoute, matchFavoritesRoute, matchTrashRoute, matchRootRoute, matchSharedWithMeRoute, matchRunProcessRoute, matchWorkflowRoute, matchSearchResultsRoute, matchSshKeysRoute, matchRepositoriesRoute } from './routes';
 -import { loadProject, loadCollection, loadFavorites, loadTrash, loadProcess, loadProcessLog, loadSshKeys, loadRepositories } from '~/store/workbench/workbench-actions';
++import { matchProcessRoute, matchProcessLogRoute, matchProjectRoute, matchCollectionRoute, matchFavoritesRoute, matchTrashRoute, matchRootRoute, matchSharedWithMeRoute, matchRunProcessRoute, matchWorkflowRoute, matchSearchResultsRoute, matchSshKeysRoute, matchRepositoriesRoute, matchVirtualMachineRoute } from './routes';
++import { loadProject, loadCollection, loadFavorites, loadTrash, loadProcess, loadProcessLog, loadSshKeys, loadRepositories, loadVirtualMachines } from '~/store/workbench/workbench-actions';
  import { navigateToRootProject } from '~/store/navigation/navigation-action';
  import { loadSharedWithMe, loadRunProcess, loadWorkflow, loadSearchResults } from '~//store/workbench/workbench-actions';
  
@@@ -26,8 -27,8 +27,9 @@@ const handleLocationChange = (store: Ro
      const searchResultsMatch = matchSearchResultsRoute(pathname);
      const sharedWithMeMatch = matchSharedWithMeRoute(pathname);
      const runProcessMatch = matchRunProcessRoute(pathname);
 +    const virtualMachineMatch = matchVirtualMachineRoute(pathname);
      const workflowMatch = matchWorkflowRoute(pathname);
+     const sshKeysMatch = matchSshKeysRoute(pathname);
  
      if (projectMatch) {
          store.dispatch(loadProject(projectMatch.params.id));
@@@ -51,7 -52,9 +53,11 @@@
          store.dispatch(loadWorkflow);
      } else if (searchResultsMatch) {
          store.dispatch(loadSearchResults);
 +    } else if (virtualMachineMatch) {
 +        store.dispatch(loadVirtualMachines);
+     } else if(repositoryMatch) {
+         store.dispatch(loadRepositories);
+     } else if (sshKeysMatch) {
+         store.dispatch(loadSshKeys);
      }
  };
diff --cc src/routes/routes.ts
index 3723847,c9c2ae2..71cdfda
--- a/src/routes/routes.ts
+++ b/src/routes/routes.ts
@@@ -16,11 -16,12 +16,13 @@@ export const Routes = 
      FAVORITES: '/favorites',
      TRASH: '/trash',
      PROCESS_LOGS: `/process-logs/:id(${RESOURCE_UUID_PATTERN})`,
+     REPOSITORIES: '/repositories',
      SHARED_WITH_ME: '/shared-with-me',
      RUN_PROCESS: '/run-process',
 +    VIRTUAL_MACHINES: '/virtual-machines',
      WORKFLOWS: '/workflows',
-     SEARCH_RESULTS: '/search-results'
+     SEARCH_RESULTS: '/search-results',
+     SSH_KEYS: `/ssh-keys`
  };
  
  export const getResourceUrl = (uuid: string) => {
@@@ -78,5 -79,8 +80,11 @@@ export const matchWorkflowRoute = (rout
  export const matchSearchResultsRoute = (route: string) =>
      matchPath<ResourceRouteParams>(route, { path: Routes.SEARCH_RESULTS });
  
 +export const matchVirtualMachineRoute = (route: string) =>
 +    matchPath<ResourceRouteParams>(route, { path: Routes.VIRTUAL_MACHINES });
++    
+ export const matchRepositoriesRoute = (route: string) =>
+     matchPath<ResourceRouteParams>(route, { path: Routes.REPOSITORIES });
+     
+ export const matchSshKeysRoute = (route: string) =>
+     matchPath(route, { path: Routes.SSH_KEYS });
diff --cc src/services/services.ts
index 9e9fcc5,308505c..f1ef86b
--- a/src/services/services.ts
+++ b/src/services/services.ts
@@@ -24,7 -24,8 +24,9 @@@ import { ApiActions } from "~/services/
  import { WorkflowService } from "~/services/workflow-service/workflow-service";
  import { SearchService } from '~/services/search-service/search-service';
  import { PermissionService } from "~/services/permission-service/permission-service";
 +import { VirtualMachinesService } from "~/services/virtual-machines-service/virtual-machines-service";
+ import { RepositoriesService } from '~/services/repositories-service/repositories-service';
+ import { AuthorizedKeysService } from '~/services/authorized-keys-service/authorized-keys-service';
  
  export type ServiceRepository = ReturnType<typeof createServices>;
  
@@@ -43,8 -45,8 +46,9 @@@ export const createServices = (config: 
      const logService = new LogService(apiClient, actions);
      const permissionService = new PermissionService(apiClient, actions);
      const projectService = new ProjectService(apiClient, actions);
+     const repositoriesService = new RepositoriesService(apiClient, actions);
      const userService = new UserService(apiClient, actions);
 +    const virtualMachineService = new VirtualMachinesService(apiClient, actions);
      const workflowService = new WorkflowService(apiClient, actions);
  
      const ancestorsService = new AncestorService(groupsService, userService);
diff --cc src/store/navigation/navigation-action.ts
index c4cf625,fc08f3a..2bfd8b9
--- a/src/store/navigation/navigation-action.ts
+++ b/src/store/navigation/navigation-action.ts
@@@ -62,4 -62,6 +62,8 @@@ export const navigateToRunProcess = pus
  
  export const navigateToSearchResults = push(Routes.SEARCH_RESULTS);
  
 +export const navigateToVirtualMachines = push(Routes.VIRTUAL_MACHINES);
++
+ export const navigateToRepositories = push(Routes.REPOSITORIES);
+ 
+ export const navigateToSshKeys= push(Routes.SSH_KEYS);
diff --cc src/store/store.ts
index 3f1f4a2,5e648c9..4ab0918
--- a/src/store/store.ts
+++ b/src/store/store.ts
@@@ -43,7 -43,7 +43,8 @@@ import { searchBarReducer } from './sea
  import { SEARCH_RESULTS_PANEL_ID } from '~/store/search-results-panel/search-results-panel-actions';
  import { SearchResultsMiddlewareService } from './search-results-panel/search-results-middleware-service';
  import { resourcesDataReducer } from "~/store/resources-data/resources-data-reducer";
 +import { virtualMachinesReducer } from "~/store/virtual-machines/virtual-machines-reducer";
+ import { repositoriesReducer } from '~/store/repositories/repositories-reducer';
  
  const composeEnhancers =
      (process.env.NODE_ENV === 'development' &&
@@@ -113,5 -113,5 +114,6 @@@ const createRootReducer = (services: Se
      runProcessPanel: runProcessPanelReducer,
      appInfo: appInfoReducer,
      searchBar: searchBarReducer,
-     virtualMachines: virtualMachinesReducer
++    virtualMachines: virtualMachinesReducer,
+     repositories: repositoriesReducer
  });
diff --cc src/store/workbench/workbench-actions.ts
index 52d6c9e,5e33661..12dbe7b
--- a/src/store/workbench/workbench-actions.ts
+++ b/src/store/workbench/workbench-actions.ts
@@@ -53,7 -54,7 +54,8 @@@ import { collectionPanelActions } from 
  import { CollectionResource } from "~/models/collection";
  import { searchResultsPanelActions, loadSearchResultsPanel } from '~/store/search-results-panel/search-results-panel-actions';
  import { searchResultsPanelColumns } from '~/views/search-results-panel/search-results-panel-view';
 +import { loadVirtualMachinesPanel } from '~/store/virtual-machines/virtual-machines-actions';
+ import { loadRepositoriesPanel } from '~/store/repositories/repositories-actions';
  
  export const WORKBENCH_LOADING_SCREEN = 'workbenchLoadingScreen';
  
@@@ -391,11 -392,16 +393,22 @@@ export const loadSearchResults = handle
          await dispatch(loadSearchResultsPanel());
      });
  
 +export const loadVirtualMachines = handleFirstTimeLoad(
 +    async (dispatch: Dispatch<any>) => {
 +        await dispatch(loadVirtualMachinesPanel());
 +        dispatch(setBreadcrumbs([{ label: 'Virtual Machines' }]));
 +    });
++    
+ export const loadRepositories = handleFirstTimeLoad(
+     async (dispatch: Dispatch<any>) => {
+         await dispatch(loadRepositoriesPanel());
+         dispatch(setBreadcrumbs([{ label: 'Repositories' }]));
+     });
+ 
+ export const loadSshKeys = handleFirstTimeLoad(
+     async (dispatch: Dispatch<any>) => {
+         await dispatch(loadSshKeysPanel());
+     });
  
  const finishLoadingProject = (project: GroupContentsResource | string) =>
      async (dispatch: Dispatch<any>) => {
diff --cc src/views-components/main-app-bar/account-menu.tsx
index baf893e,f00c678..ca88021
--- a/src/views-components/main-app-bar/account-menu.tsx
+++ b/src/views-components/main-app-bar/account-menu.tsx
@@@ -8,10 -8,11 +8,12 @@@ import { User, getUserFullname } from "
  import { DropdownMenu } from "~/components/dropdown-menu/dropdown-menu";
  import { UserPanelIcon } from "~/components/icon/icon";
  import { DispatchProp, connect } from 'react-redux';
- import { logout } from "~/store/auth/auth-action";
+ import { logout } from '~/store/auth/auth-action';
  import { RootState } from "~/store/store";
- import { openCurrentTokenDialog } from '../../store/current-token-dialog/current-token-dialog-actions';
+ import { openCurrentTokenDialog } from '~/store/current-token-dialog/current-token-dialog-actions';
+ import { openRepositoriesPanel } from "~/store/repositories/repositories-actions";
+ import { navigateToSshKeys } from '~/store/navigation/navigation-action';
 +import { openVirtualMachines } from "~/store/virtual-machines/virtual-machines-actions";
  
  interface AccountMenuProps {
      user?: User;
@@@ -31,8 -32,9 +33,10 @@@ export const AccountMenu = connect(mapS
                  <MenuItem>
                      {getUserFullname(user)}
                  </MenuItem>
 +                <MenuItem onClick={() => dispatch(openVirtualMachines())}>Virtual Machines</MenuItem>
+                 <MenuItem onClick={() => dispatch(openRepositoriesPanel())}>Repositories</MenuItem>
                  <MenuItem onClick={() => dispatch(openCurrentTokenDialog)}>Current token</MenuItem>
+                 <MenuItem onClick={() => dispatch(navigateToSshKeys)}>Ssh Keys</MenuItem>
                  <MenuItem>My account</MenuItem>
                  <MenuItem onClick={() => dispatch(logout())}>Logout</MenuItem>
              </DropdownMenu>
diff --cc src/views-components/main-content-bar/main-content-bar.tsx
index b38f85b,741a7e0..6b84bde
--- a/src/views-components/main-content-bar/main-content-bar.tsx
+++ b/src/views-components/main-content-bar/main-content-bar.tsx
@@@ -6,11 -6,10 +6,10 @@@ import * as React from "react"
  import { Toolbar, IconButton, Tooltip, Grid } from "@material-ui/core";
  import { DetailsIcon } from "~/components/icon/icon";
  import { Breadcrumbs } from "~/views-components/breadcrumbs/breadcrumbs";
- import { detailsPanelActions } from "~/store/details-panel/details-panel-action";
  import { connect } from 'react-redux';
  import { RootState } from '~/store/store';
- import { matchWorkflowRoute } from '~/routes/routes';
- import { matchVirtualMachineRoute } from '~/routes/routes';
 -import { matchWorkflowRoute, matchSshKeysRoute, matchRepositoriesRoute } from '~/routes/routes';
++import { matchWorkflowRoute, matchSshKeysRoute, matchRepositoriesRoute, matchVirtualMachineRoute } from '~/routes/routes';
+ import { toggleDetailsPanel } from '~/store/details-panel/details-panel-action';
  
  interface MainContentBarProps {
      onDetailsPanelToggle: () => void;
@@@ -23,16 -22,22 +22,28 @@@ const isWorkflowPath = ({ router }: Roo
      return !!match;
  };
  
 +const isVirtualMachinePath = ({ router }: RootState) => {
 +    const pathname = router.location ? router.location.pathname : '';
 +    const match = matchVirtualMachineRoute(pathname);
 +    return !!match;
 +};
 +
+ const isRepositoriesPath = ({ router }: RootState) => {
+     const pathname = router.location ? router.location.pathname : '';
+     const match = matchRepositoriesRoute(pathname);
+     return !!match;
+ };
+ 
+ const isSshKeysPath = ({ router }: RootState) => {
+     const pathname = router.location ? router.location.pathname : '';
+     const match = matchSshKeysRoute(pathname);
+     return !!match;
+ };
+ 
  export const MainContentBar = connect((state: RootState) => ({
-     buttonVisible: !isWorkflowPath(state) && !isVirtualMachinePath(state)
 -    buttonVisible: !isWorkflowPath(state) && !isSshKeysPath(state) && !isRepositoriesPath(state)
++    buttonVisible: !isWorkflowPath(state) && !isSshKeysPath(state) && !isRepositoriesPath(state) && !isVirtualMachinePath(state)
  }), {
-         onDetailsPanelToggle: detailsPanelActions.TOGGLE_DETAILS_PANEL
+         onDetailsPanelToggle: toggleDetailsPanel
      })((props: MainContentBarProps) =>
          <Toolbar>
              <Grid container>
diff --cc src/views/workbench/workbench.tsx
index 4ebc99b,ebdf57c..5ebf105
--- a/src/views/workbench/workbench.tsx
+++ b/src/views/workbench/workbench.tsx
@@@ -47,7 -48,13 +48,14 @@@ import { SshKeyPanel } from '~/views/ss
  import { SharingDialog } from '~/views-components/sharing-dialog/sharing-dialog';
  import { AdvancedTabDialog } from '~/views-components/advanced-tab-dialog/advanced-tab-dialog';
  import { ProcessInputDialog } from '~/views-components/process-input-dialog/process-input-dialog';
 +import { VirtualMachinePanel } from '~/views/virtual-machine-panel/virtual-machine-panel';
+ import { ProjectPropertiesDialog } from '~/views-components/project-properties-dialog/project-properties-dialog';
+ import { RepositoriesPanel } from '~/views/repositories-panel/repositories-panel';
+ import { RepositoriesSampleGitDialog } from '~/views-components/repositories-sample-git-dialog/repositories-sample-git-dialog';
+ import { RepositoryAttributesDialog } from '~/views-components/repository-attributes-dialog/repository-attributes-dialog';
+ import { CreateRepositoryDialog } from '~/views-components/dialog-forms/create-repository-dialog';
+ import { RemoveRepositoryDialog } from '~/views-components/repository-remove-dialog/repository-remove-dialog';
+ import { CreateSshKeyDialog } from '~/views-components/dialog-forms/create-ssh-key-dialog';
  
  type CssRules = 'root' | 'container' | 'splitter' | 'asidePanel' | 'contentWrapper' | 'content';
  
@@@ -117,7 -124,8 +125,9 @@@ export const WorkbenchPanel 
                                  <Route path={Routes.RUN_PROCESS} component={RunProcessPanel} />
                                  <Route path={Routes.WORKFLOWS} component={WorkflowPanel} />
                                  <Route path={Routes.SEARCH_RESULTS} component={SearchResultsPanel} />
 +                                <Route path={Routes.VIRTUAL_MACHINES} component={VirtualMachinePanel} />
+                                 <Route path={Routes.REPOSITORIES} component={RepositoriesPanel} />
+                                 <Route path={Routes.SSH_KEYS} component={SshKeyPanel} />
                              </Switch>
                          </Grid>
                      </Grid>

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list