From 400071879f033b9508b70b8facab737126cae6bd Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Fri, 7 Jun 2019 15:14:21 +0100 Subject: [PATCH] Add enable/disable-flow actions --- .../editor-client/src/js/ui/workspaces.js | 55 ++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/workspaces.js b/packages/node_modules/@node-red/editor-client/src/js/ui/workspaces.js index fe87f4bbe..3fffe2e64 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/workspaces.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/workspaces.js @@ -60,6 +60,13 @@ RED.workspaces = (function() { function showEditWorkspaceDialog(id) { var workspace = RED.nodes.workspace(id); + if (!workspace) { + var subflow = RED.nodes.subflow(id); + if (subflow) { + RED.editor.editSubflow(subflow); + } + return; + } RED.view.state(RED.state.EDITING); var tabflowEditor; var trayOptions = { @@ -331,6 +338,8 @@ RED.workspaces = (function() { RED.actions.add("core:add-flow",function(opts) { addWorkspace(undefined,undefined,opts?opts.index:undefined)}); RED.actions.add("core:edit-flow",editWorkspace); RED.actions.add("core:remove-flow",removeWorkspace); + RED.actions.add("core:enable-flow",enableWorkspace); + RED.actions.add("core:disable-flow",disableWorkspace); RED.actions.add("core:list-flows",function() { RED.actions.invoke("core:search","type:tab "); @@ -343,6 +352,48 @@ RED.workspaces = (function() { showEditWorkspaceDialog(id||activeWorkspace); } + function enableWorkspace(id) { + setWorkspaceState(id,false); + } + function disableWorkspace(id) { + setWorkspaceState(id,true); + } + function setWorkspaceState(id,disabled) { + var workspace = RED.nodes.workspace(id||activeWorkspace); + if (!workspace) { + return; + } + if (workspace.disabled !== disabled) { + var changes = { disabled: workspace.disabled }; + workspace.disabled = disabled; + $("#red-ui-tab-"+(workspace.id.replace(".","-"))).toggleClass('red-ui-workspace-disabled',!!workspace.disabled); + $("#red-ui-workspace").toggleClass("red-ui-workspace-disabled",!!workspace.disabled); + var historyEvent = { + t: "edit", + changes:changes, + node: workspace, + dirty: RED.nodes.dirty() + } + workspace.changed = true; + RED.history.push(historyEvent); + RED.nodes.dirty(true); + RED.sidebar.config.refresh(); + var selection = RED.view.selection(); + if (!selection.nodes && !selection.links) { + RED.sidebar.info.refresh(workspace); + } + if (changes.hasOwnProperty('disabled')) { + RED.nodes.eachNode(function(n) { + if (n.z === workspace.id) { + n.dirty = true; + } + }); + RED.view.redraw(); + } + } + } + + function removeWorkspace(ws) { if (!ws) { deleteWorkspace(RED.nodes.workspace(activeWorkspace)); @@ -406,6 +457,8 @@ RED.workspaces = (function() { }, resize: function() { workspace_tabs.resize(); - } + }, + enable: enableWorkspace, + disable: disableWorkspace } })();