mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
merge from upstream
This commit is contained in:
commit
e82bd8b744
75 changed files with 134 additions and 21102 deletions
|
@ -383,7 +383,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
|
|||
|
||||
for (var i = 0, length = tasks.length; i < length; i++) {
|
||||
var task = tasks[i];
|
||||
|
||||
|
||||
html += "<p>";
|
||||
html += task.Name + "<br/>";
|
||||
if (task.State === "Running") {
|
||||
|
@ -407,8 +407,9 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
|
|||
renderPaths: function (page, systemInfo) {
|
||||
page.querySelector("#cachePath").innerHTML = systemInfo.CachePath;
|
||||
page.querySelector("#logPath").innerHTML = systemInfo.LogPath;
|
||||
page.querySelector("#transcodingTemporaryPath").innerHTML = systemInfo.TranscodingTempPath;
|
||||
page.querySelector("#transcodePath").innerHTML = systemInfo.TranscodingTempPath;
|
||||
page.querySelector("#metadataPath").innerHTML = systemInfo.InternalMetadataPath;
|
||||
page.querySelector("#webPath").innerHTML = systemInfo.WebPath;
|
||||
},
|
||||
startInterval: function (apiClient) {
|
||||
apiClient.sendMessage("SessionsStart", "0,1500");
|
||||
|
|
|
@ -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-linkbutton", "emby-playstatebutton", "emby-ratingbutton", "emby-downloadbutton", "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", "cardBuilder", "datetime", "mediaInfo", "backdrop", "listView", "itemContextMenu", "itemHelper", "dom", "indicators", "apphost", "imageLoader", "libraryMenu", "globalize", "browser", "events", "scrollHelper", "playbackManager", "libraryBrowser", "scrollStyles", "emby-itemscontainer", "emby-checkbox", "emby-linkbutton", "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) {
|
||||
"use strict";
|
||||
|
||||
function getPromise(apiClient, params) {
|
||||
|
@ -33,12 +33,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
|
|||
user: user,
|
||||
share: !0
|
||||
};
|
||||
return appHost.supports("sync") && (options.syncLocal = !1), options
|
||||
}
|
||||
|
||||
function renderSyncLocalContainer(page, params, user, item) {
|
||||
if (appHost.supports("sync"))
|
||||
for (var canSync = itemHelper.canSync(user, item), buttons = page.querySelectorAll(".btnSyncDownload"), i = 0, length = buttons.length; i < length; i++) buttons[i].setItem(item), canSync ? buttons[i].classList.remove("hide") : buttons[i].classList.add("hide")
|
||||
return options;
|
||||
}
|
||||
|
||||
function getProgramScheduleHtml(items, options) {
|
||||
|
@ -286,7 +281,23 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
|
|||
var apiClient = connectionManager.getApiClient(item.ServerId);
|
||||
renderSeriesTimerEditor(page, item, apiClient, user), renderTimerEditor(page, item, apiClient, user), renderImage(page, item, apiClient, user), renderLogo(page, item, apiClient), setTitle(item, apiClient), setInitialCollapsibleState(page, item, apiClient, context, user), renderDetails(page, item, apiClient, context), renderTrackSelections(page, instance, item), dom.getWindowSize().innerWidth >= 1e3 ? backdrop.setBackdrops([item]) : backdrop.clear(), renderDetailPageBackdrop(page, item, apiClient);
|
||||
var canPlay = reloadPlayButtons(page, item);
|
||||
(item.LocalTrailerCount || item.RemoteTrailers && item.RemoteTrailers.length) && -1 !== playbackManager.getSupportedCommands().indexOf("PlayTrailers") ? hideAll(page, "btnPlayTrailer", !0) : hideAll(page, "btnPlayTrailer"), setTrailerButtonVisibility(page, item), item.CanDelete && !item.IsFolder ? hideAll(page, "btnDeleteItem", !0) : hideAll(page, "btnDeleteItem"), renderSyncLocalContainer(page, params, user, item), "Program" !== item.Type || canPlay ? hideAll(page, "mainDetailButtons", !0) : hideAll(page, "mainDetailButtons"), showRecordingFields(instance, page, item, user);
|
||||
if ((item.LocalTrailerCount || item.RemoteTrailers && item.RemoteTrailers.length) && -1 !== playbackManager.getSupportedCommands().indexOf("PlayTrailers")) {
|
||||
hideAll(page, "btnPlayTrailer", true);
|
||||
} else {
|
||||
hideAll(page, "btnPlayTrailer");
|
||||
}
|
||||
setTrailerButtonVisibility(page, item);
|
||||
if (item.CanDelete && !item.IsFolder) {
|
||||
hideAll(page, "btnDeleteItem", true);
|
||||
} else {
|
||||
hideAll(page, "btnDeleteItem");
|
||||
}
|
||||
if ("Program" !== item.Type || canPlay) {
|
||||
hideAll(page, "mainDetailButtons", true);
|
||||
} else {
|
||||
hideAll(page, "mainDetailButtons");
|
||||
}
|
||||
showRecordingFields(instance, page, item, user);
|
||||
var groupedVersions = (item.MediaSources || []).filter(function(g) {
|
||||
return "Grouping" == g.Type
|
||||
});
|
||||
|
@ -1166,30 +1177,55 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
|
|||
}))
|
||||
}
|
||||
}
|
||||
var currentItem, self = this,
|
||||
apiClient = params.serverId ? connectionManager.getApiClient(params.serverId) : ApiClient;
|
||||
|
||||
var currentItem;
|
||||
var self = this;
|
||||
var apiClient = params.serverId ? connectionManager.getApiClient(params.serverId) : ApiClient;
|
||||
view.querySelectorAll(".btnPlay");
|
||||
bindAll(view, ".btnPlay", "click", onPlayClick), bindAll(view, ".btnResume", "click", onPlayClick), bindAll(view, ".btnInstantMix", "click", onInstantMixClick), bindAll(view, ".btnShuffle", "click", onShuffleClick), bindAll(view, ".btnPlayTrailer", "click", onPlayTrailerClick), bindAll(view, ".btnCancelSeriesTimer", "click", onCancelSeriesTimerClick), bindAll(view, ".btnCancelTimer", "click", onCancelTimerClick), bindAll(view, ".btnDeleteItem", "click", onDeleteClick), bindAll(view, ".btnSyncDownload", "download", onDownloadChange), bindAll(view, ".btnSyncDownload", "download-cancel", onDownloadChange), view.querySelector(".btnMoreCommands i").innerHTML = "", view.querySelector(".trackSelections").addEventListener("submit", onTrackSelectionsSubmit), view.querySelector(".btnSplitVersions").addEventListener("click", function() {
|
||||
bindAll(view, ".btnPlay", "click", onPlayClick);
|
||||
bindAll(view, ".btnResume", "click", onPlayClick);
|
||||
bindAll(view, ".btnInstantMix", "click", onInstantMixClick);
|
||||
bindAll(view, ".btnShuffle", "click", onShuffleClick);
|
||||
bindAll(view, ".btnPlayTrailer", "click", onPlayTrailerClick);
|
||||
bindAll(view, ".btnCancelSeriesTimer", "click", onCancelSeriesTimerClick);
|
||||
bindAll(view, ".btnCancelTimer", "click", onCancelTimerClick);
|
||||
bindAll(view, ".btnDeleteItem", "click", onDeleteClick);
|
||||
view.querySelector(".btnMoreCommands i").innerHTML = "";
|
||||
view.querySelector(".trackSelections").addEventListener("submit", onTrackSelectionsSubmit);
|
||||
view.querySelector(".btnSplitVersions").addEventListener("click", function() {
|
||||
splitVersions(self, view, apiClient, params)
|
||||
}), bindAll(view, ".btnMoreCommands", "click", onMoreCommandsClick), view.querySelector(".selectSource").addEventListener("change", function() {
|
||||
renderVideoSelections(view, self._currentPlaybackMediaSources), renderAudioSelections(view, self._currentPlaybackMediaSources), renderSubtitleSelections(view, self._currentPlaybackMediaSources)
|
||||
}), view.addEventListener("click", function(e) {
|
||||
});
|
||||
bindAll(view, ".btnMoreCommands", "click", onMoreCommandsClick);
|
||||
view.querySelector(".selectSource").addEventListener("change", function() {
|
||||
renderVideoSelections(view, self._currentPlaybackMediaSources);
|
||||
renderAudioSelections(view, self._currentPlaybackMediaSources);
|
||||
renderSubtitleSelections(view, self._currentPlaybackMediaSources);
|
||||
});
|
||||
view.addEventListener("click", function(e) {
|
||||
dom.parentWithClass(e.target, "moreScenes") ? apiClient.getCurrentUser().then(function(user) {
|
||||
renderScenes(view, currentItem)
|
||||
}) : dom.parentWithClass(e.target, "morePeople") ? renderCast(view, currentItem, params.context) : dom.parentWithClass(e.target, "moreSpecials") && apiClient.getCurrentUser().then(function(user) {
|
||||
renderSpecials(view, currentItem, user)
|
||||
})
|
||||
}), view.querySelector(".detailImageContainer").addEventListener("click", function(e) {
|
||||
});
|
||||
view.querySelector(".detailImageContainer").addEventListener("click", function(e) {
|
||||
dom.parentWithClass(e.target, "itemDetailGalleryLink") && editImages().then(function() {
|
||||
reload(self, view, params)
|
||||
})
|
||||
}), view.addEventListener("viewshow", function(e) {
|
||||
});
|
||||
view.addEventListener("viewshow", function(e) {
|
||||
var page = this;
|
||||
libraryMenu.setTransparentMenu(!0), e.detail.isRestored ? currentItem && (setTitle(currentItem, connectionManager.getApiClient(currentItem.ServerId)), renderTrackSelections(page, self, currentItem, !0)) : reload(self, page, params), events.on(apiClient, "message", onWebSocketMessage), events.on(playbackManager, "playerchange", onPlayerChange)
|
||||
}), view.addEventListener("viewbeforehide", function() {
|
||||
events.off(apiClient, "message", onWebSocketMessage), events.off(playbackManager, "playerchange", onPlayerChange), libraryMenu.setTransparentMenu(!1)
|
||||
}), view.addEventListener("viewdestroy", function() {
|
||||
currentItem = null, self._currentPlaybackMediaSources = null, self.currentRecordingFields = null
|
||||
});
|
||||
view.addEventListener("viewbeforehide", function() {
|
||||
events.off(apiClient, "message", onWebSocketMessage);
|
||||
events.off(playbackManager, "playerchange", onPlayerChange);
|
||||
libraryMenu.setTransparentMenu(false);
|
||||
});
|
||||
view.addEventListener("viewdestroy", function() {
|
||||
currentItem = null;
|
||||
self._currentPlaybackMediaSources = null;
|
||||
self.currentRecordingFields = null;
|
||||
})
|
||||
}
|
||||
});
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(["layoutManager", "loading", "components/categorysyncbuttons", "cardBuilder", "apphost", "imageLoader", "scripts/livetvcomponents", "listViewStyle", "emby-itemscontainer"], function(layoutManager, loading, categorysyncbuttons, cardBuilder, appHost, imageLoader) {
|
||||
define(["layoutManager", "loading", "cardBuilder", "apphost", "imageLoader", "scripts/livetvcomponents", "listViewStyle", "emby-itemscontainer"], function(layoutManager, loading, cardBuilder, appHost, imageLoader) {
|
||||
"use strict";
|
||||
|
||||
function renderRecordings(elem, recordings, cardOptions, scrollX) {
|
||||
|
@ -54,7 +54,6 @@ define(["layoutManager", "loading", "components/categorysyncbuttons", "cardBuild
|
|||
}
|
||||
var foldersPromise, latestPromise, self = this,
|
||||
lastFullRender = 0;
|
||||
categorysyncbuttons.init(tabContent);
|
||||
for (var moreButtons = tabContent.querySelectorAll(".more"), i = 0, length = moreButtons.length; i < length; i++) moreButtons[i].addEventListener("click", onMoreClick);
|
||||
self.preRender = function() {
|
||||
enableFullRender() && (latestPromise = ApiClient.getLiveTvRecordings({
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu", "mainTabsManager", "components/categorysyncbuttons", "cardBuilder", "dom", "imageLoader", "playbackManager", "emby-itemscontainer", "emby-tabs", "emby-button"], function(events, layoutManager, inputManager, userSettings, libraryMenu, mainTabsManager, categorysyncbuttons, cardBuilder, dom, imageLoader, playbackManager) {
|
||||
define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu", "mainTabsManager", "cardBuilder", "dom", "imageLoader", "playbackManager", "emby-itemscontainer", "emby-tabs", "emby-button"], function(events, layoutManager, inputManager, userSettings, libraryMenu, mainTabsManager, cardBuilder, dom, imageLoader, playbackManager) {
|
||||
"use strict";
|
||||
|
||||
function enableScrollX() {
|
||||
|
@ -250,7 +250,7 @@ define(["events", "layoutManager", "inputManager", "userSettings", "libraryMenu"
|
|||
suggestionsTabIndex = 1;
|
||||
self.initTab = function() {
|
||||
var tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']");
|
||||
categorysyncbuttons.init(tabContent), initSuggestedTab(view, tabContent)
|
||||
initSuggestedTab(view, tabContent);
|
||||
}, self.renderTab = function() {
|
||||
var tabContent = view.querySelector(".pageTabContent[data-index='" + suggestionsTabIndex + "']");
|
||||
loadSuggestionsTab(view, params, tabContent)
|
||||
|
|
|
@ -275,7 +275,7 @@ var AppInfo = {};
|
|||
var credentialProviderInstance = new credentialProvider();
|
||||
var promises = [apphost.getSyncProfile(), apphost.init()];
|
||||
|
||||
Promise.all(promises).then(function (responses) {
|
||||
return Promise.all(promises).then(function (responses) {
|
||||
var deviceProfile = responses[0];
|
||||
var capabilities = Dashboard.capabilities(apphost);
|
||||
|
||||
|
@ -293,7 +293,7 @@ var AppInfo = {};
|
|||
console.log("creating ApiClient singleton");
|
||||
|
||||
var apiClient = new apiClientFactory(Dashboard.serverAddress(), apphost.appName(), apphost.appVersion(), apphost.deviceName(), apphost.deviceId(), window.devicePixelRatio);
|
||||
|
||||
|
||||
apiClient.enableAutomaticNetworking = false;
|
||||
apiClient.manualAddressOnly = true;
|
||||
|
||||
|
@ -1086,7 +1086,6 @@ var AppInfo = {};
|
|||
function loadPlugins(externalPlugins, appHost, browser, shell) {
|
||||
console.log("Loading installed plugins");
|
||||
var list = [
|
||||
"components/playback/playbackvalidation",
|
||||
"components/playback/playaccessvalidation",
|
||||
"components/playback/experimentalwarnings",
|
||||
"components/htmlaudioplayer/plugin",
|
||||
|
@ -1366,7 +1365,6 @@ var AppInfo = {};
|
|||
define("programStyles", ["css!" + componentsPath + "/guide/programs"], returnFirstDependency);
|
||||
define("guide-settings-dialog", [componentsPath + "/guide/guide-settings"], returnFirstDependency);
|
||||
define("loadingDialog", [componentsPath + "/loadingdialog/loadingdialog"], returnFirstDependency);
|
||||
define("syncDialog", [componentsPath + "/sync/sync"], returnFirstDependency);
|
||||
define("viewManager", [componentsPath + "/viewmanager/viewmanager"], function (viewManager) {
|
||||
window.ViewManager = viewManager;
|
||||
viewManager.dispatchPageEvents(true);
|
||||
|
@ -1375,7 +1373,7 @@ var AppInfo = {};
|
|||
|
||||
paths.apphost = "components/apphost";
|
||||
paths.appStorage = getAppStorage(apiClientBowerPath);
|
||||
|
||||
|
||||
requirejs.config({
|
||||
waitSeconds: 0,
|
||||
map: {
|
||||
|
@ -1401,7 +1399,6 @@ var AppInfo = {};
|
|||
define("userdataButtons", [componentsPath + "/userdatabuttons/userdatabuttons"], returnFirstDependency);
|
||||
define("emby-playstatebutton", [componentsPath + "/userdatabuttons/emby-playstatebutton"], returnFirstDependency);
|
||||
define("emby-ratingbutton", [componentsPath + "/userdatabuttons/emby-ratingbutton"], returnFirstDependency);
|
||||
define("emby-downloadbutton", [componentsPath + "/sync/emby-downloadbutton"], returnFirstDependency);
|
||||
define("listView", [componentsPath + "/listview/listview"], returnFirstDependency);
|
||||
define("listViewStyle", ["css!" + componentsPath + "/listview/listview"], returnFirstDependency);
|
||||
define("formDialogStyle", ["css!" + componentsPath + "/formdialog"], returnFirstDependency);
|
||||
|
@ -1409,7 +1406,6 @@ var AppInfo = {};
|
|||
define("viewSettings", [componentsPath + "/viewsettings/viewsettings"], returnFirstDependency);
|
||||
define("filterMenu", [componentsPath + "/filtermenu/filtermenu"], returnFirstDependency);
|
||||
define("sortMenu", [componentsPath + "/sortmenu/sortmenu"], returnFirstDependency);
|
||||
define("registrationServices", [componentsPath + "/registrationservices/registrationservices"], returnFirstDependency);
|
||||
define("connectionmanager", [apiClientBowerPath + "/connectionmanager"]);
|
||||
define("serversync", [apiClientBowerPath + "/sync/serversync"], returnFirstDependency);
|
||||
define("multiserversync", [apiClientBowerPath + "/sync/multiserversync"], returnFirstDependency);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(["loading", "components/categorysyncbuttons", "components/groupedcards", "cardBuilder", "apphost", "imageLoader"], function(loading, categorysyncbuttons, groupedcards, cardBuilder, appHost, imageLoader) {
|
||||
define(["loading", "components/groupedcards", "cardBuilder", "apphost", "imageLoader"], function(loading, groupedcards, cardBuilder, appHost, imageLoader) {
|
||||
"use strict";
|
||||
|
||||
function getLatestPromise(context, params) {
|
||||
|
@ -43,7 +43,6 @@ define(["loading", "components/categorysyncbuttons", "components/groupedcards",
|
|||
}
|
||||
return function(view, params, tabContent) {
|
||||
var self = this;
|
||||
categorysyncbuttons.init(tabContent);
|
||||
var latestPromise;
|
||||
self.preRender = function() {
|
||||
latestPromise = getLatestPromise(view, params)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "dom", "components/categorysyncbuttons", "userSettings", "cardBuilder", "playbackManager", "mainTabsManager", "scrollStyles", "emby-itemscontainer", "emby-button"], function(events, inputManager, libraryMenu, layoutManager, loading, dom, categorysyncbuttons, userSettings, cardBuilder, playbackManager, mainTabsManager) {
|
||||
define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "dom", "userSettings", "cardBuilder", "playbackManager", "mainTabsManager", "scrollStyles", "emby-itemscontainer", "emby-button"], function(events, inputManager, libraryMenu, layoutManager, loading, dom, userSettings, cardBuilder, playbackManager, mainTabsManager) {
|
||||
"use strict";
|
||||
|
||||
function getTabs() {
|
||||
|
@ -204,7 +204,7 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do
|
|||
initialTabIndex = currentTabIndex;
|
||||
self.initTab = function() {
|
||||
var tabContent = self.tabContent;
|
||||
setScrollClasses(tabContent.querySelector("#resumableItems"), enableScrollX()), categorysyncbuttons.init(tabContent)
|
||||
setScrollClasses(tabContent.querySelector("#resumableItems"), enableScrollX());
|
||||
}, self.renderTab = function() {
|
||||
reload()
|
||||
};
|
||||
|
@ -226,4 +226,4 @@ define(["events", "inputManager", "libraryMenu", "layoutManager", "loading", "do
|
|||
})
|
||||
})
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue