From cae0648208ff97d1c31d1ae8921aa3d8cade32c1 Mon Sep 17 00:00:00 2001 From: Connor KD9LSV Date: Mon, 23 Dec 2024 09:47:45 -0600 Subject: [PATCH 1/5] Add Gauge Shifts --- tests/index.js | 13 ++++++++ transformers/index.js | 3 +- transformers/map.json | 3 +- transformers/nodes/ui-gauge.js | 55 ++++++++++++++++++++++++++++++++++ 4 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 transformers/nodes/ui-gauge.js diff --git a/tests/index.js b/tests/index.js index 5f6a8e1..f0b4e70 100644 --- a/tests/index.js +++ b/tests/index.js @@ -205,6 +205,19 @@ describe('Dashboard Migration Script', function () { }) }) + describe('UI Gauge:', function () { + const input = utils.getByType(migratedFlow, 'ui-gauge')[0] + const input1 = utils.getByType(basicLayoutAfter, 'ui-gauge')[0] + + const excludeFromChecks = ['id', 'group'] + Object.keys(input).forEach((prop) => { + if (!excludeFromChecks.includes(prop)) { + it('should set ' + prop + ' correctly ', function () { + input[prop].should.eql(input1[prop]) + }) + } + }) + }) describe('Unsupported UI Nodes:', function () { it('should should be disabled in the NR Editor', function () { const template0 = utils.getByType(migratedFlow, 'ui_template')[0] diff --git a/transformers/index.js b/transformers/index.js index 7a54aae..a3a5c00 100644 --- a/transformers/index.js +++ b/transformers/index.js @@ -7,5 +7,6 @@ module.exports = { uiSlider: require('./nodes/ui-slider'), uiSwitch: require('./nodes/ui-switch'), uiText: require('./nodes/ui-text'), - uiTextInput: require('./nodes/ui-text-input') + uiTextInput: require('./nodes/ui-text-input'), + uiGauge: require('./nodes/ui-gauge') } diff --git a/transformers/map.json b/transformers/map.json index 53eb2cb..1fc56a6 100644 --- a/transformers/map.json +++ b/transformers/map.json @@ -7,5 +7,6 @@ "ui_slider": "uiSlider", "ui_switch": "uiSwitch", "ui_text": "uiText", - "ui_text_input": "uiTextInput" + "ui_text_input": "uiTextInput", + "ui_gauge": "uiGauge" } diff --git a/transformers/nodes/ui-gauge.js b/transformers/nodes/ui-gauge.js new file mode 100644 index 0000000..ea256d6 --- /dev/null +++ b/transformers/nodes/ui-gauge.js @@ -0,0 +1,55 @@ +module.exports = function (node, baseId, themeId) { + node.type = 'ui-gauge' + + // update properties + node.units=node.label; + node.segments[1].from=node.min; + node.segments[1].colors=node.colors[1]; + node.segments[2].from=node.seg1; + node.segments[2].color=node.colors[2]; + node.segments[3].from=node.seg2; + node.segments[3].color=node.colors[3]; + switch (node.gtype) { + case "gage": //gauge + node.gtype="gauge-half"; + break; + case "wave": //level + node.gtype="gauge-tank" + break; + default: + node.gtype="gauge-34"; + break; + } + + let str=node.format; + const index_pre = str.indexOf("{{value}}"); + if (index_pre !== -1) { + const result_pre = str.substring(0, index_pre); + node.prefix=result_pre; + } else { + node.prefix="" + } + const index_suf = str.indexOf("{{value}}"); + if (index_suf !== -1) { + const result_suf = str.substring(index_suf+9, ); + node.suffix=result_suf; + } else { + node.suffix="" + } + + // new properties + node.icon="" + node.sizeThickness=16 + node.sizeGap=4 + node.sizeKeyThickness=8 + node.styleRounded=true + node.styleGlow=false + + // remove properties + delete node.seg1 + delete node.seg2 + delete node.colors + delete node.format + + return node +} From 0d424ab3a678400b69a34a6dfda5c4469df361a5 Mon Sep 17 00:00:00 2001 From: Connor KD9LSV Date: Mon, 23 Dec 2024 17:00:15 -0600 Subject: [PATCH 2/5] fix iteration --- transformers/nodes/ui-gauge.js | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/transformers/nodes/ui-gauge.js b/transformers/nodes/ui-gauge.js index ea256d6..9c55ef9 100644 --- a/transformers/nodes/ui-gauge.js +++ b/transformers/nodes/ui-gauge.js @@ -3,12 +3,16 @@ module.exports = function (node, baseId, themeId) { // update properties node.units=node.label; - node.segments[1].from=node.min; - node.segments[1].colors=node.colors[1]; - node.segments[2].from=node.seg1; + node.segments=[] + node.segments[0]={} + node.segments[0].from=node.min; + node.segments[0].colors=node.colors[0]; + node.segments[1]={} + node.segments[1].from=node.seg1; + node.segments[1].color=node.colors[1]; + node.segments[2]={} + node.segments[2].from=node.seg2; node.segments[2].color=node.colors[2]; - node.segments[3].from=node.seg2; - node.segments[3].color=node.colors[3]; switch (node.gtype) { case "gage": //gauge node.gtype="gauge-half"; @@ -25,17 +29,14 @@ module.exports = function (node, baseId, themeId) { const index_pre = str.indexOf("{{value}}"); if (index_pre !== -1) { const result_pre = str.substring(0, index_pre); - node.prefix=result_pre; + node.prefix=result_pre; + const index_suf = index_pre+9; + const result_suf = str.substring(index_suf, ); + node.suffix=result_suf; } else { node.prefix="" - } - const index_suf = str.indexOf("{{value}}"); - if (index_suf !== -1) { - const result_suf = str.substring(index_suf+9, ); - node.suffix=result_suf; - } else { node.suffix="" - } + }; // new properties node.icon="" From e6d690290eb5811e6c6380028d5b2b49f284f923 Mon Sep 17 00:00:00 2001 From: Connor KD9LSV Date: Mon, 23 Dec 2024 17:35:17 -0600 Subject: [PATCH 3/5] Complete Math for Gauge if needed. --- transformers/nodes/ui-gauge.js | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/transformers/nodes/ui-gauge.js b/transformers/nodes/ui-gauge.js index 9c55ef9..84976e6 100644 --- a/transformers/nodes/ui-gauge.js +++ b/transformers/nodes/ui-gauge.js @@ -3,16 +3,23 @@ module.exports = function (node, baseId, themeId) { // update properties node.units=node.label; - node.segments=[] - node.segments[0]={} + node.segments=[{},{},{}] node.segments[0].from=node.min; node.segments[0].colors=node.colors[0]; - node.segments[1]={} - node.segments[1].from=node.seg1; + if(node.seg1!=""){ + node.segments[1].from=node.seg1; + }else{ + node.segments[1].from=(node.max-node.min)*.4+node.min; + } node.segments[1].color=node.colors[1]; - node.segments[2]={} - node.segments[2].from=node.seg2; + + if(node.seg2!=""){ + node.segments[2].from=node.seg2; + }else{ + node.segments[2].from=node.max-(node.max-node.min)*.3; + } node.segments[2].color=node.colors[2]; + switch (node.gtype) { case "gage": //gauge node.gtype="gauge-half"; From a015c50857347534fce20dd605eb15069a5a14a1 Mon Sep 17 00:00:00 2001 From: Connor KD9LSV Date: Tue, 24 Dec 2024 14:38:23 -0600 Subject: [PATCH 4/5] Lint Clean --- transformers/nodes/ui-gauge.js | 84 +++++++++++++++++----------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/transformers/nodes/ui-gauge.js b/transformers/nodes/ui-gauge.js index 84976e6..b579215 100644 --- a/transformers/nodes/ui-gauge.js +++ b/transformers/nodes/ui-gauge.js @@ -2,56 +2,56 @@ module.exports = function (node, baseId, themeId) { node.type = 'ui-gauge' // update properties - node.units=node.label; - node.segments=[{},{},{}] - node.segments[0].from=node.min; - node.segments[0].colors=node.colors[0]; - if(node.seg1!=""){ - node.segments[1].from=node.seg1; - }else{ - node.segments[1].from=(node.max-node.min)*.4+node.min; + node.units = node.label + node.segments = [{}, {}, {}] + node.segments[0].from = node.min + node.segments[0].colors = node.colors[0] + if (node.seg1 !== '') { + node.segments[1].from = node.seg1 + } else { + node.segments[1].from = (node.max - node.min) * 0.4 + node.min } - node.segments[1].color=node.colors[1]; - - if(node.seg2!=""){ - node.segments[2].from=node.seg2; - }else{ - node.segments[2].from=node.max-(node.max-node.min)*.3; + node.segments[1].color = node.colors[1] + + if (node.seg2 !== '') { + node.segments[2].from = node.seg2 + } else { + node.segments[2].from = node.max - (node.max - node.min) * 0.3 } - node.segments[2].color=node.colors[2]; - + node.segments[2].color = node.colors[2] + switch (node.gtype) { - case "gage": //gauge - node.gtype="gauge-half"; - break; - case "wave": //level - node.gtype="gauge-tank" - break; - default: - node.gtype="gauge-34"; - break; + case 'gage': // gauge + node.gtype = 'gauge-half' + break + case 'wave': // level + node.gtype = 'gauge-tank' + break + default: + node.gtype = 'gauge-34' + break } - let str=node.format; - const index_pre = str.indexOf("{{value}}"); - if (index_pre !== -1) { - const result_pre = str.substring(0, index_pre); - node.prefix=result_pre; - const index_suf = index_pre+9; - const result_suf = str.substring(index_suf, ); - node.suffix=result_suf; + const str = node.format + const indexpre = str.indexOf('{{value}}') + if (indexpre !== -1) { + const resultpre = str.substring(0, indexpre) + node.prefix = resultpre + const indexsuf = indexpre + 9 + const resultsuf = str.substring(indexsuf) + node.suffix = resultsuf } else { - node.prefix="" - node.suffix="" - }; + node.prefix = '' + node.suffix = '' + }; // new properties - node.icon="" - node.sizeThickness=16 - node.sizeGap=4 - node.sizeKeyThickness=8 - node.styleRounded=true - node.styleGlow=false + node.icon = '' + node.sizeThickness = 16 + node.sizeGap = 4 + node.sizeKeyThickness = 8 + node.styleRounded = true + node.styleGlow = false // remove properties delete node.seg1 From 6ad116829f3b67ea6a33d6967b3099eb9c2eb45f Mon Sep 17 00:00:00 2001 From: Connor Dickey Date: Fri, 10 Jan 2025 10:02:26 -0600 Subject: [PATCH 5/5] Add Test Parameters. --- tests/flows/basic-layout-after.json | 45 ++++++++++++++++++++++++++++ tests/flows/basic-layout-before.json | 28 +++++++++++++++++ 2 files changed, 73 insertions(+) diff --git a/tests/flows/basic-layout-after.json b/tests/flows/basic-layout-after.json index 6b64e84..f2f8366 100644 --- a/tests/flows/basic-layout-after.json +++ b/tests/flows/basic-layout-after.json @@ -230,6 +230,51 @@ [] ] }, + { + "id": "ca93de861ac43763", + "type": "ui-gauge", + "z": "94d6d107f1742efb", + "name": "My Favorite Gauge", + "group": "f663864dda246564", + "order": 12, + "width": 0, + "height": 0, + "gtype": "gauge-half", + "title": "gauge", + "label": "units", + "min": 0, + "max": 10, + "diff": false, + "className": "", + "x": 350, + "y": 320, + "wires": [ + + ], + "units": "units", + "segments": [ + { + "from": 0, + "colors": "#00b500" + }, + { + "from": 4, + "color": "#e6e600" + }, + { + "from": 7, + "color": "#ca3838" + } + ], + "prefix": "", + "suffix": " %", + "icon": "", + "sizeThickness": 16, + "sizeGap": 4, + "sizeKeyThickness": 8, + "styleRounded": true, + "styleGlow": false + }, { "id": "856a31bba370e7fc", "type": "ui-group", diff --git a/tests/flows/basic-layout-before.json b/tests/flows/basic-layout-before.json index 5efea68..b739f0e 100644 --- a/tests/flows/basic-layout-before.json +++ b/tests/flows/basic-layout-before.json @@ -223,6 +223,34 @@ [] ] }, + { + "id": "7fd46d95e548d6f4", + "type": "ui_gauge", + "z": "94d6d107f1742efb", + "name": "My Favorite Gauge", + "group": "856a31bba370e7fc", + "order": 12, + "width": 0, + "height": 0, + "gtype": "gage", + "title": "gauge", + "label": "units", + "format": "{{value}} %", + "min": 0, + "max": 10, + "colors": [ + "#00b500", + "#e6e600", + "#ca3838" + ], + "seg1": "", + "seg2": "", + "diff": false, + "className": "", + "x": 350, + "y": 320, + "wires": [] + }, { "id": "856a31bba370e7fc", "type": "ui_group",