X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/c53693847e622ef89ba7d62a93fc7d60dc68e6df..e42867f560b3c2f4c09cf6a2c07c964c63714141:/src/views/process-log-panel/process-log-panel.tsx diff --git a/src/views/process-log-panel/process-log-panel.tsx b/src/views/process-log-panel/process-log-panel.tsx index 0936d3bd..9f61f8b6 100644 --- a/src/views/process-log-panel/process-log-panel.tsx +++ b/src/views/process-log-panel/process-log-panel.tsx @@ -2,27 +2,15 @@ // // SPDX-License-Identifier: AGPL-3.0 -import * as React from 'react'; -import { RootState } from '~/store/store'; +import { RootState } from 'store/store'; import { connect } from 'react-redux'; -import { getProcess } from '~/store/processes/process'; +import { getProcess } from 'store/processes/process'; import { Dispatch } from 'redux'; -import { openProcessContextMenu } from '~/store/context-menu/context-menu-actions'; -import { matchProcessLogRoute } from '~/routes/routes'; +import { openProcessContextMenu } from 'store/context-menu/context-menu-actions'; import { ProcessLogPanelRootDataProps, ProcessLogPanelRootActionProps, ProcessLogPanelRoot } from './process-log-panel-root'; - -const SELECT_OPTIONS = [ - { label: 'Dispatch', value: 'dispatch' }, - { label: 'Crunch-run', value: 'crunch-run' }, - { label: 'Crunchstat', value: 'crunchstat' }, - { label: 'Hoststat', value: 'hoststat' }, - { label: 'Node-info', value: 'node-info' }, - { label: 'Arv-mount', value: 'arv-mount' }, - { label: 'Stdout', value: 'stdout' }, - { label: 'Stderr', value: 'stderr' } -]; - -const lines = ['Lorem Ipsum', 'Lorem Ipsum', 'Lorem Ipsum', 'Lorem Ipsum', 'Lorem Ipsum', 'Lorem Ipsum', 'Lorem Ipsum', 'Lorem Ipsum']; +import { getProcessPanelLogs } 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; @@ -37,23 +25,27 @@ export interface FilterOption { value: string; } -const mapStateToProps = ({ router, resources }: RootState): ProcessLogPanelRootDataProps => { - const pathname = router.location ? router.location.pathname : ''; - const match = matchProcessLogRoute(pathname); - const uuid = match ? match.params.id : ''; +const mapStateToProps = (state: RootState): ProcessLogPanelRootDataProps => { + const { resources, processLogsPanel } = state; + const uuid = getProcessLogsPanelCurrentUuid(state) || ''; return { process: getProcess(uuid)(resources), - selectedFilter: SELECT_OPTIONS[0], - filters: SELECT_OPTIONS, - lines + selectedFilter: { label: processLogsPanel.selectedFilter, value: processLogsPanel.selectedFilter }, + filters: processLogsPanel.filters.map(filter => ({ label: filter, value: filter })), + lines: getProcessPanelLogs(processLogsPanel) }; }; const mapDispatchToProps = (dispatch: Dispatch): ProcessLogPanelRootActionProps => ({ - onContextMenu: (event: React.MouseEvent) => { - dispatch(openProcessContextMenu(event)); + onContextMenu: (event, process) => { + dispatch(openProcessContextMenu(event, process)); + }, + onChange: filter => { + dispatch(setProcessLogsPanelFilter(filter.value)); }, - onChange: (filter: FilterOption) => { return; } + navigateToLogCollection: (uuid: string) => { + dispatch(navigateToLogCollection(uuid)); + } }); export const ProcessLogPanel = connect(mapStateToProps, mapDispatchToProps)(ProcessLogPanelRoot);