summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--modules-available/locations/templates/location-subnets.html2
-rw-r--r--modules-available/statistics/lang/de/template-tags.json3
-rw-r--r--modules-available/statistics/lang/en/template-tags.json7
-rw-r--r--modules-available/statistics/page.inc.php2
-rw-r--r--modules-available/statistics/templates/clientlist.html158
-rw-r--r--modules-available/statistics/templates/cpumodels.html58
-rw-r--r--modules-available/statistics/templates/filterbox.html93
-rw-r--r--modules-available/statistics/templates/id44.html46
-rw-r--r--modules-available/statistics/templates/kvmstate.html30
-rw-r--r--modules-available/statistics/templates/machine-notes.html3
-rw-r--r--modules-available/statistics/templates/memory.html46
-rw-r--r--modules-available/statistics/templates/newclients.html54
12 files changed, 271 insertions, 231 deletions
diff --git a/modules-available/locations/templates/location-subnets.html b/modules-available/locations/templates/location-subnets.html
index 0ea096b6..9cfa5cc8 100644
--- a/modules-available/locations/templates/location-subnets.html
+++ b/modules-available/locations/templates/location-subnets.html
@@ -90,7 +90,7 @@
</div>
</div>
- <div class ="modal fade" id="deleteLocationModal{{locationid}}" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
+ <div class="modal fade" id="deleteLocationModal{{locationid}}" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" style="width: 400px" role="document">
<div class="modal-content">
<div class="modal-body">
diff --git a/modules-available/statistics/lang/de/template-tags.json b/modules-available/statistics/lang/de/template-tags.json
index e0be0d48..ab22ee86 100644
--- a/modules-available/statistics/lang/de/template-tags.json
+++ b/modules-available/statistics/lang/de/template-tags.json
@@ -45,6 +45,7 @@
"lang_modelName": "Modellname",
"lang_modelNo": "Modell",
"lang_modelStats": "PC-Modelle",
+ "lang_moduleHeading": "Client-Statistiken",
"lang_more": "Mehr",
"lang_newMachines": "Neue Ger\u00e4te",
"lang_noEdid": "Kein EDID",
@@ -73,7 +74,7 @@
"lang_tempPartStats": "Tempor\u00e4re Partition",
"lang_thoseAreProjectors": "Diese Modellnamen werden als Beamer behandelt, auch wenn die EDID-Informationen des Ger\u00e4tes anderes berichten.",
"lang_timebarDesc": "Visuelle Darstellung der letzten Tage. Rote Abschnitte zeigen, wann der Rechner belegt war, gr\u00fcne, wann er nicht verwendet wurde, aber eingeschaltet war. Die leicht abgedunkelten Abschnitte markieren N\u00e4chte (22 bis 8 Uhr).",
- "lang_tmpGb": "HDD-Temp",
+ "lang_tmpGb": "Temp-HDD",
"lang_total": "Gesamt",
"lang_usageDetails": "Nutzungsdetails",
"lang_usageState": "Zustand",
diff --git a/modules-available/statistics/lang/en/template-tags.json b/modules-available/statistics/lang/en/template-tags.json
index 4a31a5ee..6597d953 100644
--- a/modules-available/statistics/lang/en/template-tags.json
+++ b/modules-available/statistics/lang/en/template-tags.json
@@ -45,6 +45,7 @@
"lang_modelName": "Model name",
"lang_modelNo": "Model",
"lang_modelStats": "PC models",
+ "lang_moduleHeading": "Client Statistics",
"lang_more": "More",
"lang_newMachines": "New machines",
"lang_noEdid": "No EDID",
@@ -66,14 +67,14 @@
"lang_reallocatedSectors": "Bad sectors",
"lang_screens": "Screens",
"lang_serialNo": "Serial no",
- "lang_showList": "Show list",
- "lang_showVisualization": "Show visualization",
+ "lang_showList": "List",
+ "lang_showVisualization": "Visualization",
"lang_sockets": "Sockets",
"lang_tempPart": "Temp. partition",
"lang_tempPartStats": "Temporary partition",
"lang_thoseAreProjectors": "These model names will always be treated as beamers, even if the device's EDID data says otherwise.",
"lang_timebarDesc": "Visual representation of the last few days. Red parts mark periods where the client was occupied, green parts where the client was idle. Dimmed parts mark nights (10pm to 8am).",
- "lang_tmpGb": "HDD temp",
+ "lang_tmpGb": "Temp HDD",
"lang_total": "Total",
"lang_usageDetails": "Detailed usage",
"lang_usageState": "State",
diff --git a/modules-available/statistics/page.inc.php b/modules-available/statistics/page.inc.php
index 2b12c69f..810d624e 100644
--- a/modules-available/statistics/page.inc.php
+++ b/modules-available/statistics/page.inc.php
@@ -533,6 +533,7 @@ class Page_Statistics extends Page
if (empty($row['hostname'])) {
$row['hostname'] = $row['clientip'];
}
+ $row['firstseen_int'] = $row['firstseen'];
$row['firstseen'] = date('d.m. H:i', $row['firstseen']);
$row['gbram'] = round(round($row['mbram'] / 500) / 2, 1); // Trial and error until we got "expected" rounding..
$row['gbtmp'] = round($row['id44mb'] / 1024);
@@ -574,6 +575,7 @@ class Page_Statistics extends Page
$row['state_occupied'] = true;
}
//$row['firstseen'] = date('d.m.Y H:i', $row['firstseen']);
+ $row['lastseen_int'] = $row['lastseen'];
$row['lastseen'] = date('d.m. H:i', $row['lastseen']);
//$row['lastboot'] = date('d.m. H:i', $row['lastboot']);
$row['gbram'] = round(round($row['mbram'] / 500) / 2, 1); // Trial and error until we got "expected" rounding..
diff --git a/modules-available/statistics/templates/clientlist.html b/modules-available/statistics/templates/clientlist.html
index 73148eb8..ecfe622c 100644
--- a/modules-available/statistics/templates/clientlist.html
+++ b/modules-available/statistics/templates/clientlist.html
@@ -1,94 +1,81 @@
+<table class="stupidtable table table-condensed table-striped">
-
-<h1>{{lang_clientList}} ({{rowCount}})</h1>
-
-<table class="table table-condensed table-striped">
- <tr>
- <th>{{lang_machine}}</th>
- <th>{{lang_address}}
- <div class="btn-group pull-right">
- <button class="btn btn-default btn-xs" id="sortButton-clientip"></button>
- </div>
-
- </th>
- <th class="text-right">{{lang_lastSeen}}
- <div class="btn-group pull-right">
- <button class="btn btn-default btn-xs" id="sortButton-lastseen"></button>
+ <thead>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="text-right">
<button class="btn btn-default btn-xs" onclick="popupFilter('lastseen')">
<span id="btn_filter_lastseen" class="glyphicon glyphicon-filter"></span>
</button>
- </div>
- </th>
- <th>
- {{lang_kvmSupport}}
- <div class="btn-group pull-right">
- <button class="btn btn-default btn-xs" id="sortButton-kvmstate"></button>
- <button class="btn btn-default btn-xs" onclick="popupFilter('kvmstate')">
- <span id="btn_filter_kvmstate" class="glyphicon glyphicon-filter"></span>
- </button>
- </div>
- </th>
- <th class="text-right">
- {{lang_gbRam}}
- <div class="btn-group pull-right">
- <button class="btn btn-default btn-xs" id="sortButton-gbram"></button>
+ </td>
+ <td>
+ <button class="btn btn-default btn-xs" onclick="popupFilter('kvmstate')">
+ <span id="btn_filter_kvmstate" class="glyphicon glyphicon-filter"></span>
+ </button>
+ </td>
+ <td class="text-right">
<button class="btn btn-default btn-xs" onclick="popupFilter('gbram')">
<span id="btn_filter_gbram" class="glyphicon glyphicon-filter"></span>
</button>
- </div>
- </th>
- <th class="text-right">
- {{lang_tmpGb}}
- <div class="btn-group pull-right">
- <button class="btn btn-default btn-xs" id="sortButton-hddgb"></button>
- <button class="btn btn-default btn-xs" onclick="popupFilter('hddgb')">
- <span id="btn_filter_hddgb" class="glyphicon glyphicon-filter"></span>
- </button>
- </div>
- </th>
- <th>{{lang_cpuModel}}
- <div class="btn-group pull-right">
- <button class="btn btn-default btn-xs" id="sortButton-realcores"></button>
- <button class="btn btn-default btn-xs" onclick="popupFilter('realcores')">
- <span id="btn_filter_cpu" class="glyphicon glyphicon-filter"></span>
- </button>
- </div>
- </th>
- </tr>
- {{#rows}}
- <tr>
- <td class="text-nowrap">
- {{#hasnotes}}<span class="glyphicon glyphicon-exclamation-sign pull-right"></span>{{/hasnotes}}
- {{#state_off}}
- <span class="glyphicon glyphicon-off" title="{{lang_machineOff}}"></span>
- {{/state_off}}
- {{#state_idle}}
- <span class="glyphicon glyphicon-ok green" title="{{lang_machineIdle}}"></span>
- {{/state_idle}}
- {{#state_occupied}}
- <span class="glyphicon glyphicon-user red" title="{{lang_machineOccupied}}"></span>
- {{/state_occupied}}
- <a href="?do=Statistics&amp;uuid={{machineuuid}}"><b>{{hostname}}</b></a>
- <div class="small">{{machineuuid}}</div>
- </td>
- <td><b><a href="?do=Statistics&amp;show=list&amp;filters=subnet={{subnet}}">{{subnet}}</a>{{lastoctet}}</b><br>{{macaddr}}</td>
- <td class="text-right">{{lastseen}}</td>
- <td class="{{kvmclass}}">{{kvmstate}}</td>
- <td class="text-right {{ramclass}}">{{gbram}}&thinsp;GiB</td>
- <td class="text-right {{hddclass}}">
- {{gbtmp}}&thinsp;GiB
- {{#badsectors}}<div>
- <span class="glyphicon glyphicon-exclamation-sign"></span>
- {{badsectors}}
- </div>{{/badsectors}}
- {{#nohdd}}<div>
- <span class="glyphicon glyphicon-hdd red"></span>
- </div>{{/nohdd}}
- </td>
- <td>{{lang_realCores}}: {{realcores}}<div class="small">{{cpumodel}}</div></td>
- </tr>
- {{/rows}}
+ </td>
+ <td class="text-right">
+ <button class="btn btn-default btn-xs" onclick="popupFilter('hddgb')">
+ <span id="btn_filter_hddgb" class="glyphicon glyphicon-filter"></span>
+ </button>
+ </td>
+ <td>
+ <button class="btn btn-default btn-xs" onclick="popupFilter('realcores')">
+ <span id="btn_filter_cpu" class="glyphicon glyphicon-filter"></span>
+ </button>
+ </td>
+ </tr>
+ <tr>
+ <th data-sort="string">{{lang_machine}}</th>
+ <th data-sort="ipv4">{{lang_address}}</th>
+ <th data-sort="int" class="text-right">{{lang_lastSeen}}</th>
+ <th data-sort="string">{{lang_kvmSupport}}</th>
+ <th data-sort="int" class="text-right">{{lang_gbRam}}</th>
+ <th data-sort="int" class="text-right">{{lang_tmpGb}}</th>
+ <th data-sort="int">{{lang_cpuModel}}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#rows}}
+ <tr>
+ <td data-sort-value="{{hostname}}" class="text-nowrap">
+ {{#hasnotes}}<span class="glyphicon glyphicon-exclamation-sign pull-right"></span>{{/hasnotes}}
+ {{#state_off}}
+ <span class="glyphicon glyphicon-off" title="{{lang_machineOff}}"></span>
+ {{/state_off}}
+ {{#state_idle}}
+ <span class="glyphicon glyphicon-ok green" title="{{lang_machineIdle}}"></span>
+ {{/state_idle}}
+ {{#state_occupied}}
+ <span class="glyphicon glyphicon-user red" title="{{lang_machineOccupied}}"></span>
+ {{/state_occupied}}
+ <a href="?do=Statistics&amp;uuid={{machineuuid}}"><b>{{hostname}}</b></a>
+ <div class="small">{{machineuuid}}</div>
+ </td>
+ <td data-sort-value="{{clientip}}"><b><a href="?do=Statistics&amp;show=list&amp;filters=subnet={{subnet}}">{{subnet}}</a>{{lastoctet}}</b><br>{{macaddr}}</td>
+ <td data-sort-value="{{lastseen_int}}" class="text-right">{{lastseen}}</td>
+ <td class="{{kvmclass}}">{{kvmstate}}</td>
+ <td data-sort-value="{{gbram}}" class="text-right {{ramclass}}">{{gbram}}&thinsp;GiB</td>
+ <td data-sort-value="{{gbtmp}}" class="text-right {{hddclass}}">
+ {{gbtmp}}&thinsp;GiB
+ {{#badsectors}}<div>
+ <span class="glyphicon glyphicon-exclamation-sign" data-toggle="tooltip" title="{{lang_reallocatedSectors}}" data-placement="left"></span>
+ {{badsectors}}
+ </div>{{/badsectors}}
+ {{#nohdd}}<div>
+ <span class="glyphicon glyphicon-hdd red"></span>
+ </div>{{/nohdd}}
+ </td>
+ <td data-sort-value="{{realcores}}">{{lang_realCores}}: {{realcores}}<div class="small">{{cpumodel}}</div></td>
+ </tr>
+ {{/rows}}
+ </tbody>
</table>
<script type="application/javascript"><!--
@@ -103,6 +90,11 @@ document.addEventListener("DOMContentLoaded", function () {
$sortBtn.html('<span class="glyphicon glyphicon-arrow-' + order + '"></span>');
$sortBtn.attr('onclick', 'toggleButton(\'' + v + '\');');
});
+
+ $('[data-toggle="tooltip"]').tooltip({
+ container: 'body',
+ trigger : 'hover'
+ });
});
function toggleButton(v) {
diff --git a/modules-available/statistics/templates/cpumodels.html b/modules-available/statistics/templates/cpumodels.html
index d9b0298b..d684c914 100644
--- a/modules-available/statistics/templates/cpumodels.html
+++ b/modules-available/statistics/templates/cpumodels.html
@@ -6,34 +6,38 @@
<div class="panel-body">
<div class="row">
<div class="col-md-8">
- <table class="table table-condensed table-striped table-responsive">
- <tr>
- <th>{{lang_modelName}}</th>
- <th class="text-right text-nowrap">{{lang_cpuCores}}</th>
- <th class="text-right text-nowrap">{{lang_modelCount}}</th>
- </tr>
- {{#rows}}
- <tr id="{{id}}" class="{{collapse}}">
- <td class="text-left text-nowrap filter-col" data-filter-col="systemmodel">
- <table style="width:100%; table-layout: fixed;"><tr><td style="overflow:hidden;text-overflow: ellipsis;">
- <a class="filter-val" data-filter-val="{{systemmodel}}" href="?do=Statistics&amp;show=stat&amp;filters={{query}}~,~systemmodel={{urlsystemmodel}}">{{systemmodel}}</a>
- </td></tr></table>
- </td>
- <td class="text-right filter-col" data-filter-col="realcores">
- <a class="filter-val" data-filter-val="{{cores}}" href="?do=Statistics&amp;show=stat&amp;filters={{query}}~,~realcores={{cores}}">{{cores}}</a>
- </td>
- <td class="text-right">{{count}}</td>
- </tr>
- {{/rows}}
- <tr class="slx-decollapse">
- <td colspan="3">
- <span class="btn-group btn-group-justified">
- <span class="btn btn-default btn-sm">
- <span class="glyphicon glyphicon-menu-down"></span>
+ <table class="stupidtable table table-condensed table-striped table-responsive">
+ <thead>
+ <tr>
+ <th data-sort="string">{{lang_modelName}}</th>
+ <th data-sort="int" class="text-right text-nowrap">{{lang_cpuCores}}</th>
+ <th data-sort="int" class="text-right text-nowrap">{{lang_modelCount}}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#rows}}
+ <tr id="{{id}}" class="{{collapse}}">
+ <td data-sort-value="{{systemmodel}}" class="text-left text-nowrap filter-col" data-filter-col="systemmodel">
+ <table style="width:100%; table-layout: fixed;"><tr><td style="overflow:hidden;text-overflow: ellipsis;">
+ <a class="filter-val" data-filter-val="{{systemmodel}}" href="?do=Statistics&amp;show=stat&amp;filters={{query}}~,~systemmodel={{urlsystemmodel}}">{{systemmodel}}</a>
+ </td></tr></table>
+ </td>
+ <td data-sort-value="{{cores}}" class="text-right filter-col" data-filter-col="realcores">
+ <a class="filter-val" data-filter-val="{{cores}}" href="?do=Statistics&amp;show=stat&amp;filters={{query}}~,~realcores={{cores}}">{{cores}}</a>
+ </td>
+ <td class="text-right">{{count}}</td>
+ </tr>
+ {{/rows}}
+ <tr class="slx-decollapse">
+ <td colspan="3">
+ <span class="btn-group btn-group-justified">
+ <span class="btn btn-default btn-sm">
+ <span class="glyphicon glyphicon-menu-down"></span>
+ </span>
</span>
- </span>
- </td>
- </tr>
+ </td>
+ </tr>
+ </tbody>
</table>
</div>
<div class="col-md-4">
diff --git a/modules-available/statistics/templates/filterbox.html b/modules-available/statistics/templates/filterbox.html
index 95fbab84..a62cdd5a 100644
--- a/modules-available/statistics/templates/filterbox.html
+++ b/modules-available/statistics/templates/filterbox.html
@@ -1,45 +1,44 @@
-<div id="modal-add-filter" class="modal modal-sm fade" role="dialog"
- style="position:absolute; min-width:600px; min-height: 400px;margin:auto">
- <div class="modal-content">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span
- class="sr-only">Close</span></button>
- {{lang_add_filter}}
- </div>
- <form class="modal-body form-inline center" onsubmit="$('#add-btn').click(); return false">
- <div class="form-group">
- <select id="columnSelect" name="column" class="form-control col-4-xs"> </select>
- </div>
- <div class="form-group">
- <select id="operatorSelect" name="operator" class="form-control col-4-xs"> </select>
+<div id="modal-add-filter" class="modal fade" role="dialog" style="position: absolute">
+ <div class="modal-dialog" role="document">
+ <div class="modal-content">
+ <div class="modal-header">
+ <b>{{lang_add_filter}}</b>
</div>
- <div class="form-group">
- <input name="argument" id="argumentInput" class="form-control col-4-xs"> </input>
- <select name="argument" id="argumentSelect" class="form-control col-4-xs"> </select>
- </div>
- <button id="add-btn" type="button" class="btn btn-primary" onclick="addFilterFromForm()">
- <span class="glyphicon glyphicon-plus"></span>
- {{lang_add}}
- </button>
- </form>
+ <form class="form-inline center" onsubmit="$('#add-btn').click(); return false">
+ <div class="modal-body">
+ <div class="form-group">
+ <select id="columnSelect" name="column" class="form-control col-4-xs"> </select>
+ </div>
+ <div class="form-group">
+ <select id="operatorSelect" name="operator" class="form-control col-4-xs"> </select>
+ </div>
+ <div class="form-group">
+ <input name="argument" id="argumentInput" class="form-control col-4-xs"> </input>
+ <select name="argument" id="argumentSelect" class="form-control col-4-xs"> </select>
+ </div>
+
+ </div>
+ <div class="modal-footer">
+ <button type="button" class="btn btn-default" data-dismiss="modal">{{lang_cancel}}</button>
+ <button id="add-btn" type="button" class="btn btn-success" onclick="addFilterFromForm()">
+ <span class="glyphicon glyphicon-plus"></span>
+ {{lang_add}}
+ </button>
+ </div>
+ </form>
+ </div>
</div>
</div>
-<div style="height:120px" class="col-xs-12">
+
+<div class="col-md-12">
<!-- use GET here, to avoid the "resend form?" confirmation, and anyway this is stateless, so GET makes more sense -->
<form id="queryForm" method="GET" action="?do=Statistics" class="" role="form">
- <input type="hidden" name="do" value="statistics">
<input type="hidden" name="show" value="{{show}}">
- <label for="filterInput">{{lang_labelFilter}}</label>
- <input type="text" name="filters" class="" id="filterInput"/>
- <input type="hidden" name="sortColumn" id="sortColumn" value="{{sortColumn}}"/>
- <input type="hidden" name="sortDirection" id="sortDirection" value="{{sortDirection}}"/>
+ <button type="submit" hidden></button>
+
- <button type="button" class="btn btn-success pull-left" onclick="popupFilter(null)">
- <span class="glyphicon glyphicon-plus"></span>
- {{lang_add_filter}}
- </button>
<div class="btn-group pull-right">
<button class="btn {{statButtonClass}}" type="submit" name="show" value="stat">
<span class="glyphicon glyphicon-stats"></span>
@@ -50,10 +49,31 @@
{{lang_showList}}
</button>
</div>
+ <h1>{{lang_moduleHeading}}</h1>
+
+ <br/>
+
+ <input type="hidden" name="do" value="statistics">
+ <input type="hidden" name="sortColumn" id="sortColumn" value="{{sortColumn}}"/>
+ <input type="hidden" name="sortDirection" id="sortDirection" value="{{sortDirection}}"/>
+
+ <label for="filterInput">{{lang_labelFilter}}</label>
+ <div class="row">
+ <div class="col-md-10">
+ <input type="text" name="filters" class="" id="filterInput"/>
+ </div>
+ <div class="col-md-2">
+ <button type="button" class="btn btn-success pull-right" onclick="popupFilter(null)">
+ <span class="glyphicon glyphicon-plus"></span>
+ {{lang_add_filter}}
+ </button>
+ </div>
+ </div>
+
+ <br/>
</form>
- <br/>
- <br/>
</div>
+
<script type="application/javascript"><!--
var filterSelectize;
@@ -111,6 +131,9 @@ document.addEventListener("DOMContentLoaded", function () {
// if (initComplete && !$('#filterInput').is(':focus')) {
// reload();
// }
+ },
+ onItemRemove: function(value) {
+ refresh();
}
})[0].selectize;
/* add query */
diff --git a/modules-available/statistics/templates/id44.html b/modules-available/statistics/templates/id44.html
index 38cf028f..d3b1ab1c 100644
--- a/modules-available/statistics/templates/id44.html
+++ b/modules-available/statistics/templates/id44.html
@@ -6,28 +6,32 @@
<div class="panel-body">
<div class="row">
<div class="col-sm-6">
- <table class="filter-col table table-condensed table-striped" data-filter-col="hddgb">
- <tr>
- <th>{{lang_partitionSize}}</th>
- <th class="text-right">{{lang_machineCount}}</th>
- </tr>
- {{#rows}}
- <tr id="tmpid{{gb}}" class="{{class}} {{collapse}}">
- <td class="text-left text-nowrap">
- <a class="filter-val" data-filter-val="{{gb}}" href="?do=Statistics&amp;show=stat&amp;filters={{query}}~,~hddgb={{gb}}">{{gb}}&thinsp;GiB</a>
- </td>
- <td class="text-right">{{count}}</td>
- </tr>
- {{/rows}}
- <tr class="slx-decollapse">
- <td colspan="2">
- <span class="btn-group btn-group-justified">
- <span class="btn btn-default btn-sm">
- <span class="glyphicon glyphicon-menu-down"></span>
+ <table class="stupidtable filter-col table table-condensed table-striped" data-filter-col="hddgb">
+ <thead>
+ <tr>
+ <th data-sort="int">{{lang_partitionSize}}</th>
+ <th data-sort="int" class="text-right">{{lang_machineCount}}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#rows}}
+ <tr id="tmpid{{gb}}" class="{{class}} {{collapse}}">
+ <td data-sort-value="{{gb}}" class="text-left text-nowrap">
+ <a class="filter-val" data-filter-val="{{gb}}" href="?do=Statistics&amp;show=stat&amp;filters={{query}}~,~hddgb={{gb}}">{{gb}}&thinsp;GiB</a>
+ </td>
+ <td class="text-right">{{count}}</td>
+ </tr>
+ {{/rows}}
+ <tr class="slx-decollapse">
+ <td colspan="2">
+ <span class="btn-group btn-group-justified">
+ <span class="btn btn-default btn-sm">
+ <span class="glyphicon glyphicon-menu-down"></span>
+ </span>
</span>
- </span>
- </td>
- </tr>
+ </td>
+ </tr>
+ </tbody>
</table>
</div>
<div class="col-sm-6">
diff --git a/modules-available/statistics/templates/kvmstate.html b/modules-available/statistics/templates/kvmstate.html
index 33a00d38..3704eda0 100644
--- a/modules-available/statistics/templates/kvmstate.html
+++ b/modules-available/statistics/templates/kvmstate.html
@@ -6,19 +6,23 @@
<div class="panel-body">
<div class="row">
<div class="col-sm-6">
- <table class="filter-col table table-condensed table-striped" data-filter-col="kvmstate">
- <tr>
- <th>{{lang_kvmState}}</th>
- <th class="text-right">{{lang_machineCount}}</th>
- </tr>
- {{#rows}}
- <tr id="kvm{{kvmstate}}">
- <td class="text-left text-nowrap">
- <a class="filter-val" data-filter-val="{{kvmstate}}" href="?do=Statistics&amp;show=stat&amp;filters={{query}}~,~kvmstate={{kvmstate}}">{{kvmstate}}</a>
- </td>
- <td class="text-right">{{count}}</td>
- </tr>
- {{/rows}}
+ <table class="stupidtable filter-col table table-condensed table-striped" data-filter-col="kvmstate">
+ <thead>
+ <tr>
+ <th data-sort="string">{{lang_kvmState}}</th>
+ <th data-sort="int" class="text-right">{{lang_machineCount}}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#rows}}
+ <tr id="kvm{{kvmstate}}">
+ <td data-sort-value="{{kvmstate}}" class="text-left text-nowrap">
+ <a class="filter-val" data-filter-val="{{kvmstate}}" href="?do=Statistics&amp;show=stat&amp;filters={{query}}~,~kvmstate={{kvmstate}}">{{kvmstate}}</a>
+ </td>
+ <td class="text-right">{{count}}</td>
+ </tr>
+ {{/rows}}
+ </tbody>
</table>
</div>
<div class="col-sm-6">
diff --git a/modules-available/statistics/templates/machine-notes.html b/modules-available/statistics/templates/machine-notes.html
index c4f97543..22ed96e9 100644
--- a/modules-available/statistics/templates/machine-notes.html
+++ b/modules-available/statistics/templates/machine-notes.html
@@ -9,7 +9,8 @@
<input type="hidden" name="action" value="setnotes">
<input type="hidden" name="uuid" value="{{machineuuid}}">
<textarea name="content" class="form-control" cols="101" rows="10">{{notes}}</textarea>
- <button type="submit" class="btn btn-primary">{{lang_save}}</button>
+ <br/>
+ <button type="submit" class="btn btn-primary pull-right"><span class="glyphicon glyphicon-floppy-disk"></span> {{lang_save}}</button>
</form>
</div>
</div>
diff --git a/modules-available/statistics/templates/memory.html b/modules-available/statistics/templates/memory.html
index f17f55ca..6bc13980 100644
--- a/modules-available/statistics/templates/memory.html
+++ b/modules-available/statistics/templates/memory.html
@@ -6,28 +6,32 @@
<div class="panel-body">
<div class="row">
<div class="col-sm-6">
- <table class="filter-col table table-condensed table-striped" data-filter-col="gbram">
- <tr>
- <th>{{lang_ramSize}}</th>
- <th class="text-right">{{lang_machineCount}}</th>
- </tr>
- {{#rows}}
- <tr id="ramid{{gb}}" class="{{class}} {{collapse}}">
- <td class="text-left text-nowrap">
- <a class="filter-val" data-filter-val="{{gb}}" href="?do=Statistics&amp;show=stat&amp;filters={{query}}~,~gbram={{gb}}">{{gb}}&thinsp;GiB</a>
- </td>
- <td class="text-right">{{count}}</td>
- </tr>
- {{/rows}}
- <tr class="slx-decollapse">
- <td colspan="2">
- <span class="btn-group btn-group-justified">
- <span class="btn btn-default btn-sm">
- <span class="glyphicon glyphicon-menu-down"></span>
+ <table class="stupidtable filter-col table table-condensed table-striped" data-filter-col="gbram">
+ <thead>
+ <tr>
+ <th data-sort="int">{{lang_ramSize}}</th>
+ <th data-sort="int" class="text-right">{{lang_machineCount}}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#rows}}
+ <tr id="ramid{{gb}}" class="{{class}} {{collapse}}">
+ <td class="text-left text-nowrap" data-sort-value="{{gb}}">
+ <a class="filter-val" data-filter-val="{{gb}}" href="?do=Statistics&amp;show=stat&amp;filters={{query}}~,~gbram={{gb}}">{{gb}}&thinsp;GiB</a>
+ </td>
+ <td class="text-right">{{count}}</td>
+ </tr>
+ {{/rows}}
+ <tr class="slx-decollapse">
+ <td colspan="2">
+ <span class="btn-group btn-group-justified">
+ <span class="btn btn-default btn-sm">
+ <span class="glyphicon glyphicon-menu-down"></span>
+ </span>
</span>
- </span>
- </td>
- </tr>
+ </td>
+ </tr>
+ </tbody>
</table>
</div>
<div class="col-sm-6">
diff --git a/modules-available/statistics/templates/newclients.html b/modules-available/statistics/templates/newclients.html
index c5c704d1..6dc04144 100644
--- a/modules-available/statistics/templates/newclients.html
+++ b/modules-available/statistics/templates/newclients.html
@@ -4,32 +4,36 @@
{{lang_newMachines}}
</div>
<div class="panel-body">
- <table class="table table-condensed table-striped">
- <tr>
- <th>{{lang_machine}}</th>
- <th class="text-right"></th>
- <th>64Bit</th>
- <th class="text-right">RAM</th>
- <th class="text-right">HDD</th>
- </tr>
- {{#rows}}
- <tr class="{{collapse}}">
- <td class="text-nowrap"><a href="?do=Statistics&amp;uuid={{machineuuid}}">{{hostname}}</a></td>
- <td class="text-right">{{firstseen}}</td>
- <td class="{{kvmclass}}">{{kvmicon}}</td>
- <td class="text-right {{ramclass}}">{{gbram}}&thinsp;GiB</td>
- <td class="text-right {{hddclass}}">{{gbtmp}}&thinsp;GiB</td>
- </tr>
- {{/rows}}
- <tr class="slx-decollapse">
- <td colspan="5">
- <span class="btn-group btn-group-justified">
- <span class="btn btn-default btn-sm">
- <span class="glyphicon glyphicon-menu-down"></span>
+ <table class="stupidtable table table-condensed table-striped">
+ <thead>
+ <tr>
+ <th data-sort="string">{{lang_machine}}</th>
+ <th data-sort="int" class="text-right" style="min-width: 80px;">{{lang_firstSeen}}</th>
+ <th data-sort="string" class="text-center">64Bit</th>
+ <th data-sort="int" class="text-right">RAM</th>
+ <th data-sort="int" class="text-right">HDD</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#rows}}
+ <tr class="{{collapse}}">
+ <td data-sort-value="{{hostname}}" class="text-nowrap"><a href="?do=Statistics&amp;uuid={{machineuuid}}">{{hostname}}</a></td>
+ <td data-sort-value="{{firstseen_int}}" class="text-right">{{firstseen}}</td>
+ <td class="text-center {{kvmclass}}">{{kvmicon}}</td>
+ <td data-sort-value="{{gbram}}" class="text-right {{ramclass}}">{{gbram}}&thinsp;GiB</td>
+ <td data-sort-value="{{gbtmp}}" class="text-right {{hddclass}}">{{gbtmp}}&thinsp;GiB</td>
+ </tr>
+ {{/rows}}
+ <tr class="slx-decollapse">
+ <td colspan="5">
+ <span class="btn-group btn-group-justified">
+ <span class="btn btn-default btn-sm">
+ <span class="glyphicon glyphicon-menu-down"></span>
+ </span>
</span>
- </span>
- </td>
- </tr>
+ </td>
+ </tr>
+ </tbody>
</table>
</div>
</div>