Author: michiel
Date: 2009-11-16 18:28:59 +0100 (Mon, 16 Nov 2009)
New Revision: 39725

Added:
   
mmbase/trunk/base-webapp/src/main/webapp/mmbase/components/test/datatypes.jspx
Modified:
   mmbase/trunk/base-webapp/src/main/webapp/mmbase/admin/css/admin.css
   mmbase/trunk/base-webapp/src/main/webapp/mmbase/validation/validation.js.jsp
Log:
test-block for datatypes

Modified: mmbase/trunk/base-webapp/src/main/webapp/mmbase/admin/css/admin.css
===================================================================
--- mmbase/trunk/base-webapp/src/main/webapp/mmbase/admin/css/admin.css 
2009-11-16 17:27:29 UTC (rev 39724)
+++ mmbase/trunk/base-webapp/src/main/webapp/mmbase/admin/css/admin.css 
2009-11-16 17:28:59 UTC (rev 39725)
@@ -237,7 +237,6 @@
        border-width: 1px 1px 0 1px;
        border-style: solid solid none solid;
        margin-bottom: 1em;
-       width: 100%;
 }
 
 caption
@@ -352,3 +351,20 @@
 .b_mmbase_microblog_uncached li span.message {
   display: block;
 }
+
+
+tr.todo,
+td.todo {
+  background-color: #faa;
+}
+
+
+table.tests th,
+table.tests td {
+  width: 20%;
+}
+
+table.tests td div {
+  width: 100px;
+  overflow: hidden !important;
+}

Added: 
mmbase/trunk/base-webapp/src/main/webapp/mmbase/components/test/datatypes.jspx
===================================================================
--- 
mmbase/trunk/base-webapp/src/main/webapp/mmbase/components/test/datatypes.jspx  
                            (rev 0)
+++ 
mmbase/trunk/base-webapp/src/main/webapp/mmbase/components/test/datatypes.jspx  
    2009-11-16 17:28:59 UTC (rev 39725)
@@ -0,0 +1,81 @@
+<jsp:root
+    version="1.2"
+    xmlns:c="http://java.sun.com/jsp/jstl/core";
+    xmlns:fmt="http://java.sun.com/jsp/jstl/fmt";
+    xmlns:mm="http://www.mmbase.org/mmbase-taglib-2.0";
+    xmlns:jsp="http://java.sun.com/JSP/Page";
+    >
+  <jsp:directive.page import="org.mmbase.bridge.*" />
+  <jsp:output omit-xml-declaration="true" />
+  <div
+      class="test mm_c c_test b_datatypes 
${requestScope['org.mmbase.componentClassName']}"
+      id="${requestScope['org.mmbase.componentId']}">
+
+  <script type="text/javascript">
+    $(function() {
+       $("table.tests tr").each(function() {
+          var actual = $(this).find("td:eq(1)").text();
+          var expected = $(this).find("td:eq(4)").text();
+          if (actual != expected) {
+            $(this).find("td:eq(1)").addClass('todo');
+          }
+        });
+       var val = new MMBaseValidator(null);
+       $("table.tests tr td:nth-child(2) div").each(function() {
+           var expected = $(this).parents("tr").find("td:eq(4)").text();
+           var jsvalid = "" + val.validate(this, false);
+           $(this).parents("tr").find("td:eq(2)").text(jsvalid);
+           if (jsvalid != expected) {
+             $(this).parents("tr").find("td:eq(2)").addClass("todo");
+           }
+           var ajaxvalid = "" + val.validate(this, true);
+           $(this).parents("tr").find("td:eq(3)").text(ajaxvalid);
+           if (ajaxvalid != expected) {
+             $(this).parents("tr").find("td:eq(3)").addClass("todo");
+           }
+
+
+       });
+    });
+  </script>
+
+
+    <h1>DataTypes </h1>
+    <mm:cloud jspvar="cloud" rank="administrator">
+      <jsp:scriptlet>pageContext.setAttribute("cases", 
org.mmbase.datatypes.ParameterizedDataTypesTest.getCases(cloud, 
null));</jsp:scriptlet>
+
+      <table class="tests">
+        <tbody>
+        <tr><th>data type</th><th>value</th><th>Java valid</th><th>JS 
valid</th><th>JS valid (ajax)</th><th>expected valid</th></tr>
+        <c:forEach items="${cases}" var="case">
+          <jsp:scriptlet>Field f = 
cloud.getNodeManager("datatypes").getField((String) ((Object[] 
)pageContext.getAttribute("case"))[0]); pageContext.setAttribute("f", 
f);</jsp:scriptlet>
+
+          <c:forEach items="${case[1]}" var="c">
+            <jsp:scriptlet>Object o = 
pageContext.getAttribute("c");</jsp:scriptlet>
+            <tr>
+              <th>${case[0]}</th>
+              <td><div class="mm_validate mm_nm_datatypes 
mm_f_${f.name}"><mm:escape>${c}</mm:escape></div></td>
+              <td><jsp:expression>f.getDataType().validate(o, null, f).size() 
== 0</jsp:expression></td>
+              <td> </td>
+              <td> </td>
+              <td>true</td>
+            </tr>
+          </c:forEach>
+          <c:forEach items="${case[2]}" var="c">
+            <jsp:scriptlet>Object o = 
pageContext.getAttribute("c");</jsp:scriptlet>
+            <tr>
+              <th class="mm_nm_tests_ mm_f_${f.name}">${case[0]}</th>
+              <td><div class="mm_validate mm_nm_datatypes 
mm_f_${f.name}"><mm:escape>${c}</mm:escape></div></td>
+              <td><jsp:expression>f.getDataType().validate(o, null, f).size() 
== 0</jsp:expression></td>
+              <td> </td>
+              <td> </td>
+              <td>false</td>
+            </tr>
+          </c:forEach>
+        </c:forEach>
+        </tbody>
+      </table>
+    </mm:cloud>
+
+  </div>
+</jsp:root>

Modified: 
mmbase/trunk/base-webapp/src/main/webapp/mmbase/validation/validation.js.jsp
===================================================================
--- 
mmbase/trunk/base-webapp/src/main/webapp/mmbase/validation/validation.js.jsp    
    2009-11-16 17:27:29 UTC (rev 39724)
+++ 
mmbase/trunk/base-webapp/src/main/webapp/mmbase/validation/validation.js.jsp    
    2009-11-16 17:28:59 UTC (rev 39725)
@@ -642,7 +642,10 @@
     if (this.isDateTime(el)) {
         return  this.getDateValue(el);
     } else {
-        var value = el.value;
+        if (el.tagName == "div") {
+            return $(el).text();
+        }
+        var value = $(el).val();
         if( this.isNumeric(el)) {
             if (value == "") {
             } else {
@@ -812,6 +815,7 @@
 
 MMBaseValidator.prototype.getElement = function(event) {
     var target = this.target(event);
+    if (target == null) target = event;
     //this.log("event " + event.type + " on " + target.id);
     if ($(target).hasClass("mm_validate")) {
         return target;
@@ -829,7 +833,8 @@
  */
 MMBaseValidator.prototype.validate = function(event, server) {
     //this.log("event " + event.type + " on " + target.id);
-    this.validateElement(this.getElement(event), server);
+    var element = this.getElement(event);
+    return this.validateElement(element, server);
 }
 
 MMBaseValidator.prototype.serverValidate = function(event) {
@@ -891,6 +896,7 @@
         this.validateHook(valid, element);
     }
     $(element).trigger("mmValidate", [this, valid]);
+    return valid;
 }
 
 /**

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to