summaryrefslogtreecommitdiff
path: root/vdr-smarttvweb/web
diff options
context:
space:
mode:
Diffstat (limited to 'vdr-smarttvweb/web')
-rwxr-xr-xvdr-smarttvweb/web/Data.js296
-rwxr-xr-xvdr-smarttvweb/web/Server.js180
-rwxr-xr-xvdr-smarttvweb/web/favicon.icobin1502 -> 0 bytes
-rwxr-xr-xvdr-smarttvweb/web/index.html104
4 files changed, 0 insertions, 580 deletions
diff --git a/vdr-smarttvweb/web/Data.js b/vdr-smarttvweb/web/Data.js
deleted file mode 100755
index 49e9026..0000000
--- a/vdr-smarttvweb/web/Data.js
+++ /dev/null
@@ -1,296 +0,0 @@
-//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});
-// Main.log("Data.reset: folderList.push. this.folderList.length= " + this.folderList.length);
-};
-
-Data.completed= function(sort) {
- if (sort == true)
- this.assets.sortPayload();
-
- this.folderList.push({item : this.assets, id: 0});
-// Main.log("Data.completed: folderList.push. this.folderList.length= " + this.folderList.length);
-// Main.log ("Data.completed()= " +this.folderList.length);
-
-};
-
-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.addItem = function(t_list, pyld) {
- this.assets.addChild(t_list, pyld, 0);
-};
-
-Data.dumpFolderStruct = function(){
- Main.log("---------- dumpFolderStruct ------------");
- this.assets.print(0);
- Main.log("---------- dumpFolderStruct Done -------");
-};
-
-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() {
- return this.folderList[this.folderList.length-1].item.childs.length;
-};
-
-Data.getNumString =function(num, fmt) {
- var res = "";
-
- if (num < 10) {
- for (var i = 1; i < fmt; i ++) {
- res += "0";
- };
- } else if (num < 100) {
- for (var i = 2; i < fmt; i ++) {
- res += "0";
- };
- }
-
- res = res + num;
-
- return res;
-};
-
-Data.deleteElm = function (pos) {
- Data.getCurrentItem().childs.remove(pos);
-};
-//-----------------------------------------
-function Item() {
- this.title = "root";
- this.isFolder = true;
- this.childs = [];
- this.payload = ""; // only set, if (isFolder == false)
-}
-
-Item.prototype.isFolder = function() {
- return this.isFolder;
-};
-
-Item.prototype.getTitle = function () {
- return this.title;
-};
-
-Item.prototype.getPayload = function () {
- if (this.isFolder == true) {
- Main.log("WARNING: getting payload on a folder title=" +this.title);
- }
- return this.payload;
-};
-
-Item.prototype.getItem = function (title) {
- for (var i = 0; i < this.childs.length; i++) {
- if (this.childs[i].title == title) {
- return this.childs[i];
- }
- }
- return 0;
-};
-
-Item.prototype.addChild = function (key, pyld, level) {
- if (key.length == 1) {
- var folder = new Item;
-// folder.title = pyld.startstr + " - " + key;
- folder.title = key[0];
- folder.payload = pyld;
- folder.isFolder = false;
- this.childs.push(folder);
-// this.titles.push({title: pyld.startstr + " - " + key , pyld : pyld});
- }
- else {
- if (level > 10) {
- Main.log(" too many levels");
- return;
- }
- var t = key.shift();
- var found = false;
- for (var i = 0; i < this.childs.length; i++) {
- if (this.childs[i].title == t) {
- this.childs[i].addChild(key, pyld, level +1);
- found = true;
- break;
- }
- }
- if (found == false) {
- var folder = new Item;
- folder.title = t;
- folder.addChild(key, pyld, level+1);
- this.childs.push(folder);
- }
- }
-};
-
-Item.prototype.findEpgUpdateTime = function (min, guid, level) {
- var prefix= "";
- for (var i = 0; i < level; i++)
- prefix += "-";
-
- for (var i = 0; i < this.childs.length; i++) {
- if (this.childs[i].isFolder == true) {
- 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.updateEpgEntry = function (guid, entry, level) {
- var prefix= "";
- for (var i = 0; i < level; i++)
- prefix += "-";
- for (var i = 0; i < this.childs.length; i++) {
- if (this.childs[i].isFolder == true) {
- var res = this.childs[i].updateEpgEntry(guid, entry, level+1);
- if (res == true)
- return true;
- }
- else {
- if (this.childs[i].payload['guid'] == guid) {
- Main.log("updateEpgEntry: Found " + this.childs[i].title);
- this.childs[i].payload.prog = entry.prog;
- this.childs[i].payload.desc = entry.desc;
- this.childs[i].payload.start = entry.start;
- this.childs[i].payload.dur = entry.dur;
- return true;
- }
- }
- }
- return false;
-};
-
-Item.prototype.print = function(level) {
- var prefix= "";
- for (var i = 0; i < level; i++)
- 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);
- }
- }
-};
-
-Item.prototype.createJQMDomTree = function(level) {
- var mydiv = $('<ul />');
-// if (level == 0) {
- mydiv.attr('data-role', 'listview');
- mydiv.attr('data-inset', 'true');
-// };
-//, id:'dyncreated'
- for (var i = 0; i < this.childs.length; i++) {
- if (this.childs[i].isFolder == true) {
- var myh = $('<div>', {text: this.childs[i].title});
- var myli = $('<li>');
- myli.append(myh);
- var mycount = $('<p>', {class: 'ui-li-count', text: this.childs[i].childs.length});
- myli.append(mycount);
- myli.append(this.childs[i].createJQMDomTree(level+1));
- mydiv.append(myli);
- }
- else {
- // Links
- var digi = new Date(this.childs[i].payload['start'] *1000);
- var mon = Data.getNumString ((digi.getMonth()+1), 2);
- var day = Data.getNumString (digi.getDate(), 2);
- var hour = Data.getNumString (digi.getHours(), 2);
- var min = Data.getNumString (digi.getMinutes(), 2);
-
- var d_str = mon + "/" + day + " " + hour + ":" + min;
- var mya = $('<a>', { text: d_str + " - " + this.childs[i].title,
- href: this.childs[i].payload['link'],
- rel: 'external'} );
- var myli = $('<li class="item"/>');
- myli.attr('data-icon', 'false');
- myli.attr('data-theme', 'c');
-
- myli.append(mya);
- mydiv.append(myli);
- }
- }
- return mydiv;
-};
-
-Item.prototype.sortPayload = function() {
- for (var i = 0; i < this.childs.length; i++) {
- if (this.childs[i].isFolder == true) {
- this.childs[i].sortPayload();
- }
- }
- this.childs.sort(function(a,b) {
- if (a.title == b.title) {
- return (b.payload.start - a.payload.start);
- }
- else {
- return ((a.title < b.title) ? -1 : 1);
- }
- });
-};
-
diff --git a/vdr-smarttvweb/web/Server.js b/vdr-smarttvweb/web/Server.js
deleted file mode 100755
index 1ab6d0a..0000000
--- a/vdr-smarttvweb/web/Server.js
+++ /dev/null
@@ -1,180 +0,0 @@
-var Server = {
- dataReceivedCallback : null,
- errorCallback : null,
- doSort : false,
- retries : 0,
-
- XHRObj : null
-};
-
-Server.init = function()
-{
- var success = true;
-
- if (this.XHRObj) {
- this.XHRObj.destroy();
- this.XHRObj = null;
- }
-
- return success;
-};
-
-Server.setSort = function (val) {
- this.doSort = val;
-};
-//---------------------------------------------
-Server.fetchVideoList = function(url) {
-
- $.ajax({
- url: url,
- type : "GET",
- success : function(data, status, XHR ) {
-// Main.log("Server.fetchVideoList Success Response - status= " + status + " mime= " + XHR.responseType + " data= "+ data);
-
- $(data).find("item").each(function () {
- var title = $(this).find('title').text();
-// var link = $(this).find('link').text();
- var link = $(this).find('enclosure').attr('url');
- var guid = $(this).find('guid').text();
- var programme = $(this).find('programme').text();
- var description = $(this).find('description').text();
- var startVal = parseInt($(this).find('start').text());
- var durVal = parseInt($(this).find('duration').text());
- var fps = parseFloat($(this).find('fps').text());
- var ispes = $(this).find('ispes').text();
- var isnew = $(this).find('isnew').text();
-// Main.log("Server.fetchVideoList: title= " + title + " start= " + startVal + " dur= " + durVal + " fps= " + fps);
-
-/* if (Main.state == Main.eLIVE) {
- Epg.guidTitle[guid] = title;
- }
-*/
- var title_list = title.split("~");
- Data.addItem( title_list, {link : link, prog: programme, desc: description, guid : guid, start: startVal,
- dur: durVal, ispes : ispes, isnew : isnew, fps : fps});
-
- }); // each
-
- Data.completed(Server.doSort);
-
- if (Server.dataReceivedCallback) {
- Server.dataReceivedCallback();
- }
-
- },
- error : function (jqXHR, status, error) {
-// Main.logToServer("Server.fetchVideoList Error Response - status= " + status + " error= "+ error);
-// Display.showPopup("Error with XML File: " + status);
- Server.retries ++;
- },
- parsererror : function () {
- // Main.logToServer("Server.fetchVideoList parserError " );
- // Display.showPopup("Error in XML File");
- Server.retries ++;
- if (Server.errorCallback != null) {
- Server.errorCallback("XmlError");
- }
-
- }
- });
-};
-
-
-//---------------------------------------------
-
-Server.updateVdrStatus = function (){
- Main.log ("get VDR Status");
- $.ajax({
- url: Config.serverUrl + "/vdrstatus.xml",
- type : "GET",
- success : function(data, status, XHR){
- var free = $(data).find('free').text() / 1024.0;
- var used = $(data).find('used').text() / 1024.0;
- var percent = $(data).find('percent').text();
-
- var unit = "GB";
- var free_str = free.toFixed(2);
- if (free_str.length > 6) {
- free = free / 1024.0;
- free_str = free.toFixed(2);
- unit = "TB";
- }
- $("#logoDisk").text("Free: " +free_str + unit);
- $("#selectDisk").text("Free: " +free_str + unit);
- },
- error: function(jqXHR, status, error){
- Main.log("VdrStatus: Error");
- }
- });
-}
-
-
-Server.getResume = function (guid) {
-// Main.log ("***** getResume *****");
- $.ajax({
- url: Config.serverUrl + "/getResume.xml",
- type : "POST",
- data : "filename:" + guid +"\n",
- success : function(data, status, XHR ) {
- Main.log("**** Resome Success Response - status= " + status + " mime= " + XHR.responseType + " data= "+ data);
-
- var resume_str = $(data).find("resume").text();
- if (resume_str != "") {
- var resume_val = parseFloat(resume_str);
- Main.log("resume val= " + resume_val );
- Main.logToServer("resume val= " + resume_val );
- Player.resumePos = resume_val;
- Player.playVideo( resume_val);
- }
- else {
- Display.hide();
- Display.showProgress();
- Player.playVideo(-1);
- }
-
- },
- error : function (jqXHR, status, error) {
- Main.log("**** Resome Error Response - status= " + status + " error= "+ error);
- Display.hide();
- Display.showProgress();
- Player.playVideo(-1);
- }
- });
-};
-
-Server.saveResume = function() {
- var msg = "";
- msg += "filename:" + Data.getCurrentItem().childs[Main.selectedVideo].payload.guid + "\n";
- msg += "resume:"+ (Player.curPlayTime/1000) + "\n" ;
-
- $.post(Config.serverUrl + "/setResume.xml", msg, function(data, textStatus, XHR) {
- Main.logToServer("SaveResume Status= " + XHR.status );
- }, "text");
-
-};
-
-Server.deleteRecording = function(guid) {
- Main.log("Server.deleteRecording guid=" + guid);
- Main.logToServer("Server.deleteRecording guid=" + guid);
- Notify.handlerShowNotify("Deleting...", false);
-
- $.ajax({
- url: Config.serverUrl + "/deleteRecording.xml?id=" +guid,
- type : "POST",
- success : function(data, status, XHR ) {
- Notify.showNotify("Deleted", true);
- Data.deleteElm(Main.selectedVideo);
- if (Main.selectedVideo >= Data.getVideoCount())
- Main.selectedVideo = Data.getVideoCount() -1;
- Server.updateVdrStatus();
- Display.setVideoList(Main.selectedVideo, (Main.selectedVideo - Display.currentWindow));
- Main.logToServer("Server.deleteRecording: Success" );
- },
- error : function (XHR, status, error) {
- Main.logToServer("Server.deleteRecording: Error" );
-
- // show popup
- Notify.showNotify("Error", true);
- }
- });
-};
diff --git a/vdr-smarttvweb/web/favicon.ico b/vdr-smarttvweb/web/favicon.ico
deleted file mode 100755
index 2236569..0000000
--- a/vdr-smarttvweb/web/favicon.ico
+++ /dev/null
Binary files differ
diff --git a/vdr-smarttvweb/web/index.html b/vdr-smarttvweb/web/index.html
deleted file mode 100755
index f396ed4..0000000
--- a/vdr-smarttvweb/web/index.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta name="viewport" content="width=device-width, initial-scale=1">
-<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
-<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
-<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
-<script language="javascript" type="text/javascript" src="Server.js"></script>
-<script language="javascript" type="text/javascript" src="Data.js"></script>
-<script>
-$(document).ready(function(){
- var state = 'rec'; // Rec
-
- Server.init();
-
- Server.dataReceivedCallback = function() {
- console.log("Loaded");
- $("#anchor").append(Data.createJQMDomTree()).trigger('create');
- $.mobile.loading('hide');
- //http://jquerymobile.com/
-
- // end of dataReceivedCallBack
- };
- Server.errorCallback = function (msg) {
- alert (msg);
- buttonHandler('rec');
- };
-
- $.mobile.loading('show');
- Server.setSort(true);
- Server.fetchVideoList("/recordings.xml?mode=nodesc");
-
- removeDomTree = function () {
- // parent should not be deleted.
- $("#anchor").children().remove();
- };
-
- buttonHandler = function(btn) {
- console.log("Click: " + btn);
- if (state == btn) {
- console.log("No Change");
- };
- $.mobile.loading('show');
- Data.reset();
- removeDomTree();
- switch (btn) {
- case 'rec':
- state = 'rec';
- $('#recbtn').addClass('ui-btn-active');
- $('#medbtn').removeClass('ui-btn-active');
- $('#chnbtn').removeClass('ui-btn-active');
- Server.setSort(true);
- Server.fetchVideoList("/recordings.xml?mode=nodesc");
- break;
- case 'med':
- state = 'med';
- $('#medbtn').addClass('ui-btn-active');
- $('#recbtn').removeClass('ui-btn-active');
- $('#chnbtn').removeClass('ui-btn-active');
- Server.setSort(true);
- Server.fetchVideoList("/media.xml");
- break;
- case 'chn':
- state = 'chn';
- $('#chnbtn').addClass('ui-btn-active');
- $('#medbtn').removeClass('ui-btn-active');
- $('#recbtn').removeClass('ui-btn-active');
- Server.setSort(false);
- Server.fetchVideoList("/channels.xml?mode=nodesc");
- break;
- };
- };
-
-});
-</script>
-<style type="text/css" >
-h2 { margin:1.2em 0 .4em 0; }
- }
-</style>
-</head>
-
-<body>
- <div data-role="page" class="type-interior">
-
- <div data-role="header" data-theme="b">
- <h1>Recordings</h1>
- </div> <!-- /header -->
-
- <div data-role="content">
- <div class="content-primary" >
-
- <div data-role="controlgroup" data-type="horizontal" data-mini="true">
- <a href="#" id="recbtn" data-role="button" data-transition="fade" class="ui-btn-active" onclick="return buttonHandler('rec')">Recordings</a>
- <a href="#" id="medbtn" data-role="button" data-transition="fade" onclick="return buttonHandler('med')">Media</a>
- <a href="#" id="chnbtn" data-role="button" data-transition="fade" onclick="return buttonHandler('chn')">Channels</a>
- </div>
-
- <div id="anchor"/>
- </div>
- </div>
-</div>
- </body>
-</html>
-