define(["loading", "apphost", "dialogHelper", "connectionManager", "imageLoader", "browser", "layoutManager", "scrollHelper", "globalize", "require", "emby-checkbox", "emby-button", "paper-icon-button-light", "emby-linkbutton", "formDialogStyle", "cardStyle"], function(loading, appHost, dialogHelper, connectionManager, imageLoader, browser, layoutManager, scrollHelper, globalize, require) {
"use strict";
function getBaseRemoteOptions() {
var options = {};
return options.itemId = currentItemId, options
}
function reloadBrowsableImages(page, apiClient) {
loading.show();
var options = getBaseRemoteOptions();
options.type = browsableImageType, options.startIndex = browsableImageStartIndex, options.limit = browsableImagePageSize, options.IncludeAllLanguages = page.querySelector("#chkAllLanguages").checked;
var provider = selectedProvider || "";
provider && (options.ProviderName = provider), apiClient.getAvailableRemoteImages(options).then(function(result) {
renderRemoteImages(page, apiClient, result, browsableImageType, options.startIndex, options.limit), page.querySelector("#selectBrowsableImageType").value = browsableImageType;
var providersHtml = result.Providers.map(function(p) {
return '"
}),
selectImageProvider = page.querySelector("#selectImageProvider");
selectImageProvider.innerHTML = '" + providersHtml, selectImageProvider.value = provider, loading.hide()
})
}
function renderRemoteImages(page, apiClient, imagesResult, imageType, startIndex, limit) {
page.querySelector(".availableImagesPaging").innerHTML = getPagingHtml(startIndex, limit, imagesResult.TotalRecordCount);
for (var html = "", i = 0, length = imagesResult.Images.length; i < length; i++) html += getRemoteImageHtml(imagesResult.Images[i], imageType, apiClient);
var availableImagesList = page.querySelector(".availableImagesList");
availableImagesList.innerHTML = html, imageLoader.lazyChildren(availableImagesList);
var btnNextPage = page.querySelector(".btnNextPage"),
btnPreviousPage = page.querySelector(".btnPreviousPage");
btnNextPage && btnNextPage.addEventListener("click", function() {
browsableImageStartIndex += browsableImagePageSize, reloadBrowsableImages(page, apiClient)
}), btnPreviousPage && btnPreviousPage.addEventListener("click", function() {
browsableImageStartIndex -= browsableImagePageSize, reloadBrowsableImages(page, apiClient)
})
}
function getPagingHtml(startIndex, limit, totalRecordCount) {
var html = "",
recordsEnd = Math.min(startIndex + limit, totalRecordCount),
showControls = totalRecordCount > limit;
return html += '
', html += '
', html += (totalRecordCount ? startIndex + 1 : 0) + "-" + recordsEnd + " of " + totalRecordCount, html += "", showControls && (html += '
', html += '', html += '', html += "
"), html += "
"
}
function parentWithClass(elem, className) {
for (; !elem.classList || !elem.classList.contains(className);)
if (!(elem = elem.parentNode)) return null;
return elem
}
function downloadRemoteImage(page, apiClient, url, type, provider) {
var options = getBaseRemoteOptions();
options.Type = type, options.ImageUrl = url, options.ProviderName = provider, loading.show(), apiClient.downloadRemoteImage(options).then(function() {
hasChanges = !0;
var dlg = parentWithClass(page, "dialog");
dialogHelper.close(dlg)
})
}
function getDisplayUrl(url, apiClient) {
return apiClient.getUrl("Images/Remote", {
imageUrl: url
})
}
function getRemoteImageHtml(image, imageType, apiClient) {
var tagName = layoutManager.tv ? "button" : "div",
enableFooterButtons = !layoutManager.tv,
html = "",
cssClass = "card scalableCard imageEditorCard",
cardBoxCssClass = "cardBox visualCardBox",
shape = "backdrop";
return shape = "Backdrop" === imageType || "Art" === imageType || "Thumb" === imageType || "Logo" === imageType ? "backdrop" : "Banner" === imageType ? "banner" : "Disc" === imageType ? "square" : "Episode" === currentItemType ? "backdrop" : "MusicAlbum" === currentItemType || "MusicArtist" === currentItemType ? "square" : "portrait", cssClass += " " + shape + "Card " + shape + "Card-scalable", "button" === tagName ? (cssClass += " btnImageCard", layoutManager.tv && !browser.slow && (cardBoxCssClass += " cardBox-focustransform"), layoutManager.tv && (cardBoxCssClass += " card-focuscontent cardBox-withfocuscontent"), html += '