From 8c169dc82bcc0a3e4d09a8bbfe2f65a8d8964398 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Thu, 6 Sep 2018 15:27:01 +0100 Subject: [PATCH] Add 'restart flows' option to deploy menu --- .../lib/editor/locales/en-US/editor.json | 3 + .../src/images/deploy-reload.png | Bin 0 -> 1015 bytes .../editor-client/src/js/ui/deploy.js | 56 +++++++++++++++++- 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 packages/node_modules/@node-red/editor-client/src/images/deploy-reload.png diff --git a/packages/node_modules/@node-red/editor-api/lib/editor/locales/en-US/editor.json b/packages/node_modules/@node-red/editor-api/lib/editor/locales/en-US/editor.json index 550b9c6f5..07aacaff7 100644 --- a/packages/node_modules/@node-red/editor-api/lib/editor/locales/en-US/editor.json +++ b/packages/node_modules/@node-red/editor-api/lib/editor/locales/en-US/editor.json @@ -172,7 +172,10 @@ "modifiedFlowsDesc": "Only deploys flows that contain changed nodes", "modifiedNodes": "Modified Nodes", "modifiedNodesDesc": "Only deploys nodes that have changed", + "restartFlows": "Restart Flows", + "restartFlowsDesc": "Restarts the current deployed flows", "successfulDeploy": "Successfully deployed", + "successfulRestart": "Successfully restarted flows", "deployFailed": "Deploy failed: __message__", "unusedConfigNodes":"You have some unused configuration nodes.", "unusedConfigNodesLink":"Click here to see them", diff --git a/packages/node_modules/@node-red/editor-client/src/images/deploy-reload.png b/packages/node_modules/@node-red/editor-client/src/images/deploy-reload.png new file mode 100644 index 0000000000000000000000000000000000000000..197fc610daf95e1a21ddca568100ea378d21a843 GIT binary patch literal 1015 zcmV;l}Uk|7YHL-)H8ZZ~hT}jIst8#xe|N_?FZeKH29sB2cCvE2ituMgXEF zC6c&gAtNFq0T7Hv7Vh7JAQ-rR_-9pr)g?$;zLa%&ClCyM@2bz^8jDJ>?L8pRM^8>-%DU{J z`k(+Q*;(?qqo$UM(|MZV@2dRNSvqR!6uooAWF0RlcB)t3tuy>tPX zL=kaxlsy0YnO%4IyZWp0xjYUZI|h>|D(V#5(C?Etv*c5G-dR^4GJy1|f0vlTMI@I? zCxBO??QuoOq5rOtak2lvxZJq9x)pUpwizXUyht8*)YL*i`E#RdGZKtOEb(!Sn>vN) z^faQ=({MW4xbf9)Mg5qRWRh1dljn8Ut_Ss22M`1{7yL%_jOm1hhxa>manm+sL$jHz zqd#FV^;!EoUMkOB2pXZj1aBYP!0@j61{!R|gXAAf7|+K1Ux=BNE+2bx;xyfF_Y6f~ zRREyr)}29p>}+umGc%p;hCbs_i3y~vUdcy0x5*n4z{~QdlzjKSs=wy{Kz!yra<2ZW z#W|?jt7^EoaVtH|Evh=rE^w5VA-UZ8lLGz5XP3yx)0KBZI#GZcz zZ*T7)oyX~<`u76zR;;IR=Po=wPF=jZ+OVnQF4hHeDat)aWASZFqR6O;30SOgAPDp{ zx6oPl0-xKXEA&4B#4lPvWASYOB$tbJdo}I$>W~8mmad;tliAGpv}rgVJo?{(154MZ lSaQ3EBwRPZP}Z;mya8s{DM=D_v4Q{q002ovPDHLkV1j2S-O~U7 literal 0 HcmV?d00001 diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/deploy.js b/packages/node_modules/@node-red/editor-client/src/js/ui/deploy.js index a8c10930a..772acb567 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/deploy.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/deploy.js @@ -67,7 +67,10 @@ RED.deploy = (function() { options: [ {id:"deploymenu-item-full",toggle:"deploy-type",icon:"red/images/deploy-full.png",label:RED._("deploy.full"),sublabel:RED._("deploy.fullDesc"),selected: true, onselect:function(s) { if(s){changeDeploymentType("full")}}}, {id:"deploymenu-item-flow",toggle:"deploy-type",icon:"red/images/deploy-flows.png",label:RED._("deploy.modifiedFlows"),sublabel:RED._("deploy.modifiedFlowsDesc"), onselect:function(s) {if(s){changeDeploymentType("flows")}}}, - {id:"deploymenu-item-node",toggle:"deploy-type",icon:"red/images/deploy-nodes.png",label:RED._("deploy.modifiedNodes"),sublabel:RED._("deploy.modifiedNodesDesc"),onselect:function(s) { if(s){changeDeploymentType("nodes")}}} + {id:"deploymenu-item-node",toggle:"deploy-type",icon:"red/images/deploy-nodes.png",label:RED._("deploy.modifiedNodes"),sublabel:RED._("deploy.modifiedNodesDesc"),onselect:function(s) { if(s){changeDeploymentType("nodes")}}}, + null, + {id:"deploymenu-item-reload", icon:"red/images/deploy-reload.png",label:RED._("deploy.restartFlows"),sublabel:RED._("deploy.restartFlowsDesc"),onselect:"core:restart-flows"}, + ] }); } else if (type == "simple") { @@ -96,6 +99,7 @@ RED.deploy = (function() { }); RED.actions.add("core:deploy-flows",save); + RED.actions.add("core:restart-flows",restart); RED.events.on('nodes:change',function(state) { @@ -257,6 +261,56 @@ RED.deploy = (function() { } return list; } + + function restart() { + var startTime = Date.now(); + $(".deploy-button-content").css('opacity',0); + $(".deploy-button-spinner").show(); + var deployWasEnabled = !$("#btn-deploy").hasClass("disabled"); + $("#btn-deploy").addClass("disabled"); + deployInflight = true; + $("#header-shade").show(); + $("#editor-shade").show(); + $("#palette-shade").show(); + $("#sidebar-shade").show(); + + $.ajax({ + url:"flows", + type: "POST", + headers: { + "Node-RED-Deployment-Type":"reload" + } + }).done(function(data,textStatus,xhr) { + if (deployWasEnabled) { + $("#btn-deploy").removeClass("disabled"); + } + RED.notify('

'+RED._("deploy.successfulRestart")+'

',"success"); + }).fail(function(xhr,textStatus,err) { + if (deployWasEnabled) { + $("#btn-deploy").removeClass("disabled"); + } + if (xhr.status === 401) { + RED.notify(RED._("deploy.deployFailed",{message:RED._("user.notAuthorized")}),"error"); + } else if (xhr.status === 409) { + resolveConflict(nns, true); + } else if (xhr.responseText) { + RED.notify(RED._("deploy.deployFailed",{message:xhr.responseText}),"error"); + } else { + RED.notify(RED._("deploy.deployFailed",{message:RED._("deploy.errors.noResponse")}),"error"); + } + }).always(function() { + deployInflight = false; + var delta = Math.max(0,300-(Date.now()-startTime)); + setTimeout(function() { + $(".deploy-button-content").css('opacity',1); + $(".deploy-button-spinner").hide(); + $("#header-shade").hide(); + $("#editor-shade").hide(); + $("#palette-shade").hide(); + $("#sidebar-shade").hide(); + },delta); + }); + } function save(skipValidation,force) { if (!$("#btn-deploy").hasClass("disabled")) { if (!RED.user.hasPermission("flows.write")) {