commit
590a0e7adb
11 changed files with 350 additions and 0 deletions
@ -0,0 +1,9 @@ |
|||||||
|
# Changelog |
||||||
|
|
||||||
|
## [v1.0.0] - 2022-04-29 |
||||||
|
|
||||||
|
### Added |
||||||
|
- Functional digital clock for the Node-RED Dashboard |
||||||
|
- Readme, Changelog and License |
||||||
|
|
||||||
|
[v1.0.0]: https://github.com/patrickknabe/node-red-contrib-ui-digital-clock/releases/tag/v1.0.0 |
||||||
@ -0,0 +1,21 @@ |
|||||||
|
MIT License |
||||||
|
|
||||||
|
Copyright (c) 2022 patrickknabe |
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy |
||||||
|
of this software and associated documentation files (the "Software"), to deal |
||||||
|
in the Software without restriction, including without limitation the rights |
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
||||||
|
copies of the Software, and to permit persons to whom the Software is |
||||||
|
furnished to do so, subject to the following conditions: |
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all |
||||||
|
copies or substantial portions of the Software. |
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
||||||
|
SOFTWARE. |
||||||
@ -0,0 +1,43 @@ |
|||||||
|
# node-red-contrib-ui-digital-clock |
||||||
|
|
||||||
|
A digital clock for the Node-RED Dashboard. |
||||||
|
|
||||||
|
 |
||||||
|
|
||||||
|
## Installation |
||||||
|
|
||||||
|
Open Node-RED and select `Manage palette` from the menu to open the Palette Manager. Go to the `Install` tab, search for `node-red-contrib-ui-digital-clock` and click `install`. |
||||||
|
|
||||||
|
Alternatively, you can run the following command in your Node-RED user directory (typically `~/.node-red`): |
||||||
|
|
||||||
|
``` |
||||||
|
npm i node-red-contrib-ui-digital-clock |
||||||
|
``` |
||||||
|
|
||||||
|
## Example |
||||||
|
|
||||||
|
 |
||||||
|
|
||||||
|
``` |
||||||
|
[{"id":"c09db1ba6ac377de","type":"tab","label":"Flow 1","disabled":false,"info":"","env":[]},{"id":"37ec70937bed02a4","type":"ui_digital_clock","z":"c09db1ba6ac377de","name":"","group":"5c79b643fcd37cad","order":0,"width":"6","height":"2","x":710,"y":340,"wires":[]},{"id":"105daf8d29a83f81","type":"inject","z":"c09db1ba6ac377de","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"1","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":490,"y":340,"wires":[["37ec70937bed02a4"]]},{"id":"5c79b643fcd37cad","type":"ui_group","name":"Standard","tab":"f4a9e911ba044f38","order":1,"disp":true,"width":"6","collapse":false,"className":""},{"id":"f4a9e911ba044f38","type":"ui_tab","name":"Home","icon":"dashboard","disabled":false,"hidden":false}] |
||||||
|
``` |
||||||
|
|
||||||
|
## License |
||||||
|
|
||||||
|
[MIT](LICENSE) |
||||||
|
|
||||||
|
## Projects |
||||||
|
|
||||||
|
Also take a look at my other dashboard projects: |
||||||
|
|
||||||
|
### [node-red-contrib-ui-clock](https://github.com/patrickknabe/node-red-contrib-ui-clock) |
||||||
|
|
||||||
|
A simple analog clock for the Node-RED Dashboard. |
||||||
|
|
||||||
|
 |
||||||
|
|
||||||
|
### [node-red-contrib-ui-digital-display](https://github.com/patrickknabe/node-red-contrib-ui-digital-display) |
||||||
|
|
||||||
|
A digital display, with adjustable number of digits and decimals, for the Node-RED Dashboard. |
||||||
|
|
||||||
|
 |
||||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,123 @@ |
|||||||
|
module.exports = RED => { |
||||||
|
let ui; |
||||||
|
|
||||||
|
RED.nodes.registerType( 'ui_microwave_clock', function( config ) { |
||||||
|
RED.nodes.createNode( this, config ); |
||||||
|
|
||||||
|
if( !ui ) { |
||||||
|
try { |
||||||
|
ui = RED.require( 'node-red-dashboard' )( RED ); |
||||||
|
} catch {} |
||||||
|
} |
||||||
|
|
||||||
|
if( ui && RED.nodes.getNode( config.group ) ) { |
||||||
|
this.on( 'close', ui.addWidget( { |
||||||
|
node: this, |
||||||
|
format: ` |
||||||
|
<svg version="1.1" viewBox="0 0 3508.2 1000" xmlns="http://www.w3.org/2000/svg"> |
||||||
|
<path style="display: {{ segs[ 2 ][ 0 ] ? 'block' : 'none' }}" d="m 1336.646,8e-5 h 332.31 l 33.735,36.176 -84.078,78.404 h -247.65 l -73.113,-78.404 z" /> |
||||||
|
<path style="display: {{ segs[ 2 ][ 1 ] ? 'block' : 'none' }}" d="m 1259.171,72.249 75.498,80.961 -16.917,241.93 -74.915,69.86 -38.525,-41.313 22.462,-321.23 z" /> |
||||||
|
<path style="display: {{ segs[ 2 ][ 2 ] ? 'block' : 'none' }}" d="m 1627.016,389.16 15.725,-224.88 95.964,-89.488 19.36,20.761 -23.784,340.13 -34.168,31.863 z" /> |
||||||
|
<path style="display: {{ segs[ 2 ][ 3 ] ? 'block' : 'none' }}" d="m 1343.156,443.65 h 262.35 l 55.921,59.968 -58.717,54.612 h -272.94 l -50.926,-54.612 z" /> |
||||||
|
<path style="display: {{ segs[ 2 ][ 4 ] ? 'block' : 'none' }}" d="m 1240.106,539.75 62.822,67.368 -17.266,246.91 -76.188,71.046 -37.419,-40.127 21.076,-301.4 z" /> |
||||||
|
<path style="display: {{ segs[ 2 ][ 5 ] ? 'block' : 'none' }}" d="m 1697.696,542.51 27.085,29.045 -23.14,330.91 -27.204,25.368 -79.153,-84.881 15.331,-219.24 z" /> |
||||||
|
<path style="display: {{ segs[ 2 ][ 6 ] ? 'block' : 'none' }}" d="m 1245.741,963.97 83.764,-78.112 h 233.35 l 72.84,78.112 -38.641,36.033 h -317.71 z" /> |
||||||
|
<path style="display: {{ segs[ 3 ][ 0 ] ? 'block' : 'none' }}" d="m 1922.656,7.6241e-5 h 332.31 L 2288.7,36.176076 2204.622,114.58008 h -247.65 l -73.113,-78.404004 z" /> |
||||||
|
<path style="display: {{ segs[ 3 ][ 1 ] ? 'block' : 'none' }}" d="m 1845.186,72.249 75.498,80.961 -16.917,241.93 -74.915,69.86 -38.525,-41.313 22.462,-321.23 z" /> |
||||||
|
<path style="display: {{ segs[ 3 ][ 2 ] ? 'block' : 'none' }}" d="m 2213.056,389.16 15.725,-224.88 95.964,-89.488 19.36,20.761 -23.784,340.13 -34.168,31.863 z" /> |
||||||
|
<path style="display: {{ segs[ 3 ][ 3 ] ? 'block' : 'none' }}" d="m 1929.166,443.65 h 262.35 l 55.921,59.968 -58.717,54.612 h -272.94 l -50.926,-54.612 z" /> |
||||||
|
<path style="display: {{ segs[ 3 ][ 4 ] ? 'block' : 'none' }}" d="m 1826.116,539.75 62.822,67.368 -17.266,246.91 -76.188,71.046 -37.419,-40.127 21.076,-301.4 z" /> |
||||||
|
<path style="display: {{ segs[ 3 ][ 5 ] ? 'block' : 'none' }}" d="m 2283.756,542.51 27.085,29.045 -23.14,330.91 -27.204,25.368 -79.153,-84.881 15.331,-219.24 z" /> |
||||||
|
<path style="display: {{ segs[ 3 ][ 6 ] ? 'block' : 'none' }}" d="m 1831.756,963.97 83.764,-78.112 h 233.35 l 72.84,78.112 -38.641,36.033 h -317.71 z" /> |
||||||
|
<path style="display: {{ segs[ 0 ][ 0 ] ? 'block' : 'none' }}" d="M 164.591,9.9999998e-5 H 496.90099 L 530.63599,36.1761 l -84.078,78.404 h -247.65 L 125.795,36.1761 Z" /> |
||||||
|
<path style="display: {{ segs[ 0 ][ 1 ] ? 'block' : 'none' }}" d="m 87.116,74.24902 75.498,80.961 L 145.697,397.14 70.782,467 32.257,425.687 54.719,104.45702 Z" /> |
||||||
|
<path style="display: {{ segs[ 0 ][ 2 ] ? 'block' : 'none' }}" d="m 454.96099,389.16 15.725,-224.87998 95.964,-89.488 19.36,20.761 -23.784,340.12998 -34.168,31.863 z" /> |
||||||
|
<path style="display: {{ segs[ 0 ][ 3 ] ? 'block' : 'none' }}" d="m 171.101,443.65 h 262.34999 l 55.921,59.968 -58.717,54.612 H 157.715 l -50.926,-54.612 z" /> |
||||||
|
<path style="display: {{ segs[ 0 ][ 4 ] ? 'block' : 'none' }}" d="m 68.051,539.75 62.822,67.368 -17.266,246.91 L 37.419,925.074 0,884.947 21.076,583.547 Z" /> |
||||||
|
<path style="display: {{ segs[ 0 ][ 5 ] ? 'block' : 'none' }}" d="m 525.64099,542.51 27.085,29.045 -23.14,330.91 -27.204,25.368 -79.153,-84.881 15.331,-219.24 z" /> |
||||||
|
<path style="display: {{ segs[ 0 ][ 6 ] ? 'block' : 'none' }}" d="m 73.686,963.97 83.764,-78.112 h 233.34999 l 72.84,78.112 -38.641,36.033 H 107.289 Z" /> |
||||||
|
<path style="display: {{ segs[ 1 ][ 0 ] ? 'block' : 'none' }}" d="M 750.60099,9.9999998e-5 H 1082.911 L 1116.645,36.1761 l -84.078,78.404 H 784.91699 l -73.113,-78.404 z" /> |
||||||
|
<path style="display: {{ segs[ 1 ][ 1 ] ? 'block' : 'none' }}" d="m 673.13099,72.24902 75.498,80.961 -16.917,241.92998 -74.915,69.86 -38.525,-41.313 22.462,-321.22998 z" /> |
||||||
|
<path style="display: {{ segs[ 1 ][ 2 ] ? 'block' : 'none' }}" d="m 1041.001,389.16 15.725,-224.87998 95.964,-89.488 19.36,20.761 -23.784,340.12998 -34.168,31.863 z" /> |
||||||
|
<path style="display: {{ segs[ 1 ][ 3 ] ? 'block' : 'none' }}" d="M 757.11099,443.65 H 1019.461 l 55.921,59.968 -58.717,54.612 H 743.72499 l -50.926,-54.612 z" /> |
||||||
|
<path style="display: {{ segs[ 1 ][ 4 ] ? 'block' : 'none' }}" d="m 654.06099,539.75 62.822,67.368 -17.266,246.91 -76.188,71.046 -37.419,-40.127 21.076,-301.4 z" /> |
||||||
|
<path style="display: {{ segs[ 1 ][ 5 ] ? 'block' : 'none' }}" d="m 1111.701,542.51 27.085,29.045 -23.14,330.91 -27.204,25.368 -79.153,-84.881 15.331,-219.24 z" /> |
||||||
|
<path style="display: {{ segs[ 1 ][ 6 ] ? 'block' : 'none' }}" d="m 659.70099,963.97 83.764,-78.112 h 233.35 l 72.84001,78.112 -38.641,36.033 H 693.30399 Z" /> |
||||||
|
<path style="display: {{ segs[ 8 ][ 0 ] ? 'block' : 'none' }}" d="m 2391.656,558.11 h 51.994 l 26.941,58.193 -34.923,55.952 h -51.994 l -25.991,-56.215 z" /> |
||||||
|
<path style="display: {{ segs[ 8 ][ 0 ] ? 'block' : 'none' }}" d="m 2407.656,329.36 h 51.994 l 26.941,58.193 -34.923,55.952 h -51.994 l -25.99,-56.215 z" /> |
||||||
|
<path style="display: {{ segs[ 4 ][ 0 ] ? 'block' : 'none' }}" d="m 2666.356,0 h 332.31 l 33.735,36.176 -84.078,78.404 h -247.65 L 2627.56,36.176 Z" /> |
||||||
|
<path style="display: {{ segs[ 4 ][ 1 ] ? 'block' : 'none' }}" d="m 2588.856,72.249 75.498,80.961 -16.917,241.93 -74.916,69.86 -38.525,-41.313 22.462,-321.23 z" /> |
||||||
|
<path style="display: {{ segs[ 4 ][ 2 ] ? 'block' : 'none' }}" d="m 2956.656,389.16 15.725,-224.88 95.964,-89.488 19.36,20.761 -23.784,340.13 -34.168,31.863 z" /> |
||||||
|
<path style="display: {{ segs[ 4 ][ 3 ] ? 'block' : 'none' }}" d="m 2672.856,443.65 h 262.35 l 55.921,59.968 -58.717,54.612 h -272.94 l -50.926,-54.612 z" /> |
||||||
|
<path style="display: {{ segs[ 4 ][ 4 ] ? 'block' : 'none' }}" d="m 2569.756,539.75 62.822,67.368 -17.266,246.91 -76.188,71.046 -37.419,-40.127 21.076,-301.4 z" /> |
||||||
|
<path style="display: {{ segs[ 4 ][ 5 ] ? 'block' : 'none' }}" d="m 3027.356,542.51 27.085,29.045 -23.14,330.91 -27.204,25.368 -79.153,-84.881 15.331,-219.24 z" /> |
||||||
|
<path style="display: {{ segs[ 4 ][ 6 ] ? 'block' : 'none' }}" d="m 2575.456,963.97 83.764,-78.112 h 233.35 l 72.84,78.112 -38.641,36.033 h -317.71 z" /> |
||||||
|
<path style="display: {{ segs[ 5 ][ 0 ] ? 'block' : 'none' }}" d="m 3252.356,0 h 332.31 l 33.735,36.176 -84.078,78.404 h -247.65 L 3213.56,36.176 Z" /> |
||||||
|
<path style="display: {{ segs[ 5 ][ 1 ] ? 'block' : 'none' }}" d="m 3174.856,72.249 75.498,80.961 -16.917,241.93 -74.916,69.86 -38.525,-41.313 22.462,-321.23 z" /> |
||||||
|
<path style="display: {{ segs[ 5 ][ 2 ] ? 'block' : 'none' }}" d="m 3542.756,389.16 15.725,-224.88 95.964,-89.488 19.36,20.761 -23.784,340.13 -34.168,31.863 z" /> |
||||||
|
<path style="display: {{ segs[ 5 ][ 3 ] ? 'block' : 'none' }}" d="m 3258.856,443.65 h 262.35 l 55.921,59.968 -58.717,54.612 h -272.94 l -50.926,-54.612 z" /> |
||||||
|
<path style="display: {{ segs[ 5 ][ 4 ] ? 'block' : 'none' }}" d="m 3155.756,539.75 62.822,67.368 -17.266,246.91 -76.188,71.046 -37.419,-40.127 21.076,-301.4 z" /> |
||||||
|
<path style="display: {{ segs[ 5 ][ 5 ] ? 'block' : 'none' }}" d="m 3613.356,542.51 27.085,29.045 -23.14,330.91 -27.204,25.368 -79.153,-84.881 15.331,-219.24 z" /> |
||||||
|
<path style="display: {{ segs[ 5 ][ 6 ] ? 'block' : 'none' }}" d="m 3161.456,963.97 83.764,-78.112 h 233.35 l 72.84,78.112 -38.641,36.033 h -317.71 z" /> |
||||||
|
<path style="display: {{ segs[ 9 ][ 0 ] ? 'block' : 'none' }}" d="m 3706.156,668.64 h 38.996 l 20.206,43.645 -26.192,41.964 h -38.995 l -19.493,-42.161 z" /> |
||||||
|
<path style="display: {{ segs[ 9 ][ 0 ] ? 'block' : 'none' }}" d="m 3718.156,497.08 h 38.996 l 20.206,43.645 -26.192,41.964 h -38.996 l -19.493,-42.161 z" /> |
||||||
|
<path style="display: {{ segs[ 6 ][ 0 ] ? 'block' : 'none' }}" d="m 3924.656,250 h 249.23 l 25.301,27.132 -63.059,58.803 h -185.74 l -54.835,-58.803 z" /> |
||||||
|
<path style="display: {{ segs[ 6 ][ 1 ] ? 'block' : 'none' }}" d="m 3866.556,304.19 56.623,60.721 -12.688,181.45 -56.187,52.395 -28.894,-30.985 16.847,-240.92 z" /> |
||||||
|
<path style="display: {{ segs[ 6 ][ 2 ] ? 'block' : 'none' }}" d="m 4142.456,541.87 11.794,-168.66 71.973,-67.116 14.52,15.571 -17.838,255.1 -25.626,23.897 z" /> |
||||||
|
<path style="display: {{ segs[ 6 ][ 3 ] ? 'block' : 'none' }}" d="m 3929.556,582.74 h 196.76 l 41.941,44.976 -44.038,40.959 h -204.7 l -38.195,-40.959 z" /> |
||||||
|
<path style="display: {{ segs[ 6 ][ 4 ] ? 'block' : 'none' }}" d="m 3852.256,654.81 47.117,50.526 -12.949,185.18 -57.141,53.285 -28.064,-30.095 15.807,-226.05 z" /> |
||||||
|
<path style="display: {{ segs[ 6 ][ 5 ] ? 'block' : 'none' }}" d="m 4195.456,656.88 20.314,21.784 -17.355,248.19 -20.403,19.026 -59.365,-63.661 11.498,-164.43 z" /> |
||||||
|
<path style="display: {{ segs[ 6 ][ 6 ] ? 'block' : 'none' }}" d="m 3856.556,972.97 62.823,-58.584 h 175.01 l 54.63,58.584 -28.981,27.025 h -238.28 z" /> |
||||||
|
<path style="display: {{ segs[ 7 ][ 0 ] ? 'block' : 'none' }}" d="m 4364.156,250 h 249.23 l 25.301,27.132 -63.059,58.803 h -185.74 l -54.835,-58.803 z" /> |
||||||
|
<path style="display: {{ segs[ 7 ][ 1 ] ? 'block' : 'none' }}" d="m 4306.056,304.19 56.623,60.721 -12.688,181.45 -56.187,52.395 -28.894,-30.985 16.847,-240.92 z" /> |
||||||
|
<path style="display: {{ segs[ 7 ][ 2 ] ? 'block' : 'none' }}" d="m 4581.956,541.87 11.794,-168.66 71.973,-67.116 14.52,15.571 -17.838,255.1 -25.626,23.897 z" /> |
||||||
|
<path style="display: {{ segs[ 7 ][ 3 ] ? 'block' : 'none' }}" d="m 4369.056,582.74 h 196.76 l 41.941,44.976 -44.038,40.959 h -204.7 l -38.195,-40.959 z" /> |
||||||
|
<path style="display: {{ segs[ 7 ][ 4 ] ? 'block' : 'none' }}" d="m 4291.756,654.81 47.117,50.526 -12.949,185.18 -57.141,53.285 -28.064,-30.095 15.807,-226.05 z" /> |
||||||
|
<path style="display: {{ segs[ 7 ][ 5 ] ? 'block' : 'none' }}" d="m 4634.956,656.88 20.314,21.784 -17.355,248.19 -20.403,19.026 -59.365,-63.661 11.498,-164.43 z" /> |
||||||
|
<path style="display: {{ segs[ 7 ][ 6 ] ? 'block' : 'none' }}" d="m 4296.056,972.97 62.823,-58.584 h 175.01 l 54.63,58.584 -28.981,27.025 h -238.28 z" > |
||||||
|
</svg> |
||||||
|
`,
|
||||||
|
width: +config.width || +RED.nodes.getNode( config.group ).config.width, |
||||||
|
height: +config.height || 1, |
||||||
|
group: config.group, |
||||||
|
order: config.order, |
||||||
|
beforeEmit: msg => ( { msg } ), |
||||||
|
initController: $scope => $scope.$watch( 'msg.payload', payload => { |
||||||
|
const total_seconds = +payload || 0; |
||||||
|
let remaining_seconds = total_seconds; |
||||||
|
|
||||||
|
let hours = Math.floor(remaining_seconds / 3600.0); |
||||||
|
remaining_seconds -= hours * 3600.0; |
||||||
|
let minutes = Math.floor(remaining_seconds / 60.0); |
||||||
|
remaining_seconds -= minutes * 60.0; |
||||||
|
let seconds = remaining_seconds; |
||||||
|
|
||||||
|
let s = hours.toString().padStart( 4, ' ' ); |
||||||
|
s += minutes.toString().padStart( 2, '0' ); |
||||||
|
s += seconds.toString().padStart( 2, '0' ); |
||||||
|
s += !( seconds % 2 ) ? ':' : ' '; |
||||||
|
s += !( seconds % 2 ) ? ':' : ' '; |
||||||
|
|
||||||
|
$scope.segs = []; |
||||||
|
|
||||||
|
for( const c of s ) { |
||||||
|
$scope.segs.push( { |
||||||
|
'0': [ true, true, true, false, true, true, true ], |
||||||
|
'1': [ false, false, true, false, false, true, false ], |
||||||
|
'2': [ true, false, true, true, true, false, true ], |
||||||
|
'3': [ true, false, true, true, false, true, true ], |
||||||
|
'4': [ false, true, true, true, false, true, false ], |
||||||
|
'5': [ true, true, false, true, false, true, true ], |
||||||
|
'6': [ true, true, false, true, true, true, true ], |
||||||
|
'7': [ true, false, true, false, false, true, false ], |
||||||
|
'8': [ true, true, true, true, true, true, true ], |
||||||
|
'9': [ true, true, true, true, false, true, true ], |
||||||
|
' ': [ false, false, false, false, false, false, false ], |
||||||
|
':': [ true ] |
||||||
|
}[ c ] ); |
||||||
|
} |
||||||
|
} ) |
||||||
|
} ) ); |
||||||
|
} |
||||||
|
} ); |
||||||
|
}; |
||||||
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
@ -0,0 +1,37 @@ |
|||||||
|
{ |
||||||
|
"name": "node-red-contrib-ui-microwave-clock", |
||||||
|
"description": "A microwave-style digital timer for the Node-RED Dashboard.", |
||||||
|
"keywords": [ |
||||||
|
"clock", |
||||||
|
"dashboard", |
||||||
|
"node-red", |
||||||
|
"time", |
||||||
|
"ui" |
||||||
|
], |
||||||
|
"version": "1.0.1", |
||||||
|
"license": "MIT", |
||||||
|
"author": { |
||||||
|
"name": "Patrick Knabe", |
||||||
|
"email": "patrickknabe@gmail.com" |
||||||
|
}, |
||||||
|
"repository": { |
||||||
|
"type": "git", |
||||||
|
"url": "git+https://github.com/patrickknabe/node-red-contrib-ui-digital-clock.git" |
||||||
|
}, |
||||||
|
"bugs": { |
||||||
|
"url": "https://github.com/patrickknabe/node-red-contrib-ui-digital-clock/issues" |
||||||
|
}, |
||||||
|
"homepage": "https://github.com/patrickknabe/node-red-contrib-ui-digital-clock#readme", |
||||||
|
"peerDependencies": { |
||||||
|
"node-red-dashboard": ">=2.23.2" |
||||||
|
}, |
||||||
|
"node-red": { |
||||||
|
"version": ">=2.0.0", |
||||||
|
"nodes": { |
||||||
|
"ui_digital_clock": "clock.js" |
||||||
|
} |
||||||
|
}, |
||||||
|
"engines": { |
||||||
|
"node": ">=12.0.0" |
||||||
|
} |
||||||
|
} |
||||||
|
After Width: | Height: | Size: 2.4 KiB |
Loading…
Reference in new issue