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

#680 - Support new episode file sorting

This commit is contained in:
Luke Pulverenti 2014-01-20 11:09:53 -05:00
parent 7eac5f192e
commit ccf1871c08
15 changed files with 345 additions and 36 deletions

View file

@ -83,7 +83,7 @@
$('#playButtonContainer', page).hide();
$('#playExternalButtonContainer', page).hide();
}
if (item.LocalTrailerCount && item.LocationType !== "Offline") {
$('#trailerButtonContainer', page).show();
} else {
@ -407,15 +407,13 @@
continue;
}
var friendlyTypeName = item.Type == "Audio" ? "song" : item.Type.toLowerCase();
if (curr.IndexNumber < item.IndexNumber) {
$('.lnkPreviousItem', page).removeClass('hide').attr('href', 'itemdetails.html?id=' + curr.Id).html('← Previous ' + friendlyTypeName);
$('.lnkPreviousItem', page).removeClass('hide').attr('href', 'itemdetails.html?id=' + curr.Id).html('← Previous');
}
else if (curr.IndexNumber > item.IndexNumber) {
$('.lnkNextItem', page).removeClass('hide').attr('href', 'itemdetails.html?id=' + curr.Id).html('Next ' + friendlyTypeName + ' →');
$('.lnkNextItem', page).removeClass('hide').attr('href', 'itemdetails.html?id=' + curr.Id).html('Next' + ' →');
}
}
});
@ -531,12 +529,12 @@
function renderChildren(page, item, user) {
var fields = "ItemCounts,DateCreated,AudioInfo,PrimaryImageAspectRatio";
var query = {
ParentId: item.Id,
Fields: fields
};
// Let the server pre-sort boxsets
if (item.Type !== "BoxSet") {
query.SortBy = "SortName";
@ -1127,7 +1125,7 @@
});
$('#btnPlayTrailer', page).on('click', function () {
ApiClient.getLocalTrailers(Dashboard.getCurrentUserId(), currentItem.Id).done(function (trailers) {
MediaPlayer.play(trailers);

View file

@ -0,0 +1,128 @@
(function ($, document, window) {
function updateSeasonPatternHelp(page, value) {
var replacementHtmlResult = 'Result: ' + value.replace('%s', '1').replace('%0s', '01').replace('%00s', '001');
$('.seasonFolderFieldDescription', page).html(replacementHtmlResult);
}
function updateEpisodePatternHelp(page, value) {
var seriesName = "Series Name";
var episodeTitle = "Episode Four";
value = 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(' ', '.'))
.replace('%e_n', episodeTitle.replace(' ', '_'))
.replace('%e', '4')
.replace('%0e', '04')
.replace('%00e', '004');
var replacementHtmlResult = 'Result: ' + value;
$('.episodePatternDescription', page).html(replacementHtmlResult);
}
function loadPage(page, config) {
var tvOptions = config.TvFileOrganizationOptions;
$('#chkEnableTvSorting', page).checked(tvOptions.IsEnabled).checkboxradio('refresh');
$('#chkOverwriteExistingEpisodes', page).checked(tvOptions.OverwriteExistingEpisodes).checkboxradio('refresh');
$('#chkDeleteEmptyFolders', page).checked(tvOptions.DeleteEmptyFolders).checkboxradio('refresh');
$('#chkEnableTrialMode', page).checked(tvOptions.EnableTrialMode).checkboxradio('refresh');
$('#txtMinFileSize', page).val(tvOptions.MinFileSizeMb);
$('#txtSeasonFolderPattern', page).val(tvOptions.SeasonFolderPattern).trigger('change');
$('#txtSeasonZeroName', page).val(tvOptions.SeasonZeroFolderName);
$('#txtWatchFolder', page).val(tvOptions.WatchLocations[0] || '');
$('#txtEpisodePattern', page).val(tvOptions.EpisodeNamePattern).trigger('change');
}
$(document).on('pageinit', "#libraryFileOrganizerPage", function () {
var page = this;
$('#txtSeasonFolderPattern', page).on('change keypress', function() {
updateSeasonPatternHelp(page, this.value);
});
$('#txtEpisodePattern', page).on('change keypress', function () {
updateEpisodePatternHelp(page, this.value);
});
$('#btnSelectWatchFolder', page).on("click.selectDirectory", function () {
var picker = new DirectoryBrowser(page);
picker.show({
callback: function (path) {
if (path) {
$('#txtWatchFolder', page).val(path);
}
picker.close();
},
header: "Select Watch Folder",
instruction: "Browse or enter the path to your watch folder. The folder must be writeable."
});
});
}).on('pageshow', "#libraryFileOrganizerPage", function () {
var page = this;
ApiClient.getServerConfiguration().done(function (config) {
loadPage(page, config);
});
});
window.LibraryFileOrganizerPage = {
onSubmit: function() {
var form = this;
ApiClient.getServerConfiguration().done(function (config) {
var tvOptions = config.TvFileOrganizationOptions;
tvOptions.IsEnabled = $('#chkEnableTvSorting', form).checked();
tvOptions.OverwriteExistingEpisodes = $('#chkOverwriteExistingEpisodes', form).checked();
tvOptions.DeleteEmptyFolders = $('#chkDeleteEmptyFolders', form).checked();
tvOptions.EnableTrialMode = $('#chkEnableTrialMode', form).checked();
tvOptions.MinFileSizeMb = $('#txtMinFileSize', form).val();
tvOptions.SeasonFolderPattern = $('#txtSeasonFolderPattern', form).val();
tvOptions.SeasonZeroFolderName = $('#txtSeasonZeroName', form).val();
tvOptions.EpisodeNamePattern = $('#txtEpisodePattern', form).val();
var watchLocation = $('#txtWatchFolder', form).val();
tvOptions.WatchLocations = watchLocation ? [watchLocation] : [];
ApiClient.updateServerConfiguration(config).done(Dashboard.processServerConfigurationUpdateResult);
});
return false;
}
};
})(jQuery, document, window);

View file

@ -57,9 +57,6 @@
var name = program.Name;
if (program.IsRepeat) {
name += " (R)";
}
html += '<div class="tvProgramName">' + name + '</div>';
html += '<div class="tvProgramTime">';

View file

@ -10,7 +10,7 @@
return LibraryBrowser.getPosterViewHtml({
items: channels,
useAverageAspectRatio: true,
shape: "backdrop",
shape: "smallBackdrop",
centerText: true
});
}

View file

@ -257,9 +257,6 @@
html += '<div class="guideProgramName">';
html += program.Name;
if (program.IsRepeat) {
html += ' (R)';
}
html += '</div>';
html += '<div class="guideProgramTime">';

View file

@ -32,10 +32,6 @@
var name = item.Name;
if (item.IsRepeat) {
name += ' (R)';
}
$('#itemImage', page).html(LibraryBrowser.getDetailImageHtml(item));
Dashboard.setPageTitle(name);
@ -127,6 +123,15 @@
deleteTimer(page, currentItem.TimerId);
});
$('#btnRemote', page).on('click', function () {
RemoteControl.showMenuForItem({
item: currentItem,
context: 'livetv'
});
});
}).on('pageshow', "#liveTvProgramPage", function () {
var page = this;

View file

@ -107,6 +107,15 @@
$('#btnDelete', page).on('click', deleteRecording);
$('#btnPlay', page).on('click', play);
$('#btnRemote', page).on('click', function () {
RemoteControl.showMenuForItem({
item: currentItem,
context: 'livetv'
});
});
}).on('pagebeforeshow', "#liveTvRecordingPage", function () {
var page = this;

View file

@ -172,12 +172,20 @@
html += '<h3>';
html += program.EpisodeTitle || timer.Name;
if (program.IsRepeat) {
html += ' (R)';
}
html += '</h3>';
html += '<p>';
if (program.IsLive) {
html += '<span class="liveTvProgram">LIVE&nbsp;&nbsp;</span>';
}
else if (program.IsPremiere) {
html += '<span class="premiereTvProgram">PREMIERE&nbsp;&nbsp;</span>';
}
else if (program.IsSeries && !program.IsRepeat) {
html += '<span class="newTvProgram">NEW&nbsp;&nbsp;</span>';
}
html += LiveTvHelpers.getDisplayTime(timer.StartDate);
html += ' - ' + LiveTvHelpers.getDisplayTime(timer.EndDate);
html += '</p>';

View file

@ -1720,7 +1720,7 @@
}
}
html += '<div class="mediaFlyoutOptionName">' + (language || 'Unknown language') + '</div>';
html += '<div class="mediaFlyoutOptionName">' + (language || stream.Language || 'Unknown language') + '</div>';
var options = [];