95 lines
No EOL
2.1 KiB
JavaScript
95 lines
No EOL
2.1 KiB
JavaScript
import { del_domain, domains, records } from './api.js'
|
|
import { header } from './components.js'
|
|
import { body, parse, div, input, button, span, is_domain } from './main.js';
|
|
|
|
function render(domain, records) {
|
|
|
|
let divs = []
|
|
for (const record of records) {
|
|
divs.push(gen_record(record))
|
|
}
|
|
|
|
document.body.replaceWith(
|
|
body({},
|
|
header(domain),
|
|
div({id: 'buttons'},
|
|
button({onclick: (event) => {
|
|
location.href = '/home'
|
|
}}, parse("Home")),
|
|
button({}, parse("New Record")),
|
|
),
|
|
...divs
|
|
)
|
|
)
|
|
}
|
|
|
|
function gen_record(record) {
|
|
let domain = record.domain
|
|
let prefix = record.prefix
|
|
|
|
if (prefix.length > 0) {
|
|
prefix = prefix + '.'
|
|
}
|
|
|
|
let type = Object.keys(record.record)[0]
|
|
let data = record.record[type]
|
|
|
|
let divs = []
|
|
for (const key in data) {
|
|
let disp_key;
|
|
if (key == 'ttl') {
|
|
disp_key = 'TTL'
|
|
} else {
|
|
disp_key = upper(key)
|
|
}
|
|
divs.push(
|
|
div({class: 'poperty'},
|
|
div({class: 'key'}, parse(disp_key)),
|
|
div({class: 'value'}, parse(data[key])),
|
|
)
|
|
)
|
|
}
|
|
|
|
return div({class: 'record'},
|
|
div({class: 'header'},
|
|
span({class: 'type'}, parse(type)),
|
|
span({class: 'prefix'}, parse(prefix)),
|
|
span({class: 'domain'}, parse(domain)),
|
|
button({}, parse("Edit")),
|
|
button({class: 'delete'}, parse("Delete"))
|
|
),
|
|
div({class: 'properties'},
|
|
...divs
|
|
)
|
|
)
|
|
}
|
|
|
|
function upper(string) {
|
|
return string.charAt(0).toUpperCase() + string.slice(1);
|
|
}
|
|
|
|
async function init() {
|
|
|
|
const params = new Proxy(new URLSearchParams(window.location.search), {
|
|
get: (searchParams, prop) => searchParams.get(prop),
|
|
});
|
|
|
|
let domain = params.domain;
|
|
|
|
if (!is_domain(domain)) {
|
|
location.href = '/home'
|
|
return
|
|
}
|
|
|
|
let res = await records(domain);
|
|
|
|
if (res.status !== 200) {
|
|
alert(res.msg)
|
|
return
|
|
}
|
|
|
|
render(domain, res.json)
|
|
|
|
}
|
|
|
|
init() |