91 lines
No EOL
2.4 KiB
JavaScript
91 lines
No EOL
2.4 KiB
JavaScript
import { del_domain, domains } from './api.js'
|
|
import { header } from './components.js'
|
|
import { body, parse, div, input, button, span, is_domain } from './main.js';
|
|
|
|
function render(domains) {
|
|
document.body.replaceWith(
|
|
body({},
|
|
header('domains'),
|
|
div({id: 'new'},
|
|
input({
|
|
type: 'text',
|
|
name: 'domain',
|
|
id: 'domain',
|
|
placeholder: 'Type domain name to create new records',
|
|
autocomplete: "off",
|
|
}),
|
|
button({onclick: () => {
|
|
let domain = document.getElementById('domain').value
|
|
|
|
if (!is_domain(domain)) {
|
|
alert("Invalid domain")
|
|
return
|
|
}
|
|
|
|
location.href = '/domain?domain='+domain
|
|
}},
|
|
parse("Create")
|
|
)
|
|
),
|
|
...domain(domains)
|
|
)
|
|
)
|
|
}
|
|
|
|
function domain(domains) {
|
|
let divs = []
|
|
for (const domain of domains) {
|
|
divs.push(
|
|
div({class: 'domain'},
|
|
div({class: 'block'},
|
|
parse(domain)
|
|
),
|
|
button({class: 'edit', onclick: (event) => {
|
|
console.log(event.target.parentElement)
|
|
let domain = event
|
|
.target
|
|
.parentElement
|
|
.getElementsByClassName('block')[0]
|
|
.innerText
|
|
|
|
if (!is_domain(domain)) {
|
|
alert("Invalid domain")
|
|
return
|
|
}
|
|
|
|
location.href = '/domain?domain='+domain
|
|
}},
|
|
parse("Edit")
|
|
),
|
|
button({class: 'delete', onclick: async () => {
|
|
let res = await del_domain(domain)
|
|
|
|
if (res.status != 204) {
|
|
alert(res.msg)
|
|
return
|
|
}
|
|
|
|
location.reload()
|
|
}},
|
|
parse("Delete")
|
|
)
|
|
)
|
|
)
|
|
}
|
|
return divs
|
|
}
|
|
|
|
async function init() {
|
|
|
|
let res = await domains();
|
|
|
|
if (res.status !== 200) {
|
|
alert(res.msg)
|
|
return
|
|
}
|
|
|
|
render(res.json)
|
|
|
|
}
|
|
|
|
init() |