diff --git a/front/css/app.css b/front/css/app.css index 306f8dde..abfae4b2 100755 --- a/front/css/app.css +++ b/front/css/app.css @@ -1238,6 +1238,13 @@ input[readonly] { /* background-color:red; */ } +.sort-btn { + + right: 5px; + top: 50%; + transform: translateY(-50%); + cursor: pointer; +} /* ----------------------------------------------------------------- */ diff --git a/front/js/ui_components.js b/front/js/ui_components.js index 10292579..20da9d48 100755 --- a/front/js/ui_components.js +++ b/front/js/ui_components.js @@ -270,6 +270,43 @@ function copyToClipboard(buttonElement) { } } +// ----------------------------------------------------------------------------- +// Simple Sortable Table columns +// ----------------------------------------------------------------------------- + +function sortColumn(element) { + var th = $(element).closest('th'); + var table = th.closest('table'); + var columnIndex = th.index(); + var ascending = !th.data('asc'); + sortTable(table, columnIndex, ascending); + th.data('asc', ascending); +} + +function sortTable(table, columnIndex, ascending) { + var tbody = table.find('tbody'); + var rows = tbody.find('tr').toArray().sort(comparer(columnIndex)); + if (!ascending) { + rows = rows.reverse(); + } + for (var i = 0; i < rows.length; i++) { + tbody.append(rows[i]); + } +} + +function comparer(index) { + return function(a, b) { + var valA = getCellValue(a, index); + var valB = getCellValue(b, index); + return $.isNumeric(valA) && $.isNumeric(valB) ? valA - valB : valA.localeCompare(valB); + }; +} + +function getCellValue(row, index) { + return $(row).children('td').eq(index).text(); +} + + // ----------------------------------------------------------------------------- // initialize // ----------------------------------------------------------------------------- diff --git a/front/network.php b/front/network.php index 76804b70..41243882 100755 --- a/front/network.php +++ b/front/network.php @@ -7,6 +7,7 @@ define('badge_offline', '
Offline
'); define('circle_online', '
 
'); define('circle_offline', '
 
'); + define('sortable_column', ' '); ?> @@ -140,13 +141,18 @@ '; $str_table = ' + + + + + + + + + - - - - - + '; // Prepare Array for Devices with Port value @@ -383,13 +389,18 @@ '.lang('Network_UnassignedDevices').'
Port'.lang('Network_Table_State').''.lang('Network_Table_Hostname').sortable_column.''.lang('Network_Table_IP').sortable_column.''.lang('Network_ManageLeaf').'
Port'.lang('Network_Table_State').''.lang('Network_Table_Hostname').''.lang('Network_Table_IP').''.lang('Network_ManageLeaf').'
+ + + + + + + + + - - - - - + '; $str_table_rows = ""; @@ -852,7 +863,6 @@ // init Assign/Unassign buttons initButtons() -
'.lang('Network_Table_State').''.lang('Network_Table_Hostname').sortable_column.''.lang('Network_Table_IP').sortable_column.''.lang('Network_Assign').'
'.lang('Network_Table_State').''.lang('Network_Table_Hostname').''.lang('Network_Table_IP').''.lang('Network_Assign').'