From 8a7d2cdb4c8e1727474709706f4d9314cb82097a Mon Sep 17 00:00:00 2001 From: Udo Walter Date: Tue, 22 Nov 2016 12:17:04 +0100 Subject: [statistics_reporting] new empty module --- modules-available/statistics_reporting/lang/de/template-tags.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 modules-available/statistics_reporting/lang/de/template-tags.json (limited to 'modules-available/statistics_reporting/lang/de/template-tags.json') diff --git a/modules-available/statistics_reporting/lang/de/template-tags.json b/modules-available/statistics_reporting/lang/de/template-tags.json new file mode 100644 index 00000000..ce98ce38 --- /dev/null +++ b/modules-available/statistics_reporting/lang/de/template-tags.json @@ -0,0 +1,3 @@ +{ + "lang_hello": "Hallo" +} \ No newline at end of file -- cgit v1.2.3-55-g7522 From e10ad1d38de5fa13781c3af17a4de8fe85644a0e Mon Sep 17 00:00:00 2001 From: Christian Hofmaier Date: Mon, 28 Nov 2016 15:41:15 +0100 Subject: login count and offline time database queries --- .../statistics_reporting/lang/de/module.json | 4 +- .../lang/de/template-tags.json | 12 +- .../statistics_reporting/lang/en/module.json | 4 +- .../lang/en/template-tags.json | 12 +- .../statistics_reporting/page.inc.php | 103 ++++++++++++++- .../statistics_reporting/templates/_page.html | 142 ++++++++++++++++++++- 6 files changed, 262 insertions(+), 15 deletions(-) (limited to 'modules-available/statistics_reporting/lang/de/template-tags.json') diff --git a/modules-available/statistics_reporting/lang/de/module.json b/modules-available/statistics_reporting/lang/de/module.json index 166909c3..bdbfe4fd 100644 --- a/modules-available/statistics_reporting/lang/de/module.json +++ b/modules-available/statistics_reporting/lang/de/module.json @@ -1,4 +1,4 @@ { - "module_name": "Mein erstes Modul", - "page_title": "Mein erster Seitentitel" + "module_name": "Statistik Auswertung", + "page_title": "Statistik Auswertung" } \ No newline at end of file diff --git a/modules-available/statistics_reporting/lang/de/template-tags.json b/modules-available/statistics_reporting/lang/de/template-tags.json index ce98ce38..d9b034b4 100644 --- a/modules-available/statistics_reporting/lang/de/template-tags.json +++ b/modules-available/statistics_reporting/lang/de/template-tags.json @@ -1,3 +1,13 @@ { - "lang_hello": "Hallo" + "lang_user": "Nutzer", + "lang_countLogins": "Anzahl Logins", + "lang_client": "Client", + "lang_vm": "VM", + "lang_totalLogins": "Gesamt Logins", + "lang_overallOfftime": "Gesamtzeit Offline", + "lang_totalOffTime": "Gesamtzeit Offline", + "lang_clientLogout": "Letzter Logout", + "lang_clientStart": "Letzter Client Start", + "lang_room": "Raum", + "lang_offTime": "Zeit seit Logout" } \ No newline at end of file diff --git a/modules-available/statistics_reporting/lang/en/module.json b/modules-available/statistics_reporting/lang/en/module.json index b2bcbb0c..6b3f98f6 100644 --- a/modules-available/statistics_reporting/lang/en/module.json +++ b/modules-available/statistics_reporting/lang/en/module.json @@ -1,4 +1,4 @@ { - "module_name": "My first module", - "page_title": "My first page title" + "module_name": "Statistics Reporting", + "page_title": "Statistics Reporting" } \ No newline at end of file diff --git a/modules-available/statistics_reporting/lang/en/template-tags.json b/modules-available/statistics_reporting/lang/en/template-tags.json index c30739e5..2f33eaf5 100644 --- a/modules-available/statistics_reporting/lang/en/template-tags.json +++ b/modules-available/statistics_reporting/lang/en/template-tags.json @@ -1,3 +1,13 @@ { - "lang_hello": "Hello" + "lang_user": "User", + "lang_countLogins": "Number of Logins", + "lang_client": "Client", + "lang_vm": "VM", + "lang_totalLogins": "Total Logins", + "lang_overallOfftime": "Overall time offline", + "lang_totalOffTime": "Time offline", + "lang_clientLogout": "Last Logout", + "lang_clientStart": "Last Client Start", + "lang_room": "Room", + "lang_offTime": "Time since offline" } \ No newline at end of file diff --git a/modules-available/statistics_reporting/page.inc.php b/modules-available/statistics_reporting/page.inc.php index ff73107a..3bd83034 100644 --- a/modules-available/statistics_reporting/page.inc.php +++ b/modules-available/statistics_reporting/page.inc.php @@ -1,6 +1,6 @@ 'bar', - 'now' => date('d.m.Y H:i:s') - )); + //counting the total number of logins + $res = Database::simpleQuery("SELECT COUNT(*) AS 'count' FROM statistic WHERE typeid='.vmchooser-session-name'"); + $row = $res->fetch(PDO::FETCH_ASSOC); + $datax = array('totalLogins' => $row['count']); + + //counting logins per vm/event + $res = Database::simpleQuery("SELECT data, COUNT(*) AS 'count' FROM statistic WHERE typeid='.vmchooser-session-name' GROUP BY data ORDER BY 2 DESC"); + $datax[] = array('vmLogins' => array()); + while ($row = $res->fetch(PDO::FETCH_ASSOC)) { + $datax['vmLogins'][] = array('vmname' => $row['data'], 'numLogins' => $row['count']); + } + + //counting the logins per user + $res = Database::simpleQuery("SELECT username, COUNT(*) AS 'count' FROM statistic WHERE typeid='.vmchooser-session-name' GROUP BY username ORDER BY 2 DESC"); + $datax[] = array('userLogins' => array()); + while ($row = $res->fetch(PDO::FETCH_ASSOC)) { + $datax['userLogins'][] = array('username' => $row['username'], 'numLogins' => $row['count']); + } + + // TODO: got empty machine with alot of logins. isn't shown in the inner-join hostname query below. + // $res = Database::simpleQuery("SELECT machineuuid as 'hostname', COUNT(*) AS 'count' FROM statistic WHERE typeid='~session-length' GROUP BY machineuuid ORDER BY 2 DESC"); + + // TODO: session-length liefert 3000 Einträge mehr als vmchooser-session? + //counting the logins per client + $res = Database::simpleQuery("SELECT machine.hostname AS 'hostname', COUNT(*) AS 'count' FROM statistic + INNER JOIN machine ON statistic.machineuuid=machine.machineuuid + WHERE typeid='~session-length' GROUP BY machine.hostname ORDER BY 2 DESC"); + $datax[] = array('machineLogins' => array()); + while ($row = $res->fetch(PDO::FETCH_ASSOC)) { + $datax['machineLogins'][] = array('client' => $row['hostname'], 'numLogins' => $row['count']); + } + + + + //total time offline overall + $res = Database::simpleQUery("SELECT sum(cast(data AS UNSIGNED)) AS totalOfftime FROM statistic WHERE typeid='~offline-length'"); + $row = $res->fetch(PDO::FETCH_ASSOC); + $datay= array('totalOfftime' => $row['totalOfftime']); + + //total offline time per client + $res = Database::simpleQuery("SELECT machine.hostname AS 'hostname', statistic.data as time FROM statistic + INNER JOIN machine ON statistic.machineuuid=machine.machineuuid + WHERE typeid='~offline-length' GROUP BY machine.hostname ORDER BY cast(time AS UNSIGNED) DESC"); + $datay[] = array('totalOfflineTimeClient' => array()); + while ($row = $res->fetch(PDO::FETCH_ASSOC)) { + $datay['totalOfflineTimeClient'][] = array('client' => $row['hostname'], 'offTime' => $row['time']); + } + + // last logout of client + $res = Database::simpleQuery("SELECT machine.hostname AS 'hostname', max(statistic.dateline) as datetime, statistic.data as loginTime + FROM statistic INNER JOIN machine ON statistic.machineuuid=machine.machineuuid + WHERE typeid='~session-length' GROUP BY machine.hostname ORDER BY datetime DESC"); + $datay[] = array('lastLogout' => array()); + while ($row = $res->fetch(PDO::FETCH_ASSOC)) { + $datay['lastLogout'][] = array('client' => $row['hostname'], 'lastlogout' => date(DATE_RSS,$row['datetime']+$row['loginTime']), 'howLongOff' => (time() - ($row['datetime']+$row['loginTime']))); + } + + // last start of client + $res = Database::simpleQuery("SELECT machine.hostname AS 'hostname', max(statistic.dateline) as datetime FROM statistic + INNER JOIN machine ON statistic.machineuuid=machine.machineuuid + WHERE typeid='~offline-length' GROUP BY machine.hostname ORDER BY datetime DESC"); + $datay[] = array('lastLogin' => array()); + while ($row = $res->fetch(PDO::FETCH_ASSOC)) { + $datay['lastLogin'][] = array('client' => $row['hostname'], 'lastlogin' => date(DATE_RSS,$row['datetime'])); + } + + //total time offline per room + $res = Database::simpleQuery("SELECT location.locationname AS 'room', statistic.data as time FROM statistic + INNER JOIN machine ON statistic.machineuuid=machine.machineuuid + INNER JOIN location ON machine.locationid=location.locationid + WHERE typeid='~offline-length' GROUP BY room ORDER BY cast(time AS UNSIGNED) DESC"); + $datay[] = array('offTimeRoom' => array()); + while ($row = $res->fetch(PDO::FETCH_ASSOC)) { + $datay['offTimeRoom'][] = array('room' => $row['room'], 'offTime' => $this->formatSeconds($row['time'])); + } + + $data = array_merge($datax, $datay); + Render::addTemplate('_page', $data); } + + + function formatSeconds($seconds) { + $seconds = $seconds * 1; + + $minutes = floor($seconds / 60); + $hours = floor($minutes / 60); + $days = floor($hours / 24); + + $seconds = $seconds % 60; + $minutes = $minutes % 60; + $hours = $hours % 24; + + $format = '%u:%u:%02u:%02u'; + $time = sprintf($format, $days, $hours, $minutes, $seconds); + return rtrim($time, '0'); + } + + } diff --git a/modules-available/statistics_reporting/templates/_page.html b/modules-available/statistics_reporting/templates/_page.html index dfc941ae..101a124e 100644 --- a/modules-available/statistics_reporting/templates/_page.html +++ b/modules-available/statistics_reporting/templates/_page.html @@ -1,4 +1,138 @@ -
-

{{lang_hello}}, {{foo}}

- ** {{now}} ** -
\ No newline at end of file +
+ + + + + + + +
{{lang_totalLogins}}
{{totalLogins}}
+
+ +
+ + + + + + + +
{{lang_overallOfftime}}
{{totalOfftime}}
+
+ + + +
+
+ + + + + + {{#totalOfflineTimeClient}} + + + + + {{/totalOfflineTimeClient }} +
{{lang_client}}{{lang_totalOffTime}}
{{client}}{{offTime}}
+
+ +
+ + + + + + + {{#lastLogout}} + + + + + + {{/lastLogout}} +
{{lang_client}}{{lang_clientLogout}}{{lang_offTime}}
{{client}}{{lastlogout}}{{howLongOff}}
+
+ +
+ + + + + + {{#lastLogin}} + + + + + {{/lastLogin}} +
{{lang_client}}{{lang_clientStart}}
{{client}}{{lastlogin}}
+
+ +
+ + + + + + {{#offTimeRoom}} + + + + + {{/offTimeRoom}} +
{{lang_room}}{{lang_totalOffTime}}
{{room}}{{offTime}}
+
+
+ + + + +
+
+ + + + + + {{#vmLogins}} + + + + + {{/vmLogins}} +
{{lang_vm}}{{lang_countLogins}}
{{vmname}}{{numLogins}}
+
+ +
+ + + + + + {{#machineLogins}} + + + + + {{/machineLogins}} +
{{lang_client}}{{lang_countLogins}}
{{client}}{{numLogins}}
+
+ +
+ + + + + + {{#userLogins}} + + + + + {{/userLogins}} +
{{lang_user}}{{lang_countLogins}}
{{username}}{{numLogins}}
+
+
+ -- cgit v1.2.3-55-g7522 From b87930137acf88936fb541f53ab4dab1697e4d03 Mon Sep 17 00:00:00 2001 From: Udo Walter Date: Mon, 28 Nov 2016 18:27:32 +0100 Subject: new ui --- .../lang/de/template-tags.json | 11 +- .../lang/en/template-tags.json | 11 +- .../statistics_reporting/page.inc.php | 139 +++++------- modules-available/statistics_reporting/style.css | 3 + .../statistics_reporting/templates/_page.html | 247 ++++++++++----------- .../templates/columnChooser.html | 47 ++++ 6 files changed, 246 insertions(+), 212 deletions(-) create mode 100644 modules-available/statistics_reporting/style.css create mode 100644 modules-available/statistics_reporting/templates/columnChooser.html (limited to 'modules-available/statistics_reporting/lang/de/template-tags.json') diff --git a/modules-available/statistics_reporting/lang/de/template-tags.json b/modules-available/statistics_reporting/lang/de/template-tags.json index d9b034b4..2a9688b2 100644 --- a/modules-available/statistics_reporting/lang/de/template-tags.json +++ b/modules-available/statistics_reporting/lang/de/template-tags.json @@ -9,5 +9,14 @@ "lang_clientLogout": "Letzter Logout", "lang_clientStart": "Letzter Client Start", "lang_room": "Raum", - "lang_offTime": "Zeit seit Logout" + "lang_offTime": "Zeit seit Logout", + "lang_total": "Gesamt", + "lang_perlocation": "Pro Raum", + "lang_perclient": "Pro Client", + "lang_peruser": "Pro Benutzer", + "lang_pervm": "Pro VM", + "lang_hostname": "Client Name", + "lang_location": "Raum", + "lang_avgSessionLength": "Durchschnittliche Sitzungsdauer", + "lang_totalTime": "Gesamte Zeit" } \ No newline at end of file diff --git a/modules-available/statistics_reporting/lang/en/template-tags.json b/modules-available/statistics_reporting/lang/en/template-tags.json index 2f33eaf5..cfbf3ad8 100644 --- a/modules-available/statistics_reporting/lang/en/template-tags.json +++ b/modules-available/statistics_reporting/lang/en/template-tags.json @@ -9,5 +9,14 @@ "lang_clientLogout": "Last Logout", "lang_clientStart": "Last Client Start", "lang_room": "Room", - "lang_offTime": "Time since offline" + "lang_offTime": "Time since offline", + "lang_total": "Total", + "lang_perlocation": "Per Location", + "lang_perclient": "Per Client", + "lang_peruser": "Per User", + "lang_pervm": "Per VM", + "lang_hostname": "Client Name", + "lang_location": "Location", + "lang_avgSessionLength": "Average Session Length", + "lang_totalTime": "Total Time" } \ No newline at end of file diff --git a/modules-available/statistics_reporting/page.inc.php b/modules-available/statistics_reporting/page.inc.php index 3bd83034..6d3c2ae3 100644 --- a/modules-available/statistics_reporting/page.inc.php +++ b/modules-available/statistics_reporting/page.inc.php @@ -21,103 +21,82 @@ class Page_Statistics_Reporting extends Page */ protected function doRender() { - //counting the total number of logins - $res = Database::simpleQuery("SELECT COUNT(*) AS 'count' FROM statistic WHERE typeid='.vmchooser-session-name'"); - $row = $res->fetch(PDO::FETCH_ASSOC); - $datax = array('totalLogins' => $row['count']); - - //counting logins per vm/event - $res = Database::simpleQuery("SELECT data, COUNT(*) AS 'count' FROM statistic WHERE typeid='.vmchooser-session-name' GROUP BY data ORDER BY 2 DESC"); - $datax[] = array('vmLogins' => array()); - while ($row = $res->fetch(PDO::FETCH_ASSOC)) { - $datax['vmLogins'][] = array('vmname' => $row['data'], 'numLogins' => $row['count']); - } - - //counting the logins per user - $res = Database::simpleQuery("SELECT username, COUNT(*) AS 'count' FROM statistic WHERE typeid='.vmchooser-session-name' GROUP BY username ORDER BY 2 DESC"); - $datax[] = array('userLogins' => array()); - while ($row = $res->fetch(PDO::FETCH_ASSOC)) { - $datax['userLogins'][] = array('username' => $row['username'], 'numLogins' => $row['count']); - } - // TODO: got empty machine with alot of logins. isn't shown in the inner-join hostname query below. // $res = Database::simpleQuery("SELECT machineuuid as 'hostname', COUNT(*) AS 'count' FROM statistic WHERE typeid='~session-length' GROUP BY machineuuid ORDER BY 2 DESC"); // TODO: session-length liefert 3000 Einträge mehr als vmchooser-session? - //counting the logins per client - $res = Database::simpleQuery("SELECT machine.hostname AS 'hostname', COUNT(*) AS 'count' FROM statistic - INNER JOIN machine ON statistic.machineuuid=machine.machineuuid - WHERE typeid='~session-length' GROUP BY machine.hostname ORDER BY 2 DESC"); - $datax[] = array('machineLogins' => array()); - while ($row = $res->fetch(PDO::FETCH_ASSOC)) { - $datax['machineLogins'][] = array('client' => $row['hostname'], 'numLogins' => $row['count']); - } - - - - //total time offline overall - $res = Database::simpleQUery("SELECT sum(cast(data AS UNSIGNED)) AS totalOfftime FROM statistic WHERE typeid='~offline-length'"); - $row = $res->fetch(PDO::FETCH_ASSOC); - $datay= array('totalOfftime' => $row['totalOfftime']); - //total offline time per client - $res = Database::simpleQuery("SELECT machine.hostname AS 'hostname', statistic.data as time FROM statistic - INNER JOIN machine ON statistic.machineuuid=machine.machineuuid - WHERE typeid='~offline-length' GROUP BY machine.hostname ORDER BY cast(time AS UNSIGNED) DESC"); - $datay[] = array('totalOfflineTimeClient' => array()); - while ($row = $res->fetch(PDO::FETCH_ASSOC)) { - $datay['totalOfflineTimeClient'][] = array('client' => $row['hostname'], 'offTime' => $row['time']); + // TODO change AVG to median + + + // total time online, average time online, total number of logins + $res = Database::simpleQuery("SELECT SUM(CAST(data AS UNSIGNED)), AVG(CAST(data AS UNSIGNED)), COUNT(*) FROM statistic WHERE typeid = '~session-length'"); + $row = $res->fetch(PDO::FETCH_NUM); + $data = array('time' => $this->formatSeconds($row[0]), 'avgTime' => $this->formatSeconds($row[1]), 'totalLogins' => $row[2]); + //total time offline + $res = Database::simpleQUery("SELECT SUM(CAST(data AS UNSIGNED)) FROM statistic WHERE typeid='~offline-length'"); + $row = $res->fetch(PDO::FETCH_NUM); + $data = array_merge($data, array('totalOfftime' => $this->formatSeconds($row[0]))); + + // per location + $res = Database::simpleQuery("SELECT t1.ln, timeSum, avgTime, offlineSum, loginCount FROM ( + SELECT location.locationname AS 'ln', SUM(CAST(statistic.data AS UNSIGNED)) AS 'timeSum', AVG(CAST(statistic.data AS UNSIGNED)) AS 'avgTime', COUNT(*) AS 'loginCount' + FROM statistic INNER JOIN machine ON statistic.machineuuid = machine.machineuuid + INNER JOIN location ON machine.locationid = location.locationid + WHERE statistic.typeid = '~session-length' GROUP By location.locationname + ) t1 INNER JOIN ( + SELECT location.locationname AS 'ln', SUM(CAST(statistic.data AS UNSIGNED)) AS 'offlineSum' + FROM statistic INNER JOIN machine ON statistic.machineuuid = machine.machineuuid + INNER JOIN location ON machine.locationid = location.locationid + WHERE statistic.typeid = '~offline-length' GROUP By location.locationname + ) t2 ON t1.ln = t2.ln"); + $data[] = array('perLocation' => array()); + while ($row = $res->fetch(PDO::FETCH_NUM)) { + $data['perLocation'][] = array('location' => $row[0], 'time' => $this->formatSeconds($row[1]), 'timeInSeconds' => $row[1], + 'avgTime' => $this->formatSeconds($row[2]), 'avgTimeInSeconds' => $row[2], 'offTime' => $this->formatSeconds($row[3]), 'offlineTimeInSeconds' => $row[3], 'loginCount' => $row[4]); } - // last logout of client - $res = Database::simpleQuery("SELECT machine.hostname AS 'hostname', max(statistic.dateline) as datetime, statistic.data as loginTime - FROM statistic INNER JOIN machine ON statistic.machineuuid=machine.machineuuid - WHERE typeid='~session-length' GROUP BY machine.hostname ORDER BY datetime DESC"); - $datay[] = array('lastLogout' => array()); - while ($row = $res->fetch(PDO::FETCH_ASSOC)) { - $datay['lastLogout'][] = array('client' => $row['hostname'], 'lastlogout' => date(DATE_RSS,$row['datetime']+$row['loginTime']), 'howLongOff' => (time() - ($row['datetime']+$row['loginTime']))); + // per client + $res = Database::simpleQuery("SELECT t1.name, timeSum, avgTime, offlineSum, loginCount, lastLogout, lastStart FROM ( + SELECT machine.hostname AS 'name', machine.machineuuid AS 'uuid', SUM(CAST(statistic.data AS UNSIGNED)) AS 'timeSum', AVG(CAST(statistic.data AS UNSIGNED)) AS 'avgTime', COUNT(*) AS 'loginCount', MAX(statistic.dateline) AS 'lastLogout' + FROM statistic INNER JOIN machine ON statistic.machineuuid = machine.machineuuid + WHERE typeid = '~session-length' GROUP BY machine.machineuuid + ) t1 INNER JOIN ( + SELECT machine.hostname AS 'name', machine.machineuuid AS 'uuid', SUM(CAST(statistic.data AS UNSIGNED)) AS 'offlineSum', MAX(statistic.dateline) AS 'lastStart' + FROM statistic INNER JOIN machine ON statistic.machineuuid = machine.machineuuid + WHERE typeid = '~offline-length' GROUP BY machine.machineuuid + ) t2 ON t1.uuid = t2.uuid"); + $data[] = array('perClient' => array()); + while ($row = $res->fetch(PDO::FETCH_NUM)) { + $data['perClient'][] = array('hostname' => $row[0], 'time' => $this->formatSeconds($row[1]), 'timeInSeconds' => $row[1], + 'avgTime' => $this->formatSeconds($row[2]), 'avgTimeInSeconds' => $row[2], 'offTime' => $this->formatSeconds($row[3]), 'offlineTimeInSeconds' => $row[3], 'loginCount' => $row[4], + 'lastLogout' => date(DATE_RSS,$row[5]), 'lastLogoutUnixtime' => $row[5], 'lastStart' => date(DATE_RSS,$row[6]), 'lastStartUnixtime' => $row[6]); } - // last start of client - $res = Database::simpleQuery("SELECT machine.hostname AS 'hostname', max(statistic.dateline) as datetime FROM statistic - INNER JOIN machine ON statistic.machineuuid=machine.machineuuid - WHERE typeid='~offline-length' GROUP BY machine.hostname ORDER BY datetime DESC"); - $datay[] = array('lastLogin' => array()); - while ($row = $res->fetch(PDO::FETCH_ASSOC)) { - $datay['lastLogin'][] = array('client' => $row['hostname'], 'lastlogin' => date(DATE_RSS,$row['datetime'])); + // per user + $res = Database::simpleQuery("SELECT username, COUNT(*) AS 'count' FROM statistic WHERE typeid='.vmchooser-session-name' GROUP BY username ORDER BY 2 DESC"); + $data[] = array('perUser' => array()); + while ($row = $res->fetch(PDO::FETCH_NUM)) { + $data['perUser'][] = array('user' => $row[0], 'loginCount' => $row[1]); } - //total time offline per room - $res = Database::simpleQuery("SELECT location.locationname AS 'room', statistic.data as time FROM statistic - INNER JOIN machine ON statistic.machineuuid=machine.machineuuid - INNER JOIN location ON machine.locationid=location.locationid - WHERE typeid='~offline-length' GROUP BY room ORDER BY cast(time AS UNSIGNED) DESC"); - $datay[] = array('offTimeRoom' => array()); - while ($row = $res->fetch(PDO::FETCH_ASSOC)) { - $datay['offTimeRoom'][] = array('room' => $row['room'], 'offTime' => $this->formatSeconds($row['time'])); + // per vm + $res = Database::simpleQuery("SELECT data, COUNT(*) AS 'count' FROM statistic WHERE typeid='.vmchooser-session-name' GROUP BY data ORDER BY 2 DESC"); + $data[] = array('perVM' => array()); + while ($row = $res->fetch(PDO::FETCH_NUM)) { + $data['perVM'][] = array('vm' => $row[0], 'loginCount' => $row[1]); } - $data = array_merge($datax, $datay); - Render::addTemplate('_page', $data); - } - - function formatSeconds($seconds) { - $seconds = $seconds * 1; - $minutes = floor($seconds / 60); - $hours = floor($minutes / 60); - $days = floor($hours / 24); - - $seconds = $seconds % 60; - $minutes = $minutes % 60; - $hours = $hours % 24; - - $format = '%u:%u:%02u:%02u'; - $time = sprintf($format, $days, $hours, $minutes, $seconds); - return rtrim($time, '0'); + Render::addTemplate('columnChooser'); + Render::addTemplate('_page', $data); } + protected function formatSeconds($seconds) + { + return intdiv($seconds, 3600*24).'d '.intdiv($seconds%(3600*24), 3600).'h '.intdiv($seconds%3600, 60).'m '.($seconds%60).'s'; + } } diff --git a/modules-available/statistics_reporting/style.css b/modules-available/statistics_reporting/style.css new file mode 100644 index 00000000..f0ee4fd3 --- /dev/null +++ b/modules-available/statistics_reporting/style.css @@ -0,0 +1,3 @@ +.top-row { + margin-bottom: 20px; +} \ No newline at end of file diff --git a/modules-available/statistics_reporting/templates/_page.html b/modules-available/statistics_reporting/templates/_page.html index 101a124e..720fb37a 100644 --- a/modules-available/statistics_reporting/templates/_page.html +++ b/modules-available/statistics_reporting/templates/_page.html @@ -1,138 +1,125 @@ -
- - - - - - - -
{{lang_totalLogins}}
{{totalLogins}}
-
- -
- - - - - - - -
{{lang_overallOfftime}}
{{totalOfftime}}
-
- - - -
-
- - - - - - {{#totalOfflineTimeClient}} - - - - - {{/totalOfflineTimeClient }} -
{{lang_client}}{{lang_totalOffTime}}
{{client}}{{offTime}}
+
+
+
+ + + + + + + + + + + + + + + + + + + +
{{lang_totalTime}}{{lang_avgSessionLength}}{{lang_totalLogins}}{{lang_overallOfftime}}
{{lang_total}}{{time}}{{avgTime}}{{totalLogins}}{{totalOfftime}}
+
- -
- - - - - - - {{#lastLogout}} - - - - - - {{/lastLogout}} -
{{lang_client}}{{lang_clientLogout}}{{lang_offTime}}
{{client}}{{lastlogout}}{{howLongOff}}
+
+
+ + + + + + + + + + + + {{#perLocation}} + + + + + + + + {{/perLocation}} + +
{{lang_location}}{{lang_totalTime}}{{lang_avgSessionLength}}{{lang_totalLogins}}{{lang_totalOffTime}}
{{location}}{{time}}{{avgTime}}{{loginCount}}{{offTime}}
+
- -
- - - - - - {{#lastLogin}} - - - - - {{/lastLogin}} -
{{lang_client}}{{lang_clientStart}}
{{client}}{{lastlogin}}
+
+
+ + + + + + + + + + + + + + {{#perClient}} + + + + + + + + + + {{/perClient}} + +
{{lang_hostname}}{{lang_totalTime}}{{lang_avgSessionLength}}{{lang_totalLogins}}{{lang_totalOffTime}}{{lang_clientLogout}}{{lang_clientStart}}
{{hostname}}{{time}}{{avgTime}}{{loginCount}}{{offTime}}{{lastLogout}}{{lastStart}}
+
- -
- - - - - - {{#offTimeRoom}} - - - - - {{/offTimeRoom}} -
{{lang_room}}{{lang_totalOffTime}}
{{room}}{{offTime}}
+
+
+ + + + + + + + + {{#perUser}} + + + + + {{/perUser}} + +
{{lang_user}}{{lang_totalLogins}}
{{user}}{{loginCount}}
+
-
- - - - -
-
- - - - - - {{#vmLogins}} - - - - - {{/vmLogins}} -
{{lang_vm}}{{lang_countLogins}}
{{vmname}}{{numLogins}}
+
+
+ + + + + + + + + {{#perVM}} + + + + + {{/perVM}} + +
{{lang_vm}}{{lang_totalLogins}}
{{vm}}{{loginCount}}
+
+
-
- - - - - - {{#machineLogins}} - - - - - {{/machineLogins}} -
{{lang_client}}{{lang_countLogins}}
{{client}}{{numLogins}}
-
-
- - - - - - {{#userLogins}} - - - - - {{/userLogins}} -
{{lang_user}}{{lang_countLogins}}
{{username}}{{numLogins}}
-
-
diff --git a/modules-available/statistics_reporting/templates/columnChooser.html b/modules-available/statistics_reporting/templates/columnChooser.html new file mode 100644 index 00000000..62e20a4a --- /dev/null +++ b/modules-available/statistics_reporting/templates/columnChooser.html @@ -0,0 +1,47 @@ +
+
+
+ +
+ + + + + + +
+
+
+
+ + + \ No newline at end of file -- cgit v1.2.3-55-g7522 From f9f365ffbc7457f706f759a40b7dd16e3ea8d753 Mon Sep 17 00:00:00 2001 From: Christian Hofmaier Date: Thu, 1 Dec 2016 16:32:12 +0100 Subject: [statistics_reporting] moved functions to own file, improved language and variable naming --- .../inc/statisticreporting.inc.php | 64 ++++++++++++++++++++++ .../lang/de/template-tags.json | 6 +- .../lang/en/template-tags.json | 6 +- .../statistics_reporting/page.inc.php | 52 +++++------------- 4 files changed, 83 insertions(+), 45 deletions(-) create mode 100644 modules-available/statistics_reporting/inc/statisticreporting.inc.php (limited to 'modules-available/statistics_reporting/lang/de/template-tags.json') diff --git a/modules-available/statistics_reporting/inc/statisticreporting.inc.php b/modules-available/statistics_reporting/inc/statisticreporting.inc.php new file mode 100644 index 00000000..5bfba04f --- /dev/null +++ b/modules-available/statistics_reporting/inc/statisticreporting.inc.php @@ -0,0 +1,64 @@ + Session endet trotzdem mit session-length Meldung) // TODO change AVG to median // total time online, average time online, total number of logins - $res = Database::simpleQuery("SELECT SUM(CAST(data AS UNSIGNED)), AVG(CAST(data AS UNSIGNED)), COUNT(*) FROM statistic WHERE typeid = '~session-length'"); + $res = StatisticReporting::getOverallStatistics(); $row = $res->fetch(PDO::FETCH_NUM); - $data = array('time' => $this->formatSeconds($row[0]), 'avgTime' => $this->formatSeconds($row[1]), 'totalLogins' => $row[2]); + $data = array('time' => StatisticReporting::formatSeconds($row[0]), 'avgTime' => StatisticReporting::formatSeconds($row[1]), 'totalLogins' => $row[2]); //total time offline - $res = Database::simpleQUery("SELECT SUM(CAST(data AS UNSIGNED)) FROM statistic WHERE typeid='~offline-length'"); + $res = StatisticReporting::getTotalOffline(); $row = $res->fetch(PDO::FETCH_NUM); - $data = array_merge($data, array('totalOfftime' => $this->formatSeconds($row[0]))); + $data = array_merge($data, array('totalOfftime' => StatisticReporting::formatSeconds($row[0]))); // per location - $res = Database::simpleQuery("SELECT t1.ln, timeSum, avgTime, offlineSum, loginCount FROM ( - SELECT location.locationname AS 'ln', SUM(CAST(statistic.data AS UNSIGNED)) AS 'timeSum', AVG(CAST(statistic.data AS UNSIGNED)) AS 'avgTime', COUNT(*) AS 'loginCount' - FROM statistic INNER JOIN machine ON statistic.machineuuid = machine.machineuuid - INNER JOIN location ON machine.locationid = location.locationid - WHERE statistic.typeid = '~session-length' GROUP By location.locationname - ) t1 INNER JOIN ( - SELECT location.locationname AS 'ln', SUM(CAST(statistic.data AS UNSIGNED)) AS 'offlineSum' - FROM statistic INNER JOIN machine ON statistic.machineuuid = machine.machineuuid - INNER JOIN location ON machine.locationid = location.locationid - WHERE statistic.typeid = '~offline-length' GROUP By location.locationname - ) t2 ON t1.ln = t2.ln"); + $res = StatisticReporting::getLocationStatistics(); $data[] = array('perLocation' => array()); while ($row = $res->fetch(PDO::FETCH_NUM)) { - $data['perLocation'][] = array('location' => $row[0], 'time' => $this->formatSeconds($row[1]), 'timeInSeconds' => $row[1], - 'avgTime' => $this->formatSeconds($row[2]), 'avgTimeInSeconds' => $row[2], 'offTime' => $this->formatSeconds($row[3]), 'offlineTimeInSeconds' => $row[3], 'loginCount' => $row[4]); + $data['perLocation'][] = array('location' => $row[0], 'time' => StatisticReporting::formatSeconds($row[1]), 'timeInSeconds' => $row[1], + 'avgTime' => StatisticReporting::formatSeconds($row[2]), 'avgTimeInSeconds' => $row[2], 'offTime' => StatisticReporting::formatSeconds($row[3]), 'offlineTimeInSeconds' => $row[3], 'loginCount' => $row[4]); } // per client - $res = Database::simpleQuery("SELECT t1.name, timeSum, avgTime, offlineSum, loginCount, lastLogout, lastStart FROM ( - SELECT machine.hostname AS 'name', machine.machineuuid AS 'uuid', SUM(CAST(statistic.data AS UNSIGNED)) AS 'timeSum', AVG(CAST(statistic.data AS UNSIGNED)) AS 'avgTime', COUNT(*) AS 'loginCount', MAX(statistic.dateline) AS 'lastLogout' - FROM statistic INNER JOIN machine ON statistic.machineuuid = machine.machineuuid - WHERE typeid = '~session-length' GROUP BY machine.machineuuid - ) t1 INNER JOIN ( - SELECT machine.hostname AS 'name', machine.machineuuid AS 'uuid', SUM(CAST(statistic.data AS UNSIGNED)) AS 'offlineSum', MAX(statistic.dateline) AS 'lastStart' - FROM statistic INNER JOIN machine ON statistic.machineuuid = machine.machineuuid - WHERE typeid = '~offline-length' GROUP BY machine.machineuuid - ) t2 ON t1.uuid = t2.uuid"); + $res = StatisticReporting::getClientStatistics(); $data[] = array('perClient' => array()); while ($row = $res->fetch(PDO::FETCH_NUM)) { - $data['perClient'][] = array('hostname' => $row[0], 'time' => $this->formatSeconds($row[1]), 'timeInSeconds' => $row[1], - 'avgTime' => $this->formatSeconds($row[2]), 'avgTimeInSeconds' => $row[2], 'offTime' => $this->formatSeconds($row[3]), 'offlineTimeInSeconds' => $row[3], 'loginCount' => $row[4], + $data['perClient'][] = array('hostname' => $row[0], 'time' => StatisticReporting::formatSeconds($row[1]), 'timeInSeconds' => $row[1], + 'avgTime' => StatisticReporting::formatSeconds($row[2]), 'avgTimeInSeconds' => $row[2], 'offTime' => StatisticReporting::formatSeconds($row[3]), 'offlineTimeInSeconds' => $row[3], 'loginCount' => $row[4], 'lastLogout' => date(DATE_RSS,$row[5]), 'lastLogoutUnixtime' => $row[5], 'lastStart' => date(DATE_RSS,$row[6]), 'lastStartUnixtime' => $row[6]); } // per user - $res = Database::simpleQuery("SELECT username, COUNT(*) AS 'count' FROM statistic WHERE typeid='.vmchooser-session-name' GROUP BY username ORDER BY 2 DESC"); + $res = StatisticReporting::getUserStatistics(); $data[] = array('perUser' => array()); while ($row = $res->fetch(PDO::FETCH_NUM)) { $data['perUser'][] = array('user' => $row[0], 'loginCount' => $row[1]); } // per vm - $res = Database::simpleQuery("SELECT data, COUNT(*) AS 'count' FROM statistic WHERE typeid='.vmchooser-session-name' GROUP BY data ORDER BY 2 DESC"); + $res = StatisticReporting::getVMStatistics(); $data[] = array('perVM' => array()); while ($row = $res->fetch(PDO::FETCH_NUM)) { $data['perVM'][] = array('vm' => $row[0], 'loginCount' => $row[1]); } - - Render::addTemplate('columnChooser'); Render::addTemplate('_page', $data); } - - - protected function formatSeconds($seconds) - { - return intdiv($seconds, 3600*24).'d '.intdiv($seconds%(3600*24), 3600).'h '.intdiv($seconds%3600, 60).'m '.($seconds%60).'s'; - } } -- cgit v1.2.3-55-g7522 From 5e7a6622717bc578805adcddcf1b4772c2fb2a89 Mon Sep 17 00:00:00 2001 From: Udo Walter Date: Tue, 6 Dec 2016 16:23:25 +0100 Subject: [statistics_reporting] added time cutoff ui --- .../lang/de/template-tags.json | 8 +++- .../lang/en/template-tags.json | 8 +++- modules-available/statistics_reporting/style.css | 11 ++++- .../templates/columnChooser.html | 48 ++++++++++++++++++---- 4 files changed, 64 insertions(+), 11 deletions(-) (limited to 'modules-available/statistics_reporting/lang/de/template-tags.json') diff --git a/modules-available/statistics_reporting/lang/de/template-tags.json b/modules-available/statistics_reporting/lang/de/template-tags.json index db3e9f11..521b0607 100644 --- a/modules-available/statistics_reporting/lang/de/template-tags.json +++ b/modules-available/statistics_reporting/lang/de/template-tags.json @@ -18,5 +18,11 @@ "lang_hostname": "Client Name", "lang_location": "Raum", "lang_avgSessionLength": "Durchschnittliche Sitzungsdauer", - "lang_totalTime": "Gesamte Zeit" + "lang_totalTime": "Gesamte Zeit", + "lang_last1": "Letzten 24 Stunden", + "lang_last2": "Letzten 48 Stunden", + "lang_last7": "Letzten 7 Tage", + "lang_last14": "Letzten 14 Tage", + "lang_last30": "Letzten 30 Tage", + "lang_last90": "Letzten 90 Tage" } \ No newline at end of file diff --git a/modules-available/statistics_reporting/lang/en/template-tags.json b/modules-available/statistics_reporting/lang/en/template-tags.json index 7a7ff13a..c3900e31 100644 --- a/modules-available/statistics_reporting/lang/en/template-tags.json +++ b/modules-available/statistics_reporting/lang/en/template-tags.json @@ -18,5 +18,11 @@ "lang_hostname": "Client Name", "lang_location": "Location", "lang_avgSessionLength": "Average Session Length", - "lang_totalTime": "Total Time" + "lang_totalTime": "Gesamte Zeit", + "lang_last1": "Last 24 hours", + "lang_last2": "Last 48 hours", + "lang_last7": "Last 7 days", + "lang_last14": "Last 14 days", + "lang_last30": "Last 30 days", + "lang_last90": "Last 90 days" } \ No newline at end of file diff --git a/modules-available/statistics_reporting/style.css b/modules-available/statistics_reporting/style.css index 6cb6de51..b0875a7d 100644 --- a/modules-available/statistics_reporting/style.css +++ b/modules-available/statistics_reporting/style.css @@ -1,7 +1,16 @@ .top-row { - margin-bottom: 20px; + margin-bottom: 10px; +} + +.top-row select, .top-row .btn-group { + margin-right: 10px; + margin-bottom: 10px; } .buttonbar button { margin-bottom: 4px; +} + +.buttonbar { + margin-bottom: 20px; } \ No newline at end of file diff --git a/modules-available/statistics_reporting/templates/columnChooser.html b/modules-available/statistics_reporting/templates/columnChooser.html index ccc82a50..9e6f51d2 100644 --- a/modules-available/statistics_reporting/templates/columnChooser.html +++ b/modules-available/statistics_reporting/templates/columnChooser.html @@ -1,15 +1,23 @@
-
-
+
+
+
-
+
@@ -20,12 +28,9 @@
- \ No newline at end of file -- cgit v1.2.3-55-g7522 From f616a8cc375c2228def671800be40fac2072b27b Mon Sep 17 00:00:00 2001 From: Udo Walter Date: Tue, 20 Dec 2016 14:49:17 +0100 Subject: [statistics_reporting] added time bounds slider --- modules-available/statistics_reporting/config.json | 2 +- .../inc/statisticreporting.inc.php | 119 +++++++++++++++++---- .../lang/de/template-tags.json | 3 +- .../lang/en/template-tags.json | 7 +- modules-available/statistics_reporting/style.css | 24 ++++- .../templates/columnChooser.html | 52 ++++++++- 6 files changed, 175 insertions(+), 32 deletions(-) (limited to 'modules-available/statistics_reporting/lang/de/template-tags.json') diff --git a/modules-available/statistics_reporting/config.json b/modules-available/statistics_reporting/config.json index 8115acf2..1a9c7fe7 100644 --- a/modules-available/statistics_reporting/config.json +++ b/modules-available/statistics_reporting/config.json @@ -1,4 +1,4 @@ { "category": "main.content", - "dependencies": [ "js_stupidtable"] + "dependencies": [ "js_stupidtable", "js_jqueryui" ] } diff --git a/modules-available/statistics_reporting/inc/statisticreporting.inc.php b/modules-available/statistics_reporting/inc/statisticreporting.inc.php index 69a4d516..7652bbdc 100644 --- a/modules-available/statistics_reporting/inc/statisticreporting.inc.php +++ b/modules-available/statistics_reporting/inc/statisticreporting.inc.php @@ -7,14 +7,16 @@ class StatisticReporting public static function getClientStatistics($cutOffTimeInSeconds, $lowerTimeBound = 0, $upperTimeBound = 24) { $queryTime = time() - $cutOffTimeInSeconds; $res = Database::simpleQuery("SELECT t1.name, timeSum, avgTime, offlineSum, loginCount, lastLogout, lastStart FROM ( - SELECT machine.hostname AS 'name', machine.machineuuid AS 'uuid', SUM(CAST(statistic.data AS UNSIGNED)) AS 'timeSum', AVG(CAST(statistic.data AS UNSIGNED)) AS 'avgTime', COUNT(*) AS 'loginCount', MAX(statistic.dateline + (statistic.data *1)) AS 'lastLogout' - FROM statistic INNER JOIN machine ON statistic.machineuuid = machine.machineuuid - WHERE typeid = '~session-length' AND dateline>=$queryTime AND ((FROM_UNIXTIME(dateline+statistic.data, '%H')*1 >= $lowerTimeBound) AND (FROM_UNIXTIME(dateline, '%H')*1 < $upperTimeBound)) + SELECT machine.hostname AS 'name', machine.machineuuid AS 'uuid', SUM(CAST(sessionTable.length AS UNSIGNED)) AS 'timeSum', AVG(CAST(sessionTable.length AS UNSIGNED)) AS 'avgTime', COUNT(*) AS 'loginCount', MAX(sessionTable.dateline + sessionTable.data) AS 'lastLogout' + FROM ".self::getBoundedTableQueryString('~session-length', $lowerTimeBound, $upperTimeBound)." sessionTable + INNER JOIN machine ON sessionTable.machineuuid = machine.machineuuid + WHERE sessionTable.dateline>=$queryTime GROUP BY machine.machineuuid ) t1 INNER JOIN ( - SELECT machine.hostname AS 'name', machine.machineuuid AS 'uuid', SUM(CAST(statistic.data AS UNSIGNED)) AS 'offlineSum', MAX(statistic.dateline) AS 'lastStart' - FROM statistic INNER JOIN machine ON statistic.machineuuid = machine.machineuuid - WHERE typeid = '~offline-length' AND dateline>=$queryTime AND ((FROM_UNIXTIME(dateline+statistic.data, '%H')*1 >= $lowerTimeBound) AND (FROM_UNIXTIME(dateline, '%H')*1 < $upperTimeBound)) + SELECT machine.hostname AS 'name', machine.machineuuid AS 'uuid', SUM(CAST(offlineTable.length AS UNSIGNED)) AS 'offlineSum', MAX(offlineTable.dateline) AS 'lastStart' + FROM ".self::getBoundedTableQueryString('~offline-length', $lowerTimeBound, $upperTimeBound)." offlineTable + INNER JOIN machine ON offlineTable.machineuuid = machine.machineuuid + WHERE offlineTable.dateline>=$queryTime GROUP BY machine.machineuuid ) t2 ON t1.uuid = t2.uuid"); return $res; @@ -22,17 +24,20 @@ class StatisticReporting public static function getLocationStatistics($cutOffTimeInSeconds, $lowerTimeBound = 0, $upperTimeBound = 24) { $queryTime = time() - $cutOffTimeInSeconds; + $res = Database::simpleQuery("SELECT t1.locName, timeSum, avgTime, offlineSum, loginCount FROM ( - SELECT location.locationname AS 'locName', SUM(CAST(statistic.data AS UNSIGNED)) AS 'timeSum', AVG(CAST(statistic.data AS UNSIGNED)) AS 'avgTime', COUNT(*) AS 'loginCount' - FROM statistic INNER JOIN machine ON statistic.machineuuid = machine.machineuuid - INNER JOIN location ON machine.locationid = location.locationid - WHERE statistic.typeid = '~session-length' AND dateline>=$queryTime AND ((FROM_UNIXTIME(dateline+statistic.data, '%H')*1 >= $lowerTimeBound) AND (FROM_UNIXTIME(dateline, '%H')*1 < $upperTimeBound)) + SELECT location.locationname AS 'locName', SUM(CAST(sessionTable.length AS UNSIGNED)) AS 'timeSum', AVG(CAST(sessionTable.length AS UNSIGNED)) AS 'avgTime', COUNT(sessionTable.length) AS 'loginCount' + FROM ".self::getBoundedTableQueryString('~session-length', $lowerTimeBound, $upperTimeBound)." sessionTable + INNER JOIN machine ON sessionTable.machineuuid = machine.machineuuid + INNER JOIN location ON machine.locationid = location.locationid + WHERE sessionTable.dateline >= $queryTime GROUP By location.locationname ) t1 INNER JOIN ( - SELECT location.locationname AS 'locName', SUM(CAST(statistic.data AS UNSIGNED)) AS 'offlineSum' - FROM statistic INNER JOIN machine ON statistic.machineuuid = machine.machineuuid - INNER JOIN location ON machine.locationid = location.locationid - WHERE statistic.typeid = '~offline-length' AND dateline>=$queryTime AND ((FROM_UNIXTIME(dateline+statistic.data, '%H')*1 >= $lowerTimeBound) AND (FROM_UNIXTIME(dateline, '%H')*1 < $upperTimeBound)) + SELECT location.locationname AS 'locName', SUM(CAST(offlineTable.length AS UNSIGNED)) AS 'offlineSum' + FROM ".self::getBoundedTableQueryString('~offline-length', $lowerTimeBound, $upperTimeBound)." offlineTable + INNER JOIN machine ON offlineTable.machineuuid = machine.machineuuid + INNER JOIN location ON machine.locationid = location.locationid + WHERE offlineTable.dateline >= $queryTime GROUP By location.locationname ) t2 ON t1.locName = t2.locName"); return $res; @@ -57,18 +62,17 @@ class StatisticReporting // AND(betweenBounds OR upper but begins in bound ) public static function getOverallStatistics ($cutOffTimeInSeconds, $lowerTimeBound = 0, $upperTimeBound = 24) { $queryTime = time() - $cutOffTimeInSeconds; - $res = Database::simpleQuery("SELECT SUM(CAST(data AS UNSIGNED)), AVG(CAST(data AS UNSIGNED)), COUNT(*) FROM statistic WHERE typeid = '~session-length' AND dateline>=$queryTime - AND (((FROM_UNIXTIME(dateline+data, '%H')*1 >= $lowerTimeBound) AND (FROM_UNIXTIME(dateline, '%H')*1 < $upperTimeBound)) - ) - - "); + $res = Database::simpleQuery("SELECT SUM(CAST(sessionTable.length AS UNSIGNED)), AVG(CAST(sessionTable.length AS UNSIGNED)), COUNT(*) + FROM ".self::getBoundedTableQueryString('~session-length', $lowerTimeBound, $upperTimeBound)." sessionTable + WHERE sessionTable.dateline>=$queryTime"); return $res; } public static function getTotalOfflineStatistics($cutOffTimeInSeconds, $lowerTimeBound = 0, $upperTimeBound = 24) { $queryTime = time() - $cutOffTimeInSeconds; - $res = Database::simpleQuery("SELECT SUM(CAST(data AS UNSIGNED)) FROM statistic WHERE typeid='~offline-length' AND dateline>=$queryTime - AND ((FROM_UNIXTIME(dateline+data, '%H')*1 >= $lowerTimeBound) AND (FROM_UNIXTIME(dateline, '%H')*1 < $upperTimeBound))"); + $res = Database::simpleQuery("SELECT SUM(CAST(offlineTable.length AS UNSIGNED)) + FROM ".self::getBoundedTableQueryString('~offline-length', $lowerTimeBound, $upperTimeBound)." offlineTable + WHERE offlineTable.dateline>=$queryTime"); return $res; } @@ -77,4 +81,75 @@ class StatisticReporting return intdiv($seconds, 3600*24).'d '.intdiv($seconds%(3600*24), 3600).'h '.intdiv($seconds%3600, 60).'m '.($seconds%60).'s'; } -} \ No newline at end of file + + private static function getBoundedTableQueryString($typeid, $lowerTimeBound, $upperTimeBound) + { + $lowerFormat = "'%y-%m-%d $lowerTimeBound:00:00'"; + $upperFormat = "'%y-%m-%d ".($upperTimeBound-1).":59:59'"; + $queryString = " + select + + @startLower := UNIX_TIMESTAMP(FROM_UNIXTIME(dateline, $lowerFormat)), + @startUpper := UNIX_TIMESTAMP(FROM_UNIXTIME(dateline, $upperFormat)), + @endLower := UNIX_TIMESTAMP(FROM_UNIXTIME(dateline+data, $lowerFormat)), + @endUpper := UNIX_TIMESTAMP(FROM_UNIXTIME(dateline+data, $upperFormat)), + + (CAST(data AS SIGNED) + - IF( + dateline > @startUpper, + UNIX_TIMESTAMP(FROM_UNIXTIME(dateline, $lowerFormat) + INTERVAL 1 DAY) - dateline, + IF( + dateline < @startLower, + @startLower - dateline, + 0 + ) + ) + - IF( + dateline+data > @endUpper, + dateline+data - (@endUpper + 1), + IF( + dateline+data < @endLower, + dateline+data - (UNIX_TIMESTAMP(FROM_UNIXTIME(dateline+data, $upperFormat) - INTERVAL 1 DAY) + 1), + 0 + ) + ) + - ( TO_DAYS(FROM_UNIXTIME(dateline+data, '%y-%m-%d')) - TO_DAYS(FROM_UNIXTIME(dateline, '%y-%m-%d')) + - 2 + + IF(dateline <= @startUpper, 1, 0) + + IF(dateline+data >= @endLower, 1, 0) + ) * ((24 - ($upperTimeBound - $lowerTimeBound)) * 3600) + + - IF( + @leftBound := IF(dateline <= @startUpper, @startUpper, UNIX_TIMESTAMP(FROM_UNIXTIME(dateline, $upperFormat) + INTERVAL 1 DAY)) + < @rightBound := IF(dateline+data >= @endLower, @endLower, UNIX_TIMESTAMP(FROM_UNIXTIME(dateline+data, $lowerFormat) - INTERVAL 1 DAY)), + IF( + @timeDiff := ( + (date_format(from_unixtime(@leftBound), '%H') - + date_format(convert_tz(from_unixtime(@leftBound), @@session.time_zone, '+00:00'), '%H') + 24) % 24 + - + (date_format(from_unixtime(@rightBound), '%H') - + date_format(convert_tz(from_unixtime(@rightBound), @@session.time_zone, '+00:00'), '%H') + 24) % 24) = 1 + AND ($lowerTimeBound >= 2 OR $upperTimeBound <= 2), + 3600, + IF(@timeDiff = -1 AND ($lowerTimeBound >= 3 OR $upperTimeBound <= 3), -3600, 0) + ), + 0 + ) + + ) as 'length', + dateline, + data, + machineuuid + + from statistic + where typeid = '$typeid' and ( + (UNIX_TIMESTAMP(FROM_UNIXTIME(dateline, $lowerFormat)) <= dateline and dateline <= UNIX_TIMESTAMP(FROM_UNIXTIME(dateline, $upperFormat))) or + (UNIX_TIMESTAMP(FROM_UNIXTIME(dateline+data, $lowerFormat)) <= dateline+data and dateline+data <= UNIX_TIMESTAMP(FROM_UNIXTIME(dateline+data, $upperFormat))) + ) + "; + return "(".$queryString.")"; + } + + +} + diff --git a/modules-available/statistics_reporting/lang/de/template-tags.json b/modules-available/statistics_reporting/lang/de/template-tags.json index 521b0607..f2500db0 100644 --- a/modules-available/statistics_reporting/lang/de/template-tags.json +++ b/modules-available/statistics_reporting/lang/de/template-tags.json @@ -24,5 +24,6 @@ "lang_last7": "Letzten 7 Tage", "lang_last14": "Letzten 14 Tage", "lang_last30": "Letzten 30 Tage", - "lang_last90": "Letzten 90 Tage" + "lang_last90": "Letzten 90 Tage", + "lang_apply": "Anwenden" } \ No newline at end of file diff --git a/modules-available/statistics_reporting/lang/en/template-tags.json b/modules-available/statistics_reporting/lang/en/template-tags.json index c3900e31..8fa97719 100644 --- a/modules-available/statistics_reporting/lang/en/template-tags.json +++ b/modules-available/statistics_reporting/lang/en/template-tags.json @@ -5,7 +5,7 @@ "lang_vm": "VM", "lang_totalLogins": "Total Logins", "lang_overallOfftime": "Overall time offline", - "lang_totalOffTime": "Total time offline", + "lang_totalOffTime": "Total Time Offline", "lang_clientLogout": "Last VM Logout", "lang_clientStart": "Last Client Boot", "lang_room": "Room", @@ -18,11 +18,12 @@ "lang_hostname": "Client Name", "lang_location": "Location", "lang_avgSessionLength": "Average Session Length", - "lang_totalTime": "Gesamte Zeit", + "lang_totalTime": "Total Time", "lang_last1": "Last 24 hours", "lang_last2": "Last 48 hours", "lang_last7": "Last 7 days", "lang_last14": "Last 14 days", "lang_last30": "Last 30 days", - "lang_last90": "Last 90 days" + "lang_last90": "Last 90 days", + "lang_apply": "Apply" } \ No newline at end of file diff --git a/modules-available/statistics_reporting/style.css b/modules-available/statistics_reporting/style.css index b0875a7d..d7fa7a2f 100644 --- a/modules-available/statistics_reporting/style.css +++ b/modules-available/statistics_reporting/style.css @@ -2,7 +2,7 @@ margin-bottom: 10px; } -.top-row select, .top-row .btn-group { +.top-row > * { margin-right: 10px; margin-bottom: 10px; } @@ -13,4 +13,26 @@ .buttonbar { margin-bottom: 20px; +} + +#slider { + display: inline-block; + width: 160px; + margin-left: 20px; + margin-bottom: 3px; + margin-right: 20px; +} + +#lower-handle, #upper-handle { + width: 3em; + height: 1.6em; + top: 50%; + margin-top: -.8em; + margin-left: -1.5em; + text-align: center; + line-height: 1.6em; +} + +#applybound { + display: none; } \ No newline at end of file diff --git a/modules-available/statistics_reporting/templates/columnChooser.html b/modules-available/statistics_reporting/templates/columnChooser.html index 9e6f51d2..319f9702 100644 --- a/modules-available/statistics_reporting/templates/columnChooser.html +++ b/modules-available/statistics_reporting/templates/columnChooser.html @@ -8,7 +8,7 @@ - @@ -16,6 +16,12 @@ + +
+
+
+
+
@@ -30,7 +36,30 @@ \ No newline at end of file -- cgit v1.2.3-55-g7522 From f74dfc9488cf4733b18a11b90307183bafbc01f8 Mon Sep 17 00:00:00 2001 From: Udo Walter Date: Thu, 22 Dec 2016 13:59:12 +0100 Subject: [statistics_reporting] changed average to median --- .../inc/statisticreporting.inc.php | 26 +++++++++++++++++----- .../lang/de/template-tags.json | 2 +- .../lang/en/template-tags.json | 2 +- .../statistics_reporting/page.inc.php | 8 ++++--- .../statistics_reporting/templates/_page.html | 12 +++++----- .../templates/columnChooser.html | 2 +- 6 files changed, 34 insertions(+), 18 deletions(-) (limited to 'modules-available/statistics_reporting/lang/de/template-tags.json') diff --git a/modules-available/statistics_reporting/inc/statisticreporting.inc.php b/modules-available/statistics_reporting/inc/statisticreporting.inc.php index 9212a09c..d98ec168 100644 --- a/modules-available/statistics_reporting/inc/statisticreporting.inc.php +++ b/modules-available/statistics_reporting/inc/statisticreporting.inc.php @@ -6,8 +6,8 @@ class StatisticReporting public static function getClientStatistics($cutOffTimeInSeconds, $lowerTimeBound = 0, $upperTimeBound = 24) { $queryTime = time() - $cutOffTimeInSeconds; - $res = Database::simpleQuery("SELECT t1.name, timeSum, avgTime, offlineSum, loginCount, lastLogout, lastStart, shortSessions FROM ( - SELECT machine.hostname AS 'name', machine.machineuuid AS 'uuid', SUM(CAST(sessionTable.length AS UNSIGNED)) AS 'timeSum', AVG(CAST(sessionTable.length AS UNSIGNED)) AS 'avgTime', COUNT(*) AS 'loginCount', MAX(sessionTable.dateline + sessionTable.data) AS 'lastLogout' + $res = Database::simpleQuery("SELECT t1.name, timeSum, medianTime, offlineSum, loginCount, lastLogout, lastStart, shortSessions FROM ( + SELECT machine.hostname AS 'name', machine.machineuuid AS 'uuid', SUM(CAST(sessionTable.length AS UNSIGNED)) AS 'timeSum', GROUP_CONCAT(sessionTable.length) AS 'medianTime', COUNT(*) AS 'loginCount', MAX(sessionTable.dateline + sessionTable.data) AS 'lastLogout' FROM ".self::getBoundedTableQueryString('~session-length', $lowerTimeBound, $upperTimeBound)." sessionTable INNER JOIN machine ON sessionTable.machineuuid = machine.machineuuid WHERE sessionTable.dateline>=$queryTime AND sessionTable.data >= 60 @@ -37,8 +37,8 @@ class StatisticReporting public static function getLocationStatistics($cutOffTimeInSeconds, $lowerTimeBound = 0, $upperTimeBound = 24) { $queryTime = time() - $cutOffTimeInSeconds; - $res = Database::simpleQuery("SELECT t1.locName, timeSum, avgTime, offlineSum, loginCount, shortSessions FROM ( - SELECT IFNULL(location.locationname, '') AS 'locName', SUM(CAST(sessionTable.length AS UNSIGNED)) AS 'timeSum', AVG(CAST(sessionTable.length AS UNSIGNED)) AS 'avgTime', COUNT(sessionTable.length) AS 'loginCount' + $res = Database::simpleQuery("SELECT t1.locName, timeSum, medianTime, offlineSum, loginCount, shortSessions FROM ( + SELECT IFNULL(location.locationname, '') AS 'locName', SUM(CAST(sessionTable.length AS UNSIGNED)) AS 'timeSum', GROUP_CONCAT(sessionTable.length) AS 'medianTime', COUNT(sessionTable.length) AS 'loginCount' FROM ".self::getBoundedTableQueryString('~session-length', $lowerTimeBound, $upperTimeBound)." sessionTable INNER JOIN machine ON sessionTable.machineuuid = machine.machineuuid LEFT JOIN location ON machine.locationid = location.locationid @@ -87,8 +87,8 @@ class StatisticReporting public static function getOverallStatistics ($cutOffTimeInSeconds, $lowerTimeBound = 0, $upperTimeBound = 24) { $queryTime = time() - $cutOffTimeInSeconds; - $res = Database::simpleQuery("SELECT sum, avg, countLong, countShort FROM - ( SELECT SUM(CAST(sessionTable.length AS UNSIGNED)) AS sum, AVG(CAST(sessionTable.length AS UNSIGNED)) AS avg, COUNT(*) AS countLong + $res = Database::simpleQuery("SELECT sum, median, countLong, countShort FROM + ( SELECT SUM(CAST(sessionTable.length AS UNSIGNED)) AS sum, GROUP_CONCAT(sessionTable.length) AS median, COUNT(*) AS countLong FROM ".self::getBoundedTableQueryString('~session-length', $lowerTimeBound, $upperTimeBound)." sessionTable WHERE sessionTable.dateline>=$queryTime AND sessionTable.data >= 60 ) t1 @@ -113,6 +113,20 @@ class StatisticReporting return intdiv($seconds, 3600*24).'d '.intdiv($seconds%(3600*24), 3600).'h '.intdiv($seconds%3600, 60).'m '.($seconds%60).'s'; } + public static function calcMedian($string) { + $arr = explode(",", $string); + sort($arr, SORT_NUMERIC); + $count = count($arr); //total numbers in array + $middleval = floor(($count-1)/2); // find the middle value, or the lowest middle value + if($count % 2) { // odd number, middle is the median + $median = $arr[(int) $middleval]; + } else { // even number, calculate avg of 2 medians + $low = $arr[(int) $middleval]; + $high = $arr[(int) $middleval+1]; + $median = (($low+$high)/2); + } + return round($median); + } private static function getBoundedTableQueryString($typeid, $lowerTimeBound, $upperTimeBound) { diff --git a/modules-available/statistics_reporting/lang/de/template-tags.json b/modules-available/statistics_reporting/lang/de/template-tags.json index f2500db0..c5494205 100644 --- a/modules-available/statistics_reporting/lang/de/template-tags.json +++ b/modules-available/statistics_reporting/lang/de/template-tags.json @@ -17,7 +17,7 @@ "lang_pervm": "Pro VM", "lang_hostname": "Client Name", "lang_location": "Raum", - "lang_avgSessionLength": "Durchschnittliche Sitzungsdauer", + "lang_medianSessionLength": "Mittlere Sitzungsdauer", "lang_totalTime": "Gesamte Zeit", "lang_last1": "Letzten 24 Stunden", "lang_last2": "Letzten 48 Stunden", diff --git a/modules-available/statistics_reporting/lang/en/template-tags.json b/modules-available/statistics_reporting/lang/en/template-tags.json index 8fa97719..de91621f 100644 --- a/modules-available/statistics_reporting/lang/en/template-tags.json +++ b/modules-available/statistics_reporting/lang/en/template-tags.json @@ -17,7 +17,7 @@ "lang_pervm": "Per VM", "lang_hostname": "Client Name", "lang_location": "Location", - "lang_avgSessionLength": "Average Session Length", + "lang_medianSessionLength": "Median Session Length", "lang_totalTime": "Total Time", "lang_last1": "Last 24 hours", "lang_last2": "Last 48 hours", diff --git a/modules-available/statistics_reporting/page.inc.php b/modules-available/statistics_reporting/page.inc.php index 9417d2da..0dd4f243 100644 --- a/modules-available/statistics_reporting/page.inc.php +++ b/modules-available/statistics_reporting/page.inc.php @@ -35,7 +35,7 @@ class Page_Statistics_Reporting extends Page // total time online, average time online, total number of logins $res = StatisticReporting::getOverallStatistics($cutOffTimer, $lowerTimeBound, $upperTimeBound); $row = $res->fetch(PDO::FETCH_NUM); - $data = array('time' => StatisticReporting::formatSeconds($row[0]), 'avgTime' => StatisticReporting::formatSeconds($row[1]), 'totalLogins' => $row[2]); + $data = array('time' => StatisticReporting::formatSeconds($row[0]), 'medianTime' => StatisticReporting::formatSeconds(StatisticReporting::calcMedian($row[1])), 'totalLogins' => $row[2]); //total time offline $res = StatisticReporting::getTotalOfflineStatistics($cutOffTimer, $lowerTimeBound, $upperTimeBound); @@ -46,16 +46,18 @@ class Page_Statistics_Reporting extends Page $res = StatisticReporting::getLocationStatistics($cutOffTimer, $lowerTimeBound, $upperTimeBound); $data[] = array('perLocation' => array()); while ($row = $res->fetch(PDO::FETCH_NUM)) { + $median = StatisticReporting::calcMedian(StatisticReporting::calcMedian($row[2])); $data['perLocation'][] = array('location' => $row[0], 'time' => StatisticReporting::formatSeconds($row[1]), 'timeInSeconds' => $row[1], - 'avgTime' => StatisticReporting::formatSeconds($row[2]), 'avgTimeInSeconds' => $row[2], 'offTime' => StatisticReporting::formatSeconds($row[3]), 'offlineTimeInSeconds' => $row[3], 'loginCount' => $row[4]); + 'medianTime' => StatisticReporting::formatSeconds($median), 'medianTimeInSeconds' => $median, 'offTime' => StatisticReporting::formatSeconds($row[3]), 'offlineTimeInSeconds' => $row[3], 'loginCount' => $row[4]); } // per client $res = StatisticReporting::getClientStatistics($cutOffTimer, $lowerTimeBound, $upperTimeBound); $data[] = array('perClient' => array()); while ($row = $res->fetch(PDO::FETCH_NUM)) { + $median = StatisticReporting::calcMedian(StatisticReporting::calcMedian($row[2])); $data['perClient'][] = array('hostname' => $row[0], 'time' => StatisticReporting::formatSeconds($row[1]), 'timeInSeconds' => $row[1], - 'avgTime' => StatisticReporting::formatSeconds($row[2]), 'avgTimeInSeconds' => $row[2], 'offTime' => StatisticReporting::formatSeconds($row[3]), 'offlineTimeInSeconds' => $row[3], 'loginCount' => $row[4], + 'medianTime' => StatisticReporting::formatSeconds($median), 'medianTimeInSeconds' => $median, 'offTime' => StatisticReporting::formatSeconds($row[3]), 'offlineTimeInSeconds' => $row[3], 'loginCount' => $row[4], 'lastLogout' => date(DATE_RSS,$row[5]), 'lastLogoutUnixtime' => $row[5], 'lastStart' => date(DATE_RSS,$row[6]), 'lastStartUnixtime' => $row[6]); } diff --git a/modules-available/statistics_reporting/templates/_page.html b/modules-available/statistics_reporting/templates/_page.html index 720fb37a..7cfb424c 100644 --- a/modules-available/statistics_reporting/templates/_page.html +++ b/modules-available/statistics_reporting/templates/_page.html @@ -6,7 +6,7 @@ {{lang_totalTime}} - {{lang_avgSessionLength}} + {{lang_medianSessionLength}} {{lang_totalLogins}} {{lang_overallOfftime}} @@ -15,7 +15,7 @@ {{lang_total}} {{time}} - {{avgTime}} + {{medianTime}} {{totalLogins}} {{totalOfftime}} @@ -30,7 +30,7 @@ {{lang_location}} {{lang_totalTime}} - {{lang_avgSessionLength}} + {{lang_medianSessionLength}} {{lang_totalLogins}} {{lang_totalOffTime}} @@ -40,7 +40,7 @@ {{location}} {{time}} - {{avgTime}} + {{medianTime}} {{loginCount}} {{offTime}} @@ -56,7 +56,7 @@ {{lang_hostname}} {{lang_totalTime}} - {{lang_avgSessionLength}} + {{lang_medianSessionLength}} {{lang_totalLogins}} {{lang_totalOffTime}} {{lang_clientLogout}} @@ -68,7 +68,7 @@ {{hostname}} {{time}} - {{avgTime}} + {{medianTime}} {{loginCount}} {{offTime}} {{lastLogout}} diff --git a/modules-available/statistics_reporting/templates/columnChooser.html b/modules-available/statistics_reporting/templates/columnChooser.html index 319f9702..d79f542b 100644 --- a/modules-available/statistics_reporting/templates/columnChooser.html +++ b/modules-available/statistics_reporting/templates/columnChooser.html @@ -25,7 +25,7 @@
- + -- cgit v1.2.3-55-g7522 From 3a2dae96362b1187ae4b9d89904d23b6a7da87cb Mon Sep 17 00:00:00 2001 From: Udo Walter Date: Thu, 22 Dec 2016 15:08:36 +0100 Subject: [statistics_reporting] added short sessions to ui --- .../lang/de/template-tags.json | 3 ++- .../lang/en/template-tags.json | 3 ++- .../statistics_reporting/page.inc.php | 10 ++++----- .../statistics_reporting/templates/_page.html | 26 +++++++++++++--------- .../templates/columnChooser.html | 3 ++- 5 files changed, 27 insertions(+), 18 deletions(-) (limited to 'modules-available/statistics_reporting/lang/de/template-tags.json') diff --git a/modules-available/statistics_reporting/lang/de/template-tags.json b/modules-available/statistics_reporting/lang/de/template-tags.json index c5494205..68b68250 100644 --- a/modules-available/statistics_reporting/lang/de/template-tags.json +++ b/modules-available/statistics_reporting/lang/de/template-tags.json @@ -3,7 +3,8 @@ "lang_countLogins": "Anzahl Logins", "lang_client": "Client", "lang_vm": "VM", - "lang_totalLogins": "Gesamt Logins", + "lang_sessions": "Sitzungen \u2265 60s", + "lang_shortSessions": "Sitzungen < 60s", "lang_overallOfftime": "Insgesamte Zeit Offline", "lang_totalOffTime": "Gesamtzeit Offline", "lang_clientLogout": "Letzter VM Logout", diff --git a/modules-available/statistics_reporting/lang/en/template-tags.json b/modules-available/statistics_reporting/lang/en/template-tags.json index de91621f..b9e0c61d 100644 --- a/modules-available/statistics_reporting/lang/en/template-tags.json +++ b/modules-available/statistics_reporting/lang/en/template-tags.json @@ -3,7 +3,8 @@ "lang_countLogins": "Number of Logins", "lang_client": "Client", "lang_vm": "VM", - "lang_totalLogins": "Total Logins", + "lang_sessions": "Sessions \u2265 60s", + "lang_shortSessions": "Sessions < 60s", "lang_overallOfftime": "Overall time offline", "lang_totalOffTime": "Total Time Offline", "lang_clientLogout": "Last VM Logout", diff --git a/modules-available/statistics_reporting/page.inc.php b/modules-available/statistics_reporting/page.inc.php index de13cdb3..f0f56e87 100644 --- a/modules-available/statistics_reporting/page.inc.php +++ b/modules-available/statistics_reporting/page.inc.php @@ -35,7 +35,7 @@ class Page_Statistics_Reporting extends Page // total time online, average time online, total number of logins $res = StatisticReporting::getOverallStatistics($cutOffTimer, $lowerTimeBound, $upperTimeBound); $row = $res->fetch(PDO::FETCH_NUM); - $data = array('time' => StatisticReporting::formatSeconds($row[0]), 'medianTime' => StatisticReporting::formatSeconds(StatisticReporting::calcMedian($row[1])), 'totalLogins' => $row[2], 'shortSessions' => $row[3]); + $data = array('time' => StatisticReporting::formatSeconds($row[0]), 'medianTime' => StatisticReporting::formatSeconds(StatisticReporting::calcMedian($row[1])), 'sessions' => $row[2], 'shortSessions' => $row[3]); //total time offline $res = StatisticReporting::getTotalOfflineStatistics($cutOffTimer, $lowerTimeBound, $upperTimeBound); @@ -48,7 +48,7 @@ class Page_Statistics_Reporting extends Page while ($row = $res->fetch(PDO::FETCH_NUM)) { $median = StatisticReporting::calcMedian(StatisticReporting::calcMedian($row[2])); $data['perLocation'][] = array('location' => $row[0], 'time' => StatisticReporting::formatSeconds($row[1]), 'timeInSeconds' => $row[1], - 'medianTime' => StatisticReporting::formatSeconds($median), 'medianTimeInSeconds' => $median, 'offTime' => StatisticReporting::formatSeconds($row[3]), 'offlineTimeInSeconds' => $row[3], 'loginCount' => $row[4], 'shortSessions' => $row[5]); + 'medianTime' => StatisticReporting::formatSeconds($median), 'medianTimeInSeconds' => $median, 'offTime' => StatisticReporting::formatSeconds($row[3]), 'offlineTimeInSeconds' => $row[3], 'sessions' => $row[4], 'shortSessions' => $row[5]); } // per client @@ -57,7 +57,7 @@ class Page_Statistics_Reporting extends Page while ($row = $res->fetch(PDO::FETCH_NUM)) { $median = StatisticReporting::calcMedian(StatisticReporting::calcMedian($row[2])); $data['perClient'][] = array('hostname' => $row[0], 'time' => StatisticReporting::formatSeconds($row[1]), 'timeInSeconds' => $row[1], - 'medianTime' => StatisticReporting::formatSeconds($median), 'medianTimeInSeconds' => $median, 'offTime' => StatisticReporting::formatSeconds($row[3]), 'offlineTimeInSeconds' => $row[3], 'loginCount' => $row[4], + 'medianTime' => StatisticReporting::formatSeconds($median), 'medianTimeInSeconds' => $median, 'offTime' => StatisticReporting::formatSeconds($row[3]), 'offlineTimeInSeconds' => $row[3], 'sessions' => $row[4], 'lastLogout' => date(DATE_RSS,$row[5]), 'lastLogoutUnixtime' => $row[5], 'lastStart' => date(DATE_RSS,$row[6]), 'lastStartUnixtime' => $row[6], 'shortSessions' => $row[7]); } @@ -65,14 +65,14 @@ class Page_Statistics_Reporting extends Page $res = StatisticReporting::getUserStatistics($cutOffTimer, $lowerTimeBound, $upperTimeBound); $data[] = array('perUser' => array()); while ($row = $res->fetch(PDO::FETCH_NUM)) { - $data['perUser'][] = array('user' => $row[0], 'loginCount' => $row[1]); + $data['perUser'][] = array('user' => $row[0], 'sessions' => $row[1]); } // per vm $res = StatisticReporting::getVMStatistics($cutOffTimer, $lowerTimeBound, $upperTimeBound); $data[] = array('perVM' => array()); while ($row = $res->fetch(PDO::FETCH_NUM)) { - $data['perVM'][] = array('vm' => $row[0], 'loginCount' => $row[1]); + $data['perVM'][] = array('vm' => $row[0], 'sessions' => $row[1]); } Render::addTemplate('columnChooser'); diff --git a/modules-available/statistics_reporting/templates/_page.html b/modules-available/statistics_reporting/templates/_page.html index 7cfb424c..d2aaecde 100644 --- a/modules-available/statistics_reporting/templates/_page.html +++ b/modules-available/statistics_reporting/templates/_page.html @@ -7,7 +7,8 @@ {{lang_totalTime}} {{lang_medianSessionLength}} - {{lang_totalLogins}} + {{lang_sessions}} + {{lang_shortSessions}} {{lang_overallOfftime}} @@ -16,7 +17,8 @@ {{lang_total}} {{time}} {{medianTime}} - {{totalLogins}} + {{sessions}} + {{shortSessions}} {{totalOfftime}} @@ -31,7 +33,8 @@ {{lang_location}} {{lang_totalTime}} {{lang_medianSessionLength}} - {{lang_totalLogins}} + {{lang_sessions}} + {{lang_shortSessions}} {{lang_totalOffTime}} @@ -41,7 +44,8 @@ {{location}} {{time}} {{medianTime}} - {{loginCount}} + {{sessions}} + {{shortSessions}} {{offTime}} {{/perLocation}} @@ -57,7 +61,8 @@ {{lang_hostname}} {{lang_totalTime}} {{lang_medianSessionLength}} - {{lang_totalLogins}} + {{lang_sessions}} + {{lang_shortSessions}} {{lang_totalOffTime}} {{lang_clientLogout}} {{lang_clientStart}} @@ -69,7 +74,8 @@ {{hostname}} {{time}} {{medianTime}} - {{loginCount}} + {{sessions}} + {{shortSessions}} {{offTime}} {{lastLogout}} {{lastStart}} @@ -85,14 +91,14 @@ {{lang_user}} - {{lang_totalLogins}} + {{lang_sessions}} {{#perUser}} {{user}} - {{loginCount}} + {{sessions}} {{/perUser}} @@ -105,14 +111,14 @@ {{lang_vm}} - {{lang_totalLogins}} + {{lang_sessions}} {{#perVM}} {{vm}} - {{loginCount}} + {{sessions}} {{/perVM}} diff --git a/modules-available/statistics_reporting/templates/columnChooser.html b/modules-available/statistics_reporting/templates/columnChooser.html index d79f542b..49c9a75d 100644 --- a/modules-available/statistics_reporting/templates/columnChooser.html +++ b/modules-available/statistics_reporting/templates/columnChooser.html @@ -26,7 +26,8 @@
- + + -- cgit v1.2.3-55-g7522 From 2ab12fa0ce5fe4c916d5426e05656e61b4005b1e Mon Sep 17 00:00:00 2001 From: Udo Walter Date: Thu, 22 Dec 2016 16:10:13 +0100 Subject: [statistics_reporting] changed cutoffs --- .../inc/statisticreporting.inc.php | 41 +++++++++------------- .../lang/de/template-tags.json | 4 +-- .../lang/en/template-tags.json | 4 +-- .../statistics_reporting/page.inc.php | 15 ++++---- 4 files changed, 28 insertions(+), 36 deletions(-) (limited to 'modules-available/statistics_reporting/lang/de/template-tags.json') diff --git a/modules-available/statistics_reporting/inc/statisticreporting.inc.php b/modules-available/statistics_reporting/inc/statisticreporting.inc.php index 7b1dcfdc..626aa290 100644 --- a/modules-available/statistics_reporting/inc/statisticreporting.inc.php +++ b/modules-available/statistics_reporting/inc/statisticreporting.inc.php @@ -4,17 +4,16 @@ class StatisticReporting { - public static function getClientStatistics($cutOffTimeInSeconds, $lowerTimeBound = 0, $upperTimeBound = 24) { - $queryTime = time() - $cutOffTimeInSeconds; + public static function getClientStatistics($cutOff, $lowerTimeBound = 0, $upperTimeBound = 24) { $res = Database::simpleQuery("SELECT t1.name, timeSum, medianTime, offlineSum, longSessions, lastLogout, lastStart, shortSessions FROM ( SELECT machine.hostname AS 'name', machine.machineuuid AS 'uuid', SUM(CAST(sessionTable.length AS UNSIGNED)) AS 'timeSum', GROUP_CONCAT(sessionTable.length) AS 'medianTime', SUM(sessionTable.length >= 60) AS 'longSessions', SUM(sessionTable.length < 60) AS 'shortSessions',MAX(sessionTable.dateline + sessionTable.data) AS 'lastLogout' - FROM ".self::getBoundedTableQueryString('~session-length', $lowerTimeBound, $upperTimeBound, $queryTime)." sessionTable + FROM ".self::getBoundedTableQueryString('~session-length', $lowerTimeBound, $upperTimeBound, $cutOff)." sessionTable INNER JOIN machine ON sessionTable.machineuuid = machine.machineuuid GROUP BY machine.machineuuid ) t1 INNER JOIN ( SELECT machine.hostname AS 'name', machine.machineuuid AS 'uuid', SUM(CAST(offlineTable.length AS UNSIGNED)) AS 'offlineSum', MAX(offlineTable.dateline) AS 'lastStart' - FROM ".self::getBoundedTableQueryString('~offline-length', $lowerTimeBound, $upperTimeBound, $queryTime)." offlineTable + FROM ".self::getBoundedTableQueryString('~offline-length', $lowerTimeBound, $upperTimeBound, $cutOff)." offlineTable INNER JOIN machine ON offlineTable.machineuuid = machine.machineuuid GROUP BY machine.machineuuid ) t2 @@ -23,19 +22,17 @@ class StatisticReporting } // IFNULL(location.locationname, '') - emptry string can be replaced with anything (name of the null-ids in the table) - public static function getLocationStatistics($cutOffTimeInSeconds, $lowerTimeBound = 0, $upperTimeBound = 24) { - $queryTime = time() - $cutOffTimeInSeconds; - + public static function getLocationStatistics($cutOff, $lowerTimeBound = 0, $upperTimeBound = 24) { $res = Database::simpleQuery("SELECT t1.locName, timeSum, medianTime, offlineSum, longSessions, shortSessions FROM ( SELECT IFNULL(location.locationname, '') AS 'locName', SUM(CAST(sessionTable.length AS UNSIGNED)) AS 'timeSum', GROUP_CONCAT(sessionTable.length) AS 'medianTime', SUM(sessionTable.length >= 60) AS 'longSessions', SUM(sessionTable.length < 60) AS 'shortSessions' - FROM ".self::getBoundedTableQueryString('~session-length', $lowerTimeBound, $upperTimeBound, $queryTime)." sessionTable + FROM ".self::getBoundedTableQueryString('~session-length', $lowerTimeBound, $upperTimeBound, $cutOff)." sessionTable INNER JOIN machine ON sessionTable.machineuuid = machine.machineuuid LEFT JOIN location ON machine.locationid = location.locationid GROUP BY location.locationname ) t1 INNER JOIN ( SELECT IFNULL(location.locationname, '') AS 'locName', SUM(CAST(offlineTable.length AS UNSIGNED)) AS 'offlineSum' - FROM ".self::getBoundedTableQueryString('~offline-length', $lowerTimeBound, $upperTimeBound, $queryTime)." offlineTable + FROM ".self::getBoundedTableQueryString('~offline-length', $lowerTimeBound, $upperTimeBound, $cutOff)." offlineTable INNER JOIN machine ON offlineTable.machineuuid = machine.machineuuid LEFT JOIN location ON machine.locationid = location.locationid GROUP BY location.locationname @@ -45,35 +42,31 @@ class StatisticReporting } // logins between bounds - public static function getUserStatistics($cutOffTimeInSeconds, $lowerTimeBound = 0, $upperTimeBound = 24) { - $queryTime = time() - $cutOffTimeInSeconds; + public static function getUserStatistics($cutOff, $lowerTimeBound = 0, $upperTimeBound = 24) { $res = Database::simpleQuery("SELECT username, COUNT(*) AS 'count' FROM statistic - WHERE typeid='.vmchooser-session-name' AND dateline>=$queryTime + WHERE typeid='.vmchooser-session-name' AND dateline+data >= UNIX_TIMESTAMP(CURDATE() - INTERVAL $cutOff DAY) AND ((FROM_UNIXTIME(dateline+data, '%H')*1 >= $lowerTimeBound) AND (FROM_UNIXTIME(dateline, '%H')*1 < $upperTimeBound)) GROUP BY username ORDER BY 2 DESC"); return $res; } // vm logins between bounds - public static function getVMStatistics($cutOffTimeInSeconds, $lowerTimeBound = 0, $upperTimeBound = 24) { - $queryTime = time() - $cutOffTimeInSeconds; - $res = Database::simpleQuery("SELECT data, COUNT(*) AS 'count' FROM statistic WHERE typeid='.vmchooser-session-name' AND dateline>=$queryTime + public static function getVMStatistics($cutOff, $lowerTimeBound = 0, $upperTimeBound = 24) { + $res = Database::simpleQuery("SELECT data, COUNT(*) AS 'count' FROM statistic WHERE typeid='.vmchooser-session-name' AND dateline+data >= UNIX_TIMESTAMP(CURDATE() - INTERVAL $cutOff DAY) AND ((FROM_UNIXTIME(dateline+data, '%H')*1 >= $lowerTimeBound) AND (FROM_UNIXTIME(dateline, '%H')*1 < $upperTimeBound)) GROUP BY data ORDER BY 2 DESC"); return $res; } - public static function getOverallStatistics ($cutOffTimeInSeconds, $lowerTimeBound = 0, $upperTimeBound = 24) { - $queryTime = time() - $cutOffTimeInSeconds; + public static function getOverallStatistics ($cutOff, $lowerTimeBound = 0, $upperTimeBound = 24) { $res = Database::simpleQuery("SELECT SUM(CAST(sessionTable.length AS UNSIGNED)) AS sum, GROUP_CONCAT(sessionTable.length) AS median, SUM(sessionTable.length >= 60) AS longSessions, SUM(sessionTable.length < 60) AS shortSessions - FROM ".self::getBoundedTableQueryString('~session-length', $lowerTimeBound, $upperTimeBound, $queryTime)." sessionTable"); + FROM ".self::getBoundedTableQueryString('~session-length', $lowerTimeBound, $upperTimeBound, $cutOff)." sessionTable"); return $res; } - public static function getTotalOfflineStatistics($cutOffTimeInSeconds, $lowerTimeBound = 0, $upperTimeBound = 24) { - $queryTime = time() - $cutOffTimeInSeconds; + public static function getTotalOfflineStatistics($cutOff, $lowerTimeBound = 0, $upperTimeBound = 24) { $res = Database::simpleQuery("SELECT SUM(CAST(offlineTable.length AS UNSIGNED)) - FROM ".self::getBoundedTableQueryString('~offline-length', $lowerTimeBound, $upperTimeBound, $queryTime)." offlineTable"); + FROM ".self::getBoundedTableQueryString('~offline-length', $lowerTimeBound, $upperTimeBound, $cutOff)." offlineTable"); return $res; } @@ -97,13 +90,13 @@ class StatisticReporting return round($median); } - private static function getBoundedTableQueryString($typeid, $lowerTimeBound, $upperTimeBound, $cutoffTime) + private static function getBoundedTableQueryString($typeid, $lowerTimeBound, $upperTimeBound, $cutOff) { $lowerFormat = "'%y-%m-%d $lowerTimeBound:00:00'"; $upperFormat = "'%y-%m-%d ".($upperTimeBound-1).":59:59'"; $queryString = " select - + @startLower := UNIX_TIMESTAMP(FROM_UNIXTIME(dateline, $lowerFormat)), @startUpper := UNIX_TIMESTAMP(FROM_UNIXTIME(dateline, $upperFormat)), @endLower := UNIX_TIMESTAMP(FROM_UNIXTIME(dateline+data, $lowerFormat)), @@ -157,7 +150,7 @@ class StatisticReporting machineuuid from statistic - where dateline >= $cutoffTime and typeid = '$typeid' and ( + where dateline+data >= UNIX_TIMESTAMP(CURDATE() - INTERVAL $cutOff DAY) and typeid = '$typeid' and ( (UNIX_TIMESTAMP(FROM_UNIXTIME(dateline, $lowerFormat)) <= dateline and dateline <= UNIX_TIMESTAMP(FROM_UNIXTIME(dateline, $upperFormat))) or (UNIX_TIMESTAMP(FROM_UNIXTIME(dateline+data, $lowerFormat)) <= dateline+data and dateline+data <= UNIX_TIMESTAMP(FROM_UNIXTIME(dateline+data, $upperFormat))) ) diff --git a/modules-available/statistics_reporting/lang/de/template-tags.json b/modules-available/statistics_reporting/lang/de/template-tags.json index 68b68250..207949a9 100644 --- a/modules-available/statistics_reporting/lang/de/template-tags.json +++ b/modules-available/statistics_reporting/lang/de/template-tags.json @@ -20,8 +20,8 @@ "lang_location": "Raum", "lang_medianSessionLength": "Mittlere Sitzungsdauer", "lang_totalTime": "Gesamte Zeit", - "lang_last1": "Letzten 24 Stunden", - "lang_last2": "Letzten 48 Stunden", + "lang_last1": "Heute", + "lang_last2": "Letzten 2 Tage", "lang_last7": "Letzten 7 Tage", "lang_last14": "Letzten 14 Tage", "lang_last30": "Letzten 30 Tage", diff --git a/modules-available/statistics_reporting/lang/en/template-tags.json b/modules-available/statistics_reporting/lang/en/template-tags.json index b9e0c61d..e9430960 100644 --- a/modules-available/statistics_reporting/lang/en/template-tags.json +++ b/modules-available/statistics_reporting/lang/en/template-tags.json @@ -20,8 +20,8 @@ "lang_location": "Location", "lang_medianSessionLength": "Median Session Length", "lang_totalTime": "Total Time", - "lang_last1": "Last 24 hours", - "lang_last2": "Last 48 hours", + "lang_last1": "Today", + "lang_last2": "Last 2 days", "lang_last7": "Last 7 days", "lang_last14": "Last 14 days", "lang_last30": "Last 30 days", diff --git a/modules-available/statistics_reporting/page.inc.php b/modules-available/statistics_reporting/page.inc.php index f0f56e87..a55ba33f 100644 --- a/modules-available/statistics_reporting/page.inc.php +++ b/modules-available/statistics_reporting/page.inc.php @@ -24,8 +24,7 @@ class Page_Statistics_Reporting extends Page { // timespan you want to see = Days selected * seconds per Day (86400) // default = 14 days - $cutOff = Request::get('cutoff', 14, 'int'); - $cutOffTimer = $cutOff * 86400; + $cutOff = Request::get('cutoff', 14, 'int') - 1; $lowerTimeBound = Request::get('lower', 0, 'int'); @@ -33,17 +32,17 @@ class Page_Statistics_Reporting extends Page // total time online, average time online, total number of logins - $res = StatisticReporting::getOverallStatistics($cutOffTimer, $lowerTimeBound, $upperTimeBound); + $res = StatisticReporting::getOverallStatistics($cutOff, $lowerTimeBound, $upperTimeBound); $row = $res->fetch(PDO::FETCH_NUM); $data = array('time' => StatisticReporting::formatSeconds($row[0]), 'medianTime' => StatisticReporting::formatSeconds(StatisticReporting::calcMedian($row[1])), 'sessions' => $row[2], 'shortSessions' => $row[3]); //total time offline - $res = StatisticReporting::getTotalOfflineStatistics($cutOffTimer, $lowerTimeBound, $upperTimeBound); + $res = StatisticReporting::getTotalOfflineStatistics($cutOff, $lowerTimeBound, $upperTimeBound); $row = $res->fetch(PDO::FETCH_NUM); $data = array_merge($data, array('totalOfftime' => StatisticReporting::formatSeconds($row[0]))); // per location - $res = StatisticReporting::getLocationStatistics($cutOffTimer, $lowerTimeBound, $upperTimeBound); + $res = StatisticReporting::getLocationStatistics($cutOff, $lowerTimeBound, $upperTimeBound); $data[] = array('perLocation' => array()); while ($row = $res->fetch(PDO::FETCH_NUM)) { $median = StatisticReporting::calcMedian(StatisticReporting::calcMedian($row[2])); @@ -52,7 +51,7 @@ class Page_Statistics_Reporting extends Page } // per client - $res = StatisticReporting::getClientStatistics($cutOffTimer, $lowerTimeBound, $upperTimeBound); + $res = StatisticReporting::getClientStatistics($cutOff, $lowerTimeBound, $upperTimeBound); $data[] = array('perClient' => array()); while ($row = $res->fetch(PDO::FETCH_NUM)) { $median = StatisticReporting::calcMedian(StatisticReporting::calcMedian($row[2])); @@ -62,14 +61,14 @@ class Page_Statistics_Reporting extends Page } // per user - $res = StatisticReporting::getUserStatistics($cutOffTimer, $lowerTimeBound, $upperTimeBound); + $res = StatisticReporting::getUserStatistics($cutOff, $lowerTimeBound, $upperTimeBound); $data[] = array('perUser' => array()); while ($row = $res->fetch(PDO::FETCH_NUM)) { $data['perUser'][] = array('user' => $row[0], 'sessions' => $row[1]); } // per vm - $res = StatisticReporting::getVMStatistics($cutOffTimer, $lowerTimeBound, $upperTimeBound); + $res = StatisticReporting::getVMStatistics($cutOff, $lowerTimeBound, $upperTimeBound); $data[] = array('perVM' => array()); while ($row = $res->fetch(PDO::FETCH_NUM)) { $data['perVM'][] = array('vm' => $row[0], 'sessions' => $row[1]); -- cgit v1.2.3-55-g7522 From 8c9c28df0401f0bc89ab1cfc05332e6e1727d0d3 Mon Sep 17 00:00:00 2001 From: Udo Walter Date: Fri, 23 Dec 2016 17:24:05 +0100 Subject: [statistics_reporting] added location column in client table --- .../statistics_reporting/inc/statisticreporting.inc.php | 8 +++++--- .../statistics_reporting/lang/de/template-tags.json | 3 ++- .../statistics_reporting/lang/en/template-tags.json | 3 ++- modules-available/statistics_reporting/templates/_page.html | 4 +++- .../statistics_reporting/templates/columnChooser.html | 12 ++++++++++++ 5 files changed, 24 insertions(+), 6 deletions(-) (limited to 'modules-available/statistics_reporting/lang/de/template-tags.json') diff --git a/modules-available/statistics_reporting/inc/statisticreporting.inc.php b/modules-available/statistics_reporting/inc/statisticreporting.inc.php index 9941b078..b75c6eaa 100644 --- a/modules-available/statistics_reporting/inc/statisticreporting.inc.php +++ b/modules-available/statistics_reporting/inc/statisticreporting.inc.php @@ -5,8 +5,9 @@ class StatisticReporting { public static function getClientStatistics($cutOff, $lowerTimeBound = 0, $upperTimeBound = 24) { + $notassigned = Dictionary::translateFile('template-tags', 'lang_notassigned'); $res = Database::simpleQuery("SELECT t1.name, timeSum, medianTime, offlineSum, longSessions, lastLogout, lastStart, shortSessions, locName FROM ( - SELECT machine.hostname AS 'name', machine.machineuuid AS 'uuid', SUM(CAST(sessionTable.length AS UNSIGNED)) AS 'timeSum', GROUP_CONCAT(sessionTable.length) AS 'medianTime', SUM(sessionTable.length >= 60) AS 'longSessions', SUM(sessionTable.length < 60) AS 'shortSessions',MAX(sessionTable.dateline + sessionTable.data) AS 'lastLogout', IFNULL(location.locationname, 'NOT ASSIGNED') AS 'locName' + SELECT machine.hostname AS 'name', machine.machineuuid AS 'uuid', SUM(CAST(sessionTable.length AS UNSIGNED)) AS 'timeSum', GROUP_CONCAT(sessionTable.length) AS 'medianTime', SUM(sessionTable.length >= 60) AS 'longSessions', SUM(sessionTable.length < 60) AS 'shortSessions',MAX(sessionTable.dateline + sessionTable.data) AS 'lastLogout', IFNULL(location.locationname, '$notassigned') AS 'locName' FROM ".self::getBoundedTableQueryString('~session-length', $lowerTimeBound, $upperTimeBound, $cutOff)." sessionTable INNER JOIN machine ON sessionTable.machineuuid = machine.machineuuid LEFT JOIN location ON machine.locationid = location.locationid @@ -24,15 +25,16 @@ class StatisticReporting // IFNULL(location.locationname, 'NOT ASSIGNED') - NOT ASSIGNED string can be replaced with anything (name of the null-ids in the table) public static function getLocationStatistics($cutOff, $lowerTimeBound = 0, $upperTimeBound = 24) { + $notassigned = Dictionary::translateFile('template-tags', 'lang_notassigned'); $res = Database::simpleQuery("SELECT t1.locName, timeSum, medianTime, offlineSum, longSessions, shortSessions FROM ( - SELECT IFNULL(location.locationname, 'NOT ASSIGNED') AS 'locName', SUM(CAST(sessionTable.length AS UNSIGNED)) AS 'timeSum', GROUP_CONCAT(sessionTable.length) AS 'medianTime', SUM(sessionTable.length >= 60) AS 'longSessions', SUM(sessionTable.length < 60) AS 'shortSessions' + SELECT IFNULL(location.locationname, '$notassigned') AS 'locName', SUM(CAST(sessionTable.length AS UNSIGNED)) AS 'timeSum', GROUP_CONCAT(sessionTable.length) AS 'medianTime', SUM(sessionTable.length >= 60) AS 'longSessions', SUM(sessionTable.length < 60) AS 'shortSessions' FROM ".self::getBoundedTableQueryString('~session-length', $lowerTimeBound, $upperTimeBound, $cutOff)." sessionTable INNER JOIN machine ON sessionTable.machineuuid = machine.machineuuid LEFT JOIN location ON machine.locationid = location.locationid GROUP BY location.locationname ) t1 INNER JOIN ( - SELECT IFNULL(location.locationname, 'NOT ASSIGNED') AS 'locName', SUM(CAST(offlineTable.length AS UNSIGNED)) AS 'offlineSum' + SELECT IFNULL(location.locationname, '$notassigned') AS 'locName', SUM(CAST(offlineTable.length AS UNSIGNED)) AS 'offlineSum' FROM ".self::getBoundedTableQueryString('~offline-length', $lowerTimeBound, $upperTimeBound, $cutOff)." offlineTable INNER JOIN machine ON offlineTable.machineuuid = machine.machineuuid LEFT JOIN location ON machine.locationid = location.locationid diff --git a/modules-available/statistics_reporting/lang/de/template-tags.json b/modules-available/statistics_reporting/lang/de/template-tags.json index 207949a9..841e87bd 100644 --- a/modules-available/statistics_reporting/lang/de/template-tags.json +++ b/modules-available/statistics_reporting/lang/de/template-tags.json @@ -26,5 +26,6 @@ "lang_last14": "Letzten 14 Tage", "lang_last30": "Letzten 30 Tage", "lang_last90": "Letzten 90 Tage", - "lang_apply": "Anwenden" + "lang_apply": "Anwenden", + "lang_notassigned": "NICHT ZUGEWIESEN" } \ No newline at end of file diff --git a/modules-available/statistics_reporting/lang/en/template-tags.json b/modules-available/statistics_reporting/lang/en/template-tags.json index e9430960..73b3c2fc 100644 --- a/modules-available/statistics_reporting/lang/en/template-tags.json +++ b/modules-available/statistics_reporting/lang/en/template-tags.json @@ -26,5 +26,6 @@ "lang_last14": "Last 14 days", "lang_last30": "Last 30 days", "lang_last90": "Last 90 days", - "lang_apply": "Apply" + "lang_apply": "Apply", + "lang_notassigned": "NOT ASSIGNED" } \ No newline at end of file diff --git a/modules-available/statistics_reporting/templates/_page.html b/modules-available/statistics_reporting/templates/_page.html index d2aaecde..fbdde6d5 100644 --- a/modules-available/statistics_reporting/templates/_page.html +++ b/modules-available/statistics_reporting/templates/_page.html @@ -41,7 +41,7 @@ {{#perLocation}} - {{location}} + {{location}} {{time}} {{medianTime}} {{sessions}} @@ -59,6 +59,7 @@ {{lang_hostname}} + {{lang_location}} {{lang_totalTime}} {{lang_medianSessionLength}} {{lang_sessions}} @@ -72,6 +73,7 @@ {{#perClient}} {{hostname}} + {{locationName}} {{time}} {{medianTime}} {{sessions}} diff --git a/modules-available/statistics_reporting/templates/columnChooser.html b/modules-available/statistics_reporting/templates/columnChooser.html index 49c9a75d..06cd6770 100644 --- a/modules-available/statistics_reporting/templates/columnChooser.html +++ b/modules-available/statistics_reporting/templates/columnChooser.html @@ -24,6 +24,7 @@
+ @@ -69,9 +70,20 @@ var arrow = data.direction === dir.ASC ? "down" : "up"; th.eq(data.column).append(' '); }); + + $(".locationLink").click(function(e) { + e.preventDefault(); + $('#select-table').val('perlocation'); + chooseTable('perlocation'); + var target = $(".locationName:contains('"+$(this).text()+"'):first"); + $(window).scrollTop(target.offset().top - $(window).height()/2); + target.parent().css( "background-color", "#f8ff99" ); + return false; + }); }); function chooseTable(v) { + $("tr").removeAttr('style'); $("[id^=table-]").hide(); $('#table-'+v).show(); $("[id^=button-]").hide(); -- cgit v1.2.3-55-g7522 From 3234034aa5f8c886b45b0905a9072aed942c383b Mon Sep 17 00:00:00 2001 From: Udo Walter Date: Thu, 29 Dec 2016 15:11:23 +0100 Subject: [statistics_reporting] small label changes --- modules-available/statistics_reporting/lang/de/template-tags.json | 3 ++- modules-available/statistics_reporting/lang/en/template-tags.json | 3 ++- modules-available/statistics_reporting/templates/_page.html | 6 +++--- modules-available/statistics_reporting/templates/columnChooser.html | 1 + 4 files changed, 8 insertions(+), 5 deletions(-) (limited to 'modules-available/statistics_reporting/lang/de/template-tags.json') diff --git a/modules-available/statistics_reporting/lang/de/template-tags.json b/modules-available/statistics_reporting/lang/de/template-tags.json index 841e87bd..7dcec880 100644 --- a/modules-available/statistics_reporting/lang/de/template-tags.json +++ b/modules-available/statistics_reporting/lang/de/template-tags.json @@ -3,7 +3,8 @@ "lang_countLogins": "Anzahl Logins", "lang_client": "Client", "lang_vm": "VM", - "lang_sessions": "Sitzungen \u2265 60s", + "lang_sessions": "Sitzungen", + "lang_longSessions": "Sitzungen \u2265 60s", "lang_shortSessions": "Sitzungen < 60s", "lang_overallOfftime": "Insgesamte Zeit Offline", "lang_totalOffTime": "Gesamtzeit Offline", diff --git a/modules-available/statistics_reporting/lang/en/template-tags.json b/modules-available/statistics_reporting/lang/en/template-tags.json index 73b3c2fc..366a10de 100644 --- a/modules-available/statistics_reporting/lang/en/template-tags.json +++ b/modules-available/statistics_reporting/lang/en/template-tags.json @@ -3,7 +3,8 @@ "lang_countLogins": "Number of Logins", "lang_client": "Client", "lang_vm": "VM", - "lang_sessions": "Sessions \u2265 60s", + "lang_sessions": "Sessions", + "lang_longSessions": "Sessions \u2265 60s", "lang_shortSessions": "Sessions < 60s", "lang_overallOfftime": "Overall time offline", "lang_totalOffTime": "Total Time Offline", diff --git a/modules-available/statistics_reporting/templates/_page.html b/modules-available/statistics_reporting/templates/_page.html index fbdde6d5..649ef2d3 100644 --- a/modules-available/statistics_reporting/templates/_page.html +++ b/modules-available/statistics_reporting/templates/_page.html @@ -7,7 +7,7 @@ {{lang_totalTime}} {{lang_medianSessionLength}} - {{lang_sessions}} + {{lang_longSessions}} {{lang_shortSessions}} {{lang_overallOfftime}} @@ -33,7 +33,7 @@ {{lang_location}} {{lang_totalTime}} {{lang_medianSessionLength}} - {{lang_sessions}} + {{lang_longSessions}} {{lang_shortSessions}} {{lang_totalOffTime}} @@ -62,7 +62,7 @@ {{lang_location}} {{lang_totalTime}} {{lang_medianSessionLength}} - {{lang_sessions}} + {{lang_longSessions}} {{lang_shortSessions}} {{lang_totalOffTime}} {{lang_clientLogout}} diff --git a/modules-available/statistics_reporting/templates/columnChooser.html b/modules-available/statistics_reporting/templates/columnChooser.html index 06cd6770..09551fc1 100644 --- a/modules-available/statistics_reporting/templates/columnChooser.html +++ b/modules-available/statistics_reporting/templates/columnChooser.html @@ -28,6 +28,7 @@ + -- cgit v1.2.3-55-g7522 From 9cd078d34d5f3172e8e770fce3c3ec7d6445a460 Mon Sep 17 00:00:00 2001 From: Udo Walter Date: Mon, 16 Jan 2017 18:59:46 +0100 Subject: [statistics_reporting] added ui to disable the reporting --- .../lang/de/template-tags.json | 4 +- .../lang/en/template-tags.json | 4 +- .../statistics_reporting/page.inc.php | 45 ++++++++++++++------- modules-available/statistics_reporting/style.css | 4 ++ .../templates/columnChooser.html | 46 +++++++++++++++++++++- 5 files changed, 85 insertions(+), 18 deletions(-) (limited to 'modules-available/statistics_reporting/lang/de/template-tags.json') diff --git a/modules-available/statistics_reporting/lang/de/template-tags.json b/modules-available/statistics_reporting/lang/de/template-tags.json index 7dcec880..73c39e1e 100644 --- a/modules-available/statistics_reporting/lang/de/template-tags.json +++ b/modules-available/statistics_reporting/lang/de/template-tags.json @@ -28,5 +28,7 @@ "lang_last30": "Letzten 30 Tage", "lang_last90": "Letzten 90 Tage", "lang_apply": "Anwenden", - "lang_notassigned": "NICHT ZUGEWIESEN" + "lang_save": "Speichern", + "lang_notassigned": "NICHT ZUGEWIESEN", + "lang_reportingDescription": "Helfen Sie uns bwLehrpool, durch das wöchentliche, automatische Verschicken eines anonymisierten Statistikberichts, zu verbessern." } \ No newline at end of file diff --git a/modules-available/statistics_reporting/lang/en/template-tags.json b/modules-available/statistics_reporting/lang/en/template-tags.json index 366a10de..90d59b38 100644 --- a/modules-available/statistics_reporting/lang/en/template-tags.json +++ b/modules-available/statistics_reporting/lang/en/template-tags.json @@ -28,5 +28,7 @@ "lang_last30": "Last 30 days", "lang_last90": "Last 90 days", "lang_apply": "Apply", - "lang_notassigned": "NOT ASSIGNED" + "lang_save": "Save", + "lang_notassigned": "NOT ASSIGNED", + "lang_reportingDescription": "Help us improve bwLehrpool by automatically sending an anonymized statistics report once per week." } \ No newline at end of file diff --git a/modules-available/statistics_reporting/page.inc.php b/modules-available/statistics_reporting/page.inc.php index 941bf12f..1428848a 100644 --- a/modules-available/statistics_reporting/page.inc.php +++ b/modules-available/statistics_reporting/page.inc.php @@ -4,6 +4,8 @@ class Page_Statistics_Reporting extends Page { + private $action = false; + /** * Called before any page rendering happens - early hook to check parameters etc. */ @@ -15,6 +17,8 @@ class Page_Statistics_Reporting extends Page Message::addError('main.no-permission'); Util::redirect('?do=Main'); // does not return } + + $this->action = Request::any('action', 'show', 'string'); } /** @@ -22,20 +26,31 @@ class Page_Statistics_Reporting extends Page */ protected function doRender() { - // timespan you want to see = Days selected * seconds per Day (86400) - // default = 14 days - GetData::$from = strtotime("- ".(Request::get('cutoff', 14, 'int') - 1)." days 00:00:00"); - GetData::$to = time(); - GetData::$lowerTimeBound = Request::get('lower', 0, 'int'); - GetData::$upperTimeBound = Request::get('upper', 24, 'int'); - - $data = array_merge(GetData::total(), array('perLocation' => array(), 'perClient' => array(), 'perUser' => array(), 'perVM' => array())); - $data['perLocation'] = GetData::perLocation(); - $data['perClient'] = GetData::perClient(); - $data['perUser'] = GetData::perUser(); - $data['perVM'] = GetData::perVM(); - - Render::addTemplate('columnChooser'); - Render::addTemplate('_page', $data); + if ($this->action === 'show') { + // timespan you want to see. default = last 7 days + GetData::$from = strtotime("- " . (Request::get('cutoff', 14, 'int') - 1) . " days 00:00:00"); + GetData::$to = time(); + GetData::$lowerTimeBound = Request::get('lower', 0, 'int'); + GetData::$upperTimeBound = Request::get('upper', 24, 'int'); + + $data = array_merge(GetData::total(), array('perLocation' => array(), 'perClient' => array(), 'perUser' => array(), 'perVM' => array())); + $data['perLocation'] = GetData::perLocation(); + $data['perClient'] = GetData::perClient(); + $data['perUser'] = GetData::perUser(); + $data['perVM'] = GetData::perVM(); + + Render::addTemplate('columnChooser'); + Render::addTemplate('_page', $data); + } + } + + protected function doAjax() + { + $this->action = Request::any('action', false, 'string'); + if ($this->action === 'setReporting') { + Property::set("reportingStatus", Request::get('reporting', "on", 'string')); + } elseif ($this->action === 'getReporting') { + echo Property::get("reportingStatus", "on"); + } } } diff --git a/modules-available/statistics_reporting/style.css b/modules-available/statistics_reporting/style.css index d7fa7a2f..4f314b14 100644 --- a/modules-available/statistics_reporting/style.css +++ b/modules-available/statistics_reporting/style.css @@ -7,6 +7,10 @@ margin-bottom: 10px; } +.top-row #button-settings { + margin-right: 0; +} + .buttonbar button { margin-bottom: 4px; } diff --git a/modules-available/statistics_reporting/templates/columnChooser.html b/modules-available/statistics_reporting/templates/columnChooser.html index 09551fc1..47fef2a5 100644 --- a/modules-available/statistics_reporting/templates/columnChooser.html +++ b/modules-available/statistics_reporting/templates/columnChooser.html @@ -22,6 +22,7 @@
+
@@ -37,6 +38,30 @@
+ + + \ No newline at end of file -- cgit v1.2.3-55-g7522 From 2963be53876e57c0d403ffe5dfa978d7736a0c4b Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 19 Jan 2017 13:18:40 +0100 Subject: [statistics_reporting] i18n: Move tags used in code to separate file, delete unused tags --- .../statistics_reporting/inc/queries.inc.php | 4 +- .../statistics_reporting/lang/de/module.json | 1 + .../lang/de/template-tags.json | 44 ++++++++++------------ .../statistics_reporting/lang/en/module.json | 1 + .../lang/en/template-tags.json | 44 ++++++++++------------ 5 files changed, 42 insertions(+), 52 deletions(-) (limited to 'modules-available/statistics_reporting/lang/de/template-tags.json') diff --git a/modules-available/statistics_reporting/inc/queries.inc.php b/modules-available/statistics_reporting/inc/queries.inc.php index 77deb4f8..2b2ebb13 100644 --- a/modules-available/statistics_reporting/inc/queries.inc.php +++ b/modules-available/statistics_reporting/inc/queries.inc.php @@ -6,7 +6,7 @@ class Queries // Client Data: Name, Time Online, Median Time Online, Time Offline, last start, last logout, Last Time Booted, Number of Sessions > 60Sec, Number of Sessions < 60Sec, name of location, id of location (anonymized), machine uuid (anonymized) public static function getClientStatistics($from, $to, $lowerTimeBound = 0, $upperTimeBound = 24, $excludeToday = false) { - $notassigned = Dictionary::translateFile('template-tags', 'lang_notassigned'); + $notassigned = Dictionary::translate('notAssigned', true); $res = Database::simpleQuery("SELECT t1.name AS clientName, timeSum, medianTime, offlineSum, lastStart, lastLogout, longSessions, shortSessions, locName, MD5(CONCAT(locId, :salt)) AS locHash, MD5(CONCAT(t1.uuid, :salt)) AS clientHash FROM ( SELECT machine.hostname AS 'name', machine.machineuuid AS 'uuid', SUM(CAST(sessionTable.length AS UNSIGNED)) AS 'timeSum', GROUP_CONCAT(sessionTable.length) AS 'medianTime', SUM(sessionTable.length >= 60) AS 'longSessions', SUM(sessionTable.length < 60) AS 'shortSessions',MAX(sessionTable.dateline + sessionTable.data) AS 'lastLogout', IFNULL(location.locationname, '$notassigned') AS 'locName', location.locationid AS 'locId' FROM ".self::getBoundedTableQueryString('~session-length', $from, $to, $lowerTimeBound, $upperTimeBound)." sessionTable @@ -27,7 +27,7 @@ class Queries // Location Data: Name, ID (anonymized), Time Online, Median Time Online, Time Offline, Number of Sessions > 60Sec, Number of Sessions < 60Sec public static function getLocationStatistics($from, $to, $lowerTimeBound = 0, $upperTimeBound = 24, $excludeToday = false) { - $notassigned = Dictionary::translateFile('template-tags', 'lang_notassigned'); + $notassigned = Dictionary::translate('notAssigned', true); $res = Database::simpleQuery("SELECT t1.locName AS locName, MD5(CONCAT(locId, :salt)) AS locHash, timeSum, medianTime, offlineSum, longSessions, shortSessions FROM ( SELECT IFNULL(location.locationname, '$notassigned') AS 'locName', location.locationid AS 'locId', SUM(CAST(sessionTable.length AS UNSIGNED)) AS 'timeSum', GROUP_CONCAT(sessionTable.length) AS 'medianTime', SUM(sessionTable.length >= 60) AS 'longSessions', SUM(sessionTable.length < 60) AS 'shortSessions' FROM ".self::getBoundedTableQueryString('~session-length', $from, $to, $lowerTimeBound, $upperTimeBound)." sessionTable diff --git a/modules-available/statistics_reporting/lang/de/module.json b/modules-available/statistics_reporting/lang/de/module.json index bdbfe4fd..86ed5f45 100644 --- a/modules-available/statistics_reporting/lang/de/module.json +++ b/modules-available/statistics_reporting/lang/de/module.json @@ -1,4 +1,5 @@ { "module_name": "Statistik Auswertung", + "notAssigned": "Nicht zugewiesen", "page_title": "Statistik Auswertung" } \ No newline at end of file diff --git a/modules-available/statistics_reporting/lang/de/template-tags.json b/modules-available/statistics_reporting/lang/de/template-tags.json index 73c39e1e..d4d7887a 100644 --- a/modules-available/statistics_reporting/lang/de/template-tags.json +++ b/modules-available/statistics_reporting/lang/de/template-tags.json @@ -1,34 +1,28 @@ { - "lang_user": "Nutzer", - "lang_countLogins": "Anzahl Logins", - "lang_client": "Client", - "lang_vm": "VM", - "lang_sessions": "Sitzungen", - "lang_longSessions": "Sitzungen \u2265 60s", - "lang_shortSessions": "Sitzungen < 60s", - "lang_overallOfftime": "Insgesamte Zeit Offline", - "lang_totalOffTime": "Gesamtzeit Offline", + "lang_apply": "Anwenden", "lang_clientLogout": "Letzter VM Logout", "lang_clientStart": "Letzter Client Boot", - "lang_room": "Raum", - "lang_offTime": "Zeit seit Logout", - "lang_total": "Gesamt", - "lang_perlocation": "Pro Raum", - "lang_perclient": "Pro Client", - "lang_peruser": "Pro Benutzer", - "lang_pervm": "Pro VM", "lang_hostname": "Client Name", - "lang_location": "Raum", - "lang_medianSessionLength": "Mittlere Sitzungsdauer", - "lang_totalTime": "Gesamte Zeit", "lang_last1": "Heute", - "lang_last2": "Letzten 2 Tage", - "lang_last7": "Letzten 7 Tage", "lang_last14": "Letzten 14 Tage", + "lang_last2": "Letzten 2 Tage", "lang_last30": "Letzten 30 Tage", + "lang_last7": "Letzten 7 Tage", "lang_last90": "Letzten 90 Tage", - "lang_apply": "Anwenden", - "lang_save": "Speichern", - "lang_notassigned": "NICHT ZUGEWIESEN", - "lang_reportingDescription": "Helfen Sie uns bwLehrpool, durch das wöchentliche, automatische Verschicken eines anonymisierten Statistikberichts, zu verbessern." + "lang_location": "Raum", + "lang_longSessions": "Sitzungen \u2265 60s", + "lang_medianSessionLength": "Mittlere Sitzungsdauer", + "lang_overallOfftime": "Insgesamte Zeit Offline", + "lang_perclient": "Pro Client", + "lang_perlocation": "Pro Raum", + "lang_peruser": "Pro Benutzer", + "lang_pervm": "Pro VM", + "lang_reportingDescription": "Helfen Sie uns bwLehrpool, durch das w\u00f6chentliche, automatische Verschicken eines anonymisierten Statistikberichts, zu verbessern.", + "lang_sessions": "Sitzungen", + "lang_shortSessions": "Sitzungen < 60s", + "lang_total": "Gesamt", + "lang_totalOffTime": "Gesamtzeit Offline", + "lang_totalTime": "Gesamte Zeit", + "lang_user": "Nutzer", + "lang_vm": "VM" } \ No newline at end of file diff --git a/modules-available/statistics_reporting/lang/en/module.json b/modules-available/statistics_reporting/lang/en/module.json index 6b3f98f6..5362fee2 100644 --- a/modules-available/statistics_reporting/lang/en/module.json +++ b/modules-available/statistics_reporting/lang/en/module.json @@ -1,4 +1,5 @@ { "module_name": "Statistics Reporting", + "notAssigned": "Not assigned", "page_title": "Statistics Reporting" } \ No newline at end of file diff --git a/modules-available/statistics_reporting/lang/en/template-tags.json b/modules-available/statistics_reporting/lang/en/template-tags.json index 90d59b38..0047c7a4 100644 --- a/modules-available/statistics_reporting/lang/en/template-tags.json +++ b/modules-available/statistics_reporting/lang/en/template-tags.json @@ -1,34 +1,28 @@ { - "lang_user": "User", - "lang_countLogins": "Number of Logins", - "lang_client": "Client", - "lang_vm": "VM", - "lang_sessions": "Sessions", - "lang_longSessions": "Sessions \u2265 60s", - "lang_shortSessions": "Sessions < 60s", - "lang_overallOfftime": "Overall time offline", - "lang_totalOffTime": "Total Time Offline", + "lang_apply": "Apply", "lang_clientLogout": "Last VM Logout", "lang_clientStart": "Last Client Boot", - "lang_room": "Room", - "lang_offTime": "Time since offline", - "lang_total": "Total", - "lang_perlocation": "Per Location", - "lang_perclient": "Per Client", - "lang_peruser": "Per User", - "lang_pervm": "Per VM", "lang_hostname": "Client Name", - "lang_location": "Location", - "lang_medianSessionLength": "Median Session Length", - "lang_totalTime": "Total Time", "lang_last1": "Today", - "lang_last2": "Last 2 days", - "lang_last7": "Last 7 days", "lang_last14": "Last 14 days", + "lang_last2": "Last 2 days", "lang_last30": "Last 30 days", + "lang_last7": "Last 7 days", "lang_last90": "Last 90 days", - "lang_apply": "Apply", - "lang_save": "Save", - "lang_notassigned": "NOT ASSIGNED", - "lang_reportingDescription": "Help us improve bwLehrpool by automatically sending an anonymized statistics report once per week." + "lang_location": "Location", + "lang_longSessions": "Sessions \u2265 60s", + "lang_medianSessionLength": "Median Session Length", + "lang_overallOfftime": "Overall time offline", + "lang_perclient": "Per Client", + "lang_perlocation": "Per Location", + "lang_peruser": "Per User", + "lang_pervm": "Per VM", + "lang_reportingDescription": "Help us improve bwLehrpool by automatically sending an anonymized statistics report once per week.", + "lang_sessions": "Sessions", + "lang_shortSessions": "Sessions < 60s", + "lang_total": "Total", + "lang_totalOffTime": "Total Time Offline", + "lang_totalTime": "Total Time", + "lang_user": "User", + "lang_vm": "VM" } \ No newline at end of file -- cgit v1.2.3-55-g7522 From 1aee69c75e10a1f098ec3a93614cc36da407e22b Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 7 Feb 2017 14:06:27 +0100 Subject: [statistics_reporting] Unify translation handling --- .../statistics_reporting/lang/de/module.json | 9 +++++-- .../lang/de/template-tags.json | 30 ++++++++-------------- .../statistics_reporting/lang/en/module.json | 7 ++++- .../lang/en/template-tags.json | 22 +++++----------- .../statistics_reporting/page.inc.php | 15 +++-------- .../templates/table-client.html | 4 +-- .../templates/table-total.html | 2 +- 7 files changed, 37 insertions(+), 52 deletions(-) (limited to 'modules-available/statistics_reporting/lang/de/template-tags.json') diff --git a/modules-available/statistics_reporting/lang/de/module.json b/modules-available/statistics_reporting/lang/de/module.json index 86ed5f45..64003d47 100644 --- a/modules-available/statistics_reporting/lang/de/module.json +++ b/modules-available/statistics_reporting/lang/de/module.json @@ -1,5 +1,10 @@ { - "module_name": "Statistik Auswertung", + "module_name": "Statistikauswertung", "notAssigned": "Nicht zugewiesen", - "page_title": "Statistik Auswertung" + "page_title": "Statistikauswertung", + "table_client": "Nach Clients", + "table_location": "Nach Orten", + "table_total": "Gesamt", + "table_user": "Nach Benutzern", + "table_vm": "Nach Veranstaltungen" } \ No newline at end of file diff --git a/modules-available/statistics_reporting/lang/de/template-tags.json b/modules-available/statistics_reporting/lang/de/template-tags.json index d4d7887a..379e2030 100644 --- a/modules-available/statistics_reporting/lang/de/template-tags.json +++ b/modules-available/statistics_reporting/lang/de/template-tags.json @@ -1,28 +1,20 @@ { "lang_apply": "Anwenden", - "lang_clientLogout": "Letzter VM Logout", - "lang_clientStart": "Letzter Client Boot", - "lang_hostname": "Client Name", - "lang_last1": "Heute", - "lang_last14": "Letzten 14 Tage", - "lang_last2": "Letzten 2 Tage", - "lang_last30": "Letzten 30 Tage", - "lang_last7": "Letzten 7 Tage", - "lang_last90": "Letzten 90 Tage", - "lang_location": "Raum", + "lang_displayColumns": "Auswahl angezeigter Spalten", + "lang_displaySelection": "Anzeigemodus, Auswahl Zeitfenster", + "lang_export": "Exportieren", + "lang_hostname": "Hostname", + "lang_lastLogout": "Letzter Logout", + "lang_lastStart": "Letzter Boot", + "lang_location": "Ort", "lang_longSessions": "Sitzungen \u2265 60s", - "lang_medianSessionLength": "Mittlere Sitzungsdauer", - "lang_overallOfftime": "Insgesamte Zeit Offline", - "lang_perclient": "Pro Client", - "lang_perlocation": "Pro Raum", - "lang_peruser": "Pro Benutzer", - "lang_pervm": "Pro VM", + "lang_medianSessionLength": "Sitzungsdauer Median", "lang_reportingDescription": "Helfen Sie uns bwLehrpool, durch das w\u00f6chentliche, automatische Verschicken eines anonymisierten Statistikberichts, zu verbessern.", "lang_sessions": "Sitzungen", "lang_shortSessions": "Sitzungen < 60s", "lang_total": "Gesamt", - "lang_totalOffTime": "Gesamtzeit Offline", - "lang_totalTime": "Gesamte Zeit", + "lang_totalOffTime": "Gesamtzeit offline", + "lang_totalTime": "Gesamtzeit", "lang_user": "Nutzer", - "lang_vm": "VM" + "lang_vm": "Veranstaltung" } \ No newline at end of file diff --git a/modules-available/statistics_reporting/lang/en/module.json b/modules-available/statistics_reporting/lang/en/module.json index 5362fee2..f5ed37d3 100644 --- a/modules-available/statistics_reporting/lang/en/module.json +++ b/modules-available/statistics_reporting/lang/en/module.json @@ -1,5 +1,10 @@ { "module_name": "Statistics Reporting", "notAssigned": "Not assigned", - "page_title": "Statistics Reporting" + "page_title": "Statistics Reporting", + "table_client": "By client", + "table_location": "By location", + "table_total": "Total", + "table_user": "By user", + "table_vm": "By lecture" } \ No newline at end of file diff --git a/modules-available/statistics_reporting/lang/en/template-tags.json b/modules-available/statistics_reporting/lang/en/template-tags.json index 0047c7a4..466a8530 100644 --- a/modules-available/statistics_reporting/lang/en/template-tags.json +++ b/modules-available/statistics_reporting/lang/en/template-tags.json @@ -1,22 +1,14 @@ { "lang_apply": "Apply", - "lang_clientLogout": "Last VM Logout", - "lang_clientStart": "Last Client Boot", - "lang_hostname": "Client Name", - "lang_last1": "Today", - "lang_last14": "Last 14 days", - "lang_last2": "Last 2 days", - "lang_last30": "Last 30 days", - "lang_last7": "Last 7 days", - "lang_last90": "Last 90 days", + "lang_displayColumns": "Select columns to display", + "lang_displaySelection": "Select display mode and specify time span", + "lang_export": "Export", + "lang_hostname": "Hostname", + "lang_lastLogout": "Last logout", + "lang_lastStart": "Last boot", "lang_location": "Location", "lang_longSessions": "Sessions \u2265 60s", "lang_medianSessionLength": "Median Session Length", - "lang_overallOfftime": "Overall time offline", - "lang_perclient": "Per Client", - "lang_perlocation": "Per Location", - "lang_peruser": "Per User", - "lang_pervm": "Per VM", "lang_reportingDescription": "Help us improve bwLehrpool by automatically sending an anonymized statistics report once per week.", "lang_sessions": "Sessions", "lang_shortSessions": "Sessions < 60s", @@ -24,5 +16,5 @@ "lang_totalOffTime": "Total Time Offline", "lang_totalTime": "Total Time", "lang_user": "User", - "lang_vm": "VM" + "lang_vm": "Lecture" } \ No newline at end of file diff --git a/modules-available/statistics_reporting/page.inc.php b/modules-available/statistics_reporting/page.inc.php index 05a26c41..c5640d41 100644 --- a/modules-available/statistics_reporting/page.inc.php +++ b/modules-available/statistics_reporting/page.inc.php @@ -13,8 +13,8 @@ class Page_Statistics_Reporting extends Page /** * @var array Names of columns that are being used by the various tables */ - private $COLUMNS = array('col_lastlogout', 'col_laststart', 'col_location', 'col_longsessions', 'col_mediantime', - 'col_sessions', 'col_shortsessions', 'col_timeoffline', 'col_totaltime'); + private $COLUMNS = array('lastLogout', 'lastStart', 'location', 'longSessions', 'medianSessionLength', + 'sessions', 'shortSessions', 'totalOffTime', 'totalTime'); /** * @var array Names of the tables we can display @@ -66,15 +66,6 @@ class Page_Statistics_Reporting extends Page /* * Leave these here for the translate module - * Dictionary::translate('col_lastlogout'); - * Dictionary::translate('col_laststart'); - * Dictionary::translate('col_location'); - * Dictionary::translate('col_longsessions'); - * Dictionary::translate('col_mediantime'); - * Dictionary::translate('col_sessions'); - * Dictionary::translate('col_shortsessions'); - * Dictionary::translate('col_timeoffline'); - * Dictionary::translate('col_totaltime'); * Dictionary::translate('table_total'); * Dictionary::translate('table_location'); * Dictionary::translate('table_client'); @@ -91,7 +82,7 @@ class Page_Statistics_Reporting extends Page foreach ($this->COLUMNS as $column) { $data['columns'][] = array( 'id' => $column, - 'name' => Dictionary::translate($column, true), + 'name' => Dictionary::translateFile('template-tags', 'lang_' . $column, true), 'checked' => Request::get($column, 'on', 'string') === 'on' ? 'checked' : '', ); } diff --git a/modules-available/statistics_reporting/templates/table-client.html b/modules-available/statistics_reporting/templates/table-client.html index e4538da6..e53a49d6 100644 --- a/modules-available/statistics_reporting/templates/table-client.html +++ b/modules-available/statistics_reporting/templates/table-client.html @@ -8,8 +8,8 @@ {{lang_longSessions}} {{lang_shortSessions}} {{lang_totalOffTime}} - {{lang_clientLogout}} - {{lang_clientStart}} + {{lang_lastLogout}} + {{lang_lastStart}} diff --git a/modules-available/statistics_reporting/templates/table-total.html b/modules-available/statistics_reporting/templates/table-total.html index 8e24dc01..2e100ae5 100644 --- a/modules-available/statistics_reporting/templates/table-total.html +++ b/modules-available/statistics_reporting/templates/table-total.html @@ -6,7 +6,7 @@ {{lang_medianSessionLength}} {{lang_longSessions}} {{lang_shortSessions}} - {{lang_overallOfftime}} + {{lang_totalOffTime}} -- cgit v1.2.3-55-g7522 From 5a6575b1c07997ba1af20952f435290ce8ce970c Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Wed, 8 Feb 2017 12:13:57 +0100 Subject: [statistics_reporting] Nag user if statistics reporting is disabled --- .../hooks/main-warning.inc.php | 5 +++ .../statistics_reporting/inc/remotereport.inc.php | 2 +- .../lang/de/template-tags.json | 4 +- .../lang/en/template-tags.json | 4 +- .../statistics_reporting/page.inc.php | 26 ++++++++++++- .../templates/columnChooser.html | 43 ++++++++++++---------- 6 files changed, 60 insertions(+), 24 deletions(-) create mode 100644 modules-available/statistics_reporting/hooks/main-warning.inc.php (limited to 'modules-available/statistics_reporting/lang/de/template-tags.json') diff --git a/modules-available/statistics_reporting/hooks/main-warning.inc.php b/modules-available/statistics_reporting/hooks/main-warning.inc.php new file mode 100644 index 00000000..33381c9f --- /dev/null +++ b/modules-available/statistics_reporting/hooks/main-warning.inc.php @@ -0,0 +1,5 @@ +doExport(); // Does not return } + // Get report - fetch data exactly the way it would automatically be reported + // so the user can know what is going on + if ($this->action === 'getreport') { + $report = RemoteReport::generateReport(strtotime('-7 days'), time('now')); + Header('Content-Disposition: attachment; filename=remote-report.json'); + Header('Content-Type: application/json; charset=utf-8'); + die(json_encode($report)); + } } /** @@ -105,6 +113,13 @@ class Page_Statistics_Reporting extends Page $data['lower'] = $this->lower; $data['upper'] = $this->upper; + if (RemoteReport::isReportingEnabled()) { + $data['settingsButtonClass'] = 'default'; + $data['reportChecked'] = 'checked'; + } else { + $data['settingsButtonClass'] = 'danger'; + } + Render::addTemplate('columnChooser', $data); $data['data'] = $this->fetchData(GETDATA_PRINTABLE); @@ -124,8 +139,15 @@ class Page_Statistics_Reporting extends Page die('Missing setting value.'); } RemoteReport::setReportingEnabled($state); - } elseif ($this->action === 'getReporting') { - echo RemoteReport::isReportingEnabled() ? 'on' : ''; + $data = array(); + if (RemoteReport::isReportingEnabled()) { + $data['class'] = 'default'; + $data['checked'] = true; + } else { + $data['class'] = 'danger'; + } + Header('Content-Type: application/json; charset=utf-8'); + die(json_encode($data)); } else { echo 'Invalid action.'; } diff --git a/modules-available/statistics_reporting/templates/columnChooser.html b/modules-available/statistics_reporting/templates/columnChooser.html index efc1f355..9707c970 100644 --- a/modules-available/statistics_reporting/templates/columnChooser.html +++ b/modules-available/statistics_reporting/templates/columnChooser.html @@ -2,7 +2,7 @@
- + {{lang_displaySelection}}
@@ -72,8 +72,12 @@