From b8c9ff45fe678ecbab6356dab2392340134ff067 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Tue, 21 Nov 2017 17:24:25 +0100 Subject: [PATCH 1/4] added websockets' onopen event handler --- karax/jwebsockets.nim | 1 + 1 file changed, 1 insertion(+) diff --git a/karax/jwebsockets.nim b/karax/jwebsockets.nim index c662ad1..2b1412e 100644 --- a/karax/jwebsockets.nim +++ b/karax/jwebsockets.nim @@ -6,6 +6,7 @@ type WebSocket* {.importc.} = ref object onmessage*: proc (e: MessageEvent) + onopen*: proc (e: MessageEvent) proc newWebSocket*(url, key: cstring): WebSocket {.importcpp: "new WebSocket(@)".} From 4571ad0dd546f23a98e23b414c0602e96a33c09c Mon Sep 17 00:00:00 2001 From: Araq Date: Tue, 21 Nov 2017 23:44:23 +0100 Subject: [PATCH 2/4] merged PR #38 manually; refs #38 --- karax/kajax.nim | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/karax/kajax.nim b/karax/kajax.nim index c226c50..c58d3b5 100644 --- a/karax/kajax.nim +++ b/karax/kajax.nim @@ -5,7 +5,7 @@ import karax -proc ajax(meth, url: cstring; headers: openarray[(cstring, cstring)]; +proc ajax*(meth, url: cstring; headers: openarray[(cstring, cstring)]; data: cstring; cont: proc (httpStatus: int; response: cstring); kxi: KaraxInstance = kxi) = @@ -49,5 +49,17 @@ proc ajaxGet*(url: cstring; headers: openarray[(cstring, cstring)]; kxi: KaraxInstance = kxi) = ajax("GET", url, headers, nil, cont, kxi) +proc ajaxPut*(url: cstring; headers: openarray[(cstring, cstring)]; + data: cstring; + cont: proc (httpStatus: int, response: cstring); + kxi: KaraxInstance = kxi) = + ajax("PUT", url, headers, data, cont, kxi) + +proc ajaxDelete*(url: cstring; headers: openarray[(cstring, cstring)]; + cont: proc (httpStatus: int, response: cstring); + kxi: KaraxInstance = kxi) = + ajax("DELETE", url, headers, nil, cont, kxi) + + proc toJson*[T](data: T): cstring {.importc: "JSON.stringify".} proc fromJson*[T](blob: cstring): T {.importc: "JSON.parse".} From 1ad7567b288d873e12021f6100a20bc82d7cc664 Mon Sep 17 00:00:00 2001 From: Araq Date: Wed, 22 Nov 2017 14:37:12 +0100 Subject: [PATCH 3/4] added new experiments --- experiments/config.nims | 1 + experiments/scrollapp_simple.nim | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 experiments/config.nims create mode 100644 experiments/scrollapp_simple.nim diff --git a/experiments/config.nims b/experiments/config.nims new file mode 100644 index 0000000..532b206 --- /dev/null +++ b/experiments/config.nims @@ -0,0 +1 @@ +--path: "../src" diff --git a/experiments/scrollapp_simple.nim b/experiments/scrollapp_simple.nim new file mode 100644 index 0000000..cdd19cd --- /dev/null +++ b/experiments/scrollapp_simple.nim @@ -0,0 +1,25 @@ +## Example that shows how to accomplish an "infinitely scrolling" app. + +include karax / prelude +import karax / [kdom, vstyles] + +var entries: seq[cstring] = @[] +for i in 1..500: + entries.add(cstring("Entry ") & &i) + +proc scrollEvent(ev: Event; n: VNode) = + let d = n.dom + if d != nil and inViewport(d.lastChild): + # "load" more data: + for i in 1..50: + entries.add(cstring("Loaded Entry ") & &i) + +proc createDom(): VNode = + result = buildHtml(): + tdiv(onscroll=scrollEvent, style=style( + (StyleAttr.height, cstring"400px"), (StyleAttr.overflow, cstring"scroll"))): + for x in entries: + tdiv: + text x + +setRenderer createDom From be759d9b42956acff75aff708b31b25d9ecb0957 Mon Sep 17 00:00:00 2001 From: Araq Date: Thu, 30 Nov 2017 18:16:31 +0100 Subject: [PATCH 4/4] bugfix: apply class changes consistently --- .gitignore | 3 ++- karax/karax.nim | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 42b07a7..2a1e84c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ nimcache/ -/tests/tester \ No newline at end of file +/tests/tester +*.exe diff --git a/karax/karax.nim b/karax/karax.nim index 9aea015..fed61aa 100644 --- a/karax/karax.nim +++ b/karax/karax.nim @@ -260,6 +260,7 @@ proc updateStyles(newNode, oldNode: VNode) = if oldNode.dom != nil: if newNode.style != nil: applyStyle(oldNode.dom, newNode.style) else: oldNode.dom.style = Style() + oldNode.dom.class = newNode.class oldNode.style = newNode.style oldNode.class = newNode.class