nitter/src/views/preferences.nim

42 lines
1.3 KiB
Nim
Raw Normal View History

2019-09-17 20:01:44 +01:00
import tables, macros, strutils
2019-08-13 18:44:29 +01:00
import karax/[karaxdsl, vdom, vstyles]
2019-09-05 21:53:23 +01:00
import renderutils
2019-08-17 20:49:41 +01:00
import ../types, ../prefs_impl
2019-08-13 18:44:29 +01:00
macro renderPrefs*(): untyped =
result = nnkCall.newTree(
ident("buildHtml"), ident("tdiv"), nnkStmtList.newTree())
for header, options in prefList:
result[2].add nnkCall.newTree(
ident("legend"),
nnkStmtList.newTree(
nnkCommand.newTree(ident("text"), newLit(header))))
for pref in options:
2019-08-15 13:38:14 +01:00
let procName = ident("gen" & capitalizeAscii($pref.kind))
let state = nnkDotExpr.newTree(ident("prefs"), ident(pref.name))
var stmt = nnkStmtList.newTree(
nnkCall.newTree(procName, newLit(pref.name), newLit(pref.label), state))
2019-08-13 18:44:29 +01:00
case pref.kind
2019-08-15 13:38:14 +01:00
of checkbox: discard
of select: stmt[0].add newLit(pref.options)
of input: stmt[0].add newLit(pref.placeholder)
result[2].add stmt
2019-08-13 18:44:29 +01:00
proc renderPreferences*(prefs: Prefs; path: string): VNode =
2019-09-13 09:44:21 +01:00
buildHtml(tdiv(class="overlay-panel")):
2019-08-15 18:13:54 +01:00
fieldset(class="preferences"):
form(`method`="post", action="/saveprefs"):
2019-09-05 21:53:23 +01:00
refererField path
2019-08-13 18:44:29 +01:00
renderPrefs()
2019-08-16 00:57:36 +01:00
button(`type`="submit", class="pref-submit"):
2019-08-13 18:44:29 +01:00
text "Save preferences"
2019-08-15 18:13:54 +01:00
2019-09-05 21:53:23 +01:00
buttonReferer "/resetprefs", "Reset Preferences", path, class="pref-reset"