Start with some refactoring for the js-part:
authorStephan Reichholf <sreichholf@users.schwerkraft.elitedvb.net>
Mon, 19 Oct 2009 22:44:18 +0000 (22:44 +0000)
committerStephan Reichholf <sreichholf@users.schwerkraft.elitedvb.net>
Mon, 19 Oct 2009 22:44:18 +0000 (22:44 +0000)
* add toJSON() Method to Objects.
* added own DeviceInfo Object (also with toJSON() )
* "Not so well"-tested so please report bugs
* Please refresh your browser-cache before reporting "everlasting Loading-Animation Problems!"

webinterface/src/web-data/manifest.json
webinterface/src/web-data/objects.js
webinterface/src/web-data/timer.js
webinterface/src/web-data/tools.js
webinterface/src/web-data/tpl/default/tplBouquetList.htm
webinterface/src/web-data/tpl/default/tplNavExtras.htm

index 38ff716..dd01d12 100644 (file)
@@ -1,6 +1,6 @@
 {
   "betaManifestVersion": 1,
-  "version": "v24",
+  "version": "v27",
   "entries": [
                { "url": "IEFixes.htc" },               
                { "url": "img/arrow_down.png" },
index 350b230..961eb3c 100644 (file)
@@ -31,7 +31,7 @@ function getNamedChildren(xml, parentname, childname){
 }
 
 //START class EPGEvent
-function EPGEvent(xml){        
+function EPGEvent(xml, number){        
        this.eventID = getNodeContent(xml, 'e2eventid', '');
        this.startTime = getNodeContent(xml, 'e2eventstart', '');
        this.duration = getNodeContent(xml, 'e2eventduration', '');
@@ -41,18 +41,24 @@ function EPGEvent(xml){
        this.fileName = getNodeContent(xml, 'e2filename', '');  
        this.description = getNodeContent(xml, 'e2eventdescription');
        this.descriptionE = getNodeContent(xml, 'e2eventdescriptionextended');
-
-       this.getFilename = function (){
+       
+       if(typeof(number) != "undefined"){
+               this.number = number;
+       } else {
+               this.number = 0;
+       }
+       
+       this.getFilename = function() {
                return this.fileName;
        };
-       this.getEventId = function (){
+       this.getEventId = function() {
                return this.eventID;
        };
-       this.getTimeStart = function (){
+       this.getTimeStart = function() {
                var date = new Date(parseInt(this.startTime, 10)*1000);
                return date;
        };
-       this.getTimeStartString = function (){
+       this.getTimeStartString = function() {
                var h = this.getTimeStart().getHours();
                var m = this.getTimeStart().getMinutes();
                if (m < 10){
@@ -60,7 +66,7 @@ function EPGEvent(xml){
                }
                return h+":"+m;
        };
-       this.getTimeDay = function (){
+       this.getTimeDay = function() {
                var weekday = ["So", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
                var wday = weekday[this.getTimeStart().getDay()];
                var day = this.getTimeStart().getDate();
@@ -72,11 +78,11 @@ function EPGEvent(xml){
        this.getTimeBegin = function(){
                return this.getTimeStart().getTime()/1000;
        };
-       this.getTimeEnd = function (){
+       this.getTimeEnd = function() {
                var date = new Date((parseInt(this.startTime, 10)+parseInt(this.duration, 10))*1000);
                return date.getTime()/1000;
        };
-       this.getTimeEndString = function (){
+       this.getTimeEndString = function() {
                var date = new Date((parseInt(this.startTime, 10)+parseInt(this.duration, 10))*1000);
                var h = date.getHours();
                var m = date.getMinutes();
@@ -85,25 +91,47 @@ function EPGEvent(xml){
                }
                return h+":"+m;
        };
-       this.getDuration = function (){
+       this.getDuration = function() {
                var date = new Date(parseInt(this.duration, 10)*1000);
                return date;
        };
-       this.getTitle = function (){
+       this.getTitle = function() {
                return this.title;
        };
-       this.getDescription = function (){
+       this.getDescription = function() {
                return this.description;
        };
-       this.getDescriptionExtended = function (){
+       this.getDescriptionExtended = function() {
                return this.descriptionE;
        };
-       this.getServiceReference = function (){
+       this.getServiceReference = function() {
                return encodeURIComponent(this.serviceRef);
        };
-       this.getServiceName = function (){
+       this.getServiceName = function() {
                return this.serviceName.replace(" ","&nbsp;");
        };
+       
+       this.json = {
+                       'date': this.getTimeDay(),
+                       'eventid': this.getEventId(),
+                       'servicereference': this.getServiceReference(),
+                       'servicename': quotes2html(this.getServiceName()),
+                       'title': quotes2html(this.getTitle()),
+                       'titleESC': escape(this.getTitle()),
+                       'starttime': this.getTimeStartString(), 
+                       'duration': Math.ceil(this.getDuration()/60000), 
+                       'description': quotes2html(this.getDescription()),
+                       'endtime': this.getTimeEndString(), 
+                       'extdescription': quotes2html(this.getDescriptionExtended()),
+                       'number': String(this.number),
+                       'start': this.getTimeBegin(),
+                       'end': this.getTimeEnd()
+                       };
+       
+       this.toJSON = function() {
+               return this.json;
+       };
+       
 }
 //END class EPGEvent
 
@@ -121,7 +149,7 @@ function EPGList(xml){
                if (sortbytime === true){
                        var sortList = [];
                        for(var i=0;i<this.xmlitems.length;i++){
-                               var event = new EPGEvent(this.xmlitems.item(i));
+                               var event = new EPGEvent(this.xmlitems.item(i), i).toJSON();
                                sortList.push( [event.startTime, event] );
                        }
                        sortList.sort(this.sortFunction);
@@ -150,7 +178,7 @@ function EPGList(xml){
 //END class EPGList
 
 // START class Service
-function Service(xml){ 
+function Service(xml, cssclass){       
        this.servicereference = getNodeContent(xml, 'e2servicereference', '');
        this.servicename = getNodeContent(xml, 'e2servicename');
        
@@ -173,6 +201,20 @@ function Service(xml){
        this.setServiceName = function(sname){
                this.servicename = sname.replace('&quot;', '"');
        };
+       
+       if( typeof( cssclass ) == "undefined" ){
+               cssclass = 'odd';
+       }
+       
+       this.json = {   
+                       'servicereference' : this.getServiceReference(),
+                       'servicename' : this.getServiceName(),
+                       'cssclass' : cssclass
+       };
+       
+       this.toJSON = function(){
+               return this.json;
+       };
 }      
 //END class Service
 
@@ -182,8 +224,11 @@ function ServiceList(xml){
        this.servicelist = [];
        this.getArray = function(){
                if(this.servicelist.length === 0){
+                       var cssclass = 'even';
+                       
                        for (var i=0;i<this.xmlitems.length;i++){
-                               var service = new Service(this.xmlitems.item(i));
+                               cssclass = cssclass == 'even' ? 'odd' : 'even';
+                               var service = new Service(this.xmlitems.item(i), cssclass).toJSON();
                                this.servicelist.push(service);
                        }
                }
@@ -195,7 +240,7 @@ function ServiceList(xml){
 
 
 // START class Movie
-function Movie(xml){   
+function Movie(xml, cssclass){ 
        this.servicereference = getNodeContent(xml, 'e2servicereference');
        this.servicename = getNodeContent(xml, 'e2servicename');
        this.title = getNodeContent(xml, 'e2title');
@@ -207,16 +252,16 @@ function Movie(xml){
        this.startTime = getNodeContent(xml, 'e2time', 0);
        this.length = getNodeContent(xml, 'e2length', 0);
 
-       this.getLength = function (){
+       this.getLength = function() {
                return this.length;
        };
        
-       this.getTimeStart = function (){
+       this.getTimeStart = function() {
                var date = new Date(parseInt(this.startTime, 10)*1000);
                return date;
        };
        
-       this.getTimeStartString = function (){
+       this.getTimeStartString = function() {
                var h = this.getTimeStart().getHours();
                var m = this.getTimeStart().getMinutes();
                if (m < 10){
@@ -225,7 +270,7 @@ function Movie(xml){
                return h+":"+m;
        };
        
-       this.getTimeDay = function (){
+       this.getTimeDay = function() {
                var Wochentag = ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"];
                var wday = Wochentag[this.getTimeStart().getDay()];
                var day = this.getTimeStart().getDate();
@@ -264,7 +309,30 @@ function Movie(xml){
        
        this.getFilesizeMB = function(){                
                return Math.round((parseInt(this.filesize, 10)/1024)/1024)+"MB";
-       };      
+       };
+       
+       if( typeof( cssclass) == 'undefined'){
+               cssclass = 'odd';
+       }
+       
+       this.json = {
+                       'servicereference': escape(this.getServiceReference()),
+                       'servicename': this.getServiceName(),
+                       'title': this.getTitle(),
+                       'escapedTitle': escape(this.getTitle()),
+                       'description': this.getDescription(), 
+                       'descriptionextended': this.getDescriptionExtended(),
+                       'filename': String(this.getFilename()),
+                       'filesize': this.getFilesizeMB(),
+                       'tags': this.getTags().join(', ') ,
+                       'length': this.getLength() ,
+                       'time': this.getTimeDay()+"&nbsp;"+ this.getTimeStartString(),
+                       'cssclass' : cssclass
+       };
+       
+       this.toJSON = function(){
+               return this.json;
+       };
 }      
 //END class Movie
 
@@ -275,10 +343,13 @@ function MovieList(xml){
        this.movielist = [];
        
        this.getArray = function(){
-               if(this.movielist.length === 0){                        
+               if(this.movielist.length === 0){
+                       var cssclass = "even";
+                       
                        for(var i=0;i<this.xmlitems.length;i++){
-                               //debug("parsing movie "+i+" of "+this.xmlitems.length);
-                               var movie = new Movie(this.xmlitems.item(i));
+                               cssclass = cssclass == 'even' ? 'odd' : 'even';
+                               
+                               var movie = new Movie(this.xmlitems.item(i), cssclass).toJSON();
                                this.movielist.push(movie);                     
                        }
                }
@@ -291,7 +362,7 @@ function MovieList(xml){
 
 
 // START class Timer
-function Timer(xml){   
+function Timer(xml, cssclass){ 
        this.servicereference = getNodeContent(xml, 'e2servicereference');
        this.servicename = getNodeContent(xml, 'e2servicename');
        this.eventid = getNodeContent(xml, 'e2eit');
@@ -431,7 +502,52 @@ function Timer(xml){
        
        this.isCancled = function(){
                return this.cancled;
-       };      
+       };
+       
+       if( typeof( cssclass == 'undefined')){
+               cssclass = 'odd';
+       }
+       
+       this.beginDate = new Date(Number(this.getTimeBegin()) * 1000);
+       this.endDate = new Date(Number(this.getTimeEnd()) * 1000);
+       
+       this.aftereventReadable = [ 'Nothing', 'Standby',
+                                   'Deepstandby/Shutdown', 'Auto' ];
+       
+       this.justplayReadable = [ 'record', 'zap' ];
+       
+       this.json = {
+                       'servicereference' : this.getServiceReference(),
+                       'servicename' : quotes2html(this.getServiceName()),
+                       'title' : quotes2html(this.getName()),
+                       'description' : quotes2html(this.getDescription()),
+                       'descriptionextended' : quotes2html(this
+                                       .getDescriptionExtended()),
+                       'begin' : this.getTimeBegin(),
+                       'beginDate' : dateToString(this.beginDate),
+                       'end' : this.getTimeEnd(),
+                       'endDate' : dateToString(this.endDate),
+                       'state' : this.getState(),
+                       'duration' : Math.ceil((this.getDuration() / 60)),
+                       'repeated' : this.getRepeated(),
+                       'repeatedReadable' : repeatedReadable(this.getRepeated()),
+                       'justplay' : this.getJustplay(),
+                       'justplayReadable' : this.justplayReadable[Number(this
+                                       .getJustplay())],
+                       'afterevent' : this.getAfterevent(),
+                       'aftereventReadable' : this.aftereventReadable[Number(this
+                                       .getAfterevent())],
+                       'dirname' : this.getDirname(),
+                       'tags' : this.getTags(),
+                       'disabled' : this.getDisabled(),
+                       'onOff' : this.getToggleDisabledIMG(),
+                       'enDis' : this.getToggleDisabledText(),
+                       'cssclass' : cssclass
+       };
+       
+       this.toJSON = function(){
+               return this.json;
+       };
 }
 
 
@@ -442,8 +558,10 @@ function TimerList(xml){
        
        this.getArray = function(){
                if(this.timerlist.length === 0){
+                       var cssclass = 'even';
+                       
                        for(var i=0;i<this.xmlitems.length;i++){
-                               var timer = new Timer(this.xmlitems.item(i));
+                               var timer = new Timer(this.xmlitems.item(i), cssclass).toJSON();
                                this.timerlist.push(timer);                     
                        }
                }
@@ -452,7 +570,100 @@ function TimerList(xml){
        };
 }
 //END class TimerList
-
+function DeviceInfo(xml){
+       xml = xml.getElementsByTagName("e2deviceinfo").item(0)
+       
+       this.info = {};
+       
+       this.nims = [];
+       this.hdds = [];
+       this.nics = [];
+       
+       this.fpversion = "V"+xml.getElementsByTagName('e2fpversion').item(0).firstChild.data;
+       
+       var nimnodes = xml.getElementsByTagName('e2frontends').item(0).getElementsByTagName('e2frontend');                      
+       for(var i = 0; i < nimnodes.length; i++){                                       
+               try {
+                       var name = nimnodes.item(i).getElementsByTagName('e2name').item(0).firstChild.data;
+                       var model = nimnodes.item(i).getElementsByTagName('e2model').item(0).firstChild.data;
+                       this.nims[i] = { 
+                                       'name' : name, 
+                                       'model' : model
+                       };                                      
+               } catch (e) {
+                       debug("[incomingDeviceInfo] error parsing NIM data: " + e);
+               }
+       }
+       
+       
+       var hddnodes = xml.getElementsByTagName('e2hdd');                       
+       for( var i = 0; i < hddnodes.length; i++){
+               try{                    
+                       var hdd = hddnodes.item(i);
+       
+                       var model       = hdd.getElementsByTagName('e2model').item(0).firstChild.data;
+                       var capacity = hdd.getElementsByTagName('e2capacity').item(0).firstChild.data;
+                       var free                = hdd.getElementsByTagName('e2free').item(0).firstChild.data;
+       
+                       this.hdds[i] = {        
+                                       'model'         : model,
+                                       'capacity'      : capacity,
+                                       'free'          : free
+                       };
+               } catch(e){
+                       debug("[incomingDeviceInfo] error parsing HDD data: " + e);
+               }
+       }
+       
+       
+       var nicnodes = xml.getElementsByTagName('e2interface');
+       for( var i = 0; i < nicnodes.length; i++){
+               try {
+                       var nic = nicnodes.item(i);
+                       var name = nic.getElementsByTagName('e2name').item(0).firstChild.data;
+                       var mac = nic.getElementsByTagName('e2mac').item(0).firstChild.data;
+                       var dhcp = nic.getElementsByTagName('e2dhcp').item(0).firstChild.data;
+                       var ip = nic.getElementsByTagName('e2ip').item(0).firstChild.data;
+                       var gateway = nic.getElementsByTagName('e2gateway').item(0).firstChild.data;
+                       var netmask = nic.getElementsByTagName('e2netmask').item(0).firstChild.data;
+       
+                       this.nics[i] = {
+                                       'name' : name,
+                                       'mac' : mac,
+                                       'dhcp' : dhcp,
+                                       'ip' : ip,
+                                       'gateway' : gateway,
+                                       'netmask' : netmask
+                       };
+               } catch (e) {
+                       debug("[incomingDeviceInfo] error parsing NIC data: " + e);
+               }
+       }
+       
+       try{
+               this.info = {
+                               'devicename' : xml.getElementsByTagName('e2devicename').item(0).firstChild.data,        
+                               'enigmaVersion': xml.getElementsByTagName('e2enigmaversion').item(0).firstChild.data,
+                               'imageVersion': xml.getElementsByTagName('e2imageversion').item(0).firstChild.data,
+                               'fpVersion': this.fpversion,
+                               'webifversion': xml.getElementsByTagName('e2webifversion').item(0).firstChild.data                      
+               };
+       } catch (e) {
+               debug("[incomingDeviceInfo] parsing Error" + e);
+       }
+       
+       this.json = {
+                       info : this.info,
+                       hdds : this.hdds,               
+                       nics : this.nics,
+                       nims : this.nims
+       };
+       
+       this.toJSON = function(){
+               return this.json;
+       };
+       
+}
 
 function SimpleXMLResult(xml){         
        try{
index 04a7ed5..d4e810e 100644 (file)
@@ -209,11 +209,9 @@ function incomingTimerAddResult(request) {
                var result = new SimpleXMLResult(getXML(request));
                if (result.getState()) {
                        //timer has been added
-                       notify(result.getStateText(), result.getState());
                        loadTimerList();
-               } else {
-                       notify(result.getStateText(), result.getState());
                }
+               simpleResultHandler(result);
        }
 }
 
@@ -223,54 +221,11 @@ function loadTimerList() {
 
 function incomingTimerList(request) {
        if (request.readyState == 4) {
-               var timers = new TimerList(getXML(request)).getArray();
-               debug("[incomingTimerList] Got " + timers.length + " timers");
-
-               var aftereventReadable = [ 'Nothing', 'Standby',
-                               'Deepstandby/Shutdown', 'Auto' ];
-               var justplayReadable = [ 'record', 'zap' ];
-
-               var namespace = [];
-               var cssclass = "even";
-
-               for ( var i = 0; i < timers.length; i++) {
-                       var timer = timers[i];
-                       var beginDate = new Date(Number(timer.getTimeBegin()) * 1000);
-                       var endDate = new Date(Number(timer.getTimeEnd()) * 1000);
-
-                       cssclass = cssclass == 'even' ? 'odd' : 'even';
+               var timerList = new TimerList(getXML(request)).getArray();
+               debug("[incomingTimerList] Got " + timerList.length + " timers");
 
-                       namespace[i] = {
-                               'servicereference' : timer.getServiceReference(),
-                               'servicename' : quotes2html(timer.getServiceName()),
-                               'title' : quotes2html(timer.getName()),
-                               'description' : quotes2html(timer.getDescription()),
-                               'descriptionextended' : quotes2html(timer
-                                               .getDescriptionExtended()),
-                               'begin' : timer.getTimeBegin(),
-                               'beginDate' : dateToString(beginDate),
-                               'end' : timer.getTimeEnd(),
-                               'endDate' : dateToString(endDate),
-                               'state' : timer.getState(),
-                               'duration' : Math.ceil((timer.getDuration() / 60)),
-                               'repeated' : timer.getRepeated(),
-                               'repeatedReadable' : repeatedReadable(timer.getRepeated()),
-                               'justplay' : timer.getJustplay(),
-                               'justplayReadable' : justplayReadable[Number(timer
-                                               .getJustplay())],
-                               'afterevent' : timer.getAfterevent(),
-                               'aftereventReadable' : aftereventReadable[Number(timer
-                                               .getAfterevent())],
-                               'dirname' : timer.getDirname(),
-                               'tags' : timer.getTags(),
-                               'disabled' : timer.getDisabled(),
-                               'onOff' : timer.getToggleDisabledIMG(),
-                               'enDis' : timer.getToggleDisabledText(),
-                               'cssclass' : cssclass
-                       };
-               }
                var data = {
-                       timer : namespace
+                       timer : timerList
                };
                processTpl('tplTimerList', data, 'contentMain');
        }
@@ -334,7 +289,7 @@ function incomingTimerDelResult(request) {
        debug("[incomingTimerDelResult] called");
        if (request.readyState == 4) {
                var result = new SimpleXMLResult(getXML(request));
-               notify(result.getStateText(), result.getState());
+               simpleResultHandler(result);
                debug("[incomingTimerDelResult] Loading List");
                loadTimerList();
        }
@@ -459,13 +414,14 @@ function loadTimerFormChannels() {
 function addTimerListFormatTV(request) {
        if (addTimerEditFormArray.RadioListFilled === 0) {
                if (request.readyState == 4) {
-                       var services = new ServiceList(getXML(request)).getArray();
-                       var tv = {};
-                       for ( var i = 0; i < services.length; i++) {
-                               var reference = services[i];
-                               tv[reference.getServiceReference()] = reference
-                                               .getServiceName();
+                       var serviceList = new ServiceList(getXML(request)).getArray();
+                       var tv = [];
+                       
+                       for ( var i = 0; i < serviceList.length; i++) {
+                               var service = serviceList[i];
+                               tv[service.servicereference] = service.servicename;
                        }
+                       
                        addTimerEditFormArray.TVListFilled = 1;
                        addTimerEditFormArray.TVList = tv;
                }
@@ -480,12 +436,14 @@ function addTimerListFormatTV(request) {
 
 function addTimerListFormatRadio(request) {
        if (request.readyState == 4) {
-               var services = new ServiceList(getXML(request)).getArray();
-               var radio = {};
-               for ( var i = 0; i < services.length; i++) {
-                       var reference = services[i];
-                       radio[reference.getServiceReference()] = reference.getServiceName();
+               var serviceList = new ServiceList(getXML(request)).getArray();
+               var radio = [];
+               
+               for ( var i = 0; i < serviceList.length; i++) {
+                       var service = serviceList[i];
+                       radio[service.servicereference] = service.servicename;
                }
+               
                addTimerEditFormArray.RadioListFilled = 1;
                addTimerEditFormArray.RadioList = radio;
        }
@@ -539,7 +497,7 @@ function loadTimerForm() {
        var tagsObject = addTimerFormPrepareTagsMenu(addTimerEditFormArray.tags);
 
        var namespace = {
-               'year' : createOptions(2008, 2015, addTimerEditFormArray.year),
+               'year' : createOptions(2009, 2015, addTimerEditFormArray.year),
                'month' : createOptions(1, 12, addTimerEditFormArray.month),
                'day' : createOptions(1, 31, addTimerEditFormArray.day),
                'shour' : createOptions(0, 23, addTimerEditFormArray.shour),
@@ -716,7 +674,7 @@ function cleanTimerListNow() {
 function incomingCleanTimerListNow(request) {
        if (request.readyState == 4) {
                var result = new SimpleXMLResult(getXML(request));
-               notify(result.getStateText(), result.getState());
+               simpleResultHandler(result);
                loadTimerList();
        }
 }
@@ -758,7 +716,7 @@ function recordNowDecision(recordNowCurrent) {
 
 function incomingWriteTimerListNow(request) {
        var result = new SimpleXMLResult(getXML(request));
-       notify(result.getStateText(), result.getState());
+       simpleResultHandler(result);
 }
 
 function writeTimerListNow() {
index def7c13..945ae81 100644 (file)
@@ -110,6 +110,7 @@ function simpleResultHandler(simpleResult){
        notify(simpleResult.statetext, simpleResult.state);
 }
 
+
 function startUpdateBouquetItemsPoller(){
        debug("[startUpdateBouquetItemsPoller] called");
        updateBouquetItemsPoller = setInterval(updateItemsLazy, 60000);
@@ -121,6 +122,7 @@ function stopUpdateBouquetItemsPoller(){
        clearInterval(updateBouquetItemsPoller);
 }
 
+
 //General Helpers
 function parseNr(num) {
        if(isNaN(num)){
@@ -593,34 +595,9 @@ function incomingEPGrequest(request){
        if (request.readyState == 4){
                var EPGItems = new EPGList(getXML(request)).getArray(true);
                debug("[incomingEPGrequest] got "+EPGItems.length+" e2events");
-               if(EPGItems.length > 0){                        
-                       var namespace = [];
-                       for (var i=0; i < EPGItems.length; i++){
-                               try{
-                                       var item = EPGItems[i];                         
-                                       namespace[i] = {        
-                                                       'date': item.getTimeDay(),
-                                                       'eventid': item.getEventId(),
-                                                       'servicereference': item.getServiceReference(),
-                                                       'servicename': quotes2html(item.getServiceName()),
-                                                       'title': quotes2html(item.getTitle()),
-                                                       'titleESC': escape(item.getTitle()),
-                                                       'starttime': item.getTimeStartString(), 
-                                                       'duration': Math.ceil(item.getDuration()/60000), 
-                                                       'description': quotes2html(item.getDescription()),
-                                                       'endtime': item.getTimeEndString(), 
-                                                       'extdescription': quotes2html(item.getDescriptionExtended()),
-                                                       'number': String(i),
-                                                       'start': item.getTimeBegin(),
-                                                       'end': item.getTimeEnd()
-                                       };
-
-                               } catch (Exception) { 
-                                       debug("[incomingEPGrequest] Error rendering: " + Exception);    
-                               }
-                       }
 
-                       epgListData = {epg : namespace};
+               if( EPGItems.length > 0){
+                       epgListData = {epg : EPGItems};
                        fetchTpl('tplEpgList', showEpgList);
                } else {
                        messageBox('No Items found!', 'Sorry but I could not find any EPG Content containing your search value');
@@ -651,15 +628,10 @@ function loadEPGByServiceReference(servicereference){
 //}
 
 function buildServiceListEPGItem(epgevent, type){
-       var namespace = {       
-                       'starttime': epgevent.getTimeStartString(), 
-                       'title': epgevent.getTitle(), 
-                       'length': Math.ceil(epgevent.duration/60) 
-       };
-       var data = {epg : namespace};
+       var data = {epg : epgevent};
        // e.innerHTML = RND(tplServiceListEPGItem, namespace);
 
-       var id = type + epgevent.getServiceReference();
+       var id = type + epgevent.servicereference;
 
        show('tr' + id);
 
@@ -675,12 +647,12 @@ function incomingServiceEPGNowNext(request, type){
                var epgevents = getXML(request).getElementsByTagName("e2eventlist").item(0).getElementsByTagName("e2event");
                for (var c = 0; c < epgevents.length; c++){
                        try{
-                               var epgEvt = new EPGEvent(epgevents.item(c));
+                               var epgEvt = new EPGEvent(epgevents.item(c), c).toJSON();
                        } catch (e){
                                debug("[incomingServiceEPGNowNext]" + e);
                        }
 
-                       if (epgEvt.getEventId() != ''){
+                       if (epgEvt.eventid != ''){
                                buildServiceListEPGItem(epgEvt, type);
                        }
                }
@@ -782,31 +754,15 @@ function initVolumePanel(){
 //Channels and Bouquets
 
 function incomingChannellist(request){
-       var services = null;
+       var serviceList = null;
        if(typeof(loadedChannellist[currentBouquet]) != "undefined"){
-               services = loadedChannellist[currentBouquet];
+               serviceList = loadedChannellist[currentBouquet];
        } else if(request.readyState == 4) {
-               services = new ServiceList(getXML(request)).getArray();
-               debug("[incomingChannellist] got "+services.length+" Services");
+               serviceList = new ServiceList(getXML(request)).getArray();
+               debug("[incomingChannellist] got "+serviceList.length+" Services");
        }
-       if(services !== null) {
-               var namespace = {};
-               var cssclass = "even";
-
-               for ( var i = 0; i < services.length ; i++){
-
-                       cssclass = cssclass == 'even' ? 'odd' : 'even';
-
-                       var service = services[i];
-                       namespace[i] = {        
-                                       'servicereference' : service.getServiceReference(),
-                                       'servicename' : service.getServiceName(),
-                                       'cssclass' : cssclass
-                       };
-               }
-               var data = { 
-                               services : namespace 
-               };
+       if(serviceList !== null) {              
+               var data = { services : serviceList };
 
                processTpl('tplServiceList', data, 'contentMain', getBouquetEpg);
                delayedGetSubservices();
@@ -836,41 +792,19 @@ function incomingBouquetListInitial(request){
                debug("[incomingBouquetListInitial] Got " + bouquetList.length + " TV Bouquets!");      
 
                // loading first entry of TV Favorites as default for ServiceList
-               loadBouquet(bouquetList[0].getServiceReference(), bouquetList[0].getServiceName());
+               loadBouquet(bouquetList[0].servicereference, bouquetList[0].servicename);
        }
 }
 
 
-function renderBouquetTable(list, target){
-       debug("[renderBouquetTable] Rendering " + list.length + " Bouquets");   
-
-       var namespace = [];
-       if (list.length < 1){
-               debug("[renderBouquetTable] NO BOUQUETS!");
-       }
-       for (var i=0; i < list.length; i++){
-               try{
-                       var bouquet = list[i];
-                       namespace[i] = {
-                                       'servicereference': bouquet.getServiceReference(), 
-                                       'bouquetname': bouquet.getServiceName()
-                       };
-               } catch (e) { }
-       }
-       var data = { 
-                       services : namespace 
-       };
-
-       processTpl('tplBouquetList', data, 'contentMain');
-}      
-
-
-
 function incomingBouquetList(request){
        if (request.readyState == 4) {
                var bouquetList = new ServiceList(getXML(request)).getArray();
                debug("[incomingBouquetList] got " + bouquetList.length + " TV Bouquets!");     
-               renderBouquetTable(bouquetList, 'contentMain');         
+               
+               var data = { services : bouquetList };
+
+               processTpl('tplBouquetList', data, 'contentMain');
        }
 }
 
@@ -956,32 +890,32 @@ function loadMovieNav(){
 function incomingMovieList(request){
        if(request.readyState == 4){
 
-               var movies = new MovieList(getXML(request)).getArray();
-               debug("[incomingMovieList] Got "+movies.length+" movies");
-               namespace = []; 
-
-               var cssclass = "even";
-
-               for ( var i = 0; i < movies.length; i++){
-                       cssclass = cssclass == 'even' ? 'odd' : 'even';
-
-                       var movie = movies[i];
-                       namespace[i] = {        
-                                       'servicereference': escape(movie.getServiceReference()),
-                                       'servicename': movie.getServiceName(),
-                                       'title': movie.getTitle(),
-                                       'escapedTitle': escape(movie.getTitle()),
-                                       'description': movie.getDescription(), 
-                                       'descriptionextended': movie.getDescriptionExtended(),
-                                       'filename': String(movie.getFilename()),
-                                       'filesize': movie.getFilesizeMB(),
-                                       'tags': movie.getTags().join(', ') ,
-                                       'length': movie.getLength() ,
-                                       'time': movie.getTimeDay()+"&nbsp;"+ movie.getTimeStartString(),
-                                       'cssclass' : cssclass
-                       };
-               }
-               var data = { movies : namespace };
+               var movieList = new MovieList(getXML(request)).getArray();
+               debug("[incomingMovieList] Got "+movieList.length+" movies");
+//             namespace = []; 
+
+//             var cssclass = "even";
+//
+//             for ( var i = 0; i < movies.length; i++){
+//                     cssclass = cssclass == 'even' ? 'odd' : 'even';
+//
+//                     var movie = movies[i];
+//                     namespace[i] = {        
+//                                     'servicereference': escape(movie.getServiceReference()),
+//                                     'servicename': movie.getServiceName(),
+//                                     'title': movie.getTitle(),
+//                                     'escapedTitle': escape(movie.getTitle()),
+//                                     'description': movie.getDescription(), 
+//                                     'descriptionextended': movie.getDescriptionExtended(),
+//                                     'filename': String(movie.getFilename()),
+//                                     'filesize': movie.getFilesizeMB(),
+//                                     'tags': movie.getTags().join(', ') ,
+//                                     'length': movie.getLength() ,
+//                                     'time': movie.getTimeDay()+"&nbsp;"+ movie.getTimeStartString(),
+//                                     'cssclass' : cssclass
+//                     };
+//             }
+               var data = { movies : movieList };
                processTpl('tplMovieList', data, 'contentMain');
        }               
 }
@@ -1002,12 +936,10 @@ function incomingDelMovieResult(request) {
        debug("[incomingDelMovieResult] called");
        if(request.readyState == 4){
                var result = new SimpleXMLResult(getXML(request));
-               if(result.getState()){
-                       notify(result.getStateText(), result.getState());
+               if(result.getState()){                  
                        loadMovieList();
-               }else{
-                       notify(result.getStateText(), result.getState());
                }
+               simpleResultHandler(result);
        }               
 }
 
@@ -1038,7 +970,7 @@ function delMovie(sref ,servicename, title, description) {
 function incomingMessageResult(request){
        if(request.readyState== 4){
                var result = new SimpleXMLResult(getXML(request));
-               notify(result.getStateText(), result.getState());
+               simpleResultHandler(result);
        }
 }
 
@@ -1268,93 +1200,9 @@ function ifChecked(rObj) {
 function incomingDeviceInfo(request) {
        if(request.readyState == 4){
                debug("[incomingDeviceInfo] called");
-               var xml = getXML(request).getElementsByTagName("e2deviceinfo").item(0);
-
-               var info = {};
-
-               var nims = [];
-               var hdds = [];
-               var nics = [];
-
-               var fpversion = "V"+xml.getElementsByTagName('e2fpversion').item(0).firstChild.data;
-
-               var nimnodes = xml.getElementsByTagName('e2frontends').item(0).getElementsByTagName("e2frontend");                      
-               for(var i = 0; i < nimnodes.length; i++){                                       
-                       try {
-                               var name = nimnodes.item(i).getElementsByTagName("e2name").item(0).firstChild.data;
-                               var model = nimnodes.item(i).getElementsByTagName("e2model").item(0).firstChild.data;
-                               nims[i] = { 
-                                               'name' : name, 
-                                               'model' : model
-                               };                                      
-                       } catch (e) {
-                               debug("[incomingDeviceInfo] error parsing NIM data: " + e);
-                       }
-               }
-
-
-               var hddnodes = xml.getElementsByTagName('e2hdd');                       
-               for( var i = 0; i < hddnodes.length; i++){
-                       try{                    
-                               var hdd = hddnodes.item(i);
+               var deviceInfo = new DeviceInfo(getXML(request));
 
-                               var model       = hdd.getElementsByTagName("e2model").item(0).firstChild.data;
-                               var capacity = hdd.getElementsByTagName("e2capacity").item(0).firstChild.data;
-                               var free                = hdd.getElementsByTagName("e2free").item(0).firstChild.data;
-
-                               hdds[i] = {     
-                                               'model'         : model,
-                                               'capacity'      : capacity,
-                                               'free'          : free
-                               };
-                       } catch(e){
-                               debug("[incomingDeviceInfo] error parsing HDD data: " + e);
-                       }
-               }
-
-               var nicnodes = xml.getElementsByTagName('e2interface');
-               for( var i = 0; i < nicnodes.length; i++){
-                       try {
-                               var nic = nicnodes.item(i);
-                               var name = nic.getElementsByTagName("e2name").item(0).firstChild.data;
-                               var mac = nic.getElementsByTagName("e2mac").item(0).firstChild.data;
-                               var dhcp = nic.getElementsByTagName("e2dhcp").item(0).firstChild.data;
-                               var ip = nic.getElementsByTagName("e2ip").item(0).firstChild.data;
-                               var gateway = nic.getElementsByTagName("e2gateway").item(0).firstChild.data;
-                               var netmask = nic.getElementsByTagName("e2netmask").item(0).firstChild.data;
-
-                               nics[i] = {
-                                               'name' : name,
-                                               'mac' : mac,
-                                               'dhcp' : dhcp,
-                                               'ip' : ip,
-                                               'gateway' : gateway,
-                                               'netmask' : netmask
-                               };
-                       } catch (e) {
-                               debug("[incomingDeviceInfo] error parsing NIC data: " + e);
-                       }
-               }
-
-               try{
-                       info = {
-                                       'devicename' : xml.getElementsByTagName('e2devicename').item(0).firstChild.data,        
-                                       'enigmaVersion': xml.getElementsByTagName('e2enigmaversion').item(0).firstChild.data,
-                                       'imageVersion': xml.getElementsByTagName('e2imageversion').item(0).firstChild.data,
-                                       'fpVersion': fpversion,
-                                       'webifversion': xml.getElementsByTagName('e2webifversion').item(0).firstChild.data                      
-                       };
-               } catch (e) {
-                       debug("[incomingDeviceInfo] parsing Error" + e);
-               }
-
-               var data = {    
-                               "info" : info,
-                               "hdds" : hdds,          
-                               "nics" : nics,
-                               "nims" : nims                                                                            
-               };
-               processTpl('tplDeviceInfo', data, 'contentMain');
+               processTpl('tplDeviceInfo', deviceInfo, 'contentMain');
        }
 }
 
index 1674f42..2a9e2b9 100644 (file)
@@ -7,13 +7,13 @@
                                                                        <tr>
                                                                                <td>
                                                                                        <a target="_blank" onclick="return parentPin( '${service.servicereference}' );" href="/web/services.m3u?bRef=${service.servicereference}">
-                                                                                               <img src="/web-data/img/screen.png" title="Open ${service.bouquetname} as Playlist" border="0">
+                                                                                               <img src="/web-data/img/screen.png" title="Open ${service.servicename} as Playlist" border="0">
                                                                                        </a>
                                                                                </td>                                                                   
                                                                                <td>                                                                            
                                                                                        <div class="sListSName">
-                                                                                               <a href="#" id="${service.servicereference}" onclick="{ loadBouquet(this.id, this.innerHTML); }" class="sListSLink" title="Load Bouquet ${service.bouquetname}">
-                                                                                                       ${service.bouquetname}
+                                                                                               <a href="#" id="${service.servicereference}" onclick="{ loadBouquet(this.id, this.innerHTML); }" class="sListSLink" title="Load Bouquet ${service.servicename}">
+                                                                                                       ${service.servicename}
                                                                                                </a>
                                                                                        </div>
                                                                                </td>
index c863038..55f35dc 100644 (file)
@@ -2,6 +2,9 @@
 <!-- tplNavExtras -->
 <table id="navTimer" class="navTable">
        <tr>
+               <td><a href="#" onclick="switchMode('MediaPlayer');">MediaPlayer</a><td>
+       </tr>
+       <tr>
                <td><a href="#" onclick="loadDeviceInfo();">Device Info</a><td>
        </tr>
        <tr>