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