47 lines
937 B
Nim
47 lines
937 B
Nim
|
|
import vdom, components, karax, karaxdsl, jdict, jstrutils, dom
|
|
|
|
var
|
|
images: seq[cstring] = @[cstring"a", "b", "c", "d"]
|
|
|
|
proc carousel*(key: VKey): VNode {.component.} =
|
|
state:
|
|
var counter: int = 0
|
|
var cntdown: int = 5
|
|
var timer: Timeout = nil
|
|
|
|
proc docount() =
|
|
cntdown = cntdown - 1
|
|
if cntdown == 0:
|
|
counter = (counter + 1) mod images.len
|
|
cntdown = 5
|
|
else:
|
|
timer = setTimeout(docount, 30)
|
|
redraw()
|
|
|
|
proc next(ev: Event; n: VNode) =
|
|
if timer != nil:
|
|
clearTimeout(timer)
|
|
timer = setTimeout(docount, 30)
|
|
|
|
result = buildHtml(tdiv(key=key)):
|
|
text images[counter]
|
|
button(onclick = next):
|
|
text "Next"
|
|
if cntdown != 5:
|
|
text &cntdown
|
|
|
|
proc createDom(): VNode =
|
|
result = buildHtml(table):
|
|
tr:
|
|
td:
|
|
carousel(0)
|
|
td:
|
|
carousel(1)
|
|
tr:
|
|
td:
|
|
carousel(2)
|
|
td:
|
|
carousel(3)
|
|
|
|
setRenderer createDom
|