var opkg = '/cgi-bin/opkg.jim?cmd=';
$(document).ready(function() {
var busy = false;
var reload = false;
$('#opkgupdate')
.button()
.click(function() { reload = true; execopkg('update'); })
.fadeIn('slow');
$('#opkgupgradeall')
.button()
.click(function() { reload = true; execopkg('upgrade'); })
.fadeIn('slow');
$('#pkgtabs').tabs({
select: function() {
if (busy)
{
alert('Please wait until the current ' +
'operation completes.');
return false;
}
busy = true;
$('#pkgtabs')
.tabs('option', 'disabled', [0,1,2]);
},
load: function() {
busy = false;
setup_buttons();
$('#pkgtabs').tabs('option', 'disabled', []);
},
spinner: ' ' +
'Loading...'
});
var $dialog = $('#dialogue').dialog({
title: "Package Management Results",
modal: false, autoOpen: false,
height: 500, width: 700,
show: 'scale', hide: 'fade',
draggable: true, resizable: true,
buttons: { "Close":
function() {$(this).dialog('close');}},
close: function(e,u) {
if (reload)
{
$('#refreshing').show('slow');
$('#pkgtabs').hide('fast');
window.location.reload(true);
}
else
{
var pkg = $('#dialogue').attr('pkg');
$('tr[pkg="' + pkg + '"]')
.disable()
.find('button').removeClass('va');
$('button.va').enable();
}
}
});
jQuery.ajaxSetup({progressInterval: 1});
function loaddata(data, isfinal)
{
if (window.console)
{
console.log('loaddata called, final=' + isfinal);
console.log('Data: ' + data);
}
if (isfinal)
{
$('#dresults').text(data);
$('#dspinner').hide('slow');
$('#complete').show('slow');
}
else
$('#dresults').append(data);
}
function execopkg(arg, pkg)
{
if (busy)
{
alert('Please wait until the current ' +
'operation completes.');
return;
}
busy = true;
$('button.va').disable();
$('#dspinner').show();
$('#complete').hide();
$('#dresults').empty();
$('#dialogue').attr('pkg', pkg);
$dialog.dialog('open');
$.ajax({
type: "GET",
url: opkg + arg,
progress: loaddata,
success: function(data) {
loaddata(data, true);
},
error: function(_, _, e) {
if (window.console)
console.log("ajax error");
alert(e);
}
});
busy = false;
}
function setup_buttons()
{
$('button.remove, button.install, button.upgrade')
.button()
.click(function() {
if ($(this).attr('action') == 'remove' &&
!confirm('Please confirm removal of the ' +
$(this).attr('id') + ' package.'))
return;
execopkg(encodeURIComponent($(this).attr('action') +
' ' + $(this).attr('id')),
$(this).closest('tr').attr('pkg'));
}).fadeIn('slow');
$('a.depends').click(function(e) {
e.preventDefault();
var pkg = $(this).closest('tr').attr('pkg');
execopkg(encodeURIComponent('whatdepends ' + pkg),
false);
});
}
});