diff options
author | Christian Klinger | 2016-07-15 14:18:29 +0200 |
---|---|---|
committer | Christian Klinger | 2016-07-15 14:19:27 +0200 |
commit | 6e73dfb95b22524322c2de7a09db04af462b50cc (patch) | |
tree | 7078ad789cf0ea6f2df3ab35f2d76e1f0486b425 /modules-available/statistics/templates/clientlist.html | |
parent | [syslog] API: Write machineuuid to DB (diff) | |
download | slx-admin-6e73dfb95b22524322c2de7a09db04af462b50cc.tar.gz slx-admin-6e73dfb95b22524322c2de7a09db04af462b50cc.tar.xz slx-admin-6e73dfb95b22524322c2de7a09db04af462b50cc.zip |
Merging some refactoring + new filter functionality.
Diffstat (limited to 'modules-available/statistics/templates/clientlist.html')
-rw-r--r-- | modules-available/statistics/templates/clientlist.html | 237 |
1 files changed, 0 insertions, 237 deletions
diff --git a/modules-available/statistics/templates/clientlist.html b/modules-available/statistics/templates/clientlist.html index 664d5413..f2a6ba03 100644 --- a/modules-available/statistics/templates/clientlist.html +++ b/modules-available/statistics/templates/clientlist.html @@ -1,53 +1,8 @@ -<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">×</span><span class="sr-only">Close</span></button> - {{lang_add_filter}} - </div> - <form class="modal-body form-inline center"> - <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> - <button type="button" class="btn btn-primary" onclick="addFilterFromForm()" > - <span class="glyphicon glyphicon-plus"></span> - {{lang_add}}</button> - </form> - </div> -</div> - <h1>{{lang_clientList}}</h1> -<div> - <!-- 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&show=list" class="" role="form"> - <input type="hidden" name="do" value="Statistics"/> - <input type="hidden" name="show" value="list"/> - <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="button" class="btn btn-success" onclick="popupFilter(null)"> - <span class="glyphicon glyphicon-plus"></span> - {{lang_add_filter}}</button> - <button class="btn btn-primary pull-right" type="submit"> - <span class="glyphicon glyphicon-refresh"></span> - {{lang_refresh}}</button> -</form> -<br/> -<br/> -</div> - <table class="table table-condensed table-striped"> <tr> <th>{{lang_machine}}</th> @@ -132,195 +87,3 @@ </tr> {{/rows}} </table> -<script type="application/javascript"><!-- - -var filterSelectize; - -var slxFilterNames = { - machineuuid: '{{lang_uuid}}', - macaddr: '{{lang_macAddr}}', - firstseen: '{{lang_firstSeen}}', - lastseen: '{{lang_lastSeen}}', - lastboot: '{{lang_lastBoot}}', - logintime: '{{lang_lastLogin}}', - realcores: '{{lang_cores}}', - systemmodel: '{{lang_model}}', - cpumodel: '{{lang_cpuModel}}', - hddgb: '{{lang_tmpGb}}', - gbram: '{{lang_gbRam}}', - kvmstate: '{{lang_kvmSupport}}', - badsectors: '{{lang_reallocatedSectors}}', - clientip: '{{lang_ip}}', - state: '{{lang_usageState}}', - location: '{{lang_location}}' -}; - -slxLocations = {{{locations}}}; - -var slxFilterDel = '{{delimiter}}'; - - -document.addEventListener("DOMContentLoaded", function () { - - /* some objects */ - var $columnSelect = $('#columnSelect'); - $modal = $('#modal-add-filter'); - $queryForm = $('#queryForm'); - - var columns= {{{columns}}}; - - /* add options to column select */ - for (var key in columns) { - $columnSelect.append($('<option>', { - value: key, text: (slxFilterNames[key] ? slxFilterNames[key] : key) })); - }; - - - /* initialize selectize */ - filterSelectize = $('#filterInput').selectize({ - delimiter: slxFilterDel, - plugins: ['restore_on_backspace', 'remove_button'], - create: function(input) { - return {value: input, text: input} - }, - onChange: function() { - // if (initComplete && !$('#filterInput').is(':focus')) { - // reload(); - // } - } - })[0].selectize; - /* add query */ - var str = "{{{query}}}"; - var eExp = /^(\w+)\s*([=><!~]+)\s*(.*)$/; - str.split(slxFilterDel).forEach(function(v) { - var match = eExp.exec(v); - if (match && match.length === 4) { - addFilter(match[1], match[2], match[3]); - } else { - filterSelectize.addOption({value: v, text: v}); - filterSelectize.addItem(v); - } - }); - - $('#columnSelect').on('change', function() { - $('#operatorSelect option').remove(); - var col = $('#columnSelect').val(); - var opS = $('#operatorSelect'); - columns[col]['op'].sort(myOpSort); - columns[col]['op'].forEach(function (v) { - $(opS).append($('<option>', { - value: v, text: v - })); - }); - /* also set the type of the input */ - if (columns[col]['type'] == 'date') { - $('#argumentInput').datepicker({format : 'yyyy-mm-dd'}); - $('#argumentSelect').hide(); - } else if(columns[col]['type'] == 'enum') { - $('#argumentInput').hide(); - $('#argumentSelect').show(); - columns[col]['values'].forEach(function (v) { - var t = v; - if (col === 'location' && slxLocations['L' + v]) { - t = slxLocations['L' + v].pad + ' ' + slxLocations['L' + v].name; - } - $('#argumentSelect').append($('<option>', { value: v, text: t })); - }); - } else { - $('#argumentInput').datepicker('remove'); - $('#argumentSelect option').remove(); - $('#argumentInput').show(); - $('#argumentSelect').hide(); - } - }); - - initButtons(); - -}, false); - - -function initButtons() { - ['gbram', 'hddgb', 'realcores', 'kvmstate', 'lastseen', 'clientip'].forEach(function (v) { - var $sortBtn = $('#sortButton-' + v); - var order = 'up'; /* default */ - if ($('#sortColumn').val() == v) { - $sortBtn.addClass('btn-success'); - order = $('#sortDirection').val() == 'ASC' ? 'up' : 'down'; - } - $sortBtn.html('<span class="glyphicon glyphicon-arrow-' + order + '"></span>'); - $sortBtn.attr('onclick', 'toggleButton(\'' + v + '\');'); - }); -} - -function toggleButton(v) { - var $sortBtn = $('#sortButton-' + v); - var $col = $('#sortColumn'); - var $dir = $('#sortDirection'); - if ($col.val() == v) { - /* toggle direction */ - var newDir = $dir.val() == 'ASC' ? 'DESC' : 'ASC'; - $dir.val(newDir); - /* update button */ - var order = newDir == 'ASC' ? 'up' : 'down'; - $sortBtn.html('<span class="glyphicon glyphicon-arrow-' + order + '"></span>'); - } else { - /* remove "btn-success" from current sorting */ - $('#sortButton-'+v).removeClass('btn-success'); - $sortBtn.addClass('btn-success'); - $col.val(v); - $dir = 'ASC'; - } - refresh(); -} - -function popupFilter(field) { - if (field != null) { - $('#columnSelect').val(field); - } - $('#columnSelect').change(); - $modal.modal('show'); -} - -function addFilterFromForm() { - var argument1 = $('#argumentInput').val(); - var argument2 = $('#argumentSelect').val(); - var argument = argument1 == '' ? argument2 : argument1; - var col = $('#columnSelect').val(); - var op = $('#operatorSelect').val(); - - addFilter(col, op, argument); - refresh(); // TODO: AJAX -} - -function addFilter(col, op, argument) { - var filterValue = col + ' ' + op + ' ' + argument; - var filterText = filterValue; - var displayArgument = argument; - if (col === 'location' && slxLocations['L' + argument]) { - displayArgument = slxLocations['L' + argument].name; - } - if (slxFilterNames[col]) { - filterText = slxFilterNames[col] + ' ' + op + ' ' + displayArgument; - } - filterSelectize.addOption({value: filterValue, text: filterText}); - filterSelectize.addItem(filterValue); -} - -function toggleSort(field) { - $('#sort').val(field + ' ' + order); - refresh(); -} - -/* equal sign should always be first, the rest doesn't matter*/ -function myOpSort(a,b) { - if (a == '=') { return -1; } - else if (a == b) {return 0} - else { return 1;} - -} - -function refresh() { - console.log('refresh'); - $queryForm.submit(); /* TODO: use AJAX */ -} -// --></script> |