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

live tv guide improvements

This commit is contained in:
Luke Pulverenti 2015-04-12 12:46:29 -04:00
parent f41b336e87
commit f4866f7344
10 changed files with 1095 additions and 173 deletions

View file

@ -59,7 +59,7 @@
return deferred.promise();
}
function showBackdrop(type) {
function showBackdrop(type, parentId) {
var apiClient = ConnectionManager.currentApiClient();
@ -67,31 +67,29 @@
return;
}
getBackdropItemIds(apiClient, Dashboard.getCurrentUserId(),
type,
LibraryMenu.getTopParentId()).done(function (images) {
getBackdropItemIds(apiClient, Dashboard.getCurrentUserId(), type, parentId).done(function (images) {
if (images.length) {
if (images.length) {
var index = getRandom(0, images.length - 1);
var item = images[index];
var index = getRandom(0, images.length - 1);
var item = images[index];
var screenWidth = $(window).width();
var screenWidth = $(window).width();
var imgUrl = apiClient.getScaledImageUrl(item.id, {
type: "Backdrop",
tag: item.tag,
maxWidth: screenWidth,
quality: 80
});
var imgUrl = apiClient.getScaledImageUrl(item.id, {
type: "Backdrop",
tag: item.tag,
maxWidth: screenWidth,
quality: 80
});
getElement().css('backgroundImage', 'url(\'' + imgUrl + '\')');
getElement().css('backgroundImage', 'url(\'' + imgUrl + '\')');
} else {
} else {
clearBackdrop();
}
});
clearBackdrop();
}
});
}
function clearBackdrop() {
@ -154,17 +152,21 @@
var page = this;
if (!$(page).hasClass('staticBackdropPage')) {
var $page = $(page);
if ($(page).hasClass('backdropPage')) {
if (!$page.hasClass('staticBackdropPage')) {
if ($page.hasClass('backdropPage')) {
if (enabled()) {
var type = page.getAttribute('data-backdroptype');
showBackdrop(type);
var parentId = $page.hasClass('globalBackdropPage') ? '' : LibraryMenu.getTopParentId();
showBackdrop(type, parentId);
} else {
$(page).removeClass('backdropPage');
$page.removeClass('backdropPage');
clearBackdrop();
}
} else {

View file

@ -96,7 +96,7 @@
function loadlibraryButtons(elem, userId, index) {
getUserViews(userId).done(function (items) {
return getUserViews(userId).done(function (items) {
var html = '<br/>';
@ -172,7 +172,7 @@
UserId: userId
};
ApiClient.getJSON(ApiClient.getUrl("Channels/Items/Latest", options)).done(function (result) {
return ApiClient.getJSON(ApiClient.getUrl("Channels/Items/Latest", options)).done(function (result) {
var html = '';
@ -203,7 +203,7 @@
$(elem).removeClass('hiddenSectionOnMobile');
}
getUserViews(user.Id).done(function (items) {
return getUserViews(user.Id).done(function (items) {
var html = '';
@ -259,7 +259,7 @@
EnableImageTypes: "Primary,Backdrop,Banner,Thumb"
};
ApiClient.getItems(userId, options).done(function (result) {
return ApiClient.getItems(userId, options).done(function (result) {
var html = '';
@ -307,7 +307,7 @@
SupportsLatestItems: true
});
ApiClient.getJSON(ApiClient.getUrl("Channels", options)).done(function (result) {
return ApiClient.getJSON(ApiClient.getUrl("Channels", options)).done(function (result) {
var channels = result.Items;
@ -375,7 +375,7 @@
function loadLatestLiveTvRecordings(elem, userId, index) {
ApiClient.getLiveTvRecordings({
return ApiClient.getLiveTvRecordings({
userId: userId,
limit: 5,
@ -459,36 +459,40 @@
var elem = $('.section' + index, page);
if (section == 'latestmedia') {
Sections.loadRecentlyAdded(elem, user);
return Sections.loadRecentlyAdded(elem, user);
}
else if (section == 'librarytiles') {
Sections.loadLibraryTiles(elem, user, 'backdrop', index, false, showLibraryTileNames);
return Sections.loadLibraryTiles(elem, user, 'backdrop', index, false, showLibraryTileNames);
}
else if (section == 'smalllibrarytiles') {
Sections.loadLibraryTiles(elem, user, 'homePageSmallBackdrop', index, false, showLibraryTileNames);
return Sections.loadLibraryTiles(elem, user, 'homePageSmallBackdrop', index, false, showLibraryTileNames);
}
else if (section == 'smalllibrarytiles-automobile') {
Sections.loadLibraryTiles(elem, user, 'homePageSmallBackdrop', index, true, showLibraryTileNames);
return Sections.loadLibraryTiles(elem, user, 'homePageSmallBackdrop', index, true, showLibraryTileNames);
}
else if (section == 'librarytiles-automobile') {
Sections.loadLibraryTiles(elem, user, 'backdrop', index, true, showLibraryTileNames);
return Sections.loadLibraryTiles(elem, user, 'backdrop', index, true, showLibraryTileNames);
}
else if (section == 'librarybuttons') {
Sections.loadlibraryButtons(elem, userId, index);
return Sections.loadlibraryButtons(elem, userId, index);
}
else if (section == 'resume') {
Sections.loadResume(elem, userId);
return Sections.loadResume(elem, userId);
}
else if (section == 'latesttvrecordings') {
Sections.loadLatestLiveTvRecordings(elem, userId);
return Sections.loadLatestLiveTvRecordings(elem, userId);
}
else if (section == 'latestchannelmedia') {
Sections.loadLatestChannelMedia(elem, userId);
return Sections.loadLatestChannelMedia(elem, userId);
} else {
elem.empty();
var deferred = DeferredBuilder.Deferred();
deferred.resolve();
return deferred.promise();
}
}
@ -509,13 +513,17 @@
elem.html(html);
}
var promises = [];
for (i = 0, length = sectionCount; i < length; i++) {
loadSection(page, user, displayPreferences, i);
promises.push(loadSection(page, user, displayPreferences, i));
}
return $.when(promises);
}
var homePageDismissValue = '5';
var homePageDismissValue = '12';
var homePageTourKey = 'homePageTour';
function dismissWelcome(page, userId) {
@ -570,11 +578,25 @@
afterClose: function () {
dismissWelcome(page, userId);
$('.welcomeMessage', page).hide();
loadConfigureViewsWelcomeMessage(page, userId);
},
hideBarsDelay: 30000
});
}
function loadConfigureViewsWelcomeMessage(page, userId) {
$('.btnMyPreferences', page).attr('href', 'mypreferencesdisplay.html?userId=' + userId);
// Need the timeout because previous methods in the chain have popups that will be in the act of closing
setTimeout(function () {
$('.popupConfigureViews', page).popup('open');
}, 500);
}
$(document).on('pageinit', "#indexPage", function () {
var page = this;
@ -593,11 +615,12 @@
ApiClient.getDisplayPreferences('home', userId, 'webclient').done(function (result) {
showWelcomeIfNeeded(page, result);
Dashboard.getCurrentUser().done(function (user) {
loadSections(page, user, result);
loadSections(page, user, result).done(function () {
showWelcomeIfNeeded(page, result);
});
});
});

View file

@ -12,7 +12,7 @@
var channelQuery = {
StartIndex: 0,
Limit: 20,
Limit: 50,
EnableFavoriteSorting: true
};
var channelsPromise;
@ -90,12 +90,6 @@
channelQuery.StartIndex -= channelQuery.Limit;
reloadChannels(page);
});
$('.selectPageSize', page).on('change', function () {
channelQuery.Limit = parseInt(this.value);
channelQuery.StartIndex = 0;
reloadChannels(page);
});
});
}
@ -269,13 +263,13 @@
html += '<div class="guideProgramTime">';
if (program.IsLive) {
html += '<span class="liveTvProgram">'+Globalize.translate('LabelLiveProgram')+'&nbsp;&nbsp;</span>';
html += '<span class="liveTvProgram">' + Globalize.translate('LabelLiveProgram') + '&nbsp;&nbsp;</span>';
}
else if (program.IsPremiere) {
html += '<span class="premiereTvProgram">'+Globalize.translate('LabelPremiereProgram')+'&nbsp;&nbsp;</span>';
html += '<span class="premiereTvProgram">' + Globalize.translate('LabelPremiereProgram') + '&nbsp;&nbsp;</span>';
}
else if (program.IsSeries && !program.IsRepeat) {
html += '<span class="newTvProgram">'+Globalize.translate('LabelNewProgram')+'&nbsp;&nbsp;</span>';
html += '<span class="newTvProgram">' + Globalize.translate('LabelNewProgram') + '&nbsp;&nbsp;</span>';
}
html += LiveTvHelpers.getDisplayTime(program.StartDateLocal);
@ -365,12 +359,27 @@
renderPrograms(page, date, channels, programs);
}
var gridScrolling = false;
var headersScrolling = false;
function onProgramGridScroll(page, elem) {
var grid = $(elem);
if (!headersScrolling) {
gridScrolling = true;
var grid = $(elem);
grid.prev().scrollTop(grid.scrollTop());
$('.timeslotHeaders', page).scrollLeft(grid.scrollLeft());
$('.timeslotHeaders', page).scrollLeft(grid.scrollLeft());
gridScrolling = false;
}
}
function onTimeslotHeadersScroll(page, elem) {
if (!gridScrolling) {
headersScrolling = true;
elem = $(elem);
$('.programGrid', page).scrollLeft(elem.scrollLeft());
headersScrolling = false;
}
}
function changeDate(page, date) {
@ -385,6 +394,10 @@
gridLocalEndDateMs = clone.getTime() - 1;
reloadGuide(page);
var text = LibraryBrowser.getFutureDateText(date);
text = '<span class="currentDay">' + text.replace(' ', ' </span>');
$('.currentDate', page).html(text);
}
function setDateRange(page, guideInfo) {
@ -446,9 +459,21 @@
date.setTime(parseInt(this.value));
changeDate(page, date);
$('#popupConfig', page).popup('close');
});
if ($.browser.mobile) {
$('.tvGuide', page).addClass('mobileGuide');
} else {
$('.tvGuide', page).removeClass('mobileGuide');
$('.timeslotHeaders', page).on('scroll', function () {
onTimeslotHeadersScroll(page, this);
});
}
}).on('pagebeforeshow', "#liveTvGuidePage", function () {
var page = this;

View file

@ -118,10 +118,10 @@
SortOrder: "Ascending",
IncludeItemTypes: "Playlist",
Recursive: true,
ParentId: parentId,
Fields: "PrimaryImageAspectRatio,SortName,CumulativeRunTimeTicks,CanDelete,SyncInfo",
StartIndex: 0,
Limit: 9
Limit: 9,
MediaTypes: "Audio"
};
ApiClient.getItems(Dashboard.getCurrentUserId(), options).done(function (result) {