[ARVADOS-WORKBENCH2] updated: 2.3.0-112-g58db72fe
Git user
git at public.arvados.org
Thu Dec 16 17:28:32 UTC 2021
Summary of changes:
cypress/integration/group-manage.spec.js | 284 +++++++++++++++++++++
src/common/labels.ts | 2 +
src/components/data-explorer/data-explorer.tsx | 9 +-
src/components/icon/icon.tsx | 13 +-
src/index.tsx | 2 +
src/models/group.ts | 15 +-
src/models/project.ts | 2 +-
src/store/context-menu/context-menu-actions.ts | 14 +
.../group-details-panel-actions.ts | 138 +++++-----
...up-details-panel-members-middleware-service.ts} | 46 +++-
...etails-panel-permissions-middleware-service.ts} | 51 +++-
src/store/groups-panel/groups-panel-actions.ts | 83 +++---
.../groups-panel-middleware-service.ts | 5 +-
src/store/navigation/navigation-action.ts | 3 +-
src/store/projects/project-update-actions.ts | 8 +-
src/store/resources/resources-actions.ts | 2 +
src/store/sharing-dialog/sharing-dialog-actions.ts | 37 ++-
.../side-panel-tree/side-panel-tree-actions.ts | 4 +-
src/store/store.ts | 15 +-
src/store/workbench/workbench-actions.ts | 19 +-
.../context-menu/action-sets/group-action-set.ts | 12 +-
.../action-sets/permission-edit-action-set.ts | 28 ++
src/views-components/context-menu/context-menu.tsx | 1 +
src/views-components/data-explorer/renderers.tsx | 275 ++++++++++++++++----
.../dialog-forms/add-group-member-dialog.tsx | 49 ----
.../dialog-forms/create-group-dialog.tsx | 63 -----
.../dialog-forms/update-project-dialog.ts | 23 +-
.../dialog-update/dialog-project-update.tsx | 31 ++-
.../form-fields/project-form-fields.tsx | 16 +-
.../side-panel-tree/side-panel-tree.tsx | 4 +-
.../group-details-panel/group-details-panel.tsx | 199 +++++++++++----
src/views/groups-panel/groups-panel.tsx | 23 +-
src/views/workbench/workbench.tsx | 4 -
33 files changed, 1084 insertions(+), 396 deletions(-)
create mode 100644 cypress/integration/group-manage.spec.js
copy src/store/group-details-panel/{group-details-panel-middleware-service.ts => group-details-panel-members-middleware-service.ts} (55%)
rename src/store/group-details-panel/{group-details-panel-middleware-service.ts => group-details-panel-permissions-middleware-service.ts} (50%)
create mode 100644 src/views-components/context-menu/action-sets/permission-edit-action-set.ts
delete mode 100644 src/views-components/dialog-forms/add-group-member-dialog.tsx
delete mode 100644 src/views-components/dialog-forms/create-group-dialog.tsx
via 58db72fee358d5987139a1b8526c0ca873e07dbf (commit)
via 04ddc76f953ae6c61264a9c1fa5a8cade9e1773e (commit)
via 7bf8014027507777a91a0266cf37beaa9841a2d1 (commit)
via df9197982583c61e6f142d37ca8e01a8277027d3 (commit)
via dfac252e5d6639c0bc6f106f1985fcdcd7402376 (commit)
via 311448f71e5a5cc1ffcfe6d5b7c5214fa196f1b1 (commit)
via 7e1669d2263cdf8e9066057fd126007b755ba7f5 (commit)
via e63239560b1393a8b306a4353719d4fe85698f04 (commit)
via 7a84b16aa6cd37e14f5698cd51ea76b5d1805388 (commit)
via 30e26a1c60eded910ed95c3c3f747b5cdb8774d2 (commit)
via 5ea93d2e3c077f9cad78f8176a903ced7ceea62e (commit)
via 2ec7fa451c0970c15c0b0d35fe70e473889f9ea3 (commit)
via 4a917782a054773c2cb72f3ee364e2c0b02643e9 (commit)
via 75f4aa52ad828eab58e43ea99bdded98b1a87aa1 (commit)
via 2c257e34488b251e146631e12559732b3879d567 (commit)
via a3658215b1129e78e2dfd7496e1d5de8263b2351 (commit)
via 416d4f0f57336b2225bcc82b0f4db8873adf8cd2 (commit)
via 705b5cc1072bfb178195a90091e6d3dc120d193d (commit)
via 103a2d417eb9dfae62cb72385de5e8d836bb15e9 (commit)
via 0db26cfb0926f4f840d11bf85b66dfee921bf1f2 (commit)
via 207429c4a8863bce7e53082179e3e3b78c67b073 (commit)
via 134cf300692c9f09f1a79d02295e1d6b7242f32d (commit)
via 844241adac4afa32679f07874e5c659896399fdc (commit)
via 022c93cff94f9f253e1df177ad75dde0dde2597f (commit)
via e02fcdadca54f1dc970734f7c5ce0bc6407e10c6 (commit)
via de3aa7cd755ae48855c0a8031a67d66237755fe0 (commit)
via 12d2c589092bc5cead8ded7ea2148949969bc477 (commit)
via 5d0a0226a4ea4bb98f35d4ce76698f7a6606bfb4 (commit)
via 1dcbe2d0ec3fdc613edca3a490d0adfce023a803 (commit)
via 1277b2a092fbd057220ee43d6fc47bffff5933d1 (commit)
via b565525602ad5203d313abe6b898f1885e344abc (commit)
via d6c180028671059f19912a11887b804e9d63d608 (commit)
via 703a2e1813ed1ff80d2ccd3214233240802b4754 (commit)
via 8d40870a23aa60855ed4b1a43a0186b7d50c0d7d (commit)
via 798064c6616d98f8b6b3dfe562458bffe662f4ad (commit)
via 0399c993a117c3489f1fe0160d6a554a56b8bbab (commit)
via acceec90afa2a2b5007ab75795c911ac75446bc4 (commit)
via 418b900ceaaace5aa2e844959dee9c41d35fbe2d (commit)
via 2b6003f9be46bd178159a116886b02192e2ebfaa (commit)
via 8a6c5e3b1ac52cdd6e7e07f8349da92b31216c76 (commit)
via 55b1d7f984ac36dab63edc89e3b132b61fedbbfa (commit)
via cfa8c66b29ba7eb4cab946ab8bb2f58ca93bc80a (commit)
via 237776fd3412409bf0a9c9f0ac538f82d4b4a8d4 (commit)
via de544885631caf7d6e6c1d9ae43763b4d612dfca (commit)
via b2485c13b72d66f5e207814a368b72334970afca (commit)
from fc84a3f3932af503d3afd04a58af52270c8fc3b6 (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 58db72fee358d5987139a1b8526c0ca873e07dbf
Merge: fc84a3f3 04ddc76f
Author: Stephen Smith <stephen at curii.com>
Date: Thu Dec 16 12:27:26 2021 -0500
Merge branch '18123-group-edit-page-rebase1' into main. Closes #18123
Arvados-DCO-1.1-Signed-off-by: Stephen Smith <stephen at curii.com>
diff --cc src/components/data-explorer/data-explorer.tsx
index 05125f12,928d3ed4..55840ae9
--- a/src/components/data-explorer/data-explorer.tsx
+++ b/src/components/data-explorer/data-explorer.tsx
@@@ -106,22 -94,19 +106,23 @@@ export const DataExplorer = withStyles(
rowsPerPage, rowsPerPageOptions, onColumnToggle, searchLabel, searchValue, onSearch,
items, itemsAvailable, onRowClick, onRowDoubleClick, classes,
dataTableDefaultView, hideColumnSelector, actions, paperProps, hideSearchInput,
- paperKey, fetchMode, currentItemUuid, title
+ paperKey, fetchMode, currentItemUuid, title,
+ doHidePanel, doMaximizePanel, panelName, panelMaximized
} = this.props;
+
- return <Paper className={classes.root} {...paperProps} key={paperKey}>
+ const dataCy = this.props["data-cy"];
+ return <Paper className={classes.root} {...paperProps} key={paperKey} data-cy={dataCy}>
- {title && <div className={classes.title}>{title}</div>}
- {(!hideColumnSelector || !hideSearchInput || !!actions) && <Toolbar className={title ? classes.toolbarUnderTitle : classes.toolbar}>
+ <Grid container direction="column" wrap="nowrap" className={classes.container}>
+ {title && <Grid item xs className={classes.title}>{title}</Grid>}
- {(!hideColumnSelector || !hideSearchInput) && <Grid item xs><Toolbar className={title ? classes.toolbarUnderTitle : classes.toolbar}>
++ {(!hideColumnSelector || !hideSearchInput || !!actions) && <Grid item xs><Toolbar className={title ? classes.toolbarUnderTitle : classes.toolbar}>
<Grid container justify="space-between" wrap="nowrap" alignItems="center">
- <div className={classes.searchBox}>
+ {!hideSearchInput && <div className={classes.searchBox}>
{!hideSearchInput && <SearchInput
label={searchLabel}
value={searchValue}
+ selfClearProp={currentItemUuid}
onSearch={onSearch} />}
- </div>
+ </div>}
{actions}
{!hideColumnSelector && <ColumnSelector
columns={columns}
diff --cc src/components/icon/icon.tsx
index 523eefbd,4543d8d9..15a9f02d
--- a/src/components/icon/icon.tsx
+++ b/src/components/icon/icon.tsx
@@@ -59,15 -59,14 +59,17 @@@ import SettingsEthernet from '@material
import Star from '@material-ui/icons/Star';
import StarBorder from '@material-ui/icons/StarBorder';
import Warning from '@material-ui/icons/Warning';
+import Visibility from '@material-ui/icons/Visibility';
+import VisibilityOff from '@material-ui/icons/VisibilityOff';
import VpnKey from '@material-ui/icons/VpnKey';
import LinkOutlined from '@material-ui/icons/LinkOutlined';
+ import RemoveRedEye from '@material-ui/icons/RemoveRedEye';
+ import Computer from '@material-ui/icons/Computer';
// Import FontAwesome icons
import { library } from '@fortawesome/fontawesome-svg-core';
- import { faPencilAlt, faSlash } from '@fortawesome/free-solid-svg-icons';
+ import { faPencilAlt, faSlash, faUsers } from '@fortawesome/free-solid-svg-icons';
+import { CropFreeSharp } from '@material-ui/icons';
library.add(
faPencilAlt,
faSlash,
diff --cc src/views/group-details-panel/group-details-panel.tsx
index d0f79736,e47ff8c0..ce3f34c7
--- a/src/views/group-details-panel/group-details-panel.tsx
+++ b/src/views/group-details-panel/group-details-panel.tsx
@@@ -11,25 -11,33 +11,42 @@@ import { ResourceLinkHeadUuid, Resource
import { createTree } from 'models/tree';
import { noop } from 'lodash/fp';
import { RootState } from 'store/store';
- import { GROUP_DETAILS_PANEL_ID, openAddGroupMembersDialog } from 'store/group-details-panel/group-details-panel-actions';
+ import { GROUP_DETAILS_MEMBERS_PANEL_ID, GROUP_DETAILS_PERMISSIONS_PANEL_ID, openAddGroupMembersDialog, getCurrentGroupDetailsPanelUuid } from 'store/group-details-panel/group-details-panel-actions';
import { openContextMenu } from 'store/context-menu/context-menu-actions';
import { ResourcesState, getResource } from 'store/resources/resources';
- import { ContextMenuKind } from 'views-components/context-menu/context-menu';
- import { PermissionResource } from 'models/permission';
- import { Grid, Button } from '@material-ui/core';
-import { Grid, Button, Tabs, Tab, Paper } from '@material-ui/core';
++import { Grid, Button, Tabs, Tab, Paper, WithStyles, withStyles, StyleRulesCallback } from '@material-ui/core';
import { AddIcon } from 'components/icon/icon';
+ import { getUserUuid } from 'common/getuser';
+ import { GroupResource, isBuiltinGroup } from 'models/group';
++import { ArvadosTheme } from 'common/custom-theme';
+
- export enum GroupDetailsPanelColumnNames {
- FIRST_NAME = "First name",
- LAST_NAME = "Last name",
- UUID = "UUID",
- EMAIL = "Email",
++type CssRules = "root";
++
++const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
++ root: {
++ width: '100%',
++ }
++});
+
+ export enum GroupDetailsPanelMembersColumnNames {
+ FULL_NAME = "Name",
USERNAME = "Username",
+ ACTIVE = "User Active",
+ VISIBLE = "Visible to other members",
+ PERMISSION = "Permission",
+ REMOVE = "Remove",
+ }
+
+ export enum GroupDetailsPanelPermissionsColumnNames {
+ NAME = "Name",
+ PERMISSION = "Permission",
+ UUID = "UUID",
+ REMOVE = "Remove",
}
- export const groupDetailsPanelColumns: DataColumns<string> = [
+ export const groupDetailsMembersPanelColumns: DataColumns<string> = [
{
- name: GroupDetailsPanelColumnNames.FIRST_NAME,
+ name: GroupDetailsPanelMembersColumnNames.FULL_NAME,
selected: true,
configurable: true,
filters: createTree(),
@@@ -80,47 -133,74 +142,74 @@@ export interface GroupDetailsPanelProp
onContextMenu: (event: React.MouseEvent<HTMLElement>, item: any) => void;
onAddUser: () => void;
resources: ResourcesState;
+ groupCanManage: boolean;
}
--export const GroupDetailsPanel = connect(
++export const GroupDetailsPanel = withStyles(styles)(connect(
mapStateToProps, mapDispatchToProps
)(
-- class GroupDetailsPanel extends React.Component<GroupDetailsPanelProps> {
++ class GroupDetailsPanel extends React.Component<GroupDetailsPanelProps & WithStyles<CssRules>> {
+ state = {
+ value: 0,
+ };
+
+ componentDidMount() {
+ this.setState({ value: 0 });
+ }
render() {
+ const { value } = this.state;
return (
- <DataExplorer
- id={GROUP_DETAILS_PANEL_ID}
- onRowClick={noop}
- onRowDoubleClick={noop}
- onContextMenu={this.handleContextMenu}
- contextMenuColumn={true}
- hideColumnSelector
- hideSearchInput
- actions={
- <Grid container justify='flex-end'>
- <Button
- variant="contained"
- color="primary"
- onClick={this.props.onAddUser}>
- <AddIcon /> Add user
- </Button>
- </Grid>
- } />
- <Paper>
++ <Paper className={this.props.classes.root}>
+ <Tabs value={value} onChange={this.handleChange} variant="fullWidth">
+ <Tab data-cy="group-details-members-tab" label="MEMBERS" />
+ <Tab data-cy="group-details-permissions-tab" label="PERMISSIONS" />
+ </Tabs>
+ {value === 0 &&
+ <DataExplorer
+ id={GROUP_DETAILS_MEMBERS_PANEL_ID}
+ data-cy="group-members-data-explorer"
+ onRowClick={noop}
+ onRowDoubleClick={noop}
+ onContextMenu={noop}
+ contextMenuColumn={false}
+ hideColumnSelector
+ hideSearchInput
+ actions={
+ this.props.groupCanManage &&
+ <Grid container justify='flex-end'>
+ <Button
+ data-cy="group-member-add"
+ variant="contained"
+ color="primary"
+ onClick={this.props.onAddUser}>
+ <AddIcon /> Add user
+ </Button>
+ </Grid>
+ }
+ paperProps={{
+ elevation: 0,
+ }} />
+ }
+ {value === 1 &&
+ <DataExplorer
+ id={GROUP_DETAILS_PERMISSIONS_PANEL_ID}
+ data-cy="group-permissions-data-explorer"
+ onRowClick={noop}
+ onRowDoubleClick={noop}
+ onContextMenu={noop}
+ contextMenuColumn={false}
+ hideColumnSelector
+ hideSearchInput
+ paperProps={{
+ elevation: 0,
+ }} />
+ }
+ </Paper>
);
}
- handleContextMenu = (event: React.MouseEvent<HTMLElement>, resourceUuid: string) => {
- const resource = getResource<PermissionResource>(resourceUuid)(this.props.resources);
- if (resource) {
- this.props.onContextMenu(event, {
- name: '',
- uuid: resource.uuid,
- ownerUuid: resource.ownerUuid,
- kind: resource.kind,
- menuKind: ContextMenuKind.GROUP_MEMBER
- });
- }
+ handleChange = (event: React.MouseEvent<HTMLElement>, value: number) => {
+ this.setState({ value });
}
-- });
-
++ }));
diff --cc src/views/groups-panel/groups-panel.tsx
index faefab10,c96c0677..3251c729
--- a/src/views/groups-panel/groups-panel.tsx
+++ b/src/views/groups-panel/groups-panel.tsx
@@@ -21,16 -21,6 +21,15 @@@ import { RootState } from 'store/store'
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';
+import { ArvadosTheme } from 'common/custom-theme';
+
+type CssRules = "root";
+
+const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
+ root: {
+ width: '100%',
+ }
+});
export enum GroupsPanelColumnNames {
GROUP = "Name",
@@@ -90,10 -77,11 +86,11 @@@ export const GroupsPanel = withStyles(s
render() {
return (
- <DataExplorer
+ <div className={this.props.classes.root}><DataExplorer
id={GROUPS_PANEL_ID}
+ data-cy="groups-panel-data-explorer"
onRowClick={noop}
- onRowDoubleClick={this.props.onRowDoubleClick}
+ onRowDoubleClick={noop}
onContextMenu={this.handleContextMenu}
contextMenuColumn={true}
hideColumnSelector
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list