honey/js/UI/Settings/tiles.js
2023-10-23 22:16:02 +02:00

60 lines
1.4 KiB
JavaScript

export function addOnOffTile(conf, icon, name, desc, key, func) {
let item = document.createElement("div")
item.classList.add("setting")
item.innerHTML = `
<i>${icon}</i>
<div class="text">
<div class="name">${name}</div>
<div class="desc">${desc}</div>
</div>
<div class="switch"></div>`
let handleState = () => {
let c = item.classList
if (conf.get(key)) c.add("checked")
else c.remove("checked")
}
let write = () => {
let target_value = !conf.get(key)
conf.set(key, target_value)
}
let f = () => {func(conf)}
item.addEventListener("click", write)
item.addEventListener("click", handleState)
if (func) item.addEventListener("click", f)
handleState()
if (func && conf.changed(key)) f()
document.getElementById("settings").appendChild(item)
return item
}
export function privacyBox(privacyScore, icon_class, levels) {
let name, desc
levels = levels.reverse()
for (let i in levels) {
let item = levels[i]
if (item.from <= privacyScore) {
name = levels[i].name
desc = levels[i].desc
break
}
}
let item = document.createElement("div")
item.innerHTML = `<i class="${icon_class}"></i>
<div>
<div class="title">${name}</div>
<div class="subtitle">${desc}</div>
</div>`
if (privacyScore < 30) item.classList.add("error")
else if (privacyScore < 90) item.classList.add("warn")
else if (privacyScore < 100) item.classList.add("prewarn")
document.getElementById("report-boxes").appendChild(item)
return item
}