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

133 lines
4.1 KiB
JavaScript
Raw Normal View History

2016-10-11 02:46:59 -04:00
define(['cardBuilder', 'scripts/livetvcomponents', 'emby-button', 'emby-itemscontainer'], function (cardBuilder) {
function enableScrollX() {
return browserInfo.mobile && AppInfo.enableAppLayouts;
}
function renderRecordings(elem, recordings, cardOptions) {
if (recordings.length) {
elem.classList.remove('hide');
} else {
elem.classList.add('hide');
}
var recordingItems = elem.querySelector('.recordingItems');
if (enableScrollX()) {
recordingItems.classList.add('hiddenScrollX');
recordingItems.classList.remove('vertical-wrap');
} else {
recordingItems.classList.remove('hiddenScrollX');
recordingItems.classList.add('vertical-wrap');
}
recordingItems.innerHTML = cardBuilder.getCardsHtml(Object.assign({
items: recordings,
shape: (enableScrollX() ? 'autooverflow' : 'auto'),
showTitle: true,
showParentTitle: true,
coverImage: true,
lazy: true,
cardLayout: true,
vibrant: true,
allowBottomPadding: !enableScrollX(),
preferThumb: 'auto'
}, cardOptions || {}));
ImageLoader.lazyChildren(recordingItems);
}
function getBackdropShape() {
return enableScrollX() ? 'overflowBackdrop' : 'backdrop';
}
2016-09-04 11:01:31 -04:00
2016-10-03 02:28:45 -04:00
function renderActiveRecordings(context, promise) {
2016-10-03 02:28:45 -04:00
promise.then(function (result) {
// The IsActive param is new, so handle older servers that don't support it
if (result.Items.length && result.Items[0].Status != 'InProgress') {
result.Items = [];
}
2016-10-11 02:46:59 -04:00
renderRecordings(context.querySelector('#activeRecordings'), result.Items, {
shape: getBackdropShape(),
showParentTitle: false,
showTitle: true,
showAirTime: true,
showAirEndTime: true,
showChannelName: true,
cardLayout: true,
vibrant: true,
preferThumb: true,
coverImage: true,
overlayText: false
});
});
}
2016-10-03 02:28:45 -04:00
2016-09-04 11:01:31 -04:00
function renderTimers(context, timers, options) {
LiveTvHelpers.getTimersHtml(timers, options).then(function (html) {
var elem = context;
if (html) {
elem.classList.remove('hide');
} else {
elem.classList.add('hide');
}
elem.querySelector('.recordingItems').innerHTML = html;
ImageLoader.lazyChildren(elem);
});
}
2016-10-03 02:28:45 -04:00
function renderUpcomingRecordings(context, promise) {
2016-09-04 11:01:31 -04:00
2016-10-03 02:28:45 -04:00
promise.then(function (result) {
2016-09-04 11:01:31 -04:00
renderTimers(context.querySelector('#upcomingRecordings'), result.Items);
Dashboard.hideLoadingMsg();
});
}
return function (view, params, tabContent) {
var self = this;
2016-10-03 02:28:45 -04:00
var activeRecordingsPromise;
var upcomingRecordingsPromise;
2016-09-04 11:01:31 -04:00
2016-09-04 13:52:43 -04:00
tabContent.querySelector('#upcomingRecordings .recordingItems').addEventListener('timercancelled', function () {
2016-10-03 02:28:45 -04:00
self.preRender();
self.renderTab();
2016-09-04 11:01:31 -04:00
});
2016-10-03 02:28:45 -04:00
self.preRender = function () {
2016-10-11 02:46:59 -04:00
activeRecordingsPromise = ApiClient.getLiveTvRecordings({
UserId: Dashboard.getCurrentUserId(),
IsInProgress: true,
Fields: 'CanDelete,PrimaryImageAspectRatio,BasicSyncInfo',
EnableTotalRecordCount: false,
EnableImageTypes: "Primary,Thumb,Backdrop"
2016-10-03 02:28:45 -04:00
});
upcomingRecordingsPromise = ApiClient.getLiveTvTimers({
2016-10-04 01:15:39 -04:00
IsActive: false,
IsScheduled: true
2016-10-03 02:28:45 -04:00
});
};
2016-09-04 11:01:31 -04:00
self.renderTab = function () {
2016-10-03 02:28:45 -04:00
Dashboard.showLoadingMsg();
renderActiveRecordings(tabContent, activeRecordingsPromise);
renderUpcomingRecordings(tabContent, upcomingRecordingsPromise);
2016-09-04 11:01:31 -04:00
};
};
});