// Copyright (C) 2020-2021 Intel Corporation // // SPDX-License-Identifier: MIT import React from 'react'; import Menu from 'antd/lib/menu'; import Modal from 'antd/lib/modal'; import Text from 'antd/lib/typography/Text'; import { InputNumber, Tooltip, Checkbox, Collapse, } from 'antd'; // eslint-disable-next-line import/no-extraneous-dependencies import { MenuInfo } from 'rc-menu/lib/interface'; import LoadSubmenu from 'components/actions-menu/load-submenu'; import { DimensionType } from '../../../reducers/interfaces'; interface Props { taskMode: string; loaders: any[]; dumpers: any[]; loadActivity: string | null; isReviewer: boolean; jobInstance: any; onClickMenu(params: MenuInfo): void; onUploadAnnotations(format: string, file: File): void; stopFrame: number; removeAnnotations(startnumber: number, endnumber: number, delTrackKeyframesOnly:boolean): void; setForceExitAnnotationFlag(forceExit: boolean): void; saveAnnotations(jobInstance: any, afterSave?: () => void): void; } export enum Actions { LOAD_JOB_ANNO = 'load_job_anno', EXPORT_TASK_DATASET = 'export_task_dataset', REMOVE_ANNO = 'remove_anno', OPEN_TASK = 'open_task', REQUEST_REVIEW = 'request_review', SUBMIT_REVIEW = 'submit_review', FINISH_JOB = 'finish_job', RENEW_JOB = 'renew_job', } export default function AnnotationMenuComponent(props: Props): JSX.Element { const { loaders, loadActivity, isReviewer, jobInstance, stopFrame, onClickMenu, onUploadAnnotations, removeAnnotations, setForceExitAnnotationFlag, saveAnnotations, } = props; const jobStatus = jobInstance.status; const taskID = jobInstance.task.id; function onClickMenuWrapper(params: MenuInfo): void { function checkUnsavedChanges(_params: MenuInfo): void { if (jobInstance.annotations.hasUnsavedChanges()) { Modal.confirm({ title: 'The job has unsaved annotations', content: 'Would you like to save changes before continue?', className: 'cvat-modal-content-save-job', okButtonProps: { children: 'Save', }, cancelButtonProps: { children: 'No', }, onOk: () => { saveAnnotations(jobInstance, () => onClickMenu(_params)); }, onCancel: () => { // do not ask leave confirmation setForceExitAnnotationFlag(true); setTimeout(() => { onClickMenu(_params); }); }, }); } else { onClickMenu(_params); } } if (params.key === Actions.REMOVE_ANNO) { let removeFrom: number; let removeUpTo: number; let removeOnlyKeyframes = false; const { Panel } = Collapse; Modal.confirm({ title: 'Remove Annotations', content: (