Sonarr/NzbDrone.Web/Scripts/NzbDrone/seriesDetails.js

189 lines
5.6 KiB
JavaScript

var seriesId = 0;
var saveSeasonIgnoreUrl = '/command/saveseasonignore';
var saveEpisodeIgnoreUrl = '/command/saveepisodeignore';
var changeQualityType;
var changeQualityData;
var changeEpisodeQualityUrl = '/episode/changeepisodequality';
var changeSeasonQualityUrl = '/episode/changeseasonquality';
//Episode Ignore Functions
$(".ignoreEpisode").live("click", function () {
var toggle = $(this);
var ignored = toggle.hasClass('ignored');
if (ignored) {
toggle.removeClass('ignored');
toggleCellColour(toggle, false);
}
else {
toggle.addClass('ignored');
toggleCellColour(toggle, true);
}
var seasonNumber = 0;
//Flip the ignored to the new state (We want the new value moving forward)
ignored = !ignored;
if (toggle.hasClass('ignoredEpisodesMaster')) {
seasonNumber = toggle.attr('data-season');
toggleChildren(seasonNumber, ignored);
toggleMasters(seasonNumber, ignored);
saveSeasonIgnore(seasonNumber, ignored);
}
else {
//Check to see if this is the last one ignored or the first not ignored
var episodeId = toggle.attr('data-episode-id');
saveEpisodeIgnore(episodeId, ignored);
}
});
function toggleChildren(seasonNumber, ignored) {
var ignoreEpisodes = $('[data-season="' + seasonNumber + '"]:not(table)');
if (ignored) {
ignoreEpisodes.each(function (index) {
$(this).addClass('ignored');
toggleCellColour($(this), true);
});
}
else {
ignoreEpisodes.each(function (index) {
$(this).removeClass('ignored');
toggleCellColour($(this), false);
});
}
}
function toggleMasters(seasonNumber, ignored) {
//Toggles the other master(s) to match the one that was just changed
var masters = $('.ignoreSeason_' + seasonNumber);
if (ignored) {
masters.each(function (index) {
$(this).addClass('ignored');
});
}
else {
masters.each(function (index) {
$(this).removeClass('ignored');
});
}
}
function toggleCellColour(toggle, ignored) {
if (ignored) {
toggle.parent('td').addClass('episodeIgnored');
toggle.parent('td').removeClass('episodeMissing');
}
else {
toggle.parent('td').removeClass('episodeIgnored');
//check to see if episode is missing
if (toggle.parent('td').children('.statusImage').attr('data-status') === 'Missing')
toggle.parent('td').addClass('episodeMissing');
}
}
//Episode Ignore Saving
function saveSeasonIgnore(seasonNumber, ignored) {
$.ajax({
type: "POST",
url: saveSeasonIgnoreUrl,
data: jQuery.param({ seriesId: seriesId, seasonNumber: seasonNumber, ignored: ignored }),
});
}
function saveEpisodeIgnore(episodeId, ignored) {
$.ajax({
type: "POST",
url: saveEpisodeIgnoreUrl,
data: jQuery.param({ episodeId: episodeId, ignored: ignored }),
});
}
//Change quality
$(document).on('click', '.changeQuality', function() {
changeQualityType = $(this).attr('data-changetype');
if (changeQualityType === "episode") {
var row = $(this).closest('tr');
changeQualityData = $(row).attr('data-episodefileid');
if (changeQualityData === "0")
return;
var qualityId = $(row).find('.episodeQuality').attr('data-qualityid');
$('#NewQuality').val(qualityId);
}
else {
changeQualityData = $(this).closest('table').attr('data-season');
}
$('#qualityChanger').dialog('open');
});
$("#qualityChanger").dialog({
autoOpen: false,
height: 'auto',
width: 670,
resizable: false,
modal: true,
buttons: {
"Save": function () {
//Save the quality
var newQualityId = $('#NewQuality').val();
var newQualityText = $('#NewQuality :selected').text();
if (changeQualityType === "episode") {
$.ajax({
url: changeEpisodeQualityUrl,
data: { episodeFileId: changeQualityData, quality: newQualityId },
type: 'POST',
success: function(data) {
var row = $('tr[data-episodefileid="' + changeQualityData + '"]');
var qualityCell = $(row).find('.episodeQuality');
$(qualityCell).attr('data-qualityid', newQualityId);
$(qualityCell).text(newQualityText);
}
});
}
else {
$.ajax({
url: changeSeasonQualityUrl,
data: { seriesId: seriesId, seasonNumber: changeQualityData, quality: newQualityId },
type: 'POST',
success: function (data) {
var table = $('table[data-season="' + changeQualityData + '"]');
var rows = $(table).find('tbody').children('tr');
$(rows).each(function() {
if ($(this).attr('data-episodefileid') === '0')
return;
var qualityCell = $(this).find('.episodeQuality');
$(qualityCell).attr('data-qualityid', newQualityId);
$(qualityCell).text(newQualityText);
});
}
});
}
$(this).dialog("close");
},
Cancel: function () {
$(this).dialog("close");
}
}
});