8 lines
7.9 KiB
JavaScript
8 lines
7.9 KiB
JavaScript
|
|
import globalize from"./../modules/common/globalize.js";import"./../modules/emby-elements/emby-input/emby-input.js";import"./../modules/emby-elements/emby-button/emby-button.js";import"./../modules/emby-elements/emby-checkbox/emby-checkbox.js";import"./../modules/emby-elements/emby-select/emby-select.js";import"./../modules/emby-elements/emby-scroller/emby-scroller.js";import"./../modules/emby-elements/emby-dialogclosebutton/emby-dialogclosebutton.js";import layoutManager from"./../modules/layoutmanager.js";import loading from"./../modules/loading/loading.js";import dialogHelper from"./../modules/dialoghelper/dialoghelper.js";import pluginManager from"./../modules/common/pluginmanager.js";import responseHelper from"./../modules/common/responsehelper.js";function onSubmit(e){return loading.show(),this.options.apiClient.saveUserNotification(getEntry(this)).then(onSubmitted.bind(this)),e.preventDefault(),!1}function showToast(options){return Emby.importModule("./modules/toast/toast.js").then(function(toast){return toast(options)})}function onTestSuccess(){loading.hide(),showToast(globalize.translate("NotificationSent"))}function onTestFail(response){loading.hide(),response.errorMessagePreamble=globalize.translate("ErrorSendingNotification"),responseHelper.handleErrorResponse(response)}function sendEntryTest(){var apiClient=this.options.apiClient;loading.show(),apiClient.sendTestUserNotification(getEntry(this)).then(onTestSuccess,onTestFail)}function getEntry(instance){var entry=Object.assign({},instance.options.entry),dlg=instance.dlg;return instance.options.entryFormEditor.setObjectValues(dlg,entry),entry.GroupItems=dlg.querySelector(".chkGroupItems").checked,entry.UserIds=dlg.querySelector(".selectUser").getValues(),entry.LibraryIds=dlg.querySelector(".selectLibrary").getValues(),entry.DeviceIds=dlg.querySelector(".selectDevices").getValues(),entry.EventIds=Array.prototype.map.call(dlg.querySelectorAll(".chkSubEvent:checked"),function(c){return c.getAttribute("data-id")}),entry}function onSubmitted(){loading.hide(),this.submitted=!0,dialogHelper.close(this.dlg)}function getEventHtml(info,entry){let html="";html=(html+='<div class="checkboxList">')+'<div style="margin-bottom:1em;"><label>';let isTopEventEnabled;var events=info.Events,categoryId=info.Id;for(let i=0,length=events.length;i<length;i++){var eventId=events[i].Id;if(entry.EventIds.includes(eventId)){isTopEventEnabled=!0;break}}isTopEventEnabled;var isChecked,checkedAttribute=isTopEventEnabled?' checked="checked"':"";html=(html+='<input type="checkbox" is="emby-checkbox" class="chkEvent" data-id="'+categoryId+'"'+checkedAttribute+" />")+"<span>"+info.Name+"</span></label>";for(let i=0,length=events.length;i<length;i++){let currentEvent=events[i],eventId=currentEvent.Id;isChecked=entry.EventIds.includes(eventId),html=(html=(html=(html+='<label style="margin: .35em 2.5em;"><input type="checkbox" is="emby-checkbox" class="chkSubEvent" data-categoryid="'+categoryId+'" data-id="'+eventId+'" '+(isChecked?' checked="checked"':"")+" />")+'<span class="flex" style="white-space:nowrap;">'+"<div>")+currentEvent.Name+"</div>")+"</span>"+"</label>"}return"library"===categoryId&&(html+=`
|
||
|
|
<div class="checkboxContainer fldGroupItems hide" style="margin: 1em 2.5em 2em;">
|
||
|
|
<label>
|
||
|
|
<input type="checkbox" is="emby-checkbox" class="chkGroupItems" />
|
||
|
|
<span>`+globalize.translate("GroupNotificationsBySeriesOrAlbum")+`</span>
|
||
|
|
</label>
|
||
|
|
</div>
|
||
|
|
`),html=html+"</div>"+"</div>"}function setSubEventsChecked(page,eventId,checked){var elems=page.querySelectorAll('.chkSubEvent[data-categoryid="'+eventId+'"]');for(let i=0,length=elems.length;i<length;i++)elems[i].checked=checked}function setEventCheckedIfNeeded(page,eventId){var elem=page.querySelector('.chkEvent[data-id="'+eventId+'"]');if(elem){var elems=page.querySelectorAll('.chkSubEvent[data-categoryid="'+eventId+'"]');if(elems.length){let numChecked=0,numUnchecked=0;for(let i=0,length=elems.length;i<length;i++)elems[i].checked?numChecked++:numUnchecked++;numChecked||numChecked===elems.length?elem.checked=!0:numUnchecked===elems.length&&(elem.checked=!1)}}}function onEventChange(e){var e=e.target,view=this.dlg;e.classList.contains("chkEvent")?setSubEventsChecked(view,e.getAttribute("data-id"),e.checked):e.classList.contains("chkSubEvent")&&setEventCheckedIfNeeded(view,e.getAttribute("data-categoryid"))}function EntryEditor(){}function onClosed(){return this.options?.entryFormEditor?.destroy&&this.options.entryFormEditor.destroy(),this.options=null,this.dlg=null,this.submitted?Promise.resolve():Promise.reject()}function fillData(instance,entry,dlg,apiClient){instance.options.entryFormEditor.setFormValues(dlg,entry),dlg.querySelector(".chkGroupItems").checked=entry.GroupItems||!1,fillUserSelect(entry,dlg,apiClient),fillSelectLibrary(entry,dlg,apiClient),fillSelectDevices(entry,dlg,apiClient)}function getUsers(query){return query=Object.assign({SortBy:"SortName",SortOrder:"Ascending",EnableImages:!1},query),this.getUsersQueryResult(query)}function fillUserSelect(entry,dlg,apiClient){dlg=dlg.querySelector(".selectUser");dlg.getItems=getUsers.bind(apiClient),dlg.values=entry.UserIds||[]}function getDevices(query){return query=Object.assign({},query),this.getDevices(query)}function getLibraries(query){return query=Object.assign({SortBy:"SortName",SortOrder:"Ascending",EnableImages:!1},query),this.getVirtualFolders(query)}function fillSelectDevices(entry,dlg,apiClient){dlg=dlg.querySelector(".selectDevices");dlg.getItems=getDevices.bind(apiClient),dlg.values=entry.DeviceIds||[]}function fillSelectLibrary(entry,dlg,apiClient){dlg=dlg.querySelector(".selectLibrary");dlg.getItems=getLibraries.bind(apiClient),dlg.setAttribute("data-id-property","Guid"),dlg.values=entry.LibraryIds||[]}function initDialogContent(instance,dlg,options,isNew){dlg.querySelector(".eventList").innerHTML=options.eventTypes.map(function(i){return getEventHtml(i,options.entry)}).join("");var onEventChangeHandler=onEventChange.bind(instance),selectEventList=dlg.querySelector(".eventList");selectEventList.addEventListener("change",onEventChangeHandler),dlg.querySelector(".btnSubmit").innerHTML=isNew?globalize.translate("AddNotification"):globalize.translate("Save"),fillData(instance,options.entry,dlg,options.apiClient),onEventChangeHandler({target:selectEventList}),dlg.querySelector("form").addEventListener("submit",onSubmit.bind(instance)),dlg.querySelector(".btnSendTest").addEventListener("click",sendEntryTest.bind(instance)),options.apiClient.isMinServerVersion("4.8.0.45")&&dlg.querySelector(".fldDevices").classList.remove("hide"),options.apiClient.isMinServerVersion("4.8.4")&&dlg.querySelector(".fldGroupItems").classList.remove("hide"),options.apiClient.getUser(options.userId).then(function(user){user.Policy.IsAdministrator?dlg.querySelector(".fldSelectUser").classList.remove("hide"):dlg.querySelector(".fldSelectUser").classList.add("hide")})}EntryEditor.prototype.show=function(options){var dialogOptions={removeOnClose:!0,scrollY:!1};layoutManager.tv?dialogOptions.size="fullscreen":dialogOptions.size="small";let dlg=dialogHelper.createDialog(dialogOptions),instance=(dlg.classList.add("formDialog"),this.options=options,this.dlg=dlg,this);return require(["text!settings/notificationeditor.template.html"]).then(function(responses){let isNew=null==options.entry.Id;responses=responses[0];return dlg.innerHTML=globalize.translateDocument(responses),dlg.querySelector(".formDialogHeaderTitle").innerHTML=isNew?globalize.translate("AddNotification"):glo
|