diff --git a/packages/base/src/experiment-manager.ts b/packages/base/src/experiment-manager.ts index f20491dd8..7a9893091 100644 --- a/packages/base/src/experiment-manager.ts +++ b/packages/base/src/experiment-manager.ts @@ -121,6 +121,17 @@ export class ExperimentManager { return undefined; } + /** + * Close the given experiment from the server + * @param experimentUUID experiment UUID + */ + async closeExperiment(experimentUUID: string): Promise { + const experimentToDelete = this.fOpenExperiments.get(experimentUUID); + if (experimentToDelete) { + await this.fTspClient.closeExperiment(experimentUUID); + } + } + /** * Delete the given experiment from the server * @param experimentUUID experiment UUID diff --git a/theia-extensions/viewer-prototype/src/browser/theia-rpc-tsp-proxy.ts b/theia-extensions/viewer-prototype/src/browser/theia-rpc-tsp-proxy.ts index 50a3d00d2..e5f576108 100644 --- a/theia-extensions/viewer-prototype/src/browser/theia-rpc-tsp-proxy.ts +++ b/theia-extensions/viewer-prototype/src/browser/theia-rpc-tsp-proxy.ts @@ -112,6 +112,15 @@ export class TheiaRpcTspProxy implements ITspClient { return this.toTspClientResponse(await this.tspClient.updateExperiment(expUUID, parameters)); } + /** + * Close an experiment + * @param expUUID Experiment UUID to close + * @returns The closed experiment + */ + public async closeExperiment(expUUID: string): Promise> { + return this.toTspClientResponse(await this.tspClient.closeExperiment(expUUID)); + } + /** * Delete an experiment on the server * @param expUUID Experiment UUID to delete diff --git a/theia-extensions/viewer-prototype/src/browser/trace-explorer/trace-explorer-sub-widgets/theia-trace-explorer-opened-traces-widget.tsx b/theia-extensions/viewer-prototype/src/browser/trace-explorer/trace-explorer-sub-widgets/theia-trace-explorer-opened-traces-widget.tsx index 90e854555..2bee26b37 100644 --- a/theia-extensions/viewer-prototype/src/browser/trace-explorer/trace-explorer-sub-widgets/theia-trace-explorer-opened-traces-widget.tsx +++ b/theia-extensions/viewer-prototype/src/browser/trace-explorer/trace-explorer-sub-widgets/theia-trace-explorer-opened-traces-widget.tsx @@ -67,11 +67,12 @@ export class TraceExplorerOpenedTracesWidget extends ReactWidget { public closeExperiment(traceUUID: string): void { signalManager().fireCloseTraceViewerTabSignal(traceUUID); + this._experimentManager.closeExperiment(traceUUID); } public deleteExperiment(traceUUID: string): void { - this._experimentManager.deleteExperiment(traceUUID); this.closeExperiment(traceUUID); + this._experimentManager.deleteExperiment(traceUUID); } render(): React.ReactNode { diff --git a/theia-extensions/viewer-prototype/src/browser/trace-viewer/trace-viewer.tsx b/theia-extensions/viewer-prototype/src/browser/trace-viewer/trace-viewer.tsx index 416ebcf59..685159a09 100644 --- a/theia-extensions/viewer-prototype/src/browser/trace-viewer/trace-viewer.tsx +++ b/theia-extensions/viewer-prototype/src/browser/trace-viewer/trace-viewer.tsx @@ -349,6 +349,7 @@ export class TraceViewerWidget extends ReactWidget implements StatefulWidget { super.onCloseRequest(msg); if (this.openedExperiment) { signalManager().fireExperimentClosedSignal(this.openedExperiment); + this.experimentManager.closeExperiment(this.openedExperiment.UUID); } }