applications/luci-olsr: Use jsoninfo instead of txtinfo as data source.
[project/luci.git] / applications / luci-olsr / luasrc / view / status-olsr / hna.htm
index 0e153bb..689bafd 100644 (file)
@@ -2,6 +2,7 @@
 LuCI - Lua Configuration Interface
 Copyright 2008 Steven Barth <steven@midlink.org>
 Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net>
+Copyright 2011 Manuel Munz <freifunk at somakoma dot de>
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
@@ -9,24 +10,120 @@ You may obtain a copy of the License at
 
        http://www.apache.org/licenses/LICENSE-2.0
 
-$Id$
-
 -%>
+
+<%
+local i = 1
+
+if luci.http.formvalue("status") == "1" then
+       local rv = {}
+       for k, hna in ipairs(hna) do
+               rv[#rv+1] = {
+                       proto = hna["proto"],
+                       destination = hna["destination"],
+                       genmask = hna["genmask"],
+                       gateway = hna["gateway"],
+                       hostname = hna["hostname"],
+                       validityTime = hna["validityTime"]
+                       }
+       end
+       luci.http.prepare_content("application/json")
+       luci.http.write_json(rv)
+       return
+end
+%>
+
 <%+header%>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript">//<![CDATA[
+XHR.poll(10, '<%=REQUEST_URI%>', { status: 1 },
+       function(x, info)
+       {
+       var hnadiv = document.getElementById('olsrd_hna');
+       if (hnadiv)
+       {
+               var s = '';
+               for (var idx = 0; idx < info.length; idx++)
+               {
+                       var hna = info[idx];
+                       var linkgw = ''
+                       s += '<tr class="cbi-section-table-row cbi-rowstyle-'+(1 + (idx % 2))+' proto-' + hna.proto + '">'
+                       if (hna.proto == '6') {
+                               linkgw = '<a href="http://[' + hna.gateway + ']/cgi-bin-status.html">' + hna.gateway + '</a>'
+                       } else {
+                               linkgw = '<a href="http://' + hna.gateway + '/cgi-bin-status.html">' + hna.gateway + '</a>'
+                       }
+
+                       if (hna.validityTime != undefined) {
+                               validity = hna.validityTime + 's'
+                       } else {
+                               validity = '-'
+                       }
+
+                       if (hna.hostname != undefined) {
+                               hostname = ' / <a href="http://' + hna.hostname + '/cgi-bin-status.html">' + hna.hostname + '</a>'
+                       } else {
+                               hostname = ''
+                       }
+
+                       s += String.format(
+                                '<td class="cbi-section-table-cell">%s</td>' +
+                                '<td class="cbi-section-table-cell">%s</td>' +
+                                '<td class="cbi-section-table-cell">%s</td>', hna.destination + '/' + hna.genmask, linkgw + hostname, validity
+                                )
+                       s += '</tr>'
+               }
+               hnadiv.innerHTML = s;
+       }
+}
+);
+//]]></script>
+
 <h2><a id="content" name="content"><%:Active host net announcements%></a></h2>
-<p><%:Overview of currently active OLSR host net announcements%></p>
-<br />
-<table class="smalltext" cellspacing="0" cellpadding="6">
-<tr>
-<th><%:Announced network%></th>
-<th><%:OLSR gateway%></th>
-</tr>
-<% for k, route in ipairs(routes) do %>
-<tr>
-<td><%=route.Destination%></td>
-<td><a href="http://<%=route.Gateway%>"><%=route.Gateway%></a></td>
-</tr>
-<% end %>
-</table>
-<br />
+
+<div id="togglebuttons"></div>
+<fieldset class="cbi-section">
+
+       <legend><%:Overview of currently active OLSR host net announcements%></legend>
+       <table class="cbi-section-table">
+               <thead>
+               <tr class="cbi-section-table-titles">
+                       <th class="cbi-section-table-cell"><%:Announced network%></th>
+                       <th class="cbi-section-table-cell"><%:OLSR gateway%></th>
+                       <th class="cbi-section-table-cell"><%:Validity Time%></th>
+               </tr>
+
+               </thead>
+               <tbody id="olsrd_hna">
+               <% for k, route in ipairs(hna) do %>
+
+               <tr class="cbi-section-table-row cbi-rowstyle-<%=i%> proto-<%=hna[k].proto%>">
+                       <td class="cbi-section-table-cell"><%=hna[k].destination%>/<%=hna[k].genmask%> </td>
+                       <td class="cbi-section-table-cell">
+                               <% if hna[k].proto == '6' then %>
+                               <a href="http://[<%=hna[k].gateway%>]/cgi-bin-status.html"><%=hna[k].gateway%></a>
+                               <% else %>
+                               <a href="http://<%=hna[k].gateway%>/cgi-bin-status.html"><%=hna[k].gateway%></a>
+                               <% end %>
+                               <% if hna[k].hostname then %>
+                                / <a href="http://<%=hna[k].hostname%>/cgi-bin-status.html"><%=hna[k].hostname%></a>
+                               <% end %>
+                       </td>
+                       <% if hna[k].validityTime then
+                               validity = hna[k].validityTime .. 's'
+                       else
+                               validity = '-'
+                       end %>
+
+                       <td class="cbi-section-table-cell"><%=validity%></td>
+               </tr>
+
+               <% i = ((i % 2) + 1)
+               end %>
+               </tbody>
+       </table>
+</fieldset>
+
+<%+status-olsr/common_js%>
 <%+footer%>