Browse Source

Modified from original ui-digital-clock

master
michele 1 year ago
commit
590a0e7adb
  1. 9
      CHANGELOG.md
  2. 21
      LICENSE
  3. 43
      README.md
  4. 69
      clock.html
  5. 123
      clock.js
  6. BIN
      clock.png
  7. 48
      clock.svg.bak
  8. BIN
      digital-clock.png
  9. BIN
      example.png
  10. 37
      package.json
  11. BIN
      pi.png

9
CHANGELOG.md

@ -0,0 +1,9 @@ @@ -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

21
LICENSE

@ -0,0 +1,21 @@ @@ -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.

43
README.md

@ -0,0 +1,43 @@ @@ -0,0 +1,43 @@
# node-red-contrib-ui-digital-clock
A digital clock for the Node-RED Dashboard.
![](digital-clock.png)
## 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
![](example.png)
```
[{"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.
![](clock.png)
### [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.
![](pi.png)

69
clock.html

File diff suppressed because one or more lines are too long

123
clock.js

@ -0,0 +1,123 @@ @@ -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 ] );
}
} )
} ) );
}
} );
};

BIN
clock.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

48
clock.svg.bak

@ -0,0 +1,48 @@ @@ -0,0 +1,48 @@
<svg version="1.1" viewBox="0 0 3508.2 1000" xmlns="http://www.w3.org/2000/svg">
<path style="display: block" d="m164.59 8e-5h332.31l33.735 36.176-84.078 78.404h-247.65l-73.113-78.404z" />
<path style="display: block" d="m87.115 72.249 75.498 80.961-16.917 241.93-74.915 69.86-38.525-41.313 22.462-321.23z" />
<path style="display: block" d="m454.96 389.16 15.725-224.88 95.964-89.488 19.36 20.761-23.784 340.13-34.168 31.863z" />
<path style="display: block" d="m171.1 443.65h262.35l55.921 59.968-58.717 54.612h-272.94l-50.926-54.612z" />
<path style="display: block" d="m68.05 539.75 62.822 67.368-17.266 246.91-76.188 71.046-37.419-40.127 21.076-301.4z" />
<path style="display: block" d="m525.64 542.51 27.085 29.045-23.14 330.91-27.204 25.368-79.153-84.881 15.331-219.24z" />
<path style="display: block" d="m73.685 963.97 83.764-78.112h233.35l72.84 78.112-38.641 36.033h-317.71z" />
<path style="display: block" d="m750.6 7.6241e-5h332.31l33.734 36.176-84.078 78.404h-247.65l-73.113-78.404z" />
<path style="display: block" d="m673.13 72.249 75.498 80.961-16.917 241.93-74.915 69.86-38.525-41.313 22.462-321.23z" />
<path style="display: block" d="m1041 389.16 15.725-224.88 95.964-89.488 19.36 20.761-23.784 340.13-34.168 31.863z" />
<path style="display: block" d="m757.11 443.65h262.35l55.921 59.968-58.717 54.612h-272.94l-50.926-54.612z" />
<path style="display: block" d="m654.06 539.75 62.822 67.368-17.266 246.91-76.188 71.046-37.419-40.127 21.076-301.4z" />
<path style="display: block" d="m1111.7 542.51 27.085 29.045-23.14 330.91-27.204 25.368-79.153-84.881 15.331-219.24z" />
<path style="display: block" d="m659.7 963.97 83.764-78.112h233.35l72.84 78.112-38.641 36.033h-317.71z" />
<path style="display: block" d="m1219.6 558.11h51.994l26.941 58.193-34.923 55.952h-51.994l-25.991-56.215z" />
<path style="display: block" d="m1235.6 329.36h51.994l26.941 58.193-34.923 55.952h-51.994l-25.99-56.215z" />
<path style="display: block" d="m1494.3 0h332.31l33.735 36.176-84.078 78.404h-247.65l-73.113-78.404z" />
<path style="display: block" d="m1416.8 72.249 75.498 80.961-16.917 241.93-74.916 69.86-38.525-41.313 22.462-321.23z" />
<path style="display: block" d="m1784.6 389.16 15.725-224.88 95.964-89.488 19.36 20.761-23.784 340.13-34.168 31.863z" />
<path style="display: block" d="m1500.8 443.65h262.35l55.921 59.968-58.717 54.612h-272.94l-50.926-54.612z" />
<path style="display: block" d="m1397.7 539.75 62.822 67.368-17.266 246.91-76.188 71.046-37.419-40.127 21.076-301.4z" />
<path style="display: block" d="m1855.3 542.51 27.085 29.045-23.14 330.91-27.204 25.368-79.153-84.881 15.331-219.24z" />
<path style="display: block" d="m1403.4 963.97 83.764-78.112h233.35l72.84 78.112-38.641 36.033h-317.71z" />
<path style="display: block" d="m2080.3 0h332.31l33.735 36.176-84.078 78.404h-247.65l-73.113-78.404z" />
<path style="display: block" d="m2002.8 72.249 75.498 80.961-16.917 241.93-74.916 69.86-38.525-41.313 22.462-321.23z" />
<path style="display: block" d="m2370.7 389.16 15.725-224.88 95.964-89.488 19.36 20.761-23.784 340.13-34.168 31.863z" />
<path style="display: block" d="m2086.8 443.65h262.35l55.921 59.968-58.717 54.612h-272.94l-50.926-54.612z" />
<path style="display: block" d="m1983.7 539.75 62.822 67.368-17.266 246.91-76.188 71.046-37.419-40.127 21.076-301.4z" />
<path style="display: block" d="m2441.3 542.51 27.085 29.045-23.14 330.91-27.204 25.368-79.153-84.881 15.331-219.24z" />
<path style="display: block" d="m1989.4 963.97 83.764-78.112h233.35l72.84 78.112-38.641 36.033h-317.71z" />
<path style="display: block" d="m2534.1 668.64h38.996l20.206 43.645-26.192 41.964h-38.995l-19.493-42.161z" />
<path style="display: block" d="m2546.1 497.08h38.996l20.206 43.645-26.192 41.964h-38.996l-19.493-42.161z" />
<path style="display: block" d="m2752.6 250h249.23l25.301 27.132-63.059 58.803h-185.74l-54.835-58.803z" />
<path style="display: block" d="m2694.5 304.19 56.623 60.721-12.688 181.45-56.187 52.395-28.894-30.985 16.847-240.92z" />
<path style="display: block" d="m2970.4 541.87 11.794-168.66 71.973-67.116 14.52 15.571-17.838 255.1-25.626 23.897z" />
<path style="display: block" d="m2757.5 582.74h196.76l41.941 44.976-44.038 40.959h-204.7l-38.195-40.959z" />
<path style="display: block" d="m2680.2 654.81 47.117 50.526-12.949 185.18-57.141 53.285-28.064-30.095 15.807-226.05z" />
<path style="display: block" d="m3023.4 656.88 20.314 21.784-17.355 248.19-20.403 19.026-59.365-63.661 11.498-164.43z" />
<path style="display: block" d="m2684.5 972.97 62.823-58.584h175.01l54.63 58.584-28.981 27.025h-238.28z" />
<path style="display: block" d="m3192.1 250h249.23l25.301 27.132-63.059 58.803h-185.74l-54.835-58.803z" />
<path style="display: block" d="m3134 304.19 56.623 60.721-12.688 181.45-56.187 52.395-28.894-30.985 16.847-240.92z" />
<path style="display: block" d="m3409.9 541.87 11.794-168.66 71.973-67.116 14.52 15.571-17.838 255.1-25.626 23.897z" />
<path style="display: block" d="m3197 582.74h196.76l41.941 44.976-44.038 40.959h-204.7l-38.195-40.959z" />
<path style="display: block" d="m3119.7 654.81 47.117 50.526-12.949 185.18-57.141 53.285-28.064-30.095 15.807-226.05z" />
<path style="display: block" d="m3462.9 656.88 20.314 21.784-17.355 248.19-20.403 19.026-59.365-63.661 11.498-164.43z" />
<path style="display: block" d="m3124 972.97 62.823-58.584h175.01l54.63 58.584-28.981 27.025h-238.28z" />
</svg>

After

Width:  |  Height:  |  Size: 5.4 KiB

BIN
digital-clock.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

BIN
example.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

37
package.json

@ -0,0 +1,37 @@ @@ -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"
}
}

BIN
pi.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Loading…
Cancel
Save