Skip to content

Commit

Permalink
Merged develop
Browse files Browse the repository at this point in the history
  • Loading branch information
bsekachev committed Nov 17, 2020
2 parents 5bfe7cb + 414f011 commit 8e10e8e
Show file tree
Hide file tree
Showing 8 changed files with 80 additions and 78 deletions.
5 changes: 4 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed

- Django templates for email and user guide (<https://github.com/openvinotoolkit/cvat/pull/2412>)
- Saving relative paths in dummy chunks instead of absolute(<https://github.com/openvinotoolkit/cvat/pull/2424>)
- Saving relative paths in dummy chunks instead of absolute (<https://github.com/openvinotoolkit/cvat/pull/2424>)
- Objects with a specific label cannot be displayed if at least one tag with the label exist (<https://github.com/openvinotoolkit/cvat/pull/2435>)
- Wrong attribute can be removed in labels editor (<https://github.com/openvinotoolkit/cvat/pull/2436>)
- UI fails with the error "Cannot read property 'label' of undefined" (<https://github.com/openvinotoolkit/cvat/pull/2442>)
- Exception: "Value must be a user instance" (<https://github.com/openvinotoolkit/cvat/pull/2441>)

### Security
Expand Down
2 changes: 0 additions & 2 deletions Dockerfile.ui
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@ COPY cvat-canvas/package*.json /tmp/cvat-canvas/
COPY cvat-ui/package*.json /tmp/cvat-ui/
COPY cvat-data/package*.json /tmp/cvat-data/

RUN npm config set loglevel info

# Install cvat-data dependencies
WORKDIR /tmp/cvat-data/
RUN npm ci
Expand Down
53 changes: 26 additions & 27 deletions cvat-ui/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions cvat-ui/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "cvat-ui",
"version": "1.10.1",
"version": "1.10.4",
"description": "CVAT single-page application",
"main": "src/index.tsx",
"scripts": {
Expand Down Expand Up @@ -57,7 +57,7 @@
"@types/react-router-dom": "^5.1.6",
"@types/react-share": "^3.0.3",
"@types/redux-logger": "^3.0.8",
"antd": "^3.26.18",
"antd": "^3.26.19",
"copy-to-clipboard": "^3.3.1",
"cvat-canvas": "file:../cvat-canvas",
"cvat-core": "file:../cvat-core",
Expand Down
8 changes: 5 additions & 3 deletions cvat-ui/src/components/labels-editor/label-form.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ import ColorPicker from 'components/annotation-page/standard-workspace/objects-s
import { ColorizeIcon } from 'icons';
import patterns from 'utils/validation-patterns';
import consts from 'consts';
import { equalArrayHead, idGenerator, Label, Attribute } from './common';
import {
equalArrayHead, idGenerator, Label, Attribute,
} from './common';

export enum AttributeType {
SELECT = 'SELECT',
Expand Down Expand Up @@ -318,9 +320,9 @@ class LabelForm extends React.PureComponent<Props, {}> {
);
}

private renderAttribute = (key: number, index: number): JSX.Element => {
private renderAttribute = (key: number): JSX.Element => {
const { label, form } = this.props;
const attr = label && index < label.attributes.length ? label.attributes[index] : null;
const attr = label ? label.attributes.filter((_attr: any): boolean => _attr.id === key)[0] : null;

return (
<Form.Item key={key}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,10 @@ function mapStateToProps(state: CombinedState): StateToProps {
annotation: {
annotations: { activatedStateID, collapsed, states: objectStates },
canvas: {
contextMenu: { visible, top, left, type },
contextMenu: {
visible, top, left, type,
},
ready,
},
},
} = state;
Expand All @@ -33,7 +36,11 @@ function mapStateToProps(state: CombinedState): StateToProps {
activatedStateID,
collapsed: activatedStateID !== null ? collapsed[activatedStateID] : undefined,
objectStates,
visible,
visible:
activatedStateID !== null &&
visible &&
ready &&
objectStates.map((_state: any): number => _state.clientID).includes(activatedStateID),
left,
top,
type,
Expand Down Expand Up @@ -166,7 +173,9 @@ class CanvasContextMenuContainer extends React.PureComponent<Props, State> {

public render(): JSX.Element {
const { left, top } = this.state;
const { visible, activatedStateID, objectStates, type } = this.props;
const {
visible, activatedStateID, objectStates, type,
} = this.props;

return (
<>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { connect } from 'react-redux';
import { updateAnnotationsAsync } from 'actions/annotation-actions';

import LabelItemComponent from 'components/annotation-page/standard-workspace/objects-side-bar/label-item';
import { CombinedState } from 'reducers/interfaces';
import { CombinedState, ObjectType } from 'reducers/interfaces';

interface OwnProps {
labelID: number;
Expand Down Expand Up @@ -92,8 +92,8 @@ class LabelItemContainer extends React.PureComponent<Props, State> {
let statesLocked = true;

ownObjectStates.forEach((objectState: any) => {
const { lock } = objectState;
if (!lock) {
const { lock, objectType } = objectState;
if (!lock && objectType !== ObjectType.TAG) {
statesHidden = statesHidden && objectState.hidden;
statesLocked = statesLocked && objectState.lock;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ import copy from 'copy-to-clipboard';
import { connect } from 'react-redux';

import { LogType } from 'cvat-logger';
import { ActiveControl, CombinedState, ColorBy, ShapeType } from 'reducers/interfaces';
import {
ActiveControl, CombinedState, ColorBy, ShapeType,
} from 'reducers/interfaces';
import {
collapseObjectItems,
updateAnnotationsAsync,
Expand Down Expand Up @@ -83,40 +85,25 @@ function mapStateToProps(state: CombinedState, own: OwnProps): StateToProps {
const stateIDs = states.map((_state: any): number => _state.clientID);
const index = stateIDs.indexOf(clientID);

try {
const collapsedState =
typeof statesCollapsed[clientID] === 'undefined' ? initialCollapsed : statesCollapsed[clientID];

return {
objectState: states[index],
collapsed: collapsedState,
attributes: jobAttributes[states[index].label.id],
labels,
ready,
activeControl,
colorBy,
jobInstance,
frameNumber,
activated: activatedStateID === clientID,
minZLayer,
maxZLayer,
normalizedKeyMap,
aiToolsRef,
};
} catch (exception) {
// we have an exception here sometimes
// but I cannot understand when it happens and what is the root reason
// maybe this temporary hack helps us
const dataObject = {
index,
frameNumber,
clientID: own.clientID,
stateIDs,
};
throw new Error(
`${exception.toString()} in mapStateToProps of ObjectItemContainer. Data are ${JSON.stringify(dataObject)}`,
);
}
const collapsedState =
typeof statesCollapsed[clientID] === 'undefined' ? initialCollapsed : statesCollapsed[clientID];

return {
objectState: states[index],
collapsed: collapsedState,
attributes: jobAttributes[states[index].label.id],
labels,
ready,
activeControl,
colorBy,
jobInstance,
frameNumber,
activated: activatedStateID === clientID,
minZLayer,
maxZLayer,
normalizedKeyMap,
aiToolsRef,
};
}

function mapDispatchToProps(dispatch: any): DispatchToProps {
Expand Down Expand Up @@ -219,7 +206,9 @@ class ObjectItemContainer extends React.PureComponent<Props> {
};

private activate = (): void => {
const { activateObject, objectState, ready, activeControl } = this.props;
const {
activateObject, objectState, ready, activeControl,
} = this.props;

if (ready && activeControl === ActiveControl.CURSOR) {
activateObject(objectState.clientID);
Expand Down Expand Up @@ -324,7 +313,9 @@ class ObjectItemContainer extends React.PureComponent<Props> {
}

public render(): JSX.Element {
const { objectState, collapsed, labels, attributes, activated, colorBy, normalizedKeyMap } = this.props;
const {
objectState, collapsed, labels, attributes, activated, colorBy, normalizedKeyMap,
} = this.props;

let stateColor = '';
if (colorBy === ColorBy.INSTANCE) {
Expand Down

0 comments on commit 8e10e8e

Please sign in to comment.