mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
2feb290ae3 | ||
|
45bcb74dae | ||
|
6da890bf88 | ||
|
b8eeef182c | ||
|
54e0de64a7 | ||
|
3bd1b58217 | ||
|
71f8de94b0 | ||
|
4723378f2f | ||
|
8837597ff5 | ||
|
473b93f497 | ||
|
d9c5144fe2 | ||
|
cbc91a9ac8 | ||
|
88c946d401 |
1
.gitignore
vendored
1
.gitignore
vendored
@ -28,3 +28,4 @@ docs
|
||||
.nyc_output
|
||||
sync.ffs_db
|
||||
package-lock.json
|
||||
.editorconfig
|
||||
|
@ -185,13 +185,12 @@ module.exports = {
|
||||
}
|
||||
|
||||
if (theme.deployButton) {
|
||||
if (theme.deployButton.type == "simple") {
|
||||
themeSettings.deployButton = {
|
||||
type: "simple"
|
||||
}
|
||||
themeSettings.deployButton = {};
|
||||
if (theme.deployButton.label) {
|
||||
themeSettings.deployButton.label = theme.deployButton.label;
|
||||
}
|
||||
if (theme.deployButton.type == "simple") {
|
||||
themeSettings.deployButton.type = theme.deployButton.type;
|
||||
if (theme.deployButton.icon) {
|
||||
url = serveFile(themeApp,"/deploy/",theme.deployButton.icon);
|
||||
if (url) {
|
||||
|
@ -425,11 +425,15 @@ RED.deploy = (function() {
|
||||
const unknownNodes = [];
|
||||
const invalidNodes = [];
|
||||
|
||||
const isDisabled = function (node) {
|
||||
return (node.d || RED.nodes.workspace(node.z)?.disabled);
|
||||
};
|
||||
|
||||
RED.nodes.eachConfig(function (node) {
|
||||
if (node.valid === undefined) {
|
||||
RED.editor.validateNode(node);
|
||||
}
|
||||
if (!node.valid && !node.d) {
|
||||
if (!node.valid && !isDisabled(node)) {
|
||||
invalidNodes.push(getNodeInfo(node));
|
||||
}
|
||||
if (node.type === "unknown") {
|
||||
@ -439,7 +443,7 @@ RED.deploy = (function() {
|
||||
}
|
||||
});
|
||||
RED.nodes.eachNode(function (node) {
|
||||
if (!node.valid && !node.d) {
|
||||
if (!node.valid && !isDisabled(node)) {
|
||||
invalidNodes.push(getNodeInfo(node));
|
||||
}
|
||||
if (node.type === "unknown") {
|
||||
@ -453,7 +457,7 @@ RED.deploy = (function() {
|
||||
|
||||
const unusedConfigNodes = [];
|
||||
RED.nodes.eachConfig(function (node) {
|
||||
if ((node._def.hasUsers !== false) && (node.users.length === 0)) {
|
||||
if ((node._def.hasUsers !== false) && (node.users.length === 0) && !isDisabled(node)) {
|
||||
unusedConfigNodes.push(getNodeInfo(node));
|
||||
hasUnusedConfig = true;
|
||||
}
|
||||
|
@ -27,6 +27,12 @@
|
||||
reader.readAsDataURL(file);
|
||||
}
|
||||
|
||||
function file2Text(file,cb) {
|
||||
file.arrayBuffer().then(d => {
|
||||
cb( new TextDecoder().decode(d) )
|
||||
}).catch(ex => { cb(`error: ${ex}`) })
|
||||
}
|
||||
|
||||
var initialized = false;
|
||||
var currentEditor = null;
|
||||
/**
|
||||
@ -52,6 +58,7 @@
|
||||
if (files.length === 1) {
|
||||
var file = files[0];
|
||||
var name = file.name.toLowerCase();
|
||||
var fileType = file.type.toLowerCase();
|
||||
|
||||
if (name.match(/\.(apng|avif|gif|jpeg|png|svg|webp)$/)) {
|
||||
file2base64Image(file, function (image) {
|
||||
@ -63,6 +70,29 @@
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if ( fileType.startsWith("text/") ) {
|
||||
file2Text(file, function (txt) {
|
||||
var session = currentEditor.getSession();
|
||||
var pos = session.getCursorPosition();
|
||||
session.insert(pos, txt);
|
||||
$("#red-ui-image-drop-target").hide();
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
} else if ($.inArray("text/plain", ev.originalEvent.dataTransfer.types) != -1) {
|
||||
let item = Object.values(ev.originalEvent.dataTransfer.items).filter(d => d.type == "text/plain")[0]
|
||||
|
||||
if (item) {
|
||||
item.getAsString(txt => {
|
||||
var session = currentEditor.getSession();
|
||||
var pos = session.getCursorPosition();
|
||||
session.insert(pos, txt);
|
||||
$("#red-ui-image-drop-target").hide();
|
||||
})
|
||||
return
|
||||
}
|
||||
}
|
||||
$("#red-ui-image-drop-target").hide();
|
||||
|
@ -56,7 +56,16 @@ RED.sidebar.config = (function() {
|
||||
} else {
|
||||
$('<span class="red-ui-palette-node-config-label" data-i18n="sidebar.config.'+name+'">').appendTo(header);
|
||||
}
|
||||
|
||||
$('<span class="red-ui-sidebar-node-config-filter-info"></span>').appendTo(header);
|
||||
|
||||
const changeBadgeContainer = $('<svg class="red-ui-sidebar-config-category-changed red-ui-flow-node-changed" width="10" height="10" viewBox="-1 -1 12 12"></svg>').appendTo(header);
|
||||
const changeBadge = document.createElementNS("http://www.w3.org/2000/svg", "circle");
|
||||
changeBadge.setAttribute("cx", "5");
|
||||
changeBadge.setAttribute("cy", "5");
|
||||
changeBadge.setAttribute("r", "5");
|
||||
changeBadgeContainer.append(changeBadge);
|
||||
|
||||
category = $('<ul class="red-ui-palette-content red-ui-sidebar-node-config-list"></ul>').appendTo(container);
|
||||
category.on("click", function(e) {
|
||||
$(content).find(".red-ui-palette-node").removeClass("selected");
|
||||
@ -150,9 +159,6 @@ RED.sidebar.config = (function() {
|
||||
$('<li class="red-ui-palette-node-config-type">'+node.type+'</li>').appendTo(list);
|
||||
currentType = node.type;
|
||||
}
|
||||
if (node.changed) {
|
||||
labelText += "!!"
|
||||
}
|
||||
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);
|
||||
entry.data('node',node.id);
|
||||
@ -181,15 +187,29 @@ RED.sidebar.config = (function() {
|
||||
}
|
||||
}
|
||||
|
||||
if (node.changed) {
|
||||
const nodeDivAnnotations = $('<svg class="red-ui-palette-node-annotations red-ui-flow-node-changed" width="10" height="10" viewBox="-1 -1 12 12"></svg>').appendTo(nodeDiv);
|
||||
const changeBadge = document.createElementNS("http://www.w3.org/2000/svg", "circle");
|
||||
changeBadge.setAttribute("cx", "5");
|
||||
changeBadge.setAttribute("cy", "5");
|
||||
changeBadge.setAttribute("r", "5");
|
||||
nodeDivAnnotations.append($(changeBadge));
|
||||
|
||||
const categoryHeader = list.parent().find(".red-ui-sidebar-config-tray-header.red-ui-palette-header");
|
||||
categoryHeader.addClass("red-ui-sidebar-config-changed");
|
||||
nodeDiv.addClass("red-ui-palette-node-config-changed");
|
||||
}
|
||||
|
||||
if (!node.valid) {
|
||||
nodeDiv.addClass("red-ui-palette-node-config-invalid")
|
||||
const nodeDivAnnotations = $('<svg class="red-ui-palette-node-annotations red-ui-flow-node-error" width="10" height="10"></svg>').appendTo(nodeDiv)
|
||||
const nodeDivAnnotations = $('<svg class="red-ui-palette-node-annotations red-ui-flow-node-error" width="10" height="10"></svg>').appendTo(nodeDiv);
|
||||
const errorBadge = document.createElementNS("http://www.w3.org/2000/svg", "path");
|
||||
errorBadge.setAttribute("d", "M 0,9 l 10,0 -5,-8 z");
|
||||
nodeDivAnnotations.append($(errorBadge))
|
||||
nodeDivAnnotations.append($(errorBadge));
|
||||
|
||||
nodeDiv.addClass("red-ui-palette-node-config-invalid");
|
||||
RED.popover.tooltip(nodeDivAnnotations, function () {
|
||||
if (node.validationErrors && node.validationErrors.length > 0) {
|
||||
return RED._("editor.errors.invalidProperties")+"<br> - "+node.validationErrors.join("<br> - ")
|
||||
return RED._("editor.errors.invalidProperties") + "<br> - " + node.validationErrors.join("<br> - ");
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -252,6 +272,10 @@ RED.sidebar.config = (function() {
|
||||
$(this).remove();
|
||||
delete categories[id];
|
||||
}
|
||||
|
||||
// Remove the `changed` badge from the category header
|
||||
const categoryHeader = $(this).find(".red-ui-sidebar-config-tray-header.red-ui-palette-header");
|
||||
categoryHeader.removeClass("red-ui-sidebar-config-changed");
|
||||
})
|
||||
var globalConfigNodes = [];
|
||||
var configList = {};
|
||||
|
@ -84,6 +84,11 @@ ul.red-ui-sidebar-node-config-list {
|
||||
background: var(--red-ui-node-config-background);
|
||||
color: var(--red-ui-primary-text-color);
|
||||
cursor: pointer;
|
||||
&.red-ui-palette-node-config-invalid.red-ui-palette-node-config-changed {
|
||||
.red-ui-palette-node-annotations.red-ui-flow-node-error {
|
||||
left: calc(100% - 28px);
|
||||
}
|
||||
}
|
||||
}
|
||||
ul.red-ui-sidebar-node-config-list li.red-ui-palette-node-config-type {
|
||||
color: var(--red-ui-secondary-text-color);
|
||||
@ -115,6 +120,15 @@ ul.red-ui-sidebar-node-config-list li.red-ui-palette-node-config-type {
|
||||
.red-ui-palette-node-config-invalid {
|
||||
border-color: var(--red-ui-form-input-border-error-color)
|
||||
}
|
||||
.red-ui-sidebar-config-tray-header.red-ui-palette-header:not(.red-ui-sidebar-config-changed) .red-ui-flow-node-changed {
|
||||
display: none;
|
||||
}
|
||||
.red-ui-sidebar-config-tray-header.red-ui-palette-header.red-ui-sidebar-config-changed .red-ui-flow-node-changed {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
top: 1px;
|
||||
right: 1px;
|
||||
}
|
||||
.red-ui-palette-node-annotations {
|
||||
position: absolute;
|
||||
left: calc(100% - 15px);
|
||||
|
Loading…
x
Reference in New Issue
Block a user