mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
move classes to portable server project
This commit is contained in:
parent
1c0379bee1
commit
c203b7253b
9 changed files with 67 additions and 88 deletions
|
@ -184,6 +184,10 @@ define(['browser'], function (browser) {
|
||||||
case 'ts':
|
case 'ts':
|
||||||
supported = testCanPlayTs();
|
supported = testCanPlayTs();
|
||||||
videoCodecs.push('h264');
|
videoCodecs.push('h264');
|
||||||
|
if (canPlayH265()) {
|
||||||
|
videoCodecs.push('h265');
|
||||||
|
videoCodecs.push('hevc');
|
||||||
|
}
|
||||||
profileContainer = 'ts,mpegts';
|
profileContainer = 'ts,mpegts';
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -300,7 +304,7 @@ define(['browser'], function (browser) {
|
||||||
//videoAudioCodecs.push('truehd');
|
//videoAudioCodecs.push('truehd');
|
||||||
}
|
}
|
||||||
|
|
||||||
videoAudioCodecs = videoAudioCodecs.filter(function(c) {
|
videoAudioCodecs = videoAudioCodecs.filter(function (c) {
|
||||||
return (options.disableVideoAudioCodecs || []).indexOf(c) === -1;
|
return (options.disableVideoAudioCodecs || []).indexOf(c) === -1;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -85,7 +85,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.homePageSection {
|
.homePageSection {
|
||||||
margin-top: 30px;
|
margin-top: 3em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sectionHeaderButton {
|
.sectionHeaderButton {
|
||||||
|
@ -132,12 +132,12 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.homePageSection h1 {
|
.homePageSection h1 {
|
||||||
padding-left: 2vw;
|
padding-left: 3.1vw;
|
||||||
}
|
}
|
||||||
|
|
||||||
.homePageSection .itemsContainer {
|
.homePageSection .itemsContainer {
|
||||||
padding-left: 1vw;
|
padding-left: 2.5vw;
|
||||||
padding-right: 1vw;
|
padding-right: 2.5vw;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media all and (min-width: 1200px) {
|
@media all and (min-width: 1200px) {
|
||||||
|
|
|
@ -70,7 +70,7 @@ h1, h1 a {
|
||||||
}
|
}
|
||||||
|
|
||||||
.cardImageContainer {
|
.cardImageContainer {
|
||||||
border-radius: 7px;
|
border-radius: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.noSecondaryNavPage .itemBackdrop {
|
.noSecondaryNavPage .itemBackdrop {
|
||||||
|
@ -104,3 +104,8 @@ h1, h1 a {
|
||||||
-webkit-backdrop-filter: blur(5px);
|
-webkit-backdrop-filter: blur(5px);
|
||||||
backdrop-filter: blur(5px);
|
backdrop-filter: blur(5px);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.cardOverlayButton {
|
||||||
|
-webkit-backdrop-filter: blur(5px);
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
}
|
||||||
|
|
|
@ -41,39 +41,34 @@
|
||||||
<a href="livetvitems.html?type=Programs&IsAiring=true" class="clearLink" style="margin-left: 1em; vertical-align: middle;"><button is="emby-button" type="button" class="raised more mini noIcon">${ButtonMoreItems}</button></a>
|
<a href="livetvitems.html?type=Programs&IsAiring=true" class="clearLink" style="margin-left: 1em; vertical-align: middle;"><button is="emby-button" type="button" class="raised more mini noIcon">${ButtonMoreItems}</button></a>
|
||||||
</div>
|
</div>
|
||||||
<div is="emby-itemscontainer" class="activeProgramItems itemsContainer"></div>
|
<div is="emby-itemscontainer" class="activeProgramItems itemsContainer"></div>
|
||||||
<br />
|
|
||||||
</div>
|
</div>
|
||||||
<div id="upcomingTvMovies" class="homePageSection" style="margin-top: 1em;">
|
<div id="upcomingTvMovies" class="homePageSection">
|
||||||
<div>
|
<div>
|
||||||
<h1 class="listHeader" style="display: inline-block; vertical-align: middle;">${HeaderUpcomingMovies}</h1>
|
<h1 class="listHeader" style="display: inline-block; vertical-align: middle;">${HeaderUpcomingMovies}</h1>
|
||||||
<a href="livetvitems.html?type=Programs&IsMovie=true" class="clearLink" style="margin-left: 1em; vertical-align: middle;"><button is="emby-button" type="button" class="raised more mini noIcon">${ButtonMoreItems}</button></a>
|
<a href="livetvitems.html?type=Programs&IsMovie=true" class="clearLink" style="margin-left: 1em; vertical-align: middle;"><button is="emby-button" type="button" class="raised more mini noIcon">${ButtonMoreItems}</button></a>
|
||||||
</div>
|
</div>
|
||||||
<div is="emby-itemscontainer" class="upcomingTvMovieItems itemsContainer"></div>
|
<div is="emby-itemscontainer" class="upcomingTvMovieItems itemsContainer"></div>
|
||||||
<br />
|
|
||||||
</div>
|
</div>
|
||||||
<div id="upcomingSports" class="homePageSection" style="margin-top: 1em;">
|
<div id="upcomingSports" class="homePageSection">
|
||||||
<div>
|
<div>
|
||||||
<h1 class="listHeader" style="display: inline-block; vertical-align: middle;">${HeaderUpcomingSports}</h1>
|
<h1 class="listHeader" style="display: inline-block; vertical-align: middle;">${HeaderUpcomingSports}</h1>
|
||||||
<a href="livetvitems.html?type=Programs&IsSports=true" class="clearLink" style="margin-left: 1em; vertical-align: middle;"><button is="emby-button" type="button" class="raised more mini noIcon">${ButtonMoreItems}</button></a>
|
<a href="livetvitems.html?type=Programs&IsSports=true" class="clearLink" style="margin-left: 1em; vertical-align: middle;"><button is="emby-button" type="button" class="raised more mini noIcon">${ButtonMoreItems}</button></a>
|
||||||
</div>
|
</div>
|
||||||
<div is="emby-itemscontainer" class="upcomingSportsItems itemsContainer"></div>
|
<div is="emby-itemscontainer" class="upcomingSportsItems itemsContainer"></div>
|
||||||
<br />
|
|
||||||
</div>
|
</div>
|
||||||
<div id="upcomingKids" class="homePageSection" style="margin-top: 1em;">
|
<div id="upcomingKids" class="homePageSection">
|
||||||
<div>
|
<div>
|
||||||
<h1 class="listHeader" style="display: inline-block; vertical-align: middle;">${HeaderUpcomingForKids}</h1>
|
<h1 class="listHeader" style="display: inline-block; vertical-align: middle;">${HeaderUpcomingForKids}</h1>
|
||||||
<a href="livetvitems.html?type=Programs&IsKids=true" class="clearLink" style="margin-left: 1em; vertical-align: middle;"><button is="emby-button" type="button" class="raised more mini noIcon">${ButtonMoreItems}</button></a>
|
<a href="livetvitems.html?type=Programs&IsKids=true" class="clearLink" style="margin-left: 1em; vertical-align: middle;"><button is="emby-button" type="button" class="raised more mini noIcon">${ButtonMoreItems}</button></a>
|
||||||
</div>
|
</div>
|
||||||
<div is="emby-itemscontainer" class="upcomingKidsItems itemsContainer"></div>
|
<div is="emby-itemscontainer" class="upcomingKidsItems itemsContainer"></div>
|
||||||
<br />
|
|
||||||
</div>
|
</div>
|
||||||
<div id="upcomingPrograms" class="homePageSection" style="margin-top: 1em;">
|
<div id="upcomingPrograms" class="homePageSection">
|
||||||
<div>
|
<div>
|
||||||
<h1 class="listHeader" style="display: inline-block; vertical-align: middle;">${HeaderUpcomingPrograms}</h1>
|
<h1 class="listHeader" style="display: inline-block; vertical-align: middle;">${HeaderUpcomingPrograms}</h1>
|
||||||
<a href="livetvitems.html?type=Programs&IsKids=false&IsMovie=false&IsSports=false" class="clearLink" style="margin-left: 1em; vertical-align: middle;"><button is="emby-button" type="button" class="raised more mini noIcon">${ButtonMoreItems}</button></a>
|
<a href="livetvitems.html?type=Programs&IsKids=false&IsMovie=false&IsSports=false" class="clearLink" style="margin-left: 1em; vertical-align: middle;"><button is="emby-button" type="button" class="raised more mini noIcon">${ButtonMoreItems}</button></a>
|
||||||
</div>
|
</div>
|
||||||
<div is="emby-itemscontainer" class="upcomingProgramItems itemsContainer"></div>
|
<div is="emby-itemscontainer" class="upcomingProgramItems itemsContainer"></div>
|
||||||
<br />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="pageTabContent ehsContent fullWidth flexPageTabContent absolutePageTabContent" id="guideTab" data-index="1" style="width:auto;padding-top:0; padding-bottom: 0;">
|
<div class="pageTabContent ehsContent fullWidth flexPageTabContent absolutePageTabContent" id="guideTab" data-index="1" style="width:auto;padding-top:0; padding-bottom: 0;">
|
||||||
|
|
|
@ -110,17 +110,14 @@
|
||||||
page.querySelector('#selectHomeSection3').value = displayPreferences.CustomPrefs.home2 || '';
|
page.querySelector('#selectHomeSection3').value = displayPreferences.CustomPrefs.home2 || '';
|
||||||
page.querySelector('#selectHomeSection4').value = displayPreferences.CustomPrefs.home3 || '';
|
page.querySelector('#selectHomeSection4').value = displayPreferences.CustomPrefs.home3 || '';
|
||||||
|
|
||||||
var promise1 = ApiClient.getItems(user.Id, {
|
var promise1 = ApiClient.getUserViews({}, user.Id);
|
||||||
sortBy: "SortName"
|
var promise2 = ApiClient.getJSON(ApiClient.getUrl("Users/" + user.Id + "/GroupingOptions"));
|
||||||
});
|
|
||||||
var promise2 = ApiClient.getUserViews({}, user.Id);
|
|
||||||
var promise3 = ApiClient.getJSON(ApiClient.getUrl("Users/" + user.Id + "/GroupingOptions"));
|
|
||||||
|
|
||||||
Promise.all([promise1, promise2, promise3]).then(function (responses) {
|
Promise.all([promise1, promise2]).then(function (responses) {
|
||||||
|
|
||||||
renderViews(page, user, responses[2]);
|
renderViews(page, user, responses[1]);
|
||||||
renderLatestItems(page, user, responses[0]);
|
renderLatestItems(page, user, responses[0]);
|
||||||
renderViewOrder(page, user, responses[1]);
|
renderViewOrder(page, user, responses[0]);
|
||||||
|
|
||||||
Dashboard.hideLoadingMsg();
|
Dashboard.hideLoadingMsg();
|
||||||
});
|
});
|
||||||
|
|
|
@ -252,23 +252,7 @@
|
||||||
return html;
|
return html;
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadRecentlyAdded(elem, user) {
|
function renderLatestSection(elem, user, parent) {
|
||||||
|
|
||||||
var moviesFrag = document.createElement('div');
|
|
||||||
var episodesFrag = document.createElement('div');
|
|
||||||
|
|
||||||
elem.classList.remove('homePageSection');
|
|
||||||
moviesFrag.classList.add('homePageSection');
|
|
||||||
episodesFrag.classList.add('homePageSection');
|
|
||||||
|
|
||||||
elem.appendChild(moviesFrag);
|
|
||||||
elem.appendChild(episodesFrag);
|
|
||||||
|
|
||||||
loadLatestMovies(moviesFrag, user);
|
|
||||||
loadLatestEpisodes(episodesFrag, user);
|
|
||||||
}
|
|
||||||
|
|
||||||
function loadLatestMovies(elem, user) {
|
|
||||||
|
|
||||||
var options = {
|
var options = {
|
||||||
|
|
||||||
|
@ -276,7 +260,7 @@
|
||||||
Fields: "PrimaryImageAspectRatio,BasicSyncInfo",
|
Fields: "PrimaryImageAspectRatio,BasicSyncInfo",
|
||||||
ImageTypeLimit: 1,
|
ImageTypeLimit: 1,
|
||||||
EnableImageTypes: "Primary,Backdrop,Thumb",
|
EnableImageTypes: "Primary,Backdrop,Thumb",
|
||||||
IncludeItemTypes: "Movie"
|
ParentId: parent.Id
|
||||||
};
|
};
|
||||||
|
|
||||||
return ApiClient.getJSON(ApiClient.getUrl('Users/' + user.Id + '/Items/Latest', options)).then(function (items) {
|
return ApiClient.getJSON(ApiClient.getUrl('Users/' + user.Id + '/Items/Latest', options)).then(function (items) {
|
||||||
|
@ -286,21 +270,28 @@
|
||||||
var scrollX = enableScrollX();
|
var scrollX = enableScrollX();
|
||||||
|
|
||||||
if (items.length) {
|
if (items.length) {
|
||||||
html += '<h1 class="listHeader">' + Globalize.translate('HeaderLatestMovies') + '</h1>';
|
html += '<h1 class="listHeader">' + Globalize.translate('LatestFromLibrary', parent.Name) + '</h1>';
|
||||||
if (scrollX) {
|
if (scrollX) {
|
||||||
html += '<div is="emby-itemscontainer" class="hiddenScrollX itemsContainer">';
|
html += '<div is="emby-itemscontainer" class="hiddenScrollX itemsContainer">';
|
||||||
} else {
|
} else {
|
||||||
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-wrap">';
|
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-wrap">';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var viewType = parent.CollectionType;
|
||||||
|
|
||||||
|
var shape = viewType === 'movies' ?
|
||||||
|
getPortraitShape() :
|
||||||
|
getThumbShape();
|
||||||
|
|
||||||
html += cardBuilder.getCardsHtml({
|
html += cardBuilder.getCardsHtml({
|
||||||
items: items,
|
items: items,
|
||||||
shape: getPortraitShape(),
|
shape: shape,
|
||||||
|
preferThumb: viewType != 'movies',
|
||||||
showUnplayedIndicator: false,
|
showUnplayedIndicator: false,
|
||||||
showChildCountIndicator: true,
|
showChildCountIndicator: true,
|
||||||
lazy: true,
|
|
||||||
context: 'home',
|
context: 'home',
|
||||||
centerText: true,
|
centerText: true,
|
||||||
overlayPlayButton: true,
|
overlayPlayButton: viewType !== 'photos',
|
||||||
allowBottomPadding: !enableScrollX()
|
allowBottomPadding: !enableScrollX()
|
||||||
});
|
});
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
|
@ -311,47 +302,38 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadLatestEpisodes(elem, user) {
|
function loadRecentlyAdded(elem, user) {
|
||||||
|
|
||||||
var options = {
|
elem.classList.remove('homePageSection');
|
||||||
|
|
||||||
Limit: 12,
|
return getUserViews(user.Id).then(function (items) {
|
||||||
Fields: "PrimaryImageAspectRatio,BasicSyncInfo",
|
|
||||||
ImageTypeLimit: 1,
|
|
||||||
EnableImageTypes: "Primary,Backdrop,Thumb",
|
|
||||||
IncludeItemTypes: "Episode"
|
|
||||||
};
|
|
||||||
|
|
||||||
return ApiClient.getJSON(ApiClient.getUrl('Users/' + user.Id + '/Items/Latest', options)).then(function (items) {
|
var excludeViewTypes = ['playlists', 'livetv', 'boxsets', 'channels'];
|
||||||
|
var excludeItemTypes = ['Channel'];
|
||||||
|
|
||||||
var html = '';
|
for (var i = 0, length = items.length; i < length; i++) {
|
||||||
|
|
||||||
var scrollX = enableScrollX();
|
var item = items[i];
|
||||||
|
|
||||||
if (items.length) {
|
if (user.Configuration.LatestItemsExcludes.indexOf(item.Id) !== -1) {
|
||||||
html += '<h1 class="listHeader">' + Globalize.translate('HeaderLatestEpisodes') + '</h1>';
|
continue;
|
||||||
if (scrollX) {
|
|
||||||
html += '<div is="emby-itemscontainer" class="hiddenScrollX itemsContainer">';
|
|
||||||
} else {
|
|
||||||
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-wrap">';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
html += cardBuilder.getCardsHtml({
|
if (excludeViewTypes.indexOf(item.CollectionType || []) !== -1) {
|
||||||
items: items,
|
continue;
|
||||||
preferThumb: true,
|
|
||||||
shape: getThumbShape(),
|
|
||||||
showUnplayedIndicator: false,
|
|
||||||
showChildCountIndicator: true,
|
|
||||||
lazy: true,
|
|
||||||
context: 'home',
|
|
||||||
overlayPlayButton: true,
|
|
||||||
allowBottomPadding: !enableScrollX()
|
|
||||||
});
|
|
||||||
html += '</div>';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
elem.innerHTML = html;
|
// not implemented yet
|
||||||
ImageLoader.lazyChildren(elem);
|
if (excludeItemTypes.indexOf(item.Type) !== -1) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var frag = document.createElement('div');
|
||||||
|
frag.classList.add('homePageSection');
|
||||||
|
elem.appendChild(frag);
|
||||||
|
|
||||||
|
renderLatestSection(frag, user, item);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1694,14 +1694,9 @@ var AppInfo = {};
|
||||||
|
|
||||||
if (Dashboard.isRunningInCordova() && browserInfo.android) {
|
if (Dashboard.isRunningInCordova() && browserInfo.android) {
|
||||||
|
|
||||||
if (MainActivity.getChromeVersion() >= 48) {
|
|
||||||
//define("audiorenderer", ["scripts/htmlmediarenderer"]);
|
//define("audiorenderer", ["scripts/htmlmediarenderer"]);
|
||||||
window.VlcAudio = true;
|
window.VlcAudio = true;
|
||||||
define("audiorenderer", ["cordova/android/vlcplayer"]);
|
define("audiorenderer", ["cordova/android/vlcplayer"]);
|
||||||
} else {
|
|
||||||
window.VlcAudio = true;
|
|
||||||
define("audiorenderer", ["cordova/android/vlcplayer"]);
|
|
||||||
}
|
|
||||||
define("videorenderer", ["cordova/android/vlcplayer"]);
|
define("videorenderer", ["cordova/android/vlcplayer"]);
|
||||||
}
|
}
|
||||||
else if (Dashboard.isRunningInCordova() && browserInfo.safari) {
|
else if (Dashboard.isRunningInCordova() && browserInfo.safari) {
|
||||||
|
|
|
@ -103,7 +103,7 @@
|
||||||
preferThumb: true,
|
preferThumb: true,
|
||||||
context: 'tv',
|
context: 'tv',
|
||||||
lazy: true,
|
lazy: true,
|
||||||
overlayPlayButton: true
|
overlayMoreButton: true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else if (viewStyle == "ThumbCard") {
|
else if (viewStyle == "ThumbCard") {
|
||||||
|
@ -160,7 +160,7 @@
|
||||||
context: 'tv',
|
context: 'tv',
|
||||||
centerText: true,
|
centerText: true,
|
||||||
lazy: true,
|
lazy: true,
|
||||||
overlayPlayButton: true
|
overlayMoreButton: true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2020,5 +2020,6 @@
|
||||||
"LabelOptionalNetworkPathHelp": "If this folder is shared on your network, supplying the network share path can allow Emby apps on other devices to access media files directly.",
|
"LabelOptionalNetworkPathHelp": "If this folder is shared on your network, supplying the network share path can allow Emby apps on other devices to access media files directly.",
|
||||||
"ButtonPlayExternalPlayer": "Play with external player",
|
"ButtonPlayExternalPlayer": "Play with external player",
|
||||||
"NotScheduledToRecord": "Not scheduled to record",
|
"NotScheduledToRecord": "Not scheduled to record",
|
||||||
"SynologyUpdateInstructions": "Please login to DSM and go to Package Center to update."
|
"SynologyUpdateInstructions": "Please login to DSM and go to Package Center to update.",
|
||||||
|
"LatestFromLibrary": "Latest {0}"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue