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 = '
+
+
+ | 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').' |
+
';
// Prepare Array for Devices with Port value
@@ -383,13 +389,18 @@
'.lang('Network_UnassignedDevices').'
+
+
+ |
+ '.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').' |
+
';
$str_table_rows = "";
@@ -852,7 +863,6 @@
// init Assign/Unassign buttons
initButtons()
-