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.

206 lines
6.8 KiB
TypeScript

// Copyright (C) 2020-2022 Intel Corporation
// Copyright (C) 2023 CVAT.ai Corporation
//
// SPDX-License-Identifier: MIT
import React from 'react';
import Input from 'antd/lib/input';
import { Col, Row } from 'antd/lib/grid';
import {
ActiveControl, PredictorState, ToolsBlockerState, Workspace,
} from 'reducers';
import LeftGroup from './left-group';
import PlayerButtons from './player-buttons';
import PlayerNavigation from './player-navigation';
import RightGroup from './right-group';
interface Props {
playing: boolean;
saving: boolean;
frameNumber: number;
frameFilename: string;
frameDeleted: boolean;
inputFrameRef: React.RefObject<Input>;
startFrame: number;
stopFrame: number;
undoAction?: string;
redoAction?: string;
workspace: Workspace;
saveShortcut: string;
undoShortcut: string;
redoShortcut: string;
drawShortcut: string;
switchToolsBlockerShortcut: string;
playPauseShortcut: string;
deleteFrameShortcut: string;
nextFrameShortcut: string;
previousFrameShortcut: string;
forwardShortcut: string;
backwardShortcut: string;
prevButtonType: string;
nextButtonType: string;
focusFrameInputShortcut: string;
predictor: PredictorState;
isTrainingActive: boolean;
activeControl: ActiveControl;
toolsBlockerState: ToolsBlockerState;
changeWorkspace(workspace: Workspace): void;
switchPredictor(predictorEnabled: boolean): void;
showStatistics(): void;
showFilters(): void;
onSwitchPlay(): void;
onSaveAnnotation(): void;
onPrevFrame(): void;
onNextFrame(): void;
onForward(): void;
onBackward(): void;
onFirstFrame(): void;
onLastFrame(): void;
setPrevButtonType(type: 'regular' | 'filtered' | 'empty'): void;
setNextButtonType(type: 'regular' | 'filtered' | 'empty'): void;
onSliderChange(value: number): void;
onInputChange(value: number): void;
onURLIconClick(): void;
onUndoClick(): void;
onRedoClick(): void;
onFinishDraw(): void;
onSwitchToolsBlockerState(): void;
onDeleteFrame(): void;
onRestoreFrame(): void;
switchNavigationBlocked(blocked: boolean): void;
jobInstance: any;
}
export default function AnnotationTopBarComponent(props: Props): JSX.Element {
const {
saving,
undoAction,
redoAction,
playing,
frameNumber,
frameFilename,
frameDeleted,
inputFrameRef,
startFrame,
stopFrame,
workspace,
saveShortcut,
undoShortcut,
redoShortcut,
drawShortcut,
switchToolsBlockerShortcut,
playPauseShortcut,
deleteFrameShortcut,
nextFrameShortcut,
previousFrameShortcut,
forwardShortcut,
backwardShortcut,
prevButtonType,
nextButtonType,
predictor,
focusFrameInputShortcut,
activeControl,
toolsBlockerState,
showStatistics,
switchPredictor,
showFilters,
changeWorkspace,
onSwitchPlay,
onSaveAnnotation,
onPrevFrame,
onNextFrame,
onForward,
onBackward,
onFirstFrame,
onLastFrame,
setPrevButtonType,
setNextButtonType,
onSliderChange,
onInputChange,
onURLIconClick,
onUndoClick,
onRedoClick,
onFinishDraw,
onSwitchToolsBlockerState,
onDeleteFrame,
onRestoreFrame,
switchNavigationBlocked,
jobInstance,
isTrainingActive,
} = props;
return (
<Row justify='space-between'>
<LeftGroup
saving={saving}
undoAction={undoAction}
redoAction={redoAction}
saveShortcut={saveShortcut}
undoShortcut={undoShortcut}
redoShortcut={redoShortcut}
activeControl={activeControl}
drawShortcut={drawShortcut}
switchToolsBlockerShortcut={switchToolsBlockerShortcut}
toolsBlockerState={toolsBlockerState}
onSaveAnnotation={onSaveAnnotation}
onUndoClick={onUndoClick}
onRedoClick={onRedoClick}
onFinishDraw={onFinishDraw}
onSwitchToolsBlockerState={onSwitchToolsBlockerState}
/>
<Col className='cvat-annotation-header-player-group'>
<Row align='middle'>
<PlayerButtons
playing={playing}
playPauseShortcut={playPauseShortcut}
deleteFrameShortcut={deleteFrameShortcut}
nextFrameShortcut={nextFrameShortcut}
previousFrameShortcut={previousFrameShortcut}
forwardShortcut={forwardShortcut}
backwardShortcut={backwardShortcut}
prevButtonType={prevButtonType}
nextButtonType={nextButtonType}
onPrevFrame={onPrevFrame}
onNextFrame={onNextFrame}
onForward={onForward}
onBackward={onBackward}
onFirstFrame={onFirstFrame}
onLastFrame={onLastFrame}
onSwitchPlay={onSwitchPlay}
setPrevButton={setPrevButtonType}
setNextButton={setNextButtonType}
/>
<PlayerNavigation
startFrame={startFrame}
stopFrame={stopFrame}
playing={playing}
frameNumber={frameNumber}
frameFilename={frameFilename}
frameDeleted={frameDeleted}
deleteFrameShortcut={deleteFrameShortcut}
focusFrameInputShortcut={focusFrameInputShortcut}
inputFrameRef={inputFrameRef}
onSliderChange={onSliderChange}
onInputChange={onInputChange}
onURLIconClick={onURLIconClick}
onDeleteFrame={onDeleteFrame}
onRestoreFrame={onRestoreFrame}
switchNavigationBlocked={switchNavigationBlocked}
/>
</Row>
</Col>
<RightGroup
predictor={predictor}
workspace={workspace}
switchPredictor={switchPredictor}
jobInstance={jobInstance}
changeWorkspace={changeWorkspace}
showStatistics={showStatistics}
isTrainingActive={isTrainingActive}
showFilters={showFilters}
/>
</Row>
);
}