1
0
Fork 0
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:
Luke Pulverenti 2016-11-02 16:53:50 -04:00
parent 1c0379bee1
commit c203b7253b
9 changed files with 67 additions and 88 deletions

View file

@ -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;
}); });

View file

@ -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) {

View file

@ -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);
}

View file

@ -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;">

View file

@ -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();
}); });

View file

@ -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);
}
}); });
} }

View file

@ -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) {

View file

@ -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
}); });
} }

View file

@ -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}"
} }