1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00
jellyfin-web/src/controllers/livetv/livetvschedule.js

124 lines
4.4 KiB
JavaScript
Raw Normal View History

2020-05-04 12:44:12 +02:00
define(['layoutManager', 'cardBuilder', 'apphost', 'imageLoader', 'loading', 'scripts/livetvcomponents', 'emby-button', 'emby-itemscontainer'], function (layoutManager, cardBuilder, appHost, imageLoader, loading) {
'use strict';
2018-10-23 01:05:09 +03:00
function enableScrollX() {
return !layoutManager.desktop;
2018-10-23 01:05:09 +03:00
}
function renderRecordings(elem, recordings, cardOptions) {
if (recordings.length) {
2020-05-04 12:44:12 +02:00
elem.classList.remove('hide');
} else {
2020-05-04 12:44:12 +02:00
elem.classList.add('hide');
}
2020-05-04 12:44:12 +02:00
var recordingItems = elem.querySelector('.recordingItems');
if (enableScrollX()) {
2020-05-04 12:44:12 +02:00
recordingItems.classList.add('scrollX');
if (layoutManager.tv) {
2020-05-04 12:44:12 +02:00
recordingItems.classList.add('smoothScrollX');
}
2020-05-04 12:44:12 +02:00
recordingItems.classList.add('hiddenScrollX');
recordingItems.classList.remove('vertical-wrap');
} else {
2020-05-04 12:44:12 +02:00
recordingItems.classList.remove('scrollX');
recordingItems.classList.remove('smoothScrollX');
recordingItems.classList.remove('hiddenScrollX');
recordingItems.classList.add('vertical-wrap');
}
2020-05-04 12:44:12 +02:00
var supportsImageAnalysis = appHost.supports('imageanalysis');
var cardLayout = appHost.preferVisualCards || supportsImageAnalysis;
cardLayout = false;
recordingItems.innerHTML = cardBuilder.getCardsHtml(Object.assign({
2018-10-23 01:05:09 +03:00
items: recordings,
2020-05-04 12:44:12 +02:00
shape: enableScrollX() ? 'autooverflow' : 'auto',
showTitle: true,
showParentTitle: true,
coverImage: true,
2018-10-23 01:05:09 +03:00
cardLayout: cardLayout,
centerText: !cardLayout,
allowBottomPadding: !enableScrollX(),
2020-05-04 12:44:12 +02:00
preferThumb: 'auto'
}, cardOptions || {}));
imageLoader.lazyChildren(recordingItems);
2018-10-23 01:05:09 +03:00
}
function getBackdropShape() {
2020-05-04 12:44:12 +02:00
return enableScrollX() ? 'overflowBackdrop' : 'backdrop';
2018-10-23 01:05:09 +03:00
}
function renderActiveRecordings(context, promise) {
promise.then(function (result) {
2020-05-04 12:44:12 +02:00
renderRecordings(context.querySelector('#activeRecordings'), result.Items, {
shape: enableScrollX() ? 'autooverflow' : 'auto',
2018-10-23 01:05:09 +03:00
defaultShape: getBackdropShape(),
showParentTitle: false,
showParentTitleOrTitle: true,
showTitle: false,
showAirTime: true,
showAirEndTime: true,
showChannelName: true,
coverImage: true,
overlayText: false,
overlayMoreButton: true
});
});
2018-10-23 01:05:09 +03:00
}
function renderTimers(context, timers, options) {
LiveTvHelpers.getTimersHtml(timers, options).then(function (html) {
2018-10-23 01:05:09 +03:00
var elem = context;
if (html) {
2020-05-04 12:44:12 +02:00
elem.classList.remove('hide');
} else {
2020-05-04 12:44:12 +02:00
elem.classList.add('hide');
}
2020-05-04 12:44:12 +02:00
elem.querySelector('.recordingItems').innerHTML = html;
imageLoader.lazyChildren(elem);
});
2018-10-23 01:05:09 +03:00
}
function renderUpcomingRecordings(context, promise) {
promise.then(function (result) {
2020-05-04 12:44:12 +02:00
renderTimers(context.querySelector('#upcomingRecordings'), result.Items);
loading.hide();
});
2018-10-23 01:05:09 +03:00
}
return function (view, params, tabContent) {
var activeRecordingsPromise;
var upcomingRecordingsPromise;
var self = this;
2020-05-04 12:44:12 +02:00
tabContent.querySelector('#upcomingRecordings .recordingItems').addEventListener('timercancelled', function () {
self.preRender();
self.renderTab();
});
self.preRender = function () {
2018-10-23 01:05:09 +03:00
activeRecordingsPromise = ApiClient.getLiveTvRecordings({
UserId: Dashboard.getCurrentUserId(),
IsInProgress: true,
2020-05-04 12:44:12 +02:00
Fields: 'CanDelete,PrimaryImageAspectRatio,BasicSyncInfo',
EnableTotalRecordCount: false,
2020-05-04 12:44:12 +02:00
EnableImageTypes: 'Primary,Thumb,Backdrop'
});
upcomingRecordingsPromise = ApiClient.getLiveTvTimers({
IsActive: false,
IsScheduled: true
});
};
self.renderTab = function () {
loading.show();
renderActiveRecordings(tabContent, activeRecordingsPromise);
renderUpcomingRecordings(tabContent, upcomingRecordingsPromise);
};
};
});