summaryrefslogtreecommitdiffstats
path: root/modules-available/statistics
diff options
context:
space:
mode:
authorSimon Rettberg2022-11-11 15:06:10 +0100
committerSimon Rettberg2022-11-11 15:06:10 +0100
commit6dd159b77442429ac0ac2a46ed8cd5152c1a8b24 (patch)
treeb5a1ebffdb714fda21161058c2647527b798dd34 /modules-available/statistics
parent[statistics] Add placeholder to filters (diff)
downloadslx-admin-6dd159b77442429ac0ac2a46ed8cd5152c1a8b24.tar.gz
slx-admin-6dd159b77442429ac0ac2a46ed8cd5152c1a8b24.tar.xz
slx-admin-6dd159b77442429ac0ac2a46ed8cd5152c1a8b24.zip
[statistics] Client list: Add option to hide columns
Diffstat (limited to 'modules-available/statistics')
-rw-r--r--modules-available/statistics/config.json1
-rw-r--r--modules-available/statistics/lang/de/template-tags.json1
-rw-r--r--modules-available/statistics/lang/en/template-tags.json1
-rw-r--r--modules-available/statistics/pages/machine.inc.php4
-rw-r--r--modules-available/statistics/pages/summary.inc.php3
-rw-r--r--modules-available/statistics/templates/clientlist.html61
6 files changed, 68 insertions, 3 deletions
diff --git a/modules-available/statistics/config.json b/modules-available/statistics/config.json
index 11d3fba3..a683ab6a 100644
--- a/modules-available/statistics/config.json
+++ b/modules-available/statistics/config.json
@@ -1,7 +1,6 @@
{
"category": "main.status",
"dependencies": [
- "js_chart",
"bootstrap_datepicker"
],
"permission": "0"
diff --git a/modules-available/statistics/lang/de/template-tags.json b/modules-available/statistics/lang/de/template-tags.json
index 1f0bcdc8..9445e17a 100644
--- a/modules-available/statistics/lang/de/template-tags.json
+++ b/modules-available/statistics/lang/de/template-tags.json
@@ -118,6 +118,7 @@
"lang_runMode": "Betriebsmodus",
"lang_runmodeMachines": "Mit besonderem Betriebsmodus",
"lang_screens": "Bildschirme",
+ "lang_selectColumns": "Spalten ein\/ausblenden",
"lang_serialNo": "Serien-Nr",
"lang_showList": "Liste",
"lang_showVisualization": "Visualisierung",
diff --git a/modules-available/statistics/lang/en/template-tags.json b/modules-available/statistics/lang/en/template-tags.json
index 58b85a40..295e34f6 100644
--- a/modules-available/statistics/lang/en/template-tags.json
+++ b/modules-available/statistics/lang/en/template-tags.json
@@ -118,6 +118,7 @@
"lang_runMode": "Mode of operation",
"lang_runmodeMachines": "With special mode of operation",
"lang_screens": "Screens",
+ "lang_selectColumns": "Show\/hide columns",
"lang_serialNo": "Serial no",
"lang_showList": "List",
"lang_showVisualization": "Visualization",
diff --git a/modules-available/statistics/pages/machine.inc.php b/modules-available/statistics/pages/machine.inc.php
index 1e00b8f2..e72b96c8 100644
--- a/modules-available/statistics/pages/machine.inc.php
+++ b/modules-available/statistics/pages/machine.inc.php
@@ -5,7 +5,9 @@ class SubPage
public static function doPreprocess()
{
-
+ if (!Module::isAvailable('js_chart')) {
+ ErrorHandler::traceError('js_chart not available');
+ }
}
public static function doRender()
diff --git a/modules-available/statistics/pages/summary.inc.php b/modules-available/statistics/pages/summary.inc.php
index 1fa3adf2..cf3e745d 100644
--- a/modules-available/statistics/pages/summary.inc.php
+++ b/modules-available/statistics/pages/summary.inc.php
@@ -8,6 +8,9 @@ class SubPage
public static function doPreprocess()
{
User::assertPermission('view.summary');
+ if (!Module::isAvailable('js_chart')) {
+ ErrorHandler::traceError('js_chart not available');
+ }
}
public static function doRender()
diff --git a/modules-available/statistics/templates/clientlist.html b/modules-available/statistics/templates/clientlist.html
index df271591..721617a9 100644
--- a/modules-available/statistics/templates/clientlist.html
+++ b/modules-available/statistics/templates/clientlist.html
@@ -1,10 +1,13 @@
+<button class="pull-right btn btn-default" type="button" data-toggle="modal"
+ data-target="#column-selector">{{lang_selectColumns}}</button>
+
<h2>{{lang_clientList}} ({{rowCount}})</h2>
<form method="post" action="?do=statistics" id="list-form">
<input type="hidden" name="token" value="{{token}}">
<input type="hidden" name="redirect" value="?{{redirect}}">
-<table class="stupidtable table table-condensed table-striped">
+<table id="client-list" class="stupidtable table table-condensed table-striped">
<thead>
<tr>
<td></td>
@@ -277,6 +280,21 @@
</div>
</div>
+<div class="modal" id="column-selector" tabindex="-1" role="dialog">
+ <div class="modal-dialog" role="document">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal">&times;</button>
+ </div>
+ <div class="modal-body"></div>
+ <div class="modal-footer">
+ <button type="button" class="btn btn-default"
+ data-dismiss="modal">{{lang_close}}</button>
+ </div>
+ </div>
+ </div>
+</div>
+
<script type="application/javascript"><!--
document.addEventListener("DOMContentLoaded", function () {
@@ -335,6 +353,47 @@ document.addEventListener("DOMContentLoaded", function () {
}).length;
$el.text(result).prop('rows', Math.min(24, Math.max(5, num)));
});
+ // Generate list for column selection
+ var $cs = $('#column-selector .modal-body');
+ var idx = 0;
+ $cs.empty();
+ $('#client-list tr > th').each(function() {
+ idx++;
+ var $th = $(this);
+ $cs.append($('<div class="checkbox">')
+ .append($('<input id="shc-' + idx + '" type="checkbox" onclick="toggleColumn(' + idx + ')" checked="checked">'))
+ .append($('<label for="shc-' + idx + '">').text($th.text())));
+ });
+ // Load previous visibility settings
+ var colConf;
+ if (window.localStorage && (colConf = window.localStorage.getItem('cl-col-conf'))) {
+ colConf = JSON.parse(colConf);
+ if (colConf) {
+ for (var k in colConf) {
+ if (k.substring(0, 4) === 'shc-' && colConf[k]) {
+ var $cb = $('#' + k);
+ if ($cb.prop('checked')) {
+ $cb.click();
+ }
+ }
+ }
+ }
+ }
});
+function toggleColumn(idx)
+{
+ var $el = $(this);
+ $('#client-list tr > td:nth-child(' + idx + '), #client-list tr > th:nth-child(' + idx + ')')
+ .css('display', $el.is(':checked') ? '' : 'none');
+ var data = {};
+ $('#column-selector .modal-body .checkbox input').each(function() {
+ var $el = $(this);
+ if (!$el.is(':checked')) {
+ data[$el[0].id] = 1;
+ }
+ });
+ window.localStorage.setItem('cl-col-conf', JSON.stringify(data));
+}
+
//--></script>