1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Merge pull request #27 from hawken93/fix_503

Stop pagination and adding a library from being able to trigger multiple times
This commit is contained in:
Vasily 2019-01-19 19:51:06 +03:00 committed by GitHub
commit 7417b844f0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 267 additions and 110 deletions

View file

@ -2,30 +2,48 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed
"use strict"; "use strict";
function onSubmit(e) { function onSubmit(e) {
if (e.preventDefault(), e.stopPropagation(), 0 == pathInfos.length) return require(["alert"], function(alert) { e.preventDefault();
alert({ e.stopPropagation();
text: Globalize.translate("PleaseAddAtLeastOneFolder"),
type: "error" if (isCreating) return false;
})
}), !1; if (pathInfos.length == 0) {
var form = this, require(["alert"], function(alert) {
dlg = $(form).parents(".dialog")[0], alert({
name = $("#txtValue", form).val(), text: Globalize.translate("PleaseAddAtLeastOneFolder"),
type = $("#selectCollectionType", form).val(); type: "error"
"mixed" == type && (type = null); })
var libraryOptions = libraryoptionseditor.getLibraryOptions(dlg.querySelector(".libraryOptions")); });
return libraryOptions.PathInfos = pathInfos, ApiClient.addVirtualFolder(name, type, currentOptions.refresh, libraryOptions).then(function() { } else {
hasChanges = !0, dialogHelper.close(dlg) isCreating = true;
}, function() { loading.show();
require(["toast"], function(toast) {
toast(Globalize.translate("ErrorAddingMediaPathToVirtualFolder")) var form = this,
}) dlg = $(form).parents(".dialog")[0],
}), !1 name = $("#txtValue", form).val(),
type = $("#selectCollectionType", form).val();
if (type == "mixed") type = null;
var libraryOptions = libraryoptionseditor.getLibraryOptions(dlg.querySelector(".libraryOptions"));
libraryOptions.PathInfos = pathInfos;
ApiClient.addVirtualFolder(name, type, currentOptions.refresh, libraryOptions).then(function() {
hasChanges = true;
isCreating = false;
loading.hide();
dialogHelper.close(dlg);
}, function() {
require(["toast"], function(toast) {
toast(Globalize.translate("ErrorAddingMediaPathToVirtualFolder"))
})
isCreating = false;
loading.hide();
});
}
return false;
} }
function getCollectionTypeOptionsHtml(collectionTypeOptions) { function getCollectionTypeOptionsHtml(collectionTypeOptions) {
return collectionTypeOptions.filter(function(i) { return collectionTypeOptions.filter(function(i) {
return !1 !== i.isSelectable return i.isSelectable
}).map(function(i) { }).map(function(i) {
return '<option value="' + i.value + '">' + i.name + "</option>" return '<option value="' + i.value + '">' + i.name + "</option>"
}).join("") }).join("")
@ -35,9 +53,15 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed
$("#selectCollectionType", page).html(getCollectionTypeOptionsHtml(collectionTypeOptions)).val("").on("change", function() { $("#selectCollectionType", page).html(getCollectionTypeOptionsHtml(collectionTypeOptions)).val("").on("change", function() {
var value = this.value, var value = this.value,
dlg = $(this).parents(".dialog")[0]; dlg = $(this).parents(".dialog")[0];
if (libraryoptionseditor.setContentType(dlg.querySelector(".libraryOptions"), "mixed" == value ? "" : value), value ? dlg.querySelector(".libraryOptions").classList.remove("hide") : dlg.querySelector(".libraryOptions").classList.add("hide"), "mixed" != value) { libraryoptionseditor.setContentType(dlg.querySelector(".libraryOptions"), value == "mixed" ? "" : value);
if (value)
dlg.querySelector(".libraryOptions").classList.remove("hide");
else
dlg.querySelector(".libraryOptions").classList.add("hide");
if (value != "mixed") {
var index = this.selectedIndex; var index = this.selectedIndex;
if (-1 != index) { if (index != -1) {
var name = this.options[index].innerHTML.replace("*", "").replace("&amp;", "&"); var name = this.options[index].innerHTML.replace("*", "").replace("&amp;", "&");
$("#txtValue", dlg).val(name); $("#txtValue", dlg).val(name);
var folderOption = collectionTypeOptions.filter(function(i) { var folderOption = collectionTypeOptions.filter(function(i) {
@ -59,7 +83,7 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed
require(["directorybrowser"], function(directoryBrowser) { require(["directorybrowser"], function(directoryBrowser) {
var picker = new directoryBrowser; var picker = new directoryBrowser;
picker.show({ picker.show({
enableNetworkSharePath: !0, enableNetworkSharePath: true,
callback: function(path, networkSharePath) { callback: function(path, networkSharePath) {
path && addMediaLocation(page, path, networkSharePath), picker.close() path && addMediaLocation(page, path, networkSharePath), picker.close()
} }
@ -101,7 +125,10 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed
} }
function onDialogClosed() { function onDialogClosed() {
loading.hide(), currentResolve(hasChanges) // I can't see any corresponding call to loading.show,
// so I think this is not supposed to be here.
loading.hide();
currentResolve(hasChanges);
} }
function initLibraryOptions(dlg) { function initLibraryOptions(dlg) {
@ -113,23 +140,36 @@ define(["loading", "dialogHelper", "dom", "jQuery", "components/libraryoptionsed
function editor() { function editor() {
this.show = function(options) { this.show = function(options) {
return new Promise(function(resolve, reject) { return new Promise(function(resolve, reject) {
currentOptions = options, currentResolve = resolve, hasChanges = !1; currentOptions = options, currentResolve = resolve, hasChanges = false;
var xhr = new XMLHttpRequest; var xhr = new XMLHttpRequest;
xhr.open("GET", "components/medialibrarycreator/medialibrarycreator.template.html", !0), xhr.onload = function(e) { xhr.open("GET", "components/medialibrarycreator/medialibrarycreator.template.html", true);
xhr.onload = function(e) {
var template = this.response, var template = this.response,
dlg = dialogHelper.createDialog({ dlg = dialogHelper.createDialog({
size: "medium-tall", size: "medium-tall",
modal: !1, modal: false,
removeOnClose: !0, removeOnClose: true,
scrollY: !1 scrollY: false
}); });
dlg.classList.add("ui-body-a"), dlg.classList.add("background-theme-a"), dlg.classList.add("dlg-librarycreator"), dlg.classList.add("formDialog"), dlg.innerHTML = Globalize.translateDocument(template), initEditor(dlg, options.collectionTypeOptions), dlg.addEventListener("close", onDialogClosed), dialogHelper.open(dlg), dlg.querySelector(".btnCancel").addEventListener("click", function() { dlg.classList.add("ui-body-a");
dlg.classList.add("background-theme-a");
dlg.classList.add("dlg-librarycreator");
dlg.classList.add("formDialog");
dlg.innerHTML = Globalize.translateDocument(template);
initEditor(dlg, options.collectionTypeOptions);
dlg.addEventListener("close", onDialogClosed);
dialogHelper.open(dlg);
dlg.querySelector(".btnCancel").addEventListener("click", function() {
dialogHelper.close(dlg) dialogHelper.close(dlg)
}), pathInfos = [], renderPaths(dlg), initLibraryOptions(dlg) });
}, xhr.send() pathInfos = [];
renderPaths(dlg);
initLibraryOptions(dlg);
};
xhr.send();
}) })
} }
} }
var currentResolve, hasChanges, currentOptions, pathInfos = []; var currentResolve, hasChanges, currentOptions, pathInfos = [], isCreating = false;
return editor return editor
}); });

View file

@ -37,15 +37,21 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB
function reloadItems(page) { function reloadItems(page) {
loading.show(); loading.show();
isLoading = true;
var query = getQuery(page); var query = getQuery(page);
ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function(result) { ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function(result) {
function onNextPageClick() { function onNextPageClick() {
query.StartIndex += query.Limit, reloadItems(tabContent) if (isLoading) return;
query.StartIndex += query.Limit;
reloadItems(tabContent)
} }
function onPreviousPageClick() { function onPreviousPageClick() {
query.StartIndex -= query.Limit, reloadItems(tabContent) if (isLoading) return;
query.StartIndex -= query.Limit;
reloadItems(tabContent)
} }
window.scrollTo(0, 0); window.scrollTo(0, 0);
var html, pagingHtml = libraryBrowser.getQueryPagingHtml({ var html, pagingHtml = libraryBrowser.getQueryPagingHtml({
startIndex: query.StartIndex, startIndex: query.StartIndex,
@ -80,16 +86,24 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB
scalable: !0, scalable: !0,
overlayPlayButton: !0 overlayPlayButton: !0
}); });
var i, length, elems = tabContent.querySelectorAll(".paging"); var i, length, elems;
for (i = 0, length = elems.length; i < length; i++) elems[i].innerHTML = pagingHtml; for (elems = tabContent.querySelectorAll(".paging"), i = 0, length = elems.length; i < length; i++)
for (elems = tabContent.querySelectorAll(".btnNextPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onNextPageClick); elems[i].innerHTML = pagingHtml;
for (elems = tabContent.querySelectorAll(".btnPreviousPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onPreviousPageClick); for (elems = tabContent.querySelectorAll(".btnNextPage"), i = 0, length = elems.length; i < length; i++)
itemsContainer.innerHTML = html, imageLoader.lazyChildren(itemsContainer), libraryBrowser.saveQueryValues(getSavedQueryKey(page), query), loading.hide() elems[i].addEventListener("click", onNextPageClick);
for (elems = tabContent.querySelectorAll(".btnPreviousPage"), i = 0, length = elems.length; i < length; i++)
elems[i].addEventListener("click", onPreviousPageClick);
itemsContainer.innerHTML = html;
imageLoader.lazyChildren(itemsContainer);
libraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
loading.hide();
isLoading = false;
}) })
} }
var self = this, var self = this,
pageSize = 100, pageSize = 100,
data = {}; data = {},
isLoading = false;
self.showFilterMenu = function() { self.showFilterMenu = function() {
require(["components/filterdialog/filterdialog"], function(filterDialogFactory) { require(["components/filterdialog/filterdialog"], function(filterDialogFactory) {
var filterDialog = new filterDialogFactory({ var filterDialog = new filterDialogFactory({
@ -152,4 +166,4 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB
reloadItems(tabContent) reloadItems(tabContent)
}, self.destroy = function() {} }, self.destroy = function() {}
} }
}); });

View file

@ -30,10 +30,12 @@ define(["cardBuilder", "imageLoader", "libraryBrowser", "loading", "events", "em
function renderChannels(context, result) { function renderChannels(context, result) {
function onNextPageClick() { function onNextPageClick() {
if (isLoading) return;
query.StartIndex += query.Limit, reloadItems(context) query.StartIndex += query.Limit, reloadItems(context)
} }
function onPreviousPageClick() { function onPreviousPageClick() {
if (isLoading) return;
query.StartIndex -= query.Limit, reloadItems(context) query.StartIndex -= query.Limit, reloadItems(context)
} }
var query = getQuery(); var query = getQuery();
@ -68,17 +70,20 @@ define(["cardBuilder", "imageLoader", "libraryBrowser", "loading", "events", "em
function reloadItems(context, save) { function reloadItems(context, save) {
loading.show(); loading.show();
isLoading = true;
var query = getQuery(), var query = getQuery(),
apiClient = ApiClient; apiClient = ApiClient;
query.UserId = apiClient.getCurrentUserId(), apiClient.getLiveTvChannels(query).then(function(result) { query.UserId = apiClient.getCurrentUserId(), apiClient.getLiveTvChannels(query).then(function(result) {
renderChannels(context, result), loading.hide() renderChannels(context, result);
loading.hide();
isLoading = false;
}) })
} }
var pageData, self = this; var pageData, self = this, isLoading = false;
tabContent.querySelector(".btnFilter").addEventListener("click", function() { tabContent.querySelector(".btnFilter").addEventListener("click", function() {
showFilterMenu(tabContent) showFilterMenu(tabContent)
}), self.renderTab = function() { }), self.renderTab = function() {
reloadItems(tabContent) reloadItems(tabContent)
} }
} }
}); });

View file

@ -4,20 +4,25 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB
function getPageData(context) { function getPageData(context) {
var key = getSavedQueryKey(context), var key = getSavedQueryKey(context),
pageData = data[key]; pageData = data[key];
return pageData || (pageData = data[key] = { if (!pageData) {
query: { pageData = data[key] = {
SortBy: "SortName", query: {
SortOrder: "Ascending", SortBy: "SortName",
IncludeItemTypes: "BoxSet", SortOrder: "Ascending",
Recursive: !0, IncludeItemTypes: "BoxSet",
Fields: "PrimaryImageAspectRatio,SortName", Recursive: true,
ImageTypeLimit: 1, Fields: "PrimaryImageAspectRatio,SortName",
EnableImageTypes: "Primary,Backdrop,Banner,Thumb", ImageTypeLimit: 1,
StartIndex: 0, EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
Limit: pageSize StartIndex: 0,
}, Limit: pageSize
view: libraryBrowser.getSavedView(key) || "Poster" },
}, pageData.query.ParentId = params.topParentId, libraryBrowser.loadSavedQueryValues(key, pageData.query)), pageData view: libraryBrowser.getSavedView(key) || "Poster"
};
pageData.query.ParentId = params.topParentId;
libraryBrowser.loadSavedQueryValues(key, pageData.query);
}
return pageData;
} }
function getQuery(context) { function getQuery(context) {
@ -36,13 +41,16 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB
function reloadItems(page) { function reloadItems(page) {
loading.show(); loading.show();
isLoading = true;
var query = getQuery(page); var query = getQuery(page);
ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function(result) { ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function(result) {
function onNextPageClick() { function onNextPageClick() {
if (isLoading) return;
query.StartIndex += query.Limit, reloadItems(tabContent) query.StartIndex += query.Limit, reloadItems(tabContent)
} }
function onPreviousPageClick() { function onPreviousPageClick() {
if (isLoading) return;
query.StartIndex -= query.Limit, reloadItems(tabContent) query.StartIndex -= query.Limit, reloadItems(tabContent)
} }
window.scrollTo(0, 0); window.scrollTo(0, 0);
@ -106,12 +114,17 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB
for (elems = tabContent.querySelectorAll(".btnPreviousPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onPreviousPageClick); for (elems = tabContent.querySelectorAll(".btnPreviousPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onPreviousPageClick);
result.Items.length || (html = '<p style="text-align:center;">' + Globalize.translate("MessageNoCollectionsAvailable") + "</p>"); result.Items.length || (html = '<p style="text-align:center;">' + Globalize.translate("MessageNoCollectionsAvailable") + "</p>");
var itemsContainer = tabContent.querySelector(".itemsContainer"); var itemsContainer = tabContent.querySelector(".itemsContainer");
itemsContainer.innerHTML = html, imageLoader.lazyChildren(itemsContainer), libraryBrowser.saveQueryValues(getSavedQueryKey(page), query), loading.hide() itemsContainer.innerHTML = html;
imageLoader.lazyChildren(itemsContainer);
libraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
loading.hide();
isLoading = false;
}) })
} }
var self = this, var self = this,
pageSize = 100, pageSize = 100,
data = {}; data = {},
isLoading = false;
self.getCurrentViewStyle = function() { self.getCurrentViewStyle = function() {
return getPageData(tabContent).view return getPageData(tabContent).view
}, },
@ -160,4 +173,4 @@ define(["loading", "events", "libraryBrowser", "imageLoader", "listView", "cardB
reloadItems(tabContent) reloadItems(tabContent)
}, self.destroy = function() {} }, self.destroy = function() {}
} }
}); });

View file

@ -1,8 +1,16 @@
define(["layoutManager", "userSettings", "events", "libraryBrowser", "alphaPicker", "listView", "cardBuilder", "emby-itemscontainer"], function(layoutManager, userSettings, events, libraryBrowser, alphaPicker, listView, cardBuilder) { define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser", "alphaPicker", "listView", "cardBuilder", "emby-itemscontainer"],
function(loading, layoutManager, userSettings, events, libraryBrowser, alphaPicker, listView, cardBuilder) {
"use strict"; "use strict";
return function(view, params, tabContent, options) { return function(view, params, tabContent, options) {
function onViewStyleChange() { function onViewStyleChange() {
"List" == self.getCurrentViewStyle() ? (itemsContainer.classList.add("vertical-list"), itemsContainer.classList.remove("vertical-wrap")) : (itemsContainer.classList.remove("vertical-list"), itemsContainer.classList.add("vertical-wrap")), itemsContainer.innerHTML = "" if (self.getCurrentViewStyle() == "List") {
itemsContainer.classList.add("vertical-list");
itemsContainer.classList.remove("vertical-wrap");
} else {
itemsContainer.classList.remove("vertical-list");
itemsContainer.classList.add("vertical-wrap");
}
itemsContainer.innerHTML = "";
} }
function updateFilterControls() { function updateFilterControls() {
@ -10,19 +18,26 @@ define(["layoutManager", "userSettings", "events", "libraryBrowser", "alphaPicke
} }
function fetchData() { function fetchData() {
isLoading = true;
loading.show();
return ApiClient.getItems(ApiClient.getCurrentUserId(), query) return ApiClient.getItems(ApiClient.getCurrentUserId(), query)
} }
function afterRefresh(result) { function afterRefresh(result) {
function onNextPageClick() { function onNextPageClick() {
query.StartIndex += query.Limit, itemsContainer.refreshItems() if (isLoading) return;
query.StartIndex += query.Limit;
itemsContainer.refreshItems();
} }
function onPreviousPageClick() { function onPreviousPageClick() {
query.StartIndex -= query.Limit, itemsContainer.refreshItems() if (isLoading) return;
query.StartIndex -= query.Limit;
itemsContainer.refreshItems();
} }
window.scrollTo(0, 0), updateFilterControls(); window.scrollTo(0, 0);
var i, length, pagingHtml = libraryBrowser.getQueryPagingHtml({ updateFilterControls();
var i, length, elems, pagingHtml = libraryBrowser.getQueryPagingHtml({
startIndex: query.StartIndex, startIndex: query.StartIndex,
limit: query.Limit, limit: query.Limit,
totalRecordCount: result.TotalRecordCount, totalRecordCount: result.TotalRecordCount,
@ -31,11 +46,15 @@ define(["layoutManager", "userSettings", "events", "libraryBrowser", "alphaPicke
addLayoutButton: !1, addLayoutButton: !1,
sortButton: !1, sortButton: !1,
filterButton: !1 filterButton: !1
}), });
elems = tabContent.querySelectorAll(".paging"); for (elems = tabContent.querySelectorAll(".paging"), i = 0, length = elems.length; i < length; i++)
for (i = 0, length = elems.length; i < length; i++) elems[i].innerHTML = pagingHtml; elems[i].innerHTML = pagingHtml;
for (elems = tabContent.querySelectorAll(".btnNextPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onNextPageClick); for (elems = tabContent.querySelectorAll(".btnNextPage"), i = 0, length = elems.length; i < length; i++)
for (elems = tabContent.querySelectorAll(".btnPreviousPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onPreviousPageClick) elems[i].addEventListener("click", onNextPageClick);
for (elems = tabContent.querySelectorAll(".btnPreviousPage"), i = 0, length = elems.length; i < length; i++)
elems[i].addEventListener("click", onPreviousPageClick)
isLoading = false;
loading.hide();
} }
function getItemsHtml(items) { function getItemsHtml(items) {
@ -89,15 +108,27 @@ define(["layoutManager", "userSettings", "events", "libraryBrowser", "alphaPicke
} }
function initPage(tabContent) { function initPage(tabContent) {
itemsContainer.fetchData = fetchData, itemsContainer.getItemsHtml = getItemsHtml, itemsContainer.afterRefresh = afterRefresh; itemsContainer.fetchData = fetchData;
itemsContainer.getItemsHtml = getItemsHtml;
itemsContainer.afterRefresh = afterRefresh;
var alphaPickerElement = tabContent.querySelector(".alphaPicker"); var alphaPickerElement = tabContent.querySelector(".alphaPicker");
alphaPickerElement && (alphaPickerElement.addEventListener("alphavaluechanged", function(e) { if (alphaPickerElement) {
var newValue = e.detail.value; alphaPickerElement.addEventListener("alphavaluechanged", function(e) {
query.NameStartsWithOrGreater = newValue, query.StartIndex = 0, itemsContainer.refreshItems() var newValue = e.detail.value;
}), self.alphaPicker = new alphaPicker({ query.NameStartsWithOrGreater = newValue;
element: alphaPickerElement, query.StartIndex = 0;
valueChangeEvent: "click" itemsContainer.refreshItems();
}), (layoutManager.desktop || layoutManager.mobile) && (alphaPickerElement.classList.add("alphabetPicker-right"), itemsContainer.classList.remove("padded-left-withalphapicker"), itemsContainer.classList.add("padded-right-withalphapicker"))); });
self.alphaPicker = new alphaPicker({
element: alphaPickerElement,
valueChangeEvent: "click"
});
if (layoutManager.desktop || layoutManager.mobile) {
alphaPickerElement.classList.add("alphabetPicker-right");
itemsContainer.classList.remove("padded-left-withalphapicker");
itemsContainer.classList.add("padded-right-withalphapicker");
}
}
var btnFilter = tabContent.querySelector(".btnFilter"); var btnFilter = tabContent.querySelector(".btnFilter");
btnFilter && btnFilter.addEventListener("click", function() { btnFilter && btnFilter.addEventListener("click", function() {
self.showFilterMenu() self.showFilterMenu()
@ -145,7 +176,10 @@ define(["layoutManager", "userSettings", "events", "libraryBrowser", "alphaPicke
libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), "Banner,List,Poster,PosterCard,Thumb,ThumbCard".split(",")) libraryBrowser.showLayoutMenu(e.target, self.getCurrentViewStyle(), "Banner,List,Poster,PosterCard,Thumb,ThumbCard".split(","))
}), btnSelectView.addEventListener("layoutchange", function(e) { }), btnSelectView.addEventListener("layoutchange", function(e) {
var viewStyle = e.detail.viewStyle; var viewStyle = e.detail.viewStyle;
userSettings.set(savedViewKey, viewStyle), query.StartIndex = 0, onViewStyleChange(), itemsContainer.refreshItems() userSettings.set(savedViewKey, viewStyle);
query.StartIndex = 0;
onViewStyleChange();
itemsContainer.refreshItems();
}) })
} }
var self = this, var self = this,
@ -163,8 +197,11 @@ define(["layoutManager", "userSettings", "events", "libraryBrowser", "alphaPicke
StartIndex: 0, StartIndex: 0,
Limit: 100, Limit: 100,
ParentId: params.topParentId ParentId: params.topParentId
}; },
"favorites" === options.mode && (query.IsFavorite = !0), query = userSettings.loadQuerySettings(savedQueryKey, query), self.showFilterMenu = function() { isLoading = false;
if (options.mode === "favorites") query.IsFavorite = true;
query = userSettings.loadQuerySettings(savedQueryKey, query);
self.showFilterMenu = function() {
require(["components/filterdialog/filterdialog"], function(filterDialogFactory) { require(["components/filterdialog/filterdialog"], function(filterDialogFactory) {
var filterDialog = new filterDialogFactory({ var filterDialog = new filterDialogFactory({
query: query, query: query,
@ -175,14 +212,20 @@ define(["layoutManager", "userSettings", "events", "libraryBrowser", "alphaPicke
query.StartIndex = 0, itemsContainer.refreshItems() query.StartIndex = 0, itemsContainer.refreshItems()
}), filterDialog.show() }), filterDialog.show()
}) })
}, self.getCurrentViewStyle = function() { };
self.getCurrentViewStyle = function() {
return userSettings.get(savedViewKey) || "Poster" return userSettings.get(savedViewKey) || "Poster"
}, self.initTab = function() { };
initPage(tabContent), onViewStyleChange() self.initTab = function() {
}, self.renderTab = function() { initPage(tabContent);
itemsContainer.refreshItems(), updateFilterControls() onViewStyleChange();
}, self.destroy = function() { };
self.renderTab = function() {
itemsContainer.refreshItems();
updateFilterControls();
};
self.destroy = function() {
itemsContainer = null itemsContainer = null
} }
} }
}); });

View file

@ -30,13 +30,16 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
function reloadItems() { function reloadItems() {
loading.show(); loading.show();
isLoading = true;
var query = getQuery(tabContent); var query = getQuery(tabContent);
ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function(result) { ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function(result) {
function onNextPageClick() { function onNextPageClick() {
if (isLoading) return;
query.StartIndex += query.Limit, reloadItems() query.StartIndex += query.Limit, reloadItems()
} }
function onPreviousPageClick() { function onPreviousPageClick() {
if (isLoading) return;
query.StartIndex -= query.Limit, reloadItems() query.StartIndex -= query.Limit, reloadItems()
} }
window.scrollTo(0, 0), updateFilterControls(tabContent); window.scrollTo(0, 0), updateFilterControls(tabContent);
@ -98,7 +101,11 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
for (elems = tabContent.querySelectorAll(".btnPreviousPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onPreviousPageClick); for (elems = tabContent.querySelectorAll(".btnPreviousPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onPreviousPageClick);
result.Items.length || (html = '<p style="text-align:center;">' + Globalize.translate("MessageNoTrailersFound") + "</p>"); result.Items.length || (html = '<p style="text-align:center;">' + Globalize.translate("MessageNoTrailersFound") + "</p>");
var itemsContainer = tabContent.querySelector(".itemsContainer"); var itemsContainer = tabContent.querySelector(".itemsContainer");
itemsContainer.innerHTML = html, imageLoader.lazyChildren(itemsContainer), libraryBrowser.saveQueryValues(getSavedQueryKey(tabContent), query), loading.hide() itemsContainer.innerHTML = html;
imageLoader.lazyChildren(itemsContainer);
libraryBrowser.saveQueryValues(getSavedQueryKey(tabContent), query);
loading.hide();
isLoading = false;
}) })
} }
@ -108,7 +115,8 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
} }
var self = this, var self = this,
pageSize = 100, pageSize = 100,
data = {}; data = {},
isLoading = false;
self.showFilterMenu = function() { self.showFilterMenu = function() {
require(["components/filterdialog/filterdialog"], function(filterDialogFactory) { require(["components/filterdialog/filterdialog"], function(filterDialogFactory) {
var filterDialog = new filterDialogFactory({ var filterDialog = new filterDialogFactory({
@ -174,4 +182,4 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
reloadItems(), updateFilterControls(tabContent) reloadItems(), updateFilterControls(tabContent)
}, self.destroy = function() {} }, self.destroy = function() {}
} }
}); });

View file

@ -50,13 +50,16 @@ define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser
function reloadItems(page) { function reloadItems(page) {
loading.show(); loading.show();
isLoading = true;
var query = getQuery(); var query = getQuery();
ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function(result) { ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function(result) {
function onNextPageClick() { function onNextPageClick() {
if (isLoading) return;
query.StartIndex += query.Limit, reloadItems(tabContent) query.StartIndex += query.Limit, reloadItems(tabContent)
} }
function onPreviousPageClick() { function onPreviousPageClick() {
if (isLoading) return;
query.StartIndex -= query.Limit, reloadItems(tabContent) query.StartIndex -= query.Limit, reloadItems(tabContent)
} }
window.scrollTo(0, 0), updateFilterControls(page); window.scrollTo(0, 0), updateFilterControls(page);
@ -100,7 +103,11 @@ define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser
for (elems = tabContent.querySelectorAll(".btnNextPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onNextPageClick); for (elems = tabContent.querySelectorAll(".btnNextPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onNextPageClick);
for (elems = tabContent.querySelectorAll(".btnPreviousPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onPreviousPageClick); for (elems = tabContent.querySelectorAll(".btnPreviousPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onPreviousPageClick);
var itemsContainer = tabContent.querySelector(".itemsContainer"); var itemsContainer = tabContent.querySelector(".itemsContainer");
itemsContainer.innerHTML = html, imageLoader.lazyChildren(itemsContainer), libraryBrowser.saveQueryValues(getSavedQueryKey(), query), loading.hide() itemsContainer.innerHTML = html;
imageLoader.lazyChildren(itemsContainer);
libraryBrowser.saveQueryValues(getSavedQueryKey(), query);
loading.hide();
isLoading = false;
}) })
} }
@ -109,7 +116,8 @@ define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser
self.alphaPicker.value(query.NameStartsWithOrGreater) self.alphaPicker.value(query.NameStartsWithOrGreater)
} }
var savedQueryKey, pageData, self = this, var savedQueryKey, pageData, self = this,
pageSize = 100; pageSize = 100,
isLoading = false;
self.showFilterMenu = function() { self.showFilterMenu = function() {
require(["components/filterdialog/filterdialog"], function(filterDialogFactory) { require(["components/filterdialog/filterdialog"], function(filterDialogFactory) {
var filterDialog = new filterDialogFactory({ var filterDialog = new filterDialogFactory({
@ -179,4 +187,4 @@ define(["layoutManager", "playbackManager", "loading", "events", "libraryBrowser
reloadItems(tabContent), updateFilterControls(tabContent) reloadItems(tabContent), updateFilterControls(tabContent)
}, self.destroy = function() {} }, self.destroy = function() {}
} }
}); });

View file

@ -35,13 +35,16 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
function reloadItems(page) { function reloadItems(page) {
loading.show(); loading.show();
isLoading = true;
var query = getQuery(page); var query = getQuery(page);
("albumartists" == self.mode ? ApiClient.getAlbumArtists(ApiClient.getCurrentUserId(), query) : ApiClient.getArtists(ApiClient.getCurrentUserId(), query)).then(function(result) { ("albumartists" == self.mode ? ApiClient.getAlbumArtists(ApiClient.getCurrentUserId(), query) : ApiClient.getArtists(ApiClient.getCurrentUserId(), query)).then(function(result) {
function onNextPageClick() { function onNextPageClick() {
if (isLoading) return;
query.StartIndex += query.Limit, reloadItems(tabContent) query.StartIndex += query.Limit, reloadItems(tabContent)
} }
function onPreviousPageClick() { function onPreviousPageClick() {
if (isLoading) return;
query.StartIndex -= query.Limit, reloadItems(tabContent) query.StartIndex -= query.Limit, reloadItems(tabContent)
} }
window.scrollTo(0, 0), updateFilterControls(page); window.scrollTo(0, 0), updateFilterControls(page);
@ -81,7 +84,11 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
for (elems = tabContent.querySelectorAll(".btnNextPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onNextPageClick); for (elems = tabContent.querySelectorAll(".btnNextPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onNextPageClick);
for (elems = tabContent.querySelectorAll(".btnPreviousPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onPreviousPageClick); for (elems = tabContent.querySelectorAll(".btnPreviousPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onPreviousPageClick);
var itemsContainer = tabContent.querySelector(".itemsContainer"); var itemsContainer = tabContent.querySelector(".itemsContainer");
itemsContainer.innerHTML = html, imageLoader.lazyChildren(itemsContainer), libraryBrowser.saveQueryValues(getSavedQueryKey(page), query), loading.hide() itemsContainer.innerHTML = html;
imageLoader.lazyChildren(itemsContainer);
libraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
loading.hide();
isLoading = false;
}) })
} }
@ -90,7 +97,8 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
self.alphaPicker.value(query.NameStartsWithOrGreater) self.alphaPicker.value(query.NameStartsWithOrGreater)
} }
var self = this, var self = this,
data = {}; data = {},
isLoading = false;
self.showFilterMenu = function() { self.showFilterMenu = function() {
require(["components/filterdialog/filterdialog"], function(filterDialogFactory) { require(["components/filterdialog/filterdialog"], function(filterDialogFactory) {
var filterDialog = new filterDialogFactory({ var filterDialog = new filterDialogFactory({
@ -133,4 +141,4 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
reloadItems(tabContent), updateFilterControls(tabContent) reloadItems(tabContent), updateFilterControls(tabContent)
}, self.destroy = function() {} }, self.destroy = function() {}
} }
}); });

View file

@ -29,13 +29,16 @@ define(["events", "libraryBrowser", "imageLoader", "listView", "loading", "emby-
function reloadItems(page) { function reloadItems(page) {
loading.show(); loading.show();
isLoading = true;
var query = getQuery(page); var query = getQuery(page);
ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function(result) { ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function(result) {
function onNextPageClick() { function onNextPageClick() {
if (isLoading) return;
query.StartIndex += query.Limit, reloadItems(tabContent) query.StartIndex += query.Limit, reloadItems(tabContent)
} }
function onPreviousPageClick() { function onPreviousPageClick() {
if (isLoading) return;
query.StartIndex -= query.Limit, reloadItems(tabContent) query.StartIndex -= query.Limit, reloadItems(tabContent)
} }
window.scrollTo(0, 0); window.scrollTo(0, 0);
@ -61,11 +64,16 @@ define(["events", "libraryBrowser", "imageLoader", "listView", "loading", "emby-
for (elems = tabContent.querySelectorAll(".btnNextPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onNextPageClick); for (elems = tabContent.querySelectorAll(".btnNextPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onNextPageClick);
for (elems = tabContent.querySelectorAll(".btnPreviousPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onPreviousPageClick); for (elems = tabContent.querySelectorAll(".btnPreviousPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onPreviousPageClick);
var itemsContainer = tabContent.querySelector(".itemsContainer"); var itemsContainer = tabContent.querySelector(".itemsContainer");
itemsContainer.innerHTML = html, imageLoader.lazyChildren(itemsContainer), libraryBrowser.saveQueryValues(getSavedQueryKey(page), query), loading.hide() itemsContainer.innerHTML = html;
imageLoader.lazyChildren(itemsContainer);
libraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
loading.hide();
isLoading = false;
}) })
} }
var self = this, var self = this,
data = {}; data = {},
isLoading = false;
self.showFilterMenu = function() { self.showFilterMenu = function() {
require(["components/filterdialog/filterdialog"], function(filterDialogFactory) { require(["components/filterdialog/filterdialog"], function(filterDialogFactory) {
var filterDialog = new filterDialogFactory({ var filterDialog = new filterDialogFactory({
@ -124,4 +132,4 @@ define(["events", "libraryBrowser", "imageLoader", "listView", "loading", "emby-
reloadItems(tabContent) reloadItems(tabContent)
}, self.destroy = function() {} }, self.destroy = function() {}
} }
}); });

View file

@ -36,14 +36,19 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
function reloadItems(page) { function reloadItems(page) {
loading.show(); loading.show();
isLoading = true;
var query = getQuery(page); var query = getQuery(page);
ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function(result) { ApiClient.getItems(ApiClient.getCurrentUserId(), query).then(function(result) {
function onNextPageClick() { function onNextPageClick() {
query.StartIndex += query.Limit, reloadItems(tabContent) if (isLoading) return;
query.StartIndex += query.Limit;
reloadItems(tabContent);
} }
function onPreviousPageClick() { function onPreviousPageClick() {
query.StartIndex -= query.Limit, reloadItems(tabContent) if (isLoading) return;
query.StartIndex -= query.Limit;
reloadItems(tabContent);
} }
window.scrollTo(0, 0), updateFilterControls(page); window.scrollTo(0, 0), updateFilterControls(page);
var html, pagingHtml = libraryBrowser.getQueryPagingHtml({ var html, pagingHtml = libraryBrowser.getQueryPagingHtml({
@ -103,7 +108,11 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
for (elems = tabContent.querySelectorAll(".btnNextPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onNextPageClick); for (elems = tabContent.querySelectorAll(".btnNextPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onNextPageClick);
for (elems = tabContent.querySelectorAll(".btnPreviousPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onPreviousPageClick); for (elems = tabContent.querySelectorAll(".btnPreviousPage"), i = 0, length = elems.length; i < length; i++) elems[i].addEventListener("click", onPreviousPageClick);
var itemsContainer = tabContent.querySelector(".itemsContainer"); var itemsContainer = tabContent.querySelector(".itemsContainer");
itemsContainer.innerHTML = html, imageLoader.lazyChildren(itemsContainer), libraryBrowser.saveQueryValues(getSavedQueryKey(page), query), loading.hide() itemsContainer.innerHTML = html;
imageLoader.lazyChildren(itemsContainer);
libraryBrowser.saveQueryValues(getSavedQueryKey(page), query);
loading.hide();
isLoading = false;
}) })
} }
@ -113,7 +122,8 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
} }
var self = this, var self = this,
pageSize = 100, pageSize = 100,
data = {}; data = {},
isLoading = false;
self.showFilterMenu = function() { self.showFilterMenu = function() {
require(["components/filterdialog/filterdialog"], function(filterDialogFactory) { require(["components/filterdialog/filterdialog"], function(filterDialogFactory) {
var filterDialog = new filterDialogFactory({ var filterDialog = new filterDialogFactory({
@ -183,4 +193,4 @@ define(["layoutManager", "loading", "events", "libraryBrowser", "imageLoader", "
reloadItems(tabContent), updateFilterControls(tabContent) reloadItems(tabContent), updateFilterControls(tabContent)
}, self.destroy = function() {} }, self.destroy = function() {}
} }
}); });

View file

@ -37,7 +37,7 @@ define(["loading", "libraryMenu", "emby-linkbutton"], function(loading, libraryM
var userId = params.userId, var userId = params.userId,
currentPassword = view.querySelector("#txtCurrentPassword").value, currentPassword = view.querySelector("#txtCurrentPassword").value,
newPassword = view.querySelector("#txtNewPassword").value; newPassword = view.querySelector("#txtNewPassword").value;
if(view.querySelector("#fldCurrentPassword").classList.contains("hide")) { if (view.querySelector("#fldCurrentPassword").classList.contains("hide")) {
// Firefox does not respect autocomplete=off, so clear it if the field is supposed to be hidden (and blank) // Firefox does not respect autocomplete=off, so clear it if the field is supposed to be hidden (and blank)
// This should only happen when user.HasConfiguredPassword is false, but this information is not passed on // This should only happen when user.HasConfiguredPassword is false, but this information is not passed on
currentPassword = ""; currentPassword = "";