1
0
Fork 0
mirror of https://github.com/zigzap/zap.git synced 2025-10-20 23:24:09 +00:00
zap/examples/endpoint/html/index.js
2024-01-30 20:46:46 -08:00

143 lines
3.8 KiB
JavaScript

var eL = document.getElementById("log");
var eLt = document.getElementById("logtoggler");
var showLog = false;
function toggleLog() {
if(showLog) {
eL.style.display = "none";
eLt.textContent = "(show)";
} else {
eL.style.display = "block";
eLt.textContent = "(hide)";
}
showLog = !showLog;
}
function log(s) {
eL.value += s.toString();
eL.value += "\n"
eL.scrollTop = eL.scrollHeight;
}
function sendJSON(data, slug, method="POST") {
json = JSON.stringify(data);
log("SENDING: " + json);
const response = fetch(slug, {
method: method,
body: json,
headers: {
"Content-Type": "application/json; charset=UTF-8"
}
});
return response;
}
function onNewUser() {
var first_name = document.getElementById("first_name").value;
var last_name = document.getElementById("last_name").value;
data = {
first_name: first_name,
last_name: last_name,
}
sendJSON(data, "/users", "POST")
.then((response) => response.json())
.then((data) => {
log("SUCCESS: " + JSON.stringify(data));
getUserList();
})
.catch((error) => {
log("Error posting data");
});
}
function deleteUser(id) {
fetch("/users/" + id, { method: "DELETE", } )
.then((response) => response.json())
.then((data) => {
log("SUCCESS: " + JSON.stringify(data));
getUserList();
})
.catch((error) => {
log("Error deleting data");
});
}
function changeUser(id) {
const firstname = document.getElementById("first_" + id).value;
const lastname = document.getElementById("last_" + id).value;
data = {
first_name: firstname,
last_name: lastname,
}
sendJSON(data, "/users/" + id, "PATCH")
.then((response) => response.json())
.then((data) => {
log("SUCCESS: " + JSON.stringify(data));
getUserList();
})
.catch((error) => {
log("Error updating data");
});
}
function addHeaderCell(tr, text) {
var th = document.createElement('TH');
th.innerHTML = text;
tr.appendChild(th);
}
function showTable(users) {
var t = document.getElementById("usertable");
var new_t = document.createElement("TABLE");
var header = new_t.createTHead();
var tr = header.insertRow();
// insertCell creates TD, we want TH
addHeaderCell(tr, 'id');
addHeaderCell(tr, 'first name');
addHeaderCell(tr, 'last name');
addHeaderCell(tr, '');
addHeaderCell(tr, '');
console.log("showTable()");
console.log(users);
// add the data rows
for(var i=0; i<users.length; i++) {
var row = new_t.insertRow();
var c1 = row.insertCell();
c1.innerHTML = users[i].id;
var c2 = row.insertCell();
c2.innerHTML = '<input id="first_' + users[i].id + '" value="' + users[i].first_name + '"></input>';
var c3 = row.insertCell();
c3.innerHTML = '<input id="last_' + users[i].id + '" value="' + users[i].last_name + '"></input>';
var c4 = row.insertCell();
c4.innerHTML = ''
+ '<form class="tdform"><button class="updatebutton" type="button" onclick="changeUser(' + users[i].id + ');">change</button></form>'
;
var c5 = row.insertCell();
c5.innerHTML = ''
+ '<form class="tdform"><button class="delbutton" type="button" onclick="deleteUser(' + users[i].id + ');">del</button></form>'
;
}
console.log("before replace");
t.innerHTML = new_t.innerHTML;
console.log("after replace");
}
function getUserList() {
fetch("/users", { method: "GET", } )
.then((response) => response.json())
.then((data) => {
log("SUCCESS: " + JSON.stringify(data));
showTable(data);
})
.catch((error) => {
log("Error fetching data");
});
}
function init() {
getUserList();
}
init();