mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
avoid buffering http responses
This commit is contained in:
parent
86a369b500
commit
170b720d0b
22 changed files with 102 additions and 42 deletions
|
@ -1273,7 +1273,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'mediaInfo
|
|||
if (coveredImage) {
|
||||
imgClass += ' coveredImage-img';
|
||||
}
|
||||
cardImageContainerOpen += '<img class="' + imgClass + '" data-vibrant="' + cardFooterId + '" data-swatch="db" data-src="' + imgUrl + '" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" />';
|
||||
cardImageContainerOpen += '<img crossOrigin="Anonymous" class="' + imgClass + '" data-vibrant="' + cardFooterId + '" data-swatch="db" data-src="' + imgUrl + '" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" />';
|
||||
|
||||
} else {
|
||||
cardImageContainerOpen = imgUrl ? ('<div class="' + cardImageContainerClass + ' lazy" data-src="' + imgUrl + '">') : ('<div class="' + cardImageContainerClass + '">');
|
||||
|
|
|
@ -147,6 +147,19 @@ define(['appStorage', 'browser'], function (appStorage, browser) {
|
|||
if (supportsFullscreen()) {
|
||||
features.push('fullscreen');
|
||||
}
|
||||
|
||||
if (!browser.mobile) {
|
||||
if (browser.safari) {
|
||||
|
||||
if (browser.versionMajor && browser.versionMajor >= 10) {
|
||||
features.push('imageanalysis');
|
||||
}
|
||||
|
||||
} else {
|
||||
features.push('imageanalysis');
|
||||
}
|
||||
}
|
||||
|
||||
return features;
|
||||
}();
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
</button>
|
||||
</div>
|
||||
<div id="btnManualUpdateContainer">
|
||||
<a href="http://emby.media/download" target="_blank">${PleaseUpdateManually}</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<p id="ports"></p>
|
||||
|
|
|
@ -178,6 +178,12 @@
|
|||
$('#btnManualUpdateContainer', page).show();
|
||||
}
|
||||
|
||||
if (systemInfo.PackageName == 'synology') {
|
||||
$('#btnManualUpdateContainer').html(Globalize.translate('SynologyUpdateInstructions'));
|
||||
} else {
|
||||
$('#btnManualUpdateContainer').html('<a href="http://emby.media/download" target="_blank">' + Globalize.translate('PleaseUpdateManually') + '</a>');
|
||||
}
|
||||
|
||||
DashboardPage.renderPaths(page, systemInfo);
|
||||
DashboardPage.renderHasPendingRestart(page, systemInfo.HasPendingRestart);
|
||||
});
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(['components/categorysyncbuttons', 'cardBuilder', 'emby-itemscontainer'], function (categorysyncbuttons, cardBuilder) {
|
||||
define(['components/categorysyncbuttons', 'cardBuilder', 'apphost', 'emby-itemscontainer'], function (categorysyncbuttons, cardBuilder, appHost) {
|
||||
|
||||
function getNextUpPromise() {
|
||||
|
||||
|
@ -25,6 +25,8 @@
|
|||
|
||||
var html = '';
|
||||
|
||||
var supportsImageAnalysis = appHost.supports('imageanalysis');
|
||||
|
||||
html += cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
|
@ -35,8 +37,10 @@
|
|||
preferThumb: true,
|
||||
showDetailsMenu: true,
|
||||
centerText: true,
|
||||
overlayPlayButton: AppInfo.enableAppLayouts,
|
||||
context: 'home-nextup'
|
||||
overlayPlayButton: AppInfo.enableAppLayouts && !supportsImageAnalysis,
|
||||
context: 'home-nextup',
|
||||
cardLayout: supportsImageAnalysis,
|
||||
vibrant: supportsImageAnalysis
|
||||
});
|
||||
|
||||
var elem = page.querySelector('#nextUpItems');
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(['datetime', 'cardBuilder', 'emby-itemscontainer', 'scrollStyles'], function (datetime, cardBuilder) {
|
||||
define(['datetime', 'cardBuilder', 'apphost', 'emby-itemscontainer', 'scrollStyles'], function (datetime, cardBuilder, appHost) {
|
||||
|
||||
function getUpcomingPromise() {
|
||||
|
||||
|
@ -108,6 +108,8 @@
|
|||
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-wrap">';
|
||||
}
|
||||
|
||||
var supportsImageAnalysis = appHost.supports('imageanalysis');
|
||||
|
||||
html += cardBuilder.getCardsHtml({
|
||||
items: group.items,
|
||||
showLocationTypeIndicator: false,
|
||||
|
@ -118,9 +120,11 @@
|
|||
showDetailsMenu: true,
|
||||
centerText: true,
|
||||
context: 'home-upcoming',
|
||||
overlayMoreButton: true,
|
||||
overlayMoreButton: !supportsImageAnalysis,
|
||||
showParentTitle: true,
|
||||
allowBottomPadding: allowBottomPadding
|
||||
allowBottomPadding: allowBottomPadding,
|
||||
cardLayout: supportsImageAnalysis,
|
||||
vibrant: supportsImageAnalysis
|
||||
|
||||
});
|
||||
html += '</div>';
|
||||
|
|
|
@ -1143,7 +1143,7 @@
|
|||
overlayText: true,
|
||||
lazy: true,
|
||||
showDetailsMenu: true,
|
||||
overlayPlayButton: AppInfo.enableAppLayouts
|
||||
overlayPlayButton: true
|
||||
});
|
||||
}
|
||||
else if (item.Type == "GameSystem") {
|
||||
|
|
|
@ -120,6 +120,7 @@
|
|||
posterOptions.showYear = true;
|
||||
posterOptions.cardLayout = true;
|
||||
posterOptions.centerText = false;
|
||||
posterOptions.vibrant = true;
|
||||
|
||||
html = cardBuilder.getCardsHtml(posterOptions);
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(['libraryBrowser', 'cardBuilder', 'dom', 'scrollStyles', 'emby-itemscontainer', 'emby-tabs', 'emby-button'], function (libraryBrowser, cardBuilder, dom) {
|
||||
define(['libraryBrowser', 'cardBuilder', 'apphost', 'scrollStyles', 'emby-itemscontainer', 'emby-tabs', 'emby-button'], function (libraryBrowser, cardBuilder, appHost) {
|
||||
|
||||
function enableScrollX() {
|
||||
return browserInfo.mobile && AppInfo.enableAppLayouts;
|
||||
|
@ -113,6 +113,8 @@
|
|||
|
||||
function renderItems(page, items, sectionClass, overlayButton, shape) {
|
||||
|
||||
var supportsImageAnalysis = appHost.supports('imageanalysis');
|
||||
|
||||
var html = cardBuilder.getCardsHtml({
|
||||
items: items,
|
||||
preferThumb: !shape,
|
||||
|
@ -124,12 +126,14 @@
|
|||
coverImage: true,
|
||||
overlayText: false,
|
||||
lazy: true,
|
||||
overlayMoreButton: overlayButton != 'play',
|
||||
overlayMoreButton: overlayButton != 'play' && !supportsImageAnalysis,
|
||||
overlayPlayButton: overlayButton == 'play',
|
||||
allowBottomPadding: !enableScrollX(),
|
||||
showAirTime: true,
|
||||
showAirDateTime: true,
|
||||
showChannelName: true
|
||||
showChannelName: true,
|
||||
vibrant: true,
|
||||
cardLayout: supportsImageAnalysis
|
||||
//cardFooterAside: 'logo'
|
||||
});
|
||||
|
||||
|
|
|
@ -113,7 +113,8 @@
|
|||
lazy: true,
|
||||
cardLayout: true,
|
||||
showTitle: true,
|
||||
showItemCounts: true
|
||||
showItemCounts: true,
|
||||
vibrant: true
|
||||
});
|
||||
}
|
||||
else if (viewStyle == "Banner") {
|
||||
|
@ -143,7 +144,8 @@
|
|||
showTitle: true,
|
||||
centerText: false,
|
||||
cardLayout: true,
|
||||
showItemCounts: true
|
||||
showItemCounts: true,
|
||||
vibrant: true
|
||||
});
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView', 'cardBuilder', 'emby-itemscontainer'], function (events, libraryBrowser, imageLoader, alphaPicker, listView, cardBuilder) {
|
||||
define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView', 'cardBuilder', 'apphost', 'emby-itemscontainer'], function (events, libraryBrowser, imageLoader, alphaPicker, listView, cardBuilder, appHost) {
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
|
||||
|
@ -92,6 +92,8 @@
|
|||
var html;
|
||||
var viewStyle = self.getCurrentViewStyle();
|
||||
|
||||
var supportsImageAnalysis = appHost.supports('imageanalysis');
|
||||
|
||||
if (viewStyle == "Thumb") {
|
||||
|
||||
html = cardBuilder.getCardsHtml({
|
||||
|
@ -114,7 +116,7 @@
|
|||
cardLayout: true,
|
||||
showTitle: true,
|
||||
showYear: true,
|
||||
vibrant: true
|
||||
vibrant: supportsImageAnalysis
|
||||
});
|
||||
}
|
||||
else if (viewStyle == "Banner") {
|
||||
|
@ -145,7 +147,7 @@
|
|||
showYear: true,
|
||||
lazy: true,
|
||||
cardLayout: true,
|
||||
vibrant: true
|
||||
vibrant: supportsImageAnalysis
|
||||
});
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -110,7 +110,8 @@
|
|||
coverImage: true,
|
||||
showParentTitle: true,
|
||||
lazy: true,
|
||||
cardLayout: true
|
||||
cardLayout: true,
|
||||
vibrant: true
|
||||
});
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -111,7 +111,8 @@
|
|||
coverImage: true,
|
||||
lazy: true,
|
||||
cardLayout: true,
|
||||
showSongCount: true
|
||||
showSongCount: true,
|
||||
vibrant: true
|
||||
});
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -79,7 +79,8 @@
|
|||
showItemCounts: true,
|
||||
cardLayout: true,
|
||||
showTitle: true,
|
||||
lazy: true
|
||||
lazy: true,
|
||||
vibrant: true
|
||||
});
|
||||
}
|
||||
else if (viewStyle == "PosterCard") {
|
||||
|
@ -90,7 +91,8 @@
|
|||
showItemCounts: true,
|
||||
lazy: true,
|
||||
cardLayout: true,
|
||||
showTitle: true
|
||||
showTitle: true,
|
||||
vibrant: true
|
||||
});
|
||||
}
|
||||
else if (viewStyle == "Poster") {
|
||||
|
|
|
@ -45,10 +45,8 @@
|
|||
}
|
||||
|
||||
function showTextSuggestions() {
|
||||
if (AppInfo.enableAppLayouts) {
|
||||
textSuggestions.classList.remove('hide');
|
||||
}
|
||||
}
|
||||
|
||||
function getAdditionalTextLines(hint) {
|
||||
|
||||
|
@ -176,10 +174,8 @@
|
|||
}, 300);
|
||||
}
|
||||
|
||||
if (AppInfo.enableAppLayouts) {
|
||||
showTextSuggestions();
|
||||
loadSuggestions(view);
|
||||
}
|
||||
|
||||
view.querySelector('.txtSearch').addEventListener('input', function () {
|
||||
onSearchChange(this.value);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(['libraryBrowser', 'cardBuilder', 'appSettings', 'components/groupedcards', 'dom', 'scrollStyles', 'emby-button', 'paper-icon-button-light', 'emby-itemscontainer'], function (libraryBrowser, cardBuilder, appSettings, groupedcards, dom) {
|
||||
define(['libraryBrowser', 'cardBuilder', 'appSettings', 'components/groupedcards', 'dom', 'apphost', 'scrollStyles', 'emby-button', 'paper-icon-button-light', 'emby-itemscontainer'], function (libraryBrowser, cardBuilder, appSettings, groupedcards, dom, appHost) {
|
||||
|
||||
function getUserViews(userId) {
|
||||
|
||||
|
@ -450,6 +450,7 @@
|
|||
} else {
|
||||
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-wrap">';
|
||||
}
|
||||
|
||||
html += cardBuilder.getCardsHtml({
|
||||
items: items,
|
||||
shape: scrollX ? 'overflowBackdrop' : shape,
|
||||
|
@ -555,6 +556,9 @@
|
|||
} else {
|
||||
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-wrap">';
|
||||
}
|
||||
|
||||
var supportsImageAnalysis = appHost.supports('imageanalysis');
|
||||
|
||||
html += cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
preferThumb: true,
|
||||
|
@ -566,7 +570,10 @@
|
|||
overlayPlayButton: true,
|
||||
context: 'home',
|
||||
centerText: true,
|
||||
allowBottomPadding: !enableScrollX()
|
||||
allowBottomPadding: !enableScrollX(),
|
||||
cardLayout: supportsImageAnalysis,
|
||||
vibrant: supportsImageAnalysis,
|
||||
cardFooterAside: 'none'
|
||||
});
|
||||
html += '</div>';
|
||||
}
|
||||
|
@ -684,6 +691,9 @@
|
|||
} else {
|
||||
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-wrap">';
|
||||
}
|
||||
|
||||
var supportsImageAnalysis = appHost.supports('imageanalysis');
|
||||
|
||||
html += cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: enableScrollX() ? 'autooverflow' : 'auto',
|
||||
|
@ -696,7 +706,10 @@
|
|||
overlayText: false,
|
||||
overlayPlayButton: true,
|
||||
allowBottomPadding: !enableScrollX(),
|
||||
preferThumb: true
|
||||
preferThumb: true,
|
||||
cardLayout: supportsImageAnalysis,
|
||||
vibrant: supportsImageAnalysis,
|
||||
cardFooterAside: 'none'
|
||||
|
||||
});
|
||||
html += '</div>';
|
||||
|
|
|
@ -2800,7 +2800,6 @@ var AppInfo = {};
|
|||
initRequireWithBrowser(browser);
|
||||
|
||||
window.browserInfo = browser;
|
||||
|
||||
setAppInfo();
|
||||
setDocumentClasses(browser);
|
||||
|
||||
|
|
|
@ -61,7 +61,7 @@
|
|||
centerText: true,
|
||||
lazy: true,
|
||||
showTitle: false,
|
||||
overlayPlayButton: AppInfo.enableAppLayouts
|
||||
overlayPlayButton: true
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(['libraryBrowser', 'dom', 'components/categorysyncbuttons', 'cardBuilder', 'scrollStyles', 'emby-itemscontainer', 'emby-tabs', 'emby-button'], function (libraryBrowser, dom, categorysyncbuttons, cardBuilder) {
|
||||
define(['libraryBrowser', 'dom', 'components/categorysyncbuttons', 'cardBuilder', 'apphost', 'scrollStyles', 'emby-itemscontainer', 'emby-tabs', 'emby-button'], function (libraryBrowser, dom, categorysyncbuttons, cardBuilder, appHost) {
|
||||
|
||||
return function (view, params) {
|
||||
|
||||
|
@ -34,6 +34,9 @@
|
|||
}
|
||||
|
||||
var container = view.querySelector('#nextUpItems');
|
||||
|
||||
var supportsImageAnalysis = appHost.supports('imageanalysis');
|
||||
|
||||
cardBuilder.buildCards(result.Items, {
|
||||
itemsContainer: container,
|
||||
preferThumb: true,
|
||||
|
@ -43,7 +46,10 @@
|
|||
showParentTitle: true,
|
||||
overlayText: false,
|
||||
centerText: true,
|
||||
overlayPlayButton: AppInfo.enableAppLayouts
|
||||
overlayPlayButton: true,
|
||||
cardLayout: supportsImageAnalysis,
|
||||
vibrant: supportsImageAnalysis,
|
||||
cardFooterAside: 'none'
|
||||
});
|
||||
|
||||
Dashboard.hideLoadingMsg();
|
||||
|
@ -92,6 +98,7 @@
|
|||
var allowBottomPadding = !enableScrollX();
|
||||
|
||||
var container = view.querySelector('#resumableItems');
|
||||
|
||||
cardBuilder.buildCards(result.Items, {
|
||||
itemsContainer: container,
|
||||
preferThumb: true,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView', 'cardBuilder', 'emby-itemscontainer'], function (events, libraryBrowser, imageLoader, alphaPicker, listView, cardBuilder) {
|
||||
define(['events', 'libraryBrowser', 'imageLoader', 'alphaPicker', 'listView', 'cardBuilder', 'apphost', 'emby-itemscontainer'], function (events, libraryBrowser, imageLoader, alphaPicker, listView, cardBuilder, appHost) {
|
||||
|
||||
return function (view, params, tabContent) {
|
||||
|
||||
|
@ -92,6 +92,8 @@
|
|||
var html;
|
||||
var viewStyle = self.getCurrentViewStyle();
|
||||
|
||||
var supportsImageAnalysis = appHost.supports('imageanalysis');
|
||||
|
||||
if (viewStyle == "Thumb") {
|
||||
|
||||
html = cardBuilder.getCardsHtml({
|
||||
|
@ -114,7 +116,7 @@
|
|||
cardLayout: true,
|
||||
showTitle: true,
|
||||
showSeriesYear: true,
|
||||
vibrant: true
|
||||
vibrant: supportsImageAnalysis
|
||||
});
|
||||
}
|
||||
else if (viewStyle == "Banner") {
|
||||
|
@ -145,7 +147,7 @@
|
|||
showYear: true,
|
||||
lazy: true,
|
||||
cardLayout: true,
|
||||
vibrant: true
|
||||
vibrant: supportsImageAnalysis
|
||||
});
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(['datetime', 'libraryBrowser', 'cardBuilder', 'scrollStyles', 'emby-itemscontainer'], function (datetime, libraryBrowser, cardBuilder) {
|
||||
define(['datetime', 'libraryBrowser', 'cardBuilder', 'apphost', 'scrollStyles', 'emby-itemscontainer'], function (datetime, libraryBrowser, cardBuilder, appHost) {
|
||||
|
||||
function getUpcomingPromise(context, params) {
|
||||
|
||||
|
@ -110,6 +110,8 @@
|
|||
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-wrap">';
|
||||
}
|
||||
|
||||
var supportsImageAnalysis = appHost.supports('imageanalysis');
|
||||
|
||||
html += cardBuilder.getCardsHtml({
|
||||
items: group.items,
|
||||
showLocationTypeIndicator: false,
|
||||
|
@ -121,8 +123,8 @@
|
|||
centerText: true,
|
||||
showParentTitle: true,
|
||||
allowBottomPadding: allowBottomPadding,
|
||||
cardLayout: true,
|
||||
vibrant: true
|
||||
cardLayout: supportsImageAnalysis,
|
||||
vibrant: supportsImageAnalysis
|
||||
|
||||
});
|
||||
html += '</div>';
|
||||
|
|
|
@ -2142,5 +2142,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",
|
||||
"WillRecord": "Will record",
|
||||
"NotScheduledToRecord": "Not scheduled to record"
|
||||
"NotScheduledToRecord": "Not scheduled to record",
|
||||
"SynologyUpdateInstructions": "Please login to DSM and go to Package Center to update."
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue