import * as userSettings from 'userSettings';
import globalize from 'globalize';
export function getSavedQueryKey(modifier) {
return window.location.href.split('#')[0] + (modifier || '');
}
export function loadSavedQueryValues(key, query) {
var values = userSettings.get(key);
if (values) {
values = JSON.parse(values);
return Object.assign(query, values);
}
return query;
}
export function saveQueryValues(key, query) {
var values = {};
if (query.SortBy) {
values.SortBy = query.SortBy;
}
if (query.SortOrder) {
values.SortOrder = query.SortOrder;
}
userSettings.set(key, JSON.stringify(values));
}
export function saveViewSetting (key, value) {
userSettings.set(key + '-_view', value);
}
export function getSavedView (key) {
return userSettings.get(key + '-_view');
}
export function showLayoutMenu (button, currentLayout, views) {
var dispatchEvent = true;
if (!views) {
dispatchEvent = false;
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
};
});
import('actionsheet').then(({default: actionsheet}) => {
actionsheet.show({
items: menuItems,
positionTo: button,
callback: function (id) {
button.dispatchEvent(new CustomEvent('layoutchange', {
detail: {
viewStyle: id
},
bubbles: true,
cancelable: false
}));
if (!dispatchEvent) {
if (window.$) {
$(button).trigger('layoutchange', [id]);
}
}
}
});
});
}
export function getQueryPagingHtml (options) {
var startIndex = options.startIndex;
var limit = options.limit;
var totalRecordCount = options.totalRecordCount;
var html = '';
var recordsEnd = Math.min(startIndex + limit, totalRecordCount);
var showControls = limit < totalRecordCount;
if (html += '
', showControls) {
html += '';
html += globalize.translate('ListPaging', (totalRecordCount ? startIndex + 1 : 0), recordsEnd, totalRecordCount);
html += '';
}
if (showControls || options.viewButton || options.filterButton || options.sortButton || options.addLayoutButton) {
html += '
';
if (showControls) {
html += '';
html += '';
}
if (options.addLayoutButton) {
html += '';
}
if (options.sortButton) {
html += '';
}
if (options.filterButton) {
html += '';
}
html += '
';
}
return html += '
';
}
export function showSortMenu (options) {
Promise.all([
import('dialogHelper'),
import('emby-radio')
]).then(({default: 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;
if (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;
if (options.callback && changed) {
options.callback();
}
}
}
var dlg = dialogHelper.createDialog({
removeOnClose: true,
modal: false,
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;
var length;
var isChecked;
html += '
';
for (i = 0, length = options.items.length; i < length; i++) {
var option = options.items[i];
var radioValue = option.id.replace(',', '_');
isChecked = (options.query.SortBy || '').replace(',', '_') == radioValue ? ' checked' : '';
html += '';
}
html += '
';
html += '
';
html += globalize.translate('HeaderSortOrder');
html += '
';
html += '
';
isChecked = options.query.SortOrder == 'Ascending' ? ' checked' : '';
html += '';
isChecked = options.query.SortOrder == 'Descending' ? ' 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);
}
});
}
const libraryBrowser = {
getSavedQueryKey,
loadSavedQueryValues,
saveQueryValues,
saveViewSetting,
getSavedView,
showLayoutMenu,
getQueryPagingHtml,
showSortMenu
};
window.LibraryBrowser = libraryBrowser;
export default libraryBrowser;