1
0
mirror of https://github.com/node-red/node-red.git synced 2023-10-10 13:36:53 +02:00

Merge pull request #2870 from node-red-hitachi/fix-debug-filter

Allow filtering of debug node output within subflow
This commit is contained in:
Nick O'Leary 2021-02-19 15:45:57 +00:00 committed by GitHub
commit 0be82d964e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -120,7 +120,7 @@ RED.debug = (function() {
filteredNodes[node.id] = !$(this).prop('checked'); filteredNodes[node.id] = !$(this).prop('checked');
$(".red-ui-debug-msg-node-"+node.id.replace(/\./g,"_")).toggleClass('hide',filteredNodes[node.id]); $(".red-ui-debug-msg-node-"+node.id.replace(/\./g,"_")).toggleClass('hide',filteredNodes[node.id]);
}); });
if (!node.active || RED.nodes.workspace(node.z).disabled) { if ((node.hasOwnProperty("active") && !node.active) || RED.nodes.workspace(node.z).disabled) {
container.addClass('disabled'); container.addClass('disabled');
muteControl.checkboxSet('disable'); muteControl.checkboxSet('disable');
} }
@ -224,26 +224,91 @@ RED.debug = (function() {
}); });
RED.popover.tooltip(toolbar.find("#red-ui-sidebar-debug-clear"),RED._('node-red:debug.sidebar.clearLog'),"core:clear-debug-messages"); RED.popover.tooltip(toolbar.find("#red-ui-sidebar-debug-clear"),RED._('node-red:debug.sidebar.clearLog'),"core:clear-debug-messages");
return { return {
content: content, content: content,
footer: footerToolbar footer: footerToolbar
} };
} }
function containsDebug(sid, map) {
var item = map[sid];
if (item) {
if (item.debug === undefined) {
var sfs = Object.keys(item.subflows);
var contain = false;
for (var i = 0; i < sfs.length; i++) {
var sf = sfs[i];
if (containsDebug(sf, map)) {
contain = true;
break;
}
}
item.debug = contain;
}
return item.debug;
}
return false;
}
function refreshDebugNodeList() { function refreshDebugNodeList() {
debugNodeList.editableList('empty'); debugNodeList.editableList('empty');
var candidateNodes = RED.nodes.filterNodes({type:'debug'});
var workspaceOrder = RED.nodes.getWorkspaceOrder(); var workspaceOrder = RED.nodes.getWorkspaceOrder();
var workspaceOrderMap = {}; var workspaceOrderMap = {};
workspaceOrder.forEach(function(ws,i) { workspaceOrder.forEach(function(ws,i) {
workspaceOrderMap[ws] = i; workspaceOrderMap[ws] = i;
}); });
candidateNodes = candidateNodes.filter(function(node) {
return workspaceOrderMap.hasOwnProperty(node.z); var candidateNodes = [];
}) var candidateSFs = [];
var subflows = {};
RED.nodes.eachNode(function (n) {
var nt = n.type;
if (nt === "debug") {
if (n.z in workspaceOrderMap) {
candidateNodes.push(n);
}
else {
var sf = RED.nodes.subflow(n.z);
if (sf) {
subflows[sf.id] = {
debug: true,
subflows: {}
};
}
}
}
else if(nt.substring(0, 8) === "subflow:") {
if (n.z in workspaceOrderMap) {
candidateSFs.push(n);
}
else {
var psf = RED.nodes.subflow(n.z);
if (psf) {
var sid = nt.substring(8);
var item = subflows[psf.id];
if (!item) {
item = {
debug: undefined,
subflows: {}
};
subflows[psf.id] = item;
}
item.subflows[sid] = true;
}
}
}
});
candidateSFs.forEach(function (sf) {
var sid = sf.type.substring(8);
if (containsDebug(sid, subflows)) {
candidateNodes.push(sf);
}
});
candidateNodes.sort(function(A,B) { candidateNodes.sort(function(A,B) {
var wsA = workspaceOrderMap[A.z]; var wsA = workspaceOrderMap[A.z];
var wsB = workspaceOrderMap[B.z]; var wsB = workspaceOrderMap[B.z];
@ -253,7 +318,7 @@ RED.debug = (function() {
var labelA = RED.utils.getNodeLabel(A,A.id); var labelA = RED.utils.getNodeLabel(A,A.id);
var labelB = RED.utils.getNodeLabel(B,B.id); var labelB = RED.utils.getNodeLabel(B,B.id);
return labelA.localeCompare(labelB); return labelA.localeCompare(labelB);
}) });
var currentWs = null; var currentWs = null;
var nodeList = []; var nodeList = [];
candidateNodes.forEach(function(node) { candidateNodes.forEach(function(node) {
@ -262,10 +327,8 @@ RED.debug = (function() {
nodeList.push(RED.nodes.workspace(node.z)); nodeList.push(RED.nodes.workspace(node.z));
} }
nodeList.push(node); nodeList.push(node);
}) });
debugNodeList.editableList('addItems',nodeList);
debugNodeList.editableList('addItems',nodeList)
} }
function getTimestamp() { function getTimestamp() {