# HG changeset patch # User Jaroslav Tulach # Date 1361212922 -3600 # Node ID ecd7294f1e17d40b81e942375711c5fcb1e689a9 # Parent a758763f8415577e91b92be74cd92427f762a7e5 knockout.js can display our String arrays and update them when they change diff -r a758763f8415 -r ecd7294f1e17 javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java Mon Feb 18 19:41:30 2013 +0100 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java Mon Feb 18 19:42:02 2013 +0100 @@ -338,6 +338,9 @@ w.write(" prop_" + p.name() + ".assign(ko);\n"); w.write(" return prop_" + p.name() + ";\n"); w.write("}\n"); + w.write("private Object[] " + gs[0] + "ToArray() {\n"); + w.write(" return " + gs[0] + "().toArray(new Object[0]);\n"); + w.write("}\n"); } else { w.write("private " + tn + " prop_" + p.name() + ";\n"); w.write("public " + tn + " " + gs[0] + "() {\n"); @@ -442,7 +445,7 @@ return new String[] { "get" + n, null, - "get" + nu + "___3" + bck2brwsrType, + "get" + nu + "ToArray___3Ljava_lang_Object_2", null }; } diff -r a758763f8415 -r ecd7294f1e17 javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/KnockoutTest.java --- a/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/KnockoutTest.java Mon Feb 18 19:41:30 2013 +0100 +++ b/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/KnockoutTest.java Mon Feb 18 19:42:02 2013 +0100 @@ -17,6 +17,7 @@ */ package org.apidesign.bck2brwsr.htmlpage; +import org.apidesign.bck2brwsr.core.JavaScriptBody; import org.apidesign.bck2brwsr.htmlpage.api.ComputedProperty; import org.apidesign.bck2brwsr.htmlpage.api.OnEvent; import org.apidesign.bck2brwsr.htmlpage.api.Page; @@ -31,7 +32,8 @@ * @author Jaroslav Tulach */ @Page(xhtml="Knockout.xhtml", className="KnockoutModel", properties={ - @Property(name="name", type=String.class) + @Property(name="name", type=String.class), + @Property(name="results", type=String.class, array = true) }) public class KnockoutTest { @@ -50,6 +52,25 @@ assert "Jardo".equals(m.getName()) : "Name property updated: " + m.getName(); } + @HtmlFragment( + "\n" + ) + @BrwsrTest public void displayContentOfArray() { + KnockoutModel m = new KnockoutModel(); + m.getResults().add("Ahoj"); + m.applyBindings(); + + int cnt = countChildren("ul"); + assert cnt == 1 : "One child, but was " + cnt; + + m.getResults().add("hello"); + + cnt = countChildren("ul"); + assert cnt == 2 : "Two children now, but was " + cnt; + } + @ComputedProperty static String helloMessage(String name) { return "Hello " + name + "!"; @@ -59,4 +80,11 @@ public static Object[] create() { return VMTest.create(KnockoutTest.class); } + + @JavaScriptBody(args = { "id" }, body = + "var e = window.document.getElementById(id);\n " + + "if (typeof e === 'undefined') return -2;\n " + + "return e.children.length;\n " + ) + private static native int countChildren(String id); } diff -r a758763f8415 -r ecd7294f1e17 javaquery/demo-calculator-dynamic/src/main/java/org/apidesign/bck2brwsr/demo/calc/Calc.java --- a/javaquery/demo-calculator-dynamic/src/main/java/org/apidesign/bck2brwsr/demo/calc/Calc.java Mon Feb 18 19:41:30 2013 +0100 +++ b/javaquery/demo-calculator-dynamic/src/main/java/org/apidesign/bck2brwsr/demo/calc/Calc.java Mon Feb 18 19:42:02 2013 +0100 @@ -33,11 +33,13 @@ @Property(name = "memory", type = double.class), @Property(name = "display", type = double.class), @Property(name = "operation", type = String.class), - @Property(name = "hover", type = boolean.class) + @Property(name = "hover", type = boolean.class), + @Property(name = "results", type = String.class, array = true) }) public class Calc { static { - new Calculator().applyBindings(); + Calculator m = new Calculator(); + m.applyBindings(); } @On(event = CLICK, id="clear") @@ -65,11 +67,13 @@ @On(event = CLICK, id="result") static void computeTheValue(Calculator c) { - c.setDisplay(compute( + final double val = compute( c.getOperation(), c.getMemory(), c.getDisplay() - )); + ); + c.getResults().add("another result " + val); + c.setDisplay(val); c.setMemory(0); } diff -r a758763f8415 -r ecd7294f1e17 javaquery/demo-calculator-dynamic/src/main/resources/org/apidesign/bck2brwsr/demo/calc/Calculator.xhtml --- a/javaquery/demo-calculator-dynamic/src/main/resources/org/apidesign/bck2brwsr/demo/calc/Calculator.xhtml Mon Feb 18 19:41:30 2013 +0100 +++ b/javaquery/demo-calculator-dynamic/src/main/resources/org/apidesign/bck2brwsr/demo/calc/Calculator.xhtml Mon Feb 18 19:42:02 2013 +0100 @@ -78,6 +78,12 @@
+

Results

+ + +