-
${HeaderMediaInfo}
-
-
-
-
-
+
diff --git a/dashboard-ui/livetvseriestimer.html b/dashboard-ui/livetvseriestimer.html
deleted file mode 100644
index d3b7b92500..0000000000
--- a/dashboard-ui/livetvseriestimer.html
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
${HeaderSchedule}
-
-
-
-
-
-
\ No newline at end of file
diff --git a/dashboard-ui/scripts/itemdetailpage.js b/dashboard-ui/scripts/itemdetailpage.js
index 45a213d9f6..95724cba29 100644
--- a/dashboard-ui/scripts/itemdetailpage.js
+++ b/dashboard-ui/scripts/itemdetailpage.js
@@ -9,6 +9,10 @@
return ApiClient.getItem(Dashboard.getCurrentUserId(), id);
}
+ if (params.seriesTimerId) {
+ return ApiClient.getLiveTvSeriesTimer(params.seriesTimerId);
+ }
+
var name = params.genre;
if (name) {
@@ -108,6 +112,79 @@
});
}
+ function getProgramScheduleHtml(items, options) {
+
+ options = options || {};
+
+ var html = '';
+ html += '
';
+ html += listView.getListViewHtml({
+ items: items,
+ enableUserDataButtons: false,
+ image: false,
+ showProgramDateTime: true,
+ mediaInfo: false,
+ action: 'none',
+ moreButton: false,
+ recordButton: false
+ });
+
+ html += '
';
+
+ return html;
+ }
+
+ function renderSeriesTimerSchedule(page, seriesTimerId) {
+
+ ApiClient.getLiveTvTimers({
+ UserId: ApiClient.getCurrentUserId(),
+ ImageTypeLimit: 1,
+ EnableImageTypes: "Primary,Backdrop,Thumb",
+ SortBy: "StartDate",
+ EnableTotalRecordCount: false,
+ EnableUserData: false,
+ SeriesTimerId: seriesTimerId,
+ Fields: "ChannelInfo"
+
+ }).then(function (result) {
+
+ if (result.Items.length && result.Items[0].SeriesTimerId != seriesTimerId) {
+ result.Items = [];
+ }
+
+ var html = getProgramScheduleHtml(result.Items);
+
+ var scheduleTab = page.querySelector('.seriesTimerSchedule');
+ scheduleTab.innerHTML = html;
+
+ imageLoader.lazyChildren(scheduleTab);
+ });
+ }
+
+ function renderSeriesTimerEditor(page, item, user) {
+
+ if (item.Type !== 'SeriesTimer') {
+ return;
+ }
+
+ if (!user.Policy.EnableLiveTvManagement) {
+ page.querySelector('.seriesTimerScheduleSection').classList.add('hide');
+ page.querySelector('.btnCancelSeriesTimer').classList.add('hide');
+ return;
+ }
+
+ require(['seriesRecordingEditor'], function (seriesRecordingEditor) {
+ seriesRecordingEditor.embed(item, ApiClient.serverId(), {
+ context: page.querySelector('.seriesRecordingEditor')
+ });
+ });
+
+ page.querySelector('.seriesTimerScheduleSection').classList.remove('hide');
+ page.querySelector('.btnCancelSeriesTimer').classList.remove('hide');
+
+ renderSeriesTimerSchedule(page, item.Id);
+ }
+
function reloadFromItem(page, params, item) {
currentItem = item;
@@ -122,6 +199,8 @@
window.scrollTo(0, 0);
+ renderSeriesTimerEditor(page, item, user);
+
renderImage(page, item, user);
renderLogo(page, item, ApiClient);
@@ -1582,7 +1661,7 @@
for (var i = 0, length = userDataIcons.length; i < length; i++) {
- if (item.Type == 'Program') {
+ if (item.Type == 'Program' || item.Type == 'SeriesTimer') {
userDataIcons[i].classList.add('hide');
} else {
userDataIcons[i].classList.remove('hide');
@@ -1699,6 +1778,10 @@
function renderThemeMedia(page, item) {
+ if (item.Type === 'SeriesTimer' || item.Type === 'Timer' || item.Type === 'Genre' || item.Type === 'MusicGenre' || item.Type === 'GameGenre' || item.Type === 'Studio' || item.Type === 'Person') {
+ return;
+ }
+
ApiClient.getThemeMedia(Dashboard.getCurrentUserId(), item.Id, true).then(function (result) {
var themeSongs = result.ThemeSongsResult.OwnerId == item.Id ?
@@ -2177,6 +2260,16 @@
});
}
+ function onCancelSeriesTimerClick() {
+
+ require(['recordingHelper'], function (recordingHelper) {
+
+ recordingHelper.cancelSeriesTimerWithConfirmation(currentItem.Id, currentItem.ServerId).then(function () {
+ Dashboard.navigate('livetv.html');
+ });
+ });
+ }
+
return function (view, params) {
function onPlayTrailerClick() {
@@ -2208,6 +2301,11 @@
elems[i].addEventListener('click', onPlayTrailerClick);
}
+ elems = view.querySelectorAll('.btnCancelSeriesTimer');
+ for (i = 0, length = elems.length; i < length; i++) {
+ elems[i].addEventListener('click', onCancelSeriesTimerClick);
+ }
+
elems = view.querySelectorAll('.btnDeleteItem');
for (i = 0, length = elems.length; i < length; i++) {
elems[i].addEventListener('click', onDeleteClick);
diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js
index 15d8734716..7ebdde9bfd 100644
--- a/dashboard-ui/scripts/librarybrowser.js
+++ b/dashboard-ui/scripts/librarybrowser.js
@@ -252,7 +252,8 @@
var id = item.Id || item.ItemId;
if (item.Type == "SeriesTimer") {
- return "livetvseriestimer.html?id=" + id;
+ //return "livetvseriestimer.html?id=" + id;
+ return "itemdetails.html?seriesTimerId=" + id;
}
if (item.CollectionType == 'livetv') {
@@ -733,6 +734,10 @@
renderDetailImage: function (elem, item, editable, preferThumb, imageLoader, indicators) {
+ if (item.Type === 'SeriesTimer') {
+ editable = false;
+ }
+
var imageTags = item.ImageTags || {};
if (item.PrimaryImageTag) {
@@ -809,6 +814,14 @@
tag: item.SeriesPrimaryImageTag
});
}
+ else if (item.ParentPrimaryImageItemId && item.ParentPrimaryImageTag) {
+
+ url = ApiClient.getScaledImageUrl(item.ParentPrimaryImageItemId, {
+ type: "Primary",
+ maxHeight: imageHeight,
+ tag: item.ParentPrimaryImageTag
+ });
+ }
html += '
';
diff --git a/dashboard-ui/scripts/livetvseriestimer.js b/dashboard-ui/scripts/livetvseriestimer.js
deleted file mode 100644
index cf5edcdc9f..0000000000
--- a/dashboard-ui/scripts/livetvseriestimer.js
+++ /dev/null
@@ -1,83 +0,0 @@
-define(['datetime', 'dom', 'seriesRecordingEditor', 'listView', 'imageLoader', 'emby-itemscontainer'], function (datetime, dom, seriesRecordingEditor, listView, imageLoader) {
- 'use strict';
-
- return function (view, params) {
-
- function renderTimer(page, item) {
-
- page.querySelector('.itemName').innerHTML = item.Name;
-
- Dashboard.hideLoadingMsg();
- }
-
- function getProgramScheduleHtml(items, options) {
-
- options = options || {};
-
- var html = '';
- html += '
';
- html += listView.getListViewHtml({
- items: items,
- enableUserDataButtons: false,
- image: false,
- showProgramDateTime: true,
- mediaInfo: false,
- action: 'none',
- moreButton: false,
- recordButton: false
- });
-
- html += '
';
-
- return html;
- }
-
- function renderSchedule(page) {
-
- ApiClient.getLiveTvTimers({
- UserId: ApiClient.getCurrentUserId(),
- ImageTypeLimit: 1,
- EnableImageTypes: "Primary,Backdrop,Thumb",
- SortBy: "StartDate",
- EnableTotalRecordCount: false,
- EnableUserData: false,
- SeriesTimerId: params.id,
- Fields: "ChannelInfo"
-
- }).then(function (result) {
-
- if (result.Items.length && result.Items[0].SeriesTimerId != params.id) {
- result.Items = [];
- }
-
- var html = getProgramScheduleHtml(result.Items);
-
- var scheduleTab = page.querySelector('.scheduleTab');
- scheduleTab.innerHTML = html;
-
- imageLoader.lazyChildren(scheduleTab);
- });
- }
-
- function reload() {
-
- var id = params.id;
- Dashboard.showLoadingMsg();
-
- ApiClient.getLiveTvSeriesTimer(id).then(function (result) {
-
- renderTimer(view, result);
-
- });
-
- renderSchedule(view);
- }
-
- seriesRecordingEditor.embed(params.id, ApiClient.serverId(), {
- context: view.querySelector('.recordingEditor')
- });
-
- view.querySelector('.scheduleTab').addEventListener('timercancelled', reload);
- view.addEventListener('viewbeforeshow', reload);
- };
-});
\ No newline at end of file