mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
First separation commit.
Added LICENSE, README.md, CONTRIBUTORS.md
This commit is contained in:
parent
09513af31b
commit
4678528d00
657 changed files with 422 additions and 0 deletions
126
src/scripts/playlists.js
Normal file
126
src/scripts/playlists.js
Normal file
|
@ -0,0 +1,126 @@
|
|||
define(["loading", "listView", "cardBuilder", "libraryMenu", "libraryBrowser", "apphost", "imageLoader", "emby-itemscontainer"], function(loading, listView, cardBuilder, libraryMenu, libraryBrowser, appHost, imageLoader) {
|
||||
"use strict";
|
||||
return function(view, params) {
|
||||
function getPageData(context) {
|
||||
var key = getSavedQueryKey(context),
|
||||
pageData = data[key];
|
||||
return pageData || (pageData = data[key] = {
|
||||
query: {
|
||||
SortBy: "SortName",
|
||||
SortOrder: "Ascending",
|
||||
IncludeItemTypes: "Playlist",
|
||||
Recursive: !0,
|
||||
Fields: "PrimaryImageAspectRatio,SortName,CumulativeRunTimeTicks,CanDelete",
|
||||
StartIndex: 0,
|
||||
Limit: 100
|
||||
},
|
||||
view: libraryBrowser.getSavedView(key) || "Poster"
|
||||
}, pageData.query.ParentId = libraryMenu.getTopParentId(), libraryBrowser.loadSavedQueryValues(key, pageData.query)), pageData
|
||||
}
|
||||
|
||||
function getQuery(context) {
|
||||
return getPageData(context).query
|
||||
}
|
||||
|
||||
function getSavedQueryKey(context) {
|
||||
return context.savedQueryKey || (context.savedQueryKey = libraryBrowser.getSavedQueryKey()), context.savedQueryKey
|
||||
}
|
||||
|
||||
function showLoadingMessage() {
|
||||
loading.show()
|
||||
}
|
||||
|
||||
function hideLoadingMessage() {
|
||||
loading.hide()
|
||||
}
|
||||
|
||||
function onViewStyleChange() {
|
||||
var viewStyle = getPageData(view).view,
|
||||
itemsContainer = view.querySelector(".itemsContainer");
|
||||
"List" == viewStyle ? (itemsContainer.classList.add("vertical-list"), itemsContainer.classList.remove("vertical-wrap")) : (itemsContainer.classList.remove("vertical-list"), itemsContainer.classList.add("vertical-wrap")), itemsContainer.innerHTML = ""
|
||||
}
|
||||
|
||||
function reloadItems() {
|
||||
showLoadingMessage();
|
||||
var query = getQuery(view),
|
||||
promise1 = ApiClient.getItems(Dashboard.getCurrentUserId(), query),
|
||||
promise2 = Dashboard.getCurrentUser();
|
||||
Promise.all([promise1, promise2]).then(function(responses) {
|
||||
var result = responses[0];
|
||||
responses[1];
|
||||
window.scrollTo(0, 0);
|
||||
var html = "",
|
||||
viewStyle = getPageData(view).view;
|
||||
view.querySelector(".listTopPaging").innerHTML = libraryBrowser.getQueryPagingHtml({
|
||||
startIndex: query.StartIndex,
|
||||
limit: query.Limit,
|
||||
totalRecordCount: result.TotalRecordCount,
|
||||
viewButton: !1,
|
||||
showLimit: !1,
|
||||
updatePageSizeSetting: !1,
|
||||
addLayoutButton: !0,
|
||||
layouts: "List,Poster,PosterCard,Thumb,ThumbCard",
|
||||
currentLayout: viewStyle
|
||||
}), result.TotalRecordCount ? (html = "List" == viewStyle ? listView.getListViewHtml({
|
||||
items: result.Items,
|
||||
sortBy: query.SortBy
|
||||
}) : "PosterCard" == viewStyle ? cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "square",
|
||||
coverImage: !0,
|
||||
showTitle: !0,
|
||||
cardLayout: !0,
|
||||
vibrant: !0
|
||||
}) : "Thumb" == viewStyle ? cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
showTitle: !0,
|
||||
centerText: !0,
|
||||
preferThumb: !0,
|
||||
overlayPlayButton: !0
|
||||
}) : "ThumbCard" == viewStyle ? cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "backdrop",
|
||||
showTitle: !0,
|
||||
preferThumb: !0,
|
||||
cardLayout: !0,
|
||||
vibrant: !0
|
||||
}) : cardBuilder.getCardsHtml({
|
||||
items: result.Items,
|
||||
shape: "square",
|
||||
showTitle: !0,
|
||||
coverImage: !0,
|
||||
centerText: !0,
|
||||
overlayPlayButton: !0
|
||||
}), view.querySelector(".noItemsMessage").classList.add("hide")) : view.querySelector(".noItemsMessage").classList.remove("hide");
|
||||
var elem = view.querySelector(".itemsContainer");
|
||||
elem.innerHTML = html, imageLoader.lazyChildren(elem);
|
||||
var btnNextPage = view.querySelector(".btnNextPage");
|
||||
btnNextPage && btnNextPage.addEventListener("click", function() {
|
||||
query.StartIndex += query.Limit, reloadItems()
|
||||
});
|
||||
var btnPreviousPage = view.querySelector(".btnPreviousPage");
|
||||
btnPreviousPage && btnPreviousPage.addEventListener("click", function() {
|
||||
query.StartIndex -= query.Limit, reloadItems()
|
||||
});
|
||||
var btnChangeLayout = view.querySelector(".btnChangeLayout");
|
||||
btnChangeLayout && btnChangeLayout.addEventListener("layoutchange", function(e) {
|
||||
var layout = e.detail.viewStyle;
|
||||
getPageData(view).view = layout, libraryBrowser.saveViewSetting(getSavedQueryKey(view), layout), onViewStyleChange(), reloadItems()
|
||||
}), libraryBrowser.saveQueryValues(getSavedQueryKey(view), query), hideLoadingMessage()
|
||||
})
|
||||
}
|
||||
var data = {};
|
||||
view.addEventListener("viewbeforeshow", function() {
|
||||
reloadItems()
|
||||
}), view.querySelector(".btnNewPlaylist").addEventListener("click", function() {
|
||||
require(["playlistEditor"], function(playlistEditor) {
|
||||
var serverId = ApiClient.serverInfo().Id;
|
||||
(new playlistEditor).show({
|
||||
items: [],
|
||||
serverId: serverId
|
||||
})
|
||||
})
|
||||
}), onViewStyleChange()
|
||||
}
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue