godprotocol
Version:
A distributed computing environment for Web 4.0 — integrating AI, decentralisation, and virtual computation.
123 lines (102 loc) • 3.83 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.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}