From 56ef7aaa40b5aff3bce5ace21215acb0be5ab92f Mon Sep 17 00:00:00 2001 From: thlo Date: Sat, 23 Feb 2013 10:31:30 +0100 Subject: Support for multiple interfaces. Improved Channel Group Separator handling. Updated Web GUI to use the enclosure RSS element. Bugfixes. --- vdr-smarttvweb/web/Data.js | 129 +++++++++++++++++++++++++++++++-------------- 1 file changed, 89 insertions(+), 40 deletions(-) (limited to 'vdr-smarttvweb/web/Data.js') diff --git a/vdr-smarttvweb/web/Data.js b/vdr-smarttvweb/web/Data.js index 5e480d2..49e9026 100755 --- a/vdr-smarttvweb/web/Data.js +++ b/vdr-smarttvweb/web/Data.js @@ -1,16 +1,27 @@ +//Diff: +// getNumString +// createJQMDomTree + var Data = { assets : new Item, folderList : [], }; +Array.prototype.remove = function(from, to) { + var rest = this.slice((to || from) + 1 || this.length); + this.length = from < 0 ? this.length + from : from; + return this.push.apply(this, rest); +}; + Data.reset = function() { this.assets = null; this.assets = new Item; this.folderList = []; - this.folderList.push({item : this.assets, id: 0}); +// this.folderList.push({item : this.assets, id: 0}); +// Main.log("Data.reset: folderList.push. this.folderList.length= " + this.folderList.length); }; Data.completed= function(sort) { @@ -18,26 +29,31 @@ Data.completed= function(sort) { this.assets.sortPayload(); this.folderList.push({item : this.assets, id: 0}); - console.log ("Data.completed()= " +this.folderList.length); +// Main.log("Data.completed: folderList.push. this.folderList.length= " + this.folderList.length); +// Main.log ("Data.completed()= " +this.folderList.length); }; -Data.selectFolder = function (idx) { - this.folderList.push({item : this.getCurrentItem().childs[idx], id: idx}); +Data.selectFolder = function (idx, first_idx) { + this.folderList.push({item : this.getCurrentItem().childs[idx], id: idx, first:first_idx}); +// Main.log("Data.selectFolder: folderList.push. this.folderList.length= " + this.folderList.length); +}; + +Data.folderUp = function () { + itm = this.folderList.pop(); +// Main.log("Data.folderUp: folderList.pop. this.folderList.length= " + this.folderList.length); + return itm; +// return itm.id; }; Data.isRootFolder = function() { +// Main.log("Data.isRootFolder: this.folderList.length= " + this.folderList.length); if (this.folderList.length == 1) return true; else return false; }; -Data.folderUp = function () { - itm = this.folderList.pop(); - return itm.id; -}; - Data.addItem = function(t_list, pyld) { this.assets.addChild(t_list, pyld, 0); }; @@ -48,21 +64,24 @@ Data.dumpFolderStruct = function(){ Main.log("---------- dumpFolderStruct Done -------"); }; -Data.createDomTree = function () { - - return this.assets.createDomTree(0); -}; - Data.createJQMDomTree = function () { return this.assets.createJQMDomTree(0); }; +Data.findEpgUpdateTime = function() { + return this.assets.findEpgUpdateTime(Display.GetEpochTime() + 10000, "", 0); + // min, guid, level +}; + +Data.updateEpg = function (guid, entry) { + this.assets.updateEpgEntry(guid, entry, 0); +}; + Data.getCurrentItem = function () { return this.folderList[this.folderList.length-1].item; }; -Data.getVideoCount = function() -{ +Data.getVideoCount = function() { return this.folderList[this.folderList.length-1].item.childs.length; }; @@ -84,7 +103,9 @@ Data.getNumString =function(num, fmt) { return res; }; - +Data.deleteElm = function (pos) { + Data.getCurrentItem().childs.remove(pos); +}; //----------------------------------------- function Item() { this.title = "root"; @@ -150,43 +171,71 @@ Item.prototype.addChild = function (key, pyld, level) { } }; -Item.prototype.print = function(level) { +Item.prototype.findEpgUpdateTime = function (min, guid, level) { var prefix= ""; for (var i = 0; i < level; i++) - prefix += " "; - + prefix += "-"; + for (var i = 0; i < this.childs.length; i++) { - Main.log(prefix + this.childs[i].title); if (this.childs[i].isFolder == true) { - Main.log(prefix+"Childs:"); - this.childs[i].print(level +1); + var res = this.childs[i].findEpgUpdateTime(min, guid, level+1); + min = res.min; + guid = res.guid; } - } + else { + var digi =new Date(this.childs[i].payload['start'] * 1000); + var str = digi.getHours() + ":" + digi.getMinutes(); + +// Main.log(prefix + "min= " + min+ " start= " + this.childs[i].payload['start'] + " (" + str+ ") title= " + this.childs[i].title); + + if ((this.childs[i].payload['start'] != 0) && ((this.childs[i].payload['start'] + this.childs[i].payload['dur']) < min)) { + min = this.childs[i].payload['start'] + this.childs[i].payload['dur']; + guid = this.childs[i].payload['guid'] ; +// Main.log(prefix + "New Min= " + min + " new id= " + guid + " title= " + this.childs[i].title); +// Main.logToServer(prefix + "New Min= " + min + " new id= " + guid + " title= " + this.childs[i].title); + } + } + } + + return { "min": min, "guid" : guid}; }; -Item.prototype.createDomTree = function(level) { +Item.prototype.updateEpgEntry = function (guid, entry, level) { var prefix= ""; for (var i = 0; i < level; i++) prefix += "-"; -// var mydiv = $('
' +prefix+this.title+ '
'); - var mydiv = $('