refs #14783-go-to-log-collection-is-not-working
authorPawel Kowalczyk <pawel.kowalczyk@contractors.roche.com>
Mon, 28 Jan 2019 12:24:04 +0000 (13:24 +0100)
committerPawel Kowalczyk <pawel.kowalczyk@contractors.roche.com>
Mon, 28 Jan 2019 12:24:04 +0000 (13:24 +0100)
Arvados-DCO-1.1-Signed-off-by: Pawel Kowalczyk <pawel.kowalczyk@contractors.roche.com>

src/store/process-logs-panel/process-logs-panel-actions.ts
src/views/process-log-panel/process-log-main-card.tsx
src/views/process-log-panel/process-log-panel.tsx

index 79c6434c5bdf23d63a6efa6bfc4c775a4690e950..bf0dc93564ae37301434a6cc9c70403070e33dd7 100644 (file)
@@ -16,6 +16,8 @@ import { ResourceEventMessage } from '~/websocket/resource-event-message';
 import { getProcess } from '~/store/processes/process';
 import { FilterBuilder } from "~/services/api/filter-builder";
 import { OrderBuilder } from "~/services/api/order-builder";
+import { navigateToCollection } from '~/store/navigation/navigation-action';
+import { snackbarActions, SnackbarKind } from '~/store/snackbar/snackbar-actions';
 
 export const processLogsPanelActions = unionize({
     RESET_PROCESS_LOGS_PANEL: ofType<{}>(),
@@ -98,6 +100,16 @@ const createInitialLogPanelState = (logResources: LogResource[]) => {
 const logsToLines = (logs: LogResource[]) =>
     logs.map(({ properties }) => properties.text);
 
+export const navigateToLogCollection = (uuid: string) =>
+    async (dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
+        try {
+            await services.collectionService.get(uuid);
+            dispatch<any>(navigateToCollection(uuid));
+        } catch {
+            dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'This collection does not exists!', hideDuration: 2000, kind: SnackbarKind.ERROR }));
+        }
+    };
+
 const MAX_AMOUNT_OF_LOGS = 10000;
 
 const SUMMARIZED_FILTER_TYPE = 'Summarized';
index 9b75d112b737e6ccc86aa5fa2ad85d137fb8c4e5..6b2521c083e70dc01e9372f884189b1cce3cd59d 100644 (file)
@@ -43,8 +43,12 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         color: theme.customs.colors.green700
     },
     link: {
-        alignSelf: 'flex-end',
-        textAlign: 'right'
+        fontSize: '0.875rem',
+        color: theme.palette.primary.main,
+        textAlign: 'right',
+        '&:hover': {
+            cursor: 'pointer'
+        }
     }
 });
 
@@ -55,6 +59,7 @@ interface ProcessLogMainCardDataProps {
 
 export interface ProcessLogMainCardActionProps {
     onContextMenu: (event: React.MouseEvent<any>, process: Process) => void;
+    navigateToLogCollection: (uuid: string) => void;
 }
 
 export type ProcessLogMainCardProps = ProcessLogMainCardDataProps
@@ -64,7 +69,7 @@ export type ProcessLogMainCardProps = ProcessLogMainCardDataProps
     & ProcessLogFormActionProps;
 
 export const ProcessLogMainCard = withStyles(styles)(
-    ({ classes, process, selectedFilter, filters, onChange, lines, onContextMenu }: ProcessLogMainCardProps & WithStyles<CssRules>) =>
+    ({ classes, process, selectedFilter, filters, onChange, lines, onContextMenu, navigateToLogCollection }: ProcessLogMainCardProps & WithStyles<CssRules>) =>
         <Grid item xs={12}>
             <Link to={`/processes/${process.containerRequest.uuid}`} className={classes.backLink}>
                 <BackIcon className={classes.backIcon} /> Back
@@ -96,9 +101,9 @@ export const ProcessLogMainCard = withStyles(styles)(
                                     <ProcessLogForm selectedFilter={selectedFilter} filters={filters} onChange={onChange} />
                                 </Grid>
                                 <Grid item xs={6} className={classes.link}>
-                                    <Typography component='div'>
+                                    <span onClick={() => navigateToLogCollection(process.containerRequest.logUuid!)}>
                                         Go to Log collection
-                                </Typography>
+                                    </span>
                                 </Grid>
                             </Grid>
                             <Grid item xs>
index d578e784566b5d1c1d5bdd3caeb9672998c5e95f..f5425dbcab5b56735fa0a73294c6506ed17618cd 100644 (file)
@@ -9,8 +9,8 @@ import { Dispatch } from 'redux';
 import { openProcessContextMenu } from '~/store/context-menu/context-menu-actions';
 import { ProcessLogPanelRootDataProps, ProcessLogPanelRootActionProps, ProcessLogPanelRoot } from './process-log-panel-root';
 import { getProcessPanelLogs } from '~/store/process-logs-panel/process-logs-panel';
-import { setProcessLogsPanelFilter } from '~/store/process-logs-panel/process-logs-panel-actions';
-import { getProcessLogsPanelCurrentUuid } from '../../store/process-logs-panel/process-logs-panel';
+import { setProcessLogsPanelFilter, navigateToLogCollection } from '~/store/process-logs-panel/process-logs-panel-actions';
+import { getProcessLogsPanelCurrentUuid } from '~/store/process-logs-panel/process-logs-panel';
 
 export interface Log {
     object_uuid: string;
@@ -42,6 +42,9 @@ const mapDispatchToProps = (dispatch: Dispatch): ProcessLogPanelRootActionProps
     },
     onChange: filter => {
         dispatch(setProcessLogsPanelFilter(filter.value));
+    },
+    navigateToLogCollection: (uuid: string) => {
+        dispatch<any>(navigateToLogCollection(uuid));
     }
 });