126 lines
2.4 KiB
JavaScript
126 lines
2.4 KiB
JavaScript
document.addEventListener("DOMContentLoaded", async () => {
|
|
|
|
initTabs()
|
|
clearDNSCache()
|
|
await refreshAll()
|
|
|
|
setInterval(refreshAll, 60000)
|
|
|
|
})
|
|
|
|
|
|
let refreshing = false
|
|
|
|
const DEFAULT_TAB = "resources"
|
|
|
|
window.setActiveTab = function(tab){
|
|
const selectedTab = tab || DEFAULT_TAB
|
|
|
|
document.querySelectorAll(".tab-button").forEach(button => {
|
|
button.classList.toggle("active", button.dataset.tabTarget === selectedTab)
|
|
})
|
|
|
|
document.querySelectorAll(".tab-panel").forEach(panel => {
|
|
panel.classList.toggle("active", panel.dataset.tab === selectedTab)
|
|
})
|
|
|
|
localStorage.setItem("activeTab", selectedTab)
|
|
}
|
|
|
|
function initTabs(){
|
|
const storedTab = localStorage.getItem("activeTab")
|
|
const hasStoredTab = storedTab && document.querySelector(`[data-tab="${storedTab}"]`)
|
|
|
|
setActiveTab(hasStoredTab ? storedTab : DEFAULT_TAB)
|
|
}
|
|
|
|
async function refreshAll(){
|
|
|
|
if(refreshing) return
|
|
refreshing = true
|
|
|
|
|
|
try{
|
|
|
|
await loadResources()
|
|
await loadDomains()
|
|
await loadMapping()
|
|
await loadCancelled()
|
|
|
|
loadInfrastructure()
|
|
loadCosts()
|
|
|
|
// Zeit setzen
|
|
updateLastUpdate()
|
|
|
|
}catch(e){
|
|
|
|
console.error("Refresh error", e)
|
|
|
|
document.getElementById("lastUpdate").innerText = "🔴 Fehler beim Update"
|
|
|
|
}
|
|
|
|
refreshing = false
|
|
}
|
|
|
|
|
|
|
|
function clearDNSCache(){
|
|
for(const key in dnsCache){
|
|
delete dnsCache[key]
|
|
}
|
|
}
|
|
|
|
function updateLastUpdate(){
|
|
|
|
const now = new Date()
|
|
|
|
const time = now.toLocaleTimeString()
|
|
|
|
// Lade-Indikator
|
|
document.getElementById("lastUpdate").innerText =
|
|
"🟢 Letztes Update: " + time
|
|
}
|
|
|
|
window.toggleDarkMode = function(){
|
|
|
|
document.body.classList.toggle("dark")
|
|
|
|
localStorage.setItem(
|
|
"darkmode",
|
|
document.body.classList.contains("dark")
|
|
)
|
|
}
|
|
|
|
// beim Start laden
|
|
document.addEventListener("DOMContentLoaded", () => {
|
|
|
|
if(localStorage.getItem("darkmode") === "true"){
|
|
document.body.classList.add("dark")
|
|
}
|
|
|
|
})
|
|
|
|
function showError(msg) {
|
|
|
|
const div = document.createElement("div")
|
|
|
|
div.innerText = msg
|
|
|
|
div.style.position = "fixed"
|
|
div.style.bottom = "20px"
|
|
div.style.right = "20px"
|
|
div.style.background = "#dc2626"
|
|
div.style.color = "white"
|
|
div.style.padding = "10px 15px"
|
|
div.style.borderRadius = "6px"
|
|
div.style.zIndex = 9999
|
|
|
|
document.body.appendChild(div)
|
|
|
|
setTimeout(() => {
|
|
div.remove()
|
|
}, 3000)
|
|
}
|