#121 show past of ts usage in saimod teamspeak

This commit is contained in:
Ulf Gebhardt 2016-05-28 21:31:09 +02:00
parent 42583fbb5b
commit 3d1d42fda8
8 changed files with 85 additions and 45 deletions

5
mojotrollz/path/PLOG.php Normal file
View File

@ -0,0 +1,5 @@
<?php
class PLOG extends \SYSTEM\PATH {
public function __construct($subpath = '') {
parent::__construct(new \SYSTEM\PROOT(), '../../log/mojotrollz/', $subpath);}
}

View File

@ -2,6 +2,6 @@
require_once dirname(__FILE__).'/saimod_mojotrollz_servers/autoload.inc';
require_once dirname(__FILE__).'/saimod_mojotrollz_server_handling/autoload.inc';
require_once dirname(__FILE__).'/saimod_mojotrollz_teamspeak/autoload.inc';
require_once dirname(__FILE__).'/saimod_mojotrollz_beta/autoload.inc';
//require_once dirname(__FILE__).'/saimod_mojotrollz_beta/autoload.inc';
require_once dirname(__FILE__).'/saimod_mojotrollz_downloads/autoload.inc';
require_once dirname(__FILE__).'/saimod_mojotrollz_npc_vendor_template/autoload.inc';

View File

@ -1,28 +1,33 @@
function init_saimod_mojotrollz_teamspeak(){
load_visualisation_mojotrollz_teamspeak('vis_ts', 'stats_ts', '#filter_vis_ts', 'Players on Teamspeak', 900,400);
load_visualisation_mojotrollz_teamspeak('vis_ts', 'stats', '#filter_vis_ts', 'Players on Teamspeak', 700,400);
$('#filter_vis_ts').on('change',function(){
load_visualisation_mojotrollz_teamspeak('vis_ts', 'stats_ts', '#filter_vis_ts', 'Players on Teamspeak', 900,400);
load_visualisation_mojotrollz_teamspeak('vis_ts', 'stats', '#filter_vis_ts', 'Players on Teamspeak', 700,400);
})
}
function load_visualisation_mojotrollz_teamspeak(div, stats, filter, name, width, height){
$.getJSON('./sai.php?sai_mod=.SAI.saimod_mojotrollz_teamspeak&action='+stats+'&filter='+$(filter).val(),function(json){
function load_visualisation_mojotrollz_teamspeak(div, action, filter, name, width, height){
var db = $(filter).attr('db') == null ? '' : '&db='+$(filter).attr('db');
$.getJSON('./sai.php?sai_mod=.SAI.saimod_mojotrollz_teamspeak&action='+action+'&filter='+$(filter).val()+db,function(json){
if(!json || json.status != true || !json.result){
return;}
json = json.result;
var data = new google.visualization.DataTable();
first = true;
$.each(json[0], function(key, value){
if(first){
data.addColumn('datetime',key);
first = false;
} else {
data.addColumn('number',key);
}
});
$.each(json, function(key, value){first = true; data.addRow($.map(value, function(v) { if(first){first=false;return [new Date(v)];}else{return [(v == null || parseFloat(v) <= 0) ? parseFloat(0) : parseFloat(v)];}}));});
var options = {title: name, aggregationTarget: 'category', selectionMode: 'multiple', curveType: 'function', /*focusTarget: 'category',*/ chartArea:{left:40,top:40}, vAxis:{logScale: false}, interpolateNulls: false, width: width, height: height};
new google.visualization.LineChart(document.getElementById(div)).draw(data, options);
if(json.length > 0){
var data = new google.visualization.DataTable();
first = true;
$.each(json[0], function(key, value){
if(first){
data.addColumn('datetime',key);
first = false;
} else {
data.addColumn('number',key);
}
});
$.each(json, function(key, value){first = true; data.addRow($.map(value, function(v) { if(first){first=false;return [new Date(v)];}else{return [(v == null || parseFloat(v) <= 0) ? parseFloat(0) : parseFloat(v)];}}));});
var options = {title: name, aggregationTarget: 'category', selectionMode: 'multiple', curveType: 'function', /*focusTarget: 'category',*/ chartArea:{left:40,top:40}, vAxis:{logScale: false}, interpolateNulls: false, width: width, height: height};
new google.visualization.LineChart(document.getElementById(div)).draw(data, options);
} else {
$('#'+div).html('No Data!');
}
});
}

View File

@ -1,8 +1,16 @@
<?php
namespace SAI;
class saimod_mojotrollz_teamspeak extends \SYSTEM\SAI\SaiModule {
public static function sai_mod__SAI_saimod_mojotrollz_teamspeak(){
public static function sai_mod__SAI_saimod_mojotrollz_teamspeak($db = null){
$vars = array();
$vars['db'] = $db;
$vars['db_nav'] = '';
if(file_exists((new \PLOG())->SERVERPATH())){
$scanned_directory = array_diff(scandir((new \PLOG())->SERVERPATH()), array('..', '.'));
foreach($scanned_directory as $file){
$vars['db_nav'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mojotrollz_teamspeak/tpl/db_menu.tpl'))->SERVERPATH(),
array('db' => str_replace('.','_',$file), 'active' => str_replace('.','_',$file) == $db ? 'active' : '' ));}
}
return \SYSTEM\PAGE\replace::replaceFile(dirname(__FILE__).'/tpl/main.tpl', $vars);}
public static function html_li_menu(){return '<li class=""><a data-toggle="tooltip" data-placement="left" title="Mojotrollz Teamspeak" href="#!mojotrollz_teamspeak"><span class="glyphicon glyphicon-headphones" aria-hidden="true"></span>&nbsp;&nbsp;Teamspeak</a></li>';}
public static function right_public(){return false;}
@ -10,6 +18,23 @@ class saimod_mojotrollz_teamspeak extends \SYSTEM\SAI\SaiModule {
public static function js(){return array(new \PSAI('saimod_mojotrollz_teamspeak/js/saimod_mojotrollz_teamspeak.js'));}
//public static function css(){}
public static function sai_mod__SAI_saimod_mojotrollz_teamspeak_action_stats_ts($filter = 600){
return \SYSTEM\LOG\JsonResult::toString(\SQL\STATS_TS::QA(array($filter)));}
public static function sai_mod__SAI_saimod_mojotrollz_teamspeak_action_stats($filter = 600,$db = null){
if(!$db){
return \SYSTEM\LOG\JsonResult::toString(\SQL\STATS_TS::QA(array($filter)));}
$result = array();
$con = new \SYSTEM\DB\Connection(new \SYSTEM\DB\DBInfoSQLite((new \PLOG(str_replace('_','.',$db)))->SERVERPATH()));
$res = $con->prepare('stats_ts',
'SELECT datetime(strftime("%s",'.\SYSTEM\SQL\system_log::FIELD_TIME.') - strftime("%s",'.\SYSTEM\SQL\system_log::FIELD_TIME.')%:filter,"unixepoch", "localtime") as day,'
.'avg('.\SYSTEM\SQL\system_log::FIELD_CODE.') online'
.' FROM '.\SYSTEM\SQL\system_log::NAME_MYS
.' WHERE '.\SYSTEM\SQL\system_log::NAME_MYS.'.'.\SYSTEM\SQL\system_log::FIELD_CLASS.' LIKE "%PLAYER_COUNT_TS"'
.' GROUP BY day'
.' ORDER BY day DESC'
.' LIMIT 30;',
array(':filter' => $filter));
while($row = $res->next()){
$result[] = $row;}
return \SYSTEM\LOG\JsonResult::toString($result);
}
}

View File

@ -1,2 +1,4 @@
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (5500, 42, 0, 0, '_SAI_saimod_mojotrollz_teamspeak', 'action', NULL);
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (5501, 42, 3, 5500, NULL, 'filter', 'INT');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (5501, 42, 3, 5500, 'stats', 'filter', 'INT');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (5502, 42, 3, 5500, 'stats', 'db', 'STRING');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (5503, 42, 3, 0, '_SAI_saimod_mojotrollz_teamspeak', 'db', 'STRING');

View File

@ -1 +1 @@
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (550, 42, 'mojotrollz_teamspeak', 'mojotrollz_teamspeak', -1, 0, 0, '#content', './sai.php?sai_mod=.SAI.saimod_mojotrollz_teamspeak', 'init_saimod_mojotrollz_teamspeak', '\\SAI\\saimod_mojotrollz_teamspeak');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (550, 42, 'mojotrollz_teamspeak', 'mojotrollz_teamspeak', -1, 0, 0, '#content', './sai.php?sai_mod=.SAI.saimod_mojotrollz_teamspeak&db=${db}', 'init_saimod_mojotrollz_teamspeak', '\\SAI\\saimod_mojotrollz_teamspeak');

View File

@ -0,0 +1 @@
<li class="${active}"><a href="#!mojotrollz_teamspeak;db.${db}">${db}</a></li>

View File

@ -1,26 +1,28 @@
<div class="panel panel-default">
<div class="panel-heading"><h4>Mojotrollz Teamspeak</h4></div>
<div class="panel-body">
<div id="vis_ts"></div>
<select id="filter_vis_ts">
<option value="2692000">30d</option>
<option value="1209600">14d</option>
<option value="604800">7d</option>
<option value="172800">2d</option>
<option value="86400">1d</option>
<option value="43200">12h</option>
<option value="21600">6h</option>
<option value="14400">4h</option>
<option value="7200">2h</option>
<option value="3600">1h</option>
<option value="1800">30m</option>
<option value="600" selected>10m</option>
<option value="300">5m</option>
<option value="60">1m</option>
<option value="30">30s</option>
<option value="10">10s</option>
<option value="5">5s</option>
<option value="1">1s</option>
</select>
<div class="tab-pane active" id="tab_ts_nav">
<div class="tabbable tabs-left subtabs">
<ul class="nav nav-stacked nav-pills col-md-3">
<li class="active"><a href="#!mojotrollz_teamspeak">Current Month</a></li>
${db_nav}
</ul>
<div class="tab-content col-md-9">
<div class="tab-pane active" id="tab_stats">
<div id="vis_ts"></div>
<select id="filter_vis_ts" db="${db}">
<option value="86400">1d</option>
<option value="43200">12h</option>
<option value="21600">6h</option>
<option value="14400">4h</option>
<option value="7200">2h</option>
<option value="3600">1h</option>
<option value="1800">30m</option>
<option value="600" selected>10m</option>
</select>
</div>
</div>
</div>
</div>
</div>
</div>