diff --git a/src/components/listview/listview.js b/src/components/listview/listview.js
index eaa526dbd4..b9f156e9a2 100644
--- a/src/components/listview/listview.js
+++ b/src/components/listview/listview.js
@@ -261,6 +261,10 @@ import ServerConnections from '../ServerConnections';
const imgUrl = options.imageSource === 'channel' ? getChannelImageUrl(item, downloadWidth) : getImageUrl(item, downloadWidth);
let imageClass = isLargeStyle ? 'listItemImage listItemImage-large' : 'listItemImage';
+ if (options.imageSource === 'channel') {
+ imageClass += ' listItemImage-channel';
+ }
+
if (isLargeStyle && layoutManager.tv) {
imageClass += ' listItemImage-large-tv';
}
@@ -428,6 +432,7 @@ import ServerConnections from '../ServerConnections';
container: false,
episodeTitle: false,
criticRating: false,
+ officialRating: false,
endsAt: false
});
diff --git a/src/components/listview/listview.scss b/src/components/listview/listview.scss
index 025ce596b3..2aafd936a2 100644
--- a/src/components/listview/listview.scss
+++ b/src/components/listview/listview.scss
@@ -153,6 +153,10 @@
margin-right: 0.75em;
}
+.listItemImage-channel {
+ background-size: contain;
+}
+
.listItemImageButton {
align-self: center;
justify-self: center;
@@ -316,3 +320,13 @@
.listItemCheckboxContainer {
width: auto !important;
}
+
+.listItemMediaInfo + .timerIndicator {
+ [dir="ltr"] & {
+ margin-left: 0.25em;
+ }
+
+ [dir="rtl"] & {
+ margin-right: 0.25em;
+ }
+}
diff --git a/src/components/mediainfo/mediainfo.js b/src/components/mediainfo/mediainfo.js
index b0201162f1..6b64059041 100644
--- a/src/components/mediainfo/mediainfo.js
+++ b/src/components/mediainfo/mediainfo.js
@@ -8,6 +8,7 @@ import 'material-design-icons-iconfont';
import './mediainfo.scss';
import '../guide/programs.scss';
import '../../elements/emby-button/emby-button';
+import * as userSettings from '../../scripts/settings/userSettings';
/* eslint-disable indent */
function getTimerIndicator(item) {
@@ -158,7 +159,7 @@ import '../../elements/emby-button/emby-button';
}
}
- if (item.StartDate && item.Type !== 'Program' && item.Type !== 'SeriesTimer') {
+ if (item.StartDate && item.Type !== 'Program' && item.Type !== 'SeriesTimer' && item.Type !== 'Timer') {
try {
date = datetime.parseISO8601Date(item.StartDate);
@@ -196,47 +197,52 @@ import '../../elements/emby-button/emby-button';
}
}
- if (item.Type === 'Program') {
+ if (item.Type === 'Program' || item.Type === 'Timer') {
+ let program = item;
+ if (item.Type === 'Timer') {
+ program = item.ProgramInfo;
+ }
+
if (options.programIndicator !== false) {
- if (item.IsLive) {
+ if (program.IsLive && userSettings.get('guide-indicator-live') === 'true') {
miscInfo.push({
html: `
+
diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js
index 71bc68b880..28b0424153 100644
--- a/src/controllers/itemDetails/index.js
+++ b/src/controllers/itemDetails/index.js
@@ -96,33 +96,26 @@ function getContextMenuOptions(item, user, button) {
};
}
-function getProgramScheduleHtml(items) {
- let html = '';
-
- html += '
';
- html += listView.getListViewHtml({
+function getProgramScheduleHtml(items, action = 'none') {
+ return listView.getListViewHtml({
items: items,
enableUserDataButtons: false,
image: true,
imageSource: 'channel',
showProgramDateTime: true,
showChannel: false,
- mediaInfo: false,
- action: 'none',
+ mediaInfo: true,
+ runtime: false,
+ action,
moreButton: false,
recordButton: false
});
-
- html += '
';
-
- return html;
}
function renderSeriesTimerSchedule(page, apiClient, seriesTimerId) {
apiClient.getLiveTvTimers({
UserId: apiClient.getCurrentUserId(),
ImageTypeLimit: 1,
- EnableImageTypes: 'Primary,Backdrop,Thumb',
SortBy: 'StartDate',
EnableTotalRecordCount: false,
EnableUserData: false,
@@ -134,7 +127,7 @@ function renderSeriesTimerSchedule(page, apiClient, seriesTimerId) {
}
const html = getProgramScheduleHtml(result.Items);
- const scheduleTab = page.querySelector('.seriesTimerSchedule');
+ const scheduleTab = page.querySelector('#seriesTimerSchedule');
scheduleTab.innerHTML = html;
imageLoader.lazyChildren(scheduleTab);
});
@@ -162,13 +155,13 @@ function renderSeriesTimerEditor(page, item, apiClient, user) {
});
});
- page.querySelector('.seriesTimerScheduleSection').classList.remove('hide');
+ page.querySelector('#seriesTimerScheduleSection').classList.remove('hide');
hideAll(page, 'btnCancelSeriesTimer', true);
renderSeriesTimerSchedule(page, apiClient, item.Id);
return;
}
- page.querySelector('.seriesTimerScheduleSection').classList.add('hide');
+ page.querySelector('#seriesTimerScheduleSection').classList.add('hide');
hideAll(page, 'btnCancelSeriesTimer');
}
@@ -1623,13 +1616,13 @@ function renderSeriesSchedule(page, item) {
const apiClient = ServerConnections.getApiClient(item.ServerId);
apiClient.getLiveTvPrograms({
UserId: apiClient.getCurrentUserId(),
+ ImageTypeLimit: 1,
HasAired: false,
SortBy: 'StartDate',
EnableTotalRecordCount: false,
- EnableImages: false,
- ImageTypeLimit: 0,
Limit: 50,
EnableUserData: false,
+ Fields: 'ChannelInfo,ChannelImage',
LibrarySeriesId: item.Id
}).then(function (result) {
if (result.Items.length) {
@@ -1638,17 +1631,11 @@ function renderSeriesSchedule(page, item) {
page.querySelector('#seriesScheduleSection').classList.add('hide');
}
- page.querySelector('#seriesScheduleList').innerHTML = listView.getListViewHtml({
- items: result.Items,
- enableUserDataButtons: false,
- showParentTitle: false,
- image: false,
- showProgramDateTime: true,
- mediaInfo: false,
- showTitle: true,
- moreButton: false,
- action: 'programdialog'
- });
+ const html = getProgramScheduleHtml(result.Items, 'programdialog');
+ const scheduleTab = page.querySelector('#seriesScheduleList');
+ scheduleTab.innerHTML = html;
+ imageLoader.lazyChildren(scheduleTab);
+
loading.hide();
});
}