From 89a2555cc00f750dfa07dc57a2908059fc52c935 Mon Sep 17 00:00:00 2001 From: Peter Amstutz Date: Fri, 27 May 2022 15:24:05 -0400 Subject: [PATCH] Split ResourceOwnerWithName & ResourceWithName Use each component correctly. refs #19052 Arvados-DCO-1.1-Signed-off-by: Peter Amstutz --- .../data-explorer/renderers.tsx | 106 +++++++++--------- .../details-panel/project-details.tsx | 36 +++--- .../details-panel/workflow-details.tsx | 6 +- .../collection-panel/collection-panel.tsx | 16 +-- .../process-details-attributes.tsx | 4 +- src/views/project-panel/project-panel.tsx | 2 +- 6 files changed, 86 insertions(+), 84 deletions(-) diff --git a/src/views-components/data-explorer/renderers.tsx b/src/views-components/data-explorer/renderers.tsx index 3edce4f8..7822bdc6 100644 --- a/src/views-components/data-explorer/renderers.tsx +++ b/src/views-components/data-explorer/renderers.tsx @@ -184,22 +184,22 @@ export const ResourceLastName = connect( return resource || { lastName: '' }; })(renderLastName); -const renderFullName = (dispatch: Dispatch ,item: { uuid: string, firstName: string, lastName: string }, link?: boolean) => { +const renderFullName = (dispatch: Dispatch, item: { uuid: string, firstName: string, lastName: string }, link?: boolean) => { const displayName = (item.firstName + " " + item.lastName).trim() || item.uuid; return link ? dispatch(navigateToUserProfile(item.uuid))}> - {displayName} + {displayName} : - {displayName}; + {displayName}; } export const UserResourceFullName = connect( (state: RootState, props: { uuid: string, link?: boolean }) => { const resource = getResource(props.uuid)(state.resources); - return {item: resource || { uuid: '', firstName: '', lastName: '' }, link: props.link}; - })((props: {item: {uuid: string, firstName: string, lastName: string}, link?: boolean} & DispatchProp) => renderFullName(props.dispatch, props.item, props.link)); + return { item: resource || { uuid: '', firstName: '', lastName: '' }, link: props.link }; + })((props: { item: { uuid: string, firstName: string, lastName: string }, link?: boolean } & DispatchProp) => renderFullName(props.dispatch, props.item, props.link)); const renderUuid = (item: { uuid: string }) => @@ -208,8 +208,8 @@ const renderUuid = (item: { uuid: string }) => ; export const ResourceUuid = connect((state: RootState, props: { uuid: string }) => ( - getResource(props.uuid)(state.resources) || { uuid: '' } - ))(renderUuid); + getResource(props.uuid)(state.resources) || { uuid: '' } +))(renderUuid); const renderEmail = (item: { email: string }) => {item.email}; @@ -227,17 +227,17 @@ enum UserAccountStatus { UNKNOWN = '' } -const renderAccountStatus = (props: {status: UserAccountStatus}) => +const renderAccountStatus = (props: { status: UserAccountStatus }) => {(() => { - switch(props.status) { + switch (props.status) { case UserAccountStatus.ACTIVE: - return ; + return ; case UserAccountStatus.SETUP: - return ; + return ; case UserAccountStatus.INACTIVE: - return ; + return ; default: return <>; } @@ -262,37 +262,37 @@ const getUserAccountStatus = (state: RootState, props: { uuid: string }) => { )(state.resources); if (user) { - return user.isActive ? {status: UserAccountStatus.ACTIVE} : permissions.length > 0 ? {status: UserAccountStatus.SETUP} : {status: UserAccountStatus.INACTIVE}; + return user.isActive ? { status: UserAccountStatus.ACTIVE } : permissions.length > 0 ? { status: UserAccountStatus.SETUP } : { status: UserAccountStatus.INACTIVE }; } else { - return {status: UserAccountStatus.UNKNOWN}; + return { status: UserAccountStatus.UNKNOWN }; } } export const ResourceLinkTailAccountStatus = connect( (state: RootState, props: { uuid: string }) => { const link = getResource(props.uuid)(state.resources); - return link && link.tailKind === ResourceKind.USER ? getUserAccountStatus(state, {uuid: link.tailUuid}) : {status: UserAccountStatus.UNKNOWN}; + return link && link.tailKind === ResourceKind.USER ? getUserAccountStatus(state, { uuid: link.tailUuid }) : { status: UserAccountStatus.UNKNOWN }; })(renderAccountStatus); export const UserResourceAccountStatus = connect(getUserAccountStatus)(renderAccountStatus); const renderIsHidden = (props: { - memberLinkUuid: string, - permissionLinkUuid: string, - visible: boolean, - canManage: boolean, - setMemberIsHidden: (memberLinkUuid: string, permissionLinkUuid: string, hide: boolean) => void - }) => { + memberLinkUuid: string, + permissionLinkUuid: string, + visible: boolean, + canManage: boolean, + setMemberIsHidden: (memberLinkUuid: string, permissionLinkUuid: string, hide: boolean) => void +}) => { if (props.memberLinkUuid) { return { - e.stopPropagation(); - props.setMemberIsHidden(props.memberLinkUuid, props.permissionLinkUuid, !props.visible); - }} />; + data-cy="user-visible-checkbox" + color="primary" + checked={props.visible} + disabled={!props.canManage} + onClick={(e) => { + e.stopPropagation(); + props.setMemberIsHidden(props.memberLinkUuid, props.permissionLinkUuid, !props.visible); + }} />; } else { return ; } @@ -357,7 +357,7 @@ export const VirtualMachineHostname = connect( return resource || { hostname: '' }; })(renderHostname); -const renderVirtualMachineLogin = (login: {user: string}) => +const renderVirtualMachineLogin = (login: { user: string }) => {login.user} export const VirtualMachineLogin = connect( @@ -365,7 +365,7 @@ export const VirtualMachineLogin = connect( const permission = getResource(props.linkUuid)(state.resources); const user = getResource(permission?.tailUuid || '')(state.resources); - return {user: user?.username || permission?.tailUuid || ''}; + return { user: user?.username || permission?.tailUuid || '' }; })(renderVirtualMachineLogin); // Common methods @@ -442,7 +442,7 @@ export const ResourceLinkClass = connect( const getResourceDisplayName = (resource: Resource): string => { if ((resource as UserResource).kind === ResourceKind.USER - && typeof (resource as UserResource).firstName !== 'undefined') { + && typeof (resource as UserResource).firstName !== 'undefined') { // We can be sure the resource is UserResource return getUserDisplayName(resource as UserResource); } else { @@ -516,7 +516,7 @@ const renderLinkDelete = (dispatch: Dispatch, item: LinkResource, canManage: boo ; } else { - return ; + return ; } } @@ -530,7 +530,7 @@ export const ResourceLinkDelete = connect( canManage: link && getResourceLinkCanManage(state, link) && !isBuiltin, }; })((props: { item: LinkResource, canManage: boolean } & DispatchProp) => - renderLinkDelete(props.dispatch, props.item, props.canManage)); + renderLinkDelete(props.dispatch, props.item, props.canManage)); export const ResourceLinkTailEmail = connect( (state: RootState, props: { uuid: string }) => { @@ -713,7 +713,7 @@ const userFromID = return { uuid: props.uuid, userFullname }; }); -const ownerFromResourceId = +const ownerFromResourceId = compose( connect((state: RootState, props: { uuid: string }) => { const childResource = getResource(props.uuid)(state.resources); @@ -722,10 +722,8 @@ const ownerFromResourceId = userFromID ); -export const ResourceOwnerWithName = - compose( - ownerFromResourceId, - withStyles({}, { withTheme: true })) +const _resourceWithName = + withStyles({}, { withTheme: true }) ((props: { uuid: string, userFullname: string, dispatch: Dispatch, theme: ArvadosTheme }) => { const { uuid, userFullname, dispatch, theme } = props; @@ -741,6 +739,10 @@ export const ResourceOwnerWithName = ; }); +export const ResourceOwnerWithName = ownerFromResourceId(_resourceWithName); + +export const ResourceWithName = userFromID(_resourceWithName); + export const UserNameFromID = compose(userFromID)( (props: { uuid: string, userFullname: string, dispatch: Dispatch }) => { @@ -807,7 +809,7 @@ export const ResponsiblePerson = return {responsiblePersonName} ({uuid}) - ; + ; }); const renderType = (type: string, subtype: string) => @@ -844,18 +846,18 @@ export const ProcessStatus = compose( withStyles({}, { withTheme: true })) ((props: { process?: Process, theme: ArvadosTheme }) => props.process - ? - : - + ? + : - ); export const ProcessStartDate = connect( diff --git a/src/views-components/details-panel/project-details.tsx b/src/views-components/details-panel/project-details.tsx index d4100767..6d48e984 100644 --- a/src/views-components/details-panel/project-details.tsx +++ b/src/views-components/details-panel/project-details.tsx @@ -16,7 +16,7 @@ import { withStyles, StyleRulesCallback, WithStyles, Button } from '@material-ui import { ArvadosTheme } from 'common/custom-theme'; import { Dispatch } from 'redux'; import { getPropertyChip } from '../resource-properties-form/property-chip'; -import { ResourceOwnerWithName } from '../data-explorer/renderers'; +import { ResourceWithName } from '../data-explorer/renderers'; import { GroupClass } from "models/group"; import { openProjectUpdateDialog, ProjectUpdateFormDialogData } from 'store/projects/project-update-actions'; @@ -41,7 +41,7 @@ const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ marginBottom: theme.spacing.unit / 2, }, editIcon: { - paddingRight: theme.spacing.unit/2, + paddingRight: theme.spacing.unit / 2, fontSize: '1.125rem', }, editButton: { @@ -70,21 +70,21 @@ const ProjectDetailsComponent = connect(null, mapDispatchToProps)( withStyles(styles)( ({ classes, project, onClick }: ProjectDetailsComponentProps) =>
{project.groupClass !== GroupClass.FILTER ? - - : '' - } + + : '' + } } /> + uuidEnhancer={(uuid: string) => } /> @@ -101,9 +101,9 @@ const ProjectDetailsComponent = connect(null, mapDispatchToProps)( { Object.keys(project.properties).map(k => Array.isArray(project.properties[k]) - ? project.properties[k].map((v: string) => - getPropertyChip(k, v, undefined, classes.tag)) - : getPropertyChip(k, project.properties[k], undefined, classes.tag) + ? project.properties[k].map((v: string) => + getPropertyChip(k, v, undefined, classes.tag)) + : getPropertyChip(k, project.properties[k], undefined, classes.tag) ) }
diff --git a/src/views-components/details-panel/workflow-details.tsx b/src/views-components/details-panel/workflow-details.tsx index 7076823c..4c4bd2de 100644 --- a/src/views-components/details-panel/workflow-details.tsx +++ b/src/views-components/details-panel/workflow-details.tsx @@ -8,7 +8,7 @@ import { WorkflowResource } from 'models/workflow'; import { DetailsData } from "./details-data"; import { DefaultView } from 'components/default-view/default-view'; import { DetailsAttribute } from 'components/details-attribute/details-attribute'; -import { ResourceOwnerWithName } from 'views-components/data-explorer/renderers'; +import { ResourceWithName } from 'views-components/data-explorer/renderers'; import { formatDate } from "common/formatters"; import { Grid } from '@material-ui/core'; import { withStyles, StyleRulesCallback, WithStyles, Button } from '@material-ui/core'; @@ -61,7 +61,7 @@ export const WorkflowDetailsAttributes = connect(null, mapDispatchToProps)( } /> + uuidEnhancer={(uuid: string) => } /> @@ -72,7 +72,7 @@ export const WorkflowDetailsAttributes = connect(null, mapDispatchToProps)( } /> + uuidEnhancer={(uuid: string) => } /> ; })); diff --git a/src/views/collection-panel/collection-panel.tsx b/src/views/collection-panel/collection-panel.tsx index dce8ef8f..17d35aea 100644 --- a/src/views/collection-panel/collection-panel.tsx +++ b/src/views/collection-panel/collection-panel.tsx @@ -36,7 +36,7 @@ import { getProgressIndicator } from 'store/progress-indicator/progress-indicato import { COLLECTION_PANEL_LOAD_FILES, loadCollectionFiles, COLLECTION_PANEL_LOAD_FILES_THRESHOLD } from 'store/collection-panel/collection-panel-files/collection-panel-files-actions'; import { Link } from 'react-router-dom'; import { Link as ButtonLink } from '@material-ui/core'; -import { ResourceOwnerWithName, ResponsiblePerson } from 'views-components/data-explorer/renderers'; +import { ResourceWithName, ResponsiblePerson } from 'views-components/data-explorer/renderers'; import { MPVContainer, MPVPanelContent, MPVPanelState } from 'components/multi-panel-view/multi-panel-view'; type CssRules = 'root' @@ -146,8 +146,8 @@ export const CollectionPanel = withStyles(styles)( render() { const { classes, item, dispatch, isWritable, isOldVersion, isLoadingFiles, tooManyFiles } = this.props; const panelsData: MPVPanelState[] = [ - {name: "Details"}, - {name: "Files"}, + { name: "Details" }, + { name: "Files" }, ]; return item ? @@ -195,7 +195,7 @@ export const CollectionPanel = withStyles(styles)( {isOldVersion && This is an old version. Make a copy to make changes. Go to the head version for sharing options. - + }
@@ -288,7 +288,7 @@ export const CollectionDetailsAttributes = (props: CollectionDetailsProps) => { } /> + uuidEnhancer={(uuid: string) => } />
@@ -341,13 +341,13 @@ export const CollectionDetailsAttributes = (props: CollectionDetailsProps) => { - { Object.keys(item.properties).length > 0 + {Object.keys(item.properties).length > 0 ? Object.keys(item.properties).map(k => - Array.isArray(item.properties[k]) + Array.isArray(item.properties[k]) ? item.properties[k].map((v: string) => getPropertyChip(k, v, undefined, classes.tag)) : getPropertyChip(k, item.properties[k], undefined, classes.tag)) - :
No properties
} + :
No properties
}
; }; diff --git a/src/views/process-panel/process-details-attributes.tsx b/src/views/process-panel/process-details-attributes.tsx index 99a4404c..1e3e5591 100644 --- a/src/views/process-panel/process-details-attributes.tsx +++ b/src/views/process-panel/process-details-attributes.tsx @@ -9,7 +9,7 @@ import { formatDate } from "common/formatters"; import { resourceLabel } from "common/labels"; import { DetailsAttribute } from "components/details-attribute/details-attribute"; import { ResourceKind } from "models/resource"; -import { ContainerRunTime, ResourceOwnerWithName } from "views-components/data-explorer/renderers"; +import { ContainerRunTime, ResourceWithName } from "views-components/data-explorer/renderers"; import { getProcess, getProcessStatus } from "store/processes/process"; import { RootState } from "store/store"; import { connect } from "react-redux"; @@ -79,7 +79,7 @@ export const ProcessDetailsAttributes = withStyles(styles, { withTheme: true })( } /> + uuidEnhancer={(uuid: string) => } /> diff --git a/src/views/project-panel/project-panel.tsx b/src/views/project-panel/project-panel.tsx index fb5b6205..a5594d8e 100644 --- a/src/views/project-panel/project-panel.tsx +++ b/src/views/project-panel/project-panel.tsx @@ -183,7 +183,7 @@ export const ProjectPanel = withStyles(styles)( name: resource.name, uuid: resource.uuid, ownerUuid: resource.ownerUuid, - isTrashed: ('isTrashed' in resource) ? resource.isTrashed: false, + isTrashed: ('isTrashed' in resource) ? resource.isTrashed : false, kind: resource.kind, menuKind, description: resource.description, -- 2.30.2