feat(editor): Add undo/redo enabling/disabling a node in new canvas (no-changelog) (#10143)

This commit is contained in:
Alex Grozav 2024-07-23 09:49:37 +03:00 committed by GitHub
parent dc13ceb416
commit ee676fd934
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 65 additions and 3 deletions

View file

@ -569,6 +569,47 @@ describe('useCanvasOperations', () => {
}); });
}); });
describe('toggleNodesDisabled', () => {
it('disables nodes based on provided ids', async () => {
const nodes = [
createTestNode({ id: '1', name: 'A' }),
createTestNode({ id: '2', name: 'B' }),
];
vi.spyOn(workflowsStore, 'getNodesByIds').mockReturnValue(nodes);
const updateNodePropertiesSpy = vi.spyOn(workflowsStore, 'updateNodeProperties');
canvasOperations.toggleNodesDisabled([nodes[0].id, nodes[1].id], {
trackHistory: true,
trackBulk: true,
});
expect(updateNodePropertiesSpy).toHaveBeenCalledWith({
name: nodes[0].name,
properties: {
disabled: true,
},
});
});
});
describe('revertToggleNodeDisabled', () => {
it('re-enables a previously disabled node', () => {
const nodeName = 'testNode';
const node = createTestNode({ name: nodeName });
vi.spyOn(workflowsStore, 'getNodeByName').mockReturnValue(node);
const updateNodePropertiesSpy = vi.spyOn(workflowsStore, 'updateNodeProperties');
canvasOperations.revertToggleNodeDisabled(nodeName);
expect(updateNodePropertiesSpy).toHaveBeenCalledWith({
name: nodeName,
properties: {
disabled: true,
},
});
});
});
describe('addConnections', () => { describe('addConnections', () => {
it('should create connections between nodes', async () => { it('should create connections between nodes', async () => {
const nodeTypeName = 'type'; const nodeTypeName = 'type';

View file

@ -348,10 +348,25 @@ export function useCanvasOperations({
function toggleNodesDisabled( function toggleNodesDisabled(
ids: string[], ids: string[],
{ trackHistory = true }: { trackHistory?: boolean } = {}, { trackHistory = true, trackBulk = true }: { trackHistory?: boolean; trackBulk?: boolean } = {},
) { ) {
if (trackBulk) {
historyStore.startRecordingUndo();
}
const nodes = workflowsStore.getNodesByIds(ids); const nodes = workflowsStore.getNodesByIds(ids);
nodeHelpers.disableNodes(nodes, trackHistory); nodeHelpers.disableNodes(nodes, trackHistory);
if (trackBulk) {
historyStore.stopRecordingUndo();
}
}
function revertToggleNodeDisabled(nodeName: string) {
const node = workflowsStore.getNodeByName(nodeName);
if (node) {
nodeHelpers.disableNodes([node]);
}
} }
function toggleNodesPinned(ids: string[], source: PinDataSource) { function toggleNodesPinned(ids: string[], source: PinDataSource) {
@ -1618,6 +1633,7 @@ export function useCanvasOperations({
setNodeActiveByName, setNodeActiveByName,
setNodeSelected, setNodeSelected,
toggleNodesDisabled, toggleNodesDisabled,
revertToggleNodeDisabled,
toggleNodesPinned, toggleNodesPinned,
setNodeParameters, setNodeParameters,
renameNode, renameNode,

View file

@ -139,6 +139,7 @@ const {
setNodeActive, setNodeActive,
setNodeSelected, setNodeSelected,
toggleNodesDisabled, toggleNodesDisabled,
revertToggleNodeDisabled,
toggleNodesPinned, toggleNodesPinned,
setNodeParameters, setNodeParameters,
deleteNode, deleteNode,
@ -466,6 +467,10 @@ function onToggleNodeDisabled(id: string) {
toggleNodesDisabled([id]); toggleNodesDisabled([id]);
} }
function onRevertToggleNodeDisabled({ nodeName }: { nodeName: string }) {
revertToggleNodeDisabled(nodeName);
}
function onToggleNodesDisabled(ids: string[]) { function onToggleNodesDisabled(ids: string[]) {
if (!checkIfEditingIsAllowed()) { if (!checkIfEditingIsAllowed()) {
return; return;
@ -982,7 +987,7 @@ function addUndoRedoEventBindings() {
historyBus.on('revertAddConnection', onRevertCreateConnection); historyBus.on('revertAddConnection', onRevertCreateConnection);
historyBus.on('revertRemoveConnection', onRevertDeleteConnection); historyBus.on('revertRemoveConnection', onRevertDeleteConnection);
historyBus.on('revertRenameNode', onRevertRenameNode); historyBus.on('revertRenameNode', onRevertRenameNode);
// historyBus.on('enableNodeToggle', onRevertEnableToggle); historyBus.on('enableNodeToggle', onRevertToggleNodeDisabled);
} }
function removeUndoRedoEventBindings() { function removeUndoRedoEventBindings() {
@ -992,7 +997,7 @@ function removeUndoRedoEventBindings() {
historyBus.off('revertAddConnection', onRevertCreateConnection); historyBus.off('revertAddConnection', onRevertCreateConnection);
historyBus.off('revertRemoveConnection', onRevertDeleteConnection); historyBus.off('revertRemoveConnection', onRevertDeleteConnection);
historyBus.off('revertRenameNode', onRevertRenameNode); historyBus.off('revertRenameNode', onRevertRenameNode);
// historyBus.off('enableNodeToggle', onRevertEnableToggle); historyBus.off('enableNodeToggle', onRevertToggleNodeDisabled);
} }
/** /**