+
{AnalyticsButton()}
{ExportButton()}
{InfoButton()}
diff --git a/litmus-portal/frontend/src/pages/WorkflowDetails/index.tsx b/litmus-portal/frontend/src/pages/WorkflowDetails/index.tsx
index 408cfcf21..dfd43e2d2 100644
--- a/litmus-portal/frontend/src/pages/WorkflowDetails/index.tsx
+++ b/litmus-portal/frontend/src/pages/WorkflowDetails/index.tsx
@@ -11,19 +11,18 @@ import Scaffold from '../../containers/layouts/Scaffold';
import { WORKFLOW_DETAILS, WORKFLOW_EVENTS } from '../../graphql';
import {
ExecutionData,
- Node,
Workflow,
WorkflowDataVars,
WorkflowSubscription,
} from '../../models/graphql/workflowData';
+import useActions from '../../redux/actions';
+import * as TabActions from '../../redux/actions/tabs';
import { RootState } from '../../redux/reducers';
import ArgoWorkflow from '../../views/WorkflowDetails/ArgoWorkflow';
import WorkflowInfo from '../../views/WorkflowDetails/WorkflowInfo';
+import WorkflowNodeInfo from '../../views/WorkflowDetails/WorkflowNodeInfo';
import useStyles from './styles';
import TopNavButtons from './TopNavButtons';
-import WorkflowNodeInfo from '../../views/WorkflowDetails/NodeInfo';
-import ButtonFilled from '../../components/Button/ButtonFilled';
-import ButtonOutline from '../../components/Button/ButtonOutline';
interface TopNavButtonsProps {
isAnalyticsToggled: boolean;
@@ -40,6 +39,7 @@ const WorkflowDetails: React.FC = () => {
isInfoToggled: false,
});
+ const tabs = useActions(TabActions);
const { pathname } = useLocation();
// Getting the workflow nome from the pathname
const workflowRunId = pathname.split('/')[3];
@@ -49,8 +49,9 @@ const WorkflowDetails: React.FC = () => {
const selectedProjectID = useSelector(
(state: RootState) => state.userData.selectedProjectID
);
- // get Selected Node
- const selectedNode = useSelector((state: RootState) => state.selectedNode);
+ const workflowDetailsTabValue = useSelector(
+ (state: RootState) => state.tabNumber.node
+ );
// Query to get workflows
const { subscribeToMore, data, error } = useQuery
(
@@ -97,12 +98,17 @@ const WorkflowDetails: React.FC = () => {
}
}, [data]);
- const [value, setValue] = React.useState(0);
const theme = useTheme();
+
const handleChange = (event: React.ChangeEvent<{}>, newValue: number) => {
- setValue(newValue);
+ tabs.changeWorkflowDetailsTabs(newValue);
};
+ // On fresh screen refresh 'Workflow' Tab would be selected
+ useEffect(() => {
+ tabs.changeWorkflowDetailsTabs(0);
+ }, []);
+
return (
@@ -116,75 +122,60 @@ const WorkflowDetails: React.FC = () => {
{t('workflowDetails.detailedLog')}
{/* Argo Workflow DAG Graph */}
- {isToggled.isInfoToggled ? (
-
- ) : (
-
- )}
+
{isToggled.isInfoToggled ? (
-
- <>
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- >
-
- {}}
- >
- Events
-
- {}}>
- Logs
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
) : (
<>>
diff --git a/litmus-portal/frontend/src/pages/WorkflowDetails/styles.ts b/litmus-portal/frontend/src/pages/WorkflowDetails/styles.ts
index 6250ded3e..1d04d0f65 100644
--- a/litmus-portal/frontend/src/pages/WorkflowDetails/styles.ts
+++ b/litmus-portal/frontend/src/pages/WorkflowDetails/styles.ts
@@ -3,6 +3,7 @@ import { makeStyles, Theme } from '@material-ui/core/styles';
const useStyles = makeStyles((theme: Theme) => ({
root: {
display: 'flex',
+ justifyContent: 'flex-end',
marginTop: theme.spacing(3),
height: '75vh',
},
@@ -10,25 +11,11 @@ const useStyles = makeStyles((theme: Theme) => ({
margin: theme.spacing(-0.4, 1),
width: '1rem',
},
- w100: {
- width: '100%',
- height: '100%',
- },
- w140: {
- width: '141%',
- height: '100%',
- },
button: {
position: 'relative',
display: 'flex',
- margin: theme.spacing(4, 4, 0, 4),
- },
- buttonLeft: {
- float: 'left',
- },
- buttonRight: {
- position: 'absolute',
- right: '4%',
+ justifyContent: 'space-between',
+ margin: theme.spacing(4, 0, 0, 4),
},
heading: {
fontSize: '2rem',
@@ -36,7 +23,10 @@ const useStyles = makeStyles((theme: Theme) => ({
},
workflowGraph: {
padding: '0 3rem',
- width: '70%',
+ width: '100%',
+ },
+ workflowSideBar: {
+ width: '20rem',
},
loaderDiv: {
height: '100%',
@@ -48,12 +38,6 @@ const useStyles = makeStyles((theme: Theme) => ({
display: 'flex',
flexDirection: 'column',
},
- footerButton: {
- marginLeft: 'auto',
- display: 'flex',
- flexDirection: 'row',
- padding: theme.spacing(3, 4, 4, 0),
- },
}));
export default useStyles;
diff --git a/litmus-portal/frontend/src/redux/actions/nodeSelection.ts b/litmus-portal/frontend/src/redux/actions/nodeSelection.ts
index 95ea7612f..36bb680b8 100644
--- a/litmus-portal/frontend/src/redux/actions/nodeSelection.ts
+++ b/litmus-portal/frontend/src/redux/actions/nodeSelection.ts
@@ -1,11 +1,11 @@
/* eslint-disable import/prefer-default-export */
-import { Node } from '../../models/graphql/workflowData';
import {
NodeSelectionAction,
NodeSelectionActions,
+ SelectedNode,
} from '../../models/redux/nodeSelection';
-export function selectNode(node: Node): NodeSelectionAction {
+export function selectNode(node: SelectedNode): NodeSelectionAction {
return {
type: NodeSelectionActions.SELECT_NODE,
payload: node,
diff --git a/litmus-portal/frontend/src/redux/actions/tabs.ts b/litmus-portal/frontend/src/redux/actions/tabs.ts
index 4c260dbcd..f90ead6b0 100644
--- a/litmus-portal/frontend/src/redux/actions/tabs.ts
+++ b/litmus-portal/frontend/src/redux/actions/tabs.ts
@@ -13,3 +13,10 @@ export function changeSettingsTabs(tabNumber: number): TabAction {
payload: tabNumber,
};
}
+
+export function changeWorkflowDetailsTabs(tabNumber: number): TabAction {
+ return {
+ type: TabActions.CHANGE_WORKFLOW_DETAILS_TAB,
+ payload: tabNumber,
+ };
+}
diff --git a/litmus-portal/frontend/src/redux/configureStore.tsx b/litmus-portal/frontend/src/redux/configureStore.tsx
index 6b29f7c65..119589757 100644
--- a/litmus-portal/frontend/src/redux/configureStore.tsx
+++ b/litmus-portal/frontend/src/redux/configureStore.tsx
@@ -2,7 +2,6 @@ import { createBrowserHistory } from 'history'; // eslint-disable-line import/no
import * as localforage from 'localforage';
import { applyMiddleware, createStore } from 'redux';
import { composeWithDevTools } from 'redux-devtools-extension';
-import { createLogger } from 'redux-logger';
import { PersistConfig, persistReducer, persistStore } from 'redux-persist';
import thunk from 'redux-thunk';
import rootReducer from './reducers';
@@ -14,12 +13,11 @@ const persistConfig: PersistConfig
= {
blacklist: [],
};
-const logger = (createLogger as any)();
const history = createBrowserHistory();
const dev = process.env.NODE_ENV === 'development';
-let middleware = dev ? applyMiddleware(thunk, logger) : applyMiddleware(thunk);
+let middleware = applyMiddleware(thunk);
if (dev) {
middleware = composeWithDevTools(middleware);
diff --git a/litmus-portal/frontend/src/redux/reducers/index.ts b/litmus-portal/frontend/src/redux/reducers/index.ts
index e1431bcaf..c8f9b2ee4 100644
--- a/litmus-portal/frontend/src/redux/reducers/index.ts
+++ b/litmus-portal/frontend/src/redux/reducers/index.ts
@@ -1,6 +1,6 @@
import { combineReducers } from 'redux';
-import { Node } from '../../models/graphql/workflowData';
import { CommunityData } from '../../models/redux/analytics';
+import { SelectedNode } from '../../models/redux/nodeSelection';
import { TabState } from '../../models/redux/tabs';
import { TemplateData } from '../../models/redux/template';
import { UserData } from '../../models/redux/user';
@@ -16,7 +16,7 @@ export interface RootState {
communityData: CommunityData;
userData: UserData;
workflowData: WorkflowData;
- selectedNode: Node;
+ selectedNode: SelectedNode;
tabNumber: TabState;
selectTemplate: TemplateData;
}
diff --git a/litmus-portal/frontend/src/redux/reducers/nodeSelection.ts b/litmus-portal/frontend/src/redux/reducers/nodeSelection.ts
index 21e85d95e..74afc632e 100644
--- a/litmus-portal/frontend/src/redux/reducers/nodeSelection.ts
+++ b/litmus-portal/frontend/src/redux/reducers/nodeSelection.ts
@@ -1,21 +1,26 @@
-import { Node } from '../../models/graphql/workflowData';
import {
NodeSelectionAction,
NodeSelectionActions,
+ SelectedNode,
} from '../../models/redux/nodeSelection';
import createReducer from './createReducer';
-const initialState: Node = {
+const initialState: SelectedNode = {
children: null,
finishedAt: '',
+ message: '',
name: '',
+ pod_name: '',
phase: '',
startedAt: '',
type: '',
};
-export const selectedNode = createReducer(initialState, {
- [NodeSelectionActions.SELECT_NODE](state: Node, action: NodeSelectionAction) {
+export const selectedNode = createReducer(initialState, {
+ [NodeSelectionActions.SELECT_NODE](
+ state: SelectedNode,
+ action: NodeSelectionAction
+ ) {
return {
...state,
...action.payload,
diff --git a/litmus-portal/frontend/src/redux/reducers/tabs.ts b/litmus-portal/frontend/src/redux/reducers/tabs.ts
index 7970fb834..4aef39bf5 100644
--- a/litmus-portal/frontend/src/redux/reducers/tabs.ts
+++ b/litmus-portal/frontend/src/redux/reducers/tabs.ts
@@ -5,6 +5,7 @@ import createReducer from './createReducer';
const initialState: TabState = {
workflows: 0,
settings: 0,
+ node: 0,
};
export const tabNumber = createReducer(initialState, {
@@ -20,6 +21,12 @@ export const tabNumber = createReducer(initialState, {
settings: action.payload,
};
},
+ [TabActions.CHANGE_WORKFLOW_DETAILS_TAB](state: TabState, action: TabAction) {
+ return {
+ ...state,
+ node: action.payload,
+ };
+ },
});
export default tabNumber;
diff --git a/litmus-portal/frontend/src/views/ChaosWorkflows/BrowseWorkflow/TableData.tsx b/litmus-portal/frontend/src/views/ChaosWorkflows/BrowseWorkflow/TableData.tsx
index 0248a353f..1484e2081 100644
--- a/litmus-portal/frontend/src/views/ChaosWorkflows/BrowseWorkflow/TableData.tsx
+++ b/litmus-portal/frontend/src/views/ChaosWorkflows/BrowseWorkflow/TableData.tsx
@@ -7,13 +7,13 @@ import {
} from '@material-ui/core';
import MoreVertIcon from '@material-ui/icons/MoreVert';
import React from 'react';
+import LinearProgressBar from '../../../components/ProgressBar/LinearProgressBar';
import {
ExecutionData,
WorkflowRun,
} from '../../../models/graphql/workflowData';
import { history } from '../../../redux/configureStore';
import timeDifferenceForDate from '../../../utils/datesModifier';
-import LinearProgressBar from '../../../components/ProgressBar/LinearProgressBar';
import CustomStatus from '../CustomStatus/Status';
import useStyles from './styles';
@@ -109,9 +109,9 @@ const TableData: React.FC = ({ data, exeData }) => {
>