From 7e0641398b5e5dfc13caa28c06b9c0e75038b1a0 Mon Sep 17 00:00:00 2001 From: Ted Trask Date: Mon, 6 Jul 2015 15:43:11 -0400 Subject: Add server-side pagination/sorting/filtering to listrequests action using tablesorter --- provisioning-listrequests-html.lsp | 139 +++++++++++++++++++++++++++---------- 1 file changed, 103 insertions(+), 36 deletions(-) (limited to 'provisioning-listrequests-html.lsp') diff --git a/provisioning-listrequests-html.lsp b/provisioning-listrequests-html.lsp index 365f2db..9ddd3c0 100644 --- a/provisioning-listrequests-html.lsp +++ b/provisioning-listrequests-html.lsp @@ -12,6 +12,9 @@ html = require("acf.html") @@ -41,8 +44,85 @@ html = require("acf.html") %> $(document).ready(function() { - $("#list").tablesorter({headers: {1:{sorter:'digit'}, 3:{sorter:'ipAddress'}}, widgets: ['zebra']}); - $(".deleterequest").click(function(){ return confirm("Are you sure you want to delete this request?")}); + // The following is a hack to include a multiline string + var MultiString = function(f) { + return f.toString().split('\n').slice(1, -1).join('\n'); + } + <% local mac = cfe({ type="hidden", value="REPLACEME" }) %> + var actions = MultiString(function() {/** + <% + if viewlibrary.check_permission("deleterequest") then + htmlviewfunctions.displayitem(cfe({type="form", value={mac=mac}, label="", option="Delete", action="deleterequest", class="deleterequest" }), page_info, -1) + end + %> + **/}); + var foundactions = MultiString(function() {/** + <% + if viewlibrary.check_permission("searchdevices") then + htmlviewfunctions.displayitem(cfe({type="form", value={id=cfe({type="hidden", value="device_id"}), value=cfe({type="hidden", value="REPLACEME"})}, label="", option="Search", action="searchdevices" }), page_info, -1) + end + %> + **/}); + var missingactions = MultiString(function() {/** + <% + if viewlibrary.check_permission("createdevicefromrequest") then + htmlviewfunctions.displayitem(cfe({type="form", value={mac=mac}, label="", option="Create", action="createdevicefromrequest" }), page_info, -1) + end + %> + **/}); + + $("#list").tablesorter({headers: {1:{sorter:'digit'}, 3:{sorter:'ipAddress'}}, 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", "date", "mac", "ip", "agent", "device_id"]; + var directions = ["asc", "desc"]; + for (var s=0; s'+Date.UTC(data.value.result.value[r].date)+''+data.value.result.value[r].date; + row[2] = data.value.result.value[r].mac; + row[3] = data.value.result.value[r].ip; + row[4] = data.value.result.value[r].agent; + row[5] = data.value.result.value[r].device_id; + rows.push(row); + } + return [ parseInt(data.value.rowcount.value), rows]; + } + } + }}) + .bind('pagerComplete', function(e, c){ + $(".deleterequest").click(function(){ return confirm("Are you sure you want to delete this request?")}); + }); }); @@ -51,45 +131,32 @@ html = require("acf.html") <% local header_level = htmlviewfunctions.displaysectionstart(cfe({label="Requests"}), page_info) %> - - + + + -<% local mac = cfe({ type="hidden", value="" }) %> -<% for k,v in ipairs( view.value ) do %> - - - - - - - -<% end %>
ActionTimestampActionTimestamp MAC Address IP Address User AgentDevice ID
- <% mac.value = v.mac %> - <% if viewlibrary.check_permission("deleterequest") then %> - <% htmlviewfunctions.displayitem(cfe({type="form", value={mac=mac}, label="", option="Delete", action="deleterequest", class="deleterequest" }), page_info, -1) %> - <% end %> - <% if v.device_id then %> - <% if viewlibrary.check_permission("searchdevices") then %> - <% htmlviewfunctions.displayitem(cfe({type="form", value={id=cfe({type="hidden", value="device_id"}), value=cfe({type="hidden", value=v.device_id})}, label="", option="Search", action="searchdevices" }), page_info, -1) %> - <% end %> - <% else %> - <% if viewlibrary.check_permission("createdevicefromrequest") then %> - <% htmlviewfunctions.displayitem(cfe({type="form", value={mac=mac}, label="", option="Create", action="createdevicefromrequest" }), page_info, -1) %> - <% end %> - <% end %> - - - <% local date = {} - date.year, date.month, date.day, date.hour, date.min, date.sec, remainder = string.match(v.date, "(%d+)%-(%d+)%-(%d+) (%d+):(%d+):(%d+)") - local rem = string.match(v.date, "%.%d+$") - io.write((os.time(date) - 1318000000)..(rem or "")) %> - - <%= html.html_escape(v.date) %> - <%= html.html_escape(v.mac) %><%= html.html_escape(v.ip) %><%= html.html_escape(v.agent) %>
+ +
+
+ Page: + + + + + + +
+
+ <% htmlviewfunctions.displaysectionend(header_level) %> -- cgit v1.2.3