summaryrefslogtreecommitdiffstats
path: root/modules-available/statistics_reporting
diff options
context:
space:
mode:
authorSimon Rettberg2017-02-08 15:18:06 +0100
committerSimon Rettberg2017-02-08 15:18:06 +0100
commit24908c0871f8ea12b2f158a08499cf1e14dfa7de (patch)
tree224310ec7b22f0bffb63b98386ad24fda6485dfb /modules-available/statistics_reporting
parent[statistics_reporting] Fix my messed up tag order in days selection (diff)
downloadslx-admin-24908c0871f8ea12b2f158a08499cf1e14dfa7de.tar.gz
slx-admin-24908c0871f8ea12b2f158a08499cf1e14dfa7de.tar.xz
slx-admin-24908c0871f8ea12b2f158a08499cf1e14dfa7de.zip
[statistics_reporting] Implement column filtering for export
Diffstat (limited to 'modules-available/statistics_reporting')
-rw-r--r--modules-available/statistics_reporting/page.inc.php30
-rw-r--r--modules-available/statistics_reporting/templates/columnChooser.html7
2 files changed, 33 insertions, 4 deletions
diff --git a/modules-available/statistics_reporting/page.inc.php b/modules-available/statistics_reporting/page.inc.php
index f0614d35..51c137f6 100644
--- a/modules-available/statistics_reporting/page.inc.php
+++ b/modules-available/statistics_reporting/page.inc.php
@@ -87,11 +87,12 @@ class Page_Statistics_Reporting extends Page
'days' => array()
);
+ $forceOn = (Request::get('type') === false);
foreach ($this->COLUMNS as $column) {
$data['columns'][] = array(
'id' => 'col_' . $column,
'name' => Dictionary::translateFile('template-tags', 'lang_' . $column, true),
- 'checked' => Request::get($column, 'on', 'string') === 'on' ? 'checked' : '',
+ 'checked' => ($forceOn || Request::get('col_' . $column, 'off', 'string') !== 'off') ? 'checked' : '',
);
}
@@ -162,7 +163,32 @@ class Page_Statistics_Reporting extends Page
$flags |= GETDATA_PRINTABLE;
}
$res = $this->fetchData($flags);
- // TODO: Filter unwanted columns
+ // Filter unwanted columns
+ if (isset($res[0])) {
+ foreach ($this->COLUMNS as $column) {
+ if (Request::get('col_' . $column, 'delete', 'string') === 'delete') {
+ foreach ($res as &$row) {
+ unset($row[$column], $row[$column . '_s']);
+ if ($column === 'location') {
+ unset($row['locationId']);
+ }
+ }
+ } elseif ($printable && isset($row[0][$column . '_s'])) {
+ foreach ($res as &$row) {
+ unset($row[$column]);
+ }
+ } elseif ($column === 'location' && (isset($res[0]['location']) || isset($res[0]['locationId']))) {
+ foreach ($res as &$row) {
+ if ($printable) {
+ unset($row['locationId']);
+ } else {
+ unset($row['location']);
+ }
+ }
+ }
+ }
+ unset($row);
+ }
Header('Content-Disposition: attachment; filename=' . 'statistics-' . date('Y.m.d-H.i.s') . '.' . $format);
switch ($format) {
case 'json':
diff --git a/modules-available/statistics_reporting/templates/columnChooser.html b/modules-available/statistics_reporting/templates/columnChooser.html
index 75dfb34f..f08daf1c 100644
--- a/modules-available/statistics_reporting/templates/columnChooser.html
+++ b/modules-available/statistics_reporting/templates/columnChooser.html
@@ -34,9 +34,8 @@
<div class="col-md-12 form-inline">
<div><strong class="text-capitalize">{{lang_displayColumns}}</strong></div>
{{#columns}}
- <input type="hidden" name="{{id}}" value="off">
<div class="checkbox">
- <input id="id_{{id}}" name="{{id}}" type="checkbox" class="column-toggle form-control" {{checked}}>
+ <input id="id_{{id}}" name="{{id}}" value="on" type="checkbox" class="column-toggle form-control" {{checked}}>
<label for="id_{{id}}">{{name}}</label>
</div>
{{/columns}}
@@ -142,6 +141,10 @@
$('.column-toggle').each(function () {
var box = $(this);
if ($('.' + box.attr('name')).length === 0) {
+ if (!box.is(':checked')) {
+ box.attr('value', 'off');
+ box.prop('checked', true);
+ }
box.parent().hide();
} else {
updateColumn(box);