From 7c5d71d228ed6cb800a8db09d2da1eb1a6c411af Mon Sep 17 00:00:00 2001 From: Snyk bot Date: Mon, 12 Apr 2021 09:54:43 +0300 Subject: [PATCH 1/8] fix: upgrade @ant-design/icons from 4.5.0 to 4.6.2 (#3081) Snyk has created this PR to upgrade @ant-design/icons from 4.5.0 to 4.6.2. See this package in npm: https://www.npmjs.com/package/@ant-design/icons See this project in Snyk: https://app.snyk.io/org/cvat/project/c1f463ee-3776-44c4-b0fa-cd2254d0a094?utm_source=github&utm_medium=upgrade-pr --- cvat-ui/package-lock.json | 44 ++++++++++++++++++--------------------- cvat-ui/package.json | 2 +- 2 files changed, 21 insertions(+), 25 deletions(-) diff --git a/cvat-ui/package-lock.json b/cvat-ui/package-lock.json index f4cc563d..e4a2972a 100644 --- a/cvat-ui/package-lock.json +++ b/cvat-ui/package-lock.json @@ -13,38 +13,39 @@ } }, "@ant-design/icons": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-4.5.0.tgz", - "integrity": "sha512-ZAKJcmr4DBV3NWr8wm2dCxNKN4eFrX+qCaPsuFejP6FRsf+m5OKxvCVi9bSp1lmKWeOI5yECAx5s0uFm4QHuPw==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-4.6.2.tgz", + "integrity": "sha512-QsBG2BxBYU/rxr2eb8b2cZ4rPKAPBpzAR+0v6rrZLp/lnyvflLH3tw1vregK+M7aJauGWjIGNdFmUfpAOtw25A==", "requires": { "@ant-design/colors": "^6.0.0", "@ant-design/icons-svg": "^4.0.0", "@babel/runtime": "^7.11.2", "classnames": "^2.2.6", - "insert-css": "^2.0.0", - "rc-util": "^5.0.1" + "rc-util": "^5.9.4" }, "dependencies": { - "@ant-design/colors": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-6.0.0.tgz", - "integrity": "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==", + "@babel/runtime": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", + "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", "requires": { - "@ctrl/tinycolor": "^3.4.0" + "regenerator-runtime": "^0.13.4" } }, - "@babel/runtime": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.9.tgz", - "integrity": "sha512-aY2kU+xgJ3dJ1eU6FMB9EH8dIe8dmusF1xEku52joLvw6eAFN0AI+WxCLDnpev2LEejWBAy2sBvBOBAjI3zmvA==", + "rc-util": { + "version": "5.9.8", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.9.8.tgz", + "integrity": "sha512-typLSHYGf5irvGLYQshs0Ra3aze086h0FhzsAkyirMunYZ7b3Te8gKa5PVaanoHaZa9sS6qx98BxgysoRP+6Tw==", "requires": { - "regenerator-runtime": "^0.13.4" + "@babel/runtime": "^7.12.5", + "react-is": "^16.12.0", + "shallowequal": "^1.1.0" } }, - "@ctrl/tinycolor": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.0.tgz", - "integrity": "sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ==" + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "regenerator-runtime": { "version": "0.13.7", @@ -24869,11 +24870,6 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "insert-css": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/insert-css/-/insert-css-2.0.0.tgz", - "integrity": "sha1-610Ql7dUL0x56jBg067gfQU4gPQ=" - }, "internal-ip": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", diff --git a/cvat-ui/package.json b/cvat-ui/package.json index caae6812..3cfcf2c1 100644 --- a/cvat-ui/package.json +++ b/cvat-ui/package.json @@ -48,7 +48,7 @@ "worker-loader": "^2.0.0" }, "dependencies": { - "@ant-design/icons": "^4.5.0", + "@ant-design/icons": "^4.6.2", "@types/lodash": "^4.14.168", "@types/platform": "^1.3.3", "@types/react": "^16.14.5", From 177120b6b873f3e5b24f35dcfb88020db9f6151e Mon Sep 17 00:00:00 2001 From: TOsmanov <54434686+TOsmanov@users.noreply.github.com> Date: Tue, 13 Apr 2021 09:25:49 +0300 Subject: [PATCH 2/8] Update User Guide ( change label shortcuts ) (#3085) * update user_guide.md and images * update user_guide.md * fix mistake * fix mistakes * update user_guide.md --- .../static/documentation/images/image062.jpg | Bin 26515 -> 26386 bytes .../static/documentation/images/image210.jpg | Bin 0 -> 20685 bytes .../static/documentation/images/image211.jpg | Bin 0 -> 8039 bytes cvat/apps/documentation/user_guide.md | 15 +++++++++++++++ 4 files changed, 15 insertions(+) create mode 100644 cvat/apps/documentation/static/documentation/images/image210.jpg create mode 100644 cvat/apps/documentation/static/documentation/images/image211.jpg diff --git a/cvat/apps/documentation/static/documentation/images/image062.jpg b/cvat/apps/documentation/static/documentation/images/image062.jpg index 22d87bbe8f010699366d280fa3079645c31f4a3a..3f4060f2598cd7a3f7f437cde5a645be202693d0 100644 GIT binary patch literal 26386 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

YW-$i%8a$$bLV^jwo5U4$0-VVj1 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

4sw^S9#nc3IctzO|v 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 QEZzT<;B#ko$ls;^1ySYpBme*a literal 26515 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 z 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 G{Qm;l&O0ms diff --git a/cvat/apps/documentation/static/documentation/images/image210.jpg b/cvat/apps/documentation/static/documentation/images/image210.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9c0edb6f372057875aade0eb26b71c050e8c581c GIT binary patch literal 20685 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 i#gNxmTHV / changes default label if pressed while the cursor is not pointed on an object| | | _Operations are available only for track_ | | `K` | Change keyframe property for an active track | | `O` | Change outside property for an active track | From 085d2607e2df6970373c08db3b806c0794c250bc Mon Sep 17 00:00:00 2001 From: Boris Sekachev Date: Tue, 13 Apr 2021 12:47:26 +0300 Subject: [PATCH 3/8] Fixed: Changing a label on canvas does not work when 'Show object details' enabled (#3084) * Fixed: Changing a label on canvas does not work when 'Show object details' enabled #3083 * Updated changelog --- CHANGELOG.md | 1 + cvat-canvas/package-lock.json | 2 +- cvat-canvas/package.json | 2 +- cvat-canvas/src/typescript/canvasView.ts | 28 ++++++++++++++++-------- cvat-canvas/src/typescript/shared.ts | 5 ++++- 5 files changed, 26 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 217545cb..b6a6eaa2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Export of instance masks with holes () +- Changing a label on canvas does not work when 'Show object details' enabled () ### Security diff --git a/cvat-canvas/package-lock.json b/cvat-canvas/package-lock.json index 52752363..38ddf7a8 100644 --- a/cvat-canvas/package-lock.json +++ b/cvat-canvas/package-lock.json @@ -1,6 +1,6 @@ { "name": "cvat-canvas", - "version": "2.4.1", + "version": "2.4.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/cvat-canvas/package.json b/cvat-canvas/package.json index 486a71a7..d6706997 100644 --- a/cvat-canvas/package.json +++ b/cvat-canvas/package.json @@ -1,6 +1,6 @@ { "name": "cvat-canvas", - "version": "2.4.1", + "version": "2.4.2", "description": "Part of Computer Vision Annotation Tool which presents its canvas library", "main": "src/canvas.ts", "scripts": { diff --git a/cvat-canvas/src/typescript/canvasView.ts b/cvat-canvas/src/typescript/canvasView.ts index e84f0044..95e89b7d 100644 --- a/cvat-canvas/src/typescript/canvasView.ts +++ b/cvat-canvas/src/typescript/canvasView.ts @@ -1,4 +1,4 @@ -// Copyright (C) 2019-2020 Intel Corporation +// Copyright (C) 2019-2021 Intel Corporation // // SPDX-License-Identifier: MIT @@ -1175,7 +1175,7 @@ export class CanvasViewImpl implements CanvasView, Listener { } } else if (reason === UpdateReasons.IMAGE_MOVED) { this.moveCanvas(); - } else if ([UpdateReasons.OBJECTS_UPDATED].includes(reason)) { + } else if (reason === UpdateReasons.OBJECTS_UPDATED) { if (this.mode === Mode.GROUP) { this.groupHandler.resetSelectedObjects(); } @@ -1443,6 +1443,7 @@ export class CanvasViewImpl implements CanvasView, Listener { clientID: state.clientID, outside: state.outside, occluded: state.occluded, + source: state.source, hidden: state.hidden, lock: state.lock, shapeType: state.shapeType, @@ -1534,13 +1535,22 @@ export class CanvasViewImpl implements CanvasView, Listener { } } - for (const attrID of Object.keys(state.attributes)) { - if (state.attributes[attrID] !== drawnState.attributes[+attrID]) { - if (text) { - const [span] = (text.node.querySelectorAll(`[attrID="${attrID}"]`) as any) as SVGTSpanElement[]; - if (span && span.textContent) { - const prefix = span.textContent.split(':').slice(0, -1).join(':'); - span.textContent = `${prefix}: ${state.attributes[attrID]}`; + if (drawnState.label.id !== state.label.id) { + // need to remove created text and create it again + if (text) { + text.remove(); + this.svgTexts[state.clientID] = this.addText(state); + } + } else { + // check if there are updates in attributes + for (const attrID of Object.keys(state.attributes)) { + if (state.attributes[attrID] !== drawnState.attributes[+attrID]) { + if (text) { + const [span] = text.node.querySelectorAll(`[attrID="${attrID}"]`); + if (span && span.textContent) { + const prefix = span.textContent.split(':').slice(0, -1).join(':'); + span.textContent = `${prefix}: ${state.attributes[attrID]}`; + } } } } diff --git a/cvat-canvas/src/typescript/shared.ts b/cvat-canvas/src/typescript/shared.ts index 55790f05..9ffa080e 100644 --- a/cvat-canvas/src/typescript/shared.ts +++ b/cvat-canvas/src/typescript/shared.ts @@ -41,6 +41,7 @@ export interface DrawnState { occluded?: boolean; hidden?: boolean; lock: boolean; + source: 'AUTO' | 'MANUAL'; shapeType: string; points?: number[]; attributes: Record; @@ -176,5 +177,7 @@ export function scalarProduct(a: Vector2D, b: Vector2D): number { } export function vectorLength(vector: Vector2D): number { - return Math.sqrt((vector.i ** 2) + (vector.j ** 2)); + const sqrI = vector.i ** 2; + const sqrJ = vector.j ** 2; + return Math.sqrt(sqrI + sqrJ); } From a2170f7947c9514719676ffde0b515fc7d2a9363 Mon Sep 17 00:00:00 2001 From: Dmitry Kruchinin <33020454+dvkruchinin@users.noreply.github.com> Date: Tue, 13 Apr 2021 17:32:30 +0300 Subject: [PATCH 4/8] Cypress test. Hotkeys to change labels feature. (#3086) * Cypress test. Hotkeys to change labels feature. * Apply comments --- .../case_72_hotkeys_change_labels.js | 147 ++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 tests/cypress/integration/actions_tasks_objects/case_72_hotkeys_change_labels.js diff --git a/tests/cypress/integration/actions_tasks_objects/case_72_hotkeys_change_labels.js b/tests/cypress/integration/actions_tasks_objects/case_72_hotkeys_change_labels.js new file mode 100644 index 00000000..ac195698 --- /dev/null +++ b/tests/cypress/integration/actions_tasks_objects/case_72_hotkeys_change_labels.js @@ -0,0 +1,147 @@ +// Copyright (C) 2021 Intel Corporation +// +// SPDX-License-Identifier: MIT + +/// + +context('Hotkeys to change labels feature.', () => { + const caseId = '72'; + const labelName = `Case ${caseId}`; + const taskName = labelName; + const attrName = `Attr for ${labelName}`; + const textDefaultValue = 'Some default value for type Text'; + const imagesCount = 1; + const imageFileName = `image_${labelName.replace(' ', '_').toLowerCase()}`; + const width = 800; + const height = 800; + const posX = 10; + const posY = 10; + const color = 'gray'; + const archiveName = `${imageFileName}.zip`; + const archivePath = `cypress/fixtures/${archiveName}`; + const imagesFolder = `cypress/fixtures/${imageFileName}`; + const directoryToArchive = imagesFolder; + const secondLabel = `Case ${caseId} second` + let firstLabelCurrentVal = ''; + let secondLabelCurrentVal = ''; + + function testCheckingAlwaysShowObjectDetails(check) { + cy.openSettings(); + cy.get('.cvat-settings-modal').within(() => { + cy.contains('Workspace').click(); + cy.get('.cvat-workspace-settings-show-text-always').within(() => { + check + ? cy.get('[type="checkbox"]').check().should('be.checked') + : cy.get('[type="checkbox"]').uncheck().should('not.be.checked'); + }); + }); + cy.closeSettings(); + } + + before(() => { + cy.visit('auth/login'); + cy.login(); + cy.imageGenerator(imagesFolder, imageFileName, width, height, color, posX, posY, labelName, imagesCount); + cy.createZipArchive(directoryToArchive, archivePath); + cy.createAnnotationTask(taskName, labelName, attrName, textDefaultValue, archiveName); + cy.openTask(taskName); + cy.addNewLabel(secondLabel); + cy.openJob(); + }); + + after(() => { + cy.goToTaskList(); + cy.deleteTask(taskName); + }); + + describe(`Testing case "${caseId}"`, () => { + // Collect labels text. Since the server can return them in reverse order. + it('Collect label values relative to hotkeys.', () => { + cy.get('.cvat-objects-sidebar-tabs').within(() => { + cy.contains('[role="tab"]', 'Labels').click(); + }); + cy.get('.cvat-objects-sidebar-label-item').then(($objectsSidebarLabelItem) => { + firstLabelCurrentVal = $objectsSidebarLabelItem[0].innerText.slice(0, -2); + secondLabelCurrentVal = $objectsSidebarLabelItem[1].innerText.slice(0, -2); + }); + cy.get('.cvat-objects-sidebar-tabs').within(() => { + cy.contains('[role="tab"]', 'Objects').click(); + }); + }); + + it('Changing a label for a shape using hotkey.', () => { + const createPolygonShape = { + reDraw: false, + type: 'Shape', + labelName: firstLabelCurrentVal, + pointsMap: [ + { x: 200, y: 200 }, + { x: 300, y: 200 }, + { x: 300, y: 300 }, + ], + complete: true, + numberOfPoints: null, + }; + // Set settings "Always show object details" to check issue 3083 + testCheckingAlwaysShowObjectDetails(true); + cy.createPolygon(createPolygonShape); + cy.get('#cvat-objects-sidebar-state-item-1').find('.cvat-objects-sidebar-state-item-label-selector').should('have.text', firstLabelCurrentVal); + cy.get('.cvat-canvas-container').click(270, 260); + cy.get('#cvat_canvas_shape_1').should('have.class', 'cvat_canvas_shape_activated'); + cy.contains('tspan', `${firstLabelCurrentVal} 1 (manual)`).should('be.visible'); + cy.get('body').type('{Ctrl}2') + cy.get('#cvat-objects-sidebar-state-item-1').find('.cvat-objects-sidebar-state-item-label-selector').should('have.text', secondLabelCurrentVal); + cy.contains('tspan', `${secondLabelCurrentVal} 1 (manual)`).should('be.visible'); + // Unset settings "Always show object details" + testCheckingAlwaysShowObjectDetails(); + }); + + it('Changing default label before drawing a shape.', () => { + cy.interactControlButton('draw-rectangle'); + cy.switchLabel(firstLabelCurrentVal, 'draw-rectangle'); + cy.get('.cvat-draw-rectangle-popover-visible').within(() => { + cy.contains('button', 'Shape').click(); + }); + cy.get('body').type('{Ctrl}2'); + cy.contains(`Default label was changed to "${secondLabelCurrentVal}"`).should('exist'); + cy.get('.cvat-canvas-container').click(500, 500).click(600, 600); + cy.get('#cvat-objects-sidebar-state-item-2').find('.cvat-objects-sidebar-state-item-label-selector').should('have.text', secondLabelCurrentVal); + }); + + it('Check changing shortcut for a label.', () => { + // Go to a labels tab + cy.get('.cvat-objects-sidebar-tabs').within(() => { + cy.contains('[role="tab"]', 'Labels').click(); + }); + cy.contains('.cvat-label-item-setup-shortcut-button', '1').click(); + cy.get('.cvat-label-item-setup-shortcut-popover').should('be.visible').within(() => { + cy.get('[type="button"]').then(($btn) => { + expect($btn[0].innerText).to.be.equal(`1:${firstLabelCurrentVal}`); + expect($btn[1].innerText).to.be.equal(`2:${secondLabelCurrentVal}`); + expect($btn[2].innerText).to.be.equal('3:None'); + // Click to "3" button + cy.get($btn[2]).click(); + }); + }); + cy.get('.cvat-label-item-setup-shortcut-popover').should('be.visible').within(() => { + cy.get('[type="button"]').then(($btn) => { + // Buttons 1 and 3 have changed values + expect($btn[0].innerText).to.be.equal('1:None'); + expect($btn[2].innerText).to.be.equal(`3:${firstLabelCurrentVal}`); + }); + }); + cy.contains('.cvat-label-item-setup-shortcut-button', '3').should('exist'); + cy.get('.cvat-canvas-container').click(); // Hide shortcut popover + // Go to "Objects" tab + cy.get('.cvat-objects-sidebar-tabs').within(() => { + cy.contains('[role="tab"]', 'Objects').click(); + }); + // Checking the label change via the new hotkey value + cy.get('.cvat-canvas-container').click(270, 260); + cy.get('#cvat_canvas_shape_1').should('have.class', 'cvat_canvas_shape_activated'); + cy.get('body').type('{Ctrl}3'); + cy.contains('tspan', `${firstLabelCurrentVal} 1 (manual)`).should('be.visible'); + cy.get('#cvat-objects-sidebar-state-item-1').find('.cvat-objects-sidebar-state-item-label-selector').should('have.text', firstLabelCurrentVal); + }); + }); +}); From 94eba4369622afebf93c54557a885e4215222725 Mon Sep 17 00:00:00 2001 From: Snyk bot Date: Wed, 14 Apr 2021 09:53:09 +0300 Subject: [PATCH 5/8] fix: upgrade @types/react-dom from 16.9.11 to 16.9.12 (#3088) Snyk has created this PR to upgrade @types/react-dom from 16.9.11 to 16.9.12. See this package in npm: https://www.npmjs.com/package/@types/react-dom See this project in Snyk: https://app.snyk.io/org/cvat/project/c1f463ee-3776-44c4-b0fa-cd2254d0a094?utm_source=github&utm_medium=upgrade-pr --- cvat-ui/package-lock.json | 6 +++--- cvat-ui/package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cvat-ui/package-lock.json b/cvat-ui/package-lock.json index e4a2972a..7f472b68 100644 --- a/cvat-ui/package-lock.json +++ b/cvat-ui/package-lock.json @@ -1302,9 +1302,9 @@ } }, "@types/react-dom": { - "version": "16.9.11", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.11.tgz", - "integrity": "sha512-3UuR4MoWf5spNgrG6cwsmT9DdRghcR4IDFOzNZ6+wcmacxkFykcb5ji0nNVm9ckBT4BCxvCrJJbM4+EYsEEVIg==", + "version": "16.9.12", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.12.tgz", + "integrity": "sha512-i7NPZZpPte3jtVOoW+eLB7G/jsX5OM6GqQnH+lC0nq0rqwlK0x8WcMEvYDgFWqWhWMlTltTimzdMax6wYfZssA==", "requires": { "@types/react": "^16" } diff --git a/cvat-ui/package.json b/cvat-ui/package.json index 3cfcf2c1..5d34aafa 100644 --- a/cvat-ui/package.json +++ b/cvat-ui/package.json @@ -53,7 +53,7 @@ "@types/platform": "^1.3.3", "@types/react": "^16.14.5", "@types/react-color": "^3.0.4", - "@types/react-dom": "^16.9.11", + "@types/react-dom": "^16.9.12", "@types/react-redux": "^7.1.16", "@types/react-router": "^5.1.12", "@types/react-router-dom": "^5.1.7", From 6988e2b98f9cfc7e0f98142a7c2829640d4fffcf Mon Sep 17 00:00:00 2001 From: Snyk bot Date: Wed, 14 Apr 2021 09:53:27 +0300 Subject: [PATCH 6/8] fix: upgrade react-redux from 7.2.2 to 7.2.3 (#3089) Snyk has created this PR to upgrade react-redux from 7.2.2 to 7.2.3. See this package in npm: https://www.npmjs.com/package/react-redux See this project in Snyk: https://app.snyk.io/org/cvat/project/c1f463ee-3776-44c4-b0fa-cd2254d0a094?utm_source=github&utm_medium=upgrade-pr --- cvat-ui/package-lock.json | 13 +++++++------ cvat-ui/package.json | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/cvat-ui/package-lock.json b/cvat-ui/package-lock.json index 7f472b68..75a621f3 100644 --- a/cvat-ui/package-lock.json +++ b/cvat-ui/package-lock.json @@ -28955,11 +28955,12 @@ "integrity": "sha512-WjwvxBSnmLMRcU33do0KixDB+9vP3e84eCse+rd+HNklAMNWyRgZTDEQlay/qK6lcXFPRuEIASJTpEt6pyK7Ww==" }, "react-redux": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.2.tgz", - "integrity": "sha512-8+CQ1EvIVFkYL/vu6Olo7JFLWop1qRUeb46sGtIMDCSpgwPQq8fPLpirIB0iTqFe9XYEFPHssdX8/UwN6pAkEA==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.3.tgz", + "integrity": "sha512-ZhAmQ1lrK+Pyi0ZXNMUZuYxYAZd59wFuVDGUt536kSGdD0ya9Q7BfsE95E3TsFLE3kOSFp5m6G5qbatE+Ic1+w==", "requires": { "@babel/runtime": "^7.12.1", + "@types/react-redux": "^7.1.16", "hoist-non-react-statics": "^3.3.2", "loose-envify": "^1.4.0", "prop-types": "^15.7.2", @@ -28967,9 +28968,9 @@ }, "dependencies": { "@babel/runtime": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", - "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", + "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", "requires": { "regenerator-runtime": "^0.13.4" } diff --git a/cvat-ui/package.json b/cvat-ui/package.json index 5d34aafa..849d9050 100644 --- a/cvat-ui/package.json +++ b/cvat-ui/package.json @@ -78,7 +78,7 @@ "react-cookie": "^4.0.3", "react-dom": "^16.14.0", "react-moment": "^1.1.1", - "react-redux": "^7.2.2", + "react-redux": "^7.2.3", "react-resizable": "^1.11.1", "@types/react-resizable": "^1.7.2", "react-router": "^5.1.0", From 4ceb5da2447805c29ca4e20108bb2a2fb31ca6d3 Mon Sep 17 00:00:00 2001 From: Snyk bot Date: Fri, 16 Apr 2021 11:17:44 +0300 Subject: [PATCH 7/8] fix: upgrade @types/react-router from 5.1.12 to 5.1.13 (#3098) Snyk has created this PR to upgrade @types/react-router from 5.1.12 to 5.1.13. See this package in npm: https://www.npmjs.com/package/@types/react-router See this project in Snyk: https://app.snyk.io/org/cvat/project/c1f463ee-3776-44c4-b0fa-cd2254d0a094?utm_source=github&utm_medium=upgrade-pr --- cvat-ui/package-lock.json | 6 +++--- cvat-ui/package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cvat-ui/package-lock.json b/cvat-ui/package-lock.json index 75a621f3..cb3424a9 100644 --- a/cvat-ui/package-lock.json +++ b/cvat-ui/package-lock.json @@ -1329,9 +1329,9 @@ } }, "@types/react-router": { - "version": "5.1.12", - "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.12.tgz", - "integrity": "sha512-0bhXQwHYfMeJlCh7mGhc0VJTRm0Gk+Z8T00aiP4702mDUuLs9SMhnd2DitpjWFjdOecx2UXtICK14H9iMnziGA==", + "version": "5.1.13", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.13.tgz", + "integrity": "sha512-ZIuaO9Yrln54X6elg8q2Ivp6iK6p4syPsefEYAhRDAoqNh48C8VYUmB9RkXjKSQAJSJV0mbIFCX7I4vZDcHrjg==", "requires": { "@types/history": "*", "@types/react": "*" diff --git a/cvat-ui/package.json b/cvat-ui/package.json index 849d9050..e0854271 100644 --- a/cvat-ui/package.json +++ b/cvat-ui/package.json @@ -55,7 +55,7 @@ "@types/react-color": "^3.0.4", "@types/react-dom": "^16.9.12", "@types/react-redux": "^7.1.16", - "@types/react-router": "^5.1.12", + "@types/react-router": "^5.1.13", "@types/react-router-dom": "^5.1.7", "@types/react-share": "^3.0.3", "@types/redux-logger": "^3.0.8", From d2e4ee4d023eb43ffad5d65bc3a8ab07340153e1 Mon Sep 17 00:00:00 2001 From: Roberto Villalba Date: Sun, 18 Apr 2021 00:20:37 -0400 Subject: [PATCH 8/8] Update installation_automatic_annotation.md (#3099) Fix GPU example commands --- cvat/apps/documentation/installation_automatic_annotation.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cvat/apps/documentation/installation_automatic_annotation.md b/cvat/apps/documentation/installation_automatic_annotation.md index 1410876f..3203f96d 100644 --- a/cvat/apps/documentation/installation_automatic_annotation.md +++ b/cvat/apps/documentation/installation_automatic_annotation.md @@ -60,10 +60,10 @@ ```bash nuctl deploy --project-name cvat \ - --path `pwd`/tensorflow/matterport/mask_rcnn/nuclio \ + --path serverless/tensorflow/matterport/mask_rcnn/nuclio \ --platform local --base-image tensorflow/tensorflow:1.15.5-gpu-py3 \ --desc "GPU based implementation of Mask RCNN on Python 3, Keras, and TensorFlow." \ - --image cvat/tf.matterport.mask_rcnn_gpu + --image cvat/tf.matterport.mask_rcnn_gpu \ --triggers '{"myHttpTrigger": {"maxWorkers": 1}}' \ --resource-limit nvidia.com/gpu=1 ```