luci-app-babeld: use table markup for overview tables
authorJo-Philipp Wich <jo@mein.io>
Fri, 28 Apr 2023 22:23:56 +0000 (00:23 +0200)
committerJo-Philipp Wich <jo@mein.io>
Fri, 28 Apr 2023 22:25:02 +0000 (00:25 +0200)
Fixes: #6337
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit 70fb460c00d6c641a39f0cf97eb7eb846bee51e2)

applications/luci-app-babeld/root/www/luci-static/resources/babeld.js

index 864010ef6c8de306d4d0bd7c0e1070a5ed75d5aa..b2468dfbea11840bda8c1f237b2b82c0effded51 100644 (file)
@@ -28,26 +28,26 @@ function renderTableXRoutes(data, target_id) {
         title.appendChild(document.createTextNode('X-Routes ' + protocol));
         target.appendChild(title);
 
-        var table = document.createElement('div');
+        var table = document.createElement('table');
         table.setAttribute('class', 'table');
         table.setAttribute('id', 'babel_overview_xroutes_' + protocol);
 
-        var headerRow = document.createElement('div');
+        var headerRow = document.createElement('tr');
         headerRow.setAttribute('class', 'tr table-titles');
-        var headerContent = '<div class="th" style="font-weight: 700;">' + protocol + ' Prefix</div>\
-                             <div class="th" style="font-weight: 700;">Metric</div>\
-                             <div class="th" style="font-weight: 700;">Source-Prefix</div>';
+        var headerContent = '<th class="th" style="font-weight: 700;">' + protocol + ' Prefix</th>\
+                             <th class="th" style="font-weight: 700;">Metric</th>\
+                             <th class="th" style="font-weight: 700;">Source-Prefix</th>';
 
         headerRow.innerHTML = headerContent;
         table.appendChild(headerRow);
 
 
         for (var prefix in data[protocol]) {
-            var prefixRow = document.createElement('div');
+            var prefixRow = document.createElement('tr');
             prefixRow.setAttribute('class', 'tr');
-            var prefixContent = '<div class="td" data-title="xroutes_' + protocol + '_prefix">' + prefix + '</div>\
-                                 <div class="td" data-title="xroutes_' + protocol + '_metric">' + data[protocol][prefix]["metric"] + '</div>\
-                                 <div class="td" data-title="xroutes_' + protocol + '_src-prefix">' + data[protocol][prefix]["src-prefix"] + '</div>';
+            var prefixContent = '<td class="td" data-title="xroutes_' + protocol + '_prefix">' + prefix + '</td>\
+                                 <td class="td" data-title="xroutes_' + protocol + '_metric">' + data[protocol][prefix]["metric"] + '</td>\
+                                 <td class="td" data-title="xroutes_' + protocol + '_src-prefix">' + data[protocol][prefix]["src-prefix"] + '</td>';
 
             prefixRow.innerHTML = prefixContent;
             table.appendChild(prefixRow);
@@ -64,45 +64,45 @@ function renderTableRoutes(data, target_id) {
         title.appendChild(document.createTextNode('Routes ' + protocol));
         target.appendChild(title);
 
-        var table = document.createElement('div');
+        var table = document.createElement('table');
         table.setAttribute('class', 'table');
         table.setAttribute('id', 'babel_overview_routes_' + protocol);
 
-        var headerRow = document.createElement('div');
+        var headerRow = document.createElement('tr');
         headerRow.setAttribute('class', 'tr table-titles');
-        var headerContent = '<div class="th" style="font-weight: 700;">' + protocol + ' Prefix</div>\
-                             <div class="th" style="font-weight: 700;">Source-Prefix</div>\
-                             <div class="th" style="font-weight: 700;">Route-Metric</div>\
-                             <div class="th" style="font-weight: 700;">Route Smoothed Metric</div>\
-                             <div class="th" style="font-weight: 700;">Refmetric</div>\
-                             <div class="th" style="font-weight: 700;">ID</div>\
-                             <div class="th" style="font-weight: 700;">Seq. No.</div>\
-                             <div class="th" style="font-weight: 700;">Channes</div>\
-                             <div class="th" style="font-weight: 700;">Age</div>\
-                             <div class="th" style="font-weight: 700;">Via</div>\
-                             <div class="th" style="font-weight: 700;">Nexthop</div>\
-                             <div class="th" style="font-weight: 700;">Installed</div>\
-                             <div class="th" style="font-weight: 700;">Feasible</div>';
+        var headerContent = '<th class="th" style="font-weight: 700;">' + protocol + ' Prefix</th>\
+                             <th class="th" style="font-weight: 700;">Source-Prefix</th>\
+                             <th class="th" style="font-weight: 700;">Route-Metric</th>\
+                             <th class="th" style="font-weight: 700;">Route Smoothed Metric</th>\
+                             <th class="th" style="font-weight: 700;">Refmetric</th>\
+                             <th class="th" style="font-weight: 700;">ID</th>\
+                             <th class="th" style="font-weight: 700;">Seq. No.</th>\
+                             <th class="th" style="font-weight: 700;">Channes</th>\
+                             <th class="th" style="font-weight: 700;">Age</th>\
+                             <th class="th" style="font-weight: 700;">Via</th>\
+                             <th class="th" style="font-weight: 700;">Nexthop</th>\
+                             <th class="th" style="font-weight: 700;">Installed</th>\
+                             <th class="th" style="font-weight: 700;">Feasible</th>';
 
         headerRow.innerHTML = headerContent;
         table.appendChild(headerRow);
 
         for (var prefix in data[protocol]) {
-            var prefixRow = document.createElement('div');
+            var prefixRow = document.createElement('tr');
             prefixRow.setAttribute('class', 'tr');
-            var prefixContent = '<div class="td" data-title="routes_' + protocol + '_prefix">' + prefix + '</div>\
-                                 <div class="td" data-title="routes_' + protocol + '_src-prefix">' + data[protocol][prefix]["src-prefix"] + '</div>\
-                                 <div class="td" data-title="routes_' + protocol + '_metric">' + data[protocol][prefix]["route_metric"] + '</div>\
-                                 <div class="td" data-title="routes_' + protocol + '_rout-smoothed-metric">' + data[protocol][prefix]["route_smoothed_metric"] + '</div>\
-                                 <div class="td" data-title="routes_' + protocol + '_refmetric">' + data[protocol][prefix]["refmetric"] + '</div>\
-                                 <div class="td" data-title="routes_' + protocol + '_id">' + data[protocol][prefix]["id"] + '</div>\
-                                 <div class="td" data-title="routes_' + protocol + '_seqno">' + data[protocol][prefix]["seqno"] + '</div>\
-                                 <div class="td" data-title="routes_' + protocol + '_channels">' + data[protocol][prefix]["channels"] + '</div>\
-                                 <div class="td" data-title="routes_' + protocol + '_age">' + data[protocol][prefix]["age"] + '</div>\
-                                 <div class="td" data-title="routes_' + protocol + '_via">' + data[protocol][prefix]["via"] + '</div>\
-                                 <div class="td" data-title="routes_' + protocol + '_nexthop">' + data[protocol][prefix]["nexthop"] + '</div>\
-                                 <div class="td" data-title="routes_' + protocol + '_installed">' + data[protocol][prefix]["installed"] + '</div>\
-                                 <div class="td" data-title="routes_' + protocol + '_feasible">' + data[protocol][prefix]["feasible"] + '</div>';
+            var prefixContent = '<td class="td" data-title="routes_' + protocol + '_prefix">' + prefix + '</td>\
+                                 <td class="td" data-title="routes_' + protocol + '_src-prefix">' + data[protocol][prefix]["src-prefix"] + '</td>\
+                                 <td class="td" data-title="routes_' + protocol + '_metric">' + data[protocol][prefix]["route_metric"] + '</td>\
+                                 <td class="td" data-title="routes_' + protocol + '_rout-smoothed-metric">' + data[protocol][prefix]["route_smoothed_metric"] + '</td>\
+                                 <td class="td" data-title="routes_' + protocol + '_refmetric">' + data[protocol][prefix]["refmetric"] + '</td>\
+                                 <td class="td" data-title="routes_' + protocol + '_id">' + data[protocol][prefix]["id"] + '</td>\
+                                 <td class="td" data-title="routes_' + protocol + '_seqno">' + data[protocol][prefix]["seqno"] + '</td>\
+                                 <td class="td" data-title="routes_' + protocol + '_channels">' + data[protocol][prefix]["channels"] + '</td>\
+                                 <td class="td" data-title="routes_' + protocol + '_age">' + data[protocol][prefix]["age"] + '</td>\
+                                 <td class="td" data-title="routes_' + protocol + '_via">' + data[protocol][prefix]["via"] + '</td>\
+                                 <td class="td" data-title="routes_' + protocol + '_nexthop">' + data[protocol][prefix]["nexthop"] + '</td>\
+                                 <td class="td" data-title="routes_' + protocol + '_installed">' + data[protocol][prefix]["installed"] + '</td>\
+                                 <td class="td" data-title="routes_' + protocol + '_feasible">' + data[protocol][prefix]["feasible"] + '</td>';
 
             prefixRow.innerHTML = prefixContent;
             table.appendChild(prefixRow);
@@ -119,35 +119,35 @@ function renderTableNeighbours(data, target_id) {
         title.appendChild(document.createTextNode('Neighbours ' + protocol));
         target.appendChild(title);
 
-        var table = document.createElement('div');
+        var table = document.createElement('table');
         table.setAttribute('class', 'table');
         table.setAttribute('id', 'babel_overview_neighbours_' + protocol);
 
-        var headerRow = document.createElement('div');
+        var headerRow = document.createElement('tr');
         headerRow.setAttribute('class', 'tr table-titles');
-        var headerContent = '<div class="th" style="font-weight: 700;">' + protocol + ' Neighbour</div>\
-                             <div class="th" style="font-weight: 700;">Device</div>\
-                             <div class="th" style="font-weight: 700;">Hello-Reach</div>\
-                             <div class="th" style="font-weight: 700;">RX cost</div>\
-                             <div class="th" style="font-weight: 700;">TX cost</div>\
-                             <div class="th" style="font-weight: 700;">RTT</div>\
-                             <div class="th" style="font-weight: 700;">Channel</div>\
-                             <div class="th" style="font-weight: 700;">Interface up</div>';
+        var headerContent = '<th class="th" style="font-weight: 700;">' + protocol + ' Neighbour</th>\
+                             <th class="th" style="font-weight: 700;">Device</th>\
+                             <th class="th" style="font-weight: 700;">Hello-Reach</th>\
+                             <th class="th" style="font-weight: 700;">RX cost</th>\
+                             <th class="th" style="font-weight: 700;">TX cost</th>\
+                             <th class="th" style="font-weight: 700;">RTT</th>\
+                             <th class="th" style="font-weight: 700;">Channel</th>\
+                             <th class="th" style="font-weight: 700;">Interface up</th>';
 
         headerRow.innerHTML = headerContent;
         table.appendChild(headerRow);
 
         for (var neighbour in data[protocol]) {
-            var neighbourRow = document.createElement('div');
+            var neighbourRow = document.createElement('tr');
             neighbourRow.setAttribute('class', 'tr');
-            var neighbourContent = '<div class="td" data-title="' + protocol + '_neighbour">' + neighbour + '</div>\
-                                    <div class="td" data-title="neighbours_' + protocol + '_dev">' + data[protocol][neighbour]["dev"] + '</div>\
-                                    <div class="td" data-title="neighbours_' + protocol + '_hello-reach">' + data[protocol][neighbour]["hello-reach"] + '</div>\
-                                    <div class="td" data-title="neighbours_' + protocol + '_rxcost">' + data[protocol][neighbour]["rxcost"] + '</div>\
-                                    <div class="td" data-title="neighbours_' + protocol + '_txcost">' + data[protocol][neighbour]["txcost"] + '</div>\
-                                    <div class="td" data-title="neighbours_' + protocol + '_rtt">' + data[protocol][neighbour]["rtt"] + '</div>\
-                                    <div class="td" data-title="neighbours_' + protocol + '_channel">' + data[protocol][neighbour]["channel"] + '</div>\
-                                    <div class="td" data-title="neighbours_' + protocol + '_if_up">' + data[protocol][neighbour]["if_up"] + '</div>';
+            var neighbourContent = '<td class="td" data-title="' + protocol + '_neighbour">' + neighbour + '</td>\
+                                    <td class="td" data-title="neighbours_' + protocol + '_dev">' + data[protocol][neighbour]["dev"] + '</td>\
+                                    <td class="td" data-title="neighbours_' + protocol + '_hello-reach">' + data[protocol][neighbour]["hello-reach"] + '</td>\
+                                    <td class="td" data-title="neighbours_' + protocol + '_rxcost">' + data[protocol][neighbour]["rxcost"] + '</td>\
+                                    <td class="td" data-title="neighbours_' + protocol + '_txcost">' + data[protocol][neighbour]["txcost"] + '</td>\
+                                    <td class="td" data-title="neighbours_' + protocol + '_rtt">' + data[protocol][neighbour]["rtt"] + '</td>\
+                                    <td class="td" data-title="neighbours_' + protocol + '_channel">' + data[protocol][neighbour]["channel"] + '</td>\
+                                    <td class="td" data-title="neighbours_' + protocol + '_if_up">' + data[protocol][neighbour]["if_up"] + '</td>';
 
             neighbourRow.innerHTML = neighbourContent;
             table.appendChild(neighbourRow);
@@ -163,25 +163,25 @@ function renderTableInfo(data, target_id) {
     title.appendChild(document.createTextNode('Info'));
     target.appendChild(title);
 
-    var table = document.createElement('div');
+    var table = document.createElement('table');
     table.setAttribute('class', 'table');
     table.setAttribute('id', 'babel_overview_info');
 
 
-    var headerRow = document.createElement('div');
+    var headerRow = document.createElement('tr');
     headerRow.setAttribute('class', 'tr table-titles');
-    var headerContent = '<div class="th" style="font-weight: 700;">Babeld Version</div>\
-                         <div class="th" style="font-weight: 700;">My-ID</div>\
-                         <div class="th" style="font-weight: 700;">Host</div>';
+    var headerContent = '<th class="th" style="font-weight: 700;">Babeld Version</th>\
+                         <th class="th" style="font-weight: 700;">My-ID</th>\
+                         <th class="th" style="font-weight: 700;">Host</th>';
 
     headerRow.innerHTML = headerContent;
     table.appendChild(headerRow);
 
-    var neighbourRow = document.createElement('div');
+    var neighbourRow = document.createElement('tr');
     neighbourRow.setAttribute('class', 'tr');
-    var neighbourContent = '<div class="td" data-title="info_babeld-version">' + data["babeld-version"] + '</div>\
-                            <div class="td" data-title="info_dev">' + data["my-id"] + '</div>\
-                            <div class="td" data-title="info_hello-reach">' + data["host"] + '</div>';
+    var neighbourContent = '<td class="td" data-title="info_babeld-version">' + data["babeld-version"] + '</td>\
+                            <td class="td" data-title="info_dev">' + data["my-id"] + '</td>\
+                            <td class="td" data-title="info_hello-reach">' + data["host"] + '</td>';
 
     neighbourRow.innerHTML = neighbourContent;
     table.appendChild(neighbourRow);