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

133 lines
5.8 KiB
JavaScript
Raw Normal View History

2020-08-14 08:46:34 +02:00
import 'jquery';
import loading from '../components/loading/loading';
2024-08-14 13:31:34 -04:00
import globalize from '../lib/globalize';
2020-08-14 08:46:34 +02:00
import '../elements/emby-button/emby-button';
2022-04-10 02:22:13 -04:00
import Dashboard from '../utils/dashboard';
import alert from '../components/alert';
2018-10-23 01:05:09 +03:00
2020-07-31 23:27:51 +02:00
function loadPage(page, config) {
page.querySelector('.liveTvSettingsForm').classList.remove('hide');
page.querySelector('.noLiveTvServices')?.classList.add('hide');
page.querySelector('#selectGuideDays').value = config.GuideDays || '';
page.querySelector('#txtPrePaddingMinutes').value = config.PrePaddingSeconds / 60;
page.querySelector('#txtPostPaddingMinutes').value = config.PostPaddingSeconds / 60;
2020-07-31 23:27:51 +02:00
page.querySelector('#txtRecordingPath').value = config.RecordingPath || '';
page.querySelector('#txtMovieRecordingPath').value = config.MovieRecordingPath || '';
page.querySelector('#txtSeriesRecordingPath').value = config.SeriesRecordingPath || '';
page.querySelector('#txtPostProcessor').value = config.RecordingPostProcessor || '';
page.querySelector('#txtPostProcessorArguments').value = config.RecordingPostProcessorArguments || '';
page.querySelector('#chkSaveRecordingNFO').checked = config.SaveRecordingNFO;
page.querySelector('#chkSaveRecordingImages').checked = config.SaveRecordingImages;
2020-07-31 23:27:51 +02:00
loading.hide();
}
2018-10-23 01:05:09 +03:00
2020-07-31 23:27:51 +02:00
function onSubmit() {
loading.show();
const form = this;
ApiClient.getNamedConfiguration('livetv').then(function (config) {
config.GuideDays = form.querySelector('#selectGuideDays').value || null;
2020-07-31 23:27:51 +02:00
const recordingPath = form.querySelector('#txtRecordingPath').value || null;
const movieRecordingPath = form.querySelector('#txtMovieRecordingPath').value || null;
const seriesRecordingPath = form.querySelector('#txtSeriesRecordingPath').value || null;
const recordingPathChanged = recordingPath != config.RecordingPath || movieRecordingPath != config.MovieRecordingPath || seriesRecordingPath != config.SeriesRecordingPath;
config.RecordingPath = recordingPath;
config.MovieRecordingPath = movieRecordingPath;
config.SeriesRecordingPath = seriesRecordingPath;
config.RecordingEncodingFormat = 'mkv';
config.PrePaddingSeconds = 60 * form.querySelector('#txtPrePaddingMinutes').value;
config.PostPaddingSeconds = 60 * form.querySelector('#txtPostPaddingMinutes').value;
config.RecordingPostProcessor = form.querySelector('#txtPostProcessor').value;
config.RecordingPostProcessorArguments = form.querySelector('#txtPostProcessorArguments').value;
config.SaveRecordingNFO = form.querySelector('#chkSaveRecordingNFO').checked;
config.SaveRecordingImages = form.querySelector('#chkSaveRecordingImages').checked;
2020-07-31 23:27:51 +02:00
ApiClient.updateNamedConfiguration('livetv', config).then(function () {
Dashboard.processServerConfigurationUpdateResult();
showSaveMessage(recordingPathChanged);
});
2020-07-31 23:27:51 +02:00
});
return false;
}
2018-10-23 01:05:09 +03:00
2020-07-31 23:27:51 +02:00
function showSaveMessage(recordingPathChanged) {
let msg = '';
2020-07-31 23:27:51 +02:00
if (recordingPathChanged) {
2020-08-02 16:57:13 +09:00
msg += globalize.translate('MessageChangeRecordingPath');
2020-07-31 23:27:51 +02:00
}
2020-07-31 23:27:51 +02:00
if (msg) {
alert(msg);
2018-10-23 01:05:09 +03:00
}
2020-07-31 23:27:51 +02:00
}
2020-12-10 11:27:51 +03:00
$(document).on('pageinit', '#liveTvSettingsPage', function () {
const page = this;
$('.liveTvSettingsForm').off('submit', onSubmit).on('submit', onSubmit);
$('#btnSelectRecordingPath', page).on('click.selectDirectory', function () {
2023-03-29 00:38:22 -04:00
import('../components/directorybrowser/directorybrowser').then(({ default: DirectoryBrowser }) => {
2021-09-08 02:46:43 +03:00
const picker = new DirectoryBrowser();
2020-12-10 11:27:51 +03:00
picker.show({
callback: function (path) {
if (path) {
page.querySelector('#txtRecordingPath').value = path;
2020-12-10 11:27:51 +03:00
}
2020-12-10 11:27:51 +03:00
picker.close();
},
validateWriteable: true
});
});
2020-12-10 11:27:51 +03:00
});
$('#btnSelectMovieRecordingPath', page).on('click.selectDirectory', function () {
2023-03-29 00:38:22 -04:00
import('../components/directorybrowser/directorybrowser').then(({ default: DirectoryBrowser }) => {
2021-09-08 02:46:43 +03:00
const picker = new DirectoryBrowser();
2020-12-10 11:27:51 +03:00
picker.show({
callback: function (path) {
if (path) {
page.querySelector('#txtMovieRecordingPath').value = path;
2020-12-10 11:27:51 +03:00
}
2020-12-10 11:27:51 +03:00
picker.close();
},
validateWriteable: true
});
});
2020-12-10 11:27:51 +03:00
});
$('#btnSelectSeriesRecordingPath', page).on('click.selectDirectory', function () {
2023-03-29 00:38:22 -04:00
import('../components/directorybrowser/directorybrowser').then(({ default: DirectoryBrowser }) => {
2021-09-08 02:46:43 +03:00
const picker = new DirectoryBrowser();
2020-12-10 11:27:51 +03:00
picker.show({
callback: function (path) {
if (path) {
page.querySelector('#txtSeriesRecordingPath').value = path;
2020-12-10 11:27:51 +03:00
}
2020-12-10 11:27:51 +03:00
picker.close();
},
validateWriteable: true
});
});
2020-12-10 11:27:51 +03:00
});
$('#btnSelectPostProcessorPath', page).on('click.selectDirectory', function () {
2023-03-29 00:38:22 -04:00
import('../components/directorybrowser/directorybrowser').then(({ default: DirectoryBrowser }) => {
2021-09-08 02:46:43 +03:00
const picker = new DirectoryBrowser();
2020-12-10 11:27:51 +03:00
picker.show({
includeFiles: true,
callback: function (path) {
if (path) {
page.querySelector('#txtPostProcessor').value = path;
2018-10-23 01:05:09 +03:00
}
2020-12-10 11:27:51 +03:00
picker.close();
}
});
});
});
2020-12-10 11:27:51 +03:00
}).on('pageshow', '#liveTvSettingsPage', function () {
loading.show();
const page = this;
ApiClient.getNamedConfiguration('livetv').then(function (config) {
loadPage(page, config);
});
});