From a3882b4410020dda5e2a7d335aede5cfb41f3cdf Mon Sep 17 00:00:00 2001 From: Antoine Detailleur <detailleur@fortiss.org> Date: Wed, 7 Apr 2021 16:17:11 +0200 Subject: [PATCH] [NRRPLT-8136] synchronize with other part of the code, rsuite --- package-lock.json | 188 ++++++++++++++++++ package.json | 1 + src/services/error-handler-service.js | 19 +- .../running-simulation-service.test.js | 14 +- .../server-resources-service.test.js | 4 +- .../execution/experiment-execution-service.js | 6 +- .../execution/running-simulation-service.js | 6 +- .../execution/server-resources-service.js | 2 +- .../files/experiment-storage-service.js | 2 +- .../files/import-experiment-service.js | 14 +- 10 files changed, 229 insertions(+), 27 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3e6f31c..0f5597d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1952,6 +1952,22 @@ } } }, + "@rsuite/icon-font": { + "version": "4.0.0-alpha.2", + "resolved": "https://registry.npmjs.org/@rsuite/icon-font/-/icon-font-4.0.0-alpha.2.tgz", + "integrity": "sha512-U7jy6W5kDQJXRMPoYzA9TxQfoLA6xR2IWm1O3BE/k4xg9l9xgin1qL6SBrI13bLJJCb3yzOX1tlbNN/BsO7Uww==" + }, + "@rsuite/icons": { + "version": "1.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/@rsuite/icons/-/icons-1.0.0-alpha.3.tgz", + "integrity": "sha512-MPWq1GZ0wEntb08qkFhdxaMQOGpCV06knoP1sg4GPtpiNSmaTW3S12Y7M4KnaSl0a4gHvH3kOd7NXUefJqoScQ==", + "requires": { + "@rsuite/icon-font": "^4.0.0-alpha.2", + "classnames": "^2.2.5", + "insert-css": "^2.0.0", + "lodash": "^4.17.20" + } + }, "@sinonjs/commons": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.1.tgz", @@ -4174,6 +4190,11 @@ "supports-color": "^5.3.0" } }, + "change-emitter": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/change-emitter/-/change-emitter-0.1.6.tgz", + "integrity": "sha1-6LL+PX8at9aaMhma/5HqaTFAlRU=" + }, "char-regex": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", @@ -5096,6 +5117,11 @@ "whatwg-url": "^8.0.0" } }, + "date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==" + }, "debug": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", @@ -5401,6 +5427,11 @@ "csstype": "^3.0.2" } }, + "dom-lib": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dom-lib/-/dom-lib-1.3.1.tgz", + "integrity": "sha512-rITCKgbLkF0MX4zk0+N6PDIJwKb3tZ5r8qClvD23On3RUgUtnBRSnpSb/7PbY+1gjl1IMVvfZCbRtyAE4oWA2Q==" + }, "dom-serializer": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", @@ -5550,6 +5581,11 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.610.tgz", "integrity": "sha512-eFDC+yVQpEhtlapk4CYDPfV9ajF9cEof5TBcO49L1ETO+aYogrKWDmYpZyxBScMNe8Bo/gJamH4amQ4yyvXg4g==" }, + "element-resize-event": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/element-resize-event/-/element-resize-event-3.0.3.tgz", + "integrity": "sha512-vhGNxT87PdZA6Ak4E0QhArwGzNcSPUwSN7n9wCFLeBlY2NNuuiwguQuQIp7P5oB65PLJ892yKcHiqz1xLWeiug==" + }, "elliptic": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", @@ -5591,6 +5627,24 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -6807,6 +6861,35 @@ "bser": "2.1.1" } }, + "fbjs": { + "version": "0.8.17", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", + "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", + "requires": { + "core-js": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.18" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "~2.0.3" + } + } + } + }, "figgy-pudding": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", @@ -8120,6 +8203,11 @@ } } }, + "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", @@ -8461,6 +8549,26 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "requires": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + }, + "dependencies": { + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + } + } + }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -13562,6 +13670,19 @@ "prop-types": "^15.6.2" } }, + "react-virtualized": { + "version": "9.22.3", + "resolved": "https://registry.npmjs.org/react-virtualized/-/react-virtualized-9.22.3.tgz", + "integrity": "sha512-MKovKMxWTcwPSxE1kK1HcheQTWfuCxAuBoSTf2gwyMM21NdX/PXUhnoP8Uc5dRKd+nKm8v41R36OellhdCpkrw==", + "requires": { + "@babel/runtime": "^7.7.2", + "clsx": "^1.0.4", + "dom-helpers": "^5.1.3", + "loose-envify": "^1.4.0", + "prop-types": "^15.7.2", + "react-lifecycles-compat": "^3.0.4" + } + }, "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", @@ -13659,6 +13780,26 @@ "picomatch": "^2.2.1" } }, + "recompose": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.30.0.tgz", + "integrity": "sha512-ZTrzzUDa9AqUIhRk4KmVFihH0rapdCSMFXjhHbNrjAWxBuUD/guYlyysMnuHjlZC/KRiOKRtB4jf96yYSkKE8w==", + "requires": { + "@babel/runtime": "^7.0.0", + "change-emitter": "^0.1.2", + "fbjs": "^0.8.1", + "hoist-non-react-statics": "^2.3.1", + "react-lifecycles-compat": "^3.0.2", + "symbol-observable": "^1.0.4" + }, + "dependencies": { + "hoist-non-react-statics": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", + "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" + } + } + }, "recursive-readdir": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", @@ -14217,6 +14358,38 @@ "xmldom": "^0.1.19" } }, + "rsuite": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/rsuite/-/rsuite-4.9.3.tgz", + "integrity": "sha512-OpUsnrMhrE7nSDKiVfUUbwG4AhK2lgbe7sAGYk0GnFgDeD3rtznKrukhQNi9T1W/MBuTib0BGzCHq1k1MoD6PQ==", + "requires": { + "@babel/runtime": "^7.8.4", + "classnames": ">=2.0.0", + "date-fns": "^1.30.1", + "dom-lib": "^1.2.1", + "element-resize-event": "^3.0.3", + "lodash": "^4.17.11", + "prop-types": "^15.7.2", + "react-lifecycles-compat": "^3.0.4", + "react-virtualized": "^9.21.0", + "recompose": "^0.30.0", + "rsuite-table": "^3.14.4", + "schema-typed": "^1.5.1" + } + }, + "rsuite-table": { + "version": "3.14.5", + "resolved": "https://registry.npmjs.org/rsuite-table/-/rsuite-table-3.14.5.tgz", + "integrity": "sha512-WlBHrijN2vNk/mlEtBGNjbLhKXVurzY/GWuiyNVTOvhtBp7y3CyLWxPVm48ZwBCyhrhA39urTDZaEjaPI8FP/Q==", + "requires": { + "@babel/runtime": "^7.12.5", + "@rsuite/icons": "^1.0.0-12", + "classnames": "^2.2.5", + "dom-lib": "^1.2.1", + "element-resize-event": "^3.0.2", + "lodash": "^4.17.20" + } + }, "rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", @@ -14465,6 +14638,11 @@ "object-assign": "^4.1.1" } }, + "schema-typed": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/schema-typed/-/schema-typed-1.5.1.tgz", + "integrity": "sha512-sx34fDSv08ubC9fTPKr3ba8YYs6nwqqRAITj6BXaxEaudJdjqtH7ZCe5wZQnQhbAGjKF4LcEwH15Oxf00pcSeg==" + }, "schema-utils": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", @@ -15547,6 +15725,11 @@ "util.promisify": "~1.0.0" } }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -16064,6 +16247,11 @@ "integrity": "sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==", "dev": true }, + "ua-parser-js": { + "version": "0.7.27", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.27.tgz", + "integrity": "sha512-eXMaRYK2skomGocoX0x9sBXzx5A1ZVQgXfrW4mTc8dT0zS7olEcyfudAzRC5tIIRgLxQ69B6jut3DI+n5hslPA==" + }, "uncontrollable": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", diff --git a/package.json b/package.json index fef55b1..9a5f08d 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "react-scripts": "4.0.0", "react-tabs": "3.1.2", "roslib": "1.1.0", + "rsuite": "4.9.3", "rxjs": "6.6.3", "web-vitals": "^0.2.4" }, diff --git a/src/services/error-handler-service.js b/src/services/error-handler-service.js index 9809a81..026e939 100644 --- a/src/services/error-handler-service.js +++ b/src/services/error-handler-service.js @@ -28,10 +28,27 @@ class ErrorHandlerService extends EventEmitter { return _instance; } - emitNetworkError(error) { + // HTTP request error + networkError(error) { error.type = 'Network Error'; this.emit(ErrorHandlerService.EVENTS.ERROR, error); } + + // Handling data error + dataError(error){ + error.type = 'Data Error'; + this.emit(ErrorHandlerService.EVENTS.ERROR, error); + } + + startSimulationError(error) { + error.type = 'Start Simulation Error'; + this.emit(ErrorHandlerService.EVENTS.ERROR, error); + } + + updateSimulationError(error) { + error.type = 'Update Simulation Error'; + this.emit(ErrorHandlerService.EVENTS.ERROR, error); + } } ErrorHandlerService.EVENTS = Object.freeze({ diff --git a/src/services/experiments/execution/__tests__/running-simulation-service.test.js b/src/services/experiments/execution/__tests__/running-simulation-service.test.js index ad13ee9..9492c9f 100644 --- a/src/services/experiments/execution/__tests__/running-simulation-service.test.js +++ b/src/services/experiments/execution/__tests__/running-simulation-service.test.js @@ -41,11 +41,11 @@ test('initializes and gets the simulation resources', async () => { expect(resources).toBeDefined(); // failure case - jest.spyOn(ErrorHandlerService.instance, 'displayServerHTTPError').mockImplementation(() => { }); + jest.spyOn(ErrorHandlerService.instance, 'networkError').mockImplementation(() => { }); let simIDFailure = 0; - expect(ErrorHandlerService.instance.displayServerHTTPError).not.toHaveBeenCalled(); + expect(ErrorHandlerService.instance.networkError).not.toHaveBeenCalled(); resources = await RunningSimulationService.instance.initConfigFiles(serverBaseURL, simIDFailure); - expect(ErrorHandlerService.instance.displayServerHTTPError).toHaveBeenCalled(); + expect(ErrorHandlerService.instance.networkError).toHaveBeenCalled(); }); test('verifies whether a simulation is ready', async () => { @@ -139,7 +139,7 @@ test('register for ROS status information', () => { test('can retrieve the state of a simulation', async () => { let returnValueGET = undefined; - jest.spyOn(ErrorHandlerService.instance, 'displayServerHTTPError').mockImplementation(); + jest.spyOn(ErrorHandlerService.instance, 'networkError').mockImplementation(); jest.spyOn(RunningSimulationService.instance, 'httpRequestGET').mockImplementation(() => { if (RunningSimulationService.instance.httpRequestGET.mock.calls.length === 1) { returnValueGET = { state: EXPERIMENT_STATE.PAUSED }; // proper state msg @@ -161,12 +161,12 @@ test('can retrieve the state of a simulation', async () => { // call 2 => rejected simSate = await RunningSimulationService.instance.getState('test-url', 1); - expect(ErrorHandlerService.instance.displayServerHTTPError).toHaveBeenCalled(); + expect(ErrorHandlerService.instance.networkError).toHaveBeenCalled(); }); test('can set the state of a simulation', async () => { let returnValuePUT = undefined; - jest.spyOn(ErrorHandlerService.instance, 'onErrorSimulationUpdate').mockImplementation(); + jest.spyOn(ErrorHandlerService.instance, 'updateSimuationError').mockImplementation(); jest.spyOn(RunningSimulationService.instance, 'httpRequestPUT').mockImplementation(() => { if (RunningSimulationService.instance.httpRequestGET.mock.calls.length === 1) { returnValuePUT = {}; @@ -184,5 +184,5 @@ test('can set the state of a simulation', async () => { // call 2 => rejected returnValue = await RunningSimulationService.instance.updateState('test-url', 1, EXPERIMENT_STATE.PAUSED); - expect(ErrorHandlerService.instance.onErrorSimulationUpdate).toHaveBeenCalled(); + expect(ErrorHandlerService.instance.updateSimulationError).toHaveBeenCalled(); }); \ No newline at end of file diff --git a/src/services/experiments/execution/__tests__/server-resources-service.test.js b/src/services/experiments/execution/__tests__/server-resources-service.test.js index 2345da7..92ecf5b 100644 --- a/src/services/experiments/execution/__tests__/server-resources-service.test.js +++ b/src/services/experiments/execution/__tests__/server-resources-service.test.js @@ -67,9 +67,9 @@ test('can get a server config', async () => { jest.spyOn(ServerResourcesService.instance, 'httpRequestGET').mockImplementation(() => { return Promise.reject(); }); - jest.spyOn(ErrorHandlerService.instance, 'displayServerHTTPError').mockImplementation(); + jest.spyOn(ErrorHandlerService.instance, 'networkError').mockImplementation(); config = await ServerResourcesService.instance.getServerConfig('test-server-id'); - expect(ErrorHandlerService.instance.displayServerHTTPError).toHaveBeenCalled(); + expect(ErrorHandlerService.instance.networkError).toHaveBeenCalled(); }); test('should stop polling updates when window is unloaded', async () => { diff --git a/src/services/experiments/execution/experiment-execution-service.js b/src/services/experiments/execution/experiment-execution-service.js index 924c608..0076fbf 100644 --- a/src/services/experiments/execution/experiment-execution-service.js +++ b/src/services/experiments/execution/experiment-execution-service.js @@ -3,6 +3,7 @@ import _ from 'lodash'; //import NrpAnalyticsService from '../../nrp-analytics-service.js'; import ServerResourcesService from './server-resources-service.js'; import SimulationService from './running-simulation-service.js'; +import ErrorHandlerService from '../../error-handler-service'; import { HttpService } from '../../http-service.js'; import { EXPERIMENT_STATE } from '../experiment-constants.js'; @@ -88,9 +89,8 @@ class ExperimentExecutionService extends HttpService { profiler, progressCallback ).catch((failure) => { - if (failure.error && failure.error.data) { - //TODO: proper ErrorHandlerService callback - console.error('Failed to start simulation: ' + JSON.stringify(failure.error.data)); + if (failure.error) { + ErrorHandlerService.instance.startSimulationError(failure.error); } fatalErrorOccurred = fatalErrorOccurred || failure.isFatal; diff --git a/src/services/experiments/execution/running-simulation-service.js b/src/services/experiments/execution/running-simulation-service.js index caa3a1c..754ccc8 100644 --- a/src/services/experiments/execution/running-simulation-service.js +++ b/src/services/experiments/execution/running-simulation-service.js @@ -44,7 +44,7 @@ class SimulationService extends HttpService { cachedConfigFiles = response.resources; } catch (error) { - ErrorHandlerService.instance.displayServerHTTPError(error); + ErrorHandlerService.instance.networkError(error); } return cachedConfigFiles; @@ -151,7 +151,7 @@ class SimulationService extends HttpService { return response; } catch (error) { - ErrorHandlerService.instance.displayServerHTTPError(error); + ErrorHandlerService.instance.networkError(error); } } @@ -168,7 +168,7 @@ class SimulationService extends HttpService { return response; } catch (error) { - ErrorHandlerService.instance.onErrorSimulationUpdate(error); + ErrorHandlerService.instance.updateSimulationError(error); } } } diff --git a/src/services/experiments/execution/server-resources-service.js b/src/services/experiments/execution/server-resources-service.js index 708a46b..8a2eb78 100644 --- a/src/services/experiments/execution/server-resources-service.js +++ b/src/services/experiments/execution/server-resources-service.js @@ -79,7 +79,7 @@ class ServerResourcesService extends HttpService { .then(async (response) => { return await response.json(); }) - .catch(ErrorHandlerService.instance.displayServerHTTPError); + .catch(ErrorHandlerService.instance.networkError); } } diff --git a/src/services/experiments/files/experiment-storage-service.js b/src/services/experiments/files/experiment-storage-service.js index 4b17699..a02538e 100644 --- a/src/services/experiments/files/experiment-storage-service.js +++ b/src/services/experiments/files/experiment-storage-service.js @@ -79,7 +79,7 @@ class ExperimentStorageService extends HttpService { this.emit(ExperimentStorageService.EVENTS.UPDATE_EXPERIMENTS, this.experiments); } catch (error) { - ErrorHandlerService.instance.emit(ErrorHandlerService.EVENTS.ERROR, error); + ErrorHandlerService.instance.networkError(error); } } diff --git a/src/services/experiments/files/import-experiment-service.js b/src/services/experiments/files/import-experiment-service.js index c0a3181..4570938 100644 --- a/src/services/experiments/files/import-experiment-service.js +++ b/src/services/experiments/files/import-experiment-service.js @@ -42,10 +42,6 @@ export default class ImportExperimentService extends HttpService { return _instance; } - async createImportErrorPopup(error) { - ErrorHandlerService.instance.emitNetworkError(error); - } - getImportZipResponses(responses) { let importZipResponses = { zipBaseFolderName: [], @@ -73,7 +69,7 @@ export default class ImportExperimentService extends HttpService { async scanStorage() { return this.httpRequestPOST(scanStorageURL) .then(response => this.getScanStorageResponse(response)) - .catch(error => this.createImportErrorPopup(error)); + .catch(error => ErrorHandlerService.instance.networkError(error)); } async zipExperimentFolder(event) { @@ -110,7 +106,7 @@ export default class ImportExperimentService extends HttpService { ) ) .catch(error => { - this.createImportErrorPopup(error); + ErrorHandlerService.instance.dataError(error); return Promise.reject(error); }) ); @@ -119,7 +115,7 @@ export default class ImportExperimentService extends HttpService { return Promise.all(promises) .then(() => zip.generateAsync({ type: 'blob' })) .catch(error => { - this.createImportErrorPopup(error); + ErrorHandlerService.instance.dataError(error); return Promise.reject(error); }); } @@ -128,7 +124,7 @@ export default class ImportExperimentService extends HttpService { return this.zipExperimentFolder(event).then(async zipContent => { return this.httpRequestPOST(importExperimentURL, zipContent, options) .then(response => response.json()) - .catch(error => this.createImportErrorPopup(error) + .catch(error => ErrorHandlerService.instance.networkError(error) ); }); } @@ -155,7 +151,7 @@ export default class ImportExperimentService extends HttpService { zipContents.map(zipContent => this.httpRequestPOST(importExperimentURL, zipContent, options) .catch(error => { - this.createImportErrorPopup(error); + ErrorHandlerService.instance.networkError(error); return Promise.reject(error); }) ) -- GitLab