SickGear/gui/slick/js/qualityChooser.js

133 lines
3.8 KiB
JavaScript
Raw Permalink Normal View History

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;
});
});