Revision: 4133
          http://vexi.svn.sourceforge.net/vexi/?rev=4133&view=rev
Author:   clrg
Date:     2011-05-13 00:26:21 +0000 (Fri, 13 May 2011)

Log Message:
-----------
Feature: track value types and return the same type (datefield only)

Modified Paths:
--------------
    trunk/org.vexi-vexi.widgets/src_main/org/vexi/theme/classic/datefield.t
    trunk/org.vexi-vexi.widgets/src_test/test/widget/datefield.t

Modified: 
trunk/org.vexi-vexi.widgets/src_main/org/vexi/theme/classic/datefield.t
===================================================================
--- trunk/org.vexi-vexi.widgets/src_main/org/vexi/theme/classic/datefield.t     
2011-05-13 00:15:23 UTC (rev 4132)
+++ trunk/org.vexi-vexi.widgets/src_main/org/vexi/theme/classic/datefield.t     
2011-05-13 00:26:21 UTC (rev 4133)
@@ -51,6 +51,7 @@
         thisbox.yearview  = $year;
         thisbox.sep1      = $sep1;
         thisbox.sep2      = $sep2;
+        thisbox.valuetype = "string";
         thisbox.v_popbox  = $popbox;
         thisbox.v_textbox = false;
         
@@ -134,6 +135,11 @@
             cascade = v;
         }
         
+        thisbox.popdown ++= function(v) {
+            cascade = v;
+            value = value;
+        }
+        
         /** assign date and popup */
         $select.action ++= function(v) {
             popup = true;
@@ -233,8 +239,9 @@
                     break;
                 case "enter":
                     if (value==null) {
-                        value = "today";
+                        date = vexi.date();
                     }
+                    value = value;
                     break;
                 case "back_space":
                 case "delete":
@@ -363,18 +370,44 @@
         trapee.parseDate(v, trapee.textformat, trapee);
     }
     
-    static.valueRead = function() { var t = trapee.text; return t ? t : null; }
+    static.valueRead = function() {
+        switch (trapee.valuetype) {
+        case "string":
+            var t = trapee.text;
+            return t ? t : null;
+        case "vexi.util.date":
+            return trapee.copy();
+        case "date": case "number":
+            throw "unimplemented";
+        default:
+            return null;
+        }
+    }
     
     static.valueWrite = function(v) {
         if (v == "") {
+            trapee.valuetype = "string";
             v = null;
         }
         switch (typeof(v)) {
+        case "box":
+        case "object":
+        case "vexi.util.date":
+        case "org.vexi.lib.util.date":
+            if (v.day != trapee.day and v.month != trapee.month and v.year != 
trapee.year) {
+                trapee.day = trapee.day;
+                trapee.month = trapee.month;
+                trapee.year = trapee.year;
+            }
+            trapee.valuetype = "vexi.util.date";
+            break;
         case "date":
             trapee.date = v;
+            trapee.valuetype = "vexi.date";
             break;
         case "number":
             trapee.date = vexi.date(v);
+            trapee.valuetype = "number";
             break;
         case "null":
             trapee.day = null;
@@ -384,9 +417,12 @@
         case "string":
             if (v.toLowerCase() == "today") {
                 trapee.date = vexi.date();
+            } else if (trapee.text == v) {
+                break;
             } else {
                 trapee.parseDate(v, trapee.valueformat, trapee);
             }
+            trapee.valuetype = "string";
             break;
         default:
             throw "unsupported value type for datefield: '"+typeof(v)+"'";

Modified: trunk/org.vexi-vexi.widgets/src_test/test/widget/datefield.t
===================================================================
--- trunk/org.vexi-vexi.widgets/src_test/test/widget/datefield.t        
2011-05-13 00:15:23 UTC (rev 4132)
+++ trunk/org.vexi-vexi.widgets/src_test/test/widget/datefield.t        
2011-05-13 00:26:21 UTC (rev 4133)
@@ -4,6 +4,9 @@
     </meta:doc>
    
     var vunit = vexi..vexi.test.vunit;
+    var assertEq = vunit..assertEq;
+    var assertTrue = vunit..assertTrue;
+    var assertNotNull = vunit..assertNotNull;
     
     /// Quick Suite
     var suite = { name: "vexi.widget.datefield Tests" };
@@ -12,9 +15,9 @@
         var b = new .datefield();
         b.format = "YYYY-MM-DD";
         b.text = "2008-01-05";
-        assert("2008-01-05", b.text);
+        assertEq("2008-01-05", b.text);
         b.value = "2008-01-05";
-        assert("2008-01-05", b.value);
+        assertEq("2008-01-05", b.value);
     };
     
     suite.test_value_date_put = function() {
@@ -25,9 +28,9 @@
         d.year = "2008";
         b.value = d;
         var val = b.value;
-        assert("05", d.day);
-        assert("01", d.month);
-        assert("2008", d.year);
+        assertEq("05", d.day);
+        assertEq("01", d.month);
+        assertEq("2008", d.year);
     };
     
     suite.test_value_write_on_enter = function() {
@@ -37,9 +40,29 @@
         var putval;
         b.value ++= function(v) { cascade = v; putval = v; }
         b.KeyPressed = "enter";
-        assert("2008-01-05", putval);
+        assertEq("2008-01-05", putval);
     };
     
+    suite.test_blank_write_on_enter = function() {
+        var b = new .datefield();
+        var putval;
+        b.value ++= function(v) { cascade = v; 
+        vexi.trace(v); putval = v; }
+        b.KeyPressed = "enter";
+        assertTrue(putval!="today");
+        assertNotNull(putval);
+    };
+    
+    suite.test_blank_write_on_enter_date_valuetype = function() {
+        var b = new .datefield();
+        var putval;
+        b.value ++= function(v) { cascade = v; 
+        vexi.trace(v); putval = v; }
+        b.KeyPressed = "enter";
+        assertTrue(putval!="today");
+        assertNotNull(putval);
+    };
+    
     static.test = suite;
     
     <surface>


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Achieve unprecedented app performance and reliability
What every C/C++ and Fortran developer should know.
Learn how Intel has extended the reach of its next-generation tools
to help boost performance applications - inlcuding clusters.
http://p.sf.net/sfu/intel-dev2devmay
_______________________________________________
Vexi-svn mailing list
Vexi-svn@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/vexi-svn

Reply via email to