Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- include karax/prelude
- import random, sugar, strutils, algorithm
- type
- Entry = object
- addedAt: int
- entry: kstring
- AddEntryComponent = object
- currentText: kstring
- placeholder: kstring
- callback: (kstring)->void
- proc initAddEntryComponent(): AddEntryComponent =
- return AddEntryComponent(currentText: "",
- placeholder: "Good vibes only",
- callback: (s: kstring) => (discard))
- proc render(comp: var AddEntryComponent): VNode =
- result = buildHtml():
- form(class="pure-form"):
- fieldset():
- input(id="entry", placeholder=comp.placeholder):
- proc onkeyup(ev: Event, n: VNode) =
- discard
- button(type="button", class="pure-button pure-button-primary"):
- text "ADD"
- proc onclick() =
- let inputField = getVNodeById("entry")
- comp.callback(inputField.text)
- return result
- var entries : seq[Entry]
- proc addEntry(e: kstring) =
- entries.add(Entry(entry: e, addedAt: entries.len()))
- var
- entryComponent = initAddEntryComponent()
- entryComponent.callback = addEntry
- proc createDom(): VNode =
- result = buildHtml():
- tdiv():
- link("rel"="stylesheet", "href"="../style.css")
- link("rel"="stylesheet", "href"="../pure-min.css")
- tdiv("class"="content"):
- h1:
- text "TODO"
- entryComponent.render()
- hr()
- for i, e in entries:
- tdiv(class="todoentry"):
- button(type="button", id="" & $i, class="pure-button"):
- text "DONE"
- proc onclick(e: Event, n: VNode) =
- let id = n.id.parseInt()
- entries.del(id)
- entries.sort((a: Entry, b: Entry) => (system.cmp(a.addedAt, b.addedAt)))
- echo "Entry: ", e.entry
- text " " & e.entry
- setRenderer createDom
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement