You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.7 KiB
TypeScript

// Copyright (C) 2020-2021 Intel Corporation
//
// SPDX-License-Identifier: MIT
import { connect } from 'react-redux';
import { Task, TasksQuery, CombinedState } from 'reducers/interfaces';
import TasksPageComponent from 'components/tasks-page/tasks-page';
import { getTasksAsync, hideEmptyTasks, importTaskAsync } from 'actions/tasks-actions';
interface StateToProps {
tasksFetching: boolean;
gettingQuery: TasksQuery;
numberOfTasks: number;
numberOfVisibleTasks: number;
numberOfHiddenTasks: number;
taskImporting: boolean;
}
interface DispatchToProps {
onGetTasks: (gettingQuery: TasksQuery) => void;
hideEmptyTasks: (hideEmpty: boolean) => void;
onImportTask: (file: File) => void;
}
function mapStateToProps(state: CombinedState): StateToProps {
const { tasks } = state;
return {
tasksFetching: state.tasks.fetching,
gettingQuery: tasks.gettingQuery,
numberOfTasks: state.tasks.count,
numberOfVisibleTasks: state.tasks.current.length,
numberOfHiddenTasks: tasks.hideEmpty ?
tasks.current.filter((task: Task): boolean => !task.instance.jobs.length).length :
0,
taskImporting: state.tasks.importing,
};
}
function mapDispatchToProps(dispatch: any): DispatchToProps {
return {
onGetTasks: (query: TasksQuery): void => {
dispatch(getTasksAsync(query));
},
hideEmptyTasks: (hideEmpty: boolean): void => {
dispatch(hideEmptyTasks(hideEmpty));
},
onImportTask: (file: File): void => {
dispatch(importTaskAsync(file));
},
};
}
export default connect(mapStateToProps, mapDispatchToProps)(TasksPageComponent);