From 95a2f5d299332272e045c0138bf873f2e3cd88de Mon Sep 17 00:00:00 2001 From: vzakharchenko Date: Tue, 9 Mar 2021 19:17:12 +0200 Subject: [PATCH 1/2] convert ES6 to ES5 to support TV up to 2017 --- CameraDevice/index.html | 28 +++--- CameraDevice/main.js | 189 ++++++++++++++++++++------------------- CameraDevice/server.html | 24 ++--- 3 files changed, 123 insertions(+), 118 deletions(-) diff --git a/CameraDevice/index.html b/CameraDevice/index.html index 039eba0..993824a 100644 --- a/CameraDevice/index.html +++ b/CameraDevice/index.html @@ -19,31 +19,31 @@ diff --git a/CameraDevice/main.js b/CameraDevice/main.js index c2983aa..a223c8e 100644 --- a/CameraDevice/main.js +++ b/CameraDevice/main.js @@ -1,21 +1,23 @@ +'use strict'; + /* eslint no-sequences: 0 */ // --> OFF /* eslint no-unused-expressions: 0 */ // --> OFF /* eslint no-restricted-globals: 0 */ // --> OFF /* eslint no-unused-vars: 0 */ // --> OFF /* eslint func-names: 0 */ // --> OFF -const serverInfo = { +var serverInfo = { ip: localStorage.getItem('SERVER.IP') || '0.0.0.0', // <-- Server IP port: localStorage.getItem('SERVER.PORT') || '3004', - inited: localStorage.getItem('SERVER.INITED') || false, + inited: localStorage.getItem('SERVER.INITED') || false }; -let queue = []; +var queue = []; -let changeChannel = false; +var changeChannel = false; -const next = () => { - const xhr = new XMLHttpRequest(); - const url = `http://${serverInfo.ip}:${serverInfo.port}/next?width=${window.screen.width}&height=${window.screen.height}`; +var next = function next() { + var xhr = new XMLHttpRequest(); + var url = 'http://' + serverInfo.ip + ':' + serverInfo.port + '/next?width=' + window.screen.width + '&height=' + window.screen.height; xhr.withCredentials = true; xhr.open('GET', url, true); xhr.onreadystatechange = function () { @@ -33,9 +35,9 @@ const next = () => { }; xhr.send(null); }; -const prev = () => { - const xhr = new XMLHttpRequest(); - const url = `http://${serverInfo.ip}:${serverInfo.port}/prev?width=${window.screen.width}&height=${window.screen.height}`; +var prev = function prev() { + var xhr = new XMLHttpRequest(); + var url = 'http://' + serverInfo.ip + ':' + serverInfo.port + '/prev?width=' + window.screen.width + '&height=' + window.screen.height; xhr.open('GET', url, true); xhr.onreadystatechange = function () { if (xhr.readyState === xhr.DONE) { @@ -53,68 +55,72 @@ const prev = () => { xhr.send(null); }; -const getInfo = (callback, error) => { +var getInfo = function getInfo(callback, error) { if (!serverInfo.inited) { window.location.href = '/server.html'; } else { - const xhr = new XMLHttpRequest(); - const url = `http://${serverInfo.ip}:${serverInfo.port}/info?width=${window.screen.width}&height=${window.screen.height}`; - xhr.open('GET', url, true); - xhr.withCredentials = true; - xhr.onreadystatechange = function () { - if (xhr.readyState === xhr.DONE) { - if (xhr.status === 200) { - callback(JSON.parse(xhr.responseText)); - } else { - window.location.href = '/server.html'; + (function () { + var xhr = new XMLHttpRequest(); + var url = 'http://' + serverInfo.ip + ':' + serverInfo.port + '/info?width=' + window.screen.width + '&height=' + window.screen.height; + xhr.open('GET', url, true); + xhr.withCredentials = true; + xhr.onreadystatechange = function () { + if (xhr.readyState === xhr.DONE) { + if (xhr.status === 200) { + callback(JSON.parse(xhr.responseText)); + } else { + window.location.href = '/server.html'; + } } - } - }; - xhr.onerror = function (e) { - window.location.href = '/server.html'; - console.error(xhr.statusText); - }; - xhr.send(); + }; + xhr.onerror = function (e) { + window.location.href = '/server.html'; + console.error(xhr.statusText); + }; + xhr.send(); + })(); } }; -const reload = () => { +var reload = function reload() { if (serverInfo.inited) { - const xhr = new XMLHttpRequest(); - const url = `http://${serverInfo.ip}:${serverInfo.port}/reload?width=${window.screen.width}&height=${window.screen.height}`; - xhr.withCredentials = true; - xhr.open('GET', url, true); - xhr.onreadystatechange = function () { - if (xhr.readyState === xhr.DONE) { - if (xhr.status === 200) { - console.log(xhr.responseText); - location.reload(); - } else { - console.error('There was a problem with the request.'); + (function () { + var xhr = new XMLHttpRequest(); + var url = 'http://' + serverInfo.ip + ':' + serverInfo.port + '/reload?width=' + window.screen.width + '&height=' + window.screen.height; + xhr.withCredentials = true; + xhr.open('GET', url, true); + xhr.onreadystatechange = function () { + if (xhr.readyState === xhr.DONE) { + if (xhr.status === 200) { + console.log(xhr.responseText); + location.reload(); + } else { + console.error('There was a problem with the request.'); + } } - } - }; - xhr.onerror = function (e) { - console.error(xhr.statusText); - }; - xhr.send(); + }; + xhr.onerror = function (e) { + console.error(xhr.statusText); + }; + xhr.send(); + })(); } else { getInfo(); } }; function getChannel(ch) { - const value = queue.shift(); + var value = queue.shift(); if (value) { - ch.value = `${ch.value}${value}`; // eslint-disable-line no-param-reassign + ch.value = '' + ch.value + value; // eslint-disable-line no-param-reassign getChannel(ch); } return ch; } -const sel0 = (c) => { - const xhr = new XMLHttpRequest(); - const url = `http://${serverInfo.ip}:${serverInfo.port}/sel?channel=${c}&width=${window.screen.width}&height=${window.screen.height}`; +var sel0 = function sel0(c) { + var xhr = new XMLHttpRequest(); + var url = 'http://' + serverInfo.ip + ':' + serverInfo.port + '/sel?channel=' + c + '&width=' + window.screen.width + '&height=' + window.screen.height; xhr.open('GET', url, true); xhr.onreadystatechange = function () { if (xhr.readyState === xhr.DONE) { @@ -132,13 +138,13 @@ const sel0 = (c) => { xhr.send(null); }; -const sel = (c) => { +var sel = function sel(c) { queue.push(c); if (!changeChannel) { changeChannel = true; - window.setTimeout(() => { - const ch = { value: '' }; - const newch = getChannel(ch); + window.setTimeout(function () { + var ch = { value: '' }; + var newch = getChannel(ch); changeChannel = false; queue = []; sel0(newch.value); @@ -150,27 +156,26 @@ const sel = (c) => { // channelList() // Initialize function -const init = function () { +var init = function init() { console.log('init() called'); - window.tizen.tvinputdevice.registerKeyBatch([ - 'ChannelUp', - 'ChannelDown', - '1', - '2', - '3', - '4', - '5', - '6', - '7', - '8', - '9', - '0']); - document.addEventListener('visibilitychange', () => { + tizen.tvinputdevice.registerKey('ChannelUp'); + tizen.tvinputdevice.registerKey('ChannelDown'); + tizen.tvinputdevice.registerKey('1'); + tizen.tvinputdevice.registerKey('2'); + tizen.tvinputdevice.registerKey('3'); + tizen.tvinputdevice.registerKey('4'); + tizen.tvinputdevice.registerKey('5'); + tizen.tvinputdevice.registerKey('6'); + tizen.tvinputdevice.registerKey('7'); + tizen.tvinputdevice.registerKey('8'); + tizen.tvinputdevice.registerKey('9'); + tizen.tvinputdevice.registerKey('0'); + document.addEventListener('visibilitychange', function () { reload(); }); // add eventListener for keydown - document.addEventListener('keydown', (e) => { + document.addEventListener('keydown', function (e) { switch (e.keyCode) { case 48: sel(0); @@ -202,19 +207,24 @@ const init = function () { case 57: sel(9); break; - case 37: // LEFT arrow + case 37: + // LEFT arrow prev(); break; - case 38: // UP arrow + case 38: + // UP arrow next(); break; - case 39: // RIGHT arrow + case 39: + // RIGHT arrow next(); break; - case 40: // DOWN arrow + case 40: + // DOWN arrow prev(); break; - case 13: // OK button + case 13: + // OK button reload(); break; case 427: @@ -223,33 +233,28 @@ const init = function () { case 428: prev(); break; - case 10009: // RETURN button + case 10009: + // RETURN button tizen.application.getCurrentApplication().exit(); break; default: - console.log(`Key code : ${e.keyCode}`); + console.log('Key code : ' + e.keyCode); break; } }, true); - const voicecontrol = tizen.voicecontrol; + var voicecontrol = tizen.voicecontrol; if (voicecontrol) { - const client = voicecontrol.getVoiceControlClient(); + var client = voicecontrol.getVoiceControlClient(); if (client) { - const commands = [ - new tizen.VoiceControlCommand('ChannelUp'), - new tizen.VoiceControlCommand('ChannelDown'), - new tizen.VoiceControlCommand('Refresh'), - new tizen.VoiceControlCommand('Select'), - new tizen.VoiceControlCommand('OK'), - - ]; - for (let i = 0; i < 1000; i++) { // eslint-disable-line no-plusplus - commands.push(new tizen.VoiceControlCommand(`${i}`)); + var commands = [new tizen.VoiceControlCommand('ChannelUp'), new tizen.VoiceControlCommand('ChannelDown'), new tizen.VoiceControlCommand('Refresh'), new tizen.VoiceControlCommand('Select'), new tizen.VoiceControlCommand('OK')]; + for (var i = 0; i < 1000; i++) { + // eslint-disable-line no-plusplus + commands.push(new tizen.VoiceControlCommand('' + i)); } try { client.setCommandList(commands, 'FOREGROUND'); - const resultListenerCallback = function (event, list, result) { + var resultListenerCallback = function resultListenerCallback(event, list, result) { if (event === 'SUCCESS') { if (!isNaN(result)) { sel(result); @@ -258,7 +263,7 @@ const init = function () { reload(); } } - console.log(`Result callback - event: ${event}, result: ${result}`); + console.log('Result callback - event: ' + event + ', result: ' + result); }; client.addResultListener(resultListenerCallback); diff --git a/CameraDevice/server.html b/CameraDevice/server.html index 3ac56fc..bc2f4a5 100644 --- a/CameraDevice/server.html +++ b/CameraDevice/server.html @@ -39,7 +39,7 @@ function getInfo(ip, port, errorCallBack) { var xhr = new XMLHttpRequest(); - const url = 'http://' + ip + ':' + port + '/info?width=' + window.screen.width + '&height=' + window.screen.height + const url = 'http://' + ip + ':' + port + '/info?width=' + window.screen.width + '&height=' + window.screen.height; xhr.open("GET", url, true); xhr.onreadystatechange = function () { // ready state event, will be executed once the server send back the data if (xhr.readyState === xhr.DONE) { @@ -47,7 +47,7 @@ localStorage.setItem("SERVER.IP", ip); localStorage.setItem("SERVER.PORT", port); localStorage.setItem("SERVER.INITED", 'true'); - window.location.href = '/index.html' + window.location.href = 'index.html'; } else { console.error(xhr.responseText); errorCallBack(xhr.responseText); @@ -65,7 +65,7 @@ if (currentFocus === focusElements.length - 1) { currentFocus = 0; } else { - currentFocus = currentFocus = 1; + currentFocus = currentFocus + 1; } focusElements[currentFocus].focus(); @@ -83,15 +83,15 @@ function save() { const ip = document.getElementById("address").value; const port = document.getElementById("port").value; - getInfo(ip, port, (text) => { + getInfo(ip, port, function(text) { document.getElementById("errorMessage").innerHTML = 'Server is Unavailable. '+text; nextFocus(); }); } - window.onload = () => { - focusElements = document.getElementsByClassName("focus-ui") + window.onload = function(){ + focusElements = document.getElementsByClassName("focus-ui"); if (focusElements && focusElements[currentFocus]) { focusElements[currentFocus].focus(); } @@ -119,13 +119,13 @@ break; } }, true); - document.getElementById("address").value = localStorage.getItem("SERVER.IP") || '0.0.0.0' - document.getElementById("port").value = localStorage.getItem("SERVER.PORT") || '3004' - getInfo(document.getElementById("address").value, document.getElementById("port").value, (text)=>{ - document.getElementById("errorMessage").innerHTML = 'Server is Unavailable. '+text - }) - } + document.getElementById("address").value = localStorage.getItem("SERVER.IP") || '0.0.0.0'; + document.getElementById("port").value = localStorage.getItem("SERVER.PORT") || '3004'; + getInfo(document.getElementById("address").value, document.getElementById("port").value, + function(text){document.getElementById("errorMessage").innerHTML = 'Server is Unavailable. '+text; }); + + }; // add eventListener for keydown From c6546e5bea12c46ac49f974bf9da4e7e7a5123d8 Mon Sep 17 00:00:00 2001 From: vzakharchenko Date: Tue, 9 Mar 2021 20:09:39 +0200 Subject: [PATCH 2/2] convert ES6 to ES5 to support TV up to 2017 --- .github/workflows/docker.yml | 2 +- CameraDevice/CameraDevice.wgt | Bin 54458 -> 54484 bytes package.json | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 6f12c02..10b25d9 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -34,4 +34,4 @@ jobs: push: true tags: | vassio/rtsp-samsung-tv:latest - vassio/rtsp-samsung-tv:1.1.20 + vassio/rtsp-samsung-tv:1.1.21 diff --git a/CameraDevice/CameraDevice.wgt b/CameraDevice/CameraDevice.wgt index ed485a9713bb12b864401b0a8e48aaf8ef46a480..ecbe4a6820e41a0b455d30c9e7222298b423cb3f 100644 GIT binary patch delta 10376 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 delta 10292 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 SB@E!9#L^{72!n-x=lwrtO3aY} diff --git a/package.json b/package.json index 866b4b8..265e3aa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rtsp-samsung-tv", - "version": "1.1.20", + "version": "1.1.21", "description": "Display RTSP streams from IP Cameras on Samsung smart TV (Tizen TV)", "main": "server.js", "scripts": {