summaryrefslogtreecommitdiffstats
path: root/provisioning-listdevices-html.lsp
diff options
context:
space:
mode:
Diffstat (limited to 'provisioning-listdevices-html.lsp')
-rw-r--r--provisioning-listdevices-html.lsp153
1 files changed, 104 insertions, 49 deletions
diff --git a/provisioning-listdevices-html.lsp b/provisioning-listdevices-html.lsp
index c511d1e..79c2b32 100644
--- a/provisioning-listdevices-html.lsp
+++ b/provisioning-listdevices-html.lsp
@@ -12,9 +12,19 @@ html = require("acf.html")
<script type="text/javascript">
if (typeof $.tablesorter == 'undefined') {
document.write('<script type="text/javascript" src="<%= html.html_escape(page_info.wwwprefix) %>/js/jquery.tablesorter.js"><\/script>');
+ document.write('<script type="text/javascript" src="<%= html.html_escape(page_info.wwwprefix) %>/js/jquery.tablesorter.widgets.js"><\/script>');
+ document.write('<link href="<%= html.html_escape(page_info.wwwprefix..page_info.staticdir) %>/tablesorter/jquery.tablesorter.pager.css" rel="stylesheet">');
+ document.write('<script type="text/javascript" src="<%= html.html_escape(page_info.wwwprefix) %>/js/widgets/widget-pager.js"><\/script>');
}
</script>
+<% -- Determine all of the groups
+local columns = {"device_id"}
+for i,v in ipairs( view.value.groups.value ) do
+ columns[#columns+1] = v.name
+end
+%>
+
<script type="text/javascript">
<% -- Since we're including createdevice as a component, we break the automatic redirect
if session.createdeviceresult and not session.createdeviceresult.errtxt then
@@ -28,74 +38,119 @@ html = require("acf.html")
%>
$(document).ready(function() {
- $("#list").tablesorter({headers: {0:{sorter: false}}, widgets: ['zebra']});
- $(".deletedevice").click(function(){ return confirm("Are you sure you want to delete this device?")});
+ // The following is a hack to include a multiline string
+ var MultiString = function(f) {
+ return f.toString().split('\n').slice(1, -1).join('\n');
+ }
+ var actions = MultiString(function() {/**
+ <%
+ local device_id = cfe({ type="hidden", value="REPLACEME" })
+ local redir = cfe({ type="hidden", value=page_info.orig_action })
+ if viewlibrary.check_permission("editdevice") then
+ htmlviewfunctions.displayitem(cfe({type="link", value={device_id=device_id, redir=redir}, label="", option="Edit", action="editdevice"}), page_info, -1)
+ end
+ if viewlibrary.check_permission("overridedeviceparams") then
+ htmlviewfunctions.displayitem(cfe({type="link", value={device_id=device_id, redir=redir}, label="", option="Params", action="overridedeviceparams"}), page_info, -1)
+ elseif viewlibrary.check_permission("editdeviceparams") then
+ htmlviewfunctions.displayitem(cfe({type="link", value={device_id=device_id, redir=redir}, label="", option="Params", action="editdeviceparams"}), page_info, -1)
+ end
+ if viewlibrary.check_permission("getdevicevalues") then
+ htmlviewfunctions.displayitem(cfe({type="form", value={value=device_id, id=cfe({type="hidden", value="device_id"}), viewtype=cfe({type="hidden", value="templated"})}, label="", option="View", action="getdevicevalues"}), page_info, -1)
+ end
+ if viewlibrary.check_permission("deletedevice") then
+ htmlviewfunctions.displayitem(cfe({type="form", value={device_id=device_id}, label="", option="Delete", action="deletedevice", class="deletedevice"}), page_info, -1)
+ end
+ %>
+ **/});
+
+ $("#list").tablesorter({headers: {0:{sorter: false}}, widgets: ['zebra', 'filter', 'pager'], widgetOptions: {
+ // Filtering is handled by the server
+ filter_serversideFiltering: true,
+
+ // We can put the page number and size here, filtering and sorting handled by pager_customAjaxUrl
+ pager_ajaxUrl : '<%= html.html_escape(page_info.script .. page_info.orig_action) %>?viewtype=json&page={page+1}&pagesize={size}',
+
+ // Modify the url after all processing has been applied to handle filtering and sorting
+ pager_customAjaxUrl: function(table, url) {
+ var columns = ["action", "<%= table.concat(columns, '", "') %>"];
+ var directions = ["asc", "desc"];
+ for (var s=0; s<table.config.sortList.length; s++) {
+ // 0=column number, 1=direction(0 is asc)
+ if ((table.config.sortList[s][0] < columns.length) && (table.config.sortList[s][1] < directions.length)) {
+ url += "&orderby."+(s+1)+".column="+columns[table.config.sortList[s][0]]+"&orderby."+(s+1)+".direction="+directions[table.config.sortList[s][1]]
+ }
+ }
+ for (var f=0; f<table.config.pager.currentFilters.length; f++) {
+ var filter = table.config.pager.currentFilters[f];
+ if (filter.trim()) {
+ url += "&filter."+columns[f]+"="+encodeURIComponent(filter.trim());
+ }
+ }
+ return url;
+ },
+
+ // process ajax so that the following information is returned:
+ // [ total_rows (number), rows (array of arrays), headers (array; optional) ]
+ pager_ajaxProcessing: function(data){
+ if (data && data.value && data.value.result) {
+ rows = [];
+ for ( r=0; r<data.value.result.value.length; r++) {
+ row=[];
+ row[0] = actions.replace(/REPLACEME/g, data.value.result.value[r].device_id);
+ <%
+ for c,n in ipairs(columns) do
+ print("row["..c.."] = data.value.result.value[r]['"..html.html_escape(n).."'];")
+ end
+ %>
+ rows.push(row);
+ }
+ return [ parseInt(data.value.rowcount.value), rows];
+ }
+ }
+ }})
+ .bind('pagerComplete', function(e, c){
+ $(".deletedevice").click(function(){ return confirm("Are you sure you want to delete this device?")});
+ });
});
</script>
<% htmlviewfunctions.displaycommandresults({"deletedevice", "editdevice", "editdeviceparams", "overridedeviceparams"}, session) %>
<% htmlviewfunctions.displaycommandresults({"createdevice"}, session, true) %>
-<% -- Determine all of the groups
-local tmp = {}
-for k,v in ipairs( view.value ) do
- for g,c in pairs(v) do
- if not tmp[g] then tmp[g] = true end
- end
-end
-local display = {}
-for n in pairs(tmp) do
- if n ~= "device_id" then
- display[#display+1] = n
- end
-end
-table.sort(display)
-%>
-
<% local header_level = htmlviewfunctions.displaysectionstart(view, page_info) %>
<table id="list" class="tablesorter"><thead>
<tr>
- <th>Action</th>
+ <th class="filter-false remove sorter-false">Action</th>
<th>Device ID</th>
- <% for i,n in ipairs(display) do %>
- <th><%= string.gsub(n, "^.", string.upper) %>
+ <% for i,g in ipairs(view.value.groups.value) do %>
+ <th><%= html.html_escape(g.label) %></th>
<% end %>
</tr>
</thead><tbody>
-<% local device_id = cfe({ type="hidden", value="" }) %>
-<% local redir = cfe({ type="hidden", value=page_info.orig_action }) %>
-<% for k,v in ipairs( view.value ) do %>
- <tr>
- <td>
- <% device_id.value = v.device_id %>
- <% if viewlibrary.check_permission("editdevice") then %>
- <% htmlviewfunctions.displayitem(cfe({type="link", value={device_id=device_id, redir=redir}, label="", option="Edit", action="editdevice"}), page_info, -1) %>
- <% end %>
- <% if viewlibrary.check_permission("overridedeviceparams") then %>
- <% htmlviewfunctions.displayitem(cfe({type="link", value={device_id=device_id, redir=redir}, label="", option="Params", action="overridedeviceparams"}), page_info, -1) %>
- <% elseif viewlibrary.check_permission("editdeviceparams") then %>
- <% htmlviewfunctions.displayitem(cfe({type="link", value={device_id=device_id, redir=redir}, label="", option="Params", action="editdeviceparams"}), page_info, -1) %>
- <% end %>
- <% if viewlibrary.check_permission("getdevicevalues") then %>
- <% htmlviewfunctions.displayitem(cfe({type="form", value={value=device_id, id=cfe({type="hidden", value="device_id"}), viewtype=cfe({type="hidden", value="templated"})}, label="", option="View", action="getdevicevalues"}), page_info, -1) %>
- <% end %>
- <% if viewlibrary.check_permission("deletedevice") then %>
- <% htmlviewfunctions.displayitem(cfe({type="form", value={device_id=device_id}, label="", option="Delete", action="deletedevice", class="deletedevice"}), page_info, -1) %>
- <% end %>
- </td>
- <td><%= html.html_escape(v.device_id) %></td>
- <% for i,n in ipairs(display) do %>
- <td><%= html.html_escape(v[n]) %></td>
- <% end %>
- </tr>
-<% end %>
</tbody>
</table>
+<div id="pager" class="pager">
+ <form>
+ Page: <select class="gotoPage"></select>
+ <img src="<%= html.html_escape(page_info.wwwprefix..page_info.staticdir) %>/tablesorter/first.png" class="first"/>
+ <img src="<%= html.html_escape(page_info.wwwprefix..page_info.staticdir) %>/tablesorter/prev.png" class="prev"/>
+ <span class="pagedisplay"></span> <!-- this can be any element, including an input -->
+ <img src="<%= html.html_escape(page_info.wwwprefix..page_info.staticdir) %>/tablesorter/next.png" class="next"/>
+ <img src="<%= html.html_escape(page_info.wwwprefix..page_info.staticdir) %>/tablesorter/last.png" class="last"/>
+ <select class="pagesize">
+ <option selected="selected" value="10">10</option>
+ <option value="20">20</option>
+ <option value="30">30</option>
+ <option value="40">40</option>
+ </select>
+ </form>
+</div>
+
<% if view.errtxt then %>
<p class="error"><%= html.html_escape(view.errtxt) %></p>
<% end %>
-<% if #view.value == 0 then %>
+<% if #view.value.result.value == 0 then %>
<p>No devices found</p>
<% end %>
<% htmlviewfunctions.displaysectionend(header_level) %>