1 line
5.7 KiB
JavaScript
1 line
5.7 KiB
JavaScript
define(["exports","./baseview.js","./../layoutmanager.js","./../common/appsettings.js","./../common/usersettings/usersettings.js"],function(_exports,_baseview,_layoutmanager,_appsettings,_usersettings){function BaseSettingsView(view,params,options){_baseview.default.call(this,view,params,options),view.classList.add("settingsView"),this.options=options,this.view.addEventListener("change",function(e){var _e$detail,elem,instance;!1!==(null==(_e$detail=e.detail)?void 0:_e$detail.isUserChange)&&(elem=e.target.closest(".autoSetting.autoSave"))&&(instance=this,"true"===elem.getAttribute("data-changedelay")?setTimeout(function(){instance.saveAutoSetting(elem)},0):instance.saveAutoSetting(elem))}.bind(this))}function getListId(elem){return elem.getAttribute("data-id")}function getSettingMemberInfo(elem,isGet){var method,field=elem.getAttribute("data-settingfield");return field?{type:"field",member:field}:(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}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,Object.assign(BaseSettingsView.prototype,_baseview.default.prototype),BaseSettingsView.prototype.onResume=function(options){_baseview.default.prototype.onResume.apply(this,arguments),null!=options&&options.refresh&&this.loadSettings(options)},BaseSettingsView.prototype.loadSettings=function(options){var instance=this;return this.loadSettingsInternal().then(function(){options.autoFocus&&instance.autoFocus({skipIfNotEnabled:!0})})},BaseSettingsView.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)}},BaseSettingsView.prototype.setFieldValue=function(elem,value,triggerChange){"checkbox"===elem.type?elem.checked=!0===value:elem.classList.contains("checkboxList")?function(elem,value){Array.isArray(value)||(value=value.split(function(elem){return elem.getAttribute("data-delimiter")||","}(elem)));for(var checkboxes=elem.querySelectorAll('input[type="checkbox"]'),i=0,length=checkboxes.length;i<length;i++){var current=checkboxes[i];current.checked=value.includes(getListId(current))}}(elem,value):elem.value=value=null==value?"":value,triggerChange&&elem.dispatchEvent(new CustomEvent("change",{detail:{isUserChange:!1},bubbles:!0}))},BaseSettingsView.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")))},BaseSettingsView.prototype.getSettingsOwner=function(elem){var owner=elem.getAttribute("data-settingowner");return this.getNamedSettingsOwner(owner,elem)},BaseSettingsView.prototype.getNamedSettingsOwner=function(owner,elem){switch(owner){case"layoutmanager":return _layoutmanager.default;case"appsettings":return _appsettings.default;case"usersettings":return _usersettings.default;case"subtitleappearancesettings":return this.getNamedSettingsOwner("usersettings",elem).getSubtitleAppearanceSettings();default:var objects;return owner?(objects=this.autoSettingsObjects)?objects[owner]:null:null}},BaseSettingsView.prototype.saveAutoSetting=function(elem){var value,memberInfo,owner=this.getSettingsOwner(elem);owner&&(value="checkbox"===elem.type?elem.checked:elem.classList.contains("checkboxList")?Array.prototype.map.call(elem.querySelectorAll('input[type="checkbox"]:checked'),getListId):elem.value,memberInfo=getSettingMemberInfo(elem))&&this.saveAutoSettingIntoOwner(elem,owner,memberInfo,value)},BaseSettingsView.prototype.getUserConfigurationUserId=function(){return this.getApiClient().getCurrentUserId()},BaseSettingsView.prototype.saveAutoSettingIntoOwner=function(elem,owner,memberInfo,value){var apiClient,userId,obj,ownerName=elem.getAttribute("data-settingowner");if("userconfiguration"===ownerName)apiClient=this.getApiClient(),userId=this.getUserConfigurationUserId(),(obj={})[memberInfo.member]=value,apiClient.updatePartialUserConfiguration(userId,obj);else{switch(memberInfo.type){case"field":owner[memberInfo.member]=value;break;case"usersettingsfield":owner.set(memberInfo.member,value);break;case"method":owner[memberInfo.member](value);break;default:throw new Error("unknown member type: "+memberInfo.type)}"subtitleappearancesettings"===ownerName&&this.getNamedSettingsOwner("usersettings",elem).setSubtitleAppearanceSettings(owner)}},BaseSettingsView.prototype.getAutoSettingsObjectsPromises=function(){return[]},BaseSettingsView.prototype.loadAutoSettingsObjects=function(){var instance=this;return Promise.all(this.getAutoSettingsObjectsPromises()).then(function(responses){for(var objects={},i=0,length=responses.length;i<length;i++){var response=responses[i];response.key&&(objects[response.key]=response.value)}instance.autoSettingsObjects=objects})},BaseSettingsView.prototype.loadAutoSettings=function(){var instance=this,elems=instance.view.querySelectorAll(".autoSetting");return instance.loadAutoSettingsObjects().then(function(){for(var i=0,length=elems.length;i<length;i++){var elem=elems[i];instance.loadAutoSetting(elem)}})},BaseSettingsView.prototype.saveAutoSettings=function(){for(var elems=this.view.querySelectorAll(".autoSetting"),i=0,length=elems.length;i<length;i++){var elem=elems[i];this.saveAutoSetting(elem)}return Promise.resolve()},BaseSettingsView.prototype.loadSettingsInternal=function(){return Promise.resolve()},_exports.default=BaseSettingsView}); |