21 lines
No EOL
6.2 KiB
JavaScript
21 lines
No EOL
6.2 KiB
JavaScript
import BaseTab from"./../../../tabbedview/basesettingstab.js";import globalize from"./../../../common/globalize.js";import loading from"./../../../loading/loading.js";import genericedit from"./../../../genericedit/genericedit.js";import formHelper from"./../../../common/responsehelper.js";import dialogHelper from"./../../../dialoghelper/dialoghelper.js";import events from"./../../../emby-apiclient/events.js";import"./../../../emby-elements/emby-scroller/emby-scroller.js";import"./../../../emby-elements/emby-select/emby-select.js";import"./../../../emby-elements/emby-radio/emby-radio.js";import"./../../../emby-elements/emby-button/emby-button.js";import"./../../../emby-elements/emby-button/paper-icon-button-light.js";import"./../../../emby-elements/emby-input/emby-input.js";import"./../../../emby-elements/emby-checkbox/emby-checkbox.js";let template=`
|
|
<div class="formDialogHeader">
|
|
<button type="button" is="emby-dialogclosebutton"></button>
|
|
<h3 class="formDialogHeaderTitle">
|
|
</h3>
|
|
</div>
|
|
<div is="emby-scroller" data-horizontal="false" data-forcescrollbar="true" data-focusscroll="true" class="formDialogContent">
|
|
<div class="scrollSlider">
|
|
<div class="dialogContentInner dialog-content-centered padded-left padded-right padded-top">
|
|
<form>
|
|
<div class="editContainer"></div>
|
|
<div class="formDialogFooter hide">
|
|
<button is="emby-button" type="submit" class="raised button-submit block btnSave hide">
|
|
<span>\${Save}</span>
|
|
</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
`;function showConfirm(options){return Emby.importModule("./modules/common/dialogs/confirm.js").then(function(confirm){return confirm(options)})}function showAlert(options){return Emby.importModule("./modules/common/dialogs/alert.js").then(function(alert){return alert(options)})}function View(view,params){BaseTab.apply(this,arguments)}Object.assign(View.prototype,BaseTab.prototype);let editObjectContainer,editContainer,isDataValid;function onInvalid(e){null!==e.target.offsetParent&&(isDataValid=!1)}function displayError(error){error&&(loading.hide(),showAlert(error.message||error))}function dashboardConfirm(message,title,callback){showConfirm(message,title).then(function(){callback(!0)},function(){callback(!1)})}function onContentUpdate(arg1,arg2,arg3){(editObjectContainer=arg2).EditorRoot.DisplayName=null,genericedit.setFormValues(editObjectContainer,editContainer)}function showDialog(){let dlg=dialogHelper.createDialog({removeOnClose:!0,scrollY:!0,size:"medium-tall"});dlg.classList.add("formDialog"),dlg.classList.add("winThemeSettingDialog"),dlg.innerHTML=globalize.translateDocument(template,"sharedcomponents");var btnSave=dlg.querySelector(".btnSave");return dlg.querySelector(".formDialogHeaderTitle").innerHTML=editObjectContainer.EditorRoot.DisplayName,dlg.querySelector(".formDialogFooter").classList.remove("hide"),editObjectContainer.EditorRoot.DisplayName=null,btnSave.classList.remove("hide"),(editContainer=dlg.querySelector(".editContainer")).removeEventListener("click",onButtonClick),editContainer.removeEventListener("invalid",onInvalid),genericedit.renderForm(editObjectContainer,editContainer).then(()=>{genericedit.setFormValues(editObjectContainer,editContainer),editContainer.addEventListener("click",onButtonClick),editContainer.addEventListener("invalid",onInvalid,{capture:!0}),events.on(window.NativeThemeInterop,"contentupdate",onContentUpdate),loading.hide()}),dlg.querySelector("form").addEventListener("submit",function(e){return saveSettings(dlg),editContainer.saved=!0,dialogHelper.close(dlg),e.preventDefault(),!1}),new Promise(function(resolve,reject){dlg.addEventListener("close",function(){events.off(window.NativeThemeInterop,"contentupdate",onContentUpdate),(editContainer.saved?resolve:(closeWithoutSave(dlg),reject))()}),dialogHelper.open(dlg)})}function postCommand(commandId,data,itemId){commandId=JSON.stringify({CommandId:commandId,Data:data,ItemId:itemId,ClientLocale:globalize.getCurrentLocale()});return window.NativeThemeInterop.postCommandAsync(commandId)}function runUiCommand(commandId,data,itemId){return loading.show(),postCommand(commandId,data,itemId).then(function(response){return"PageSave"===commandId&&formHelper.handleConfigurationSavedResponse(),editObjectContainer=response,genericedit.setFormValues(response,editContainer),loading.hide(),Promise.resolve()})}function onButtonClick(e){let button=e.target.closest("BUTTON");if(button||(button=e.target.closest("INPUT"))&&!button.getAttribute("data-data1")&&(button=null),e.Data1||button&&!button.hasAttribute("disabled")){e.preventDefault();let commandId=e.Data1||(button?button.getAttribute("data-data1"):null),itemId=e.Data2||(button?button.getAttribute("data-data2"):null);var confirmationPrompt=e.ConfirmationPrompt||(button?button.getAttribute("data-prompt"):null),caption=e.Caption||(button?button.getAttribute("data-caption"):"");if(commandId){e.stopPropagation();let data=null;if(!genericedit.runCommand(commandId,editContainer,itemId)){if(editObjectContainer&&(genericedit.getItemValues(editObjectContainer,editContainer),data=JSON.stringify(editObjectContainer.Object),"WizardNext"===commandId||"WizardFinish"===commandId||"DialogOk"===commandId||"PageSave"===commandId)){e=editContainer.closest("FORM");if(e&&(isDataValid=!0,e.reportValidity(),!isDataValid||!1===editObjectContainer.isDataValid))return}confirmationPrompt?dashboardConfirm(confirmationPrompt,caption,wrapRunCommand):wrapRunCommand(!0)}function wrapRunCommand(run){run&&runUiCommand(commandId,data,itemId).then(function(){},displayError)}}}}function saveSettings(){genericedit.getItemValues(editObjectContainer,editContainer);var updateString=JSON.stringify(editObjectContainer.Object);window.NativeThemeInterop.saveThemeSettingsAsync(updateString).catch(function(error){displayError(error)})}function closeWithoutSave(){window.NativeThemeInterop.notifyDialogCancelledAsync()}function showSettings(){editObjectContainer=null,editContainer=null,isDataValid=null;try{window.NativeThemeInterop.getThemeSettingsAsync().then(function(container){editObjectContainer=container,showDialog()}).catch(function(err){displayError(err)})}catch(error){displayError(error)}}export default{showSettings:showSettings}; |