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.
122 lines
3.8 KiB
TypeScript
122 lines
3.8 KiB
TypeScript
import React from 'react';
|
|
import ReactDOM from 'react-dom';
|
|
import { connect, Provider } from 'react-redux';
|
|
|
|
import CVATApplication from './components/cvat-app';
|
|
|
|
import createRootReducer from './reducers/root-reducer';
|
|
import createCVATStore, { getCVATStore } from './store';
|
|
|
|
import { authorizedAsync } from './actions/auth-actions';
|
|
import { getFormatsAsync } from './actions/formats-actions';
|
|
import { checkPluginsAsync } from './actions/plugins-actions';
|
|
import { getUsersAsync } from './actions/users-actions';
|
|
import {
|
|
resetErrors,
|
|
resetMessages,
|
|
} from './actions/notification-actions';
|
|
|
|
import {
|
|
CombinedState,
|
|
NotificationsState,
|
|
} from './reducers/interfaces';
|
|
|
|
createCVATStore(createRootReducer);
|
|
const cvatStore = getCVATStore();
|
|
|
|
interface StateToProps {
|
|
pluginsInitialized: boolean;
|
|
pluginsFetching: boolean;
|
|
userInitialized: boolean;
|
|
usersInitialized: boolean;
|
|
usersFetching: boolean;
|
|
formatsInitialized: boolean;
|
|
formatsFetching: boolean;
|
|
installedAutoAnnotation: boolean;
|
|
installedTFSegmentation: boolean;
|
|
installedTFAnnotation: boolean;
|
|
notifications: NotificationsState;
|
|
user: any;
|
|
}
|
|
|
|
interface DispatchToProps {
|
|
loadFormats: () => void;
|
|
verifyAuthorized: () => void;
|
|
loadUsers: () => void;
|
|
initPlugins: () => void;
|
|
resetErrors: () => void;
|
|
resetMessages: () => void;
|
|
}
|
|
|
|
function mapStateToProps(state: CombinedState): StateToProps {
|
|
const { plugins } = state;
|
|
const { auth } = state;
|
|
const { formats } = state;
|
|
const { users } = state;
|
|
|
|
return {
|
|
userInitialized: auth.initialized,
|
|
pluginsInitialized: plugins.initialized,
|
|
pluginsFetching: plugins.fetching,
|
|
usersInitialized: users.initialized,
|
|
usersFetching: users.fetching,
|
|
formatsInitialized: formats.initialized,
|
|
formatsFetching: formats.fetching,
|
|
installedAutoAnnotation: plugins.plugins.AUTO_ANNOTATION,
|
|
installedTFSegmentation: plugins.plugins.TF_SEGMENTATION,
|
|
installedTFAnnotation: plugins.plugins.TF_ANNOTATION,
|
|
notifications: {...state.notifications},
|
|
user: auth.user,
|
|
};
|
|
}
|
|
|
|
function mapDispatchToProps(dispatch: any): DispatchToProps {
|
|
return {
|
|
loadFormats: (): void => dispatch(getFormatsAsync()),
|
|
verifyAuthorized: (): void => dispatch(authorizedAsync()),
|
|
initPlugins: (): void => dispatch(checkPluginsAsync()),
|
|
loadUsers: (): void => dispatch(getUsersAsync()),
|
|
resetErrors: (): void => dispatch(resetErrors()),
|
|
resetMessages: (): void => dispatch(resetMessages()),
|
|
};
|
|
}
|
|
|
|
function reduxAppWrapper(props: StateToProps & DispatchToProps) {
|
|
return (
|
|
<CVATApplication
|
|
initPlugins={props.initPlugins}
|
|
loadFormats={props.loadFormats}
|
|
loadUsers={props.loadUsers}
|
|
verifyAuthorized={props.verifyAuthorized}
|
|
resetErrors={props.resetErrors}
|
|
resetMessages={props.resetMessages}
|
|
userInitialized={props.userInitialized}
|
|
pluginsInitialized={props.pluginsInitialized}
|
|
pluginsFetching={props.pluginsFetching}
|
|
usersInitialized={props.usersInitialized}
|
|
usersFetching={props.usersFetching}
|
|
formatsInitialized={props.formatsInitialized}
|
|
formatsFetching={props.formatsFetching}
|
|
installedAutoAnnotation={props.installedAutoAnnotation}
|
|
installedTFSegmentation={props.installedTFSegmentation}
|
|
installedTFAnnotation={props.installedTFAnnotation}
|
|
notifications={props.notifications}
|
|
user={props.user}
|
|
/>
|
|
)
|
|
}
|
|
|
|
const ReduxAppWrapper = connect(
|
|
mapStateToProps,
|
|
mapDispatchToProps,
|
|
)(reduxAppWrapper);
|
|
|
|
ReactDOM.render(
|
|
(
|
|
<Provider store={cvatStore}>
|
|
<ReduxAppWrapper/>
|
|
</Provider>
|
|
),
|
|
document.getElementById('root')
|
|
)
|