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

define(["layoutManager", "cardBuilder", "apphost", "imageLoader", "loading", "scripts/livetvcomponents", "emby-button", "emby-itemscontainer"], function (layoutManager, cardBuilder, appHost, imageLoader, loading) {
2018-10-23 01:05:09 +03:00
"use strict";
function enableScrollX() {
return !layoutManager.desktop;
2018-10-23 01:05:09 +03:00
}
function renderRecordings(elem, recordings, cardOptions) {
if (recordings.length) {
elem.classList.remove("hide");
} else {
elem.classList.add("hide");
}
2018-10-23 01:05:09 +03:00
var recordingItems = elem.querySelector(".recordingItems");
if (enableScrollX()) {
recordingItems.classList.add("scrollX");
if (layoutManager.tv) {
recordingItems.classList.add("smoothScrollX");
}
recordingItems.classList.add("hiddenScrollX");
recordingItems.classList.remove("vertical-wrap");
} else {
recordingItems.classList.remove("scrollX");
recordingItems.classList.remove("smoothScrollX");
recordingItems.classList.remove("hiddenScrollX");
recordingItems.classList.add("vertical-wrap");
}
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,
shape: enableScrollX() ? "autooverflow" : "auto",
showTitle: true,
showParentTitle: true,
coverImage: true,
2018-10-23 01:05:09 +03:00
cardLayout: cardLayout,
centerText: !cardLayout,
allowBottomPadding: !enableScrollX(),
preferThumb: "auto"
}, cardOptions || {}));
imageLoader.lazyChildren(recordingItems);
2018-10-23 01:05:09 +03:00
}
function getBackdropShape() {
return enableScrollX() ? "overflowBackdrop" : "backdrop";
2018-10-23 01:05:09 +03:00
}
function renderActiveRecordings(context, promise) {
promise.then(function (result) {
2018-10-23 01:05:09 +03:00
renderRecordings(context.querySelector("#activeRecordings"), result.Items, {
shape: enableScrollX() ? "autooverflow" : "auto",
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) {
elem.classList.remove("hide");
} else {
elem.classList.add("hide");
}
elem.querySelector(".recordingItems").innerHTML = html;
imageLoader.lazyChildren(elem);
});
2018-10-23 01:05:09 +03:00
}
function renderUpcomingRecordings(context, promise) {
promise.then(function (result) {
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;
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,
2018-10-23 01:05:09 +03:00
Fields: "CanDelete,PrimaryImageAspectRatio,BasicSyncInfo",
EnableTotalRecordCount: false,
2018-10-23 01:05:09 +03:00
EnableImageTypes: "Primary,Thumb,Backdrop"
});
upcomingRecordingsPromise = ApiClient.getLiveTvTimers({
IsActive: false,
IsScheduled: true
});
};
self.renderTab = function () {
loading.show();
renderActiveRecordings(tabContent, activeRecordingsPromise);
renderUpcomingRecordings(tabContent, upcomingRecordingsPromise);
};
};
});