define(["userSettings"], function(userSettings) {
"use strict";
var libraryBrowser = {
getSavedQueryKey: function(modifier) {
return window.location.href.split("#")[0] + (modifier || "")
},
loadSavedQueryValues: function(key, query) {
var values = userSettings.get(key);
return values ? (values = JSON.parse(values), Object.assign(query, values)) : query
},
saveQueryValues: function(key, query) {
var values = {};
query.SortBy && (values.SortBy = query.SortBy), query.SortOrder && (values.SortOrder = query.SortOrder), userSettings.set(key, JSON.stringify(values))
},
saveViewSetting: function(key, value) {
userSettings.set(key + "-_view", value)
},
getSavedView: function(key) {
return userSettings.get(key + "-_view")
},
showLayoutMenu: function(button, currentLayout, views) {
var dispatchEvent = !0;
views || (dispatchEvent = !1, views = button.getAttribute("data-layouts"), views = views ? views.split(",") : ["List", "Poster", "PosterCard", "Thumb", "ThumbCard"]);
var menuItems = views.map(function(v) {
return {
name: Globalize.translate("Option" + v),
id: v,
selected: currentLayout == v
}
});
require(["actionsheet"], function(actionsheet) {
actionsheet.show({
items: menuItems,
positionTo: button,
callback: function(id) {
button.dispatchEvent(new CustomEvent("layoutchange", {
detail: {
viewStyle: id
},
bubbles: !0,
cancelable: !1
})), dispatchEvent || window.$ && $(button).trigger("layoutchange", [id])
}
})
})
},
getQueryPagingHtml: function(options) {
var startIndex = options.startIndex,
limit = options.limit,
totalRecordCount = options.totalRecordCount,
html = "",
recordsEnd = Math.min(startIndex + limit, totalRecordCount),
showControls = limit < totalRecordCount;
if (html += '
', showControls) {
html += '
';
html += (totalRecordCount ? startIndex + 1 : 0) + "-" + recordsEnd + " of " + totalRecordCount, html += ""
}
return (showControls || options.viewButton || options.filterButton || options.sortButton || options.addLayoutButton) && (html += '
', showControls && (html += '', html += ''), options.addLayoutButton && (html += ''), options.sortButton && (html += ''), options.filterButton && (html += ''), html += "
"), html += "
"
},
showSortMenu: function(options) {
require(["dialogHelper", "emby-radio"], function(dialogHelper) {
function onSortByChange() {
var newValue = this.value;
if (this.checked) {
var changed = options.query.SortBy != newValue;
options.query.SortBy = newValue.replace("_", ","), options.query.StartIndex = 0, options.callback && changed && options.callback()
}
}
function onSortOrderChange() {
var newValue = this.value;
if (this.checked) {
var changed = options.query.SortOrder != newValue;
options.query.SortOrder = newValue, options.query.StartIndex = 0, options.callback && changed && options.callback()
}
}
var dlg = dialogHelper.createDialog({
removeOnClose: !0,
modal: !1,
entryAnimationDuration: 160,
exitAnimationDuration: 200
});
dlg.classList.add("ui-body-a"), dlg.classList.add("background-theme-a"), dlg.classList.add("formDialog");
var html = "";
html += '', html += '
', html += Globalize.translate("HeaderSortBy"), html += "
";
var i, length, isChecked;
for (html += "
", i = 0, length = options.items.length; i < length; i++) {
var option = options.items[i],
radioValue = option.id.replace(",", "_");
isChecked = (options.query.SortBy || "").replace(",", "_") == radioValue ? " checked" : "", html += '"
}
html += "
", html += '
', html += Globalize.translate("HeaderSortOrder"), html += "
", html += "
", isChecked = "Ascending" == options.query.SortOrder ? " checked" : "", html += '", isChecked = "Descending" == options.query.SortOrder ? " checked" : "", html += '", html += "
", html += "
", dlg.innerHTML = html, dialogHelper.open(dlg);
var sortBys = dlg.querySelectorAll(".menuSortBy");
for (i = 0, length = sortBys.length; i < length; i++) sortBys[i].addEventListener("change", onSortByChange);
var sortOrders = dlg.querySelectorAll(".menuSortOrder");
for (i = 0, length = sortOrders.length; i < length; i++) sortOrders[i].addEventListener("change", onSortOrderChange)
})
}
};
return window.LibraryBrowser = libraryBrowser, libraryBrowser
});