From 0efea6b15bef50753d12f9215e4f058516af297c Mon Sep 17 00:00:00 2001 From: Joe Pavitt Date: Tue, 1 Oct 2024 10:56:34 +0100 Subject: [PATCH 1/4] Add minor amendments to button config for click events & docs --- docs/examples/ui-button-hold.json | 263 +++++++++++++++++++++ docs/nodes/widgets/ui-button.md | 30 ++- docs/public/videos/demo-button-hold.mp4 | Bin 0 -> 86570 bytes nodes/widgets/locales/en-US/ui_button.html | 8 +- nodes/widgets/locales/en-US/ui_button.json | 3 +- nodes/widgets/ui_button.html | 36 ++- nodes/widgets/ui_button.js | 9 + ui/src/widgets/ui-button/UIButton.vue | 2 +- 8 files changed, 334 insertions(+), 17 deletions(-) create mode 100644 docs/examples/ui-button-hold.json create mode 100644 docs/public/videos/demo-button-hold.mp4 diff --git a/docs/examples/ui-button-hold.json b/docs/examples/ui-button-hold.json new file mode 100644 index 000000000..ae8c19225 --- /dev/null +++ b/docs/examples/ui-button-hold.json @@ -0,0 +1,263 @@ +[ + { + "id": "41af91ca7e2d0577", + "type": "ui-button", + "z": "9cb9bb3cd8e3faee", + "group": "4400cdcbaa768e57", + "name": "", + "label": "Hold Duration Test", + "order": 1, + "width": "3", + "height": "1", + "emulateClick": false, + "tooltip": "", + "color": "", + "bgcolor": "", + "className": "", + "icon": "", + "iconPosition": "left", + "payload": "Click", + "payloadType": "str", + "topic": "topic", + "topicType": "msg", + "buttonColor": "", + "textColor": "", + "iconColor": "", + "enableClick": false, + "enablePointerdown": true, + "pointerdownPayload": "", + "pointerdownPayloadType": "date", + "enablePointerup": true, + "pointerupPayload": "", + "pointerupPayloadType": "date", + "x": 1110, + "y": 4380, + "wires": [ + [ + "57e8b3025bda5b1b", + "c09876e76c45d7fb" + ] + ] + }, + { + "id": "57e8b3025bda5b1b", + "type": "debug", + "z": "9cb9bb3cd8e3faee", + "name": "debug 2569", + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "true", + "targetType": "full", + "statusVal": "", + "statusType": "auto", + "x": 1290, + "y": 4340, + "wires": [] + }, + { + "id": "c09876e76c45d7fb", + "type": "join", + "z": "9cb9bb3cd8e3faee", + "name": "", + "mode": "custom", + "build": "object", + "property": "payload", + "propertyType": "msg", + "key": "_event.type", + "joiner": "\\n", + "joinerType": "str", + "accumulate": false, + "timeout": "", + "count": "2", + "reduceRight": false, + "reduceExp": "", + "reduceInit": "", + "reduceInitType": "", + "reduceFixup": "", + "x": 1270, + "y": 4380, + "wires": [ + [ + "9503bfb0e2713b08" + ] + ] + }, + { + "id": "9503bfb0e2713b08", + "type": "change", + "z": "9cb9bb3cd8e3faee", + "name": "", + "rules": [ + { + "t": "set", + "p": "payload.held", + "pt": "msg", + "to": "$number(msg.payload.pointerup) - $number(msg.payload.pointerdown)", + "tot": "jsonata" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 1440, + "y": 4380, + "wires": [ + [ + "d289e0f09ddd90f9", + "6314f8f6c76cc4e5" + ] + ] + }, + { + "id": "d289e0f09ddd90f9", + "type": "debug", + "z": "9cb9bb3cd8e3faee", + "name": "debug 2571", + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "true", + "targetType": "full", + "statusVal": "", + "statusType": "auto", + "x": 1630, + "y": 4380, + "wires": [] + }, + { + "id": "ac3f3589547ed27b", + "type": "ui-text", + "z": "9cb9bb3cd8e3faee", + "group": "4400cdcbaa768e57", + "order": 2, + "width": "3", + "height": "1", + "name": "", + "label": "Held For:", + "format": "{{msg.payload}}", + "layout": "row-spread", + "style": false, + "font": "", + "fontSize": 16, + "color": "#717171", + "className": "", + "x": 1840, + "y": 4340, + "wires": [] + }, + { + "id": "6314f8f6c76cc4e5", + "type": "change", + "z": "9cb9bb3cd8e3faee", + "name": "", + "rules": [ + { + "t": "set", + "p": "payload", + "pt": "msg", + "to": "msg.payload.held & \"ms\"", + "tot": "jsonata" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 1660, + "y": 4340, + "wires": [ + [ + "ac3f3589547ed27b" + ] + ] + }, + { + "id": "4400cdcbaa768e57", + "type": "ui-group", + "name": "Hold Duration Test", + "page": "ea42e606327de0a5", + "width": "6", + "height": "1", + "order": 1, + "showTitle": true, + "className": "", + "visible": "true", + "disabled": "false" + }, + { + "id": "ea42e606327de0a5", + "type": "ui-page", + "name": "Demo Page", + "ui": "c2e1aa56f50f03bd", + "path": "/page2", + "icon": "", + "layout": "grid", + "theme": "afa24cae12543ca5", + "breakpoints": [ + { + "name": "Default", + "px": "0", + "cols": "3" + }, + { + "name": "Tablet", + "px": "576", + "cols": "6" + }, + { + "name": "Small Desktop", + "px": "768", + "cols": "9" + }, + { + "name": "Desktop", + "px": "1024", + "cols": "12" + } + ], + "order": 23, + "className": "", + "visible": "true", + "disabled": "false" + }, + { + "id": "c2e1aa56f50f03bd", + "type": "ui-base", + "name": "Dashboard", + "path": "/dashboard", + "includeClientData": true, + "acceptsClientConfig": [ + "ui-control", + "ui-notification" + ], + "showPathInSidebar": false, + "showPageTitle": false, + "navigationStyle": "icon", + "titleBarStyle": "default" + }, + { + "id": "afa24cae12543ca5", + "type": "ui-theme", + "name": "Example Theme", + "colors": { + "surface": "#ffffff", + "primary": "#0094ce", + "bgPage": "#eeeeee", + "groupBg": "#fafdff", + "groupOutline": "#000000" + }, + "sizes": { + "groupGap": "12px", + "widgetGap": "12px", + "pagePadding": "12px", + "groupBorderRadius": "0px", + "density": "default" + } + } +] \ No newline at end of file diff --git a/docs/nodes/widgets/ui-button.md b/docs/nodes/widgets/ui-button.md index 59d7bffb0..95c07b772 100644 --- a/docs/nodes/widgets/ui-button.md +++ b/docs/nodes/widgets/ui-button.md @@ -22,10 +22,13 @@ props: description: Icon color. If not provided, will have the same color as text / label. dynamic: true Enable pointerup event: - description: Enables the capturing of pointerup events on the button + description: Enables the capturing of pointerup events on the button. The output will contain msg._event which details the type of interaction causing the event. dynamic: false Enable pointerdown event: - description: Enables the capturing of pointerdown events on the button + description: Enables the capturing of pointerdown events on the button. The output will contain msg._event which details the type of interaction causing the event. + dynamic: false + Enable click event: + description: Enables the capturing of click events on the button, i.e.g when both the pointerdown and pointerup events occur whilst the mouse stays inside the button. The output will contain msg._event which details the type of interaction causing the event. dynamic: false Emulate Button Click: If enabled, any received message will trigger a button click, emitting the relevant payload and topic. controls: @@ -57,7 +60,16 @@ dynamic: --- @@ -83,5 +95,19 @@ Adds a clickable button to your dashboard. ## Example +### Simple Button + ![Example of a Button](/images/node-examples/ui-button.png "Example of a Button"){data-zoomable} *Example of a rendered button in a Dashboard.* + +### Measuring Hold Duration + +It's possible to cofnigure a button to emit `pointerdown` and `pointerup` events. With this, it's possible to measure how long a button is held down for. + + + +The flow to achieve this demo is as follows: + + \ No newline at end of file diff --git a/docs/public/videos/demo-button-hold.mp4 b/docs/public/videos/demo-button-hold.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..5236bb5ad4cf21ad4ecf8911490721ccf77cd622 GIT binary patch literal 86570 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 literal 0 HcmV?d00001 diff --git a/nodes/widgets/locales/en-US/ui_button.html b/nodes/widgets/locales/en-US/ui_button.html index ce6f42bde..e61c97ef0 100644 --- a/nodes/widgets/locales/en-US/ui_button.html +++ b/nodes/widgets/locales/en-US/ui_button.html @@ -23,11 +23,13 @@

Properties

Label string
The text shown within the button. If not provided, then the button will only render the icon. It supports HTML content
Enable pointerdown event bool
-
If enabled, the button will emit a message on pointerdown event with the given payload
+
If enabled, the button will emit a message on pointerdown event with the given payload. The output will contain msg._event which details the type of interaction causing the event.
Enable pointerup event bool
-
If enabled, the button will emit a message on pointerup event with the given payload
+
If enabled, the button will emit a message on pointerup event with the given payload. The output will contain msg._event which details the type of interaction causing the event.
+
Enable Click event bool
+
If enabled, the button will emit a click event, which fires when both the up and down events occur over the button. The output will contain msg._event which details the type of interaction causing the event.
Emulate Button Click bool
-
If enabled, any received message will trigger a button click, emitting the relevant payload and topic
+
If enabled, any received message will trigger a button click, emitting the relevant payload and topic.
Background Colorstring
Background color for the button, valid values as green/#a5a5a5/rgb(165,165,165)/green-darken-2, check Vuetify Colors for help, send empty string to use default theme color
Text Colorstring
diff --git a/nodes/widgets/locales/en-US/ui_button.json b/nodes/widgets/locales/en-US/ui_button.json index 12295fc72..c4feb3061 100644 --- a/nodes/widgets/locales/en-US/ui_button.json +++ b/nodes/widgets/locales/en-US/ui_button.json @@ -19,10 +19,11 @@ "optionalColor": "optional text/icon color", "background": "Background", "optionalBackgroundColor": "optional background color", - "whenClicked": "When clicked, send:", + "alwaysSend": "Always Send:", "payload": "Payload", "topic": "Topic", "emulateClick": "If msg arrives on input, emulate a button click:", + "enableClick": "Enable click event", "enablePointerup": "Enable pointerup event", "enablePointerdown": "Enable pointerdown event", "buttonColor": "Background", diff --git a/nodes/widgets/ui_button.html b/nodes/widgets/ui_button.html index 01673945b..5b3e20bc3 100644 --- a/nodes/widgets/ui_button.html +++ b/nodes/widgets/ui_button.html @@ -37,16 +37,14 @@ buttonColor: { value: '' }, textColor: { value: '' }, iconColor: { value: '' }, - + enableClick: { value: true }, // pointerup/down event support enablePointerdown: { value: false }, pointerdownPayload: { value: '', validate: (hasProperty(RED.validators, 'typedInput') ? RED.validators.typedInput('pointerdownPayloadType') : function (v) { return true }) }, pointerdownPayloadType: { value: 'str' }, enablePointerup: { value: false }, pointerupPayload: { value: '', validate: (hasProperty(RED.validators, 'typedInput') ? RED.validators.typedInput('pointerupPayloadType') : function (v) { return true }) }, - pointerupPayloadType: { value: 'str' }, - - iconColor: { value: '' } + pointerupPayloadType: { value: 'str' } }, inputs: 1, outputs: 1, @@ -93,6 +91,20 @@ types: ['str', 'msg', 'flow', 'global'] }) + // backward compatability + if (typeof this.enableClick === 'undefined') { + this.enableClick = true + $('#node-input-enableClick').prop('checked', true) + } + + $('#node-input-enableClick').on('change', function () { + if (this.checked) { + $('.form-row-click').show() + } else { + $('.form-row-click').hide() + } + }) + $('#node-input-enablePointerdown').on('change', function () { if (this.checked) { $('.form-row-pointerdown').show() @@ -105,8 +117,8 @@ default: 'str', typeField: $('#node-input-pointerdownPayloadType'), types: ['str', 'num', 'bool', 'json', 'bin', 'date', 'flow', 'global'] - }); - + }) + $('#node-input-enablePointerup').on('change', function () { if (this.checked) { $('.form-row-pointerup').show() @@ -117,9 +129,9 @@ $('#node-input-pointerupPayload').typedInput({ default: 'str', - typeField: $('#node-input-pointerdownPayloadType'), + typeField: $('#node-input-pointerupPayloadType'), types: ['str', 'num', 'bool', 'json', 'bin', 'date', 'flow', 'global'] - }); + }) if (!this.iconPosition) { $('#node-input-iconPosition').val('left') @@ -208,13 +220,17 @@
- + +
-
+
+
+ +
diff --git a/nodes/widgets/ui_button.js b/nodes/widgets/ui_button.js index 9bb477bc0..07050853b 100644 --- a/nodes/widgets/ui_button.js +++ b/nodes/widgets/ui_button.js @@ -10,6 +10,11 @@ module.exports = function (RED) { // which group are we rendering this widget const group = RED.nodes.getNode(config.group) + // backward compatability + if (typeof config.enableClick === 'undefined') { + config.enableClick = true + } + const beforeSend = async function (msg) { let error = null let payload = null @@ -40,6 +45,8 @@ module.exports = function (RED) { break } + console.log('payload', payload, payloadType) + if (payloadType === 'flow' || payloadType === 'global') { try { const parts = RED.util.normalisePropertyExpression(payload) @@ -54,6 +61,8 @@ module.exports = function (RED) { } } else if (payloadType === 'date') { payload = Date.now() + } else if (payloadType === 'num') { + payload = Number(payload) } else { try { payload = RED.util.evaluateNodeProperty(payload, payloadType, node) diff --git a/ui/src/widgets/ui-button/UIButton.vue b/ui/src/widgets/ui-button/UIButton.vue index ad9f0433b..eab44776f 100644 --- a/ui/src/widgets/ui-button/UIButton.vue +++ b/ui/src/widgets/ui-button/UIButton.vue @@ -70,7 +70,7 @@ export default { }, methods: { action ($evt) { - if (!this.isPointerOverButton) { + if (!this.isPointerOverButton || !this.props.enableClick) { return } const evt = { From 1d000b5f9c8e39f843c1d68cb8fe0e0188ae036b Mon Sep 17 00:00:00 2001 From: Joe Pavitt <99246719+joepavitt@users.noreply.github.com> Date: Tue, 1 Oct 2024 12:24:21 +0100 Subject: [PATCH 2/4] Update nodes/widgets/ui_button.js --- nodes/widgets/ui_button.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/nodes/widgets/ui_button.js b/nodes/widgets/ui_button.js index 07050853b..b535d7722 100644 --- a/nodes/widgets/ui_button.js +++ b/nodes/widgets/ui_button.js @@ -45,8 +45,6 @@ module.exports = function (RED) { break } - console.log('payload', payload, payloadType) - if (payloadType === 'flow' || payloadType === 'global') { try { const parts = RED.util.normalisePropertyExpression(payload) From 987614ce09438e20814eca3fa4fe929bb99c8cf2 Mon Sep 17 00:00:00 2001 From: Joe Pavitt Date: Sat, 12 Oct 2024 18:45:10 +0100 Subject: [PATCH 3/4] Improve config layout & ensure emulated button click not emitted if event is disabled --- nodes/widgets/ui_button.html | 16 +++++++++------- nodes/widgets/ui_button.js | 4 +--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/nodes/widgets/ui_button.html b/nodes/widgets/ui_button.html index 5b3e20bc3..e965f70af 100644 --- a/nodes/widgets/ui_button.html +++ b/nodes/widgets/ui_button.html @@ -224,9 +224,15 @@
- - - +
+ + + +
+
+ + +
@@ -236,10 +242,6 @@
-
- - -

Custom Styling

diff --git a/nodes/widgets/ui_button.js b/nodes/widgets/ui_button.js index 07050853b..a4aa506c3 100644 --- a/nodes/widgets/ui_button.js +++ b/nodes/widgets/ui_button.js @@ -45,8 +45,6 @@ module.exports = function (RED) { break } - console.log('payload', payload, payloadType) - if (payloadType === 'flow' || payloadType === 'global') { try { const parts = RED.util.normalisePropertyExpression(payload) @@ -119,7 +117,7 @@ module.exports = function (RED) { onAction: true, beforeSend, onInput: async function (msg) { - if (config.emulateClick) { + if (config.emulateClick && config.enableClick) { msg = await beforeSend(msg) if (config.topic || config.topicType) { From b624af71223c374ed987a350efb85d00102cccbb Mon Sep 17 00:00:00 2001 From: Joe Pavitt <99246719+joepavitt@users.noreply.github.com> Date: Sat, 12 Oct 2024 18:52:33 +0100 Subject: [PATCH 4/4] Update nodes/widgets/locales/en-US/ui_button.html Co-authored-by: Stephen McLaughlin <44235289+Steve-Mcl@users.noreply.github.com> --- nodes/widgets/locales/en-US/ui_button.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nodes/widgets/locales/en-US/ui_button.html b/nodes/widgets/locales/en-US/ui_button.html index e61c97ef0..936c566a3 100644 --- a/nodes/widgets/locales/en-US/ui_button.html +++ b/nodes/widgets/locales/en-US/ui_button.html @@ -29,7 +29,7 @@

Properties

Enable Click event bool
If enabled, the button will emit a click event, which fires when both the up and down events occur over the button. The output will contain msg._event which details the type of interaction causing the event.
Emulate Button Click bool
-
If enabled, any received message will trigger a button click, emitting the relevant payload and topic.
+
If enabled, any received message will trigger a button click, emitting the relevant payload and topic. Note, requires the "Enable Click event" to be enabled
Background Colorstring
Background color for the button, valid values as green/#a5a5a5/rgb(165,165,165)/green-darken-2, check Vuetify Colors for help, send empty string to use default theme color
Text Colorstring