ResMan update
This commit is contained in:
@@ -283,6 +283,25 @@ Domains jährlich: <span id="costDomain">0</span> €<br>
|
|||||||
<button onclick="closeDomainModal()">Cancel</button>
|
<button onclick="closeDomainModal()">Cancel</button>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="serverDetailModal" class="modal">
|
||||||
|
|
||||||
|
<div class="modal-content">
|
||||||
|
|
||||||
|
<h3>Server Details</h3>
|
||||||
|
|
||||||
|
<div id="serverDetailContent"></div>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<button onclick="closeServerDetail()">Schließen</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script src="js/api.js"></script>
|
<script src="js/api.js"></script>
|
||||||
<script src="js/ui.js"></script>
|
<script src="js/ui.js"></script>
|
||||||
<script src="js/main.js"></script>
|
<script src="js/main.js"></script>
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
loadCosts
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
loadDomains
|
|
||||||
openDomainCreate
|
|
||||||
openDomainEdit
|
|
||||||
saveDomain
|
|
||||||
deleteDomain
|
|
||||||
closeDomainModal
|
|
||||||
loadMapping
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
loadInfrastructure
|
|
||||||
openServerDetail
|
|
||||||
closeServerDetail
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
openIPManager
|
|
||||||
closeIPModal
|
|
||||||
loadIPs
|
|
||||||
saveIP
|
|
||||||
deleteIP
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
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();
|
|
||||||
}
|
|
||||||
@@ -4,5 +4,22 @@ document.addEventListener("DOMContentLoaded",()=>{
|
|||||||
loadDomains();
|
loadDomains();
|
||||||
loadCosts();
|
loadCosts();
|
||||||
|
|
||||||
|
setInterval(()=>{
|
||||||
|
|
||||||
|
document.querySelectorAll("[id^='status-']").forEach(el=>{
|
||||||
|
|
||||||
|
const id = el.id.replace("status-","")
|
||||||
|
|
||||||
|
const resource = window.resources.find(r=>r.id==id)
|
||||||
|
|
||||||
|
if(resource){
|
||||||
|
checkServerStatus(resource)
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
},30000)
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
loadResources
|
|
||||||
loadCancelled
|
|
||||||
openCreate
|
|
||||||
openEdit
|
|
||||||
saveResource
|
|
||||||
deleteResource
|
|
||||||
closeModal
|
|
||||||
checkServerStatus
|
|
||||||
+97
-1
@@ -25,7 +25,12 @@ async function loadResources(){
|
|||||||
const tr = document.createElement("tr");
|
const tr = document.createElement("tr");
|
||||||
|
|
||||||
tr.innerHTML = `
|
tr.innerHTML = `
|
||||||
<td>${r.name}</td>
|
<td>
|
||||||
|
<span style="cursor:pointer;color:#1e3a8a;font-weight:bold"
|
||||||
|
onclick='openServerDetail(${JSON.stringify(r)})'>
|
||||||
|
${r.name}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
<td>${r.produkt || ""}</td>
|
<td>${r.produkt || ""}</td>
|
||||||
<td><span class="provider">${r.provider || ""}</span></td>
|
<td><span class="provider">${r.provider || ""}</span></td>
|
||||||
<td id="status-${r.id}">...</td>
|
<td id="status-${r.id}">...</td>
|
||||||
@@ -594,6 +599,97 @@ async function deleteIP(id, resourceId){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async function openServerDetail(resource){
|
||||||
|
|
||||||
|
const mappings = await api(API+"/domainmap")
|
||||||
|
|
||||||
|
let html = `
|
||||||
|
|
||||||
|
<b>Name:</b> ${resource.name}<br>
|
||||||
|
<b>Produkt:</b> ${resource.produkt || ""}<br>
|
||||||
|
<b>Provider:</b> ${resource.provider || ""}<br>
|
||||||
|
<b>Provider Name:</b> ${resource.providername || ""}
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
<b>System</b><br>
|
||||||
|
CPU: ${resource.cpu || ""}<br>
|
||||||
|
RAM: ${resource.ram || ""}<br>
|
||||||
|
Disk: ${resource.disk || ""}<br>
|
||||||
|
OS: ${resource.os || ""}
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
<b>IPs</b><br>
|
||||||
|
`
|
||||||
|
|
||||||
|
if(Array.isArray(resource.ips)){
|
||||||
|
|
||||||
|
resource.ips.forEach(ip=>{
|
||||||
|
html += `<div class="ip">${ip.type || ""} ${ip.ip}</div>`
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
html += `<br><b>Domains</b><br>`
|
||||||
|
|
||||||
|
const domains = mappings.filter(m => m.resource_id == resource.id)
|
||||||
|
|
||||||
|
domains.forEach(d=>{
|
||||||
|
html += `<div class="ip">🌐 ${d.domain_name}</div>`
|
||||||
|
})
|
||||||
|
|
||||||
|
html += `
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<b>Bestelldatum:</b> ${resource.bestelldatum || ""}<br>
|
||||||
|
<b>Kündbar ab:</b> ${resource.kuendbar_ab || ""}
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
<b>Bemerkung</b><br>
|
||||||
|
${resource.bemerkung || ""}
|
||||||
|
|
||||||
|
`
|
||||||
|
|
||||||
|
document.getElementById("serverDetailContent").innerHTML = html
|
||||||
|
|
||||||
|
document.getElementById("serverDetailModal").style.display="block"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function closeServerDetail(){
|
||||||
|
|
||||||
|
document.getElementById("serverDetailModal").style.display="none"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
document.addEventListener("click", function(event){
|
||||||
|
|
||||||
|
const modal = document.getElementById("serverDetailModal");
|
||||||
|
|
||||||
|
if(!modal) return;
|
||||||
|
|
||||||
|
if(event.target === modal){
|
||||||
|
modal.style.display = "none";
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
document.addEventListener("keydown", function(e){
|
||||||
|
|
||||||
|
if(e.key === "Escape"){
|
||||||
|
const modal = document.getElementById("serverDetailModal");
|
||||||
|
if(modal) modal.style.display="none";
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
loadResources();
|
loadResources();
|
||||||
loadDomains();
|
loadDomains();
|
||||||
loadMapping();
|
loadMapping();
|
||||||
|
|||||||
Reference in New Issue
Block a user