diff --git a/editor/js/nodes.js b/editor/js/nodes.js index 8b400b417..5d8f59d2a 100644 --- a/editor/js/nodes.js +++ b/editor/js/nodes.js @@ -276,7 +276,8 @@ RED.nodes = (function() { workspaces[ws.id] = ws; ws._def = { defaults: { - label: {value:""} + label: {value:""}, + disabled: {value: false} } }; diff --git a/editor/js/ui/common/tabs.js b/editor/js/ui/common/tabs.js index 6d5f058d3..3abd57a1a 100644 --- a/editor/js/ui/common/tabs.js +++ b/editor/js/ui/common/tabs.js @@ -215,6 +215,7 @@ RED.tabs = (function() { addTab: function(tab) { tabs[tab.id] = tab; var li = $("
  • ",{class:"red-ui-tab"}).appendTo(ul); + li.attr('id',"red-ui-tab-"+(tab.id.replace(".","-"))); li.data("tabId",tab.id); var link = $("",{href:"#"+tab.id, class:"red-ui-tab-label"}).appendTo(li); if (tab.icon) { @@ -334,7 +335,7 @@ RED.tabs = (function() { tabs[id].label = label; var tab = ul.find("a[href='#"+id+"']"); tab.attr("title",label); - tab.find("span").text(label).attr('dir', RED.text.bidi.resolveBaseTextDir(label)); + tab.find("span.bidiAware").text(label).attr('dir', RED.text.bidi.resolveBaseTextDir(label)); updateTabWidths(); }, order: function(order) { diff --git a/editor/js/ui/workspaces.js b/editor/js/ui/workspaces.js index ea32abcfb..83a405fc0 100644 --- a/editor/js/ui/workspaces.js +++ b/editor/js/ui/workspaces.js @@ -84,10 +84,24 @@ RED.workspaces = (function() { text: RED._("common.label.done"), click: function() { var label = $( "#node-input-name" ).val(); + var changed = false; + var changes = {}; if (workspace.label != label) { - var changes = { - label:workspace.label - } + changes.label = workspace.label; + changed = true; + workspace.label = label; + workspace_tabs.renameTab(workspace.id,label); + } + var disabled = $("#node-input-disabled").prop("checked"); + if (workspace.disabled !== disabled) { + changes.disabled = workspace.disabled; + changed = true; + workspace.disabled = disabled; + } + $("#red-ui-tab-"+(workspace.id.replace(".","-"))).toggleClass('workspace-disabled',workspace.disabled); + // $("#workspace").toggleClass("workspace-disabled",workspace.disabled); + + if (changed) { var historyEvent = { t: "edit", changes:changes, @@ -96,7 +110,6 @@ RED.workspaces = (function() { } workspace.changed = true; RED.history.push(historyEvent); - workspace_tabs.renameTab(workspace.id,label); RED.nodes.dirty(true); RED.sidebar.config.refresh(); } @@ -111,6 +124,38 @@ RED.workspaces = (function() { ''+ ''+ '').appendTo(dialogForm); + + $('
    '+ + ''+ + ' '+ + ''+ + '
    ').appendTo(dialogForm); + + dialogForm.find('#node-input-disabled-btn').on("click",function(e) { + var i = $(this).find("i"); + if (i.hasClass('fa-toggle-off')) { + i.addClass('fa-toggle-on'); + i.removeClass('fa-toggle-off'); + $("#node-input-disabled").prop("checked",false); + $("#node-input-disabled-label").html("Enabled"); + } else { + i.addClass('fa-toggle-off'); + i.removeClass('fa-toggle-on'); + $("#node-input-disabled").prop("checked",true); + $("#node-input-disabled-label").html("Disabled"); + } + }) + + if (workspace.hasOwnProperty("disabled")) { + $("#node-input-disabled").prop("checked",workspace.disabled); + if (workspace.disabled) { + dialogForm.find("#node-input-disabled-btn i").removeClass('fa-toggle-on').addClass('fa-toggle-off'); + $("#node-input-disabled-label").html("Disabled"); + } + } else { + workspace.disabled = false; + } + $('').prependTo(dialogForm); dialogForm.submit(function(e) { e.preventDefault();}); $("#node-input-name").val(workspace.label); @@ -137,6 +182,7 @@ RED.workspaces = (function() { } activeWorkspace = tab.id; event.workspace = activeWorkspace; + // $("#workspace").toggleClass("workspace-disabled",tab.disabled); RED.events.emit("workspace:change",event); window.location.hash = 'flow/'+tab.id; RED.sidebar.config.refresh(); @@ -153,6 +199,10 @@ RED.workspaces = (function() { } }, onadd: function(tab) { + $(' ').prependTo("#red-ui-tab-"+(tab.id.replace(".","-"))+" .red-ui-tab-label"); + if (tab.disabled) { + $("#red-ui-tab-"+(tab.id.replace(".","-"))).addClass('workspace-disabled'); + } RED.menu.setDisabled("menu-item-workspace-delete",workspace_tabs.count() == 1); }, onremove: function(tab) { diff --git a/editor/sass/workspace.scss b/editor/sass/workspace.scss index c7d754b88..59b8fcf75 100644 --- a/editor/sass/workspace.scss +++ b/editor/sass/workspace.scss @@ -58,3 +58,25 @@ color:#666; } } +.workspace-disabled-icon { + display: none; +} +.workspace-disabled { + &.red-ui-tab { + border-top-style: dashed; + border-left-style: dashed; + border-right-style: dashed; + + a { + font-style: italic; + color: #aaa !important; + } + &.active a { + font-weight: normal; + color: #999 !important; + } + .workspace-disabled-icon { + display: inline; + } + } +}