import { ArvadosTheme } from '~/common/custom-theme';
import { Session, SessionStatus } from "~/models/session";
import Button from "@material-ui/core/Button";
-import { User } from "~/models/user";
-import { compose } from "redux";
+import { compose, Dispatch } from "redux";
import { Field, FormErrors, InjectedFormProps, reduxForm, reset, stopSubmit } from "redux-form";
import { TextField } from "~/components/text-field/text-field";
import { addSession } from "~/store/auth/auth-action-session";
const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
root: {
- width: '100%',
- overflow: 'auto'
+ width: '100%',
+ overflow: 'auto'
},
link: {
color: theme.palette.primary.main,
export interface SiteManagerPanelRootDataProps {
sessions: Session[];
- user: User;
}
type SiteManagerPanelRootProps = SiteManagerPanelRootDataProps & SiteManagerPanelRootActionProps & WithStyles<CssRules> & InjectedFormProps;
const SITE_MANAGER_FORM_NAME = 'siteManagerForm';
+const submitSession = (remoteHost: string) =>
+ (dispatch: Dispatch) => {
+ dispatch<any>(addSession(remoteHost)).then(() => {
+ dispatch(reset(SITE_MANAGER_FORM_NAME));
+ }).catch((e: any) => {
+ const errors = {
+ remoteHost: e
+ } as FormErrors;
+ dispatch(stopSubmit(SITE_MANAGER_FORM_NAME, errors));
+ });
+ };
+
export const SiteManagerPanelRoot = compose(
- reduxForm<{remoteHost: string}>({
+ reduxForm<{ remoteHost: string }>({
form: SITE_MANAGER_FORM_NAME,
touchOnBlur: false,
onSubmit: (data, dispatch) => {
- dispatch<any>(addSession(data.remoteHost)).then(() => {
- dispatch(reset(SITE_MANAGER_FORM_NAME));
- }).catch((e: any) => {
- const errors = {
- remoteHost: e
- } as FormErrors;
- dispatch(stopSubmit(SITE_MANAGER_FORM_NAME, errors));
- });
+ dispatch(submitSession(data.remoteHost));
}
}),
withStyles(styles))
<CardContent>
<Grid container direction="row">
<Grid item xs={12}>
- <Typography variant='body1' paragraph={true} >
+ <Typography paragraph={true} >
You can log in to multiple Arvados sites here, then use the multi-site search page to search collections and projects on all sites at once.
- </Typography>
+ </Typography>
</Grid>
</Grid>
<Grid item xs={12}>
<TableHead>
<TableRow className={classes.tableRow}>
<TableCell>Cluster ID</TableCell>
+ <TableCell>Host</TableCell>
<TableCell>Username</TableCell>
<TableCell>Email</TableCell>
<TableCell>Status</TableCell>
const validating = session.status === SessionStatus.BEING_VALIDATED;
return <TableRow key={index} className={classes.tableRow}>
<TableCell>{session.clusterId}</TableCell>
- <TableCell>{validating ? <CircularProgress size={20}/> : session.username}</TableCell>
- <TableCell>{validating ? <CircularProgress size={20}/> : session.email}</TableCell>
+ <TableCell>{session.remoteHost}</TableCell>
+ <TableCell>{validating ? <CircularProgress size={20} /> : session.username}</TableCell>
+ <TableCell>{validating ? <CircularProgress size={20} /> : session.email}</TableCell>
<TableCell className={classes.statusCell}>
<Button fullWidth
disabled={validating || session.status === SessionStatus.INVALIDATED || session.active}
<form onSubmit={handleSubmit}>
<Grid container direction="row">
<Grid item xs={12}>
- <Typography variant='body1' paragraph={true} className={classes.remoteSiteInfo}>
+ <Typography paragraph={true} className={classes.remoteSiteInfo}>
To add a remote Arvados site, paste the remote site's host here (see "ARVADOS_API_HOST" on the "current token" page).
- </Typography>
+ </Typography>
</Grid>
<Grid item xs={8}>
<Field
placeholder="zzzz.arvadosapi.com"
margin="normal"
label="New cluster"
- autoFocus/>
+ autoFocus />
</Grid>
<Grid item xs={3}>
<Button type="submit" variant="contained" color="primary"