From 54e0de64a73b3e8b9db6a44fc757e486dcb63bca Mon Sep 17 00:00:00 2001 From: GogoVega <92022724+GogoVega@users.noreply.github.com> Date: Sat, 22 Jun 2024 15:24:41 +0200 Subject: [PATCH 1/3] Add the `changed` badge for the config node --- .../editor-client/src/js/ui/tab-config.js | 29 ++++++++++++++----- .../editor-client/src/sass/tab-config.scss | 2 +- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/tab-config.js b/packages/node_modules/@node-red/editor-client/src/js/ui/tab-config.js index b8e3aa0ba..bfd595690 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/tab-config.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/tab-config.js @@ -150,9 +150,6 @@ RED.sidebar.config = (function() { $('
  • '+node.type+'
  • ').appendTo(list); currentType = node.type; } - if (node.changed) { - labelText += "!!" - } var entry = $('
  • ').appendTo(list); var nodeDiv = $('
    ').appendTo(entry); entry.data('node',node.id); @@ -181,15 +178,31 @@ RED.sidebar.config = (function() { } } + if (node.changed) { + const nodeDivAnnotations = $('').appendTo(nodeDiv); + const changedBadge = document.createElementNS("http://www.w3.org/2000/svg", "circle"); + changedBadge.setAttribute("cx", "5"); + changedBadge.setAttribute("cy", "5"); + changedBadge.setAttribute("r", "5"); + nodeDivAnnotations.append($(changedBadge)); + } + if (!node.valid) { - nodeDiv.addClass("red-ui-palette-node-config-invalid") - const nodeDivAnnotations = $('').appendTo(nodeDiv) - const errorBadge = document.createElementNS("http://www.w3.org/2000/svg","path"); + nodeDiv.addClass("red-ui-palette-node-config-invalid"); + const nodeDivAnnotations = $('').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)); + + if (node.changed) { + nodeDivAnnotations.css("left", "calc(100% - 28px)"); + } else { + nodeDivAnnotations.css("left", "calc(100% - 15px)"); + } + RED.popover.tooltip(nodeDivAnnotations, function () { if (node.validationErrors && node.validationErrors.length > 0) { - return RED._("editor.errors.invalidProperties")+"
    - "+node.validationErrors.join("
    - ") + return RED._("editor.errors.invalidProperties") + "
    - " + node.validationErrors.join("
    - "); } }) } diff --git a/packages/node_modules/@node-red/editor-client/src/sass/tab-config.scss b/packages/node_modules/@node-red/editor-client/src/sass/tab-config.scss index aed01240a..aeb57a5a6 100644 --- a/packages/node_modules/@node-red/editor-client/src/sass/tab-config.scss +++ b/packages/node_modules/@node-red/editor-client/src/sass/tab-config.scss @@ -117,7 +117,7 @@ ul.red-ui-sidebar-node-config-list li.red-ui-palette-node-config-type { } .red-ui-palette-node-annotations { position: absolute; - left: calc(100% - 15px); + //left: calc(100% - 15px); top: -8px; display: block; } From b8eeef182ca7da398b6a4867d4f5b50b3f96b4cd Mon Sep 17 00:00:00 2001 From: GogoVega <92022724+GogoVega@users.noreply.github.com> Date: Tue, 2 Jul 2024 16:12:02 +0200 Subject: [PATCH 2/3] Add `changed` badge for category header + fix cropped badge --- .../editor-client/src/js/ui/tab-config.js | 18 +++++++++++++++++- .../editor-client/src/sass/tab-config.scss | 9 +++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/tab-config.js b/packages/node_modules/@node-red/editor-client/src/js/ui/tab-config.js index bfd595690..2f9a00bf0 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/tab-config.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/tab-config.js @@ -56,7 +56,16 @@ RED.sidebar.config = (function() { } else { $('').appendTo(header); } + $('').appendTo(header); + + const changeBadgeContainer = $('').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 = $('').appendTo(container); category.on("click", function(e) { $(content).find(".red-ui-palette-node").removeClass("selected"); @@ -179,12 +188,15 @@ RED.sidebar.config = (function() { } if (node.changed) { - const nodeDivAnnotations = $('').appendTo(nodeDiv); + const nodeDivAnnotations = $('').appendTo(nodeDiv); const changedBadge = document.createElementNS("http://www.w3.org/2000/svg", "circle"); changedBadge.setAttribute("cx", "5"); changedBadge.setAttribute("cy", "5"); changedBadge.setAttribute("r", "5"); nodeDivAnnotations.append($(changedBadge)); + + const categoryHeader = list.parent().find(".red-ui-sidebar-config-tray-header.red-ui-palette-header"); + categoryHeader.addClass("red-ui-sidebar-config-changed"); } if (!node.valid) { @@ -265,6 +277,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 = {}; diff --git a/packages/node_modules/@node-red/editor-client/src/sass/tab-config.scss b/packages/node_modules/@node-red/editor-client/src/sass/tab-config.scss index aeb57a5a6..9f1884620 100644 --- a/packages/node_modules/@node-red/editor-client/src/sass/tab-config.scss +++ b/packages/node_modules/@node-red/editor-client/src/sass/tab-config.scss @@ -115,6 +115,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); From 6da890bf8822239d35e82c192804d2fd2388897e Mon Sep 17 00:00:00 2001 From: GogoVega <92022724+GogoVega@users.noreply.github.com> Date: Fri, 25 Oct 2024 11:31:35 +0200 Subject: [PATCH 3/3] Manage badge locations with pure CSS + cleanup --- .../editor-client/src/js/ui/tab-config.js | 23 ++++++++----------- .../editor-client/src/sass/tab-config.scss | 7 +++++- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/tab-config.js b/packages/node_modules/@node-red/editor-client/src/js/ui/tab-config.js index 2f9a00bf0..8cb413bef 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/tab-config.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/tab-config.js @@ -188,30 +188,25 @@ RED.sidebar.config = (function() { } if (node.changed) { - const nodeDivAnnotations = $('').appendTo(nodeDiv); - const changedBadge = document.createElementNS("http://www.w3.org/2000/svg", "circle"); - changedBadge.setAttribute("cx", "5"); - changedBadge.setAttribute("cy", "5"); - changedBadge.setAttribute("r", "5"); - nodeDivAnnotations.append($(changedBadge)); + const nodeDivAnnotations = $('').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 = $('').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"); + errorBadge.setAttribute("d", "M 0,9 l 10,0 -5,-8 z"); nodeDivAnnotations.append($(errorBadge)); - if (node.changed) { - nodeDivAnnotations.css("left", "calc(100% - 28px)"); - } else { - nodeDivAnnotations.css("left", "calc(100% - 15px)"); - } - + 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") + "
    - " + node.validationErrors.join("
    - "); diff --git a/packages/node_modules/@node-red/editor-client/src/sass/tab-config.scss b/packages/node_modules/@node-red/editor-client/src/sass/tab-config.scss index 9f1884620..d2bc31dd1 100644 --- a/packages/node_modules/@node-red/editor-client/src/sass/tab-config.scss +++ b/packages/node_modules/@node-red/editor-client/src/sass/tab-config.scss @@ -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); @@ -126,7 +131,7 @@ ul.red-ui-sidebar-node-config-list li.red-ui-palette-node-config-type { } .red-ui-palette-node-annotations { position: absolute; - //left: calc(100% - 15px); + left: calc(100% - 15px); top: -8px; display: block; }