mirror of
https://github.com/SickGear/SickGear.git
synced 2024-12-23 11:13:38 +00:00
225 lines
6.3 KiB
JavaScript
225 lines
6.3 KiB
JavaScript
|
/** @namespace $.SickGear.Root */
|
||
|
|
||
|
$(function(){
|
||
|
|
||
|
$('#bulk-change-edit').click(function(){
|
||
|
var toDo = [];
|
||
|
|
||
|
$('.edit-check:checked').each(function(){
|
||
|
toDo.push($(this).closest('tr').attr('data-tvid_prodid'));
|
||
|
});
|
||
|
|
||
|
if (0 === toDo.length)
|
||
|
return !1;
|
||
|
|
||
|
window.location.href = $.SickGear.Root + '/manage/mass-edit?to_edit=' + toDo.join('|');
|
||
|
});
|
||
|
|
||
|
$('#bulk-change-submit').click(function(){
|
||
|
|
||
|
var toChange = !1, toDo = {update: [], refresh: [], rename: [], subtitle: [], delete: [], remove: []};
|
||
|
|
||
|
$.each(Object.keys(toDo), function(i, k){
|
||
|
$('.' + k + '-check:checked').each(function(){
|
||
|
toDo[k].push($(this).closest('tr').attr('data-tvid_prodid'));
|
||
|
toChange = !0;
|
||
|
});
|
||
|
});
|
||
|
|
||
|
if (!toChange)
|
||
|
return !1;
|
||
|
|
||
|
var confirmArr = [],
|
||
|
command = function(){
|
||
|
window.location.href = $.SickGear.Root + '/manage/bulk-change?'
|
||
|
+ 'to_update=' + toDo.update.join('|')
|
||
|
+ '&to_refresh=' + toDo.refresh.join('|')
|
||
|
+ '&to_rename=' + toDo.rename.join('|')
|
||
|
+ '&to_subtitle=' + toDo.subtitle.join('|')
|
||
|
+ '&to_delete=' + toDo.delete.join('|')
|
||
|
+ '&to_remove=' + toDo.remove.join('|');
|
||
|
return !0;
|
||
|
};
|
||
|
if(toDo.delete.length){
|
||
|
confirmArr.push('delete ' + toDo.delete.length);
|
||
|
}
|
||
|
if(toDo.remove.length){
|
||
|
confirmArr.push('remove ' + toDo.remove.length);
|
||
|
}
|
||
|
if(!confirmArr.length){
|
||
|
command();
|
||
|
} else {
|
||
|
$.confirm({
|
||
|
'title': 'Are you sure ?',
|
||
|
'message': confirmArr.join(' and ') + ' show(s)',
|
||
|
'buttons': {
|
||
|
'Yes': {
|
||
|
'class': 'green',
|
||
|
'action': command
|
||
|
},
|
||
|
'No': {
|
||
|
'class': 'red',
|
||
|
'action': function(){
|
||
|
} // No op. This action property can be omitted.
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
});
|
||
|
|
||
|
var updateButtons = function(){
|
||
|
var editBtn$ = $('#bulk-change-edit'), submitBtn$ = $('#bulk-change-submit'), numEdits = $('.edit-check:checked').length,
|
||
|
numToDo = $('.update-check:checked, .refresh-check:checked, .rename-check:checked, .delete-check:checked, .remove-check:checked').length;
|
||
|
if(!!numEdits){
|
||
|
editBtn$.attr('disabled', !1);
|
||
|
editBtn$.val('Edit ' + numEdits + ' selected');
|
||
|
} else {
|
||
|
editBtn$.attr('disabled', !0);
|
||
|
editBtn$.val('Select items');
|
||
|
}
|
||
|
if(!!numToDo){
|
||
|
submitBtn$.attr('disabled', !1);
|
||
|
submitBtn$.val('Submit ' + numToDo + ' action(s)');
|
||
|
} else {
|
||
|
submitBtn$.attr('disabled', !0);
|
||
|
submitBtn$.val('Select actions');
|
||
|
}
|
||
|
}
|
||
|
updateButtons();
|
||
|
|
||
|
$('.bulk-check').click(function(){
|
||
|
|
||
|
$('.' + $(this).attr('id')).each(function(){
|
||
|
if (!this.disabled)
|
||
|
this.checked = !this.checked
|
||
|
});
|
||
|
updateButtons();
|
||
|
});
|
||
|
|
||
|
['.edit-check', '.update-check', '.refresh-check', '.rename-check', '.delete-check', '.remove-check'].forEach(function(name){
|
||
|
var lastCheck = null;
|
||
|
|
||
|
$(name).click(function(event){
|
||
|
|
||
|
if(!lastCheck || !event.shiftKey){
|
||
|
|
||
|
lastCheck = this;
|
||
|
|
||
|
} else {
|
||
|
var check = this, found = 0;
|
||
|
|
||
|
$(name).each(function(){
|
||
|
switch (found){
|
||
|
case 2:
|
||
|
return !1;
|
||
|
case 1:
|
||
|
if (!this.disabled)
|
||
|
this.checked = lastCheck.checked;
|
||
|
}
|
||
|
|
||
|
if (this === check || this === lastCheck)
|
||
|
found++;
|
||
|
});
|
||
|
}
|
||
|
updateButtons();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
$('#edit-check, .edit-check').each(function(i, el$){
|
||
|
$(el$).parent().attr('title', 'multiselect = ctrl/shift + left click');
|
||
|
})
|
||
|
|
||
|
$.SickGear.onRefreshSize = !1;
|
||
|
function presortTable(table$){
|
||
|
var asc = $('.sort-size.tablesorter-headerAsc').length,
|
||
|
desc = $('.sort-size.tablesorter-headerDesc').length,
|
||
|
value;
|
||
|
|
||
|
if (!!(asc + desc) || !!$.SickGear.onRefreshSize){
|
||
|
$('[data-size]').each(function(i, el){
|
||
|
value = parseInt($(el).attr('data-size'), 10);
|
||
|
$(el).attr('data-size', (!!desc !== !!$.SickGear.onRefreshSize) /* xor */
|
||
|
? ((value < 0) ? (-1 * value) + $.SickGear.high : value)
|
||
|
: ((value > $.SickGear.high) ? -1 * (value - $.SickGear.high) : value))
|
||
|
});
|
||
|
table$.trigger('updateCache');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$('#bulk-change-table')
|
||
|
.bind('refreshComplete', function(){
|
||
|
$.SickGear.onRefreshSize = !0;
|
||
|
})
|
||
|
.bind('sortEnd', function(){
|
||
|
$.SickGear.onRefreshSize = !1;
|
||
|
|
||
|
var el$ = $('.sort-size-type');
|
||
|
if (!!($('.sort-size.tablesorter-headerAsc').length + $('.sort-size.tablesorter-headerDesc').length)){
|
||
|
el$.removeClass('tablesorter-headerUnSorted').addClass('tablesorter-headerSorted');
|
||
|
} else {
|
||
|
el$.removeClass('tablesorter-headerSorted');
|
||
|
}
|
||
|
})
|
||
|
.bind('sortStart', function(e, t){
|
||
|
presortTable($(t));
|
||
|
})
|
||
|
.bind('filterInit filterEnd', function(e, data){
|
||
|
$('#tfoot').find('.stats').html(
|
||
|
(data.filteredRows === data.totalRows
|
||
|
? '<span class="total-rows">' + data.totalRows + '</span> shows'
|
||
|
: '<span class="filter-rows">' + data.filteredRows + '</span> of <span class="total-rows">' + data.totalRows + '</span> shows (' + (data.totalRows - data.filteredRows) + ' filtered)'));
|
||
|
});
|
||
|
|
||
|
$('.sort-size-type').on('click', function(){
|
||
|
$('.sort-size-type-body').hide();
|
||
|
$('.sort-size-type-image').show();
|
||
|
var that = $(this), title = 'total', htmlType = 'Σ', dataType = 'E', key = 'Size';
|
||
|
if(dataType === $(this).attr('data-type')){
|
||
|
title = 'average';
|
||
|
htmlType = '<div class="average"><i>x</i></div>';
|
||
|
dataType = 'x';
|
||
|
key = 'AverageSize';
|
||
|
} else if('x' === $(this).attr('data-type')){
|
||
|
title = 'largest';
|
||
|
htmlType = '>';
|
||
|
dataType = '>';
|
||
|
key = 'Largest';
|
||
|
} else if('>' === $(this).attr('data-type')){
|
||
|
title = 'smallest';
|
||
|
htmlType = '<';
|
||
|
dataType = '<';
|
||
|
key = 'Smallest';
|
||
|
}
|
||
|
|
||
|
var url = $.SickGear.Root + '/home/media_stats';
|
||
|
$.getJSON(url).then(function(content){
|
||
|
// on success...
|
||
|
var html, val, el$;
|
||
|
$.each(content, function(tvidProdid, data){
|
||
|
html = '---';
|
||
|
val = '-10';
|
||
|
el$ = $('tr[data-tvid_prodid="' + tvidProdid + '"][data-size]');
|
||
|
if (/undefined/.test(data.message) || 'E' === dataType){
|
||
|
html = data['h' + key];
|
||
|
val = data['b' + key];
|
||
|
}
|
||
|
el$.find('.ui-size').html(html);
|
||
|
el$.attr('data-size', val);
|
||
|
});
|
||
|
that.attr('title', title);
|
||
|
that.attr('data-type', dataType);
|
||
|
that.find('.sort-size-type-body').html(htmlType);
|
||
|
$('#bulk-change-table').trigger('updateAll', [!0]);
|
||
|
$('.sort-size-type-image').hide();
|
||
|
$('.sort-size-type-body').show();
|
||
|
}, function(xhr, status, error){
|
||
|
// on failure...
|
||
|
console.log('data fetch error', url, status + ': ' + error);
|
||
|
$('.sort-size-type-image').hide();
|
||
|
$('.sort-size-type-body').show();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
});
|