1 line
8.4 KiB
JavaScript
1 line
8.4 KiB
JavaScript
|
|
import layoutManager from"./../layoutmanager.js";import appSettings from"./../common/appsettings.js";import{appHost}from"./../common/servicelocator.js";import userSettings from"./../common/usersettings/usersettings.js";import datetime from"./../common/datetime.js";function BaseSettingsContainer(view){this.view=view,this.view.addEventListener("change",onFieldChange.bind(this))}function onFieldChange(e){if(!1!==e.detail?.isUserChange){let elem=e.target.closest(".autoSetting.autoSave");if(elem){let instance=this;"true"===elem.getAttribute("data-changedelay")?setTimeout(function(){instance.saveAutoSetting(elem)},0):instance.saveAutoSetting(elem)}}}function getListDelimiter(elem){return elem.getAttribute("data-delimiter")||","}function getListId(elem){return elem.getAttribute("data-id")}function setCheckboxListValue(elem,value){Array.isArray(value)||(value=value.split(getListDelimiter(elem)));var checkboxes=elem.querySelectorAll('input[type="checkbox"]');for(let i=0,length=checkboxes.length;i<length;i++){var current=checkboxes[i];current.checked=value.includes(getListId(current))}}function getSettingMemberInfo(elem,isGet){var field=elem.getAttribute("data-settingfield");if(field)return{type:"field",member:field};let method;return(method=(method=isGet?elem.getAttribute("data-getsettingmethod"):method)||elem.getAttribute("data-settingmethod"))?{type:"method",member:method}:(field=elem.getAttribute("data-usersettingsfield"))?{type:"usersettingsfield",member:field}:null}BaseSettingsContainer.prototype.settingsOnResume=function(options){options?.refresh&&this.loadSettings(options)},BaseSettingsContainer.prototype.loadSettings=function(options){let instance=this;return this.loadSettingsInternal().then(function(){options.autoFocus&&instance.autoFocus({skipIfNotEnabled:!0})})},BaseSettingsContainer.prototype.getSettingValueFromOwner=function(owner,memberInfo){switch(memberInfo.type){case"field":return owner[memberInfo.member];case"usersettingsfield":return this.getNamedSettingsOwner("usersettings").get(memberInfo.member);case"method":return owner[memberInfo.member]();default:throw new Error("unknown member type: "+memberInfo.type)}},BaseSettingsContainer.prototype.setFieldValue=function(elem,value,triggerChange){var joinDelimiter;"checkbox"===elem.type?elem.checked=!0===value:elem.classList.contains("checkboxList")?setCheckboxListValue(elem,value):(null==value&&(value=""),"SELECT"===elem.tagName?elem.hasAttribute("multiple")?("string"==typeof value&&(value?(joinDelimiter=elem.getAttribute("data-joindelimiter"))&&(value=value.split(joinDelimiter)):value=[]),elem.values=Array.isArray(value)?value:[value]):elem.singleValue=value.toString():"range"===elem.type?elem.setValue(value):elem.value=value),triggerChange&&elem.dispatchEvent(new CustomEvent("change",{detail:{isUserChange:!1},bubbles:!0}))},BaseSettingsContainer.prototype.loadAutoSetting=function(elem){var memberInfo,owner=this.getSettingsOwner(elem);owner&&(memberInfo=getSettingMemberInfo(elem,!0))&&(owner=this.getSettingValueFromOwner(owner,memberInfo),this.setFieldValue(elem,owner,"true"===elem.getAttribute("data-triggerchange")))},BaseSettingsContainer.prototype.getSettingsOwner=function(elem){var owner=elem.getAttribute("data-settingowner");return this.getNamedSettingsOwner(owner,elem)},BaseSettingsContainer.prototype.getNamedSettingsOwner=function(owner,elem){switch(owner){case"layoutmanager":return layoutManager;case"appsettings":return appSettings;case"usersettings":return userSettings;case"subtitleappearancesettings":return this.getNamedSettingsOwner("usersettings",elem).getSubtitleAppearanceSettings();default:var objects;return owner?(objects=this.autoSettingsObjects)?objects[owner]:null:null}},BaseSettingsContainer.prototype.saveAutoSetting=function(elem){var owner=this.getSettingsOwner(elem);if(owner){let value;"checkbox"===elem.type?value=elem.checked:elem.classList.contains("checkboxList")?value=Array.prototype.map.call(elem.querySelectorAll('input[type="checkbox"]:checked'),getListId):"SELECT"===elem.tagName&&elem.hasAttribute("multiple")?(value=elem.getValues(),(jo
|