This commit is contained in:
2024-12-19 15:57:33 -05:00
parent 8188adce57
commit f254e170aa
4 changed files with 126 additions and 54 deletions

32
views/issue.ejs Normal file
View File

@@ -0,0 +1,32 @@
<!DOCTYPE html>
<html>
<head>
<title>Issue New Tickets</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h1>Welcome, <%= username %>!</h1>
<form id="editor" action="/issue" method="post">
<table border="1">
<tr>
<th>Group</th>
<th>Quantity</th>
<th>Claimed</th>
<th>Used</th>
</tr>
<% for (const [c,v] of Object.entries(camps)) { %>
<tr>
<td><%=c%></td>
<td><%=v.issued%></td>
<td><%=v.claimed%></td>
<td><%=v.used%></td>
</tr>
<% } %>
</table>
Issue new tickets:<br>
Group Name: <input type="edit" name="campname"><br>
Lead Email: <input type="edit" name="email"><br>
Qty: <input type="edit" name="qty"><br>
<input type="submit" value="Submit">
</form>
<script>

View File

@@ -5,6 +5,12 @@
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="QRShow" class="modal">
<div id="QRBackground" class="modal-content">
<p id="QRBanner">Generating QR Code...</p>
<img class="qrcode-image" id="QRCodeImage" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/wcAAgMBAAeWBjwAAAAASUVORK5CYII=" />
</div>
</div>
<h1>Welcome, <%= username %>!</h1>
<form id="editor">
<div id="server-response">Server Ready</div>
@@ -31,6 +37,8 @@
</form>
<script>
// JavaScript to change the form element
const blankimage=document.getElementById("QRCodeImage").src;
console.log("Blank is ",blankimage);
const ResponseDisplay = document.getElementById("server-response");
let ResponseStack = 0;
let ResponseError="";
@@ -59,6 +67,7 @@ function toggleUsed(el) {
document.body.addEventListener("click", event => {
const id=event.target.id;
console.log("Click event on id ",id);
if (id.endsWith("-action")) {
const id0=id.slice(0,-7);
if (ooEdits[id0]) {
@@ -68,23 +77,37 @@ document.body.addEventListener("click", event => {
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"; } )
.then( data => { UpdateSR(-1); event.target.textContent="QRCode"; ooEdits[id0]=false; } )
.catch( error => { console.log("Here is the error!"+error); ResponseError=error; UpdateSR(-1); })
} else {
} else {
const modal = document.getElementById('QRShow');
const qrbanner=document.getElementById('QRBanner');
const qrcodeimage=document.getElementById('QRCodeImage');
const closeModalSpan = document.querySelector('.close');
modal.style.display = 'flex';
const js=JSON.stringify( { ticket: id0 } );
const fetchtable={ method:'POST', headers: { 'Content-Type': 'application/json' }, body: js };
qrcodeimage.src=blankimage;
fetch('/qrcode',fetchtable)
.then( response => { if (!response.ok) throw new Error(`Server responded with status ${response.status}`); else return response.json(); } )
.then( data => { console.log("Data is: ",data); } )
.then( data => {
console.log("Data is: ",data);
qrbanner.innerText="Ticket: "+id0+" Owner: "+data.owner;
qrcodeimage.src=data.qrcode;
} )
.catch( error => { console.log("Here is the error!"+error); ResponseError=error; UpdateSR(-1); })
console.log("QRCode ",id0);
}
}
} else if (["QRShow","QRCodeImage","QRBackground","QRBanner"].includes(id)) {
const modal = document.getElementById('QRShow');
modal.style.display="none";
}
})
const checkboxes = document.querySelectorAll("[id$=-used]");
checkboxes.forEach(el => {
const UsedCheckbox = document.getElementById(el.id);