From: Michal Klobukowski Date: Tue, 10 Jul 2018 13:20:15 +0000 (+0200) Subject: Resolve merge conflicts X-Git-Tag: 1.2.0~52^2~1 X-Git-Url: https://git.arvados.org/arvados-workbench2.git/commitdiff_plain/f5e55e7a71f2fc2390d392af752c61b4d3135cb6 Resolve merge conflicts Feature #13694 Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski --- f5e55e7a71f2fc2390d392af752c61b4d3135cb6 diff --cc src/components/data-explorer/data-explorer.tsx index e90b1c27,9b099acb..9085b1f1 --- a/src/components/data-explorer/data-explorer.tsx +++ b/src/components/data-explorer/data-explorer.tsx @@@ -21,8 -24,9 +21,9 @@@ interface DataExplorerProps page: number; onSearch: (value: string) => void; onRowClick: (item: T) => void; + onRowDoubleClick: (item: T) => void; onColumnToggle: (column: DataColumn) => void; - onContextAction: (action: ContextMenuAction, item: T) => void; + onContextMenu: (event: React.MouseEvent, item: T) => void; onSortToggle: (column: DataColumn) => void; onFiltersChange: (filters: DataTableFilterItem[], column: DataColumn) => void; onChangePage: (page: number) => void; @@@ -49,7 -68,8 +50,8 @@@ class DataExplorer 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} /> diff --cc src/components/data-table/data-table.tsx index 854b3220,c657e116..8f4ffc6f --- 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 items: T[]; columns: DataColumns; onRowClick: (event: React.MouseEvent, item: T) => void; + onContextMenu: (event: React.MouseEvent, item: T) => void; + onRowDoubleClick: (event: React.MouseEvent, item: T) => void; - onRowContextMenu: (event: React.MouseEvent, item: T) => void; onSortToggle: (column: DataColumn) => void; onFiltersChange: (filters: DataTableFilterItem[], column: DataColumn) => void; } @@@ -69,12 -69,13 +70,13 @@@ class DataTable ext } renderBodyRow = (item: T, index: number) => { - const { onRowClick, onContextMenu } = this.props; - const { onRowClick, onRowDoubleClick, onRowContextMenu } = this.props; ++ const { onRowClick, onRowDoubleClick, onContextMenu } = this.props; return 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) => ( {column.render(item)} diff --cc src/views-components/data-explorer/data-explorer.tsx index 2864cefe,5ff8c66b..e2e145bb --- 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, 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 04681c3c,0708b163..0b1be099 --- 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, item: ProjectPanelItem) => void; + onDialogOpen: (ownerUuid: string) => void; + onItemDoubleClick: (item: ProjectPanelItem) => void, + onItemRouteChange: (itemId: string) => void } & DispatchProp & WithStyles @@@ -49,8 -48,10 +50,9 @@@ class ProjectPanel extends React.Compon ; + onRowDoubleClick={this.props.onItemDoubleClick} - onContextAction={this.executeAction} />; ++ onContextMenu={this.props.onContextMenu} /> ; } diff --cc src/views/workbench/workbench.tsx index 303d055a,959025bf..6ad4d247 --- 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 { 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, breadcrumb: NavBreadcrumb) => { + this.openContextMenu(event, breadcrumb.itemId); } }; @@@ -233,8 -191,11 +235,11 @@@ this.props.dispatch(setProjectItem(itemId, ItemMode.OPEN))} - toggleActive={itemId => this.props.dispatch(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(setProjectItem(itemId, ItemMode.ACTIVE)); + this.props.dispatch(loadDetails(itemId, ResourceKind.Project)); - }} - /> ++ }}/> }
@@@ -243,55 -204,24 +248,59 @@@ - +
+ + ); } renderProjectPanel = (props: RouteComponentProps<{ id: string }>) => this.props.dispatch(setProjectItem(itemId, ItemMode.ACTIVE))} - onItemClick={item => this.props.dispatch(setProjectItem(item.uuid, ItemMode.ACTIVE))} + onContextMenu={(event, item) => this.openContextMenu(event, item.uuid)} + onDialogOpen={this.handleCreationDialogOpen} + onItemClick={item => { + this.props.dispatch(loadDetails(item.uuid, item.kind as ResourceKind)); + }} + onItemDoubleClick={item => { + this.props.dispatch(setProjectItem(item.uuid, ItemMode.ACTIVE)); + this.props.dispatch(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( (state: RootState) => ({