From 0e77d76fe7bae16ca1aaaf31b34f94381d7af81e Mon Sep 17 00:00:00 2001
From: Jared Hancock <gravydish@gmail.com>
Date: Mon, 2 Jul 2012 17:58:46 -0500
Subject: [PATCH] Fix statistics query (again)

---
 include/ajax.reports.php | 28 +++++++++++++++++++---------
 scp/js/dashboard.inc.js  |  2 ++
 2 files changed, 21 insertions(+), 9 deletions(-)

diff --git a/include/ajax.reports.php b/include/ajax.reports.php
index 1dd3247f9..9d002eb52 100644
--- a/include/ajax.reports.php
+++ b/include/ajax.reports.php
@@ -72,22 +72,32 @@ class OverviewReportAjaxAPI extends AjaxController {
         # XXX: Die if $group not in $groups
 
         $queries=array(
-            array(7, 'SELECT '.$info['fields'].',
+            array(5, 'SELECT '.$info['fields'].',
                 COUNT(*)-COUNT(NULLIF(A1.state, "created")) AS Opened,
                 COUNT(*)-COUNT(NULLIF(A1.state, "assigned")) AS Assigned,
                 COUNT(*)-COUNT(NULLIF(A1.state, "overdue")) AS Overdue,
                 COUNT(*)-COUNT(NULLIF(A1.state, "closed")) AS Closed,
-                COUNT(*)-COUNT(NULLIF(A1.state, "reopened")) AS Reopened,
-                FORMAT(AVG(DATEDIFF(T2.closed, T2.created)),1) AS ServiceTime,
-                FORMAT(AVG(DATEDIFF(B2.created, B1.created)),1) AS ResponseTime
+                COUNT(*)-COUNT(NULLIF(A1.state, "reopened")) AS Reopened
             FROM '.$info['table'].' T1 LEFT JOIN '.TICKET_TABLE.' T2 USING ('.$info['pk'].')
                 LEFT JOIN '.TICKET_EVENT_TABLE.' A1 USING (ticket_id)
-                LEFT JOIN '.TICKET_THREAD_TABLE.' B1 ON (B1.ticket_id = T2.ticket_id
-                    AND B1.thread_type="M")
-                LEFT JOIN '.TICKET_THREAD_TABLE.' B2 ON (B2.pid = B1.id)
             WHERE A1.timestamp BETWEEN '.$start.' AND '.$stop.'
-                OR B1.created BETWEEN '.$start.' AND '.$stop.'
-                OR T1.created BETWEEN '.$start.' AND '.$stop.'
+            GROUP BY '.$info['fields'].'
+            ORDER BY '.$info['fields']),
+
+            array(1, 'SELECT '.$info['fields'].',
+                FORMAT(AVG(DATEDIFF(T2.closed, T2.created)),1) AS ServiceTime
+            FROM '.$info['table'].' T1 LEFT JOIN '.TICKET_TABLE.' T2 USING ('.$info['pk'].')
+            WHERE T2.closed BETWEEN '.$start.' AND '.$stop.'
+            GROUP BY '.$info['fields'].'
+            ORDER BY '.$info['fields']),
+
+            array(1, 'SELECT '.$info['fields'].',
+                FORMAT(AVG(DATEDIFF(B2.created, B1.created)),1) AS ResponseTime
+            FROM '.$info['table'].' T1 LEFT JOIN '.TICKET_TABLE.' T2 USING ('.$info['pk'].')
+                LEFT JOIN '.TICKET_THREAD_TABLE.' B2 ON (B2.ticket_id = T2.ticket_id
+                    AND B2.thread_type="R")
+                LEFT JOIN '.TICKET_THREAD_TABLE.' B1 ON (B2.pid = B1.id)
+            WHERE B1.created BETWEEN '.$start.' AND '.$stop.'
             GROUP BY '.$info['fields'].'
             ORDER BY '.$info['fields'])
         );
diff --git a/scp/js/dashboard.inc.js b/scp/js/dashboard.inc.js
index 6411d302e..abd6254de 100644
--- a/scp/js/dashboard.inc.js
+++ b/scp/js/dashboard.inc.js
@@ -167,6 +167,8 @@
                             tr.append($('<th>').append(row[j]));
                         else {
                             val = parseFloat(row[j])||0;
+                            color = 'black';
+                            size = 0;
                             if (val && max[j] && json.data.length > 1) {
                                 scale = val / max[j];
                                 color = Raphael.hsb(
-- 
GitLab