// Copyright (C) 2020 Intel Corporation // // SPDX-License-Identifier: MIT import React from 'react'; import Menu, { ClickParam } from 'antd/lib/menu'; import Modal from 'antd/lib/modal'; import DumpSubmenu from 'components/actions-menu/dump-submenu'; import LoadSubmenu from 'components/actions-menu/load-submenu'; import ExportSubmenu from 'components/actions-menu/export-submenu'; interface Props { taskMode: string; loaders: any[]; dumpers: any[]; loadActivity: string | null; dumpActivities: string[] | null; exportActivities: string[] | null; taskID: number; onClickMenu(params: ClickParam, file?: File): void; } export enum Actions { DUMP_TASK_ANNO = 'dump_task_anno', LOAD_JOB_ANNO = 'load_job_anno', EXPORT_TASK_DATASET = 'export_task_dataset', REMOVE_ANNO = 'remove_anno', OPEN_TASK = 'open_task', } export default function AnnotationMenuComponent(props: Props): JSX.Element { const { taskMode, loaders, dumpers, onClickMenu, loadActivity, dumpActivities, exportActivities, taskID, } = props; let latestParams: ClickParam | null = null; function onClickMenuWrapper(params: ClickParam | null, file?: File): void { const copyParams = params || latestParams; if (!copyParams) { return; } latestParams = params; if (copyParams.keyPath.length === 2) { const [, action] = copyParams.keyPath; if (action === Actions.LOAD_JOB_ANNO) { if (file) { Modal.confirm({ title: 'Current annotation will be lost', content: 'You are going to upload new annotations to this job. Continue?', onOk: () => { onClickMenu(copyParams, file); }, okButtonProps: { type: 'danger', }, okText: 'Update', }); } } else { onClickMenu(copyParams); } } else if (copyParams.key === Actions.REMOVE_ANNO) { Modal.confirm({ title: 'All annotations will be removed', content: 'You are going to remove all annotations from the client. ' + 'It will stay on the server till you save a job. Continue?', onOk: () => { onClickMenu(copyParams); }, okButtonProps: { type: 'danger', }, okText: 'Delete', }); } else { onClickMenu(copyParams); } } return (
); }