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.
85 lines
1.7 KiB
TypeScript
85 lines
1.7 KiB
TypeScript
import React, { Component } from 'react';
|
|
|
|
import { Layout } from 'antd';
|
|
|
|
import DashboardHeader from './header/dashboard-header';
|
|
import DashboardContent from './content/dashboard-content';
|
|
import DashboardFooter from './footer/dashboard-footer';
|
|
|
|
import './dashboard.scss';
|
|
|
|
interface DashboardState {
|
|
tasks: [];
|
|
}
|
|
|
|
class Dashboard extends Component<any, DashboardState> {
|
|
constructor(props: any) {
|
|
super(props);
|
|
|
|
this.state = { tasks: [] };
|
|
}
|
|
|
|
componentDidMount() {
|
|
this.getTasks();
|
|
}
|
|
|
|
render() {
|
|
return (
|
|
<Layout className="layout">
|
|
<DashboardHeader
|
|
onSearch={ this.getTasks }>
|
|
</DashboardHeader>
|
|
|
|
<DashboardContent
|
|
tasks={ this.state.tasks }
|
|
deleteTask={ this.deleteTask }>
|
|
</DashboardContent>
|
|
|
|
<DashboardFooter
|
|
tasksCount={ (this.state.tasks as any)['count'] }
|
|
onPageChange={ this.onPageChange }>
|
|
</DashboardFooter>
|
|
</Layout>
|
|
);
|
|
}
|
|
|
|
private getTasks = (query?: string) => {
|
|
const queryObject = {
|
|
search: query
|
|
};
|
|
|
|
(window as any).cvat.tasks.get(query ? queryObject : {}).then(
|
|
(tasks: any) => {
|
|
this.setState({ tasks });
|
|
},
|
|
(error: any) => {
|
|
console.log(error);
|
|
}
|
|
);
|
|
}
|
|
|
|
private onPageChange = (page: number) => {
|
|
(window as any).cvat.tasks.get({ page }).then(
|
|
(tasks: any) => {
|
|
this.setState({ tasks });
|
|
},
|
|
(error: any) => {
|
|
console.log(error);
|
|
}
|
|
);
|
|
}
|
|
|
|
private deleteTask = (task: any) => {
|
|
task.delete().then(
|
|
(_deleted: any) => {
|
|
this.getTasks();
|
|
},
|
|
(error: any) => {
|
|
console.log(error);
|
|
}
|
|
);
|
|
}
|
|
}
|
|
|
|
export default Dashboard;
|