restore frontend base structure
This commit is contained in:
@@ -0,0 +1,26 @@
|
|||||||
|
const API="/resman/api"
|
||||||
|
|
||||||
|
async function api(url, options={}){
|
||||||
|
|
||||||
|
const res = await fetch(url, options)
|
||||||
|
|
||||||
|
if(!res.ok){
|
||||||
|
|
||||||
|
let msg="API error"
|
||||||
|
|
||||||
|
try{
|
||||||
|
|
||||||
|
const err = await res.json()
|
||||||
|
msg = err.error || msg
|
||||||
|
|
||||||
|
}catch(e){}
|
||||||
|
|
||||||
|
alert("Fehler: "+msg)
|
||||||
|
|
||||||
|
throw new Error(msg)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return res.json()
|
||||||
|
|
||||||
|
}
|
||||||
+7
-1019
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,22 @@
|
|||||||
|
const API = "/resman/api";
|
||||||
|
|
||||||
|
async function api(url, options = {}) {
|
||||||
|
|
||||||
|
const res = await fetch(url, options);
|
||||||
|
|
||||||
|
if (!res.ok) {
|
||||||
|
|
||||||
|
let msg = "API error";
|
||||||
|
|
||||||
|
try {
|
||||||
|
const err = await res.json();
|
||||||
|
msg = err.error || msg;
|
||||||
|
} catch(e){}
|
||||||
|
|
||||||
|
alert("Fehler: " + msg);
|
||||||
|
|
||||||
|
throw new Error(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
return res.json();
|
||||||
|
}
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
|
||||||
|
async function loadResources(){
|
||||||
|
|
||||||
|
const resources = await api(API + "/resources/active");
|
||||||
|
const mappings = await api(API + "/domainmap");
|
||||||
|
|
||||||
|
const table = document.getElementById("resources");
|
||||||
|
table.innerHTML = "";
|
||||||
|
|
||||||
|
resources.forEach(r => {
|
||||||
|
|
||||||
|
let ips = "";
|
||||||
|
|
||||||
|
if(Array.isArray(r.ips)){
|
||||||
|
ips = r.ips.map(ip =>
|
||||||
|
"<span class='ip'>" + (ip.type || "") + " " + ip.ip + "</span>"
|
||||||
|
).join("");
|
||||||
|
}
|
||||||
|
|
||||||
|
let domains = mappings
|
||||||
|
.filter(m => m.resource_id == r.id)
|
||||||
|
.map(m => "<span class='ip'>🌐 " + m.domain_name + "</span>")
|
||||||
|
.join("");
|
||||||
|
|
||||||
|
const tr = document.createElement("tr");
|
||||||
|
|
||||||
|
tr.innerHTML = `
|
||||||
|
<td>${r.name}</td>
|
||||||
|
<td>${r.produkt || ""}</td>
|
||||||
|
<td><span class="provider">${r.provider || ""}</span></td>
|
||||||
|
<td id="status-${r.id}">...</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
<div class="system">
|
||||||
|
${r.cpu ? r.cpu + " CPU" : ""}
|
||||||
|
${r.ram ? " • " + r.ram + " RAM" : ""}
|
||||||
|
${r.disk ? " • " + r.disk : ""}
|
||||||
|
${r.os ? " • " + r.os : ""}
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>${domains}</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
${ips}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td>
|
||||||
|
<button onclick="deleteResource(${r.id})">Delete</button>
|
||||||
|
</td>
|
||||||
|
`;
|
||||||
|
|
||||||
|
table.appendChild(tr);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
loadResources();
|
||||||
Reference in New Issue
Block a user