//# sourceURL=J_ALTUI.js // This program is free software: you can redistribute it and/or modify // it under the condition that it is for private or home useage and // this whole comment is reproduced in the source code file. // Commercial utilisation is not authorized without the appropriate // written agreement from amg0 / alexis . mermet @ gmail . com // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. //------------------------------------------------------------- // ALTUI Plugin javascript Tabs //------------------------------------------------------------- var altui_Svs = 'urn:upnp-org:serviceId:altui1'; var ip_address = data_request_url; //------------------------------------------------------------- // Utilities Javascript //------------------------------------------------------------- if (typeof String.prototype.format == 'undefined') { String.prototype.format = function() { var content = this; for (var i=0; i < arguments.length; i++) { var replacement = new RegExp('\\{' + i + '\\}', 'g'); // regex requires \ and assignment into string requires \\, // if ($.type(arguments[i]) === "string") // arguments[i] = arguments[i].replace(/\$/g,'$'); content = content.replace(replacement, arguments[i]); } return content; }; }; String.prototype.htmlEncode = function() { var value = this; return $('
').text(value).html(); } String.prototype.htmlDecode= function() { var value = this; return $('
').html(value).text(); } function isFunction(x) { return Object.prototype.toString.call(x) == '[object Function]'; } //------------------------------------------------------------- // Utilities for searching Vera devices //------------------------------------------------------------- function findDeviceIdx(deviceID) { //jsonp.ud.devices for(var i=0; i'; set_panel_html(html); } //------------------------------------------------------------- // Device TAB : Settings //------------------------------------------------------------- function altui_Settings(deviceID) { // first determine if it is a child device or not //var device = findDeviceIdx(deviceID); //var debug = get_device_state(deviceID, altui_Svs, 'Debug',1); //var root = (device!=null) && (jsonp.ud.devices[device].id_parent==0); var present = get_device_state(deviceID, altui_Svs, 'Present',1); var ipaddr = findDeviceIP(deviceID); var config = get_device_state(deviceID, altui_Svs, 'PluginConfig',1); var themecss = get_device_state(deviceID, altui_Svs, 'ThemeCSS',1); var localhome = get_device_state(deviceID, altui_Svs, 'LocalHome',1); var localcdn = get_device_state(deviceID, altui_Svs, 'LocalCDN',1); var localbootstrap = get_device_state(deviceID, altui_Svs, 'LocalBootstrap',1); var extraCtrl = get_device_state(deviceID, altui_Svs, 'ExtraController',1); var style=' '; var htmltest = ''; var htmlConfig = ''; var htmlTheme = ''; var htmlHome = ''; var htmlCDN = ''; var htmlBootstrap = ''; var htmlCTRL = ''; var htmlSetConfig= ''; var htmlResetConfig= ''; var htmlViewJson = ''; var html = style+ '
'+ ''+ '' + '' + '' + '' + '' + '' + '' + '' + '' + '
Run '+htmltest+'
Theme '+htmlTheme+'
Home Page '+htmlHome+'
url options
  • home=(pageHome , pageRooms , pageDevices , pageScenes , pageSceneEdit , pagePlugins , pageUsePages , pageEditPages , pageCredits , pageLuaTest , pageLuaStart , pageOptions , pageEditor , pageZwave , pageLocalization , pagePower , pageChildren , pageRoutes , pageQuality , pageTblDevices , pageOsCommand)
  • lang=(en , fr , it)
Local CDN ? '+htmlCDN+'
Local Bootstrap ? '+htmlBootstrap+'
Extra Controllers '+htmlCTRL+'
Config '+htmlConfig+'
Actions '+htmlViewJson+htmlSetConfig+htmlResetConfig+'
'+ '
' ; //html = html + '' set_panel_html(html); jQuery( "#altui-theme" ).val(themecss); jQuery( "#altui-home" ).val(localhome); jQuery( "#altui-cdn" ).val(localcdn); jQuery( "#altui-localbootstrap" ).val(localbootstrap); jQuery( "#altui-ctrl" ).val(extraCtrl); // // test isregistered // jQuery( "#altui-config" ).text( config ); jQuery( "#altui-theme" ).text( themecss ).change( function() { var themecss = jQuery(this).val()+' '; saveVar(deviceID, altui_Svs, "ThemeCSS", themecss, true); }); jQuery( "#altui-home" ).change( function() { var home = jQuery(this).val()+' '; saveVar(deviceID, altui_Svs, "LocalHome", home, true); }); jQuery( "#altui-cdn" ).change( function() { var cdn = jQuery(this).val(); saveVar(deviceID, altui_Svs, "LocalCDN", cdn, true); }); jQuery( "#altui-localbootstrap" ).change( function() { var bootstrap = jQuery(this).val(); saveVar(deviceID, altui_Svs, "LocalBootstrap", bootstrap, true); }); jQuery( "#altui-ctrl" ).change( function() { var ctrl = jQuery(this).val(); saveVar(deviceID, altui_Svs, "ExtraController", ctrl, true); }); jQuery( "#altui-open" ).click(function() { var url = window.location.origin + jQuery( "#altui-home" ).val() window.open( url, '_blank'); }); jQuery( "#altui-setconfig" ).click(function() { var varVal = jQuery( "#altui-config" ).val(); saveVar(deviceID, altui_Svs, 'PluginConfig', varVal, true) }); jQuery( "#altui-viewconfig" ).click(function() { var varVal = jQuery( "#altui-config" ).val(); var url = "http://jsoneditoronline.org/?json="+varVal; window.open(url,'_blank'); }); jQuery( "#altui-resetconfig" ).click(function() { var url = buildUPnPActionUrl(deviceID,altui_Svs,'Reset'); jQuery.ajax({ type: "GET", url: url, cache: false, }).done(function() { setTimeout( function() { var config = get_device_state(deviceID, altui_Svs, 'PluginConfig',1); jQuery( "#altui-config" ).val(config) }, 2000 ); }).fail(function() { alert('Reset Failed!'); }); }); } //------------------------------------------------------------- // Save functions //------------------------------------------------------------- //------------------------------------------------------------- // Pattern Matching functions //------------------------------------------------------------- //------------------------------------------------------------- // Variable saving ( log , then full save ) //------------------------------------------------------------- function saveVar(deviceID, service, varName, varVal, reload) { //set_device_state (deviceID, service, varName, varVal, 0); // only updated at time of luup restart set_device_state (deviceID, altui_Svs, varName, varVal, (reload==true) ? 0 : 1); // lost in case of luup restart // 3rd method : updated immediately but not reflected ! /* var url = buildVariableSetUrl( deviceID, varName, varVal) var jqxhr = jQuery.ajax({ url:url, async:false // important to be in synchronous mode in that case }) .done(function() { // success, remove pending save for this variable }) .fail(function() { // error, keep track of error, keep entry in DB for next save }); */ } //------------------------------------------------------------- // Helper functions to build URLs to call VERA code from JS //------------------------------------------------------------- function buildVeraURL( deviceID, fnToUse, varName, varValue) { var urlHead = '' + ip_address + 'id=lu_action&serviceId=urn:micasaverde-com:serviceId:HomeAutomationGateway1&action=RunLua&Code='; if (varValue != null) return urlHead + fnToUse + '("' + altui_Svs + '", "' + varName + '", "' + varValue + '", ' + deviceID + ')'; return urlHead + fnToUse + '("' + altui_Svs + '", "' + varName + '", "", ' + deviceID + ')'; } function buildVariableSetUrl( deviceID, varName, varValue) { var urlHead = '' + ip_address + 'id=variableset&DeviceNum='+deviceID+'&serviceId='+altui_Svs+'&Variable='+varName+'&Value='+varValue; return urlHead; } function buildUPnPActionUrl(deviceID,service,action,params) { var urlHead = ip_address +'id=action&output_format=json&DeviceNum='+deviceID+'&serviceId='+service+'&action='+action;//'&newTargetValue=1'; if (params != undefined) { jQuery.each(params, function(index,value) { urlHead = urlHead+"&"+index+"="+value; }); } return urlHead; }