[ARVADOS-WORKBENCH2] updated: 1.1.4-265-gf5e55e7
Git user
git at public.curoverse.com
Tue Jul 10 09:20:32 EDT 2018
Summary of changes:
src/components/attribute/attribute.tsx | 28 ++-
src/components/data-explorer/data-explorer.tsx | 2 +
src/components/data-table/data-table.tsx | 6 +-
src/components/empty-state/empty-state.tsx | 46 +++++
src/components/icon/icon.tsx | 50 +++++
src/store/details-panel/details-panel-action.ts | 44 ++++
src/store/details-panel/details-panel-reducer.ts | 26 +++
src/store/navigation/navigation-action.ts | 8 +-
src/store/store.ts | 5 +-
.../data-explorer/data-explorer.tsx | 7 +-
.../details-panel/details-panel.tsx | 222 +++++++++++++++------
src/views/project-panel/project-panel.tsx | 6 +-
src/views/workbench/workbench.test.tsx | 2 +-
src/views/workbench/workbench.tsx | 29 ++-
14 files changed, 391 insertions(+), 90 deletions(-)
create mode 100644 src/components/empty-state/empty-state.tsx
create mode 100644 src/components/icon/icon.tsx
create mode 100644 src/store/details-panel/details-panel-action.ts
create mode 100644 src/store/details-panel/details-panel-reducer.ts
via f5e55e7a71f2fc2390d392af752c61b4d3135cb6 (commit)
via 808b1f59d53a83c9ad456931c7e38f127b4d8342 (commit)
via 13eaae7bc025eaf4765acea06b596ca88eb6ff05 (commit)
via 9004a33fe4598b83a8cce315cc28528b3d224a12 (commit)
via 61cfe9a4e7c483f5b018dda8e2c46eb8ce3db26a (commit)
via f05e6a9cece7e3b118134136ee81bd7477ad10a0 (commit)
via 0e3c4c507b9d3ec37b808b7a38cf111722659403 (commit)
via d8c787ee061c3953628362f5eb6c37123f5ca0f5 (commit)
via 7622261116e685cad4af9cf6a4d1dd9c58cd1605 (commit)
via 0b1b9f181db6c43a8bbc9b2b2d6ab48a51003b2d (commit)
via d5e09062859cc29dff60b16be912ff3743173b34 (commit)
via 76215c43cae99e1ce7964dcfafae59b2134f72b3 (commit)
from 2a3330b84782b9fac42f16a8644f442d06906b21 (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 f5e55e7a71f2fc2390d392af752c61b4d3135cb6
Merge: 2a3330b 808b1f5
Author: Michal Klobukowski <michal.klobukowski at contractors.roche.com>
Date: Tue Jul 10 15:20:15 2018 +0200
Resolve merge conflicts
Feature #13694
Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski <michal.klobukowski at contractors.roche.com>
diff --cc src/components/data-explorer/data-explorer.tsx
index e90b1c2,9b099ac..9085b1f
--- a/src/components/data-explorer/data-explorer.tsx
+++ b/src/components/data-explorer/data-explorer.tsx
@@@ -21,8 -24,9 +21,9 @@@ interface DataExplorerProps<T>
page: number;
onSearch: (value: string) => void;
onRowClick: (item: T) => void;
+ onRowDoubleClick: (item: T) => void;
onColumnToggle: (column: DataColumn<T>) => void;
- onContextAction: (action: ContextMenuAction, item: T) => void;
+ onContextMenu: (event: React.MouseEvent<HTMLElement>, item: T) => void;
onSortToggle: (column: DataColumn<T>) => void;
onFiltersChange: (filters: DataTableFilterItem[], column: DataColumn<T>) => void;
onChangePage: (page: number) => void;
@@@ -49,7 -68,8 +50,8 @@@ class DataExplorer<T extends DataItem>
columns={[...this.props.columns, this.contextMenuColumn]}
items={this.props.items}
onRowClick={(_, item: T) => this.props.onRowClick(item)}
+ onContextMenu={this.props.onContextMenu}
+ onRowDoubleClick={(_, item: T) => this.props.onRowDoubleClick(item)}
- onRowContextMenu={this.openContextMenu}
onFiltersChange={this.props.onFiltersChange}
onSortToggle={this.props.onSortToggle} />
<Toolbar>
diff --cc src/components/data-table/data-table.tsx
index 854b322,c657e11..8f4ffc6
--- a/src/components/data-table/data-table.tsx
+++ b/src/components/data-table/data-table.tsx
@@@ -15,7 -15,8 +15,8 @@@ export interface DataTableProps<T>
items: T[];
columns: DataColumns<T>;
onRowClick: (event: React.MouseEvent<HTMLTableRowElement>, item: T) => void;
+ onContextMenu: (event: React.MouseEvent<HTMLElement>, item: T) => void;
+ onRowDoubleClick: (event: React.MouseEvent<HTMLTableRowElement>, item: T) => void;
- onRowContextMenu: (event: React.MouseEvent<HTMLTableRowElement>, item: T) => void;
onSortToggle: (column: DataColumn<T>) => void;
onFiltersChange: (filters: DataTableFilterItem[], column: DataColumn<T>) => void;
}
@@@ -69,12 -69,13 +70,13 @@@ class DataTable<T extends DataItem> ext
}
renderBodyRow = (item: T, index: number) => {
- const { onRowClick, onContextMenu } = this.props;
- const { onRowClick, onRowDoubleClick, onRowContextMenu } = this.props;
++ const { onRowClick, onRowDoubleClick, onContextMenu } = this.props;
return <TableRow
hover
key={item.key}
onClick={event => onRowClick && onRowClick(event, item)}
- onContextMenu={this.handleRowContextMenu(item)}>
- onDoubleClick={event => onRowDoubleClick && onRowDoubleClick(event, item) }
- onContextMenu={event => onRowContextMenu && onRowContextMenu(event, item)}>
++ onContextMenu={this.handleRowContextMenu(item)}
++ onDoubleClick={event => onRowDoubleClick && onRowDoubleClick(event, item) }>
{this.mapVisibleColumns((column, index) => (
<TableCell key={column.key || index}>
{column.render(item)}
diff --cc src/views-components/data-explorer/data-explorer.tsx
index 2864cef,5ff8c66..e2e145b
--- a/src/views-components/data-explorer/data-explorer.tsx
+++ b/src/views-components/data-explorer/data-explorer.tsx
@@@ -14,14 -14,16 +14,15 @@@ import { ContextMenuAction, ContextMenu
interface Props {
id: string;
- contextActions: ContextMenuActionGroup[];
onRowClick: (item: any) => void;
+ onContextMenu: (event: React.MouseEvent<HTMLElement>, item: any) => void;
+ onRowDoubleClick: (item: any) => void;
- onContextAction: (action: ContextMenuAction, item: any) => void;
}
-const mapStateToProps = (state: RootState, { id, contextActions }: Props) =>
+const mapStateToProps = (state: RootState, { id }: Props) =>
getDataExplorer(state.dataExplorer, id);
- const mapDispatchToProps = (dispatch: Dispatch, { id, onRowClick, onContextMenu }: Props) => ({
-const mapDispatchToProps = (dispatch: Dispatch, { id, contextActions, onRowClick, onRowDoubleClick, onContextAction }: Props) => ({
++const mapDispatchToProps = (dispatch: Dispatch, { id, onRowClick, onRowDoubleClick, onContextMenu }: Props) => ({
onSearch: (searchValue: string) => {
dispatch(actions.SET_SEARCH_VALUE({ id, searchValue }));
},
@@@ -46,9 -48,13 +47,11 @@@
dispatch(actions.SET_ROWS_PER_PAGE({ id, rowsPerPage }));
},
- contextActions,
-
onRowClick,
- onContextMenu
+ onRowDoubleClick,
-
- onContextAction
++
++ onContextMenu,
});
export default connect(mapStateToProps, mapDispatchToProps)(DataExplorer);
diff --cc src/views/project-panel/project-panel.tsx
index 04681c3,0708b16..0b1be09
--- a/src/views/project-panel/project-panel.tsx
+++ b/src/views/project-panel/project-panel.tsx
@@@ -25,9 -26,8 +25,10 @@@ export interface ProjectPanelFilter ext
type ProjectPanelProps = {
currentItemId: string,
onItemClick: (item: ProjectPanelItem) => void,
- onItemRouteChange: (itemId: string) => void,
+ onContextMenu: (event: React.MouseEvent<HTMLElement>, item: ProjectPanelItem) => void;
+ onDialogOpen: (ownerUuid: string) => void;
+ onItemDoubleClick: (item: ProjectPanelItem) => void,
+ onItemRouteChange: (itemId: string) => void
}
& DispatchProp
& WithStyles<CssRules>
@@@ -49,8 -48,10 +50,9 @@@ class ProjectPanel extends React.Compon
</div>
<DataExplorer
id={PROJECT_PANEL_ID}
- contextActions={contextMenuActions}
onRowClick={this.props.onItemClick}
- onContextMenu={this.props.onContextMenu} />;
+ onRowDoubleClick={this.props.onItemDoubleClick}
- onContextAction={this.executeAction} />;
++ onContextMenu={this.props.onContextMenu} />
</div>;
}
diff --cc src/views/workbench/workbench.tsx
index 303d055,959025b..6ad4d24
--- a/src/views/workbench/workbench.tsx
+++ b/src/views/workbench/workbench.tsx
@@@ -27,11 -27,8 +27,13 @@@ import projectActions from "../../store
import ProjectPanel from "../project-panel/project-panel";
import DetailsPanel from '../../views-components/details-panel/details-panel';
import { ArvadosTheme } from '../../common/custom-theme';
+import ContextMenu, { ContextMenuAction } from '../../components/context-menu/context-menu';
+import { mockAnchorFromMouseEvent } from '../../components/popover/helpers';
+import CreateProjectDialog from "../../views-components/create-project-dialog/create-project-dialog";
+import { authService } from '../../services/services';
+
+ import detailsPanelActions, { loadDetails } from "../../store/details-panel/details-panel-action";
+ import { ResourceKind } from '../../models/kinds';
const drawerWidth = 240;
const appBarHeight = 100;
@@@ -106,16 -99,11 +108,16 @@@ interface WorkbenchState
helpMenu: NavMenuItem[],
anonymousMenu: NavMenuItem[]
};
- isDetailsPanelOpened: boolean;
}
+
class Workbench extends React.Component<WorkbenchProps, WorkbenchState> {
state = {
+ contextMenu: {
+ anchorEl: undefined,
+ itemUuid: undefined
+ },
+ isCreationDialogOpen: false,
anchorEl: null,
searchText: "",
breadcrumbs: [],
@@@ -156,10 -144,7 +158,10 @@@
},
onMenuItemClick: (menuItem: NavMenuItem) => menuItem.action(),
onDetailsPanelToggle: () => {
- this.setState(prev => ({ isDetailsPanelOpened: !prev.isDetailsPanelOpened }));
+ this.props.dispatch(detailsPanelActions.TOGGLE_DETAILS_PANEL());
+ },
+ onContextMenu: (event: React.MouseEvent<HTMLElement>, breadcrumb: NavBreadcrumb) => {
+ this.openContextMenu(event, breadcrumb.itemId);
}
};
@@@ -233,8 -191,11 +235,11 @@@
<ProjectTree
projects={this.props.projects}
toggleOpen={itemId => this.props.dispatch<any>(setProjectItem(itemId, ItemMode.OPEN))}
- toggleActive={itemId => this.props.dispatch<any>(setProjectItem(itemId, ItemMode.ACTIVE))}
- onContextMenu={(event, item) => this.openContextMenu(event, item.data.uuid)} />
++ onContextMenu={(event, item) => this.openContextMenu(event, item.data.uuid)}
+ toggleActive={itemId => {
+ this.props.dispatch<any>(setProjectItem(itemId, ItemMode.ACTIVE));
+ this.props.dispatch<any>(loadDetails(itemId, ResourceKind.Project));
- }}
- />
++ }}/>
</SidePanel>
</Drawer>}
<main className={classes.contentWrapper}>
@@@ -243,55 -204,24 +248,59 @@@
<Route path="/projects/:id" render={this.renderProjectPanel} />
</Switch>
</div>
- <DetailsPanel
- isOpened={this.state.isDetailsPanelOpened}
- onCloseDrawer={this.mainAppBarActions.onDetailsPanelToggle} />
+ <DetailsPanel />
</main>
+ <ContextMenu
+ anchorEl={this.state.contextMenu.anchorEl}
+ actions={contextMenuActions}
+ onActionClick={this.openCreateDialog}
+ onClose={this.closeContextMenu} />
+ <CreateProjectDialog />
</div>
);
}
renderProjectPanel = (props: RouteComponentProps<{ id: string }>) => <ProjectPanel
onItemRouteChange={itemId => this.props.dispatch<any>(setProjectItem(itemId, ItemMode.ACTIVE))}
- onItemClick={item => this.props.dispatch<any>(setProjectItem(item.uuid, ItemMode.ACTIVE))}
+ onContextMenu={(event, item) => this.openContextMenu(event, item.uuid)}
+ onDialogOpen={this.handleCreationDialogOpen}
+ onItemClick={item => {
+ this.props.dispatch<any>(loadDetails(item.uuid, item.kind as ResourceKind));
+ }}
+ onItemDoubleClick={item => {
+ this.props.dispatch<any>(setProjectItem(item.uuid, ItemMode.ACTIVE));
+ this.props.dispatch<any>(loadDetails(item.uuid, ResourceKind.Project));
+ }}
{...props} />
+}
+const contextMenuActions = [[{
+ icon: "fas fa-plus fa-fw",
+ name: "New project",
+ openCreateDialog: true
+}, {
+ icon: "fas fa-users fa-fw",
+ name: "Share"
+}, {
+ icon: "fas fa-sign-out-alt fa-fw",
+ name: "Move to"
+}, {
+ icon: "fas fa-star fa-fw",
+ name: "Add to favourite"
+}, {
+ icon: "fas fa-edit fa-fw",
+ name: "Rename"
+}, {
+ icon: "fas fa-copy fa-fw",
+ name: "Make a copy"
+}, {
+ icon: "fas fa-download fa-fw",
+ name: "Download"
+}], [{
+ icon: "fas fa-trash-alt fa-fw",
+ name: "Remove"
}
+]];
export default connect<WorkbenchDataProps>(
(state: RootState) => ({
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list