experimental refresh button. dynamic html here we come.

This commit is contained in:
Ted Unangst 2019-08-19 03:02:24 -04:00
parent 34f2844ffe
commit 072890112c
3 changed files with 52 additions and 1 deletions

20
honk.go
View File

@ -165,10 +165,25 @@ func homepage(w http.ResponseWriter, r *http.Request) {
} else { } else {
honks = gethonksforuser(userid) honks = gethonksforuser(userid)
honks = osmosis(honks, userid) honks = osmosis(honks, userid)
if len(honks) > 0 {
templinfo["TopXID"] = honks[0].XID
}
} }
templinfo["HonkCSRF"] = login.GetCSRF("honkhonk", r) templinfo["HonkCSRF"] = login.GetCSRF("honkhonk", r)
} }
tname := "honkpage.html"
if topxid := r.FormValue("topxid"); topxid != "" {
for i, h := range honks {
if h.XID == topxid {
honks = honks[0:i]
break
}
}
log.Printf("topxid %d frags", len(honks))
tname = "honkfrags.html"
}
reverbolate(userid, honks) reverbolate(userid, honks)
templinfo["Honks"] = honks templinfo["Honks"] = honks
@ -179,7 +194,9 @@ func homepage(w http.ResponseWriter, r *http.Request) {
} else { } else {
w.Header().Set("Cache-Control", "max-age=0") w.Header().Set("Cache-Control", "max-age=0")
} }
err := readviews.Execute(w, "honkpage.html", templinfo) w.Header().Set("Content-Type", "text/html")
err := readviews.Execute(w, tname, templinfo)
if err != nil { if err != nil {
log.Print(err) log.Print(err)
} }
@ -1513,6 +1530,7 @@ func serve() {
getconfig("debug", &debug) getconfig("debug", &debug)
readviews = templates.Load(debug, readviews = templates.Load(debug,
"views/honkpage.html", "views/honkpage.html",
"views/honkfrags.html",
"views/honkers.html", "views/honkers.html",
"views/zonkers.html", "views/zonkers.html",
"views/combos.html", "views/combos.html",

5
views/honkfrags.html Normal file
View File

@ -0,0 +1,5 @@
<div>{{ .TopXID }}</div>
{{ $BonkCSRF := .HonkCSRF }}
{{ range .Honks }}
{{ template "honk.html" map "Honk" . "BonkCSRF" $BonkCSRF }}
{{ end }}

View File

@ -11,6 +11,27 @@
{{ end }} {{ end }}
</div> </div>
{{ $BonkCSRF := .HonkCSRF }} {{ $BonkCSRF := .HonkCSRF }}
{{ if .TopXID }}
<div class="info" id="refreshbox">
<script>
var topxid = {{ .TopXID }}
function refreshhonks() {
get("/?topxid=" + escape(topxid), function(xhr) {
var doc = xhr.responseXML
topel = doc.children[0].children[1].children[0]
topxid = topel.innerText
honks = doc.children[0].children[1].children
var mebox = document.getElementById("refreshbox")
for (var i = honks.length; i > 1; i--) {
mebox.insertAdjacentElement('afterend', honks[i-1])
}
})
}
</script>
<p><button onclick="refreshhonks()">refresh</button>
</div>
{{ end }}
{{ range .Honks }} {{ range .Honks }}
{{ template "honk.html" map "Honk" . "BonkCSRF" $BonkCSRF }} {{ template "honk.html" map "Honk" . "BonkCSRF" $BonkCSRF }}
{{ end }} {{ end }}
@ -31,6 +52,13 @@ function post(url, data) {
x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded") x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
x.send(data) x.send(data)
} }
function get(url, whendone) {
var x = new XMLHttpRequest()
x.open("GET", url)
x.responseType = "document"
x.onload = function() { whendone(x) }
x.send()
}
function bonk(el, xid) { function bonk(el, xid) {
el.innerHTML = "bonked" el.innerHTML = "bonked"
el.disabled = true el.disabled = true