// Copyright (C) 2019-2021 Intel Corporation // // SPDX-License-Identifier: MIT import './styles.scss'; import React, { useEffect } from 'react'; import { useSelector, useDispatch } from 'react-redux'; import { useHistory, useParams } from 'react-router'; import Spin from 'antd/lib/spin'; import { Row, Col } from 'antd/lib/grid'; import Result from 'antd/lib/result'; import Button from 'antd/lib/button'; import Title from 'antd/lib/typography/Title'; import { PlusOutlined } from '@ant-design/icons'; import { CombinedState, Task } from 'reducers/interfaces'; import { getProjectsAsync } from 'actions/projects-actions'; import { cancelInferenceAsync } from 'actions/models-actions'; import ExportDatasetModal from 'components/export-dataset/export-dataset-modal'; import TaskItem from 'components/tasks-page/task-item'; import MoveTaskModal from 'components/move-task-modal/move-task-modal'; import ModelRunnerDialog from 'components/model-runner-modal/model-runner-dialog'; import DetailsComponent from './details'; import ProjectTopBar from './top-bar'; interface ParamType { id: string; } export default function ProjectPageComponent(): JSX.Element { const id = +useParams().id; const dispatch = useDispatch(); const history = useHistory(); const projects = useSelector((state: CombinedState) => state.projects.current).map((project) => project.instance); const projectsFetching = useSelector((state: CombinedState) => state.projects.fetching); const deletes = useSelector((state: CombinedState) => state.projects.activities.deletes); const taskDeletes = useSelector((state: CombinedState) => state.tasks.activities.deletes); const tasksActiveInferences = useSelector((state: CombinedState) => state.models.inferences); const tasks = useSelector((state: CombinedState) => state.tasks.current); const [project] = projects.filter((_project) => _project.id === id); const projectSubsets = ['']; if (project) projectSubsets.push(...project.subsets); const deleteActivity = project && id in deletes ? deletes[id] : null; useEffect(() => { dispatch( getProjectsAsync({ id, }), ); }, [id, dispatch]); if (deleteActivity) { history.push('/projects'); } if (projectsFetching) { return ; } if (!project) { return ( ); } return ( Tasks {projectSubsets.map((subset: string) => ( {subset && {subset}} {tasks .filter((task) => task.instance.projectId === project.id && task.instance.subset === subset) .map((task: Task) => ( ))} ); }