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

181 lines
7.1 KiB
JavaScript
Raw Normal View History

define([], function () {
2015-06-08 17:32:20 -04:00
2014-01-21 11:24:12 -05:00
function getEpisodeFileName(value, enableMultiEpisode) {
2015-06-08 17:32:20 -04:00
var seriesName = "Series Name";
var episodeTitle = "Episode Four";
2014-01-21 11:24:12 -05:00
var result = value.replace('%sn', seriesName)
.replace('%s.n', seriesName.replace(' ', '.'))
.replace('%s_n', seriesName.replace(' ', '_'))
.replace('%s', '1')
.replace('%0s', '01')
.replace('%00s', '001')
.replace('%ext', 'mkv')
.replace('%en', episodeTitle)
.replace('%e.n', episodeTitle.replace(' ', '.'))
2014-01-21 11:24:12 -05:00
.replace('%e_n', episodeTitle.replace(' ', '_'));
2015-06-08 17:32:20 -04:00
2014-01-21 11:24:12 -05:00
if (enableMultiEpisode) {
result = result
.replace('%ed', '5')
.replace('%0ed', '05')
.replace('%00ed', '005');
}
return result
.replace('%e', '4')
.replace('%0e', '04')
.replace('%00e', '004');
2014-01-21 11:24:12 -05:00
}
function loadPage(view, config) {
2014-07-30 22:09:23 -04:00
var tvOptions = config.TvOptions;
view.querySelector('#chkEnableTvSorting').checked = tvOptions.IsEnabled;
view.querySelector('#chkOverwriteExistingEpisodes').checked = tvOptions.OverwriteExistingEpisodes;
view.querySelector('#chkDeleteEmptyFolders').checked = tvOptions.DeleteEmptyFolders;
view.querySelector('#txtMinFileSize').value = tvOptions.MinFileSizeMb;
view.querySelector('#txtSeasonFolderPattern').value = tvOptions.SeasonFolderPattern;
view.querySelector('#txtSeasonZeroName').value = tvOptions.SeasonZeroFolderName;
view.querySelector('#txtWatchFolder').value = tvOptions.WatchLocations[0] || '';
2014-01-29 15:30:26 -05:00
view.querySelector('#txtEpisodePattern').value = tvOptions.EpisodeNamePattern;
view.querySelector('#txtMultiEpisodePattern').value = tvOptions.MultiEpisodeNamePattern;
view.querySelector('#txtDeleteLeftOverFiles').value = tvOptions.LeftOverFileExtensionsToDelete.join(';');
2015-06-08 17:32:20 -04:00
view.querySelector('#copyOrMoveFile').value = tvOptions.CopyOriginalFile.toString();
2015-06-08 17:32:20 -04:00
}
function onSubmit(view) {
2015-06-08 17:32:20 -04:00
2015-12-14 10:43:03 -05:00
ApiClient.getNamedConfiguration('autoorganize').then(function (config) {
2015-06-08 17:32:20 -04:00
var tvOptions = config.TvOptions;
tvOptions.IsEnabled = view.querySelector('#chkEnableTvSorting').checked;
tvOptions.OverwriteExistingEpisodes = view.querySelector('#chkOverwriteExistingEpisodes').checked;
tvOptions.DeleteEmptyFolders = view.querySelector('#chkDeleteEmptyFolders').checked;
2015-06-08 17:32:20 -04:00
tvOptions.MinFileSizeMb = view.querySelector('#txtMinFileSize').value;
tvOptions.SeasonFolderPattern = view.querySelector('#txtSeasonFolderPattern').value;
tvOptions.SeasonZeroFolderName = view.querySelector('#txtSeasonZeroName').value;
2015-06-08 17:32:20 -04:00
tvOptions.EpisodeNamePattern = view.querySelector('#txtEpisodePattern').value;
tvOptions.MultiEpisodeNamePattern = view.querySelector('#txtMultiEpisodePattern').value;
2015-06-08 17:32:20 -04:00
tvOptions.LeftOverFileExtensionsToDelete = view.querySelector('#txtDeleteLeftOverFiles').value.split(';');
2015-06-08 17:32:20 -04:00
var watchLocation = view.querySelector('#txtWatchFolder').value;
2015-06-08 17:32:20 -04:00
tvOptions.WatchLocations = watchLocation ? [watchLocation] : [];
tvOptions.CopyOriginalFile = view.querySelector('#copyOrMoveFile').value;
2016-04-23 22:23:37 +02:00
ApiClient.updateNamedConfiguration('autoorganize', config).then(Dashboard.processServerConfigurationUpdateResult, Dashboard.processErrorResponse);
2015-06-08 17:32:20 -04:00
});
return false;
}
2015-06-08 17:32:20 -04:00
2016-04-13 01:28:45 -04:00
function getTabs() {
return [
{
href: 'autoorganizelog.html',
name: Globalize.translate('TabActivityLog')
},
{
href: 'autoorganizetv.html',
name: Globalize.translate('TabTV')
},
{
href: 'autoorganizesmart.html',
name: Globalize.translate('TabSmartMatches')
}];
}
return function (view, params) {
function updateSeasonPatternHelp() {
var value = view.querySelector('#txtSeasonFolderPattern').value;
value = value.replace('%s', '1').replace('%0s', '01').replace('%00s', '001');
var replacementHtmlResult = Globalize.translate('OrganizePatternResult').replace('{0}', value);
view.querySelector('.seasonFolderFieldDescription').innerHTML = replacementHtmlResult;
}
function updateEpisodePatternHelp() {
var value = view.querySelector('#txtEpisodePattern').value;
var fileName = getEpisodeFileName(value, false);
var replacementHtmlResult = Globalize.translate('OrganizePatternResult').replace('{0}', fileName);
2014-01-21 11:24:12 -05:00
view.querySelector('.episodePatternDescription').innerHTML = replacementHtmlResult;
}
2014-01-21 11:24:12 -05:00
function updateMultiEpisodePatternHelp() {
var value = view.querySelector('#txtMultiEpisodePattern').value;
var fileName = getEpisodeFileName(value, false);
2014-01-21 11:24:12 -05:00
var replacementHtmlResult = Globalize.translate('OrganizePatternResult').replace('{0}', fileName);
view.querySelector('.multiEpisodePatternDescription').innerHTML = replacementHtmlResult;
}
function selectWatchFolder(e) {
2015-10-13 15:22:45 -04:00
require(['directorybrowser'], function (directoryBrowser) {
2015-10-13 15:22:45 -04:00
var picker = new directoryBrowser();
2015-10-13 15:22:45 -04:00
picker.show({
2015-10-13 15:22:45 -04:00
callback: function (path) {
2015-10-13 15:22:45 -04:00
if (path) {
view.querySelector('#txtWatchFolder').value = path;
2015-10-13 15:22:45 -04:00
}
picker.close();
},
header: Globalize.translate('HeaderSelectWatchFolder'),
instruction: Globalize.translate('HeaderSelectWatchFolderHelp')
});
});
}
view.querySelector('#txtSeasonFolderPattern').addEventListener('change', updateSeasonPatternHelp);
view.querySelector('#txtSeasonFolderPattern').addEventListener('keyup', updateSeasonPatternHelp);
view.querySelector('#txtEpisodePattern').addEventListener('change', updateEpisodePatternHelp);
view.querySelector('#txtEpisodePattern').addEventListener('keyup', updateEpisodePatternHelp);
view.querySelector('#txtMultiEpisodePattern').addEventListener('change', updateMultiEpisodePatternHelp);
view.querySelector('#txtMultiEpisodePattern').addEventListener('keyup', updateMultiEpisodePatternHelp);
view.querySelector('#btnSelectWatchFolder').addEventListener('click', selectWatchFolder);
2015-06-08 17:32:20 -04:00
view.querySelector('.libraryFileOrganizerForm').addEventListener('submit', function (e) {
e.preventDefault();
onSubmit(view);
return false;
});
view.addEventListener('viewshow', function (e) {
2016-04-13 01:28:45 -04:00
LibraryMenu.setTabs('autoorganize', 1, getTabs);
ApiClient.getNamedConfiguration('autoorganize').then(function (config) {
loadPage(view, config);
updateSeasonPatternHelp();
updateEpisodePatternHelp();
updateMultiEpisodePatternHelp();
});
});
};
});