String.prototype.trunc = String.prototype.trunc ||
function(n){
return (this.length > n) ? this.substr(0,n-1)+'…' : this;
};
jQuery(function() {
jQuery.fn.extend({
serverStatus: function(str, d, set, ref) {
new jQuery.serverStatus(this, str, d, set, ref);
}
});
jQuery.serverStatus = function(container, str, d, set, ref) {
$serverStatus = this;
//Structure
var structure = jQuery.extend([], str); //Structure
//Data
var data = jQuery.extend([], d); //Data
//Settings
var settings = jQuery.extend({
type : "status" //Can also be: counter (counts total players online)
}, set); //Settings
//Refresh time
var refresh = ref; //Refresh time
$container = container;
$structure = structure;
$data = data;
$settings = settings;
$refresh = refresh;
//Initialize server-status plugin
$serverStatus._init = function() {
$container.html('');
//Add header bar
var content = '
\
\
';
$container.append(content);
//Add data
for (var i=0; i<$data.length; i++) {
if (!$data[i].hidden) {
var row = '';
for (var y=0; y<$structure.length; y++) {
if ($structure[y].type == "status") {row += '
';}
else if ($structure[y].type == "counter") {row += '
0/0
';}
else if ($structure[y].type == "map") {row += '
-
';}
else {row += '
'+$data[i][$structure[y].id]+'
';}
}
$container.find('.server-status-servers').append(row);
}
}
} //Initialize
//Update row
$serverStatus._updateRow = function(response) {
$this = jQuery('#' + response["container"] + ' .server-status-servers .server-status-row[data-id="'+response["id"]+'"]');
if (response["status"] == "offline") {
$this.find('div[data-type="status"] i').removeClass('online').addClass('offline');
$this.find('div[data-type="counter"]').html('0/0');
$this.find('div[data-type="map"]').html('');
}
else {
$this.find('div[data-type="status"] i').removeClass('offline').addClass('online');
$this.find('div[data-type="counter"]').html(response["players"]);
$this.find('div[data-type="map"]').html(response["map"]);
/*totalPlayersOnline = totalPlayersOnline + parseInt(response["players"].split('\/')[0]);
jQuery('.server-status-total-num').html(totalPlayersOnline);*/
}
} //Update row
//Update server-status
$serverStatus._updateStatus = function() {
$container.find('.server-status-servers .server-status-row').each(function() {
$this = jQuery(this);
$id = $this.data('id');
$this.find('div[data-type="status"] i').removeClass('online').removeClass('offline');
$this.find('div[data-type="counter"]').html('
');
jQuery.getJSON('https://static.moow.info/server-status/query.php?type='+$data[$id].type+'&ip=' + $data[$id].ip + '&container=' + $container.attr('id') + '&id=' + $id, function(response) {$serverStatus._updateRow(response);});
});
} //Update status
//Init after creation
$serverStatus._init();
$serverStatus._updateStatus();
if ($refresh > 0) {setInterval(function(){ $serverStatus._updateStatus(); }, $refresh);}
};
});