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.
87 lines
2.6 KiB
TypeScript
87 lines
2.6 KiB
TypeScript
// Copyright (C) 2020 Intel Corporation
|
|
//
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
import React from 'react';
|
|
|
|
import Modal from 'antd/lib/modal';
|
|
import InputNumber from 'antd/lib/input-number';
|
|
import Text from 'antd/lib/typography/Text';
|
|
import { clamp } from 'utils/math';
|
|
|
|
interface Props {
|
|
visible: boolean;
|
|
propagateFrames: number;
|
|
propagateUpToFrame: number;
|
|
stopFrame: number;
|
|
frameNumber: number;
|
|
propagateObject(): void;
|
|
cancel(): void;
|
|
changePropagateFrames(value: number | undefined): void;
|
|
changeUpToFrame(value: number | undefined): void;
|
|
}
|
|
|
|
export default function PropagateConfirmComponent(props: Props): JSX.Element {
|
|
const {
|
|
visible,
|
|
propagateFrames,
|
|
propagateUpToFrame,
|
|
stopFrame,
|
|
frameNumber,
|
|
propagateObject,
|
|
changePropagateFrames,
|
|
changeUpToFrame,
|
|
cancel,
|
|
} = props;
|
|
|
|
const minPropagateFrames = 1;
|
|
|
|
return (
|
|
<Modal
|
|
okType='primary'
|
|
okText='Yes'
|
|
cancelText='Cancel'
|
|
onOk={propagateObject}
|
|
onCancel={cancel}
|
|
title='Confirm propagation'
|
|
visible={visible}
|
|
>
|
|
<div className='cvat-propagate-confirm'>
|
|
<Text>Do you want to make a copy of the object on</Text>
|
|
<InputNumber
|
|
size='small'
|
|
min={minPropagateFrames}
|
|
value={propagateFrames}
|
|
onChange={(value: number | undefined) => {
|
|
if (typeof (value) === 'number') {
|
|
changePropagateFrames(Math.floor(
|
|
clamp(value, minPropagateFrames, Number.MAX_SAFE_INTEGER),
|
|
));
|
|
}
|
|
}}
|
|
/>
|
|
{
|
|
propagateFrames > 1
|
|
? <Text> frames </Text>
|
|
: <Text> frame </Text>
|
|
}
|
|
<Text>up to the </Text>
|
|
<InputNumber
|
|
size='small'
|
|
value={propagateUpToFrame}
|
|
min={frameNumber + 1}
|
|
max={stopFrame}
|
|
onChange={(value: number | undefined) => {
|
|
if (typeof (value) === 'number') {
|
|
changeUpToFrame(Math.floor(
|
|
clamp(value, frameNumber + 1, stopFrame),
|
|
));
|
|
}
|
|
}}
|
|
/>
|
|
<Text>frame</Text>
|
|
</div>
|
|
</Modal>
|
|
);
|
|
}
|