1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

~ convert subtitlesettings to class

~ use base import name instead of relative file path
~ fix "new" calling

Signed-off-by: Christoph Potas <christoph286@googlemail.com>
This commit is contained in:
Christoph Potas 2020-05-04 03:20:38 +02:00
parent 257ce4974e
commit 6f0843cc6d
5 changed files with 97 additions and 46 deletions

View file

@ -92,6 +92,7 @@
"src/components/cardbuilder/cardBuilder.js", "src/components/cardbuilder/cardBuilder.js",
"src/components/subtitlesettings/subtitlesettings.js", "src/components/subtitlesettings/subtitlesettings.js",
"src/components/subtitlesettings/subtitleappearancehelper.js", "src/components/subtitlesettings/subtitleappearancehelper.js",
"src/components/settingshelper.js",
"src/scripts/dom.js", "src/scripts/dom.js",
"src/components/filedownloader.js", "src/components/filedownloader.js",
"src/scripts/filesystem.js", "src/scripts/filesystem.js",

View file

@ -0,0 +1,24 @@
import globalize from 'globalize';
/**
* Helper for handling settings
* @module components/settingsHelper
*/
export function populateLanguages(select, languages) {
let html = "";
html += "<option value=''>" + globalize.translate('AnyLanguage') + "</option>";
for (let i = 0, length = languages.length; i < length; i++) {
const culture = languages[i];
html += "<option value='" + culture.ThreeLetterISOLanguageName + "'>" + culture.DisplayName + "</option>";
}
select.innerHTML = html;
}
export default {
populateLanguages: populateLanguages
};

View file

@ -1,3 +1,7 @@
/**
* Subtitle settings visual helper
* @module components/subtitleSettings/subtitleAppearanceHelper
*/
function getTextStyles(settings, isCue) { function getTextStyles(settings, isCue) {
let list = []; let list = [];

View file

@ -4,9 +4,9 @@ import appHost from 'apphost';
import appSettings from 'appSettings'; import appSettings from 'appSettings';
import focusManager from 'focusManager'; import focusManager from 'focusManager';
import loading from 'loading'; import loading from 'loading';
import connectionManager from 'connectionmanager'; import connectionManager from 'connectionManager';
import subtitleAppearanceHelper from 'subtitleappearancehelper'; import subtitleAppearanceHelper from 'subtitleAppearanceHelper';
import playbacksettings from 'playbacksettings'; import settingsHelper from '../settingshelper';
import dom from 'dom'; import dom from 'dom';
import events from 'events'; import events from 'events';
import 'listViewStyle'; import 'listViewStyle';
@ -15,6 +15,11 @@ import 'emby-input';
import 'emby-checkbox'; import 'emby-checkbox';
import 'flexStyles'; import 'flexStyles';
/**
* Subtitle settings
* @module components/subtitleSettings/subtitleSettings
*/
function getSubtitleAppearanceObject(context) { function getSubtitleAppearanceObject(context) {
let appearanceSettings = {}; let appearanceSettings = {};
@ -37,7 +42,7 @@ function loadForm(context, user, userSettings, appearanceSettings, apiClient) {
let selectSubtitleLanguage = context.querySelector( '#selectSubtitleLanguage' ); let selectSubtitleLanguage = context.querySelector( '#selectSubtitleLanguage' );
playbacksettings.populateLanguages(selectSubtitleLanguage, allCultures); settingsHelper.populateLanguages(selectSubtitleLanguage, allCultures);
selectSubtitleLanguage.value = user.Configuration.SubtitleLanguagePreference || ""; selectSubtitleLanguage.value = user.Configuration.SubtitleLanguagePreference || "";
context.querySelector('#selectSubtitlePlaybackMode').value = user.Configuration.SubtitleMode || ""; context.querySelector('#selectSubtitlePlaybackMode').value = user.Configuration.SubtitleMode || "";
@ -73,7 +78,7 @@ function saveUser(context, user, userSettingsInstance, appearanceKey, apiClient)
return apiClient.updateUserConfiguration(user.Id, user.Configuration); return apiClient.updateUserConfiguration(user.Id, user.Configuration);
} }
export function save(instance, context, userId, userSettings, apiClient, enableSaveConfirmation) { function save(instance, context, userId, userSettings, apiClient, enableSaveConfirmation) {
loading.show(); loading.show();
@ -123,14 +128,14 @@ function onAppearanceFieldChange(e) {
subtitleAppearanceHelper.applyStyles(elements, appearanceSettings); subtitleAppearanceHelper.applyStyles(elements, appearanceSettings);
} }
export function embed(options, self) { function embed(options, self) {
require(['text!./subtitlesettings.template.html'], function (template) { require(['text!./subtitlesettings.template.html'], function (template) {
options.element.classList.add('subtitlesettings'); options.element.classList.add('subtitlesettings');
options.element.innerHTML = globalize.translateDocument(template, 'core'); options.element.innerHTML = globalize.translateDocument(template, 'core');
options.element.querySelector('form').addEventListener('submit', playbacksettings.OnSubmit.bind(self)); options.element.querySelector('form').addEventListener('submit', self.onSubmit );
options.element.querySelector('#selectSubtitlePlaybackMode').addEventListener('change', onSubtitleModeChange); options.element.querySelector('#selectSubtitlePlaybackMode').addEventListener('change', onSubtitleModeChange);
options.element.querySelector('#selectTextSize').addEventListener('change', onAppearanceFieldChange); options.element.querySelector('#selectTextSize').addEventListener('change', onAppearanceFieldChange);
@ -155,15 +160,16 @@ export function embed(options, self) {
}); });
} }
export function SubtitleSettings(options) { export class SubtitleSettings {
constructor(options) {
this.options = options; this.options = options;
embed(options, this); embed(options, this);
} }
SubtitleSettings.prototype.loadData = function () {
loadData() {
let self = this; let self = this;
let context = self.options.element; let context = self.options.element;
@ -182,18 +188,34 @@ SubtitleSettings.prototype.loadData = function () {
loadForm(context, user, userSettings, appearanceSettings, apiClient); loadForm(context, user, userSettings, appearanceSettings, apiClient);
}); });
}); });
}; }
SubtitleSettings.prototype.submit = function () { submit() {
playbacksettings.onSubmit.call(this); this.onSubmit( null );
}; }
SubtitleSettings.prototype.destroy = function () { destroy() {
this.options = null; this.options = null;
}; }
export default { onSubmit( e ) {
save: save, const self = this;
embed: embed, let apiClient = connectionManager.getApiClient(self.options.serverId);
SubtitleSettings: SubtitleSettings let userId = self.options.userId;
}; let userSettings = self.options.userSettings;
userSettings.setUserInfo(userId, apiClient).then(function () {
let enableSaveConfirmation = self.options.enableSaveConfirmation;
save(self, self.options.element, userId, userSettings, apiClient, enableSaveConfirmation);
});
// Disable default form submission
if (e) {
e.preventDefault();
}
return false;
}
}
export default SubtitleSettings;

View file

@ -18,7 +18,7 @@ define(["subtitleSettings", "userSettings", "autoFocuser"], function (SubtitleSe
if (subtitleSettingsInstance) { if (subtitleSettingsInstance) {
subtitleSettingsInstance.loadData(); subtitleSettingsInstance.loadData();
} else { } else {
subtitleSettingsInstance = new SubtitleSettings({ subtitleSettingsInstance = new SubtitleSettings.default({
serverId: ApiClient.serverId(), serverId: ApiClient.serverId(),
userId: userId, userId: userId,
element: view.querySelector(".settingsContainer"), element: view.querySelector(".settingsContainer"),