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.

60 lines
1.3 KiB
TypeScript

import React from 'react';
import { connect } from 'react-redux';
import { withRouter } from 'react-router-dom';
import { RouteComponentProps } from 'react-router';
import AnnotationPageComponent from 'components/annotation-page/annotation-page';
import { getJobAsync } from 'actions/annotation-actions';
import {
CombinedState,
} from 'reducers/interfaces';
type OwnProps = RouteComponentProps<{
tid: string;
jid: string;
}>;
interface StateToProps {
jobInstance: any | null | undefined;
fetching: boolean;
}
interface DispatchToProps {
getJob(): void;
}
function mapStateToProps(state: CombinedState): StateToProps {
const { annotation } = state;
return {
jobInstance: annotation.jobInstance,
fetching: annotation.jobFetching,
};
}
function mapDispatchToProps(dispatch: any, own: OwnProps): DispatchToProps {
const { params } = own.match;
const taskID = +params.tid;
const jobID = +params.jid;
return {
getJob(): void {
dispatch(getJobAsync(taskID, jobID));
},
};
}
function AnnotationPageContainer(props: StateToProps & DispatchToProps): JSX.Element {
return (
<AnnotationPageComponent {...props} />
);
}
export default withRouter(
connect(
mapStateToProps,
mapDispatchToProps,
)(AnnotationPageContainer),
);