mirror of
https://github.com/sartography/spiff-arena.git
synced 2025-02-22 06:08:29 +00:00
moved spiffuiv3 to v3 dir w/ burnettk
This commit is contained in:
parent
59ae4e2ac0
commit
4703c67084
@ -7,7 +7,7 @@ import { AbilityContext } from './contexts/Can';
|
||||
import APIErrorProvider from './contexts/APIErrorContext';
|
||||
import ContainerForExtensions from './ContainerForExtensions';
|
||||
import PublicRoutes from './routes/PublicRoutes';
|
||||
import SpiffUIV3 from './routes/SpiffUIV3';
|
||||
import SpiffUIV3 from './a-spiffui-v3/views/SpiffUIV3';
|
||||
|
||||
const queryClient = new QueryClient();
|
||||
|
||||
|
@ -0,0 +1,27 @@
|
||||
import React from 'react';
|
||||
import { Box, Typography, Link as MuiLink } from '@mui/material';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
function ComingSoon() {
|
||||
return (
|
||||
<Box
|
||||
sx={{
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
height: '100vh',
|
||||
}}
|
||||
>
|
||||
<Typography variant="h1" gutterBottom>
|
||||
Coming Soon
|
||||
</Typography>
|
||||
<Typography variant="h6">This feature will be available soon.</Typography>
|
||||
<MuiLink component={Link} to="/newui" variant="h6" sx={{ mt: 2 }}>
|
||||
Go back home
|
||||
</MuiLink>
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
|
||||
export default ComingSoon;
|
102
spiffworkflow-frontend/src/a-spiffui-v3/views/Login.tsx
Normal file
102
spiffworkflow-frontend/src/a-spiffui-v3/views/Login.tsx
Normal file
@ -0,0 +1,102 @@
|
||||
import { ArrowForward } from '@mui/icons-material';
|
||||
import { useCallback, useEffect, useState } from 'react';
|
||||
import { CircularProgress, Button, Grid, Typography } from '@mui/material';
|
||||
import { useNavigate, useSearchParams } from 'react-router-dom';
|
||||
import { AuthenticationOption } from '../interfaces';
|
||||
import HttpService from '../services/HttpService';
|
||||
import UserService from '../services/UserService';
|
||||
|
||||
export default function Login() {
|
||||
const navigate = useNavigate();
|
||||
const [searchParams] = useSearchParams();
|
||||
const [authenticationOptions, setAuthenticationOptions] = useState<
|
||||
AuthenticationOption[] | null
|
||||
>(null);
|
||||
|
||||
const originalUrl = searchParams.get('original_url');
|
||||
const getOriginalUrl = useCallback(() => {
|
||||
if (originalUrl === '/login') {
|
||||
return '/';
|
||||
}
|
||||
return originalUrl;
|
||||
}, [originalUrl]);
|
||||
|
||||
useEffect(() => {
|
||||
HttpService.makeCallToBackend({
|
||||
path: '/authentication-options',
|
||||
successCallback: setAuthenticationOptions,
|
||||
});
|
||||
}, [getOriginalUrl]);
|
||||
|
||||
const authenticationOptionButtons = () => {
|
||||
if (!authenticationOptions) {
|
||||
return null;
|
||||
}
|
||||
const buttons: any = [];
|
||||
authenticationOptions.forEach((option: AuthenticationOption) => {
|
||||
buttons.push(
|
||||
<Button
|
||||
key={option.identifier}
|
||||
data-qa={`login-button-${option.identifier}`}
|
||||
size="large"
|
||||
variant="contained"
|
||||
endIcon={<ArrowForward />}
|
||||
onClick={() => UserService.doLogin(option, getOriginalUrl())}
|
||||
style={{ margin: '10px' }}
|
||||
>
|
||||
{option.label}
|
||||
</Button>,
|
||||
);
|
||||
});
|
||||
return buttons;
|
||||
};
|
||||
|
||||
const getLoadingIcon = () => {
|
||||
const style = { margin: '50px 0 50px 50px' };
|
||||
return (
|
||||
<CircularProgress
|
||||
style={style}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
const loginComponents = () => {
|
||||
return (
|
||||
<div className="fixed-width-container login-page-spacer">
|
||||
<Grid container spacing={3}>
|
||||
<Grid item lg={5} md={4} sm={4}>
|
||||
<Typography variant="h4" className="with-large-bottom-margin">
|
||||
Log in to SpiffWorkflow
|
||||
</Typography>
|
||||
</Grid>
|
||||
<Grid item lg={8} md={5} sm={4}>
|
||||
{authenticationOptionButtons()}
|
||||
</Grid>
|
||||
</Grid>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
if (UserService.isLoggedIn()) {
|
||||
navigate('/');
|
||||
return null;
|
||||
}
|
||||
|
||||
if (authenticationOptions === null) {
|
||||
return (
|
||||
<div className="fixed-width-container login-page-spacer">
|
||||
{getLoadingIcon()}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
if (authenticationOptions !== null) {
|
||||
if (authenticationOptions.length === 1) {
|
||||
UserService.doLogin(authenticationOptions[0], getOriginalUrl());
|
||||
return null;
|
||||
}
|
||||
return loginComponents();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
@ -12,40 +12,40 @@ import {
|
||||
} from '@mui/material';
|
||||
import MenuIcon from '@mui/icons-material/Menu';
|
||||
import { Route, Routes, useLocation } from 'react-router';
|
||||
import { createSpiffTheme } from '../a-spiffui-v3/assets/theme/SpiffTheme';
|
||||
import Homepage from '../a-spiffui-v3/views/Homepage';
|
||||
import '../a-spiffui-v3/assets/styles/transitions.css';
|
||||
import StartProcess from '../a-spiffui-v3/views/StartProcess/StartProcess';
|
||||
import Processes from '../a-spiffui-v3/views/StartProcess/Processes';
|
||||
import StartProcessInstance from '../a-spiffui-v3/views/StartProcess/StartProcessInstance';
|
||||
import SideNav from '../a-spiffui-v3/components/SideNav';
|
||||
import { createSpiffTheme } from '../assets/theme/SpiffTheme';
|
||||
import Homepage from './Homepage';
|
||||
import '../assets/styles/transitions.css';
|
||||
import StartProcess from './StartProcess/StartProcess';
|
||||
import Processes from './StartProcess/Processes';
|
||||
import StartProcessInstance from './StartProcess/StartProcessInstance';
|
||||
import SideNav from '../components/SideNav';
|
||||
import LoginHandler from '../components/LoginHandler';
|
||||
import Login from './Login';
|
||||
import InstancesStartedByMe from '../a-spiffui-v3/views/InstancesStartedByMe';
|
||||
import TaskShow from '../a-spiffui-v3/views/TaskShow/TaskShow';
|
||||
import ProcessInterstitialPage from '../a-spiffui-v3/views/TaskShow/ProcessInterstitialPage';
|
||||
import ProcessInstanceProgressPage from '../a-spiffui-v3/views/TaskShow/ProcessInstanceProgressPage';
|
||||
import InstancesStartedByMe from './InstancesStartedByMe';
|
||||
import TaskShow from './TaskShow/TaskShow';
|
||||
import ProcessInterstitialPage from './TaskShow/ProcessInterstitialPage';
|
||||
import ProcessInstanceProgressPage from './TaskShow/ProcessInstanceProgressPage';
|
||||
import ErrorDisplay from '../components/ErrorDisplay';
|
||||
import About from '../a-spiffui-v3/views/About';
|
||||
import About from './About';
|
||||
import useAPIError from '../hooks/UseApiError';
|
||||
import ComingSoon from '../components/ComingSoon';
|
||||
import MessageListPage from '../a-spiffui-v3/views/MessageListPage';
|
||||
import DataStoreRoutes from '../a-spiffui-v3/views/DataStoreRoutes';
|
||||
import DataStoreNew from '../a-spiffui-v3/views/DataStoreNew';
|
||||
import DataStoreList from '../a-spiffui-v3/views/DataStoreList';
|
||||
import Configuration from '../a-spiffui-v3/views/Configuration';
|
||||
import AuthenticationList from '../a-spiffui-v3/views/AuthenticationList';
|
||||
import SecretList from '../a-spiffui-v3/views/SecretList';
|
||||
import SecretNew from '../a-spiffui-v3/views/SecretNew';
|
||||
import SecretShow from '../a-spiffui-v3/views/SecretShow';
|
||||
import ProcessModelShow from '../a-spiffui-v3/views/ProcessModelShow';
|
||||
import ProcessModelNew from '../a-spiffui-v3/views/ProcessModelNew';
|
||||
import ProcessModelEdit from '../a-spiffui-v3/views/ProcessModelEdit'; // Import the edited component
|
||||
import ProcessModelEditDiagram from '../a-spiffui-v3/views/ProcessModelEditDiagram';
|
||||
import ReactFormEditor from '../a-spiffui-v3/views/ReactFormEditor'; // Import the new component
|
||||
import ProcessInstanceRoutes from '../a-spiffui-v3/views/ProcessInstanceRoutes';
|
||||
import ProcessInstanceShortLink from '../a-spiffui-v3/views/ProcessInstanceShortLink';
|
||||
import ProcessInstanceList from '../a-spiffui-v3/views/ProcessInstanceList'; // Import the new component
|
||||
import MessageListPage from './MessageListPage';
|
||||
import DataStoreRoutes from './DataStoreRoutes';
|
||||
import DataStoreNew from './DataStoreNew';
|
||||
import DataStoreList from './DataStoreList';
|
||||
import Configuration from './Configuration';
|
||||
import AuthenticationList from './AuthenticationList';
|
||||
import SecretList from './SecretList';
|
||||
import SecretNew from './SecretNew';
|
||||
import SecretShow from './SecretShow';
|
||||
import ProcessModelShow from './ProcessModelShow';
|
||||
import ProcessModelNew from './ProcessModelNew';
|
||||
import ProcessModelEdit from './ProcessModelEdit'; // Import the edited component
|
||||
import ProcessModelEditDiagram from './ProcessModelEditDiagram';
|
||||
import ReactFormEditor from './ReactFormEditor'; // Import the new component
|
||||
import ProcessInstanceRoutes from './ProcessInstanceRoutes';
|
||||
import ProcessInstanceShortLink from './ProcessInstanceShortLink';
|
||||
import ProcessInstanceList from './ProcessInstanceList'; // Import the new component
|
||||
|
||||
const fadeIn = 'fadeIn';
|
||||
const fadeOutImmediate = 'fadeOutImmediate';
|
Loading…
x
Reference in New Issue
Block a user