1 line
No EOL
7.6 KiB
JavaScript
1 line
No EOL
7.6 KiB
JavaScript
import BaseView from"./../modules/viewmanager/basesettingsview.js";import loading from"./../modules/loading/loading.js";import globalize from"./../modules/common/globalize.js";import"./../modules/emby-elements/emby-scroller/emby-scroller.js";import"./../modules/emby-elements/emby-select/emby-select.js";import"./../modules/emby-elements/emby-button/emby-button.js";import"./../modules/emby-elements/emby-input/emby-input.js";import"./../modules/emby-elements/emby-checkbox/emby-checkbox.js";import connectionManager from"./../modules/emby-apiclient/connectionmanager.js";import currentUserSettings from"./../modules/common/usersettings/usersettings.js";import userSettingsBuilder from"./../modules/common/usersettings/usersettingsbuilder.js";import subtitleAppearanceHelper from"./../modules/common/subtitleappearancehelper.js";function showConfirm(options){return Emby.importModule("./modules/common/dialogs/confirm.js").then(function(confirm){return confirm(options)})}function numberToPercentString(value){try{return new Intl.NumberFormat(globalize.getCurrentLocales(),{style:"percent"}).format(value/100)}catch(err){return console.log("Error in NumberFormat: "+err),value+"%"}}function populateVerticalPosition(select){var options=[{name:numberToPercentString(90),value:90},{name:numberToPercentString(80),value:80},{name:numberToPercentString(70),value:70},{name:numberToPercentString(60),value:60},{name:numberToPercentString(50),value:50},{name:numberToPercentString(40),value:40},{name:numberToPercentString(30),value:30},{name:numberToPercentString(20),value:20},{name:numberToPercentString(10),value:10},{name:globalize.translate("Bottom"),value:0}];options.reverse(),select.innerHTML=options.map(function(o){return'<option value="'+o.value+'">'+o.name+"</option>"}).join("")}function loadForm(context,user,userSettings,appearanceSettings,apiClient){populateVerticalPosition(context.querySelector(".selectVerticalPosition")),loading.hide()}function onSubmit(e){return e.preventDefault(),!1}function onAppearanceFieldChange(e){var view=e.target.closest(".subtitlesettings"),elements={window:view.querySelector(".subtitleappearance-preview-window"),text:view.querySelector(".subtitleappearance-preview-text")},appearanceSettings=this.settingsOptions.userSettings.getSubtitleAppearanceSettings(),elements=(subtitleAppearanceHelper.applyStyles(elements,appearanceSettings),e.target.closest(".selectBackgroundColor"));elements&&("transparent"===elements.value?view.querySelector(".fldBackgroundOpacity").classList.add("hide"):view.querySelector(".fldBackgroundOpacity").classList.remove("hide"))}function loadData(options){let context=options.element,userId=(loading.show(),options.userId),apiClient=connectionManager.getApiClient(options.serverId),userSettings=options.userSettings;return apiClient.getUser(userId).then(function(user){return options.user=user,(userId===apiClient.getCurrentUserId()?Promise.resolve():userSettings.setUserInfo(userId,apiClient)).then(function(){var appearanceSettings=userSettings.getSubtitleAppearanceSettings();return loadForm(context,user,userSettings,appearanceSettings,apiClient)})})}function onTrackSelectionsCleared(){loading.hide()}function onClearSavedTrackSelectionsClick(e){let options=this;let mode=e.target.closest("button").getAttribute("data-mode");return showConfirm({title:globalize.translate("HeaderClearTrackSelections"),text:globalize.translate("QuestionClearSavedTracks"),confirmText:globalize.translate("HeaderClearTrackSelections"),primary:"cancel"}).then(function(){return loading.show(),connectionManager.getApiClient(options.serverId).clearUserTrackSelections(options.userId,mode).then(onTrackSelectionsCleared,onTrackSelectionsCleared)})}function getSubtitleLanguages(query){var apiClient=connectionManager.getApiClient(this.settingsOptions.serverId);let instance=this;return apiClient.getCultures().then(function(cultures){let selectedValues=instance.settingsOptions.element.querySelector(".selectSubtitleLanguage").values,items=(Array.isArray(selectedValues)||(selectedValues=selectedValues?.split?selectedValues.split(","):[]),cultures.map(function(c){return{Name:c.DisplayName,Id:c.TwoLetterISOLanguageName,Type:"GenericListItem",CanReorder:-1!==selectedValues.indexOf(c.TwoLetterISOLanguageName)&&1<selectedValues.length}}));items.sort(function(a,b){let aIndex=selectedValues.indexOf(a.Id),bIndex=selectedValues.indexOf(b.Id);return aIndex<0&&(aIndex=items.length),bIndex<0&&(bIndex=items.length),aIndex===bIndex?0:aIndex<bIndex?-1:1});cultures=items.length;return items=items.slice(query.StartIndex||0),null!=query.Limit&&items.length>query.Limit&&(items.length=Math.min(items.length,query.Limit)),{TotalRecordCount:cultures,Items:items}})}function fillSubtitleModeSelection(view,apiClient){let html="";html=(html=(html+='<option value="Default" data-description="'+globalize.translate("DefaultSubtitlesHelp")+'">'+globalize.translate("Default")+"</option>")+'<option value="Smart" data-description="'+globalize.translate("SmartSubtitlesHelp")+'">'+globalize.translate("Smart")+"</option>")+'<option value="OnlyForced" data-description="'+globalize.translate("OnlyForcedSubtitlesHelp")+'">'+globalize.translate("OnlyForcedSubtitles")+"</option>",apiClient.isMinServerVersion("4.8.0.67")&&(html+='<option value="HearingImpaired" data-description="'+globalize.translate("AutoSelectHearingImpairedHelp")+'">'+globalize.translate("HearingImpaired")+"</option>"),html=(html+='<option value="Always" data-description="'+globalize.translate("AlwaysPlaySubtitlesHelp")+'">'+globalize.translate("AlwaysPlaySubtitles")+"</option>")+'<option value="None" data-description="'+globalize.translate("NoSubtitlesHelp")+'">'+globalize.translate("NoSubtitles")+"</option>",view.querySelector(".selectSubtitlePlaybackMode").innerHTML=html}function View(view,params){BaseView.apply(this,arguments);var apiClient=connectionManager.getApiClient(params.serverId),params=params.userId||apiClient.getCurrentUserId(),userSettings=params===apiClient.getCurrentUserId()?currentUserSettings:new userSettingsBuilder,params={serverId:apiClient.serverId(),userId:params,element:view.querySelector(".settingsContainer"),userSettings:userSettings};(this.settingsOptions=params).element.classList.add("subtitlesettings"),fillSubtitleModeSelection(params.element,apiClient),params.element.querySelector("form").addEventListener("submit",onSubmit.bind(params)),view.addEventListener("change",onAppearanceFieldChange.bind(this)),params.element.querySelector(".btnClearTrackSelections").addEventListener("click",onClearSavedTrackSelectionsClick.bind(params)),params.element.querySelector(".selectSubtitleLanguage").getItems=getSubtitleLanguages.bind(this)}function getUserConfiguration(options){return Promise.resolve({key:"userconfiguration",value:options.user.Configuration})}require(["css!settings/subtitles.css"]),Object.assign(View.prototype,BaseView.prototype),View.prototype.loadSettingsInternal=function(){let instance=this;return loadData(instance.settingsOptions).then(function(){return instance.loadAutoSettings()})},View.prototype.getAutoSettingsObjectsPromises=function(){var list=BaseView.prototype.getAutoSettingsObjectsPromises.apply(this,arguments);return list.push(getUserConfiguration(this.settingsOptions)),list},View.prototype.getNamedSettingsOwner=function(owner){switch(owner){case"usersettings":return this.settingsOptions.userSettings;case"userconfiguration":return this.settingsOptions.user.Configuration;default:return BaseView.prototype.getNamedSettingsOwner.apply(this,arguments)}},View.prototype.getUserConfigurationUserId=function(){return this.settingsOptions.userId},View.prototype.destroy=function(){BaseView.prototype.destroy.apply(this,arguments),this.settingsOptions=null};export default View; |