define(["dialogHelper", "loading", "apphost", "layoutManager", "connectionManager", "appRouter", "globalize", "emby-checkbox", "emby-input", "paper-icon-button-light", "emby-select", "material-icons", "css!./../formdialog", "emby-button", "emby-linkbutton", "flexStyles"], function(dialogHelper, loading, appHost, layoutManager, connectionManager, appRouter, globalize) { "use strict"; function parentWithClass(elem, className) { for (; !elem.classList || !elem.classList.contains(className);) if (!(elem = elem.parentNode)) return null; return elem } function onSubmit(e) { loading.show(); var panel = parentWithClass(this, "dialog"), collectionId = panel.querySelector("#selectCollectionToAddTo").value, apiClient = connectionManager.getApiClient(currentServerId); return collectionId ? addToCollection(apiClient, panel, collectionId) : createCollection(apiClient, panel), e.preventDefault(), !1 } function createCollection(apiClient, dlg) { var url = apiClient.getUrl("Collections", { Name: dlg.querySelector("#txtNewCollectionName").value, IsLocked: !dlg.querySelector("#chkEnableInternetMetadata").checked, Ids: dlg.querySelector(".fldSelectedItemIds").value || "" }); apiClient.ajax({ type: "POST", url: url, dataType: "json" }).then(function(result) { loading.hide(); var id = result.Id; dlg.submitted = !0, dialogHelper.close(dlg), redirectToCollection(apiClient, id) }) } function redirectToCollection(apiClient, id) { appRouter.showItem(id, apiClient.serverId()) } function addToCollection(apiClient, dlg, id) { var url = apiClient.getUrl("Collections/" + id + "/Items", { Ids: dlg.querySelector(".fldSelectedItemIds").value || "" }); apiClient.ajax({ type: "POST", url: url }).then(function() { loading.hide(), dlg.submitted = !0, dialogHelper.close(dlg), require(["toast"], function(toast) { toast(globalize.translate("sharedcomponents#MessageItemsAdded")) }) }) } function triggerChange(select) { select.dispatchEvent(new CustomEvent("change", {})) } function populateCollections(panel) { loading.show(); var select = panel.querySelector("#selectCollectionToAddTo"); panel.querySelector(".newCollectionInfo").classList.add("hide"); var options = { Recursive: !0, IncludeItemTypes: "BoxSet", SortBy: "SortName", EnableTotalRecordCount: !1 }, apiClient = connectionManager.getApiClient(currentServerId); apiClient.getItems(apiClient.getCurrentUserId(), options).then(function(result) { var html = ""; html += '", html += result.Items.map(function(i) { return '" }), select.innerHTML = html, select.value = "", triggerChange(select), loading.hide() }) } function getEditorHtml() { var html = ""; return html += '
', html += '
', html += '
', html += "
", html += globalize.translate("sharedcomponents#NewCollectionHelp"), html += "
", html += '
', html += "
", html += "
", html += '
', html += '', html += "
", html += "
", html += '
', html += '
', html += '', html += '
' + globalize.translate("sharedcomponents#NewCollectionNameExample") + "
", html += "
", html += '", html += "
", html += '
', html += '", html += "
", html += '', html += "
", html += "
", html += "
" } function initEditor(content, items) { if (content.querySelector("#selectCollectionToAddTo").addEventListener("change", function() { this.value ? (content.querySelector(".newCollectionInfo").classList.add("hide"), content.querySelector("#txtNewCollectionName").removeAttribute("required")) : (content.querySelector(".newCollectionInfo").classList.remove("hide"), content.querySelector("#txtNewCollectionName").setAttribute("required", "required")) }), content.querySelector("form").addEventListener("submit", onSubmit), content.querySelector(".fldSelectedItemIds", content).value = items.join(","), items.length) content.querySelector(".fldSelectCollection").classList.remove("hide"), populateCollections(content); else { content.querySelector(".fldSelectCollection").classList.add("hide"); var selectCollectionToAddTo = content.querySelector("#selectCollectionToAddTo"); selectCollectionToAddTo.innerHTML = "", selectCollectionToAddTo.value = "", triggerChange(selectCollectionToAddTo) } } function centerFocus(elem, horiz, on) { require(["scrollHelper"], function(scrollHelper) { var fn = on ? "on" : "off"; scrollHelper.centerFocus[fn](elem, horiz) }) } function CollectionEditor() {} var currentServerId; return CollectionEditor.prototype.show = function(options) { var items = options.items || {}; currentServerId = options.serverId; var dialogOptions = { removeOnClose: !0, scrollY: !1 }; layoutManager.tv ? dialogOptions.size = "fullscreen" : dialogOptions.size = "small"; var dlg = dialogHelper.createDialog(dialogOptions); dlg.classList.add("formDialog"); var html = "", title = items.length ? globalize.translate("sharedcomponents#HeaderAddToCollection") : globalize.translate("sharedcomponents#NewCollection"); return html += '
', html += '', html += '

', html += title, html += "

", appHost.supports("externallinks") && (html += '' + globalize.translate("sharedcomponents#Help") + ""), html += "
", html += getEditorHtml(), dlg.innerHTML = html, initEditor(dlg, items), dlg.querySelector(".btnCancel").addEventListener("click", function() { dialogHelper.close(dlg) }), layoutManager.tv && centerFocus(dlg.querySelector(".formDialogContent"), !1, !0), dialogHelper.open(dlg).then(function() { return layoutManager.tv && centerFocus(dlg.querySelector(".formDialogContent"), !1, !1), dlg.submitted ? Promise.resolve() : Promise.reject() }) }, CollectionEditor });