Skip to content

Commit bfb0410

Browse files
committed
undo and redo added for position ajax call
1 parent 2113502 commit bfb0410

File tree

3 files changed

+30
-16
lines changed

3 files changed

+30
-16
lines changed

administrator/components/com_workflow/resources/scripts/components/canvas/WorkflowCanvas.vue

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ import { generatePositionedNodes, createSpecialNode } from '../../utils/position
6464
import { generateStyledEdges } from '../../utils/edges.js';
6565
import { setupGlobalShortcuts } from '../../utils/KeyboardManager.js';
6666
import { debounce } from '../../utils/utils.es6'
67+
import store from "../../store/store.es6";
6768
6869
export default {
6970
name: 'WorkflowCanvas',
@@ -213,21 +214,18 @@ export default {
213214
saveStatus.value = 'unsaved';
214215
updateSaveMessage();
215216
await store.dispatch('updateStagePosition', { id: node?.id, x, y })
216-
saveNodePosition(node.id)
217+
saveNodePosition()
217218
}
218219
}
219220
220-
const saveNodePosition = debounce(async (stageId) => {
221-
const node = positionedNodes.value.find(n => n.id === stageId);
222-
if (node) {
221+
const saveNodePosition = debounce(async () => {
223222
const response = await store.dispatch('updateStagePositionAjax');
224223
if (response) {
225224
saveStatus.value = 'upToDate';
226225
updateSaveMessage();
227226
} else {
228227
console.error('Failed to save stage position:', response?.error || 'Unknown error');
229228
}
230-
}
231229
}, 3000);
232230
233231
function openModal(type, id = null) {
@@ -262,8 +260,18 @@ export default {
262260
else if (selectedTransition.value) showDeleteModal('transition', selectedTransition.value);
263261
},
264262
toggleMode: toggleTransitionMode,
265-
undo: () => store.dispatch('undo'),
266-
redo: () => store.dispatch('redo'),
263+
undo: () => {
264+
store.dispatch('undo');
265+
saveStatus.value = 'unsaved';
266+
updateSaveMessage();
267+
saveNodePosition();
268+
},
269+
redo : () => {
270+
store.dispatch('redo');
271+
saveStatus.value = 'unsaved';
272+
updateSaveMessage();
273+
saveNodePosition();
274+
},
267275
clearSelection,
268276
zoomIn,
269277
zoomOut,
@@ -290,6 +298,20 @@ export default {
290298
}, 0);
291299
});
292300
301+
window.WorkflowGraph.Event.listen('onClickRedoWorkflow', () => {
302+
store.dispatch('redo');
303+
saveStatus.value = 'unsaved';
304+
updateSaveMessage();
305+
saveNodePosition();
306+
});
307+
308+
window.WorkflowGraph.Event.listen('onClickUndoWorkflow', () => {
309+
store.dispatch('undo');
310+
saveStatus.value = 'unsaved';
311+
updateSaveMessage();
312+
saveNodePosition();
313+
});
314+
293315
294316
return {
295317
loading,

administrator/components/com_workflow/resources/scripts/utils/KeyboardManager.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ export function setupGlobalShortcuts({ addStage, addTransition, editItem, delete
155155
store.dispatch('updateStagePosition', { id: stageId, x: newX, y: newY });
156156
setSaveStatus('unsaved');
157157
updateSaveMessage();
158-
saveNodePosition(stageId);
158+
saveNodePosition();
159159
}
160160

161161
document.addEventListener('keydown', handleKey);

administrator/components/com_workflow/resources/scripts/workflowgraph.es6.js

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,6 @@ window.WorkflowGraph = window.WorkflowGraph || {};
1010
window.WorkflowGraph.Event = EventBus;
1111

1212
document.addEventListener('DOMContentLoaded', () => {
13-
window.WorkflowGraph.Event.listen('onClickRedoWorkflow', () => {
14-
store.dispatch('redo');
15-
});
16-
17-
window.WorkflowGraph.Event.listen('onClickUndoWorkflow', () => {
18-
store.dispatch('undo');
19-
});
20-
2113
const mountElement = document.getElementById('workflow-graph-root');
2214

2315
if (mountElement) {

0 commit comments

Comments
 (0)