mirror of
https://github.com/SickGear/SickGear.git
synced 2024-12-11 13:43:37 +00:00
297 lines
9.6 KiB
JavaScript
297 lines
9.6 KiB
JavaScript
|
/** @namespace $.SickGear.Root */
|
||
|
/** @namespace config.hasArt */
|
||
|
/** @namespace config.panelTitles */
|
||
|
$(document).ready(function() {
|
||
|
|
||
|
var panel$ = $('#livepanel'),
|
||
|
pTitle = config.panelTitles || [],
|
||
|
isEpisodeView = !!$('#episode-view').length,
|
||
|
liveStates$ = $(isEpisodeView ? '#episode-view' : '#display-show'),
|
||
|
jqTooltipUsed = /(?!undefined)/i.test(typeof($('body').tooltip)),
|
||
|
group = 'group', fave = 'fave', avoid = 'avoid', ratingVerbs = [group, fave, avoid].join(' ');
|
||
|
|
||
|
panel$.removeClass('off');
|
||
|
|
||
|
$('#viewart').on('click', function() {
|
||
|
var state = 0, on = '', result = !1;
|
||
|
|
||
|
if (isEpisodeView) {
|
||
|
if (isSet('open-gear')) {
|
||
|
state = 4; on = 'viewart';
|
||
|
} else if (!isSet('viewart')) {
|
||
|
state = 3; on = 'open-gear';
|
||
|
}
|
||
|
} else if (!isSet('back-art')) {
|
||
|
if (!isSet('poster-right')) {
|
||
|
state = 1; on = 'poster-right';
|
||
|
}
|
||
|
} else if (isSet('open-gear')) {
|
||
|
state = 4; on = 'viewart';
|
||
|
} else if (isSet('poster-off')) {
|
||
|
state = 3; on = 'open-gear';
|
||
|
} else if (isSet('poster-right')) {
|
||
|
state = 2; on = 'poster-off';
|
||
|
} else if (!isSet('viewart')) {
|
||
|
state = 1; on = 'poster-right';
|
||
|
}
|
||
|
liveStates$.removeClass('poster-right poster-off open-gear viewart').addClass(on);
|
||
|
refreshTitles($(this).attr('id'));
|
||
|
send('viewart=' + state);
|
||
|
|
||
|
var container = [];
|
||
|
$.each($('[id^=day]'), function() { container.push($('#' + $(this).attr('id'))) });
|
||
|
$.each(container, function() { $(this).isotope('layout') });
|
||
|
|
||
|
return result;
|
||
|
});
|
||
|
|
||
|
$('#back-art,#translucent').on('click', function() {
|
||
|
var result = !1,
|
||
|
highlight = panel$.hasClass('highlight-off') ||
|
||
|
panel$.hasClass('highlight2') && panel$.removeClass('highlight2').addClass('highlight1') ||
|
||
|
panel$.hasClass('highlight1') && panel$.removeClass('highlight1').addClass('highlight') ||
|
||
|
panel$.removeClass('highlight').addClass('highlight-off');
|
||
|
|
||
|
if (config.hasArt) {
|
||
|
var elid = $(this).attr('id');
|
||
|
|
||
|
liveStates$.toggleClass(elid);
|
||
|
refreshTitles(elid);
|
||
|
send(elid.replace('-', '') + '=' + String.prototype.toLowerCase.apply(+isSet(elid)));
|
||
|
}
|
||
|
return result;
|
||
|
});
|
||
|
|
||
|
$('#proview').on('click', function() {
|
||
|
var state = 0, on = 'reg', result = !1;
|
||
|
|
||
|
if (!isEpisodeView && isSet('viewart')) {
|
||
|
liveStates$.toggleClass('allart');
|
||
|
} else {
|
||
|
if (isSet('reg')) {
|
||
|
state = 1; on = 'pro';
|
||
|
} else if(isSet('back-art') && !isSet('allart')) {
|
||
|
if (isSet('ii')) {
|
||
|
state = 3; on = 'pro ii allart';
|
||
|
} else if (isSet('pro')) {
|
||
|
state = 2; on = 'pro ii';
|
||
|
}
|
||
|
}
|
||
|
liveStates$.removeClass('reg pro ii allart').addClass(on);
|
||
|
send('viewmode=' + state);
|
||
|
}
|
||
|
maybeBackground();
|
||
|
refreshTitles($(this).attr('id'));
|
||
|
return result;
|
||
|
});
|
||
|
|
||
|
/*
|
||
|
* back art related
|
||
|
*/
|
||
|
function maybeArrows() {
|
||
|
var backArts$ = $('#background-container'), result = !0;
|
||
|
|
||
|
if (isSet('allart')
|
||
|
|| (!isSet(fave) &&
|
||
|
(1 < backArts$.find('li.' + group).length ||
|
||
|
(1 != backArts$.find('li.' + group).length && 1 < backArts$.find('li').not('.' + group + ',.' + avoid).length)))
|
||
|
|| (isEpisodeView &&
|
||
|
1 < (backArts$.find('li.' + group).length + backArts$.find('li.' + fave).length +
|
||
|
backArts$.find('li').not('.' + group + ',.' + avoid).length))) {
|
||
|
liveStates$.removeClass('oneof');
|
||
|
} else {
|
||
|
liveStates$.addClass('oneof');
|
||
|
}
|
||
|
return result
|
||
|
}
|
||
|
|
||
|
function setArt(dir) {
|
||
|
var backArts$ = $('#background-container'), curArt$ = backArts$.find('li.background'),
|
||
|
faveArt$ = backArts$.find('li.' + fave), result = !0,
|
||
|
newArt$, init = !1, noArt = function(el) { return /undefined/i.test(typeof(el.css('background-image'))); },
|
||
|
viewable = !isSet('allart') && !!backArts$.find('li.' + group).length ? (isEpisodeView ? '': '.' + group) : '',
|
||
|
mayAvoid = !isSet('allart') ? '.' + avoid : '.showall',
|
||
|
artBefore$ = curArt$.prevAll(viewable).not(mayAvoid),
|
||
|
artAfter$ = curArt$.nextAll(viewable).not(mayAvoid);
|
||
|
|
||
|
switch (dir) {
|
||
|
case 'next':
|
||
|
if (noArt(newArt$ = artAfter$.first()) && noArt(newArt$ = artBefore$.last())
|
||
|
&& noArt(newArt$ = curArt$))
|
||
|
newArt$ = null;
|
||
|
break;
|
||
|
case 'prev':
|
||
|
if (noArt(newArt$ = artBefore$.first()) && noArt(newArt$ = artAfter$.last())
|
||
|
&& noArt(newArt$ = curArt$))
|
||
|
newArt$ = null;
|
||
|
break;
|
||
|
case 'init':
|
||
|
init = !0;
|
||
|
if (noArt(newArt$ = curArt$))
|
||
|
newArt$ = null;
|
||
|
break;
|
||
|
case fave:
|
||
|
newArt$ = faveArt$;
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
if (!init || (null == newArt$))
|
||
|
curArt$.addClass('background-rem').removeClass('background')
|
||
|
.fadeOut(800, 'linear', function() {$(this).removeClass('background-rem')});
|
||
|
|
||
|
if (null !== newArt$) {
|
||
|
newArt$.addClass('background').fadeIn(800, 'linear', function () {
|
||
|
$(this).removeClass('first-load')
|
||
|
});
|
||
|
|
||
|
liveStates$.removeClass(ratingVerbs).addClass(
|
||
|
newArt$.hasClass(group) && group || newArt$.hasClass(fave) && fave || newArt$.hasClass(avoid) && avoid || '');
|
||
|
}
|
||
|
|
||
|
maybeArrows();
|
||
|
refreshTitles();
|
||
|
return result;
|
||
|
}
|
||
|
setArt('init');
|
||
|
|
||
|
function maybeBackground() {
|
||
|
var backArts$ = $('#background-container'), result = !0;
|
||
|
|
||
|
if (isSet('allart')) {
|
||
|
if (!backArts$.find('li.background').length) {
|
||
|
backArts$.find('li').first().hide().addClass('background')
|
||
|
.fadeIn(400, 'linear', function() {$(this).removeClass('first-load')});
|
||
|
}
|
||
|
} else {
|
||
|
if (backArts$.find('li.' + fave).not('.background').length) {
|
||
|
setArt(fave);
|
||
|
} else if (!!backArts$.find('li.' + avoid).length
|
||
|
&& backArts$.find('li.' + avoid).length == backArts$.find('li').length) {
|
||
|
backArts$.find('li.' + avoid).fadeOut(800, 'linear', function () {
|
||
|
$(this).removeClass('background')
|
||
|
});
|
||
|
} else if (backArts$.find('li.background.' + avoid).length) {
|
||
|
setArt('next');
|
||
|
}
|
||
|
}
|
||
|
maybeArrows();
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
$('#art-next,#art-prev').on('click', function() {
|
||
|
return (!(setArt('art-prev' === $(this).attr('id') ? 'prev' : 'next')));
|
||
|
});
|
||
|
|
||
|
function key(e, kCode){
|
||
|
return e.hasOwnProperty('ctrlKey') && e.ctrlKey && e.hasOwnProperty('altKey') && e.altKey && (kCode == e.which)
|
||
|
}
|
||
|
$(document).on('keyup', function(e) {
|
||
|
var left = key(e, 37), up = key(e, 38), right = key(e, 39), down = key(e, 40),
|
||
|
s = key(e, 83), a = key(e, 65), f = key(e, 70), g = key(e, 71);
|
||
|
return (
|
||
|
(!isSet('oneof') && ((left && setArt('prev')) || (right && setArt('next'))))
|
||
|
|| (s && liveStates$.toggleClass('allart') && maybeBackground() && refreshTitles('proview'))
|
||
|
|| (g && setGroup()) || (up && setGroup() && (!isSet('allart') && $('#viewart').click() || !0))
|
||
|
|| (a && setAvoid()) || (down && setAvoid() && (!isSet('allart') && $('#translucent').click() || !0))
|
||
|
|| (f && setFave())
|
||
|
);
|
||
|
});
|
||
|
|
||
|
function rate(state, rating) {
|
||
|
var result = !0;
|
||
|
|
||
|
if (isSet('allart')) {
|
||
|
var rated = rating && isSet(rating);
|
||
|
liveStates$.removeClass(ratingVerbs);
|
||
|
if (rated) {
|
||
|
state = 0;
|
||
|
rating = '';
|
||
|
} else
|
||
|
liveStates$.addClass(rating);
|
||
|
|
||
|
var curArt$ = $('#background-container').find('li.background'),
|
||
|
art = /\?([^"]+)"/i.exec(curArt$.css('background-image'));
|
||
|
if (null != art) {
|
||
|
send('rate=' + state + '&' + art[1]);
|
||
|
curArt$.removeClass().addClass((!!rating.length ? rating + ' ' : '') + 'background');
|
||
|
}
|
||
|
maybeBackground();
|
||
|
refreshTitles('rate-art');
|
||
|
}
|
||
|
return result;
|
||
|
}
|
||
|
function setAvoid() {return rate(30, avoid);}
|
||
|
function setFave() {return rate(20, fave);}
|
||
|
function setGroup() {return rate(10, group);}
|
||
|
function setRnd() {return rate(0, '');}
|
||
|
$('#rate-art').on('click', function() {
|
||
|
return isSet('allart') &&
|
||
|
((isSet(fave) && setAvoid()) || (isSet(group) && setFave()) || (!isSet(avoid) && setGroup()) || setRnd()) || !0;
|
||
|
});
|
||
|
|
||
|
/*
|
||
|
* support functions
|
||
|
*/
|
||
|
function isSet(name) {return liveStates$.hasClass(name)}
|
||
|
|
||
|
function send(value) {
|
||
|
return $.get($.SickGear.Root + '/live_panel/?' + value + '&pg=' + (isEpisodeView ? 'ev' : 'ds'))}
|
||
|
|
||
|
if (jqTooltipUsed) {
|
||
|
panel$.find('a[title]').tooltip({placement: 'top', html: !0});
|
||
|
}
|
||
|
|
||
|
function refreshTitle(target$, title, refreshAll) {
|
||
|
return jqTooltipUsed
|
||
|
? target$.attr('data-original-title', title.replace(/<[\/]?em>/g, '')).tooltip('fixTitle') && refreshAll //|| target$.tooltip('show')
|
||
|
: target$.attr('title', title);
|
||
|
}
|
||
|
|
||
|
function refreshTitles(id) {
|
||
|
if (!$('#livepanel').length) return;
|
||
|
|
||
|
var refreshAll = /undefined/i.test(typeof(id)), elId = !refreshAll && id.replace('#', '') || id, result = !0;
|
||
|
if ('viewart' === elId || refreshAll) {
|
||
|
refreshTitle($('#viewart'),
|
||
|
isSet('poster-right') ? pTitle['viewart1']
|
||
|
: (isSet('back-art') ?
|
||
|
(isSet('viewart') ? pTitle['viewart4']
|
||
|
: (isSet('open-gear') ? pTitle['viewart3']
|
||
|
: (isSet('poster-off') ? pTitle['viewart2']
|
||
|
: (isEpisodeView ? pTitle['viewmode0'] : pTitle['viewart0']))))
|
||
|
: (isEpisodeView ? pTitle['viewmode0'] : pTitle['viewart0'])),
|
||
|
refreshAll);
|
||
|
}
|
||
|
if ('translucent' === elId || refreshAll) {
|
||
|
refreshTitle($('#translucent'), isSet('translucent') ? pTitle['translucent_on'] : pTitle['translucent_off'],
|
||
|
refreshAll);
|
||
|
}
|
||
|
if (config.hasArt && ('back-art' === elId || refreshAll)) {
|
||
|
refreshTitle($('#back-art'), isSet('back-art') ? pTitle['backart_on'] : pTitle['backart_off'],
|
||
|
refreshAll);
|
||
|
}
|
||
|
if ('rate-art' === elId || refreshAll) {
|
||
|
refreshTitle($('#rate-art'),
|
||
|
isSet(avoid) ? pTitle['rateart3']
|
||
|
: (isSet(fave) ? pTitle['rateart2']
|
||
|
: (isSet(group) ? pTitle['rateart1']
|
||
|
: pTitle['rateart0'])),
|
||
|
refreshAll);
|
||
|
}
|
||
|
if ('proview' === elId || refreshAll) {
|
||
|
refreshTitle($('#proview'),
|
||
|
isSet('back-art') ?
|
||
|
(isSet('allart') ? pTitle['viewmode3']
|
||
|
: (isSet('ii') ? pTitle['viewmode2']
|
||
|
: (isSet('pro') ? pTitle['viewmode1']
|
||
|
: pTitle['viewmode0'])))
|
||
|
: (isSet('pro') ? pTitle['viewmode1']
|
||
|
: pTitle['viewmode0']),
|
||
|
refreshAll);
|
||
|
}
|
||
|
return result;
|
||
|
}
|
||
|
refreshTitles();
|
||
|
|
||
|
});
|