diff --git a/cvat-canvas/README.md b/cvat-canvas/README.md
index 6b7155f0..a45f1e04 100644
--- a/cvat-canvas/README.md
+++ b/cvat-canvas/README.md
@@ -134,6 +134,8 @@ Standard JS events are used.
// Create an instance of a canvas
const canvas = new window.canvas.Canvas();
+ console.log('Version', window.canvas.CanvasVersion);
+
// Put canvas to a html container
htmlContainer.appendChild(canvas.html());
canvas.fitCanvas();
diff --git a/cvat-canvas/package.json b/cvat-canvas/package.json
index e56e2637..06ea6c5c 100644
--- a/cvat-canvas/package.json
+++ b/cvat-canvas/package.json
@@ -1,6 +1,6 @@
{
"name": "cvat-canvas",
- "version": "0.1.0",
+ "version": "0.5.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/canvas.ts b/cvat-canvas/src/typescript/canvas.ts
index e5c4974e..560c46a2 100644
--- a/cvat-canvas/src/typescript/canvas.ts
+++ b/cvat-canvas/src/typescript/canvas.ts
@@ -28,6 +28,9 @@ import {
} from './canvasView';
import '../scss/canvas.scss';
+import pjson from '../../package.json';
+
+const CanvasVersion = pjson.version;
interface Canvas {
html(): HTMLDivElement;
@@ -130,8 +133,8 @@ class CanvasImpl implements Canvas {
}
}
-
export {
CanvasImpl as Canvas,
Rotation,
+ CanvasVersion,
};
diff --git a/cvat-canvas/tsconfig.json b/cvat-canvas/tsconfig.json
index f919ec6c..b83cdaf9 100644
--- a/cvat-canvas/tsconfig.json
+++ b/cvat-canvas/tsconfig.json
@@ -7,6 +7,8 @@
"noImplicitAny": true,
"preserveConstEnums": true,
"declaration": true,
+ "resolveJsonModule": true,
+ "esModuleInterop": true,
"moduleResolution": "node",
"declarationDir": "dist/declaration",
"paths": {
diff --git a/cvat-core/package.json b/cvat-core/package.json
index 558f437c..d07e81aa 100644
--- a/cvat-core/package.json
+++ b/cvat-core/package.json
@@ -1,6 +1,6 @@
{
"name": "cvat-core.js",
- "version": "0.1.0",
+ "version": "0.5.2",
"description": "Part of Computer Vision Tool which presents an interface for client-side integration",
"main": "babel.config.js",
"scripts": {
diff --git a/cvat-ui/package.json b/cvat-ui/package.json
index 013566c7..c2c08d2c 100644
--- a/cvat-ui/package.json
+++ b/cvat-ui/package.json
@@ -1,6 +1,6 @@
{
"name": "cvat-ui",
- "version": "0.1.0",
+ "version": "0.5.2",
"description": "CVAT single-page application",
"main": "src/index.tsx",
"scripts": {
diff --git a/cvat-ui/src/components/header/header.tsx b/cvat-ui/src/components/header/header.tsx
index 83376343..a740acce 100644
--- a/cvat-ui/src/components/header/header.tsx
+++ b/cvat-ui/src/components/header/header.tsx
@@ -16,15 +16,11 @@ import {
import Text from 'antd/lib/typography/Text';
-import getCore from 'cvat-core';
import {
CVATLogo,
AccountIcon,
} from 'icons';
-const core = getCore();
-const serverHost = core.config.backendAPI.slice(0, -7);
-
interface HeaderContainerProps {
onLogout: () => void;
logoutFetching: boolean;
@@ -32,8 +28,14 @@ interface HeaderContainerProps {
installedAutoAnnotation: boolean;
installedTFAnnotation: boolean;
installedTFSegmentation: boolean;
+ serverHost: string;
username: string;
- serverAbout: any;
+ toolName: string;
+ serverVersion: string;
+ serverDescription: string;
+ coreVersion: string;
+ canvasVersion: string;
+ uiVersion: string;
}
type Props = HeaderContainerProps & RouteComponentProps;
@@ -45,7 +47,13 @@ function HeaderContainer(props: Props): JSX.Element {
installedTFAnnotation,
installedAnalytics,
username,
- serverAbout,
+ toolName,
+ serverHost,
+ serverVersion,
+ serverDescription,
+ coreVersion,
+ canvasVersion,
+ uiVersion,
onLogout,
logoutFetching,
} = props;
@@ -61,26 +69,42 @@ function HeaderContainer(props: Props): JSX.Element {
const FORUM = 'https://software.intel.com/en-us/forums/intel-distribution-of-openvino-toolkit';
Modal.info({
- title: `${serverAbout.name}`,
+ title: `${toolName}`,
content: (
- {`${serverAbout.description}`}
+ {`${serverDescription}`}
Server version:
- {` ${serverAbout.version}`}
+ {` ${serverVersion}`}
+
+
+
+
+ Core version:
+
+
+ {` ${coreVersion}`}
+
+
+
+
+ Canvas version:
+
+
+ {` ${canvasVersion}`}
- Client version:
+ UI version:
- {` ${core.client.version}`}
+ {` ${uiVersion}`}
diff --git a/cvat-ui/src/containers/header/header.tsx b/cvat-ui/src/containers/header/header.tsx
index 4d8b7d26..91b4aab1 100644
--- a/cvat-ui/src/containers/header/header.tsx
+++ b/cvat-ui/src/containers/header/header.tsx
@@ -5,9 +5,12 @@ import {
CombinedState,
} from 'reducers/interfaces';
+import getCore from 'cvat-core';
import HeaderComponent from 'components/header/header';
import { logoutAsync } from 'actions/auth-actions';
+const core = getCore();
+
interface StateToProps {
logoutFetching: boolean;
installedAnalytics: boolean;
@@ -15,7 +18,13 @@ interface StateToProps {
installedTFSegmentation: boolean;
installedTFAnnotation: boolean;
username: string;
- serverAbout: any;
+ toolName: string;
+ serverHost: string;
+ serverVersion: string;
+ serverDescription: string;
+ coreVersion: string;
+ canvasVersion: string;
+ uiVersion: string;
}
interface DispatchToProps {
@@ -23,18 +32,36 @@ interface DispatchToProps {
}
function mapStateToProps(state: CombinedState): StateToProps {
- const { auth } = state;
- const { list } = state.plugins;
- const { about } = state;
+ const {
+ auth: {
+ fetching: logoutFetching,
+ user: {
+ username,
+ },
+ },
+ plugins: {
+ list,
+ },
+ about: {
+ server,
+ packageVersion,
+ },
+ } = state;
return {
- logoutFetching: state.auth.fetching,
+ logoutFetching,
installedAnalytics: list[SupportedPlugins.ANALYTICS],
installedAutoAnnotation: list[SupportedPlugins.AUTO_ANNOTATION],
installedTFSegmentation: list[SupportedPlugins.TF_SEGMENTATION],
installedTFAnnotation: list[SupportedPlugins.TF_ANNOTATION],
- username: auth.user.username,
- serverAbout: about.server,
+ username,
+ toolName: server.name as string,
+ serverHost: core.config.backendAPI.slice(0, -7),
+ serverDescription: server.description as string,
+ serverVersion: server.version as string,
+ coreVersion: packageVersion.core,
+ canvasVersion: packageVersion.canvas,
+ uiVersion: packageVersion.ui,
};
}
diff --git a/cvat-ui/src/cvat-canvas.ts b/cvat-ui/src/cvat-canvas.ts
index f68c1c2a..f7cfacdb 100644
--- a/cvat-ui/src/cvat-canvas.ts
+++ b/cvat-ui/src/cvat-canvas.ts
@@ -1,9 +1,11 @@
import {
Canvas,
Rotation,
+ CanvasVersion,
} from '../../cvat-canvas/src/typescript/canvas';
export {
Canvas,
Rotation,
+ CanvasVersion,
};
diff --git a/cvat-ui/src/reducers/about-reducer.ts b/cvat-ui/src/reducers/about-reducer.ts
index d6eeb0c8..66b79238 100644
--- a/cvat-ui/src/reducers/about-reducer.ts
+++ b/cvat-ui/src/reducers/about-reducer.ts
@@ -2,9 +2,17 @@ import { AboutActions, AboutActionTypes } from 'actions/about-actions';
import { AuthActions, AuthActionTypes } from 'actions/auth-actions';
import { AboutState } from './interfaces';
+import { CanvasVersion } from '../cvat-canvas';
+import getCore from '../cvat-core';
+import pjson from '../../package.json';
const defaultState: AboutState = {
server: {},
+ packageVersion: {
+ core: getCore().client.version,
+ canvas: CanvasVersion,
+ ui: pjson.version,
+ },
fetching: false,
initialized: false,
};
diff --git a/cvat-ui/src/reducers/interfaces.ts b/cvat-ui/src/reducers/interfaces.ts
index 00d0f838..f39a7359 100644
--- a/cvat-ui/src/reducers/interfaces.ts
+++ b/cvat-ui/src/reducers/interfaces.ts
@@ -88,6 +88,11 @@ export interface UsersState {
export interface AboutState {
server: any;
+ packageVersion: {
+ core: string;
+ canvas: string;
+ ui: string;
+ };
fetching: boolean;
initialized: boolean;
}
diff --git a/cvat-ui/tsconfig.json b/cvat-ui/tsconfig.json
index 388f07ad..07b6414e 100644
--- a/cvat-ui/tsconfig.json
+++ b/cvat-ui/tsconfig.json
@@ -8,13 +8,13 @@
],
"allowJs": true,
"skipLibCheck": true,
- "esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
+ "esModuleInterop": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "preserve",