Fixed latest input numbers, removed extra code, fixed typings

main
Boris Sekachev 6 years ago
parent d789087dd3
commit eeee914a9d

@ -9,7 +9,6 @@ import Checkbox, { CheckboxChangeEvent } from 'antd/lib/checkbox';
import Select, { SelectValue } from 'antd/lib/select'; import Select, { SelectValue } from 'antd/lib/select';
import Radio, { RadioChangeEvent } from 'antd/lib/radio'; import Radio, { RadioChangeEvent } from 'antd/lib/radio';
import Input from 'antd/lib/input'; import Input from 'antd/lib/input';
import InputNumber from 'antd/lib/input-number';
interface InputElementParameters { interface InputElementParameters {
attrID: number; attrID: number;
@ -17,7 +16,6 @@ interface InputElementParameters {
values: string[]; values: string[];
currentValue: string; currentValue: string;
onChange(value: string): void; onChange(value: string): void;
ref: React.RefObject<Input | InputNumber>;
} }
function renderInputElement(parameters: InputElementParameters): JSX.Element { function renderInputElement(parameters: InputElementParameters): JSX.Element {
@ -27,7 +25,6 @@ function renderInputElement(parameters: InputElementParameters): JSX.Element {
values, values,
currentValue, currentValue,
onChange, onChange,
ref,
} = parameters; } = parameters;
const renderCheckbox = (): JSX.Element => ( const renderCheckbox = (): JSX.Element => (
@ -114,7 +111,6 @@ function renderInputElement(parameters: InputElementParameters): JSX.Element {
} }
}} }}
onKeyDown={handleKeydown} onKeyDown={handleKeydown}
ref={ref as React.RefObject<Input>}
/> />
</div> </div>
</> </>
@ -259,8 +255,6 @@ interface Props {
function AttributeEditor(props: Props): JSX.Element { function AttributeEditor(props: Props): JSX.Element {
const { attribute, currentValue, onChange } = props; const { attribute, currentValue, onChange } = props;
const { inputType, values, id: attrID } = attribute; const { inputType, values, id: attrID } = attribute;
const ref = inputType === 'number' ? React.createRef<InputNumber>()
: React.createRef<Input>();
return ( return (
<div> <div>
@ -268,7 +262,6 @@ function AttributeEditor(props: Props): JSX.Element {
<hr /> <hr />
{renderInputElement({ {renderInputElement({
attrID, attrID,
ref,
inputType, inputType,
currentValue, currentValue,
values, values,

@ -4,20 +4,16 @@
import React from 'react'; import React from 'react';
import { import { Row, Col } from 'antd/lib/grid';
Row, import Select from 'antd/lib/select';
Col, import Button from 'antd/lib/button';
Select, import InputNumber from 'antd/lib/input-number';
Button, import Radio, { RadioChangeEvent } from 'antd/lib/radio';
InputNumber,
Radio,
} from 'antd';
import { RadioChangeEvent } from 'antd/lib/radio';
import Text from 'antd/lib/typography/Text'; import Text from 'antd/lib/typography/Text';
import { RectDrawingMethod } from 'cvat-canvas'; import { RectDrawingMethod } from 'cvat-canvas';
import { ShapeType } from 'reducers/interfaces'; import { ShapeType } from 'reducers/interfaces';
import { clamp } from 'utils/math';
interface Props { interface Props {
shapeType: ShapeType; shapeType: ShapeType;
@ -117,7 +113,15 @@ function DrawShapePopoverComponent(props: Props): JSX.Element {
</Col> </Col>
<Col span={10}> <Col span={10}>
<InputNumber <InputNumber
onChange={onChangePoints} onChange={(value: number | undefined) => {
if (typeof (value) === 'number') {
onChangePoints(Math.floor(
clamp(value, minimumPoints, Number.MAX_SAFE_INTEGER),
));
} else if (!value) {
onChangePoints(undefined);
}
}}
className='cvat-draw-shape-popover-points-selector' className='cvat-draw-shape-popover-points-selector'
min={minimumPoints} min={minimumPoints}
value={numberOfPoints} value={numberOfPoints}

@ -4,26 +4,21 @@
import React from 'react'; import React from 'react';
import { import { Row, Col } from 'antd/lib/grid';
Row, import Icon from 'antd/lib/icon';
Col, import Select from 'antd/lib/select';
Icon, import Radio, { RadioChangeEvent } from 'antd/lib/radio';
Select, import Checkbox, { CheckboxChangeEvent } from 'antd/lib/checkbox';
Radio, import Input from 'antd/lib/input';
Input, import InputNumber from 'antd/lib/input-number';
Collapse, import Collapse from 'antd/lib/collapse';
Checkbox, import Dropdown from 'antd/lib/dropdown';
InputNumber, import Menu from 'antd/lib/menu';
Dropdown, import Button from 'antd/lib/button';
Menu, import Modal from 'antd/lib/modal';
Button, import Popover from 'antd/lib/popover';
Modal,
Popover,
} from 'antd';
import Text from 'antd/lib/typography/Text'; import Text from 'antd/lib/typography/Text';
import { RadioChangeEvent } from 'antd/lib/radio';
import { CheckboxChangeEvent } from 'antd/lib/checkbox';
import ColorChanger from 'components/annotation-page/standard-workspace/objects-side-bar/color-changer'; import ColorChanger from 'components/annotation-page/standard-workspace/objects-side-bar/color-changer';
import { import {
@ -36,9 +31,8 @@ import {
ForegroundIcon, ForegroundIcon,
} from 'icons'; } from 'icons';
import { import { ObjectType, ShapeType } from 'reducers/interfaces';
ObjectType, ShapeType, import { clamp } from 'utils/math';
} from 'reducers/interfaces';
function ItemMenu( function ItemMenu(
serverID: number | undefined, serverID: number | undefined,
@ -463,7 +457,7 @@ function ItemAttributeComponent(props: ItemAttributeComponentProps): JSX.Element
} }
if (attrInputType === 'number') { if (attrInputType === 'number') {
const [min, max, step] = attrValues; const [min, max, step] = attrValues.map((value: string): number => +value);
return ( return (
<> <>
@ -476,15 +470,17 @@ function ItemAttributeComponent(props: ItemAttributeComponentProps): JSX.Element
<InputNumber <InputNumber
size='small' size='small'
onChange={(value: number | undefined): void => { onChange={(value: number | undefined): void => {
if (typeof (value) !== 'undefined') { if (typeof (value) === 'number') {
changeAttribute(attrID, `${value}`); changeAttribute(
attrID, `${clamp(value, min, max)}`,
);
} }
}} }}
value={+attrValue} value={+attrValue}
className='cvat-object-item-number-attribute' className='cvat-object-item-number-attribute'
min={+min} min={min}
max={+max} max={max}
step={+step} step={step}
/> />
</Col> </Col>
</> </>

@ -17,8 +17,8 @@ interface Props {
frameNumber: number; frameNumber: number;
propagateObject(): void; propagateObject(): void;
cancel(): void; cancel(): void;
changePropagateFrames(value: number | undefined): void; changePropagateFrames(value: number): void;
changeUpToFrame(value: number | undefined): void; changeUpToFrame(value: number): void;
} }
export default function PropagateConfirmComponent(props: Props): JSX.Element { export default function PropagateConfirmComponent(props: Props): JSX.Element {

@ -19,7 +19,7 @@ interface Props {
frameNumber: number; frameNumber: number;
inputFrameRef: React.RefObject<InputNumber>; inputFrameRef: React.RefObject<InputNumber>;
onSliderChange(value: SliderValue): void; onSliderChange(value: SliderValue): void;
onInputChange(value: number | undefined): void; onInputChange(value: number): void;
onURLIconClick(): void; onURLIconClick(): void;
} }
@ -34,7 +34,7 @@ function PlayerNavigation(props: Props): JSX.Element {
onURLIconClick, onURLIconClick,
} = props; } = props;
const [frameInputValue, setFrameInputValue] = useState<number | undefined>(frameNumber); const [frameInputValue, setFrameInputValue] = useState<number>(frameNumber);
if (frameNumber !== frameInputValue) { if (frameNumber !== frameInputValue) {
setFrameInputValue(frameNumber); setFrameInputValue(frameNumber);
} }

@ -36,7 +36,7 @@ interface Props {
onFirstFrame(): void; onFirstFrame(): void;
onLastFrame(): void; onLastFrame(): void;
onSliderChange(value: SliderValue): void; onSliderChange(value: SliderValue): void;
onInputChange(value: number | undefined): void; onInputChange(value: number): void;
onURLIconClick(): void; onURLIconClick(): void;
onUndoClick(): void; onUndoClick(): void;
onRedoClick(): void; onRedoClick(): void;

@ -145,15 +145,9 @@ class DrawShapePopoverContainer extends React.PureComponent<Props, State> {
}; };
private onChangePoints = (value: number | undefined): void => { private onChangePoints = (value: number | undefined): void => {
if (typeof (value) === 'undefined') { this.setState({
this.setState({ numberOfPoints: value,
numberOfPoints: value, });
});
} else if (typeof (value) === 'number') {
this.setState({
numberOfPoints: Math.max(value, this.minimumPoints),
});
}
}; };
private onChangeLabel = (value: string): void => { private onChangeLabel = (value: string): void => {

@ -13,7 +13,6 @@ import {
import { CombinedState } from 'reducers/interfaces'; import { CombinedState } from 'reducers/interfaces';
import PropagateConfirmComponent from 'components/annotation-page/standard-workspace/propagate-confirm'; import PropagateConfirmComponent from 'components/annotation-page/standard-workspace/propagate-confirm';
import { clamp } from 'utils/math';
interface StateToProps { interface StateToProps {
objectState: any | null; objectState: any | null;

@ -403,7 +403,7 @@ class AnnotationTopBarContainer extends React.PureComponent<Props> {
onChangeFrame(value as number); onChangeFrame(value as number);
}; };
private onChangePlayerInputValue = (value: number | undefined): void => { private onChangePlayerInputValue = (value: number): void => {
const { const {
onSwitchPlay, onSwitchPlay,
onChangeFrame, onChangeFrame,

Loading…
Cancel
Save