2015-10-17 20:05:23 +02:00
|
|
|
/**
|
2017-01-11 16:24:33 +01:00
|
|
|
* Copyright JS Foundation and other contributors, http://js.foundation
|
2015-10-17 20:05:23 +02:00
|
|
|
*
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
* You may obtain a copy of the License at
|
|
|
|
*
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
* limitations under the License.
|
|
|
|
**/
|
|
|
|
RED.sidebar.config = (function() {
|
|
|
|
|
2022-03-04 17:00:02 +01:00
|
|
|
let flashingConfigNode;
|
|
|
|
let flashingConfigNodeTimer;
|
2015-10-17 20:05:23 +02:00
|
|
|
|
|
|
|
var content = document.createElement("div");
|
2019-04-30 23:56:39 +02:00
|
|
|
content.className = "red-ui-sidebar-node-config";
|
|
|
|
content.id = "red-ui-sidebar-node-config";
|
2018-11-03 22:32:38 +01:00
|
|
|
content.tabIndex = 0;
|
2015-10-17 20:05:23 +02:00
|
|
|
|
2019-04-30 23:56:39 +02:00
|
|
|
$('<div class="red-ui-sidebar-header"><span class="button-group">'+
|
2019-05-08 14:26:48 +02:00
|
|
|
'<a class="red-ui-sidebar-header-button-toggle selected" id="red-ui-sidebar-config-filter-all" href="#"><span data-i18n="sidebar.config.filterAll"></span></a>'+
|
|
|
|
'<a class="red-ui-sidebar-header-button-toggle" id="red-ui-sidebar-config-filter-unused" href="#"><span data-i18n="sidebar.config.filterUnused"></span></a> '+
|
2018-11-03 22:32:38 +01:00
|
|
|
'</span></div>'
|
2016-01-13 00:03:33 +01:00
|
|
|
).appendTo(content);
|
|
|
|
|
2016-01-12 18:54:53 +01:00
|
|
|
|
2016-01-13 00:03:33 +01:00
|
|
|
var toolbar = $('<div>'+
|
2019-05-08 14:26:48 +02:00
|
|
|
'<a class="red-ui-footer-button" id="red-ui-sidebar-config-collapse-all" href="#"><i class="fa fa-angle-double-up"></i></a> '+
|
|
|
|
'<a class="red-ui-footer-button" id="red-ui-sidebar-config-expand-all" href="#"><i class="fa fa-angle-double-down"></i></a>'+
|
2016-01-13 00:03:33 +01:00
|
|
|
'</div>');
|
2016-01-12 18:54:53 +01:00
|
|
|
|
2016-01-13 00:03:33 +01:00
|
|
|
var globalCategories = $("<div>").appendTo(content);
|
2016-01-12 18:54:53 +01:00
|
|
|
var flowCategories = $("<div>").appendTo(content);
|
|
|
|
var subflowCategories = $("<div>").appendTo(content);
|
|
|
|
|
|
|
|
var showUnusedOnly = false;
|
|
|
|
|
|
|
|
var categories = {};
|
|
|
|
|
|
|
|
function getOrCreateCategory(name,parent,label) {
|
|
|
|
name = name.replace(/\./i,"-");
|
|
|
|
if (!categories[name]) {
|
2019-05-08 14:26:48 +02:00
|
|
|
var container = $('<div class="red-ui-palette-category red-ui-sidebar-config-category" id="red-ui-sidebar-config-category-'+name+'"></div>').appendTo(parent);
|
|
|
|
var header = $('<div class="red-ui-sidebar-config-tray-header red-ui-palette-header"><i class="fa fa-angle-down expanded"></i></div>').appendTo(container);
|
2016-01-12 18:54:53 +01:00
|
|
|
if (label) {
|
2019-05-01 00:28:35 +02:00
|
|
|
$('<span class="red-ui-palette-node-config-label"/>').text(label).appendTo(header);
|
2016-01-12 18:54:53 +01:00
|
|
|
} else {
|
2019-05-01 00:28:35 +02:00
|
|
|
$('<span class="red-ui-palette-node-config-label" data-i18n="sidebar.config.'+name+'">').appendTo(header);
|
2016-01-12 18:54:53 +01:00
|
|
|
}
|
2019-05-01 00:28:35 +02:00
|
|
|
$('<span class="red-ui-sidebar-node-config-filter-info"></span>').appendTo(header);
|
|
|
|
category = $('<ul class="red-ui-palette-content red-ui-sidebar-node-config-list"></ul>').appendTo(container);
|
2019-05-20 23:03:05 +02:00
|
|
|
category.on("click", function(e) {
|
|
|
|
$(content).find(".red-ui-palette-node").removeClass("selected");
|
|
|
|
});
|
2016-01-12 18:54:53 +01:00
|
|
|
container.i18n();
|
|
|
|
var icon = header.find("i");
|
|
|
|
var result = {
|
2016-01-13 11:30:24 +01:00
|
|
|
label: label,
|
2016-01-12 18:54:53 +01:00
|
|
|
list: category,
|
|
|
|
size: function() {
|
2019-05-01 00:28:35 +02:00
|
|
|
return result.list.find("li:not(.red-ui-palette-node-config-none)").length
|
2016-01-12 18:54:53 +01:00
|
|
|
},
|
|
|
|
open: function(snap) {
|
|
|
|
if (!icon.hasClass("expanded")) {
|
|
|
|
icon.addClass("expanded");
|
|
|
|
if (snap) {
|
|
|
|
result.list.show();
|
|
|
|
} else {
|
|
|
|
result.list.slideDown();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
close: function(snap) {
|
|
|
|
if (icon.hasClass("expanded")) {
|
|
|
|
icon.removeClass("expanded");
|
|
|
|
if (snap) {
|
|
|
|
result.list.hide();
|
|
|
|
} else {
|
|
|
|
result.list.slideUp();
|
|
|
|
}
|
|
|
|
}
|
2016-01-13 00:03:33 +01:00
|
|
|
},
|
|
|
|
isOpen: function() {
|
|
|
|
return icon.hasClass("expanded");
|
2016-01-12 18:54:53 +01:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
header.on('click', function(e) {
|
2016-01-13 00:03:33 +01:00
|
|
|
if (result.isOpen()) {
|
2016-01-12 18:54:53 +01:00
|
|
|
result.close();
|
|
|
|
} else {
|
|
|
|
result.open();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
categories[name] = result;
|
2016-01-13 11:30:24 +01:00
|
|
|
} else {
|
|
|
|
if (categories[name].label !== label) {
|
2019-05-01 00:28:35 +02:00
|
|
|
categories[name].list.parent().find('.red-ui-palette-node-config-label').text(label);
|
2016-01-13 11:30:24 +01:00
|
|
|
categories[name].label = label;
|
|
|
|
}
|
2016-01-12 18:54:53 +01:00
|
|
|
}
|
|
|
|
return categories[name];
|
|
|
|
}
|
|
|
|
|
|
|
|
function createConfigNodeList(id,nodes) {
|
|
|
|
var category = getOrCreateCategory(id.replace(/\./i,"-"))
|
|
|
|
var list = category.list;
|
|
|
|
|
2015-10-17 20:05:23 +02:00
|
|
|
nodes.sort(function(A,B) {
|
|
|
|
if (A.type < B.type) { return -1;}
|
|
|
|
if (A.type > B.type) { return 1;}
|
|
|
|
return 0;
|
|
|
|
});
|
2016-01-12 18:54:53 +01:00
|
|
|
if (showUnusedOnly) {
|
2016-01-13 11:30:24 +01:00
|
|
|
var hiddenCount = nodes.length;
|
2016-01-12 18:54:53 +01:00
|
|
|
nodes = nodes.filter(function(n) {
|
2017-01-15 14:37:21 +01:00
|
|
|
return n._def.hasUsers!==false && n.users.length === 0;
|
2016-01-12 18:54:53 +01:00
|
|
|
})
|
2016-01-13 11:30:24 +01:00
|
|
|
hiddenCount = hiddenCount - nodes.length;
|
|
|
|
if (hiddenCount > 0) {
|
2019-05-01 00:28:35 +02:00
|
|
|
list.parent().find('.red-ui-sidebar-node-config-filter-info').text(RED._('sidebar.config.filtered',{count:hiddenCount})).show();
|
2016-01-13 11:30:24 +01:00
|
|
|
} else {
|
2019-05-01 00:28:35 +02:00
|
|
|
list.parent().find('.red-ui-sidebar-node-config-filter-info').hide();
|
2016-01-13 11:30:24 +01:00
|
|
|
}
|
|
|
|
} else {
|
2019-05-01 00:28:35 +02:00
|
|
|
list.parent().find('.red-ui-sidebar-node-config-filter-info').hide();
|
2016-01-12 18:54:53 +01:00
|
|
|
}
|
2015-10-17 20:05:23 +02:00
|
|
|
list.empty();
|
|
|
|
if (nodes.length === 0) {
|
2019-05-01 00:28:35 +02:00
|
|
|
$('<li class="red-ui-palette-node-config-none" data-i18n="sidebar.config.none">NONE</li>').i18n().appendTo(list);
|
2016-01-12 18:54:53 +01:00
|
|
|
category.close(true);
|
2015-10-17 20:05:23 +02:00
|
|
|
} else {
|
|
|
|
var currentType = "";
|
|
|
|
nodes.forEach(function(node) {
|
2016-11-22 13:57:08 +01:00
|
|
|
var label = RED.utils.getNodeLabel(node,node.id);
|
2015-10-17 20:05:23 +02:00
|
|
|
if (node.type != currentType) {
|
2019-05-01 00:28:35 +02:00
|
|
|
$('<li class="red-ui-palette-node-config-type">'+node.type+'</li>').appendTo(list);
|
2015-10-17 20:05:23 +02:00
|
|
|
currentType = node.type;
|
|
|
|
}
|
|
|
|
|
2019-05-20 23:03:05 +02:00
|
|
|
var entry = $('<li class="red-ui-palette-node_id_'+node.id.replace(/\./g,"-")+'"></li>').appendTo(list);
|
|
|
|
var nodeDiv = $('<div class="red-ui-palette-node-config red-ui-palette-node"></div>').appendTo(entry);
|
2018-11-03 22:32:38 +01:00
|
|
|
entry.data('node',node.id);
|
2022-03-04 17:00:02 +01:00
|
|
|
nodeDiv.data('node',node.id);
|
2019-06-17 23:46:34 +02:00
|
|
|
var label = $('<div class="red-ui-palette-label"></div>').text(label).appendTo(nodeDiv);
|
|
|
|
if (node.d) {
|
|
|
|
nodeDiv.addClass("red-ui-palette-node-config-disabled");
|
|
|
|
$('<i class="fa fa-ban"></i>').prependTo(label);
|
|
|
|
}
|
|
|
|
|
2017-01-15 14:37:21 +01:00
|
|
|
if (node._def.hasUsers !== false) {
|
2019-05-20 23:03:05 +02:00
|
|
|
var iconContainer = $('<div/>',{class:"red-ui-palette-icon-container red-ui-palette-icon-container-right"}).appendTo(nodeDiv);
|
2018-11-03 22:32:38 +01:00
|
|
|
if (node.users.length === 0) {
|
|
|
|
iconContainer.text(0);
|
|
|
|
} else {
|
2019-04-29 12:50:15 +02:00
|
|
|
$('<a href="#"/>').on("click", function(e) {
|
2018-11-03 22:32:38 +01:00
|
|
|
e.stopPropagation();
|
|
|
|
e.preventDefault();
|
|
|
|
RED.search.show(node.id);
|
|
|
|
}).text(node.users.length).appendTo(iconContainer);
|
|
|
|
}
|
|
|
|
RED.popover.tooltip(iconContainer,RED._('editor.nodesUse',{count:node.users.length}));
|
2017-01-15 14:37:21 +01:00
|
|
|
if (node.users.length === 0) {
|
2019-05-20 23:03:05 +02:00
|
|
|
nodeDiv.addClass("red-ui-palette-node-config-unused");
|
2017-01-15 14:37:21 +01:00
|
|
|
}
|
2015-10-17 20:05:23 +02:00
|
|
|
}
|
2019-05-20 23:03:05 +02:00
|
|
|
nodeDiv.on('click',function(e) {
|
|
|
|
e.stopPropagation();
|
2018-11-03 22:32:38 +01:00
|
|
|
RED.view.select(false);
|
|
|
|
if (e.metaKey) {
|
|
|
|
$(this).toggleClass("selected");
|
|
|
|
} else {
|
2019-04-29 23:38:14 +02:00
|
|
|
$(content).find(".red-ui-palette-node").removeClass("selected");
|
2018-11-03 22:32:38 +01:00
|
|
|
$(this).addClass("selected");
|
|
|
|
}
|
2015-10-17 20:05:23 +02:00
|
|
|
RED.sidebar.info.refresh(node);
|
|
|
|
});
|
2019-05-20 23:03:05 +02:00
|
|
|
nodeDiv.on('dblclick',function(e) {
|
|
|
|
e.stopPropagation();
|
2015-10-17 20:05:23 +02:00
|
|
|
RED.editor.editConfig("", node.type, node.id);
|
|
|
|
});
|
|
|
|
var userArray = node.users.map(function(n) { return n.id });
|
2019-05-20 23:03:05 +02:00
|
|
|
nodeDiv.on('mouseover',function(e) {
|
2015-10-17 20:05:23 +02:00
|
|
|
RED.nodes.eachNode(function(node) {
|
|
|
|
if( userArray.indexOf(node.id) != -1) {
|
|
|
|
node.highlighted = true;
|
|
|
|
node.dirty = true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
RED.view.redraw();
|
|
|
|
});
|
2019-05-20 23:03:05 +02:00
|
|
|
nodeDiv.on('mouseout',function(e) {
|
2015-10-17 20:05:23 +02:00
|
|
|
RED.nodes.eachNode(function(node) {
|
|
|
|
if(node.highlighted) {
|
|
|
|
node.highlighted = false;
|
|
|
|
node.dirty = true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
RED.view.redraw();
|
|
|
|
});
|
|
|
|
});
|
2016-01-12 18:54:53 +01:00
|
|
|
category.open(true);
|
2015-10-17 20:05:23 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function refreshConfigNodeList() {
|
2016-01-12 18:54:53 +01:00
|
|
|
var validList = {"global":true};
|
2015-10-17 20:05:23 +02:00
|
|
|
|
2016-01-12 18:54:53 +01:00
|
|
|
getOrCreateCategory("global",globalCategories);
|
2015-10-17 20:05:23 +02:00
|
|
|
|
2016-01-12 18:54:53 +01:00
|
|
|
RED.nodes.eachWorkspace(function(ws) {
|
2016-01-14 16:22:00 +01:00
|
|
|
validList[ws.id.replace(/\./g,"-")] = true;
|
2016-01-12 18:54:53 +01:00
|
|
|
getOrCreateCategory(ws.id,flowCategories,ws.label);
|
|
|
|
})
|
|
|
|
RED.nodes.eachSubflow(function(sf) {
|
2016-01-14 16:22:00 +01:00
|
|
|
validList[sf.id.replace(/\./g,"-")] = true;
|
2016-01-12 18:54:53 +01:00
|
|
|
getOrCreateCategory(sf.id,subflowCategories,sf.name);
|
|
|
|
})
|
2019-05-08 14:26:48 +02:00
|
|
|
$(".red-ui-sidebar-config-category").each(function() {
|
|
|
|
var id = $(this).attr('id').substring("red-ui-sidebar-config-category-".length);
|
2016-01-14 16:22:00 +01:00
|
|
|
if (!validList[id]) {
|
|
|
|
$(this).remove();
|
|
|
|
delete categories[id];
|
|
|
|
}
|
|
|
|
})
|
2016-01-12 18:54:53 +01:00
|
|
|
var globalConfigNodes = [];
|
|
|
|
var configList = {};
|
2015-10-17 20:05:23 +02:00
|
|
|
RED.nodes.eachConfig(function(cn) {
|
2021-08-24 18:33:04 +02:00
|
|
|
if (cn.z) {
|
2016-01-14 16:22:00 +01:00
|
|
|
configList[cn.z.replace(/\./g,"-")] = configList[cn.z.replace(/\./g,"-")]||[];
|
|
|
|
configList[cn.z.replace(/\./g,"-")].push(cn);
|
2015-10-17 20:05:23 +02:00
|
|
|
} else if (!cn.z) {
|
|
|
|
globalConfigNodes.push(cn);
|
|
|
|
}
|
|
|
|
});
|
2016-01-12 18:54:53 +01:00
|
|
|
for (var id in validList) {
|
|
|
|
if (validList.hasOwnProperty(id)) {
|
|
|
|
createConfigNodeList(id,configList[id]||[]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
createConfigNodeList('global',globalConfigNodes);
|
2015-10-17 20:05:23 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
function init() {
|
|
|
|
RED.sidebar.addTab({
|
|
|
|
id: "config",
|
|
|
|
label: RED._("sidebar.config.label"),
|
|
|
|
name: RED._("sidebar.config.name"),
|
|
|
|
content: content,
|
2016-01-12 18:54:53 +01:00
|
|
|
toolbar: toolbar,
|
2018-05-23 11:25:10 +02:00
|
|
|
iconClass: "fa fa-cog",
|
2018-10-03 15:02:07 +02:00
|
|
|
action: "core:show-config-tab",
|
2015-10-17 20:05:23 +02:00
|
|
|
onchange: function() { refreshConfigNodeList(); }
|
|
|
|
});
|
2018-11-03 22:32:38 +01:00
|
|
|
RED.actions.add("core:show-config-tab", function() {RED.sidebar.show('config')});
|
|
|
|
RED.actions.add("core:select-all-config-nodes", function() {
|
2019-04-29 23:38:14 +02:00
|
|
|
$(content).find(".red-ui-palette-node").addClass("selected");
|
2018-11-03 22:32:38 +01:00
|
|
|
})
|
|
|
|
RED.actions.add("core:delete-config-selection", function() {
|
|
|
|
var selectedNodes = [];
|
2019-04-29 23:38:14 +02:00
|
|
|
$(content).find(".red-ui-palette-node.selected").each(function() {
|
2019-06-07 15:35:10 +02:00
|
|
|
selectedNodes.push($(this).parent().data('node'));
|
2018-11-03 22:32:38 +01:00
|
|
|
});
|
|
|
|
if (selectedNodes.length > 0) {
|
|
|
|
var historyEvent = {
|
|
|
|
t:'delete',
|
|
|
|
nodes:[],
|
|
|
|
changes: {},
|
|
|
|
dirty: RED.nodes.dirty()
|
|
|
|
}
|
|
|
|
selectedNodes.forEach(function(id) {
|
|
|
|
var node = RED.nodes.node(id);
|
|
|
|
try {
|
|
|
|
if (node._def.oneditdelete) {
|
|
|
|
node._def.oneditdelete.call(node);
|
|
|
|
}
|
|
|
|
} catch(err) {
|
|
|
|
console.log("oneditdelete",node.id,node.type,err.toString());
|
|
|
|
}
|
|
|
|
historyEvent.nodes.push(node);
|
|
|
|
for (var i=0;i<node.users.length;i++) {
|
|
|
|
var user = node.users[i];
|
|
|
|
historyEvent.changes[user.id] = {
|
|
|
|
changed: user.changed,
|
|
|
|
valid: user.valid
|
|
|
|
};
|
|
|
|
for (var d in user._def.defaults) {
|
|
|
|
if (user._def.defaults.hasOwnProperty(d) && user[d] == id) {
|
|
|
|
historyEvent.changes[user.id][d] = id
|
|
|
|
user[d] = "";
|
|
|
|
user.changed = true;
|
|
|
|
user.dirty = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
RED.editor.validateNode(user);
|
|
|
|
}
|
|
|
|
RED.nodes.remove(id);
|
|
|
|
})
|
|
|
|
RED.nodes.dirty(true);
|
|
|
|
RED.view.redraw(true);
|
|
|
|
RED.history.push(historyEvent);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
RED.events.on("view:selection-changed",function() {
|
2019-04-29 23:38:14 +02:00
|
|
|
$(content).find(".red-ui-palette-node").removeClass("selected");
|
2018-11-03 22:32:38 +01:00
|
|
|
});
|
2016-01-12 18:54:53 +01:00
|
|
|
|
2019-05-08 14:26:48 +02:00
|
|
|
$("#red-ui-sidebar-config-collapse-all").on("click", function(e) {
|
2016-01-12 18:54:53 +01:00
|
|
|
e.preventDefault();
|
|
|
|
for (var cat in categories) {
|
|
|
|
if (categories.hasOwnProperty(cat)) {
|
|
|
|
categories[cat].close();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
2019-05-08 14:26:48 +02:00
|
|
|
$("#red-ui-sidebar-config-expand-all").on("click", function(e) {
|
2016-01-12 18:54:53 +01:00
|
|
|
e.preventDefault();
|
|
|
|
for (var cat in categories) {
|
|
|
|
if (categories.hasOwnProperty(cat)) {
|
|
|
|
if (categories[cat].size() > 0) {
|
|
|
|
categories[cat].open();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
2019-05-08 14:26:48 +02:00
|
|
|
$('#red-ui-sidebar-config-filter-all').on("click",function(e) {
|
2016-01-12 18:54:53 +01:00
|
|
|
e.preventDefault();
|
|
|
|
if (showUnusedOnly) {
|
2016-01-13 00:03:33 +01:00
|
|
|
$(this).addClass('selected');
|
2019-05-08 14:26:48 +02:00
|
|
|
$('#red-ui-sidebar-config-filter-unused').removeClass('selected');
|
2016-01-13 00:03:33 +01:00
|
|
|
showUnusedOnly = !showUnusedOnly;
|
|
|
|
refreshConfigNodeList();
|
2015-10-17 20:05:23 +02:00
|
|
|
}
|
2016-01-13 00:03:33 +01:00
|
|
|
});
|
2019-05-08 14:26:48 +02:00
|
|
|
$('#red-ui-sidebar-config-filter-unused').on("click",function(e) {
|
2016-01-13 00:03:33 +01:00
|
|
|
e.preventDefault();
|
|
|
|
if (!showUnusedOnly) {
|
|
|
|
$(this).addClass('selected');
|
2019-05-08 14:26:48 +02:00
|
|
|
$('#red-ui-sidebar-config-filter-all').removeClass('selected');
|
2016-01-13 00:03:33 +01:00
|
|
|
showUnusedOnly = !showUnusedOnly;
|
|
|
|
refreshConfigNodeList();
|
|
|
|
}
|
|
|
|
});
|
2022-03-20 23:59:24 +01:00
|
|
|
RED.popover.tooltip($('#red-ui-sidebar-config-filter-all'), RED._("sidebar.config.showAllConfigNodes"));
|
2019-10-04 05:22:09 +02:00
|
|
|
RED.popover.tooltip($('#red-ui-sidebar-config-filter-unused'), RED._("sidebar.config.showAllUnusedConfigNodes"));
|
2015-10-17 20:05:23 +02:00
|
|
|
|
|
|
|
}
|
2022-03-04 17:00:02 +01:00
|
|
|
|
|
|
|
function flashConfigNode(el) {
|
|
|
|
if(flashingConfigNode && flashingConfigNode.length) {
|
|
|
|
//cancel current flashing node before flashing new node
|
|
|
|
clearInterval(flashingConfigNodeTimer);
|
|
|
|
flashingConfigNodeTimer = null;
|
|
|
|
flashingConfigNode.children("div").removeClass('highlighted');
|
|
|
|
flashingConfigNode = null;
|
|
|
|
}
|
|
|
|
if(!el || !el.children("div").length) { return; }
|
|
|
|
|
|
|
|
flashingConfigNodeTimer = setInterval(function(flashEndTime) {
|
|
|
|
if (flashEndTime >= Date.now()) {
|
|
|
|
const highlighted = el.children("div").hasClass("highlighted");
|
|
|
|
el.children("div").toggleClass('highlighted', !highlighted)
|
|
|
|
} else {
|
|
|
|
clearInterval(flashingConfigNodeTimer);
|
|
|
|
flashingConfigNodeTimer = null;
|
|
|
|
flashingConfigNode = null;
|
|
|
|
el.children("div").removeClass('highlighted');
|
|
|
|
}
|
|
|
|
}, 100, Date.now() + 2200);
|
|
|
|
flashingConfigNode = el;
|
|
|
|
el.children("div").addClass('highlighted');
|
|
|
|
}
|
|
|
|
|
2016-09-30 00:46:29 +02:00
|
|
|
function show(id) {
|
|
|
|
if (typeof id === 'boolean') {
|
2016-10-11 16:06:34 +02:00
|
|
|
if (id) {
|
2019-05-08 14:26:48 +02:00
|
|
|
$('#red-ui-sidebar-config-filter-unused').trigger("click");
|
2016-01-13 00:03:33 +01:00
|
|
|
} else {
|
2019-05-08 14:26:48 +02:00
|
|
|
$('#red-ui-sidebar-config-filter-all').trigger("click");
|
2016-01-13 00:03:33 +01:00
|
|
|
}
|
|
|
|
}
|
2015-10-17 20:05:23 +02:00
|
|
|
refreshConfigNodeList();
|
2016-09-30 00:46:29 +02:00
|
|
|
if (typeof id === "string") {
|
2019-05-08 14:26:48 +02:00
|
|
|
$('#red-ui-sidebar-config-filter-all').trigger("click");
|
2016-09-30 00:46:29 +02:00
|
|
|
id = id.replace(/\./g,"-");
|
|
|
|
setTimeout(function() {
|
2019-04-29 23:38:14 +02:00
|
|
|
var node = $(".red-ui-palette-node_id_"+id);
|
2016-09-30 00:46:29 +02:00
|
|
|
var y = node.position().top;
|
|
|
|
var h = node.height();
|
2019-04-30 23:56:39 +02:00
|
|
|
var scrollWindow = $(".red-ui-sidebar-node-config");
|
2016-09-30 00:46:29 +02:00
|
|
|
var scrollHeight = scrollWindow.height();
|
|
|
|
|
|
|
|
if (y+h > scrollHeight) {
|
|
|
|
scrollWindow.animate({scrollTop: '-='+(scrollHeight-(y+h)-30)},150);
|
|
|
|
} else if (y<0) {
|
|
|
|
scrollWindow.animate({scrollTop: '+='+(y-10)},150);
|
|
|
|
}
|
2022-03-04 17:00:02 +01:00
|
|
|
flashConfigNode(node, id);
|
2016-09-30 00:46:29 +02:00
|
|
|
},100);
|
|
|
|
}
|
2015-10-17 20:05:23 +02:00
|
|
|
RED.sidebar.show("config");
|
|
|
|
}
|
|
|
|
return {
|
|
|
|
init:init,
|
|
|
|
show:show,
|
2016-05-29 23:31:29 +02:00
|
|
|
refresh:refreshConfigNodeList
|
2015-10-17 20:05:23 +02:00
|
|
|
}
|
|
|
|
})();
|