UNPKG

iobroker.chromecast

Version:
173 lines (160 loc) 8.22 kB
<html> <head> <!-- these 4 files always have to be included --> <link rel="stylesheet" type="text/css" href="../../lib/css/themes/jquery-ui/redmond/jquery-ui.min.css"/> <script type="text/javascript" src="../../lib/js/jquery-1.11.1.min.js"></script> <script type="text/javascript" src="../../socket.io/socket.io.js"></script> <script type="text/javascript" src="../../lib/js/jquery-ui-1.10.3.full.min.js"></script> <!-- optional: use jqGrid <link rel="stylesheet" type="text/css" href="../../lib/css/jqGrid/ui.jqgrid-4.5.4.css"/> <script type="text/javascript" src="../../lib/js/jqGrid/jquery.jqGrid-4.5.4.min.js"></script> <script type="text/javascript" src="../../lib/js/jqGrid/i18n/grid.locale-all.js"></script> --> <!-- optional: use multiselect <link rel="stylesheet" type="text/css" href="../../lib/css/jquery.multiselect-1.13.css"/> <script type="text/javascript" src="../../lib/js/jquery.multiselect-1.13.min.js"></script> --> <!-- these two file always have to be included --> <link rel="stylesheet" type="text/css" href="../../css/adapter.css"/> <script type="text/javascript" src="../../js/translate.js"></script> <script type="text/javascript" src="../../js/adapter-settings.js"></script> <script type="text/javascript" src="words.js"></script> <!-- you have to define 2 functions in the global scope: --> <script type="text/javascript"> // the function loadSettings has to exist ... function load(settings, onChange) { for (var key in settings) { if (!settings.hasOwnProperty(key)) continue; var $value = $('#' + key + '.value'); if ($value.attr('type') === 'checkbox') { $value.prop('checked', settings[key]).change(function () { onChange(); }); } else { $value.val(settings[key]).change(function () { var key = $(this).attr('id'); if (key === 'web') checkWeb('#web'); onChange(); }).keyup(function () { $(this).trigger('change'); }); } } // Signal to admin, that no changes yet onChange(false); fillWebServices('#web', settings.web, settings.type, settings.webServer); if (settings.webServer === '') { onChange(); //Selecting default } } //Copied from sayit adapter (UNCHANGED) function checkWeb(elem, current) { var web = $('#web').val(); for (var i = 0; i < webServers.length; i++) { if (webServers[i].id === 'system.adapter.' + web) { if (webServers[i].value.native.auth) { showMessage(_('Cannot use web server with authentication'), null, 'info'); } if (webServers[i].value.native.bind === 'localhost' || webServers[i].value.native.bind === '127.0.0.1' || webServers[i].value.native.bind === '::1') { showMessage(_('Cannot use web server only on localhost'), null, 'info'); } if (webServers[i].value.native.bind === '0.0.0.0') { $('#tr_webServer').show(); $('#webServer').html(''); // read all ipv4 addresses of host socket.emit('getObject', 'system.host.' + webServers[i].value.common.host, function (err, obj) { if (!err && obj && obj.native) { for (var iface in obj.native.hardware.networkInterfaces) { if (!obj.native.hardware.networkInterfaces.hasOwnProperty(iface)) continue; for (var i = 0; i < obj.native.hardware.networkInterfaces[iface].length; i++) { if (obj.native.hardware.networkInterfaces[iface][i].family === 'IPv4' && !obj.native.hardware.networkInterfaces[iface][i].internal) { $('#webServer').append('<option value="' + obj.native.hardware.networkInterfaces[iface][i].address + '">[IPv4] ' + obj.native.hardware.networkInterfaces[iface][i].address + ' - ' + iface + '</option>'); } } } } if (current) $('#webServer').val(current); }); } else if (webServers[i].value.native.bind === '::') { // read all ipv6 addresses of host socket.emit('getObject', 'system.host.' + webServers[i].value.common.host, function (err, obj) { if (!err && obj && obj.native) { for (var iface in obj.native.hardware.networkInterfaces) { if (!obj.native.hardware.networkInterfaces.hasOwnProperty(iface)) continue; for (var i = 0; i < obj.native.hardware.networkInterfaces[iface].length; i++) { if (obj.native.hardware.networkInterfaces[iface][i].family === 'IPv6' && !obj.native.hardware.networkInterfaces[iface][i].internal) { $('#webServer').append('<option value="' + obj.native.hardware.networkInterfaces[iface][i].address + '">[IPv6] ' + obj.native.hardware.networkInterfaces[iface][i].address + ' - ' + iface + '</option>'); } } } } if (current) $('#webServer').val(current); }); } else { $('#tr_webServer').hide(); } } } } //Copied from sayit adapter (removed Sonos check, added set default value) function fillWebServices(elem, current, type, webServer) { socket.emit('getObjectView', 'system', 'instance', {startkey: 'system.adapter.web.', endkey: 'system.adapter.web.\u9999'}, function (err, res) { if (!err && res) { webServers = res.rows; for (var i = 0; i < res.rows.length; i++) { var n = res.rows[i].id.replace('system.adapter.', ''); var auth = res.rows[i].value.native.auth ? 'data-auth="true"' : ''; $(elem).append('<option value="' + n + '" ' + auth + '>' + n + '</option>'); if (i === 0 || current == n) //Select "current" if valid/set else first element $(elem).val(n); } } checkWeb('#web', webServer); }); } // ... and the function save has to exist. // you have to make sure the callback is called with the settings object as first param! function save(callback) { var obj = {}; $('.value').each(function () { var $this = $(this); if ($this.attr('type') === 'checkbox') { obj[$this.attr('id')] = $this.prop('checked'); } else { obj[$this.attr('id')] = $this.val(); } }); callback(obj); } </script> </head> <body> <div id="adapter-container"> <table> <tr> <td><img src="home.png"/></td> <td><h3 class="translate">Google Home adapter settings</h3></td> </tr> </table> <div> <table> <tr id="tr_web" class="variable"> <td><label for="web" class="translate">Web instance:</label></td> <td> <select class="value" id="web"> </select> </td> </tr> <tr id="tr_webServer" class="variable"> <td><label for="webServer" class="translate">Web server IP:</label></td> <td> <select class="value" id="webServer"> </select> </td> </tr> </table> </div> </div> </body> </html>