You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

116 lines
11 KiB

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 4094 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[ 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 ] );
}
} )
} ) );
}
} );
};