// +----------------------------------------------------------------------+
import('Period');
+import('ttTimeHelper');
// Definitions for chart types.
define('CHART_PROJECTS', 1);
// Data for projects.
$sql = "select p.name as name, sum(time_to_sec(l.duration)) as time from tt_log l
left join tt_projects p on (p.id = l.project_id)
- where l.status = 1 and l.duration > 0 and l.user_id = $user_id $q_period group by l.project_id";
+ where l.status = 1 and l.user_id = $user_id $q_period group by l.project_id";
} elseif (CHART_TASKS == $chart_type) {
// Data for tasks.
$sql = "select t.name as name, sum(time_to_sec(l.duration)) as time from tt_log l
left join tt_tasks t on (t.id = l.task_id)
- where l.status = 1 and l.duration > 0 and l.user_id = $user_id $q_period group by l.task_id";
+ where l.status = 1 and l.user_id = $user_id $q_period group by l.task_id";
} elseif (CHART_CLIENTS == $chart_type) {
// Data for clients.
- $sql = "select coalesce(c.name, 'NULL') as name, sum(time_to_sec(l.duration)) as time from tt_log l
+ $sql = "select c.name as name, sum(time_to_sec(l.duration)) as time from tt_log l
left join tt_clients c on (c.id = l.client_id)
- where l.status = 1 and l.duration > 0 and l.user_id = $user_id $q_period group by l.client_id";
+ where l.status = 1 and l.user_id = $user_id $q_period group by l.client_id";
}
$res = $mdb2->query($sql);
if (!is_a($res, 'PEAR_Error')) {
while ($val = $res->fetchRow()) {
- $result[] = array('name'=>$val['name'],'time'=>$val['time']); // name - project name, time - total for project in seconds.
+ if ($val['time'] >= 0) // Only positive totals make sense in pie charts. Skip negatives entirely.
+ $result[] = array('name'=>$val['name'],'time'=>$val['time']); // name - project name, time - total for project in seconds.
}
}
// Add a string representation of time + percentage to names. Example: "Time Tracker (1:15 - 6%)".
foreach ($result as &$one_val) {
$percent = round(100*$one_val['time']/$total).'%';
- $one_val['name'] .= ' ('.sec_to_time_fmt_hm($one_val['time']).' - '.$percent.')';
+ $one_val['name'] .= ' ('.ttTimeHelper::minutesToDuration($one_val['time'] / 60).' - '.$percent.')';
}
// Note: the remaining code here is needed to display labels on the side of the diagram.
$tracking_mode = $user->getTrackingMode();
$client_option = $user->isPluginEnabled('cl');
- // We have 3 possible options for chart tyep: projects, tasks, or clients.
+ // We have 3 possible options for chart type: projects, tasks, or clients.
// Deal with each one individually.
if ($requested_type == CHART_PROJECTS) {