diff --git a/core/gui/src/app/workspace/component/menu/menu.component.html b/core/gui/src/app/workspace/component/menu/menu.component.html
index c7c486ae284..e212169321f 100644
--- a/core/gui/src/app/workspace/component/menu/menu.component.html
+++ b/core/gui/src/app/workspace/component/menu/menu.component.html
@@ -291,22 +291,22 @@
nzType="database"
nzTheme="twotone">
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/gui/src/app/workspace/component/workflow-editor/workflow-editor.component.spec.ts b/core/gui/src/app/workspace/component/workflow-editor/workflow-editor.component.spec.ts
index 161d217fd86..40574b0f7ef 100644
--- a/core/gui/src/app/workspace/component/workflow-editor/workflow-editor.component.spec.ts
+++ b/core/gui/src/app/workspace/component/workflow-editor/workflow-editor.component.spec.ts
@@ -897,54 +897,56 @@ describe("WorkflowEditorComponent", () => {
expect(jointGraphWrapper.getCurrentHighlightedOperatorIDs()).toContain(mockResultPredicate.operatorID);
});
- //undo
- it("should undo action when user presses command + Z or control + Z", () => {
- spyOn(workflowVersionService, "getDisplayParticularVersionStream").and.returnValue(of(false));
- spyOn(undoRedoService, "canUndo").and.returnValue(true);
- let undoSpy = spyOn(undoRedoService, "undoAction");
- fixture.detectChanges();
- const commandZEvent = new KeyboardEvent("keydown", { key: "Z", metaKey: true, shiftKey: false });
- (document.activeElement as HTMLElement)?.blur();
- document.dispatchEvent(commandZEvent);
- fixture.detectChanges();
- expect(undoSpy).toHaveBeenCalledTimes(1);
-
- const controlZEvent = new KeyboardEvent("keydown", { key: "Z", ctrlKey: true, shiftKey: false });
- (document.activeElement as HTMLElement)?.blur();
- document.dispatchEvent(controlZEvent);
- fixture.detectChanges();
- expect(undoSpy).toHaveBeenCalledTimes(2);
- });
-
- //redo
- it("should redo action when user presses command/control + Y or command/control + shift + Z", () => {
- spyOn(workflowVersionService, "getDisplayParticularVersionStream").and.returnValue(of(false));
- spyOn(undoRedoService, "canRedo").and.returnValue(true);
- let redoSpy = spyOn(undoRedoService, "redoAction");
- fixture.detectChanges();
- const commandYEvent = new KeyboardEvent("keydown", { key: "y", metaKey: true, shiftKey: false });
- (document.activeElement as HTMLElement)?.blur();
- document.dispatchEvent(commandYEvent);
- fixture.detectChanges();
- expect(redoSpy).toHaveBeenCalledTimes(1);
-
- const controlYEvent = new KeyboardEvent("keydown", { key: "y", ctrlKey: true, shiftKey: false });
- (document.activeElement as HTMLElement)?.blur();
- document.dispatchEvent(controlYEvent);
- fixture.detectChanges();
- expect(redoSpy).toHaveBeenCalledTimes(2);
-
- const commandShitZEvent = new KeyboardEvent("keydown", { key: "z", metaKey: true, shiftKey: true });
- (document.activeElement as HTMLElement)?.blur();
- document.dispatchEvent(commandShitZEvent);
- fixture.detectChanges();
- expect(redoSpy).toHaveBeenCalledTimes(3);
-
- const controlShitZEvent = new KeyboardEvent("keydown", { key: "z", ctrlKey: true, shiftKey: true });
- (document.activeElement as HTMLElement)?.blur();
- document.dispatchEvent(controlShitZEvent);
- fixture.detectChanges();
- expect(redoSpy).toHaveBeenCalledTimes(4);
- });
+ // Temporarily disabling undo-redo because of a bug that can cause invalid workflow structures.
+ // TODO: enable after fixing the bug.
+ // //undo
+ // it("should undo action when user presses command + Z or control + Z", () => {
+ // spyOn(workflowVersionService, "getDisplayParticularVersionStream").and.returnValue(of(false));
+ // spyOn(undoRedoService, "canUndo").and.returnValue(true);
+ // let undoSpy = spyOn(undoRedoService, "undoAction");
+ // fixture.detectChanges();
+ // const commandZEvent = new KeyboardEvent("keydown", { key: "Z", metaKey: true, shiftKey: false });
+ // (document.activeElement as HTMLElement)?.blur();
+ // document.dispatchEvent(commandZEvent);
+ // fixture.detectChanges();
+ // expect(undoSpy).toHaveBeenCalledTimes(1);
+ //
+ // const controlZEvent = new KeyboardEvent("keydown", { key: "Z", ctrlKey: true, shiftKey: false });
+ // (document.activeElement as HTMLElement)?.blur();
+ // document.dispatchEvent(controlZEvent);
+ // fixture.detectChanges();
+ // expect(undoSpy).toHaveBeenCalledTimes(2);
+ // });
+ //
+ // //redo
+ // it("should redo action when user presses command/control + Y or command/control + shift + Z", () => {
+ // spyOn(workflowVersionService, "getDisplayParticularVersionStream").and.returnValue(of(false));
+ // spyOn(undoRedoService, "canRedo").and.returnValue(true);
+ // let redoSpy = spyOn(undoRedoService, "redoAction");
+ // fixture.detectChanges();
+ // const commandYEvent = new KeyboardEvent("keydown", { key: "y", metaKey: true, shiftKey: false });
+ // (document.activeElement as HTMLElement)?.blur();
+ // document.dispatchEvent(commandYEvent);
+ // fixture.detectChanges();
+ // expect(redoSpy).toHaveBeenCalledTimes(1);
+ //
+ // const controlYEvent = new KeyboardEvent("keydown", { key: "y", ctrlKey: true, shiftKey: false });
+ // (document.activeElement as HTMLElement)?.blur();
+ // document.dispatchEvent(controlYEvent);
+ // fixture.detectChanges();
+ // expect(redoSpy).toHaveBeenCalledTimes(2);
+ //
+ // const commandShitZEvent = new KeyboardEvent("keydown", { key: "z", metaKey: true, shiftKey: true });
+ // (document.activeElement as HTMLElement)?.blur();
+ // document.dispatchEvent(commandShitZEvent);
+ // fixture.detectChanges();
+ // expect(redoSpy).toHaveBeenCalledTimes(3);
+ //
+ // const controlShitZEvent = new KeyboardEvent("keydown", { key: "z", ctrlKey: true, shiftKey: true });
+ // (document.activeElement as HTMLElement)?.blur();
+ // document.dispatchEvent(controlShitZEvent);
+ // fixture.detectChanges();
+ // expect(redoSpy).toHaveBeenCalledTimes(4);
+ // });
});
});
diff --git a/core/gui/src/app/workspace/component/workflow-editor/workflow-editor.component.ts b/core/gui/src/app/workspace/component/workflow-editor/workflow-editor.component.ts
index ac241952167..3275291b4bc 100644
--- a/core/gui/src/app/workspace/component/workflow-editor/workflow-editor.component.ts
+++ b/core/gui/src/app/workspace/component/workflow-editor/workflow-editor.component.ts
@@ -182,21 +182,23 @@ export class WorkflowEditorComponent implements AfterViewInit, OnDestroy {
.pipe(takeUntil(this._onProcessKeyboardActionObservable))
.subscribe(displayParticularWorkflowVersion => {
if (!displayParticularWorkflowVersion) {
- // cmd/ctrl+z undo ; ctrl+y or cmd/ctrl + shift+z for redo
- if ((event.metaKey || event.ctrlKey) && !event.shiftKey && event.key.toLowerCase() === "z") {
- // UNDO
- if (this.undoRedoService.canUndo()) {
- this.undoRedoService.undoAction();
- }
- } else if (
- ((event.metaKey || event.ctrlKey) && !event.shiftKey && event.key.toLowerCase() === "y") ||
- ((event.metaKey || event.ctrlKey) && event.shiftKey && event.key.toLowerCase() === "z")
- ) {
- // redo
- if (this.undoRedoService.canRedo()) {
- this.undoRedoService.redoAction();
- }
- }
+ // Temporarily disabling undo-redo because of a bug that can cause invalid workflow structures.
+ // TODO: enable after fixing the bug.
+ // // cmd/ctrl+z undo ; ctrl+y or cmd/ctrl + shift+z for redo
+ // if ((event.metaKey || event.ctrlKey) && !event.shiftKey && event.key.toLowerCase() === "z") {
+ // // UNDO
+ // if (this.undoRedoService.canUndo()) {
+ // this.undoRedoService.undoAction();
+ // }
+ // } else if (
+ // ((event.metaKey || event.ctrlKey) && !event.shiftKey && event.key.toLowerCase() === "y") ||
+ // ((event.metaKey || event.ctrlKey) && event.shiftKey && event.key.toLowerCase() === "z")
+ // ) {
+ // // redo
+ // if (this.undoRedoService.canRedo()) {
+ // this.undoRedoService.redoAction();
+ // }
+ // }
// below for future hotkeys
}
this._onProcessKeyboardActionObservable.complete();