[ARVADOS-WORKBENCH2] updated: 2.3.0-151-g87ba4910
Git user
git at public.arvados.org
Wed Feb 9 06:08:03 UTC 2022
Summary of changes:
.../virtual-machines-dialog/group-array-input.tsx | 7 ----
.../virtual-machine-user-panel.tsx | 47 +++++++++++++++++++---
2 files changed, 42 insertions(+), 12 deletions(-)
via 87ba49100005ac43690cd2f77b2f797154998d01 (commit)
via 3e3eaa213219ebcac9b52c8fbe3ec3ef7c39c863 (commit)
from b178ea37c7a247a6399ecf1112d5f8c8aae12136 (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 87ba49100005ac43690cd2f77b2f797154998d01
Author: Stephen Smith <stephen at curii.com>
Date: Wed Feb 9 01:07:15 2022 -0500
18284: Add shell login command copy button and style webshell button like a button.
Arvados-DCO-1.1-Signed-off-by: Stephen Smith <stephen at curii.com>
diff --git a/src/views/virtual-machine-panel/virtual-machine-user-panel.tsx b/src/views/virtual-machine-panel/virtual-machine-user-panel.tsx
index 66ea017e..70f97daf 100644
--- a/src/views/virtual-machine-panel/virtual-machine-user-panel.tsx
+++ b/src/views/virtual-machine-panel/virtual-machine-user-panel.tsx
@@ -15,8 +15,11 @@ import { HelpIcon } from 'components/icon/icon';
import { SESSION_STORAGE } from "services/auth-service/auth-service";
// import * as CopyToClipboard from 'react-copy-to-clipboard';
import parse from "parse-duration";
+import { CopyIcon } from 'components/icon/icon';
+import CopyToClipboard from 'react-copy-to-clipboard';
+import { snackbarActions, SnackbarKind } from 'store/snackbar/snackbar-actions';
-type CssRules = 'button' | 'codeSnippet' | 'link' | 'linkIcon' | 'rightAlign' | 'cardWithoutMachines' | 'icon' | 'chipsRoot';
+type CssRules = 'button' | 'codeSnippet' | 'link' | 'linkIcon' | 'rightAlign' | 'cardWithoutMachines' | 'icon' | 'chipsRoot' | 'copyIcon' | 'webshellButton';
const EXTRA_TOKEN = "exraToken";
@@ -60,6 +63,18 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
chipsRoot: {
margin: `0px -${theme.spacing.unit / 2}px`,
},
+ copyIcon: {
+ marginLeft: theme.spacing.unit,
+ color: theme.palette.grey["500"],
+ cursor: 'pointer',
+ display: 'inline',
+ '& svg': {
+ fontSize: '1rem'
+ }
+ },
+ webshellButton: {
+ textTransform: "initial",
+ },
});
const mapStateToProps = (state: RootState) => {
@@ -76,9 +91,16 @@ const mapStateToProps = (state: RootState) => {
};
};
-const mapDispatchToProps = (dispatch: Dispatch): Pick<VirtualMachinesPanelActionProps, 'loadVirtualMachinesData' | 'saveRequestedDate'> => ({
+const mapDispatchToProps = (dispatch: Dispatch): Pick<VirtualMachinesPanelActionProps, 'loadVirtualMachinesData' | 'saveRequestedDate' | 'onCopy'> => ({
saveRequestedDate: () => dispatch<any>(saveRequestedDate()),
loadVirtualMachinesData: () => dispatch<any>(loadVirtualMachinesUserData()),
+ onCopy: (message: string) => {
+ dispatch(snackbarActions.OPEN_SNACKBAR({
+ message,
+ hideDuration: 2000,
+ kind: SnackbarKind.SUCCESS
+ }));
+ },
});
interface VirtualMachinesPanelDataProps {
@@ -97,6 +119,7 @@ interface VirtualMachinesPanelDataProps {
interface VirtualMachinesPanelActionProps {
saveRequestedDate: () => void;
loadVirtualMachinesData: () => string;
+ onCopy: (message: string) => void;
}
type VirtualMachineProps = VirtualMachinesPanelActionProps & VirtualMachinesPanelDataProps & WithStyles<CssRules>;
@@ -192,6 +215,7 @@ const virtualMachinesTable = (props: VirtualMachineProps) =>
if (props.tokenLocation === SESSION_STORAGE || props.tokenLocation === EXTRA_TOKEN) {
tokenParam = `&token=${encodeURIComponent(props.token)}`;
}
+ const loginHref = `/webshell/?host=${encodeURIComponent(props.webshellUrl + '/' + it.hostname)}&timeout=${props.idleTimeout}&login=${encodeURIComponent(username)}${tokenParam}`;
return <TableRow key={lk.uuid}>
<TableCell>{it.hostname}</TableCell>
<TableCell>{username}</TableCell>
@@ -208,11 +232,24 @@ const virtualMachinesTable = (props: VirtualMachineProps) =>
</TableCell>
<TableCell>
{command}
+ <Tooltip title="Copy to clipboard">
+ <span className={props.classes.copyIcon}>
+ <CopyToClipboard text={command || ""} onCopy={() => props.onCopy!("Copied")}>
+ <CopyIcon />
+ </CopyToClipboard>
+ </span>
+ </Tooltip>
</TableCell>
<TableCell>
- <a href={`/webshell/?host=${encodeURIComponent(props.webshellUrl + '/' + it.hostname)}&timeout=${props.idleTimeout}&login=${encodeURIComponent(username)}${tokenParam}`} target="_blank" rel="noopener noreferrer" className={props.classes.link}>
- Log in as {username}
- </a>
+ <Button
+ className={props.classes.webshellButton}
+ variant="contained"
+ size="small"
+ href={loginHref}
+ target="_blank"
+ rel="noopener noreferrer">
+ Log in as {username}
+ </Button>
</TableCell>
</TableRow>;
}
commit 3e3eaa213219ebcac9b52c8fbe3ec3ef7c39c863
Author: Stephen Smith <stephen at curii.com>
Date: Wed Feb 9 00:15:07 2022 -0500
18284: Remove unneeded onblur handler in group array input.
Arvados-DCO-1.1-Signed-off-by: Stephen Smith <stephen at curii.com>
diff --git a/src/views-components/virtual-machines-dialog/group-array-input.tsx b/src/views-components/virtual-machines-dialog/group-array-input.tsx
index d3714dce..3ea5e77c 100644
--- a/src/views-components/virtual-machines-dialog/group-array-input.tsx
+++ b/src/views-components/virtual-machines-dialog/group-array-input.tsx
@@ -52,7 +52,6 @@ const StyledInputComponent = withStyles(styles)(
values={input.value}
onChange={this.handleChange}
handleFocus={input.onFocus}
- handleBlur={this.handleBlur}
createNewValue={identity}
inputComponent={Input}
chipsClassName={classes.chips}
@@ -70,11 +69,5 @@ const StyledInputComponent = withStyles(styles)(
input.onChange(values);
}
- handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {
- const { input } = this.props;
- if (!input.value?.length) {
- input.onBlur(e);
- }
- }
}
);
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list