import request from "../../shared/request"; import getFormData from "../../shared/formdata"; Handlebars.registerHelper("humangender", function (value, options) { switch (value) { case 1: return "male"; case 2: return "female"; case 3: return "other"; default: case 0: return "none"; } }); // Deprecated since version 0.8.0 Handlebars.registerHelper("formatDate", function (datetime, format) { return new Date(datetime).toLocaleString(); }); (() => { const tableb = document.getElementById("table-body"); function setTitle(title) { document.getElementById("sitename").innerText = title; } const cc = document.getElementById("custom_data") const ccc = document.getElementById("custom_data_cont") function setCustomCard(content) { if (!content) { cc.innerHTML = ""; ccc.style.display = "none"; } else { cc.innerHTML = content; ccc.style.display = ""; } } const error_cont = document.getElementById("error_cont") const error_msg = document.getElementById("error_msg") function catchError(error) { error_cont.style.display = ""; error_msg.innerText = error.message; console.log(error); } async function renderUser() { console.log("Rendering User") setTitle("User") const listt = Handlebars.compile(document.getElementById("template-user-list").innerText) async function loadList() { let data = await request("/api/admin/user", "GET"); tableb.innerHTML = listt({ users: data }) } window.userOnChangeType = (id) => { request("/api/admin/user?id=" + id, "PUT").then(() => loadList()).catch(catchError) } window.deleteUser = (id) => { request("/api/admin/user?id=" + id, "DELETE").then(() => loadList()).catch(catchError) } await loadList(); } async function renderPermissions(client_id, client_name) { const listt = Handlebars.compile(document.getElementById("template-permission-list").innerText); const formt = Handlebars.compile(document.getElementById("template-permission-form").innerText); setCustomCard(); async function loadList() { try { let data = await request("/api/admin/permission?client=" + client_id, "GET"); tableb.innerHTML = listt({ client_id: client_id, client_name: client_name, permissions: data }) } catch (err) { catchError(err); } } window.gotoClients = () => { renderClient(); } window.deletePermission = (id) => { request("/api/admin/permission?id=" + id, "DELETE").then(() => loadList()).catch(catchError) } window.createPermission = () => { try { setCustomCard(formt({ client_id: client_id })); } catch (err) { console.log("Err", err); } } window.createPermissionSubmit = (elm) => { console.log(elm); let data = getFormData(elm); console.log(data); request("/api/admin/permission", "POST", data).then(() => setCustomCard()).then(() => loadList()).catch(catchError) } await loadList() } async function renderClient() { console.log("Rendering Client") setTitle("Client") const listt = Handlebars.compile(document.getElementById("template-client-list").innerText) const formt = Handlebars.compile(document.getElementById("template-client-form").innerText) let clients = []; async function loadList() { let data = await request("/api/admin/client", "GET"); clients = data; tableb.innerHTML = listt({ clients: data }) } window.permissionsClient = (id) => { renderPermissions(id, clients.find(e => e._id === id).name); } window.deleteClient = (id) => { request("/api/admin/client?id=" + id, "DELETE").then(() => loadList()).catch(catchError) } window.createClientSubmit = (elm) => { console.log(elm); let data = getFormData(elm); console.log(data); let id = data._id; delete data._id; if (id && id !== "") { request("/api/admin/client?id=" + id, "PUT", data).then(() => setCustomCard()).then(() => loadList()).catch(catchError) } else { request("/api/admin/client", "POST", data).then(() => setCustomCard()).then(() => loadList()).catch(catchError) } } window.createClient = () => { setCustomCard(formt()); } window.editClient = (id) => { let client = clients.find(e => e._id === id); if (!client) return catchError(new Error("Client does not exist!!")) setCustomCard(formt(client)); } await loadList().catch(catchError); } async function renderRegCode() { console.log("Rendering RegCode") setTitle("RegCode") const listt = Handlebars.compile(document.getElementById("template-regcode-list").innerText) async function loadList() { let data = await request("/api/admin/regcode", "GET"); tableb.innerHTML = listt({ regcodes: data }) } window.deleteRegcode = (id) => { request("/api/admin/regcode?id=" + id, "DELETE").then(() => loadList()).catch(catchError) } window.createRegcode = () => { request("/api/admin/regcode", "POST").then(() => loadList()).catch(catchError); } await loadList().catch(catchError); } const type = new URL(window.location.href).searchParams.get("type"); switch (type) { case "client": renderClient().catch(catchError) break case "regcode": renderRegCode().catch(catchError) break; case "user": default: renderUser().catch(catchError); break; } })()