godprotocol
Version:
A distributed computing environment for Web 4.0 — integrating AI, decentralisation, and virtual computation.
126 lines (104 loc) • 3.69 kB
JavaScript
import create from "./create.js";
import run from "./run.js";
import load from "./load.js";
import parse from "./parse.js";
let routes = ["create_account", "load", "run", "parse"];
const forms = (route, manager) => {
let pair = {
create_account: create,
load,
run,
parse,
};
let rt = pair[route];
if (rt) return rt(manager);
return "";
};
const header_script = (manager) => {
let domain = manager.options.server_domain;
if (domain.startsWith("127")) domain = `http://${domain}`;
else domain = `https://${domain}`;
return ` let ftch = async(path, body)=>{
try{
let fch = await fetch("${domain}".concat(path), {
method: 'POST',
header: {
'Content-Type': 'application/json',
Accept: 'application/json'
},
body: JSON.stringify(body)
})
let response = await fch.json()
return response;
}catch(e){
console.log(e)
return {message: e.message}
}
}`;
};
const header = (route) => {
let tml = `<nav class="navbar navbar-expand-lg navbar-light bg-light shadow-sm">
<div class="container">
<a class="navbar-brand fw-bold" href="/">GODPROTOCOL</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse justify-content-center" id="navbarNav">
<ul class="navbar-nav" id="nav-list">
`;
routes.map((r) => {
tml = `${tml}<li class='nav-item'><a href='/${r}' class="nav-link text-capitalize ${
route === r ? "active text-danger fw-bold" : ""
}">${r.replace(/_/g, " ")}</a></li>`;
});
tml = `${tml}</ul>
</div>
</div>
</nav>`;
return tml;
};
const footer = (route) => {
let yr = new Date().getFullYear();
let tml = `<footer class="mt-auto py-3 bg-light text-center">
<div class="container">
<p class="mb-1">
Made with <i class="bi bi-heart-fill text-danger"></i> by
<a target="_blank" href="https://github.com/immanuel-savvy">Savvy</a>.
</p>
<small>
Airditor beta version 0.0.1 — Released under the <a target="_blank" href="https://opensource.org/licenses/MIT">MIT License</a>. ©
<span id="year">${2025 - yr !== 0 ? `${2025} - ${yr}` : yr}</span>
</small>
</div>
</footer>`;
return tml;
};
const set_page = (route, manager) => {
let title = `GODPROTOCOL`;
let init_acc = manager.options.init_account;
if (init_acc) {
title = `${init_acc.name} - ${title}`;
}
let tml = `
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GodProtocol</title>
<!-- Bootstrap 5 CDN -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css">
</head>
<body class="d-flex flex-column min-vh-100"><div class="container text-center my-5"><h1 id='page-title' class='mb-4'>${title}</h1>`;
tml = `${tml}${header(route)}`;
tml = `${tml}<script>${header_script(manager)}</script>`;
if (route !== "") {
tml = `${tml}${forms(route, manager)}`;
}
tml = `${tml}${footer(route)}`;
tml = `${tml}<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script></div></body> </html>
`;
return tml;
};
export { set_page };