changes
This commit is contained in:
9
views/superuser.ejs
Normal file
9
views/superuser.ejs
Normal file
@@ -0,0 +1,9 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Error: Not Superuser</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Error: Not Superuser</h1>
|
||||
</body>
|
||||
</html>
|
||||
@@ -2,13 +2,15 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Your Tickets</title>
|
||||
<link rel="stylesheet" href="styles.css">
|
||||
</head>
|
||||
<body>
|
||||
<h1>Welcome, <%= username %>!</h1>
|
||||
<form id="editor">
|
||||
<div id="server-response">Server Ready</div>
|
||||
<table border="1">
|
||||
<tr>
|
||||
<th>Ticket</th>
|
||||
<th>Ticket#</th>
|
||||
<th>Owner</th>
|
||||
<th>Offered To</th>
|
||||
<th>Used</th>
|
||||
@@ -17,10 +19,10 @@
|
||||
<% for (const t in tickets) { %>
|
||||
<tr>
|
||||
<td><%=t%></td>
|
||||
<td><%=tickets[t].owner%></td>
|
||||
<td><input type="edit" value="<%=tickets[t].owner%>" id="<%=t%>-owner"> </td>
|
||||
<td><input type="edit" value="<%=tickets[t].offered%>" id="<%=t%>-offered"></td>
|
||||
<td><input type="checkbox" id="<%=t%>-used"<%=tickets[t].used ? ' checked' : ''%>></td>
|
||||
<td><button id="<%=t%>-action"> QRCode </button></td>
|
||||
<td><input type="checkbox" id="<%=t%>-used"<%=tickets[t].used ? ' checked' : ''%>></td>
|
||||
<td><button id="<%=t%>-action" type="button"> QRCode </button></td>
|
||||
</tr>
|
||||
<% } %>
|
||||
<tr>
|
||||
@@ -29,37 +31,68 @@
|
||||
</form>
|
||||
<script>
|
||||
// JavaScript to change the form element
|
||||
const EditOffer = document.getElementById('habitat-1-offered');
|
||||
const ActionButton = document.getElementById('habitat-1-action');
|
||||
const ResponseDisplay = document.getElementById("server-response");
|
||||
let ResponseStack = 0;
|
||||
let ResponseError="";
|
||||
let ooEdits={}; // Owner or Offer has been edited
|
||||
|
||||
function UpdateSR(delta) {
|
||||
ResponseStack+=delta;
|
||||
if (ResponseError!="") ResponseDisplay.textContent=ResponseError;
|
||||
else if (ResponseStack>0) ResponseDisplay.textContent="Waiting for Server";
|
||||
else ResponseDisplay.textContent="Server Ready";
|
||||
}
|
||||
|
||||
|
||||
function toggleUsed(el) {
|
||||
const id=el.target.id.slice(0,-5);
|
||||
const isChecked=this.checked;
|
||||
const js=JSON.stringify( { ticket: id, checked: isChecked } );
|
||||
const fetchtable={ method:'POST', headers: { 'Content-Type': 'application/json' },
|
||||
body: js };
|
||||
const fetchtable={ method:'POST', headers: { 'Content-Type': 'application/json' }, body: js };
|
||||
console.log(fetchtable);
|
||||
UpdateSR(1);
|
||||
fetch('/toggle',fetchtable)
|
||||
.then( response => response.json() )
|
||||
.then( data => console.log('Server Response: ',data) )
|
||||
.catch( error => console.error('Error: ',error));
|
||||
.then( response => { if (!response.ok) throw new Error(`Server responded with status ${response.status}`); else return response.json(); } )
|
||||
.then( data => UpdateSR(-1) )
|
||||
.catch( error => { console.log("Here is the error!"+error); ResponseError=error; UpdateSR(-1); })
|
||||
}
|
||||
|
||||
const elements = document.querySelectorAll("[id$=-used]");
|
||||
document.body.addEventListener("click", event => {
|
||||
const id=event.target.id;
|
||||
if (id.endsWith("-action")) {
|
||||
const id0=id.slice(0,-7);
|
||||
if (ooEdits[id0]) {
|
||||
UpdateSR(1);
|
||||
const offeredEdit=document.getElementById(id0+"-offered");
|
||||
const js=JSON.stringify( { ticket: id0, offered: offeredEdit.value } );
|
||||
const fetchtable={ method:'POST', headers: { 'Content-Type': 'application/json' }, body: js };
|
||||
fetch('/updateoffered',fetchtable)
|
||||
.then( response => { if (!response.ok) throw new Error(`Server responded with status ${response.status}`); else return response.json(); } )
|
||||
.then( data => { UpdateSR(-1); event.target.textContent="QRCode"; } )
|
||||
.catch( error => { console.log("Here is the error!"+error); ResponseError=error; UpdateSR(-1); })
|
||||
} else {
|
||||
|
||||
console.log("QRCode ",id0);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
elements.forEach((el) => {
|
||||
const checkboxes = document.querySelectorAll("[id$=-used]");
|
||||
checkboxes.forEach(el => {
|
||||
const UsedCheckbox = document.getElementById(el.id);
|
||||
UsedCheckbox.addEventListener("change",toggleUsed);
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
EditOffer.addEventListener('input', () => {
|
||||
ActionButton.textContent = "Update";
|
||||
});
|
||||
|
||||
const owners = document.querySelectorAll("[id$=-owner]");
|
||||
owners.forEach(el => {
|
||||
const id0=el.id.slice(0,-6);
|
||||
const OwnerEdit = document.getElementById(id0+"-owner" );
|
||||
const OfferedEdit = document.getElementById(id0+"-offered");
|
||||
const ActionButton = document.getElementById(id0+"-action" );
|
||||
OwnerEdit .addEventListener('input', () => { ActionButton.textContent = "Update"; ooEdits[id0]=true; console.log("Changed OfferedEdit:",OfferedEdit.value); });
|
||||
OfferedEdit.addEventListener('input', () => { ActionButton.textContent = "Update"; ooEdits[id0]=true; console.log("Changed OfferedEdit:",OfferedEdit.value); });
|
||||
});
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user