Skip to content

Commit

Permalink
Merge
Browse files Browse the repository at this point in the history
  • Loading branch information
clj13001 committed Apr 21, 2017
2 parents fc200b4 + c1fe6d4 commit f0aaa51
Show file tree
Hide file tree
Showing 2 changed files with 130 additions and 24 deletions.
147 changes: 124 additions & 23 deletions WebContent/html/webpages/administration/adminApprove.jsp
Original file line number Diff line number Diff line change
@@ -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"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
Expand Down Expand Up @@ -127,7 +127,10 @@

<div class = "displayDevice">
<h2>Admin View Approvals</h2>
<table class="table table-bordered table-hover">
<form onsubmit="return false;" class="form-inline">
<input type="search" class="form-control" name="searchBar" placeholder=" search tickets" autocomplete="off" style="width: 50%; text-align: left; margin: 1%;" />
</form>
<table class="table table-bordered table-hover">
<thead>
<tr>
<th>Ticket ID</th>
Expand All @@ -145,16 +148,16 @@
</div>

<%
Ticket[] tickets = TicketQueries.getTickets();
String ticketStr = Ticket.arrayToString(tickets);
Ticket[] tickets = TicketQueries.getTickets();
String ticketStr = Ticket.arrayToString(tickets);
%>
<script>
window.json = '<%=ticketStr%>';
var tickets = JSON.parse(window.json);
populateTickets();

<script>
window.json = '<%=ticketStr%>';
var ticks = JSON.parse(window.json);
populateTickets(ticks);
//adds event listeners to all table records
$("tr.entry").click(ticketAction);
//Exits modal when x is clicked.
Expand All @@ -163,12 +166,19 @@
window.onkeydown = function(e){if (e.keyCode == 27){closeModal();}}
//Event listener exits modal when click outside modal.
window.onclick = function(e){var modal = document.getElementById('Modal'); if(e.target == modal) {closeModal();}}
// search bar listener
var searchbar = document.getElementsByName('searchBar');
searchbar[0].onkeyup = refresh;
function refresh() {
populateTickets(fuzzyFilter(JSON.parse(window.json)));
//adds event listeners to all table records
$("tr.entry").click(ticketAction);
}
//Places all tickets from query into page
function populateTickets(){
var html = "";
for(var i = 0; i < tickets.length; i++){
function populateTickets(tickets){
var html = "";
for(var i = 0; i < tickets.length; i++){
//NEED TO ADD IN RETURN DATE AT END BUT THAT WOULD BREAK THINGS AT THE MOMENT
html += "<tr class = 'entry' id = '" + i + "'><td>" + tickets[i].id + "</td><td>" + tickets[i].username + "</td><td>" + tickets[i].locationname + "</td><td>" + tickets[i].devicename + "</td><td>" + tickets[i].status + "</td><td>" + tickets[i].permanent + "</td><td>" + tickets[i].return + "</td></tr>";
}
Expand All @@ -177,18 +187,109 @@
function ticketAction(){
var id = this.id;
var html = "<tr><td>" + tickets[id].id + "</td><td>" + tickets[id].username + "</td><td>" + tickets[id].locationname + "</td><td>" + tickets[id].devicename + "</td><td>" + tickets[id].status + "</td><td>" + tickets[id].permanent + "</td><td>" + tickets[id].return + "</td></tr>";
var html = "<tr><td>" + ticks[id].id + "</td><td>" + ticks[id].username + "</td><td>" + ticks[id].locationname + "</td><td>" + ticks[id].devicename + "</td><td>" + ticks[id].status + "</td><td>" + ticks[id].permanent + "</td><td>" + ticks[id].return + "</td></tr>";
document.getElementById("tablemodal").innerHTML = html;
$("#ticketIDfield").val(tickets[id].id);
$("#deviceIDfield").val(tickets[id].deviceID);
$("#locationIDfield").val(tickets[id].location);
$("#permField").val(tickets[id].permanent);
$("#ticketIDfield").val(ticks[id].id);
$("#deviceIDfield").val(ticks[id].deviceID);
$("#locationIDfield").val(ticks[id].location);
$("#permField").val(ticks[id].permanent);
$("#Modal").show();
}
function closeModal(){
$("#Modal").hide();
}
</script>
</body>
function fuzzyFilter(ticketArray) {
// First pass: filter by id
var searchText = document.getElementsByName('searchBar')[0].value;
var options = {
pre: "<span style='color: darkmagenta; font-size: 115%'><b>",
post: '</b></span>',
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;
}
</script>
<script src="../../javascript/lib/fuzzy.js"></script>
</body>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -359,7 +359,7 @@ function fuzzyFilter(deviceArray)
////// First pass: filter by device name
var options = {
pre: "<span style='color: darkmagenta; font-size: 115%'><b>",
pre: "<span style='color: red; font-size: 115%'><b>",
post: '</b></span>',
extract: function(arg) {return arg.name;}
}
Expand All @@ -370,34 +370,39 @@ 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%'><b>"
var macFilterResults = fuzzy.filter(searchText, deviceArray, options);
// replace releveant field with bolded string
for (var i = macFilterResults.length - 1; i >= 0; i--) {
macFilterResults[i].original.mac=macFilterResults[i].string;
}
////// Third pass: filter by Manufacture
options.extract = function(arg) {return arg.manufacturer;};
options.pre = "span style='color: gold; font-size: 115%'><b>"
var manufacturerFilterResults = fuzzy.filter(searchText, deviceArray, options);
// replace releveant field with bolded string
for (var i = manufacturerFilterResults.length - 1; i >= 0; i--) {
manufacturerFilterResults[i].original.manufacturer=manufacturerFilterResults[i].string;
}
////// Fourth pass: filter by Hardware
options.extract = function(arg) {return arg.hardware;};
options.pre = "span style='color: green; font-size: 115%'><b>"
var hardwareFilterResults = fuzzy.filter(searchText, deviceArray, options);
// replace releveant field with bolded string
for (var i = hardwareFilterResults.length - 1; i >= 0; i--) {
hardwareFilterResults[i].original.hardware=hardwareFilterResults[i].string;
}
////// Fifth pass: filter by Model
options.extract = function(arg) {return arg.model;};
options.pre = "span style='color: blue; font-size: 115%'><b>"
var modelFilterResults = fuzzy.filter(searchText, deviceArray, options);
// replace releveant field with bolded string
for (var i = modelFilterResults.length - 1; i >= 0; i--) {
modelFilterResults[i].original.model=modelFilterResults[i].string;
}
////// Sixth pass: filter by Serial
options.extract = function(arg) {return arg.serial;};
options.pre = "span style='color: violet; font-size: 115%'><b>"
var serialFilterResults = fuzzy.filter(searchText, deviceArray, options);
// replace releveant field with bolded string
for (var i = serialFilterResults.length - 1; i >= 0; i--) {
Expand Down

0 comments on commit f0aaa51

Please sign in to comment.