diff --git a/dashboard-ui/scripts/mypreferenceshome.js b/dashboard-ui/scripts/mypreferenceshome.js
index 5b5febecad..87cfa914a9 100644
--- a/dashboard-ui/scripts/mypreferenceshome.js
+++ b/dashboard-ui/scripts/mypreferenceshome.js
@@ -110,17 +110,14 @@
page.querySelector('#selectHomeSection3').value = displayPreferences.CustomPrefs.home2 || '';
page.querySelector('#selectHomeSection4').value = displayPreferences.CustomPrefs.home3 || '';
- var promise1 = ApiClient.getItems(user.Id, {
- sortBy: "SortName"
- });
- var promise2 = ApiClient.getUserViews({}, user.Id);
- var promise3 = ApiClient.getJSON(ApiClient.getUrl("Users/" + user.Id + "/GroupingOptions"));
+ var promise1 = ApiClient.getUserViews({}, user.Id);
+ var promise2 = 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]);
- renderViewOrder(page, user, responses[1]);
+ renderViewOrder(page, user, responses[0]);
Dashboard.hideLoadingMsg();
});
diff --git a/dashboard-ui/scripts/sections.js b/dashboard-ui/scripts/sections.js
index c1733413f7..935cc1a05d 100644
--- a/dashboard-ui/scripts/sections.js
+++ b/dashboard-ui/scripts/sections.js
@@ -252,23 +252,7 @@
return html;
}
- function loadRecentlyAdded(elem, user) {
-
- 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) {
+ function renderLatestSection(elem, user, parent) {
var options = {
@@ -276,7 +260,7 @@
Fields: "PrimaryImageAspectRatio,BasicSyncInfo",
ImageTypeLimit: 1,
EnableImageTypes: "Primary,Backdrop,Thumb",
- IncludeItemTypes: "Movie"
+ ParentId: parent.Id
};
return ApiClient.getJSON(ApiClient.getUrl('Users/' + user.Id + '/Items/Latest', options)).then(function (items) {
@@ -286,21 +270,28 @@
var scrollX = enableScrollX();
if (items.length) {
- html += '';
+ html += '';
if (scrollX) {
html += '
';
} else {
html += '
';
}
+
+ var viewType = parent.CollectionType;
+
+ var shape = viewType === 'movies' ?
+ getPortraitShape() :
+ getThumbShape();
+
html += cardBuilder.getCardsHtml({
items: items,
- shape: getPortraitShape(),
+ shape: shape,
+ preferThumb: viewType != 'movies',
showUnplayedIndicator: false,
showChildCountIndicator: true,
- lazy: true,
context: 'home',
centerText: true,
- overlayPlayButton: true,
+ overlayPlayButton: viewType !== 'photos',
allowBottomPadding: !enableScrollX()
});
html += '
';
@@ -311,47 +302,38 @@
});
}
- function loadLatestEpisodes(elem, user) {
+ function loadRecentlyAdded(elem, user) {
- var options = {
+ elem.classList.remove('homePageSection');
- Limit: 12,
- Fields: "PrimaryImageAspectRatio,BasicSyncInfo",
- ImageTypeLimit: 1,
- EnableImageTypes: "Primary,Backdrop,Thumb",
- IncludeItemTypes: "Episode"
- };
+ return getUserViews(user.Id).then(function (items) {
- 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) {
- html += '';
- if (scrollX) {
- html += '
';
- } else {
- html += '
';
+ if (user.Configuration.LatestItemsExcludes.indexOf(item.Id) !== -1) {
+ continue;
}
- html += cardBuilder.getCardsHtml({
- items: items,
- preferThumb: true,
- shape: getThumbShape(),
- showUnplayedIndicator: false,
- showChildCountIndicator: true,
- lazy: true,
- context: 'home',
- overlayPlayButton: true,
- allowBottomPadding: !enableScrollX()
- });
- html += '
';
- }
+ if (excludeViewTypes.indexOf(item.CollectionType || []) !== -1) {
+ continue;
+ }
- elem.innerHTML = html;
- ImageLoader.lazyChildren(elem);
+ // not implemented yet
+ if (excludeItemTypes.indexOf(item.Type) !== -1) {
+ continue;
+ }
+
+ var frag = document.createElement('div');
+ frag.classList.add('homePageSection');
+ elem.appendChild(frag);
+
+ renderLatestSection(frag, user, item);
+ }
});
}
diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js
index a1f2c1a7bb..8cad5d10ee 100644
--- a/dashboard-ui/scripts/site.js
+++ b/dashboard-ui/scripts/site.js
@@ -1694,14 +1694,9 @@ var AppInfo = {};
if (Dashboard.isRunningInCordova() && browserInfo.android) {
- if (MainActivity.getChromeVersion() >= 48) {
- //define("audiorenderer", ["scripts/htmlmediarenderer"]);
- window.VlcAudio = true;
- define("audiorenderer", ["cordova/android/vlcplayer"]);
- } else {
- window.VlcAudio = true;
- define("audiorenderer", ["cordova/android/vlcplayer"]);
- }
+ //define("audiorenderer", ["scripts/htmlmediarenderer"]);
+ window.VlcAudio = true;
+ define("audiorenderer", ["cordova/android/vlcplayer"]);
define("videorenderer", ["cordova/android/vlcplayer"]);
}
else if (Dashboard.isRunningInCordova() && browserInfo.safari) {
diff --git a/dashboard-ui/scripts/tvshows.js b/dashboard-ui/scripts/tvshows.js
index d68423a538..6da561a272 100644
--- a/dashboard-ui/scripts/tvshows.js
+++ b/dashboard-ui/scripts/tvshows.js
@@ -103,7 +103,7 @@
preferThumb: true,
context: 'tv',
lazy: true,
- overlayPlayButton: true
+ overlayMoreButton: true
});
}
else if (viewStyle == "ThumbCard") {
@@ -160,7 +160,7 @@
context: 'tv',
centerText: true,
lazy: true,
- overlayPlayButton: true
+ overlayMoreButton: true
});
}
diff --git a/dashboard-ui/strings/en-US.json b/dashboard-ui/strings/en-US.json
index c02ebaf760..f35f5f744a 100644
--- a/dashboard-ui/strings/en-US.json
+++ b/dashboard-ui/strings/en-US.json
@@ -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.",
"ButtonPlayExternalPlayer": "Play with external player",
"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}"
}