63 lines
1.7 KiB
HTML
63 lines
1.7 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
|
|
<link rel="stylesheet" type="text/css" href="/css/main.css">
|
|
</head>
|
|
<script>
|
|
function newSite() {
|
|
const url = document.querySelector('.new.url').value
|
|
const watch = document.querySelector('.new.watch').value
|
|
fetch('/start', {
|
|
method: 'POST',
|
|
body: JSON.stringify({url, watch}),
|
|
})
|
|
.then(() => location.reload())
|
|
|
|
}
|
|
|
|
function stopSite(uuid) {
|
|
fetch(`/stop/${uuid}`)
|
|
.then(() => location.reload())
|
|
}
|
|
|
|
function siteStatus() {
|
|
fetch('/sites')
|
|
.then(data => data.json())
|
|
.then(json => {
|
|
for (const uuid of Object.keys(json.Sites)) {
|
|
const site = json.Sites[uuid]
|
|
if (site.StopLoop) {
|
|
document.querySelector(`.url[data-uuid="${uuid}"]`)?.classList.add('dead')
|
|
document.querySelector(`.watch[data-uuid="${uuid}"]`)?.classList.add('dead')
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
setInterval(siteStatus, 2000)
|
|
</script>
|
|
|
|
<body>
|
|
<input type="text" class="new url" placeholder="https://example.com" value="https://scan.euterm.n44.se">
|
|
<input type="text" class="new watch" placeholder="~/example.com/css/"
|
|
value="/home/magnus/repo/euterm/euscan/static/css">
|
|
<button onclick="newSite()">Start</button>
|
|
|
|
<div class="sites">
|
|
<div class="header">UUID</div>
|
|
<div class="header">URL</div>
|
|
<div class="header"></div>
|
|
|
|
{{ range . }}
|
|
<div class="line"></div>
|
|
<div class="url {{ if .StopLoop }}dead{{ end }}" data-uuid="{{ .UUID }}">{{ .URL }}</div>
|
|
<div class="watch {{ if .StopLoop }}dead{{ end }}" data-uuid="{{ .UUID }}">{{ .Watch }}</div>
|
|
<div class="stop" onclick="stopSite('{{ .UUID }}')">❌</div>
|
|
{{ end }}
|
|
</div>
|
|
</body>
|
|
|
|
</html>
|