From 3c5e47e956b63a7caf08a9f25d2c6237e6370b65 Mon Sep 17 00:00:00 2001 From: Michal Klobukowski Date: Tue, 11 Dec 2018 14:31:17 +0100 Subject: [PATCH] Setup routing for group details Feature #14505 Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski --- src/routes/routes.ts | 6 ++++++ src/store/navigation/navigation-action.ts | 4 +++- src/views/groups-panel/groups-panel.tsx | 13 ++++++++----- src/views/workbench/workbench.tsx | 1 + 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/routes/routes.ts b/src/routes/routes.ts index 2c6dbea5..6d44725c 100644 --- a/src/routes/routes.ts +++ b/src/routes/routes.ts @@ -29,6 +29,7 @@ export const Routes = { USERS: '/users', API_CLIENT_AUTHORIZATIONS: `/api_client_authorizations`, GROUPS: '/groups', + GROUP_DETAILS: `/group/:id(${RESOURCE_UUID_PATTERN})`, }; export const getResourceUrl = (uuid: string) => { @@ -49,6 +50,8 @@ export const getProcessUrl = (uuid: string) => `/processes/${uuid}`; export const getProcessLogUrl = (uuid: string) => `/process-logs/${uuid}`; +export const getGroupUrl = (uuid: string) => `/group/${uuid}`; + export interface ResourceRouteParams { id: string; } @@ -112,3 +115,6 @@ export const matchApiClientAuthorizationsRoute = (route: string) => export const matchGroupsRoute = (route: string) => matchPath(route, { path: Routes.GROUPS }); + +export const matchGroupDetailsRoute = (route: string) => + matchPath(route, { path: Routes.GROUP_DETAILS }); diff --git a/src/store/navigation/navigation-action.ts b/src/store/navigation/navigation-action.ts index 8fef0ea7..7930fe25 100644 --- a/src/store/navigation/navigation-action.ts +++ b/src/store/navigation/navigation-action.ts @@ -8,7 +8,7 @@ import { ResourceKind, extractUuidKind } from '~/models/resource'; import { getCollectionUrl } from "~/models/collection"; import { getProjectUrl } from "~/models/project"; import { SidePanelTreeCategory } from '../side-panel-tree/side-panel-tree-actions'; -import { Routes, getProcessUrl, getProcessLogUrl } from '~/routes/routes'; +import { Routes, getProcessUrl, getProcessLogUrl, getGroupUrl } from '~/routes/routes'; import { RootState } from '~/store/store'; import { ServiceRepository } from '~/services/services'; @@ -79,3 +79,5 @@ export const navigateToUsers = push(Routes.USERS); export const navigateToApiClientAuthorizations = push(Routes.API_CLIENT_AUTHORIZATIONS); export const navigateToGroups = push(Routes.GROUPS); + +export const navigateToGroupDetails = compose(push, getGroupUrl); diff --git a/src/views/groups-panel/groups-panel.tsx b/src/views/groups-panel/groups-panel.tsx index 0d318bc0..0b2cd2cb 100644 --- a/src/views/groups-panel/groups-panel.tsx +++ b/src/views/groups-panel/groups-panel.tsx @@ -23,6 +23,7 @@ import { Dispatch } from 'redux'; import { openContextMenu } from '~/store/context-menu/context-menu-actions'; import { ResourceKind } from '~/models/resource'; import { LinkClass, LinkResource } from '~/models/link'; +import { navigateToGroupDetails } from '~/store/navigation/navigation-action'; export enum GroupsPanelColumnNames { GROUP = "Name", @@ -61,14 +62,16 @@ const mapStateToProps = (state: RootState) => { }; }; -const mapDispatchToProps = (dispatch: Dispatch) => ({ - onContextMenu: (event: React.MouseEvent, item: any) => dispatch(openContextMenu(event, item)), - onNewGroup: () => dispatch(openCreateGroupDialog()), -}); +const mapDispatchToProps = { + onContextMenu: openContextMenu, + onRowDoubleClick: navigateToGroupDetails, + onNewGroup: openCreateGroupDialog, +}; export interface GroupsPanelProps { onNewGroup: () => void; onContextMenu: (event: React.MouseEvent, item: any) => void; + onRowDoubleClick: (item: string) => void; resources: ResourcesState; } @@ -82,7 +85,7 @@ export const GroupsPanel = connect( +

Group details

} /> -- 2.30.2