mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
Add tab info to deploy error messages
This commit is contained in:
parent
a9a0b263dc
commit
c0b8f5e3e1
@ -124,6 +124,36 @@ RED.deploy = (function() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getNodeInfo(node) {
|
||||||
|
var tabLabel = "";
|
||||||
|
if (node.z) {
|
||||||
|
var tab = RED.nodes.workspace(node.z);
|
||||||
|
if (!tab) {
|
||||||
|
tab = RED.nodes.subflow(node.z);
|
||||||
|
tabLabel = tab.name;
|
||||||
|
} else {
|
||||||
|
tabLabel = tab.label;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var label = "";
|
||||||
|
if (typeof node._def.label == "function") {
|
||||||
|
label = node._def.label.call(node);
|
||||||
|
} else {
|
||||||
|
label = node._def.label;
|
||||||
|
}
|
||||||
|
label = label || node.id;
|
||||||
|
return {tab:tabLabel,type:node.type,label:label};
|
||||||
|
}
|
||||||
|
function sortNodeInfo(A,B) {
|
||||||
|
if (A.tab < B.tab) { return -1;}
|
||||||
|
if (A.tab > B.tab) { return 1;}
|
||||||
|
if (A.type < B.type) { return -1;}
|
||||||
|
if (A.type > B.type) { return 1;}
|
||||||
|
if (A.name < B.name) { return -1;}
|
||||||
|
if (A.name > B.name) { return 1;}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
function save(force) {
|
function save(force) {
|
||||||
if (RED.nodes.dirty()) {
|
if (RED.nodes.dirty()) {
|
||||||
//$("#debug-tab-clear").click(); // uncomment this to auto clear debug on deploy
|
//$("#debug-tab-clear").click(); // uncomment this to auto clear debug on deploy
|
||||||
@ -134,8 +164,13 @@ RED.deploy = (function() {
|
|||||||
var hasUnusedConfig = false;
|
var hasUnusedConfig = false;
|
||||||
|
|
||||||
var unknownNodes = [];
|
var unknownNodes = [];
|
||||||
|
var invalidNodes = [];
|
||||||
|
|
||||||
RED.nodes.eachNode(function(node) {
|
RED.nodes.eachNode(function(node) {
|
||||||
hasInvalid = hasInvalid || !node.valid;
|
hasInvalid = hasInvalid || !node.valid;
|
||||||
|
if (!node.valid) {
|
||||||
|
invalidNodes.push(getNodeInfo(node));
|
||||||
|
}
|
||||||
if (node.type === "unknown") {
|
if (node.type === "unknown") {
|
||||||
if (unknownNodes.indexOf(node.name) == -1) {
|
if (unknownNodes.indexOf(node.name) == -1) {
|
||||||
unknownNodes.push(node.name);
|
unknownNodes.push(node.name);
|
||||||
@ -144,18 +179,10 @@ RED.deploy = (function() {
|
|||||||
});
|
});
|
||||||
hasUnknown = unknownNodes.length > 0;
|
hasUnknown = unknownNodes.length > 0;
|
||||||
|
|
||||||
var unusedConfigNodes = {};
|
var unusedConfigNodes = [];
|
||||||
RED.nodes.eachConfig(function(node) {
|
RED.nodes.eachConfig(function(node) {
|
||||||
if (node.users.length === 0) {
|
if (node.users.length === 0) {
|
||||||
var label = "";
|
unusedConfigNodes.push(getNodeInfo(node));
|
||||||
if (typeof node._def.label == "function") {
|
|
||||||
label = node._def.label.call(node);
|
|
||||||
} else {
|
|
||||||
label = node._def.label;
|
|
||||||
}
|
|
||||||
label = label || node.id;
|
|
||||||
unusedConfigNodes[node.type] = unusedConfigNodes[node.type] || [];
|
|
||||||
unusedConfigNodes[node.type].push(label);
|
|
||||||
hasUnusedConfig = true;
|
hasUnusedConfig = true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -176,19 +203,18 @@ RED.deploy = (function() {
|
|||||||
showWarning = true;
|
showWarning = true;
|
||||||
$( "#node-dialog-confirm-deploy-type" ).val("invalid");
|
$( "#node-dialog-confirm-deploy-type" ).val("invalid");
|
||||||
$( "#node-dialog-confirm-deploy-config" ).show();
|
$( "#node-dialog-confirm-deploy-config" ).show();
|
||||||
|
invalidNodes.sort(sortNodeInfo);
|
||||||
|
$( "#node-dialog-confirm-deploy-invalid-list" )
|
||||||
|
.html("<li>"+invalidNodes.map(function(A) { return (A.tab?"["+A.tab+"] ":"")+A.label+" ("+A.type+")"}).join("</li><li>")+"</li>");
|
||||||
|
|
||||||
} else if (hasUnusedConfig && !ignoreDeployWarnings.unusedConfig) {
|
} else if (hasUnusedConfig && !ignoreDeployWarnings.unusedConfig) {
|
||||||
showWarning = true;
|
showWarning = true;
|
||||||
$( "#node-dialog-confirm-deploy-type" ).val("unusedConfig");
|
$( "#node-dialog-confirm-deploy-type" ).val("unusedConfig");
|
||||||
$( "#node-dialog-confirm-deploy-unused" ).show();
|
$( "#node-dialog-confirm-deploy-unused" ).show();
|
||||||
var unusedNodeLabels = [];
|
|
||||||
var unusedTypes = Object.keys(unusedConfigNodes).sort();
|
unusedConfigNodes.sort(sortNodeInfo);
|
||||||
unusedTypes.forEach(function(type) {
|
|
||||||
unusedConfigNodes[type].forEach(function(label) {
|
|
||||||
unusedNodeLabels.push(type+": "+label);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
$( "#node-dialog-confirm-deploy-unused-list" )
|
$( "#node-dialog-confirm-deploy-unused-list" )
|
||||||
.html("<li>"+unusedNodeLabels.join("</li><li>")+"</li>");
|
.html("<li>"+unusedConfigNodes.map(function(A) { return (A.tab?"["+A.tab+"] ":"")+A.label+" ("+A.type+")"}).join("</li><li>")+"</li>");
|
||||||
}
|
}
|
||||||
if (showWarning) {
|
if (showWarning) {
|
||||||
$( "#node-dialog-confirm-deploy-hide" ).prop("checked",false);
|
$( "#node-dialog-confirm-deploy-hide" ).prop("checked",false);
|
||||||
|
@ -101,7 +101,9 @@
|
|||||||
|
|
||||||
<div id="node-dialog-confirm-deploy" class="hide">
|
<div id="node-dialog-confirm-deploy" class="hide">
|
||||||
<form class="form-horizontal">
|
<form class="form-horizontal">
|
||||||
<div id="node-dialog-confirm-deploy-config" style="text-align: left; padding-top: 30px;" data-i18n="[prepend]deploy.confirm.improperlyConfigured;[append]deploy.confirm.confirm"> </div>
|
<div id="node-dialog-confirm-deploy-config" style="text-align: left; padding-top: 30px;" data-i18n="[prepend]deploy.confirm.improperlyConfigured;[append]deploy.confirm.confirm">
|
||||||
|
<ul style="font-size: 0.9em; width: 400px; margin: 10px auto; text-align: left;" id="node-dialog-confirm-deploy-invalid-list"></ul>
|
||||||
|
</div>
|
||||||
<div id="node-dialog-confirm-deploy-unknown" style="text-align: left; padding-top: 10px;" data-i18n="[prepend]deploy.confirm.unknown;[append]deploy.confirm.confirm">
|
<div id="node-dialog-confirm-deploy-unknown" style="text-align: left; padding-top: 10px;" data-i18n="[prepend]deploy.confirm.unknown;[append]deploy.confirm.confirm">
|
||||||
<ul style="font-size: 0.9em; width: 400px; margin: 10px auto; text-align: left;" id="node-dialog-confirm-deploy-unknown-list"></ul>
|
<ul style="font-size: 0.9em; width: 400px; margin: 10px auto; text-align: left;" id="node-dialog-confirm-deploy-unknown-list"></ul>
|
||||||
</div>
|
</div>
|
||||||
|
@ -92,7 +92,7 @@
|
|||||||
"cancel": "Cancel"
|
"cancel": "Cancel"
|
||||||
},
|
},
|
||||||
"undeployedChanges": "You have undeployed changes.\n\nLeaving this page will lose these changes.",
|
"undeployedChanges": "You have undeployed changes.\n\nLeaving this page will lose these changes.",
|
||||||
"improperlyConfigured": "Some of the nodes are not properly configured.",
|
"improperlyConfigured": "The workspace contains some nodes that are not properly configured:",
|
||||||
"unknown": "The workspace contains some unknown node types:",
|
"unknown": "The workspace contains some unknown node types:",
|
||||||
"unusedConfig": "The workspace contains some unused configuration nodes:",
|
"unusedConfig": "The workspace contains some unused configuration nodes:",
|
||||||
"confirm": "Are you sure you want to deploy?"
|
"confirm": "Are you sure you want to deploy?"
|
||||||
|
Loading…
Reference in New Issue
Block a user