Comparar commits
5 Commits
| Autor | SHA1 | Data | |
|---|---|---|---|
| dd0727d022 | |||
| d562d56ae9 | |||
| b38ffe4a99 | |||
| b1bf5cce8f | |||
| 111077275b |
@@ -19,6 +19,6 @@ linux:
|
||||
target:
|
||||
- snap
|
||||
publish: null
|
||||
electronVersion: 3.0.13
|
||||
electronVersion: 6.0.3
|
||||
extraFiles:
|
||||
- "cocoSSDModel"
|
||||
|
||||
gerado
+9907
-6570
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+83
-81
@@ -14,50 +14,6 @@
|
||||
"license": "MIT",
|
||||
"private": true,
|
||||
"main": "build/main.js",
|
||||
"dependencies": {
|
||||
"@azure/storage-blob": "^10.3.0",
|
||||
"@tensorflow/tfjs": "^1.0.3",
|
||||
"@types/snapsvg": "^0.4.35",
|
||||
"axios": "^0.18.0",
|
||||
"bootstrap": "^4.1.3",
|
||||
"buffer-reverse": "^1.0.1",
|
||||
"crypto-js": "^3.1.9-1",
|
||||
"dotenv": "^7.0.0",
|
||||
"google-protobuf": "^3.6.1",
|
||||
"jpeg-js": "^0.3.4",
|
||||
"json2csv": "^4.5.0",
|
||||
"lodash": "^4.17.11",
|
||||
"md5.js": "^1.3.5",
|
||||
"node-fetch": "^2.3.0",
|
||||
"node-int64": "^0.4.0",
|
||||
"rc-align": "^2.4.5",
|
||||
"rc-checkbox": "^2.1.6",
|
||||
"rc-menu": "^7.4.21",
|
||||
"rc-slider": "^8.6.7",
|
||||
"react": "^16.7.0",
|
||||
"react-appinsights": "^3.0.0-rc.5",
|
||||
"react-color": "^2.17.0",
|
||||
"react-dom": "^16.7.0",
|
||||
"react-jsonschema-form": "^1.3.0",
|
||||
"react-localization": "^1.0.13",
|
||||
"react-modal": "^3.8.1",
|
||||
"react-redux": "^5.1.1",
|
||||
"react-router-dom": "^4.3.1",
|
||||
"react-scripts": "2.1.1",
|
||||
"react-split-pane": "^0.1.87",
|
||||
"react-tag-input": "^6.1.0",
|
||||
"react-toastify": "^4.5.2",
|
||||
"react-virtualized": "^9.21.0",
|
||||
"react-vis": "^1.11.6",
|
||||
"reactstrap": "^6.5.0",
|
||||
"redux": "^4.0.1",
|
||||
"redux-thunk": "^2.3.0",
|
||||
"rimraf": "^2.6.2",
|
||||
"shortid": "^2.2.14",
|
||||
"video-react": "^0.13.2",
|
||||
"vott-ct": "2.1.24",
|
||||
"vott-react": "^0.2.10"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "nf start -p 3000",
|
||||
"compile": "tsc",
|
||||
@@ -84,6 +40,89 @@
|
||||
"postinstall": "electron-builder install-app-deps",
|
||||
"predebug": "npm run build && npm run webpack:dev"
|
||||
},
|
||||
"dependencies": {
|
||||
"@azure/storage-blob": "^10.4.0",
|
||||
"@tensorflow/tfjs": "^1.2.8",
|
||||
"@types/snapsvg": "^0.4.35",
|
||||
"axios": "^0.18.0",
|
||||
"bootstrap": "^4.1.3",
|
||||
"buffer-reverse": "^1.0.1",
|
||||
"crypto-js": "^3.1.9-1",
|
||||
"dotenv": "^7.0.0",
|
||||
"google-protobuf": "^3.6.1",
|
||||
"jpeg-js": "^0.3.4",
|
||||
"json2csv": "^4.5.0",
|
||||
"lodash": "^4.17.11",
|
||||
"md5.js": "^1.3.5",
|
||||
"node-fetch": "^2.3.0",
|
||||
"node-int64": "^0.4.0",
|
||||
"rc-align": "^2.4.5",
|
||||
"rc-checkbox": "^2.1.6",
|
||||
"rc-menu": "^7.4.21",
|
||||
"rc-slider": "^8.6.7",
|
||||
"react": "^16.9.0",
|
||||
"react-appinsights": "^3.0.0",
|
||||
"react-color": "^2.17.0",
|
||||
"react-dom": "^16.9.0",
|
||||
"react-jsonschema-form": "^1.3.0",
|
||||
"react-localization": "^1.0.13",
|
||||
"react-modal": "^3.8.1",
|
||||
"react-redux": "^5.1.1",
|
||||
"react-router-dom": "^4.3.1",
|
||||
"react-scripts": "^3.1.1",
|
||||
"react-split-pane": "^0.1.87",
|
||||
"react-tag-input": "^6.1.0",
|
||||
"react-toastify": "^4.5.2",
|
||||
"react-virtualized": "^9.21.1",
|
||||
"react-vis": "^1.11.6",
|
||||
"reactstrap": "^6.5.0",
|
||||
"redux": "^4.0.4",
|
||||
"redux-thunk": "^2.3.0",
|
||||
"rimraf": "^2.6.2",
|
||||
"shortid": "^2.2.14",
|
||||
"video-react": "^0.13.9",
|
||||
"vott-ct": "2.1.24",
|
||||
"vott-react": "^0.2.10"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@fortawesome/fontawesome-free": "^5.5.0",
|
||||
"@types/axios": "^0.14.0",
|
||||
"@types/dotenv": "^6.1.0",
|
||||
"@types/enzyme": "^3.10.3",
|
||||
"@types/jest": "^23.3.13",
|
||||
"@types/json2csv": "^4.4.0",
|
||||
"@types/node": "10.12.7",
|
||||
"@types/react": "^16.9.2",
|
||||
"@types/react-dom": "^16.9.0",
|
||||
"@types/react-jsonschema-form": "^1.0.12",
|
||||
"@types/react-router-dom": "^4.3.5",
|
||||
"@types/react-split-pane": "^0.1.67",
|
||||
"@types/react-toastify": "^4.0.1",
|
||||
"@types/reactstrap": "^6.4.3",
|
||||
"@types/redux-logger": "^3.0.6",
|
||||
"@types/redux-mock-store": "^1.0.0",
|
||||
"cross-env": "^5.2.0",
|
||||
"electron": "^6.0.4",
|
||||
"electron-builder": "^21.2.0",
|
||||
"enzyme": "^3.10.0",
|
||||
"enzyme-adapter-react-16": "^1.14.0",
|
||||
"eslint": "^6.2.2",
|
||||
"foreman": "^3.0.1",
|
||||
"jest-enzyme": "^7.1.0",
|
||||
"jquery": "^3.3.1",
|
||||
"node-sass": "^4.10.0",
|
||||
"popper.js": "^1.14.6",
|
||||
"react-test-renderer": "^16.9.0",
|
||||
"redux-immutable-state-invariant": "^2.1.0",
|
||||
"redux-logger": "^3.0.6",
|
||||
"redux-mock-store": "^1.5.3",
|
||||
"ts-loader": "^5.3.0",
|
||||
"tslint": "^5.11.0",
|
||||
"typescript": "^3.5.3",
|
||||
"webpack": "^4.39.1",
|
||||
"webpack-cli": "^3.3.7",
|
||||
"webpack-merge": "^4.1.5"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"extends": "react-app"
|
||||
},
|
||||
@@ -93,43 +132,6 @@
|
||||
"not ie <= 11",
|
||||
"not op_mini all"
|
||||
],
|
||||
"devDependencies": {
|
||||
"@fortawesome/fontawesome-free": "^5.5.0",
|
||||
"@types/axios": "^0.14.0",
|
||||
"@types/dotenv": "^6.1.0",
|
||||
"@types/enzyme": "^3.1.15",
|
||||
"@types/jest": "23.3.9",
|
||||
"@types/json2csv": "^4.4.0",
|
||||
"@types/node": "10.12.7",
|
||||
"@types/react": "16.7.6",
|
||||
"@types/react-dom": "16.0.9",
|
||||
"@types/react-jsonschema-form": "^1.0.12",
|
||||
"@types/react-router-dom": "^4.3.1",
|
||||
"@types/react-split-pane": "^0.1.67",
|
||||
"@types/react-toastify": "^4.0.1",
|
||||
"@types/reactstrap": "^6.4.3",
|
||||
"@types/redux-logger": "^3.0.6",
|
||||
"@types/redux-mock-store": "^1.0.0",
|
||||
"cross-env": "^5.2.0",
|
||||
"electron": "^3.0.13",
|
||||
"electron-builder": "^20.38.3",
|
||||
"enzyme": "^3.7.0",
|
||||
"enzyme-adapter-react-16": "^1.7.0",
|
||||
"foreman": "^3.0.1",
|
||||
"jest-enzyme": "^7.0.1",
|
||||
"jquery": "^3.3.1",
|
||||
"node-sass": "^4.10.0",
|
||||
"popper.js": "^1.14.6",
|
||||
"redux-immutable-state-invariant": "^2.1.0",
|
||||
"redux-logger": "^3.0.6",
|
||||
"redux-mock-store": "^1.5.3",
|
||||
"ts-loader": "^5.3.0",
|
||||
"tslint": "^5.11.0",
|
||||
"typescript": "^3.1.6",
|
||||
"webpack": "^4.19.1",
|
||||
"webpack-cli": "^3.1.2",
|
||||
"webpack-merge": "^4.1.5"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.14.2",
|
||||
"npm": ">=6.4.1"
|
||||
|
||||
+29
-25
@@ -1,6 +1,6 @@
|
||||
import {
|
||||
app, ipcMain, BrowserWindow, BrowserWindowConstructorOptions,
|
||||
Menu, MenuItemConstructorOptions,
|
||||
Menu, MenuItemConstructorOptions, MenuItem,
|
||||
} from "electron";
|
||||
import { IpcMainProxy } from "./common/ipcMainProxy";
|
||||
import LocalFileSystem from "./providers/storage/localFileSystem";
|
||||
@@ -18,13 +18,16 @@ function createWindow() {
|
||||
titleBarStyle: "hidden",
|
||||
backgroundColor: "#272B30",
|
||||
show: false,
|
||||
// Node Integration is now disabled by default
|
||||
// https://github.com/electron/electron/pull/16235
|
||||
webPreferences: {
|
||||
nodeIntegration: true,
|
||||
},
|
||||
};
|
||||
|
||||
const staticUrl = process.env.ELECTRON_START_URL || `file:///${__dirname}/index.html`;
|
||||
if (process.env.ELECTRON_START_URL) {
|
||||
windowOptions.webPreferences = {
|
||||
webSecurity: false,
|
||||
};
|
||||
windowOptions.webPreferences.webSecurity = false;
|
||||
}
|
||||
|
||||
mainWindow = new BrowserWindow(windowOptions);
|
||||
@@ -70,20 +73,21 @@ function onToggleDevTools() {
|
||||
*/
|
||||
function registerContextMenu(browserWindow: BrowserWindow): void {
|
||||
const selectionMenu = Menu.buildFromTemplate([
|
||||
{ role: "copy", accelerator: "CmdOrCtrl+C" },
|
||||
{ type: "separator" },
|
||||
{ role: "selectall", accelerator: "CmdOrCtrl+A" },
|
||||
new MenuItem({ role: "copy", accelerator: "CmdOrCtrl+C" }),
|
||||
new MenuItem({ role: "copy", accelerator: "CmdOrCtrl+C" }),
|
||||
new MenuItem({ type: "separator" }),
|
||||
new MenuItem({ role: "selectAll", accelerator: "CmdOrCtrl+A" }),
|
||||
]);
|
||||
|
||||
const inputMenu = Menu.buildFromTemplate([
|
||||
{ role: "undo", accelerator: "CmdOrCtrl+Z" },
|
||||
{ role: "redo", accelerator: "CmdOrCtrl+Shift+Z" },
|
||||
{ type: "separator" },
|
||||
{ role: "cut", accelerator: "CmdOrCtrl+X" },
|
||||
{ role: "copy", accelerator: "CmdOrCtrl+C" },
|
||||
{ role: "paste", accelerator: "CmdOrCtrl+V" },
|
||||
{ type: "separator" },
|
||||
{ role: "selectall", accelerator: "CmdOrCtrl+A" },
|
||||
new MenuItem({ role: "undo", accelerator: "CmdOrCtrl+Z" }),
|
||||
new MenuItem({ role: "redo", accelerator: "CmdOrCtrl+Shift+Z" }),
|
||||
new MenuItem({ type: "separator" }),
|
||||
new MenuItem({ role: "cut", accelerator: "CmdOrCtrl+X" }),
|
||||
new MenuItem({ role: "copy", accelerator: "CmdOrCtrl+C" }),
|
||||
new MenuItem({ role: "paste", accelerator: "CmdOrCtrl+V" }),
|
||||
new MenuItem({ type: "separator" }),
|
||||
new MenuItem({ role: "selectAll", accelerator: "CmdOrCtrl+A" }),
|
||||
]);
|
||||
|
||||
browserWindow.webContents.on("context-menu", (e, props) => {
|
||||
@@ -107,16 +111,16 @@ function registerContextMenu(browserWindow: BrowserWindow): void {
|
||||
},
|
||||
{ role: "editMenu" },
|
||||
{
|
||||
label: "View", submenu: [
|
||||
{ role: "reload" },
|
||||
{ type: "separator" },
|
||||
{ role: "toggleDevTools" },
|
||||
{ role: "toggleFullScreen" },
|
||||
{ type: "separator" },
|
||||
{ role: "resetZoom" },
|
||||
{ role: "zoomIn" },
|
||||
{ role: "zoomOut" },
|
||||
],
|
||||
label: "View", submenu: Menu.buildFromTemplate([
|
||||
new MenuItem({ role: "reload" }),
|
||||
new MenuItem({ type: "separator" }),
|
||||
new MenuItem({ role: "toggleDevTools" }),
|
||||
new MenuItem({ role: "togglefullscreen" }),
|
||||
new MenuItem({ type: "separator" }),
|
||||
new MenuItem({ role: "resetZoom" }),
|
||||
new MenuItem({ role: "zoomIn" }),
|
||||
new MenuItem({ role: "zoomOut" }),
|
||||
]),
|
||||
},
|
||||
{ role: "windowMenu" },
|
||||
];
|
||||
|
||||
@@ -73,7 +73,7 @@ describe("LocalFileSystem Storage Provider", () => {
|
||||
it("selectContainer opens a dialog and resolves with selected path", async () => {
|
||||
const expectedContainerPath = "/path/to/container";
|
||||
const mockMethod = dialog.showOpenDialog as jest.Mock;
|
||||
mockMethod.mockReturnValue([expectedContainerPath]);
|
||||
mockMethod.mockReturnValue(Promise.resolve({ filePaths: [expectedContainerPath] }));
|
||||
|
||||
const result = await localFileSystem.selectContainer();
|
||||
expect(result).toEqual(expectedContainerPath);
|
||||
@@ -81,9 +81,10 @@ describe("LocalFileSystem Storage Provider", () => {
|
||||
|
||||
it("selectContainer rejects when a folder path is not returned", async () => {
|
||||
const mockMethod = dialog.showOpenDialog as jest.Mock;
|
||||
mockMethod.mockReturnValue([]);
|
||||
mockMethod.mockReturnValue(Promise.resolve({ filePaths: [] }));
|
||||
|
||||
await expect(localFileSystem.selectContainer()).rejects.not.toBeNull();
|
||||
const result = await localFileSystem.selectContainer();
|
||||
expect(result).toEqual("");
|
||||
});
|
||||
|
||||
it("deleting file that doesn't exist resolves successfully", async () => {
|
||||
|
||||
@@ -12,20 +12,18 @@ export default class LocalFileSystem implements IStorageProvider {
|
||||
|
||||
constructor(private browserWindow: BrowserWindow) { }
|
||||
|
||||
public selectContainer(): Promise<string> {
|
||||
return new Promise<string>((resolve, reject) => {
|
||||
const filePaths = dialog.showOpenDialog(this.browserWindow, {
|
||||
title: strings.connections.providers.local.selectFolder,
|
||||
buttonLabel: strings.connections.providers.local.chooseFolder,
|
||||
properties: ["openDirectory", "createDirectory"],
|
||||
});
|
||||
|
||||
if (!filePaths || filePaths.length !== 1) {
|
||||
return reject();
|
||||
}
|
||||
|
||||
resolve(filePaths[0]);
|
||||
public async selectContainer(): Promise<string> {
|
||||
const dialogResult = await dialog.showOpenDialog(this.browserWindow, {
|
||||
title: strings.connections.providers.local.selectFolder,
|
||||
buttonLabel: strings.connections.providers.local.chooseFolder,
|
||||
properties: ["openDirectory", "createDirectory"],
|
||||
});
|
||||
|
||||
if (!dialogResult.filePaths || dialogResult.filePaths.length !== 1) {
|
||||
return "";
|
||||
}
|
||||
|
||||
return dialogResult.filePaths[0];
|
||||
}
|
||||
|
||||
public readText(filePath: string): Promise<string> {
|
||||
|
||||
@@ -5,7 +5,6 @@ import {
|
||||
TokenCredential, AnonymousCredential, ContainerURL,
|
||||
StorageURL, ServiceURL, Credential, Aborter, BlockBlobURL,
|
||||
} from "@azure/storage-blob";
|
||||
import { BlobDeleteResponse } from "@azure/storage-blob/typings/lib/generated/lib/models";
|
||||
|
||||
/**
|
||||
* Options for Azure Cloud Storage
|
||||
|
||||
@@ -21,7 +21,7 @@ describe("Alert component", () => {
|
||||
|
||||
it("Renders nothing if not activated", () => {
|
||||
const wrapper = createComponent(defaultProps);
|
||||
expect(wrapper.html()).toBeNull();
|
||||
expect(wrapper.html()).toEqual("");
|
||||
});
|
||||
|
||||
it("Renders modal when activated", () => {
|
||||
|
||||
@@ -161,7 +161,7 @@ describe("Video Asset Component", () => {
|
||||
};
|
||||
|
||||
setupMoveFrameTest(currentAsset);
|
||||
wrapper.find(CustomVideoPlayerButton).at(3).simulate("click");
|
||||
wrapper.find(CustomVideoPlayerButton).at(3).find("button").simulate("click");
|
||||
|
||||
expect(videoPlayerMock.prototype.pause).toBeCalled();
|
||||
expect(videoPlayerMock.prototype.seek).toBeCalledWith(expectedAsset.timestamp);
|
||||
@@ -174,7 +174,7 @@ describe("Video Asset Component", () => {
|
||||
onBeforeAssetChangedHandler.mockImplementationOnce(() => false);
|
||||
|
||||
setupMoveFrameTest(currentAsset);
|
||||
wrapper.find(CustomVideoPlayerButton).at(3).simulate("click");
|
||||
wrapper.find(CustomVideoPlayerButton).at(3).find("button").simulate("click");
|
||||
|
||||
expect(videoPlayerMock.prototype.pause).not.toBeCalled();
|
||||
expect(videoPlayerMock.prototype.seek).not.toBeCalled();
|
||||
@@ -190,8 +190,8 @@ describe("Video Asset Component", () => {
|
||||
|
||||
setupMoveFrameTest(currentAsset);
|
||||
|
||||
wrapper.find(CustomVideoPlayerButton).at(3).simulate("click");
|
||||
wrapper.find(CustomVideoPlayerButton).at(2).simulate("click");
|
||||
wrapper.find(CustomVideoPlayerButton).at(3).find("button").simulate("click");
|
||||
wrapper.find(CustomVideoPlayerButton).at(2).find("button").simulate("click");
|
||||
|
||||
expect(videoPlayerMock.prototype.pause).toBeCalled();
|
||||
expect(videoPlayerMock.prototype.seek).toBeCalledWith(expectedAsset.timestamp);
|
||||
@@ -203,7 +203,7 @@ describe("Video Asset Component", () => {
|
||||
onBeforeAssetChangedHandler.mockImplementationOnce(() => false);
|
||||
setupMoveFrameTest(currentAsset);
|
||||
|
||||
wrapper.find(CustomVideoPlayerButton).at(3).simulate("click");
|
||||
wrapper.find(CustomVideoPlayerButton).at(3).find("button").simulate("click");
|
||||
|
||||
expect(videoPlayerMock.prototype.pause).not.toBeCalled();
|
||||
expect(videoPlayerMock.prototype.seek).not.toBeCalled();
|
||||
@@ -214,8 +214,8 @@ describe("Video Asset Component", () => {
|
||||
const currentAsset = childAssets[0];
|
||||
setupMoveFrameTest(currentAsset);
|
||||
|
||||
wrapper.find(CustomVideoPlayerButton).at(3).simulate("click");
|
||||
wrapper.find(CustomVideoPlayerButton).at(1).simulate("click");
|
||||
wrapper.find(CustomVideoPlayerButton).at(3).find("button").simulate("click");
|
||||
wrapper.find(CustomVideoPlayerButton).at(1).find("button").simulate("click");
|
||||
|
||||
expect(videoPlayerMock.prototype.pause).toBeCalled();
|
||||
expect(videoPlayerMock.prototype.seek).toBeCalledWith(
|
||||
@@ -227,7 +227,7 @@ describe("Video Asset Component", () => {
|
||||
onBeforeAssetChangedHandler.mockImplementationOnce(() => false);
|
||||
setupMoveFrameTest(currentAsset);
|
||||
|
||||
wrapper.find(CustomVideoPlayerButton).at(3).simulate("click");
|
||||
wrapper.find(CustomVideoPlayerButton).at(3).find("button").simulate("click");
|
||||
|
||||
expect(videoPlayerMock.prototype.pause).not.toBeCalled();
|
||||
expect(videoPlayerMock.prototype.seek).not.toBeCalled();
|
||||
@@ -237,7 +237,7 @@ describe("Video Asset Component", () => {
|
||||
const currentAsset = childAssets[4];
|
||||
setupMoveFrameTest(currentAsset);
|
||||
|
||||
wrapper.find(CustomVideoPlayerButton).at(0).simulate("click");
|
||||
wrapper.find(CustomVideoPlayerButton).at(0).find("button").simulate("click");
|
||||
|
||||
expect(videoPlayerMock.prototype.pause).toBeCalled();
|
||||
expect(videoPlayerMock.prototype.seek).toBeCalledWith(
|
||||
@@ -249,7 +249,7 @@ describe("Video Asset Component", () => {
|
||||
onBeforeAssetChangedHandler.mockImplementationOnce(() => false);
|
||||
setupMoveFrameTest(currentAsset);
|
||||
|
||||
wrapper.find(CustomVideoPlayerButton).at(0).simulate("click");
|
||||
wrapper.find(CustomVideoPlayerButton).at(0).find("button").simulate("click");
|
||||
|
||||
expect(videoPlayerMock.prototype.pause).not.toBeCalled();
|
||||
expect(videoPlayerMock.prototype.seek).not.toBeCalled();
|
||||
|
||||
@@ -22,7 +22,7 @@ describe("Confirm component", () => {
|
||||
|
||||
it("Renders nothing if not activiated", () => {
|
||||
const wrapper = createComponent(defaultProps);
|
||||
expect(wrapper.html()).toBeNull();
|
||||
expect(wrapper.html()).toEqual("");
|
||||
});
|
||||
|
||||
it("Renders modal when activiated", () => {
|
||||
|
||||
@@ -97,4 +97,4 @@ export class ConnectionPicker extends React.Component<IConnectionPickerProps, IC
|
||||
}
|
||||
}
|
||||
|
||||
export const ConnectionPickerWithRouter = withRouter<IConnectionPickerProps>(ConnectionPicker);
|
||||
export const ConnectionPickerWithRouter = withRouter(ConnectionPicker);
|
||||
|
||||
@@ -2,7 +2,7 @@ import React from "react";
|
||||
import { IActiveLearningFormProps, ActiveLearningForm, IActiveLearningFormState } from "./activeLearningForm";
|
||||
import { ReactWrapper, mount } from "enzyme";
|
||||
import { ModelPathType, IActiveLearningSettings } from "../../../../models/applicationState";
|
||||
import Form from "react-jsonschema-form";
|
||||
import Form, { IChangeEvent } from "react-jsonschema-form";
|
||||
|
||||
describe("Active Learning Form", () => {
|
||||
const onChangeHandler = jest.fn();
|
||||
@@ -21,6 +21,17 @@ describe("Active Learning Form", () => {
|
||||
onCancel: onCancelHandler,
|
||||
};
|
||||
|
||||
const defaultEvent: IChangeEvent = {
|
||||
edit: false,
|
||||
errorSchema: null,
|
||||
errors: [],
|
||||
idSchema: null,
|
||||
schema: null,
|
||||
status: null,
|
||||
uiSchema: null,
|
||||
formData: null,
|
||||
};
|
||||
|
||||
function createComponent(props?: IActiveLearningFormProps)
|
||||
: ReactWrapper<IActiveLearningFormProps, IActiveLearningFormState> {
|
||||
props = props || defaultProps;
|
||||
@@ -72,16 +83,16 @@ describe("Active Learning Form", () => {
|
||||
};
|
||||
|
||||
// Set type to URL
|
||||
wrapper.find(Form).props().onChange({ formData: { modelPathType: ModelPathType.Url } });
|
||||
wrapper.find(Form).props().onChange({ ...defaultEvent, formData: { modelPathType: ModelPathType.Url } });
|
||||
// Set the remaining settings
|
||||
wrapper.find(Form).props().onChange({ formData });
|
||||
wrapper.find(Form).props().onChange({ ...defaultEvent, formData });
|
||||
expect(wrapper.state().formData).toEqual(formData);
|
||||
expect(onChangeHandler).toBeCalledWith(formData);
|
||||
});
|
||||
|
||||
it("submits form data to the registered submit handler", () => {
|
||||
const wrapper = createComponent();
|
||||
wrapper.find(Form).props().onSubmit({ formData: defaultProps.settings });
|
||||
wrapper.find(Form).props().onSubmit({ ...defaultEvent, formData: defaultProps.settings });
|
||||
|
||||
expect(onSubmitHandler).toBeCalledWith(defaultProps.settings);
|
||||
});
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import React from "react";
|
||||
import Form, { ISubmitEvent, IChangeEvent, Widget } from "react-jsonschema-form";
|
||||
import { IActiveLearningSettings, ModelPathType } from "../../../../models/applicationState";
|
||||
import { IActiveLearningSettings } from "../../../../models/applicationState";
|
||||
import { strings, addLocValues } from "../../../../common/strings";
|
||||
import CustomFieldTemplate from "../../common/customField/customFieldTemplate";
|
||||
import LocalFolderPicker from "../../common/localFolderPicker/localFolderPicker";
|
||||
|
||||
@@ -42,7 +42,7 @@ export default class EditorSideBar extends React.Component<IEditorSideBarProps,
|
||||
|
||||
public render() {
|
||||
return (
|
||||
<div className="editor-page-bottombar-nav">
|
||||
<div className="editor-page-sidebar-nav">
|
||||
<AutoSizer>
|
||||
{({ height, width }) => (
|
||||
<List
|
||||
|
||||
@@ -3,7 +3,6 @@ import Menu, { MenuItem, SubMenu, Divider } from "rc-menu";
|
||||
import { PlatformType } from "../../../common/hostProcess";
|
||||
import "./titleBar.scss";
|
||||
import { strings } from "../../../common/strings";
|
||||
import { HelpMenu } from "./helpMenu";
|
||||
|
||||
export interface ITitleBarProps extends React.Props<TitleBar> {
|
||||
icon?: string | JSX.Element;
|
||||
@@ -88,23 +87,23 @@ export class TitleBar extends React.Component<ITitleBarProps, ITitleBarState> {
|
||||
{this.state.platform === PlatformType.Windows &&
|
||||
<ul>
|
||||
<li title={strings.titleBar.minimize} className="btn-window-minimize"
|
||||
onClick={this.minimizeWindow}>
|
||||
onClick={this.minimizeWindow}>
|
||||
<i className="far fa-window-minimize" />
|
||||
</li>
|
||||
{!this.state.maximized &&
|
||||
<li title={strings.titleBar.maximize} className="btn-window-maximize"
|
||||
onClick={this.maximizeWindow}>
|
||||
onClick={this.maximizeWindow}>
|
||||
<i className="far fa-window-maximize" />
|
||||
</li>
|
||||
}
|
||||
{this.state.maximized &&
|
||||
<li title={strings.titleBar.restore} className="btn-window-restore"
|
||||
onClick={this.unmaximizeWindow}>
|
||||
onClick={this.unmaximizeWindow}>
|
||||
<i className="far fa-window-restore" />
|
||||
</li>
|
||||
}
|
||||
<li title={strings.titleBar.close} className="btn-window-close"
|
||||
onClick={this.closeWindow}>
|
||||
onClick={this.closeWindow}>
|
||||
<i className="fas fa-times" />
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -40,7 +40,7 @@ export const reducer = (state: IProject = null, action: AnyAction): IProject =>
|
||||
const updatedAssets = { ...state.assets } || {};
|
||||
updatedAssets[action.payload.asset.id] = { ...action.payload.asset };
|
||||
|
||||
const assetTags = new Set();
|
||||
const assetTags = new Set<string>();
|
||||
action.payload.regions.forEach((region) => region.tags.forEach((tag) => assetTags.add(tag)));
|
||||
|
||||
const newTags: ITag[] = state.tags ? [...state.tags] : [];
|
||||
|
||||
+19
-1
@@ -1,10 +1,28 @@
|
||||
import { configure } from 'enzyme';
|
||||
import 'jest-enzyme';
|
||||
import Adapter from 'enzyme-adapter-react-16';
|
||||
import { TextEncoder, TextDecoder } from 'util';
|
||||
|
||||
Object.defineProperties(global, {
|
||||
TextEncoder: {
|
||||
value: TextEncoder,
|
||||
writable: true,
|
||||
configurable: true,
|
||||
enumerable: false
|
||||
},
|
||||
TextDecoder: {
|
||||
value: TextDecoder,
|
||||
writable: true,
|
||||
configurable: true,
|
||||
enumerable: false
|
||||
}
|
||||
});
|
||||
|
||||
configure({ adapter: new Adapter() });
|
||||
|
||||
// Silence console.log and console.group statements in testing
|
||||
console.log = console.group = function() {};
|
||||
console.log = console.group = function () { };
|
||||
|
||||
const electronMock = {
|
||||
ipcRenderer: {
|
||||
send: jest.fn(),
|
||||
|
||||
@@ -25,5 +25,9 @@
|
||||
},
|
||||
"include": [
|
||||
"src"
|
||||
],
|
||||
"exclude": [
|
||||
"**/*.test.ts",
|
||||
"**/*.test.tsx"
|
||||
]
|
||||
}
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário