From 1044ac9a2151e887b4bc1995f74b04715a0348f8 Mon Sep 17 00:00:00 2001 From: horchi Date: Tue, 25 Jul 2017 15:54:58 +0200 Subject: 2017-07-25: version 1.1.120 (rechner)\n - added: show constable in eventdetail, if episodename is available\n - added: show constable extracol 1-3 in eventdetail \n - fixed: if recording view was reloaded the functionallity in bar was lost\n \n --- http/src/js/pages.records.js | 367 ++++++++++++++++++++++--------------------- 1 file changed, 184 insertions(+), 183 deletions(-) (limited to 'http/src/js/pages.records.js') diff --git a/http/src/js/pages.records.js b/http/src/js/pages.records.js index 640a27a..0aadd5d 100644 --- a/http/src/js/pages.records.js +++ b/http/src/js/pages.records.js @@ -1,180 +1,181 @@ -epgd.pages.records = { +epgd.pages.records = { render: function () { - if (!(epgd.login.rights & epgd.rights.umRecordings) == epgd.rights.umRecordings) return epgd.utils.popup(epgd.tr.error.forbidden, { title: epgd.tr.error.error }); + if (!(epgd.login.rights & epgd.rights.umRecordings) == epgd.rights.umRecordings) return epgd.utils.popup(epgd.tr.error.forbidden, { title: epgd.tr.error.error }); if (!epgd.profile.recordSubFolderSort) epgd.profile.recordSubFolderSort = 1; - $('#menu_records').addClass("menu-active"); - var tr = epgd.tr.pages.records; - + $('#menu_records').addClass("menu-active"); + var tr = epgd.tr.pages.records; + if (!this.$bar) { - this.$bar = $('
' - + '' - + epgd.pages.help.getIcon('recRefresh') + '   ' - + epgd.tr.pages.search.search + epgd.pages.help.getIcon('recSearch') + '' - + '' - + '' - + '' - + '' - + '0' - + '' - + '   ' - + tr.ddLabel + epgd.pages.help.getIcon('recDD') - + '
' - +''); - this.$trash = this.$bar.find('.i-trash').droppable({ - accept: ".rec", - hoverClass: "ui-state-hover", - tolerance: "pointer", - drop: function (ev, ui) { - var elem = ui.helper.context; - epgd.utils.confirm(epgd.tr.pages.records.deleteMessage.replace("$src$", elem.getAttribute('data-path')), function (ok) { - ok && epgd.pages.records.del(elem); - }); - return false; - } - }).click(function () { - var $recs = $("#records").find('.rec.selected'); - $recs.length && epgd.utils.confirm(epgd.tr.confirmDelete + ($recs.length > 1 ? '
' + $recs.length + epgd.tr.entries : ''), function (ok) { - ok && $recs.each(function () { - epgd.pages.records.del(this); - }); - }); - }); + this.$bar = $('
' + + '' + + epgd.pages.help.getIcon('recRefresh') + '   ' + + epgd.tr.pages.search.search + epgd.pages.help.getIcon('recSearch') + '' + + '' + + '' + + '' + + '' + + '0' + + '' + + '   ' + + tr.ddLabel + epgd.pages.help.getIcon('recDD') + + '
' + +''); + this.$trash = this.$bar.find('.i-trash'); this.curSearch = { pattern: '', searchValue: '', hits: $(), cur: 0, $count: this.$bar.find('#rSCnt') , fromStart: this.$bar.find('#rSVal').prev('button')[0] , toEnd: this.$bar.find('#rSVal').next('button')[0] } - epgd.pages.help.initButtons(this.$bar); - } - this.$bar.insertAfter(epgd.$menu); - epgd.$menu.checkMenuSize(); + } + this.$bar.insertAfter(epgd.$menu); + this.$trash.droppable({ + accept: ".rec", + hoverClass: "ui-state-hover", + tolerance: "pointer", + drop: function (ev, ui) { + var elem = ui.helper.context; + epgd.utils.confirm(epgd.tr.pages.records.deleteMessage.replace("$src$", elem.getAttribute('data-path')), function (ok) { + ok && epgd.pages.records.del(elem); + }); + return false; + } + }).click(function () { + var $recs = $("#records").find('.rec.selected'); + $recs.length && epgd.utils.confirm(epgd.tr.confirmDelete + ($recs.length > 1 ? '
' + $recs.length + epgd.tr.entries : ''), function (ok) { + ok && $recs.each(function () { + epgd.pages.records.del(this); + }); + }); + }); + epgd.pages.help.initButtons(this.$bar); + epgd.$menu.checkMenuSize(); $(window).bind("epgd_close.records", function () { epgd.pages.records.$bar.remove(); epgd.$menu.checkMenuSize(); $(window).unbind(".records"); - }); - epgd.$con.html('
'); + }); + epgd.$con.html('
'); epgd.utils.loader.process(function () { epgd.ajax({ url: epgd.login.url + "data/recordings", cache: false }, function (data) { - var recs = data.recordings, - rec, key, paths, t, p, i, - tree = { f: {}, r: [] }, - vdrs = {}, - vdr, v, - html = '', - min = ' ' + epgd.tr.minutes, - $divs, - sortFunc = epgd.profile.recordSubFolderSort == 6 ? function (a, b) { return a.starttime > b.starttime ? -1 : 1 } - : epgd.profile.recordSubFolderSort == 5 ? function (a, b) { return a.starttime > b.starttime ? 1 : -1 } - : epgd.profile.recordSubFolderSort == 4 ? function (a, b) { return a.path > b.path ? -1 : 1 } - : epgd.profile.recordSubFolderSort == 3 ? function (a, b) { return a.path > b.path ? 1 : -1 } - : epgd.profile.recordSubFolderSort == 2 ? function (a, b) { return a.tit > b.tit ? -1 : 1 } - : function (a, b) { return a.tit > b.tit ? 1 : -1 }; - + var recs = data.recordings, + rec, key, paths, t, p, i, + tree = { f: {}, r: [] }, + vdrs = {}, + vdr, v, + html = '', + min = ' ' + epgd.tr.minutes, + $divs, + sortFunc = epgd.profile.recordSubFolderSort == 6 ? function (a, b) { return a.starttime > b.starttime ? -1 : 1 } + : epgd.profile.recordSubFolderSort == 5 ? function (a, b) { return a.starttime > b.starttime ? 1 : -1 } + : epgd.profile.recordSubFolderSort == 4 ? function (a, b) { return a.path > b.path ? -1 : 1 } + : epgd.profile.recordSubFolderSort == 3 ? function (a, b) { return a.path > b.path ? 1 : -1 } + : epgd.profile.recordSubFolderSort == 2 ? function (a, b) { return a.tit > b.tit ? -1 : 1 } + : function (a, b) { return a.tit > b.tit ? 1 : -1 }; + for (vdr in epgd.vdrs.list) { - v = epgd.vdrs.list[vdr]; - if (!v.usecommonrecfolder) - vdrs[vdr] = { f: {}, r: [] }; + v = epgd.vdrs.list[vdr]; + if (!v.usecommonrecfolder) + vdrs[vdr] = { f: {}, r: [] }; html += '
VDR - ' + v.name + ': ' + v.videodir + ' - ' + parseInt(v.videofree / 1000, 10) + ' GB ' + tr.available + ' / ' + parseInt(v.videototal / 1000, 10) + ' GB
'; - } - if (!$('#dragdrop').parent().length) //.append(html) - return false; - epgd.$con.find('#records').before(html); - html = ''; - + } + if (!$('#dragdrop').parent().length) //.append(html) + return false; + epgd.$con.find('#records').before(html); + html = ''; + for (i in recs) { - rec = recs[i]; - t = vdrs[rec.vdruuid] || tree; - paths = rec.path.split('/'); - paths.pop(); + rec = recs[i]; + t = vdrs[rec.vdruuid] || tree; + paths = rec.path.split('/'); + paths.pop(); for (p = 0; p < paths.length; p++) { - key = paths[p].replace(/_/g, ' '); + key = paths[p].replace(/_/g, ' '); t = t.f[key] || (t.f[key] = { f: {}, r: [] }); - } + } t.r.push(rec); - } - + } + function checkTree(t) { - var hasContent = false, - subFolder, subTree; - t.cnt = 0; + var hasContent = false, + subFolder, subTree; + t.cnt = 0; for (subFolder in t.f) { - subTree = t.f[subFolder]; - if (subTree.r.length == 1) - t.r.push(subTree.r.pop()); - checkTree(subTree); + subTree = t.f[subFolder]; + if (subTree.r.length == 1) + t.r.push(subTree.r.pop()); + checkTree(subTree); if (checkTree(subTree)) { hasContent = true; t.cnt += subTree.cnt; - } else + } else delete t.f[subFolder]; - } - if (!hasContent) - delete t.f; - t.cnt += t.r.length; + } + if (!hasContent) + delete t.f; + t.cnt += t.r.length; return hasContent || t.r.length > 0; - } - + } + function renderTree(t) { Object.keys(t.f).sort().forEach(function (subFolder) { - var subTree = t.f[subFolder], - i; - html += subFolder ? '

(' + (subTree.cnt) + ')' + subFolder + '

' : '
'; - subTree.f && renderTree(subTree); + var subTree = t.f[subFolder], + i; + html += subFolder ? '

(' + (subTree.cnt) + ')' + subFolder + '

' : '
'; + subTree.f && renderTree(subTree); if (subTree.r.length) { for (i in subTree.r) { - rec = subTree.r[i]; - rec.tit = ((rec.name != subFolder ? rec.name : '') - + (subFolder != rec.title && (rec.title != rec.name) ? '
' + rec.title : '') - + (rec.shorttext && (rec.shorttext != rec.name) ? '' + rec.shorttext + '' : '')) || subFolder; - rec.html = '
' - + '' + epgd.utils.formatDateTime(rec.starttime) + '' + parseInt(rec.duration / 60, 10) + min + '' - + rec.tit + rec = subTree.r[i]; + rec.tit = ((rec.name != subFolder ? rec.name : '') + + (subFolder != rec.title && (rec.title != rec.name) ? '
' + rec.title : '') + + (rec.shorttext && (rec.shorttext != rec.name) ? '' + rec.shorttext + '' : '')) || subFolder; + rec.html = '
' + + '' + epgd.utils.formatDateTime(rec.starttime) + '' + parseInt(rec.duration / 60, 10) + min + '' + + rec.tit + '
'; }; subTree.r.sort(sortFunc); for (i in subTree.r) { html += subTree.r[i].html; } - } + } html += '
'; }); - } - - p = {}; - if (checkTree(tree)) - p[tr.commonRecFolder] = tree; + } + + p = {}; + if (checkTree(tree)) + p[tr.commonRecFolder] = tree; for (vdr in vdrs) { - t = vdrs[vdr]; + t = vdrs[vdr]; if (checkTree(t)) { p['VDR - ' + epgd.vdrs.list[vdr].name] = t; } - } - renderTree({ f: p }); - - $divs = epgd.$con.find('#records').html(html); + } + renderTree({ f: p }); + + $divs = epgd.$con.find('#records').html(html); if (!$divs.length) return false; $divs = $divs.click(epgd.pages.records.action).find('>div'); - if ($divs.length == 1) + if ($divs.length == 1) $divs.first().toggleClass('open'); - epgd.pages.records.$menu = $('
    ' - + '
  •   ' + epgd.tr.pages.eventDetail.title + '
  • ' - + '
  •   ' + epgd.tr.pages.timerList.folder + '
  • ' - + '
  •   ' + epgd.tr.pages.timerList.recordTime + '
  • ' + epgd.pages.records.$menu = $('
      ' + + '
    •   ' + epgd.tr.pages.eventDetail.title + '
    • ' + + '
    •   ' + epgd.tr.pages.timerList.folder + '
    • ' + + '
    •   ' + epgd.tr.pages.timerList.recordTime + '
    • ' + '
    ').hide().appendTo(epgd.$con); $('#dragdrop').change(); epgd.pages.records.curSearch.$recs = null; epgd.utils.loader.close(); }); },true); - }, + }, search: function (searchValue) { var cs = this.curSearch, - sLength, - $recs, + sLength, + $recs, pattern, fromStart = cs.fromStart.checked, toEnd = cs.toEnd.checked; @@ -219,7 +220,7 @@ epgd.pages.records = { this.searchMove(0); } else cs.$count.parent().hide(); - }, + }, searchMove: function (dir) { this.curSearch.cur += dir; var n = this.curSearch.hits[this.curSearch.cur]; @@ -232,15 +233,15 @@ epgd.pages.records = { $(n).css({ 'background-color': 'green' }); window.setTimeout(function () { $(n).css({ 'background-color': '' }); },1500); } - }, + }, action: function (ev) { - var elem = ev.target; // aktueller Sortiebutton, bzw. inital jquery-elment - if (elem.nodeName == 'MARK') - elem = elem.parentNode; + var elem = ev.target; // aktueller Sortiebutton, bzw. inital jquery-elment + if (elem.nodeName == 'MARK') + elem = elem.parentNode; if (elem.nodeName == 'M') { epgd.pages.records.$menu.show().position({ - my: "left top", - at: "left bottom", + my: "left top", + at: "left bottom", of: elem }).find('a').removeClass('ui-state-highlight'); epgd.pages.records.$menu.find('a[data-sort=' + (elem.curSort || epgd.profile.recordSubFolderSort) +']').addClass('ui-state-highlight'); @@ -255,23 +256,23 @@ epgd.pages.records = { epgd.pages.records.$menu.hide(); $(document).unbind('.recmenu'); }).bind("keyup.recmenu", function (e) { - if (e.keyCode == 27) + if (e.keyCode == 27) $(document).trigger("click.recmenu"); }); return false; - } - - if (elem.nodeName == 'I' || elem.nodeName == 'SPAN') - elem = elem.parentNode; + } + + if (elem.nodeName == 'I' || elem.nodeName == 'SPAN') + elem = elem.parentNode; if (elem.nodeName == 'B') { - elem = elem.parentNode; - if (!elem.recDetail) - elem.recDetail = new epgd.recordDetail(elem); + elem = elem.parentNode; + if (!elem.recDetail) + elem.recDetail = new epgd.recordDetail(elem); epgd.utils.loader.process(function () { elem.recDetail.render(); }); } else if (elem.nodeName == 'H4') { - elem = elem.parentNode; + elem = elem.parentNode; if (elem.nodeName == 'DIV' && elem.className.indexOf('folder') >= 0) { if (elem.className.indexOf('open') == -1) { if ($(window).width() < 500) { @@ -285,7 +286,7 @@ epgd.pages.records = { } } else $(elem).closest('.rec').toggleClass('selected'); - }, + }, dd: function (enable) { var $records = $("#records"), $recs = $records.find('.rec').has('.ui-draggable'); @@ -307,7 +308,7 @@ epgd.pages.records = { document.body.style.paddingTop = epgd.pages.records.$bar.height() + 'px'; document.body.scrollTop -= ev.pageY - $(ev.delegateTarget).closest('.folder').offset().top; /*$(document).bind("keyup.dd", [this], function (ev) { - if (ev.keyCode == 27) + if (ev.keyCode == 27) $.ui.ddmanager.dragStop($(ev.data[0]).draggable("instance"), ev); //$(ev.data[0]).draggable("cancel"); }); */ }, @@ -320,44 +321,44 @@ epgd.pages.records = { } else if ($recs.length){ $recs.draggable(enable ? "enable" : "disable"); } - }, + }, __dropSettings: { accept: ".rec", hoverClass: "ui-state-hover", tolerance: 'pointer', drop: function (ev, ui) { console.log("Dropped!", ev, ui); - var $elem = $(ev.target), - path = ''; + var $elem = $(ev.target), + path = ''; do { path = $elem.text().replace(/^\(.*\)/,'') + '/' + path; $elem = $elem.parent(); - } while (($elem = $elem.prevAll('h4')).length); + } while (($elem = $elem.prevAll('h4')).length); epgd.pages.records.move(ui.draggable.context, path.slice(path.indexOf('/', 2) + 1).replace(/ /g, '_'),ev.target.parentNode) - return false; + return false; } - }, - update: function () { - epgd.ajax({ url: epgd.login.url + "data/updaterecordings" }, function (data) { - epgd.utils.topInfo(epgd.tr.pages.records.refreshMessage.replace('$sec$', 5), { autoClose: 5000 }); - $(window).trigger("epgd_close.records"); - window.setTimeout(function () { epgd.pages.records.render(); }, 5000); - }); - }, - move: function (elem, path, folder) { - var curPath = elem.getAttribute('data-path').split('/'), - name = curPath.pop(), // 2016-08-21.11.18.59-0.rec entfernen - i, - endPos= 0; - curPath = curPath.join('/') + '/'; + }, + update: function () { + epgd.ajax({ url: epgd.login.url + "data/updaterecordings" }, function (data) { + epgd.utils.topInfo(epgd.tr.pages.records.refreshMessage.replace('$sec$', 5), { autoClose: 5000 }); + $(window).trigger("epgd_close.records"); + window.setTimeout(function () { epgd.pages.records.render(); }, 5000); + }); + }, + move: function (elem, path, folder) { + var curPath = elem.getAttribute('data-path').split('/'), + name = curPath.pop(), // 2016-08-21.11.18.59-0.rec entfernen + i, + endPos= 0; + curPath = curPath.join('/') + '/'; for (i = 0; i < Math.min(path.length, curPath.length) && path[i] == curPath[i]; i++) { if (path[i] == '/') endPos= i; - } - curPath = window.prompt(epgd.tr.pages.records.moveMessage.replace("$src$", curPath), path.concat(curPath.slice(endPos)).replace(/\/{2,}/g, '/').replace(/\/$/, '')); - if (curPath) { - epgd.ajax({ url: epgd.login.url + 'data/renamerecording?starttime=' + elem.getAttribute('data-start') + '&md5path=' + elem.getAttribute('data-md5') + '&owner=' + elem.getAttribute('data-owner') + '&name=' + curPath.replace(/\//g, '~'), async: true }, function (data) { - data = data.result; + } + curPath = window.prompt(epgd.tr.pages.records.moveMessage.replace("$src$", curPath), path.concat(curPath.slice(endPos)).replace(/\/{2,}/g, '/').replace(/\/$/, '')); + if (curPath) { + epgd.ajax({ url: epgd.login.url + 'data/renamerecording?starttime=' + elem.getAttribute('data-start') + '&md5path=' + elem.getAttribute('data-md5') + '&owner=' + elem.getAttribute('data-owner') + '&name=' + curPath.replace(/\//g, '~'), async: true }, function (data) { + data = data.result; if (data && data.state == 200) { var $elem = $(elem), $counter = $elem.prevAll('h4').find('span'), @@ -390,15 +391,15 @@ epgd.pages.records = { epgd.pages.records.sort(folder); epgd.utils.topInfo(epgd.tr.dataSaved); epgd.pages.records.__updateRec(elem); - } + } else { - epgd.utils.topInfo(data.message, { isError: 1 }); + epgd.utils.topInfo(data.message, { isError: 1 }); return false; - } - }); - } - return !!curPath; - }, + } + }); + } + return !!curPath; + }, __updateRec: function (elem, cnt) { epgd.ajax({ url: epgd.login.url + 'data/recording?starttime=' + elem.getAttribute('data-start') + '&path=' + elem.getAttribute('data-path') + '&owner=' + elem.getAttribute('data-owner') + '&'+cnt, async: true }, function (data) { $(elem).attr('data-md5', data.recording.md5path).draggable("enable").removeClass("ui-state-disabled"); @@ -411,20 +412,20 @@ epgd.pages.records = { window.setTimeout(epgd.pages.records.__updateRec, 3000,elem,++cnt); return true; }); - }, + }, del: function (elem) { epgd.ajax({ url: epgd.login.url + 'data/deleterecording?starttime=' + elem.getAttribute('data-start') + '&md5path=' + elem.getAttribute('data-md5') + '&owner=' + elem.getAttribute('data-owner'), async: true }, function (data) { - data = data.result; + data = data.result; if (data && data.state == 200) { - epgd.utils.topInfo(elem.getAttribute('data-path') + '
    ' + epgd.tr.dataSaved); + epgd.utils.topInfo(elem.getAttribute('data-path') + '
    ' + epgd.tr.dataSaved); $(elem).parents('.folder:not(:last)').find('>h4>span').each(function () { this.innerHTML = '(' + (parseInt(this.innerHTML.slice(1, -1), 10) - 1) + ')'; - }); - $(elem).remove(); - } else + }); + $(elem).remove(); + } else epgd.utils.topInfo(elem.getAttribute('data-path') + '
    ' + data.message, { isError: 1 }); - }); - }, + }); + }, sort: function (con, sort) { var $elems = $(con).find('>div.rec'), dir = sort % 2 ? 1 : -1, @@ -440,9 +441,9 @@ epgd.pages.records = { $(con).find('>div.folder').each(function () { epgd.pages.records.sort(this, sort); }); - } -}; -/* + } +}; +/* $.widget("ui.draggable", $.ui.draggable, { _mouseStart: function (ev) { if (this.options.beforeStart && this.options.beforeStart(ev) === false) -- cgit v1.2.3