From 08d3858ebb732ac040a8b50a505058798b0b6150 Mon Sep 17 00:00:00 2001 From: Adam R Claxton Date: Thu, 20 Apr 2017 18:49:48 -0400 Subject: [PATCH 1/3] Buggy admin ticket search bar; pushing to debug on desktop --- .../webpages/administration/adminApprove.jsp | 324 ++++++++++++------ 1 file changed, 212 insertions(+), 112 deletions(-) diff --git a/WebContent/html/webpages/administration/adminApprove.jsp b/WebContent/html/webpages/administration/adminApprove.jsp index 737541d..3afa299 100644 --- a/WebContent/html/webpages/administration/adminApprove.jsp +++ b/WebContent/html/webpages/administration/adminApprove.jsp @@ -1,24 +1,24 @@ <%@ page import = "database.*,entities.*" %> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" - pageEncoding="ISO-8859-1"%> +pageEncoding="ISO-8859-1"%> - - - - - - - - - Synchrony Financial - - - - - - - - - - - - - - - - - -
-

Admin View Approvals

- - - - - - - - - - - - - -
Ticket IDRequestor NameLocation NameDevice NameStatusReturn Date
-
+ + .btn{ + margin-top: 15px; + } + + + + + + + + + + + +
+

Admin View Approvals

+
+ +
+ + + + + + + + + + + + + +
Ticket IDRequestor NameLocation NameDevice NameStatusReturn Date
+
<% - Ticket[] tickets = TicketQueries.getTickets(); - String ticketStr = Ticket.arrayToString(tickets); +Ticket[] tickets = TicketQueries.getTickets(); +String ticketStr = Ticket.arrayToString(tickets); %> - - - + var html = "" + tickets[id].id + "" + tickets[id].username + "" + tickets[id].locationname + "" + tickets[id].devicename + "" + tickets[id].status + "" + tickets[id].return + ""; + document.getElementById("tablemodal").innerHTML = html; + $("#ticketIDfield").val(tickets[id].id); + $("#deviceIDfield").val(tickets[id].deviceID); + $("#locationIDfield").val(tickets[id].location); + $("#Modal").show(); + } + + function closeModal(){ + $("#Modal").hide(); + } + 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, + }; + } + + 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; +} + + + \ No newline at end of file From b9d4c8565865107ea9d7198b559b0ef0c90d7aab Mon Sep 17 00:00:00 2001 From: Adam R Claxton Date: Fri, 21 Apr 2017 01:20:36 -0400 Subject: [PATCH 2/3] Ticket page search bar --- WebContent/html/webpages/administration/adminApprove.jsp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WebContent/html/webpages/administration/adminApprove.jsp b/WebContent/html/webpages/administration/adminApprove.jsp index 3afa299..f6d7f79 100644 --- a/WebContent/html/webpages/administration/adminApprove.jsp +++ b/WebContent/html/webpages/administration/adminApprove.jsp @@ -167,7 +167,7 @@ String ticketStr = Ticket.arrayToString(tickets); var searchbar = document.getElementsByName('searchBar'); searchbar[0].onkeyup = refresh; function refresh() { - populateTickets(fuzzyFilter(ticks)); + populateTickets(fuzzyFilter(JSON.parse(window.json))); //adds event listeners to all table records $("tr.entry").click(ticketAction); } From c1fe6d40999e083f55e91d3a784099161ea7c8a0 Mon Sep 17 00:00:00 2001 From: Adam R Claxton Date: Fri, 21 Apr 2017 01:26:36 -0400 Subject: [PATCH 3/3] Made device search rainbow --- .../html/webpages/administration/adminDeviceSettings.jsp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/WebContent/html/webpages/administration/adminDeviceSettings.jsp b/WebContent/html/webpages/administration/adminDeviceSettings.jsp index c2a24c8..b6a908f 100644 --- a/WebContent/html/webpages/administration/adminDeviceSettings.jsp +++ b/WebContent/html/webpages/administration/adminDeviceSettings.jsp @@ -359,7 +359,7 @@ function fuzzyFilter(deviceArray) ////// First pass: filter by device name var options = { - pre: "", + pre: "", post: '', extract: function(arg) {return arg.name;} } @@ -370,6 +370,7 @@ function fuzzyFilter(deviceArray) } ////// Second pass: filter by MAC address options.extract = function(arg) {return arg.mac;}; + options.pre = "span style='color: orange; font-size: 115%'>" var macFilterResults = fuzzy.filter(searchText, deviceArray, options); // replace releveant field with bolded string for (var i = macFilterResults.length - 1; i >= 0; i--) { @@ -377,6 +378,7 @@ function fuzzyFilter(deviceArray) } ////// Third pass: filter by Manufacture options.extract = function(arg) {return arg.manufacturer;}; + options.pre = "span style='color: gold; font-size: 115%'>" var manufacturerFilterResults = fuzzy.filter(searchText, deviceArray, options); // replace releveant field with bolded string for (var i = manufacturerFilterResults.length - 1; i >= 0; i--) { @@ -384,6 +386,7 @@ function fuzzyFilter(deviceArray) } ////// Fourth pass: filter by Hardware options.extract = function(arg) {return arg.hardware;}; + options.pre = "span style='color: green; font-size: 115%'>" var hardwareFilterResults = fuzzy.filter(searchText, deviceArray, options); // replace releveant field with bolded string for (var i = hardwareFilterResults.length - 1; i >= 0; i--) { @@ -391,6 +394,7 @@ function fuzzyFilter(deviceArray) } ////// Fifth pass: filter by Model options.extract = function(arg) {return arg.model;}; + options.pre = "span style='color: blue; font-size: 115%'>" var modelFilterResults = fuzzy.filter(searchText, deviceArray, options); // replace releveant field with bolded string for (var i = modelFilterResults.length - 1; i >= 0; i--) { @@ -398,6 +402,7 @@ function fuzzyFilter(deviceArray) } ////// Sixth pass: filter by Serial options.extract = function(arg) {return arg.serial;}; + options.pre = "span style='color: violet; font-size: 115%'>" var serialFilterResults = fuzzy.filter(searchText, deviceArray, options); // replace releveant field with bolded string for (var i = serialFilterResults.length - 1; i >= 0; i--) {