[Checkins] SVN: z3c.formjsdemo/trunk/src/z3c/formjsdemo/ Converted calculator demo to use new JS functions.

Stephan Richter srichter at cosmos.phy.tufts.edu
Fri Jul 20 19:13:46 EDT 2007


Log message for revision 78228:
  Converted calculator demo to use new JS functions.
  

Changed:
  U   z3c.formjsdemo/trunk/src/z3c/formjsdemo/calculator/browser.py
  U   z3c.formjsdemo/trunk/src/z3c/formjsdemo/skin/configure.zcml

-=-
Modified: z3c.formjsdemo/trunk/src/z3c/formjsdemo/calculator/browser.py
===================================================================
--- z3c.formjsdemo/trunk/src/z3c/formjsdemo/calculator/browser.py	2007-07-20 22:44:12 UTC (rev 78227)
+++ z3c.formjsdemo/trunk/src/z3c/formjsdemo/calculator/browser.py	2007-07-20 23:13:46 UTC (rev 78228)
@@ -21,7 +21,7 @@
 from zope.viewlet.viewlet import CSSViewlet
 from z3c.form import form, button, field
 from z3c.formui import layout
-from z3c.formjs import jsaction, jsevent, interfaces
+from z3c.formjs import jsaction, jsevent, jsfunction, interfaces
 
 CalculatorCSSViewlet = CSSViewlet('calculator.css')
 
@@ -89,6 +89,7 @@
 
 
 class CalculatorForm(layout.FormLayoutSupport, form.Form):
+    zope.interface.implements(interfaces.IHaveJSFunctions)
 
     buttons = button.Buttons(IButtons)
 
@@ -96,11 +97,10 @@
         self.actions = GridButtonActions(self, self.request, self.context)
         self.actions.update()
 
-    @jsaction.handler(Operator)
-    def handleOperator(self, event, selector):
-        id = selector.widget.id
+    @jsfunction.function('calculator')
+    def operate(self, id):
         return '''var operator = $("#operator .value").html();
-                  var newOperator = $("#%s").val();
+                  var newOperator = $("#"+id).val();
                   var current = $("#current .value").html();
                   var stack = $("#stack .value").html();
                   if (operator == ""){
@@ -118,25 +118,36 @@
                   $("#operator .value").html(operator);
                   $("#stack .value").html(stack);
                   $("#recentOperator .value").html("True");
-                  $("#current .value").html(current);''' % id
+                  $("#current .value").html(current);'''
 
-    @jsaction.handler(Literal)
-    def handleLiteral(self, event, selector):
-        id = selector.widget.id
+    @jsfunction.function('calculator')
+    def addLiteral(self, id):
         return '''var recentOperator = $("#recentOperator .value").html();
                   var current = $("#current .value").html();
-                  var number = $("#%s").val();
+                  var number = $("#" + id).val();
                   if (recentOperator != ""){
                     current = "";
                   }
                   current = current+number;
                   $("#current .value").html(current);
                   $("#recentOperator .value").html("");
-                  ''' % id
+                  '''
 
-    @jsaction.handler(buttons['clear'])
-    def handlerClear(self, event, selector):
+    @jsfunction.function('calculator')
+    def clear(self):
         return '''$("#stack .value").html("");
                   $("#current .value").html("");
                   $("#operator .value").html("");
                   $("#recentOperator .value").html("");'''
+
+    @jsaction.handler(Operator)
+    def handleOperator(self, event, selector):
+        return 'calculator.operate("%s")' % selector.widget.id
+
+    @jsaction.handler(Literal)
+    def handleLiteral(self, event, selector):
+        return 'calculator.addLiteral("%s")' % selector.widget.id
+
+    @jsaction.handler(buttons['clear'])
+    def handlerClear(self, event, selector):
+        return 'calculator.clear()'

Modified: z3c.formjsdemo/trunk/src/z3c/formjsdemo/skin/configure.zcml
===================================================================
--- z3c.formjsdemo/trunk/src/z3c/formjsdemo/skin/configure.zcml	2007-07-20 22:44:12 UTC (rev 78227)
+++ z3c.formjsdemo/trunk/src/z3c/formjsdemo/skin/configure.zcml	2007-07-20 23:13:46 UTC (rev 78228)
@@ -64,6 +64,15 @@
       layer="z3c.formjsdemo.layer.IDemoBrowserLayer"
       />
 
+  <viewlet
+      name="functions"
+      manager="z3c.formjsdemo.skin.IJavaScript"
+      view="z3c.formjs.interfaces.IHaveJSFunctions"
+      class="z3c.formjs.jsfunction.JSFunctionsViewlet"
+      permission="zope.Public"
+      layer="z3c.formjsdemo.layer.IDemoBrowserLayer"
+      />
+
   <!-- layout template -->
   <z3c:layout
       for="*"



More information about the Checkins mailing list