diff --git a/WebContent/html/webpages/administration/adminApprove.jsp b/WebContent/html/webpages/administration/adminApprove.jsp index 1820d59..e08853e 100644 --- a/WebContent/html/webpages/administration/adminApprove.jsp +++ b/WebContent/html/webpages/administration/adminApprove.jsp @@ -1,6 +1,6 @@ <%@ page import = "database.*,entities.*" %> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" - pageEncoding="ISO-8859-1"%> +pageEncoding="ISO-8859-1"%>
@@ -127,7 +127,10 @@Ticket ID | @@ -145,16 +148,16 @@ <% - Ticket[] tickets = TicketQueries.getTickets(); - String ticketStr = Ticket.arrayToString(tickets); +Ticket[] tickets = TicketQueries.getTickets(); +String ticketStr = Ticket.arrayToString(tickets); %> - - - + function fuzzyFilter(ticketArray) { + // First pass: filter by id + var searchText = document.getElementsByName('searchBar')[0].value; + var options = { + pre: "", + post: '', + extract: function(arg) {return ''+arg.id;} + } + var idFilterResults = fuzzy.filter(searchText, ticketArray, options); + for (var i = idFilterResults.length - 1; i >= 0; i--) { + idFilterResults[i].original.id=idFilterResults[i].string; + } + // Pass #2: filter by status + options.extract=function(arg) {return arg.status;} + var statusFilterResults = fuzzy.filter(searchText, ticketArray, options) + for (var i = statusFilterResults.length-1;i >=0; i--) { + statusFilterResults[i].original.status=statusFilterResults[i].string; + } + // Pass #3: filter by username + options.extract=function(arg) {return arg.username;} + var usernameFilterResults = fuzzy.filter(searchText, ticketArray, options) + for (var i = usernameFilterResults.length-1;i >=0; i--) { + usernameFilterResults[i].original.username=usernameFilterResults[i].string; + } + // Pass #4: filter by locationname + options.extract=function(arg) {return arg.locationname;} + var locationnameFilterResults = fuzzy.filter(searchText, ticketArray, options) + for (var i = locationnameFilterResults.length-1;i >=0; i--) { + locationnameFilterResults[i].original.locationname=locationnameFilterResults[i].string; + } + // Pass #5: filter by devicename + options.extract=function(arg) {return arg.devicename;} + var devicenameFilterResults = fuzzy.filter(searchText, ticketArray, options) + for (var i = devicenameFilterResults.length-1;i >=0; i--) { + devicenameFilterResults[i].original.devicename=devicenameFilterResults[i].string; + } + // Pass #6: filter by return + options.extract=function(arg) {return arg.return;} + var returnFilterResults = fuzzy.filter(searchText, ticketArray, options) + for (var i = returnFilterResults.length-1;i >=0; i--) { + returnFilterResults[i].original.return=returnFilterResults[i].string; + } + + var filteredResults = union([idFilterResults, statusFilterResults, usernameFilterResults, locationnameFilterResults, devicenameFilterResults, returnFilterResults]); + + // this returns a filtered array of objects with attributes 'index', 'original', 'score', and 'string' + // I am interested in the 'original' attribute, which is the relevant object exactly as it was submitted, + // and the 'string' attribute, which is the attribute that was compared against with matching characters conveniantly bolded + var finalResults = new Array(filteredResults.length); + + for (var i = 0; i < finalResults.length; i++) { + finalResults[i]= { + id:filteredResults[i].original.id, + status:filteredResults[i].original.status, + username:filteredResults[i].original.username, + locationname:filteredResults[i].original.locationname, + devicename:filteredResults[i].original.devicename, + return:filteredResults[i].original.return, + permanent:filteredResults[i].original.permanent, + }; + } + + return finalResults; + } + function union(arrays) { + if(arrays.length == 2) + return(unionBaseCase(arrays[0],arrays[1])) + if(arrays.length == 1) + return(arrays[0]) + else{ + var pivot = Math.floor(arrays.length/2); + var arrayA=arrays.slice(0,pivot); + var arrayB=arrays.slice(pivot); + return union([union(arrayA),union(arrayB)]); + } + } + +function unionBaseCase(array1,array2) { + var results = new Array(); + while(array1.length>0 && array2.length>0) { + if(array1[0].index == array2[0].index){ + array1.splice(0,1); + } + else + results.push((array1[0].index > array2[0].index ? array2.splice(0,1)[0] : array1.splice(0,1)[0])) + } + results = results.concat(array1); + results = results.concat(array2); + return results; +} + + +
---|