included todo statistics, updated log visualization
This commit is contained in:
parent
16fb43c5cc
commit
efe9e65f51
@ -60,7 +60,7 @@ function load_visualisation(){
|
||||
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.00001) : parseFloat(v)];}}));});
|
||||
$.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:100,top:40}, vAxis:{logScale: true}, interpolateNulls: false, width: "1200", height: "500"};
|
||||
new google.visualization.LineChart(document.getElementById('vis')).draw(data, options);
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
google.load("visualization", "1", {packages:["corechart"]});
|
||||
function init_saimod_sys_todo() {
|
||||
$('#tabs_todo a').click(function (e) {
|
||||
$('#tabs_todo li').each(function(){
|
||||
@ -44,6 +45,11 @@ function init_saimod_sys_todo_stats() {
|
||||
$('#tabs_todo li').each(function(){
|
||||
$(this).removeClass('active');});
|
||||
$('#menu_stats').parent().addClass('active');
|
||||
$('#vis_filter_time').change(function(){
|
||||
load_visualisation();})
|
||||
$('#vis_filter_type').change(function(){
|
||||
load_visualisation();})
|
||||
load_visualisation();
|
||||
}
|
||||
|
||||
function init_saimod_sys_todo_todoopen(){
|
||||
@ -269,5 +275,33 @@ function init_tinymce(){
|
||||
forced_root_block : "",
|
||||
force_br_newlines : true,
|
||||
force_p_newlines : false
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function load_visualisation(){
|
||||
$('img#loader').show();
|
||||
var name = $('#vis_filter_type').val();;
|
||||
var filter = $('#vis_filter_time').val();
|
||||
$.getJSON('./sai.php?sai_mod=.SYSTEM.SAI.saimod_sys_todo&action=stats&name='+name+'&filter='+filter,function(json){
|
||||
if(!json || json.status != true || !json.result){
|
||||
$('img#loader').hide();
|
||||
return;
|
||||
}
|
||||
json = json.result;
|
||||
$('img#loader').hide();
|
||||
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:100,top:40}, vAxis:{logScale: true}, interpolateNulls: false, width: "1200", height: "500"};
|
||||
new google.visualization.LineChart(document.getElementById('vis')).draw(data, options);
|
||||
});
|
||||
}
|
||||
|
||||
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
namespace SYSTEM\SQL;
|
||||
class SYS_SAIMOD_TODO_STATS_ASSIGNED extends \SYSTEM\DB\QP {
|
||||
public static function get_class(){return \get_class();}
|
||||
public static function mysql(){return
|
||||
'SELECT DATE_FORMAT(FROM_UNIXTIME(UNIX_TIMESTAMP('.\SYSTEM\SQL\system_todo::NAME_MYS.'.'.\SYSTEM\SQL\system_todo::FIELD_TIME.') - MOD(UNIX_TIMESTAMP('.\SYSTEM\SQL\system_todo::NAME_MYS.'.'.\SYSTEM\SQL\system_todo::FIELD_TIME.'),?)),"%Y/%m/%d %H:%i:%s") as day,'
|
||||
.'count(*) as count,'
|
||||
.'sum(case when '.\SYSTEM\SQL\system_todo_assign::NAME_MYS.'.'.\SYSTEM\SQL\system_todo_assign::FIELD_USER.' IS NOT NULL then 1 else 0 end) assigned,'
|
||||
.'sum(case when '.\SYSTEM\SQL\system_todo_assign::NAME_MYS.'.'.\SYSTEM\SQL\system_todo_assign::FIELD_USER.' IS NULL then 1 else 0 end) not_assigned'
|
||||
.' FROM '.\SYSTEM\SQL\system_todo::NAME_MYS
|
||||
.' LEFT JOIN '.\SYSTEM\SQL\system_todo_assign::NAME_MYS.' ON '.\SYSTEM\SQL\system_todo::FIELD_ID.' = '.\SYSTEM\SQL\system_todo_assign::FIELD_TODO
|
||||
.' GROUP BY day'
|
||||
.' ORDER BY day DESC'
|
||||
.' LIMIT 30;';
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
<?php
|
||||
namespace SYSTEM\SQL;
|
||||
class SYS_SAIMOD_TODO_STATS_CLOSED extends \SYSTEM\DB\QP {
|
||||
public static function get_class(){return \get_class();}
|
||||
public static function mysql(){return
|
||||
'SELECT DATE_FORMAT(FROM_UNIXTIME(UNIX_TIMESTAMP('.\SYSTEM\SQL\system_todo::FIELD_TIME.') - MOD(UNIX_TIMESTAMP('.\SYSTEM\SQL\system_todo::FIELD_TIME.'),?)),"%Y/%m/%d %H:%i:%s") as day,'
|
||||
.'count(*) as count,'
|
||||
.'sum(case when '.\SYSTEM\SQL\system_todo::FIELD_TIME_CLOSED.' IS NOT NULL then 1 else 0 end) closed,'
|
||||
.'sum(case when '.\SYSTEM\SQL\system_todo::FIELD_TIME_CLOSED.' IS NULL then 1 else 0 end) open'
|
||||
.' FROM '.\SYSTEM\SQL\system_todo::NAME_MYS
|
||||
.' GROUP BY day'
|
||||
.' ORDER BY day DESC'
|
||||
.' LIMIT 30;';
|
||||
}
|
||||
}
|
||||
@ -201,6 +201,14 @@ class saimod_sys_todo extends \SYSTEM\SAI\SaiModule {
|
||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_todo_action_edit($todo, $message){
|
||||
\SYSTEM\SQL\SYS_SAIMOD_TODO_EDIT::QI(array($message,$message,$todo));
|
||||
return \SYSTEM\LOG\JsonResult::ok();}
|
||||
|
||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_todo_action_stats_name_closed($filter){
|
||||
return \SYSTEM\LOG\JsonResult::toString(\SYSTEM\SQL\SYS_SAIMOD_TODO_STATS_CLOSED::QA(array($filter)));
|
||||
}
|
||||
|
||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_todo_action_stats_name_assigned($filter){
|
||||
return \SYSTEM\LOG\JsonResult::toString(\SYSTEM\SQL\SYS_SAIMOD_TODO_STATS_ASSIGNED::QA(array($filter)));
|
||||
}
|
||||
|
||||
public static function sai_mod__SYSTEM_SAI_saimod_sys_todo_action_todo($todo){
|
||||
$userid = \SYSTEM\SECURITY\Security::getUser()->id;
|
||||
|
||||
@ -22,4 +22,31 @@
|
||||
<th>${table_done}</th>
|
||||
</tr>
|
||||
${userstats}
|
||||
</table>
|
||||
</table>
|
||||
<div>
|
||||
<select id="vis_filter_time">
|
||||
<option value="2692000">30d</option>
|
||||
<option value="1209600">14d</option>
|
||||
<option value="604800">7d</option>
|
||||
<option value="172800">2d</option>
|
||||
<option value="86400" selected>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">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>
|
||||
<select id="vis_filter_type">
|
||||
<option value="closed">closed</option>
|
||||
<option value="assigned">assigned</option>
|
||||
</select>
|
||||
<div id="vis"></div>
|
||||
</div>
|
||||
@ -159,6 +159,8 @@ INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `nam
|
||||
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1025, 42, 3, 1000, 'dotolist', 'filter', 'STRING');
|
||||
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1026, 42, 3, 1000, 'dotolist', 'search', 'STRING');
|
||||
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1027, 42, 3, 1000, 'dotolist', 'page', 'UINT0');
|
||||
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1030, 42, 0, 1000, 'stats', 'name', null);
|
||||
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1031, 42, 3, 1030, null, 'filter', 'UINT');
|
||||
|
||||
|
||||
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (1100, 42, 0, 0, '_SYSTEM_SAI_saimod_sys_docu', 'action', NULL);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user