SickGear/gui/slick/js/qualityChooser.js
JackDandy fae9ae6bb7 Change terminology around the custom quality selection to improve clarity.
Change restrict changing custom download qualities to reasonable selections.
Add upgrade to quality selections on Add show page and Import existing show page.
2018-02-03 22:41:52 +00:00

132 lines
3.8 KiB
JavaScript

function setFromPresets (preset){
var elCustomQuality = $('.show-if-quality-custom');
if(preset = parseInt(preset)){
var upgradePreset = !0, quality, stateReqd, btn$;
elCustomQuality.fadeOut('fast', 'linear');
$('#wanted-qualities, #upgrade-qualities').find('option').each(function(){
if(upgradePreset && /upgrade/.test($(this).parent().attr('id'))){
upgradePreset = !1;
switch(preset){
case 3: preset = 128 + 32 + 4; break;
case 164: preset = 256 + 64 + 16 + 4; break;
case 336: preset = 256; break;
default: preset = 0;
}
}
quality = $(this).val(); // quality from select$
stateReqd = ((preset & parseInt(quality, 10)) ? !0 : !1);
if(stateReqd !== this.selected){
$(this).prop('selected', stateReqd);
btn$ = $(/upgrade/.test($(this).parent().attr('id')) ? '#upgrade-quality' : '#wanted-quality')
.find('a.btn[data-quality="' + quality + '"]');
if(!stateReqd){
btn$.removeClass('active');
} else {
btn$.removeClass('disabled').addClass('active');
}
}
});
} else
elCustomQuality.fadeIn('fast', 'linear');
refreshUpgrades();
presentTips();
}
function presentTips(){
var tip$ = $('#unknown-quality'), tip2$;
if($('#wanted-quality').find('a.btn[data-quality="32768"]').hasClass('active')){
tip$.fadeIn('fast', 'linear');
} else {
tip$.fadeOut('fast', 'linear');
}
tip$ = $('#no-upgrade'); tip2$ = $('#upgrade-cond, #upgrade-once-opt');
if($('#upgrade-quality').find('a.btn').hasClass('active')){
tip$.fadeOut('fast', 'linear', function(){tip2$.fadeIn('fast', 'linear');});
} else {
if(!!$('#upgrade-once:checked').length){
$('#upgrade-once').click();
}
tip2$.fadeOut('fast', 'linear', function(){tip$.fadeIn('fast', 'linear');});
}
}
function refreshUpgrades(){
var btn$, minQuality=99999999, quality, upgrade$;
$.map($('#wanted-quality').find('a.btn.active'), function(btn){
btn$ = $(btn);
quality = parseInt(btn$.data('quality'), 10);
minQuality = quality < minQuality ? quality : minQuality;
});
$.map($('#upgrade-quality').find('a.btn'), function(btn){
btn$ = $(btn);
quality = parseInt(btn$.data('quality'), 10);
upgrade$ = $('#upgrade-qualities');
if(quality <= minQuality){
if(btn$.hasClass('active') // then btn is about to changed state so reflect change to select option
|| 1 === upgrade$.find('option[value="' + quality + '"]:selected').length){
upgrade$.find('option[value="' + quality + '"]').prop('selected', !1);
}
btn$.removeClass('active').addClass('disabled');
} else if(btn$.hasClass('disabled')){
btn$.removeClass('disabled');
}
});
}
$(function(){
var elQualityPreset = $('#quality-preset'),
selected = ':selected';
elQualityPreset.change(function(){
setFromPresets($(this).find(selected).val());
});
setFromPresets(elQualityPreset.find(selected).val());
$('#wanted-qualities').change(function(){
presentTips();
});
$('#custom-quality').find('a[href="#"].btn').on('click', function(event){
event.stopPropagation();
var active$ = $('#wanted-quality').find('a.btn.active'), num_active = active$.length;
if(1 < num_active || (1 === num_active && $(this).data('quality') !== active$.data('quality'))){
$(this).toggleClass('active');
var isInit = 'wanted-quality' === $(this).closest('.component-desc').attr('id'),
select$ = $(isInit ? '#wanted-qualities' : '#upgrade-qualities'),
quality = $(this).data('quality'),
arrSelected = $.map(select$.val(), function (v){
return parseInt(v, 10)
}) || Array();
if($(this).hasClass('active')){
arrSelected.push(quality);
} else {
arrSelected = arrSelected.filter(function (elem){
return elem !== quality;
});
}
select$.val(arrSelected).change();
if(isInit){
refreshUpgrades();
}
presentTips();
}
return !1;
});
});