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

Merge remote-tracking branch 'upstream/master' into hoverbuttons

This commit is contained in:
ferferga 2020-03-04 17:32:55 +01:00
commit 2915de6e0e
10 changed files with 139 additions and 77 deletions

View file

@ -29,7 +29,7 @@ h3 {
} }
.layout-tv { .layout-tv {
font-size: 2.5vh; font-size: 130%;
} }
.layout-mobile { .layout-mobile {

View file

@ -439,10 +439,46 @@
background-size: cover; background-size: cover;
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center; background-position: center;
background-attachment: fixed;
height: 50vh; height: 50vh;
position: relative; position: relative;
} }
.layout-mobile .itemBackdrop {
background-attachment: scroll;
}
.layout-desktop .itemBackdrop::after,
.layout-tv .itemBackdrop::after {
content: "";
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.65);
display: block;
}
.layout-desktop .noBackdrop .itemBackdrop,
.layout-tv .noBackdrop .itemBackdrop {
display: none;
}
.detailPageContent {
display: flex;
flex-direction: column;
padding-left: 2%;
padding-right: 2%;
}
.layout-desktop .noBackdrop .detailPageContent,
.layout-tv .noBackdrop .detailPageContent {
margin-top: 2.5em;
}
.layout-desktop .noBackdrop .detailImageContainer img,
.layout-tv .noBackdrop .detailImageContainer img {
margin-top: 0;
}
.personBackdrop { .personBackdrop {
background-size: contain; background-size: contain;
} }
@ -503,14 +539,13 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
text-align: center;
} }
.detailPagePrimaryContainer { .detailPagePrimaryContainer {
display: flex; display: flex;
align-items: center; align-items: center;
align-content: center; align-content: center;
position: sticky;
top: 3.85em;
z-index: 2; z-index: 2;
} }
@ -520,13 +555,21 @@
top: 0; top: 0;
} }
.layout-tv .detailPagePrimaryContainer { .layout-tv #itemDetailPage:not(.noBackdrop) .detailPagePrimaryContainer,
.layout-desktop #itemDetailPage:not(.noBackdrop) .detailPagePrimaryContainer {
position: relative; position: relative;
top: 0; top: 0;
padding-left: 32.45vw;
} }
.detailSticky { .layout-desktop .detailSticky,
background-color: #101010; .layout-tv .detailSticky {
margin-top: -7.2em;
}
.layout-desktop .noBackdrop .detailSticky,
.layout-tv .noBackdrop .detailSticky {
margin-top: 0;
} }
.infoWrapper { .infoWrapper {
@ -548,23 +591,17 @@
margin: 1.25em 0; margin: 1.25em 0;
} }
.detailPageContent {
display: flex;
flex-direction: column;
padding-left: 2%;
padding-right: 2%;
}
.detailImageContainer { .detailImageContainer {
position: sticky; position: relative;
top: 25%; margin-top: -25vh;
float: left; float: left;
width: 22.786458333333332vw; width: 25vw;
z-index: 3;
} }
.layout-mobile .detailImageContainer, .layout-desktop .noBackdrop .detailImageContainer,
.layout-tv .detailImageContainer { .layout-tv .noBackdrop .detailImageContainer {
position: relative; margin-top: 0;
} }
.detailPagePrimaryContent { .detailPagePrimaryContent {
@ -572,15 +609,19 @@
} }
.detailLogo { .detailLogo {
width: 25em; width: 67.25vw;
height: 9.375em; height: 14.5vh;
position: absolute; position: absolute;
top: 14.5%; top: 15vh;
right: 10.5%; right: 0;
-webkit-background-size: contain; -webkit-background-size: contain;
background-size: contain; background-size: contain;
} }
.noBackdrop .detailLogo {
display: none;
}
@media all and (max-width: 87.5em) { @media all and (max-width: 87.5em) {
.detailLogo { .detailLogo {
right: 5%; right: 5%;
@ -607,8 +648,8 @@
.itemDetailImage { .itemDetailImage {
width: 100% !important; width: 100% !important;
box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); -webkit-box-shadow: 0 0.1em 0.5em 0 rgba(0, 0, 0, 0.75);
-webkit-box-shadow: 0 0.0725em 0.29em 0 rgba(0, 0, 0, 0.37); box-shadow: 0 0.1em 0.5em 0 rgba(0, 0, 0, 0.75);
} }
div.itemDetailGalleryLink.defaultCardBackground { div.itemDetailGalleryLink.defaultCardBackground {
@ -635,6 +676,16 @@ div.itemDetailGalleryLink.defaultCardBackground {
position: relative; position: relative;
} }
.layout-desktop .detailPageWrapperContainer,
.layout-tv .detailPageWrapperContainer {
margin-top: 7.2em;
}
.layout-tv #itemDetailPage:not(.noBackdrop) .detailPagePrimaryContainer,
.layout-desktop #itemDetailPage:not(.noBackdrop) .detailPagePrimaryContainer {
padding-left: 3.3%;
}
.btnPlaySimple { .btnPlaySimple {
display: none !important; display: none !important;
} }
@ -849,6 +900,11 @@ div.itemDetailGalleryLink.defaultCardBackground {
border-collapse: collapse; border-collapse: collapse;
} }
.layout-desktop .noBackdrop .detailPageWrapperContainer,
.layout-tv .noBackdrop .detailPageWrapperContainer {
margin-top: 3.8em;
}
.mediaInfoStream { .mediaInfoStream {
margin: 0 3em 0 0; margin: 0 3em 0 0;
display: inline-block; display: inline-block;

View file

@ -15,6 +15,7 @@ define(["jQuery", "loading", "globalize", "dom", "libraryMenu"], function ($, lo
page.querySelector("#selectEncoderPreset").value = config.EncoderPreset || ""; page.querySelector("#selectEncoderPreset").value = config.EncoderPreset || "";
page.querySelector("#txtH264Crf").value = config.H264Crf || ""; page.querySelector("#txtH264Crf").value = config.H264Crf || "";
page.querySelector("#chkEnableSubtitleExtraction").checked = config.EnableSubtitleExtraction || false; page.querySelector("#chkEnableSubtitleExtraction").checked = config.EnableSubtitleExtraction || false;
page.querySelector("#chkEnableThrottling").checked = config.EnableThrottling || false;
page.querySelector("#selectVideoDecoder").dispatchEvent(new CustomEvent("change", { page.querySelector("#selectVideoDecoder").dispatchEvent(new CustomEvent("change", {
bubbles: true bubbles: true
})); }));
@ -58,6 +59,7 @@ define(["jQuery", "loading", "globalize", "dom", "libraryMenu"], function ($, lo
config.EncoderPreset = form.querySelector("#selectEncoderPreset").value; config.EncoderPreset = form.querySelector("#selectEncoderPreset").value;
config.H264Crf = parseInt(form.querySelector("#txtH264Crf").value || "0"); config.H264Crf = parseInt(form.querySelector("#txtH264Crf").value || "0");
config.EnableSubtitleExtraction = form.querySelector("#chkEnableSubtitleExtraction").checked; config.EnableSubtitleExtraction = form.querySelector("#chkEnableSubtitleExtraction").checked;
config.EnableThrottling = form.querySelector("#chkEnableThrottling").checked;
config.HardwareDecodingCodecs = Array.prototype.map.call(Array.prototype.filter.call(form.querySelectorAll(".chkDecodeCodec"), function (c) { config.HardwareDecodingCodecs = Array.prototype.map.call(Array.prototype.filter.call(form.querySelectorAll(".chkDecodeCodec"), function (c) {
return c.checked; return c.checked;
}), function (c) { }), function (c) {

View file

@ -1,4 +1,4 @@
define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuilder", "datetime", "mediaInfo", "backdrop", "listView", "itemContextMenu", "itemHelper", "dom", "indicators", "apphost", "imageLoader", "libraryMenu", "globalize", "browser", "events", "scrollHelper", "playbackManager", "libraryBrowser", "scrollStyles", "emby-itemscontainer", "emby-checkbox", "emby-button", "emby-playstatebutton", "emby-ratingbutton", "emby-scroller", "emby-select"], function (loading, appRouter, layoutManager, connectionManager, cardBuilder, datetime, mediaInfo, backdrop, listView, itemContextMenu, itemHelper, dom, indicators, appHost, imageLoader, libraryMenu, globalize, browser, events, scrollHelper, playbackManager, libraryBrowser) { define(["loading", "appRouter", "layoutManager", "connectionManager", "userSettings", "cardBuilder", "datetime", "mediaInfo", "backdrop", "listView", "itemContextMenu", "itemHelper", "dom", "indicators", "imageLoader", "libraryMenu", "globalize", "browser", "events", "playbackManager", "scrollStyles", "emby-itemscontainer", "emby-checkbox", "emby-button", "emby-playstatebutton", "emby-ratingbutton", "emby-scroller", "emby-select"], function (loading, appRouter, layoutManager, connectionManager, userSettings, cardBuilder, datetime, mediaInfo, backdrop, listView, itemContextMenu, itemHelper, dom, indicators, imageLoader, libraryMenu, globalize, browser, events, playbackManager) {
"use strict"; "use strict";
function getPromise(apiClient, params) { function getPromise(apiClient, params) {
@ -60,8 +60,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
return options; return options;
} }
function getProgramScheduleHtml(items, options) { function getProgramScheduleHtml(items) {
options = options || {};
var html = ""; var html = "";
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-list" data-contextmenu="false">'; html += '<div is="emby-itemscontainer" class="itemsContainer vertical-list" data-contextmenu="false">';
html += listView.getListViewHtml({ html += listView.getListViewHtml({
@ -445,7 +444,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
} }
} }
function renderBackdrop(page, item, apiClient) { function renderBackdrop(item) {
if (dom.getWindowSize().innerWidth >= 1000) { if (dom.getWindowSize().innerWidth >= 1000) {
backdrop.setBackdrops([item]); backdrop.setBackdrops([item]);
} else { } else {
@ -455,7 +454,6 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
function renderDetailPageBackdrop(page, item, apiClient) { function renderDetailPageBackdrop(page, item, apiClient) {
var imgUrl; var imgUrl;
var screenWidth = screen.availWidth;
var hasbackdrop = false; var hasbackdrop = false;
var itemBackdropElement = page.querySelector("#itemBackdrop"); var itemBackdropElement = page.querySelector("#itemBackdrop");
var usePrimaryImage = item.MediaType === "Video" && item.Type !== "Movie" && item.Type !== "Trailer" || var usePrimaryImage = item.MediaType === "Video" && item.Type !== "Movie" && item.Type !== "Trailer" ||
@ -464,13 +462,17 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
item.Type === "MusicArtist" || item.Type === "MusicArtist" ||
item.Type === "Person"; item.Type === "Person";
if (!layoutManager.mobile && !userSettings.enableBackdrops()) {
return false;
}
if ("Program" === item.Type && item.ImageTags && item.ImageTags.Thumb) { if ("Program" === item.Type && item.ImageTags && item.ImageTags.Thumb) {
imgUrl = apiClient.getScaledImageUrl(item.Id, { imgUrl = apiClient.getScaledImageUrl(item.Id, {
type: "Thumb", type: "Thumb",
index: 0, index: 0,
tag: item.ImageTags.Thumb tag: item.ImageTags.Thumb
}); });
itemBackdropElement.classList.remove("noBackdrop"); page.classList.remove("noBackdrop");
imageLoader.lazyImage(itemBackdropElement, imgUrl, false); imageLoader.lazyImage(itemBackdropElement, imgUrl, false);
hasbackdrop = true; hasbackdrop = true;
} else if (usePrimaryImage && item.ImageTags && item.ImageTags.Primary) { } else if (usePrimaryImage && item.ImageTags && item.ImageTags.Primary) {
@ -479,7 +481,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
index: 0, index: 0,
tag: item.ImageTags.Primary tag: item.ImageTags.Primary
}); });
itemBackdropElement.classList.remove("noBackdrop"); page.classList.remove("noBackdrop");
imageLoader.lazyImage(itemBackdropElement, imgUrl, false); imageLoader.lazyImage(itemBackdropElement, imgUrl, false);
hasbackdrop = true; hasbackdrop = true;
} else if (item.BackdropImageTags && item.BackdropImageTags.length) { } else if (item.BackdropImageTags && item.BackdropImageTags.length) {
@ -488,7 +490,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
index: 0, index: 0,
tag: item.BackdropImageTags[0] tag: item.BackdropImageTags[0]
}); });
itemBackdropElement.classList.remove("noBackdrop"); page.classList.remove("noBackdrop");
imageLoader.lazyImage(itemBackdropElement, imgUrl, false); imageLoader.lazyImage(itemBackdropElement, imgUrl, false);
hasbackdrop = true; hasbackdrop = true;
} else if (item.ParentBackdropItemId && item.ParentBackdropImageTags && item.ParentBackdropImageTags.length) { } else if (item.ParentBackdropItemId && item.ParentBackdropImageTags && item.ParentBackdropImageTags.length) {
@ -497,7 +499,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
index: 0, index: 0,
tag: item.ParentBackdropImageTags[0] tag: item.ParentBackdropImageTags[0]
}); });
itemBackdropElement.classList.remove("noBackdrop"); page.classList.remove("noBackdrop");
imageLoader.lazyImage(itemBackdropElement, imgUrl, false); imageLoader.lazyImage(itemBackdropElement, imgUrl, false);
hasbackdrop = true; hasbackdrop = true;
} else if (item.ImageTags && item.ImageTags.Thumb) { } else if (item.ImageTags && item.ImageTags.Thumb) {
@ -506,15 +508,16 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
index: 0, index: 0,
tag: item.ImageTags.Thumb tag: item.ImageTags.Thumb
}); });
itemBackdropElement.classList.remove("noBackdrop"); page.classList.remove("noBackdrop");
imageLoader.lazyImage(itemBackdropElement, imgUrl, false); imageLoader.lazyImage(itemBackdropElement, imgUrl, false);
hasbackdrop = true; hasbackdrop = true;
} else { } else {
itemBackdropElement.classList.add("noBackdrop");
itemBackdropElement.style.backgroundImage = ""; itemBackdropElement.style.backgroundImage = "";
} }
if ("Person" === item.Type) { if ("Person" === item.Type) {
// FIXME: This hides the backdrop on all persons to fix a margin issue. Ideally, a proper fix should be made.
page.classList.add('noBackdrop');
itemBackdropElement.classList.add("personBackdrop"); itemBackdropElement.classList.add("personBackdrop");
} else { } else {
itemBackdropElement.classList.remove("personBackdrop"); itemBackdropElement.classList.remove("personBackdrop");
@ -526,6 +529,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
function reloadFromItem(instance, page, params, item, user) { function reloadFromItem(instance, page, params, item, user) {
var context = params.context; var context = params.context;
page.querySelector(".detailPagePrimaryContainer").classList.add("detailSticky"); page.querySelector(".detailPagePrimaryContainer").classList.add("detailSticky");
renderName(item, page.querySelector(".nameContainer"), false, context); renderName(item, page.querySelector(".nameContainer"), false, context);
var apiClient = connectionManager.getApiClient(item.ServerId); var apiClient = connectionManager.getApiClient(item.ServerId);
renderSeriesTimerEditor(page, item, apiClient, user); renderSeriesTimerEditor(page, item, apiClient, user);
@ -536,7 +540,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
setInitialCollapsibleState(page, item, apiClient, context, user); setInitialCollapsibleState(page, item, apiClient, context, user);
renderDetails(page, item, apiClient, context); renderDetails(page, item, apiClient, context);
renderTrackSelections(page, instance, item); renderTrackSelections(page, instance, item);
renderBackdrop(page, item, apiClient); renderBackdrop(item);
renderDetailPageBackdrop(page, item, apiClient); renderDetailPageBackdrop(page, item, apiClient);
var canPlay = reloadPlayButtons(page, item); var canPlay = reloadPlayButtons(page, item);
@ -663,7 +667,9 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
}); });
var detailLogo = page.querySelector(".detailLogo"); var detailLogo = page.querySelector(".detailLogo");
if (url) { if (!layoutManager.mobile && !userSettings.enableBackdrops()) {
detailLogo.classList.add("hide");
} else if (url) {
detailLogo.classList.remove("hide"); detailLogo.classList.remove("hide");
detailLogo.classList.add("lazy"); detailLogo.classList.add("lazy");
detailLogo.setAttribute("data-src", url); detailLogo.setAttribute("data-src", url);
@ -817,7 +823,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
if (editable) { if (editable) {
html += "</a>"; html += "</a>";
} else if (!editable && url === undefined) { } else if (!editable && url === undefined) {
html += "</div>" html += "</div>";
} }
var progressHtml = item.IsFolder || !item.UserData ? "" : indicators.getProgressBarHtml(item); var progressHtml = item.IsFolder || !item.UserData ? "" : indicators.getProgressBarHtml(item);
@ -873,7 +879,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
elem.querySelector(".detailImageProgressContainer").innerHTML = indicators.getProgressBarHtml(item); elem.querySelector(".detailImageProgressContainer").innerHTML = indicators.getProgressBarHtml(item);
} }
function refreshImage(page, item, user) { function refreshImage(page, item) {
refreshDetailImageUserData(page.querySelector(".detailImageContainer"), item); refreshDetailImageUserData(page.querySelector(".detailImageContainer"), item);
} }
@ -922,10 +928,10 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
if ("Playlist" == item.Type) { if ("Playlist" == item.Type) {
page.querySelector("#childrenCollapsible").classList.remove("hide"); page.querySelector("#childrenCollapsible").classList.remove("hide");
renderPlaylistItems(page, item, user); renderPlaylistItems(page, item);
} else if ("Studio" == item.Type || "Person" == item.Type || "Genre" == item.Type || "MusicGenre" == item.Type || "MusicArtist" == item.Type) { } else if ("Studio" == item.Type || "Person" == item.Type || "Genre" == item.Type || "MusicGenre" == item.Type || "MusicArtist" == item.Type) {
page.querySelector("#childrenCollapsible").classList.remove("hide"); page.querySelector("#childrenCollapsible").classList.remove("hide");
renderItemsByName(page, item, user); renderItemsByName(page, item);
} else if (item.IsFolder) { } else if (item.IsFolder) {
if ("BoxSet" == item.Type) { if ("BoxSet" == item.Type) {
page.querySelector("#childrenCollapsible").classList.add("hide"); page.querySelector("#childrenCollapsible").classList.add("hide");
@ -937,7 +943,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
} }
if ("Series" == item.Type) { if ("Series" == item.Type) {
renderSeriesSchedule(page, item, user); renderSeriesSchedule(page, item);
renderNextUp(page, item, user); renderNextUp(page, item, user);
} else { } else {
page.querySelector(".nextUpSection").classList.add("hide"); page.querySelector(".nextUpSection").classList.add("hide");
@ -952,7 +958,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
page.querySelector("#specialsCollapsible").classList.add("hide"); page.querySelector("#specialsCollapsible").classList.add("hide");
} }
renderCast(page, item, context, enableScrollX() ? null : 12); renderCast(page, item);
if (item.PartCount && item.PartCount > 1) { if (item.PartCount && item.PartCount > 1) {
page.querySelector("#additionalPartsCollapsible").classList.remove("hide"); page.querySelector("#additionalPartsCollapsible").classList.remove("hide");
@ -988,7 +994,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
} }
} }
function renderGenres(page, item, apiClient, context, isStatic) { function renderGenres(page, item, context) {
context = context || inferContext(item); context = context || inferContext(item);
var type; var type;
var genres = item.GenreItems || []; var genres = item.GenreItems || [];
@ -1022,7 +1028,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
} }
} }
function renderDirector(page, item, apiClient, context, isStatic) { function renderDirector(page, item, context) {
var directors = (item.People || []).filter(function (p) { var directors = (item.People || []).filter(function (p) {
return "Director" === p.Type; return "Director" === p.Type;
}); });
@ -1050,8 +1056,8 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
renderSimilarItems(page, item, context); renderSimilarItems(page, item, context);
renderMoreFromSeason(page, item, apiClient); renderMoreFromSeason(page, item, apiClient);
renderMoreFromArtist(page, item, apiClient); renderMoreFromArtist(page, item, apiClient);
renderDirector(page, item, apiClient, context, isStatic); renderDirector(page, item, context);
renderGenres(page, item, apiClient, context, isStatic); renderGenres(page, item, context);
renderChannelGuide(page, apiClient, item); renderChannelGuide(page, apiClient, item);
var taglineElement = page.querySelector(".tagline"); var taglineElement = page.querySelector(".tagline");
@ -1125,14 +1131,6 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
return scrollX ? "overflowSquare" : "square"; return scrollX ? "overflowSquare" : "square";
} }
function getThumbShape(scrollX) {
if (null == scrollX) {
scrollX = enableScrollX();
}
return scrollX ? "overflowBackdrop" : "backdrop";
}
function renderMoreFromSeason(view, item, apiClient) { function renderMoreFromSeason(view, item, apiClient) {
var section = view.querySelector(".moreFromSeasonSection"); var section = view.querySelector(".moreFromSeasonSection");
@ -1508,13 +1506,13 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
} }
} }
function renderItemsByName(page, item, user) { function renderItemsByName(page, item) {
require("scripts/itembynamedetailpage".split(","), function () { require("scripts/itembynamedetailpage".split(","), function () {
window.ItemsByName.renderItems(page, item); window.ItemsByName.renderItems(page, item);
}); });
} }
function renderPlaylistItems(page, item, user) { function renderPlaylistItems(page, item) {
require("scripts/playlistedit".split(","), function () { require("scripts/playlistedit".split(","), function () {
PlaylistViewer.render(page, item); PlaylistViewer.render(page, item);
}); });
@ -1594,7 +1592,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
} }
} }
function renderSeriesSchedule(page, item, user) { function renderSeriesSchedule(page, item) {
var apiClient = connectionManager.getApiClient(item.ServerId); var apiClient = connectionManager.getApiClient(item.ServerId);
apiClient.getLiveTvPrograms({ apiClient.getLiveTvPrograms({
UserId: apiClient.getCurrentUserId(), UserId: apiClient.getCurrentUserId(),
@ -1844,7 +1842,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
}); });
} }
function renderCast(page, item, context, limit, isStatic) { function renderCast(page, item) {
var people = (item.People || []).filter(function (p) { var people = (item.People || []).filter(function (p) {
return "Director" !== p.Type; return "Director" !== p.Type;
}); });
@ -1934,7 +1932,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
playbackManager.play(playOptions); playbackManager.play(playOptions);
} }
function playTrailer(page) { function playTrailer() {
playbackManager.playTrailers(currentItem); playbackManager.playTrailers(currentItem);
} }
@ -1991,11 +1989,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
} }
function onPlayTrailerClick() { function onPlayTrailerClick() {
playTrailer(view); playTrailer();
}
function onDownloadChange() {
reload(self, view, params);
} }
function onDownloadClick() { function onDownloadClick() {
@ -2050,9 +2044,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
if (userData) { if (userData) {
currentItem.UserData = userData; currentItem.UserData = userData;
reloadPlayButtons(view, currentItem); reloadPlayButtons(view, currentItem);
apiClient.getCurrentUser().then(function (user) { refreshImage(view, currentItem);
refreshImage(view, currentItem, user);
});
} }
} }
} }
@ -2083,11 +2075,9 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
}); });
view.addEventListener("click", function (e) { view.addEventListener("click", function (e) {
if (dom.parentWithClass(e.target, "moreScenes")) { if (dom.parentWithClass(e.target, "moreScenes")) {
apiClient.getCurrentUser().then(function (user) { renderScenes(view, currentItem);
renderScenes(view, currentItem);
});
} else if (dom.parentWithClass(e.target, "morePeople")) { } else if (dom.parentWithClass(e.target, "morePeople")) {
renderCast(view, currentItem, params.context); renderCast(view, currentItem);
} else if (dom.parentWithClass(e.target, "moreSpecials")) { } else if (dom.parentWithClass(e.target, "moreSpecials")) {
apiClient.getCurrentUser().then(function (user) { apiClient.getCurrentUser().then(function (user) {
renderSpecials(view, currentItem, user); renderSpecials(view, currentItem, user);

View file

@ -144,6 +144,14 @@
<div class="fieldDescription checkboxFieldDescription">${AllowOnTheFlySubtitleExtractionHelp}</div> <div class="fieldDescription checkboxFieldDescription">${AllowOnTheFlySubtitleExtractionHelp}</div>
</div> </div>
<div class="checkboxContainer checkboxContainer-withDescription">
<label>
<input is="emby-checkbox" type="checkbox" id="chkEnableThrottling" />
<span>${AllowFfmpegThrottling}</span>
</label>
<div class="fieldDescription checkboxFieldDescription">${AllowFfmpegThrottlingHelp}</div>
</div>
<div> <div>
<button is="emby-button" type="submit" class="raised button-submit block"> <button is="emby-button" type="submit" class="raised button-submit block">
<span>${ButtonSave}</span> <span>${ButtonSave}</span>

View file

@ -1,5 +1,5 @@
<div id="itemDetailPage" data-role="page" class="page libraryPage itemDetailPage noSecondaryNavPage selfBackdropPage" data-backbutton="true"> <div id="itemDetailPage" data-role="page" class="page libraryPage itemDetailPage noSecondaryNavPage selfBackdropPage noBackdrop" data-backbutton="true">
<div id="itemBackdrop" class="itemBackdrop noBackdrop"> <div id="itemBackdrop" class="itemBackdrop">
<button is="emby-button" type="button" class="btnPlay detailFloatingButton hide fab autoSize" title="${ButtonPlay}" data-mode="resume"> <button is="emby-button" type="button" class="btnPlay detailFloatingButton hide fab autoSize" title="${ButtonPlay}" data-mode="resume">
<i class="material-icons play_arrow"></i> <i class="material-icons play_arrow"></i>
</button> </button>

View file

@ -24,6 +24,8 @@
"AllowMediaConversionHelp": "Grant or deny access to the convert media feature.", "AllowMediaConversionHelp": "Grant or deny access to the convert media feature.",
"AllowOnTheFlySubtitleExtraction": "Allow subtitle extraction on the fly", "AllowOnTheFlySubtitleExtraction": "Allow subtitle extraction on the fly",
"AllowOnTheFlySubtitleExtractionHelp": "Embedded subtitles can be extracted from videos and delivered to clients in plain text in order to help prevent video transcoding. On some systems this can take a long time and cause video playback to stall during the extraction process. Disable this to have embedded subtitles burned in with video transcoding when they are not natively supported by the client device.", "AllowOnTheFlySubtitleExtractionHelp": "Embedded subtitles can be extracted from videos and delivered to clients in plain text in order to help prevent video transcoding. On some systems this can take a long time and cause video playback to stall during the extraction process. Disable this to have embedded subtitles burned in with video transcoding when they are not natively supported by the client device.",
"AllowFfmpegThrottling": "Throttle Transcodes",
"AllowFfmpegThrottlingHelp": "When a transcode or remux gets far enough ahead from the current playback position, pause the process so it will consume less resources. This is most useful when watching without seeking often. Turn this off if you experience playback issues.",
"AllowRemoteAccess": "Allow remote connections to this Jellyfin Server.", "AllowRemoteAccess": "Allow remote connections to this Jellyfin Server.",
"AllowRemoteAccessHelp": "If unchecked, all remote connections will be blocked.", "AllowRemoteAccessHelp": "If unchecked, all remote connections will be blocked.",
"AllowedRemoteAddressesHelp": "Comma separated list of IP addresses or IP/netmask entries for networks that will be allowed to connect remotely. If left blank, all remote addresses will be allowed.", "AllowedRemoteAddressesHelp": "Comma separated list of IP addresses or IP/netmask entries for networks that will be allowed to connect remotely. If left blank, all remote addresses will be allowed.",

View file

@ -112,7 +112,7 @@ html {
.inputLabelFocused, .inputLabelFocused,
.selectLabelFocused, .selectLabelFocused,
.textareaLabelFocused { .textareaLabelFocused {
color: green; color: #00a4dc;
} }
.checkboxOutline { .checkboxOutline {

View file

@ -201,6 +201,10 @@ html {
} }
.detailSticky { .detailSticky {
background: rgba(32, 32, 32, 0.8);
}
.noBackdrop .detailSticky {
background: #202020; background: #202020;
} }

View file

@ -105,7 +105,7 @@ html {
.inputLabelFocused, .inputLabelFocused,
.selectLabelFocused, .selectLabelFocused,
.textareaLabelFocused { .textareaLabelFocused {
color: green; color: #00a4dc;
} }
.checkboxOutline { .checkboxOutline {