Changeset 705
- Timestamp:
- 2008-10-17 15:17:11 (5 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
-
modules/kauri-forms/kauri-forms-framework/src/main/kauri/js/date.js (modified) (5 diffs)
-
modules/kauri-forms/kauri-forms-framework/src/main/kauri/js/field.js (modified) (1 diff)
-
modules/kauri-forms/kauri-forms-framework/src/main/kauri/js/location.js (modified) (2 diffs)
-
modules/kauri-forms/kauri-forms-framework/src/test/js/test-date.js (modified) (1 diff)
-
samples/kauri-forms-sample/src/main/kauri/router.groovy (modified) (2 diffs)
-
samples/kauri-forms-sample/src/main/kauri/templates/data/sample-form-config.xml (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/modules/kauri-forms/kauri-forms-framework/src/main/kauri/js/date.js
r694 r705 21 21 22 22 // adding the new types to the registries... 23 formatters.put("pattern-date" , { 24 // default to the ISO8601 datetime format 25 pattern : $.datepicker.ISO_8601, 26 27 format : function( val) { 28 if (val == undefined) 29 return ""; 30 if (val.constructor != Date) 31 this.fail("Not a Date: {0}.", [val]); 32 33 return $.datepicker.formatDate(this.pattern, val); 34 }, 35 36 parse : function(valstr) { 37 if (typeof valstr == 'string') { 38 valstr = $.trim(valstr); 39 if (valstr.length == 0) 40 return undefined; 41 42 try { 43 return $.datepicker.parseDate(this.pattern, valstr); 44 } catch (e) { 45 // do nothing yet, we'll fail later 46 } 47 } 48 this.fail( "Could not parse the date : " + valstr ); 49 } 50 }); 51 52 formatters.put("pattern-date-range", { 53 pattern : $.datepicker.ISO_8601, 54 rangeSeparator : " - ", 55 format : function (val) { 56 if (val == undefined) 57 return ""; 58 if (val.length != 2) 59 this.fail("Not a Date Range: {0}.", [val]); 23 formatters.putAll( { 24 "pattern-date" : { 25 // default to the ISO8601 datetime format 26 pattern : $.datepicker.ISO_8601, 60 27 61 var formattedRange = [ 62 $.datepicker.formatDate(this.pattern, val[0]), 63 $.datepicker.formatDate(this.pattern, val[1]) 64 ] 28 format : function( val) { 29 if (val == undefined) 30 return ""; 31 if (val.constructor != Date) 32 this.fail("Not a Date: {0}.", [val]); 33 34 return $.datepicker.formatDate(this.pattern, val); 35 }, 65 36 66 return formattedRange.join(this.rangeSeparator); 67 }, 68 parse : function(valstr) { 69 var rangeArr; 70 if (typeof valstr == 'string') { 71 valstr = $.trim(valstr); 72 if (valstr.length == 0) 73 return undefined; 74 75 rangeArr = valstr.split(this.rangeSeparator); 76 } else if (valstr.constructor == Array) { 77 rangeArr = valstr 78 } 79 80 if (rangeArr != null) { 81 try { 82 83 if (rangeArr.length == 2) { 84 return [ 85 $.datepicker.parseDate(this.pattern, $.trim(rangeArr[0])), 86 $.datepicker.parseDate(this.pattern, $.trim(rangeArr[1])) 87 ]; 88 } 89 } catch (e) { 90 // do nothing yet, we'll fail later 91 } 92 } 93 this.fail( "Could not parse the date : " + valstr ); 94 } 95 }); 96 97 formatters.put("short-date", { 98 base :"pattern-date", 99 pattern :"dd/mm/yy" 100 }); 101 formatters.put("short-date-range", { 102 base :"pattern-date-range", 103 pattern :"dd/mm/yy" 104 }); 105 /* TODO jquery datetime formatting 106 formatters.put("short-datetime", { 107 base :"pattern-date", 108 pattern :"dd/MM/yyyy HH:mm:ss" 109 }); 110 formatters.put("short-time", { 111 base :"pattern-date", 112 pattern :"HH:mm:ss" 113 }); 114 */ 115 formatters.put("wire-date", { 116 base :"pattern-date", 117 pattern : $.datepicker.ISO_8601 118 }); 119 formatters.put("wire-date-range", { 120 base :"pattern-date-range", 121 pattern : $.datepicker.ISO_8601 122 }); 123 124 125 /* 126 formatters.put("wire-datetime", { 127 base :"pattern-date", 128 pattern :"yyyy-MM-ddTHH:mm:ssZ" 129 }); 130 formatters.put("wire-time", { 131 base :"pattern-date", 132 pattern :"HH:mm:ssZ" 133 }); 134 */ 37 parse : function(valstr) { 38 if (typeof valstr == 'string') { 39 valstr = $.trim(valstr); 40 if (valstr.length == 0) 41 return undefined; 42 43 try { 44 return $.datepicker.parseDate(this.pattern, valstr); 45 } catch (e) { 46 // do nothing yet, we'll fail later 47 } 48 } 49 this.fail( "Could not parse the date : " + valstr ); 50 } 51 }, 52 "pattern-date-range" : { 53 pattern : $.datepicker.ISO_8601, 54 rangeSeparator : " - ", 55 format : function (val) { 56 if (val == undefined) 57 return ""; 58 if (val.length != 2) 59 this.fail("Not a Date Range: {0}.", [val]); 60 61 var formattedRange = [ 62 $.datepicker.formatDate(this.pattern, val[0]), 63 $.datepicker.formatDate(this.pattern, val[1]) 64 ] 65 66 return formattedRange.join(this.rangeSeparator); 67 }, 68 parse : function(valstr) { 69 var rangeArr; 70 if (typeof valstr == 'string') { 71 valstr = $.trim(valstr); 72 if (valstr.length == 0) 73 return undefined; 74 75 rangeArr = valstr.split(this.rangeSeparator); 76 } else if (valstr.constructor == Array) { 77 rangeArr = valstr 78 } 79 80 if (rangeArr != null) { 81 try { 82 83 if (rangeArr.length == 2) { 84 return [ 85 $.datepicker.parseDate(this.pattern, $.trim(rangeArr[0])), 86 $.datepicker.parseDate(this.pattern, $.trim(rangeArr[1])) 87 ]; 88 } 89 } catch (e) { 90 // do nothing yet, we'll fail later 91 } 92 } 93 this.fail( "Could not parse the date : " + valstr ); 94 } 95 }, 96 "time" : { 97 prependZero : function (val) { 98 var s = ""; 99 s += val; 100 if (s.length == 1) s = "0" + s; 101 return s; 102 }, 103 format : function (val) { 104 if (val == undefined) 105 return ""; 106 if (val.constructor != Date) 107 this.fail("Not a Date: {0}.", [val]); 108 109 var valstr = (this.prependZero(val.getHours()) + ":" + this.prependZero(val.getMinutes()) + ":" + this.prependZero(val.getSeconds())); 110 return valstr 111 }, 112 parse : function (valstr) { 113 if (typeof valstr == 'string') { 114 valstr = $.trim(valstr); 115 if (valstr.length == 0) 116 return undefined; 117 118 var checkNumber = function (numStr, max) { 119 var num = new Number(numStr); 120 if (num != Number.NaN && num <= max) 121 return num 122 else 123 return null; 124 } 125 126 try { 127 var valArr = valstr.split(":"); 128 129 var hour = 0,minute = 0,second = 0; 130 if (valArr[0]) { 131 hour = checkNumber(valArr[0],24); 132 } 133 if (valArr[1]) { 134 minute = checkNumber(valArr[1], 60); 135 } 136 if (valArr[2]) { 137 second = checkNumber(valArr[2], 60); 138 } 139 140 if (hour != null && minute != null && second != null) { 141 return new Date(0,0,0, hour, minute, second, 0); 142 }s 143 } catch (e) { 144 // do nothing yet, we'll fail later 145 } 146 } 147 this.fail( "Could not parse the date : " + valstr ); 148 } 149 }, 150 "short-date" : { 151 base :"pattern-date", 152 pattern :"dd/mm/yy" 153 }, 154 "short-date-range" : { 155 base :"pattern-date-range", 156 pattern :"dd/mm/yy" 157 }, 158 "wire-date" : { 159 base :"pattern-date", 160 pattern : $.datepicker.ISO_8601 161 }, 162 "wire-date-range" : { 163 base :"pattern-date-range", 164 pattern : $.datepicker.ISO_8601 165 } 166 }); 135 167 136 168 // validators … … 212 244 213 245 fieldTypes.putAll( { 214 215 246 "date" : { 216 247 control: 'date-control', … … 231 262 'user-format' :"short-date-range", 232 263 'wire-format' :"wire-date-range" 233 } 234 235 /* 236 "datetime" : { 237 '@validators' : { 238 "isDate" : {} 239 }, 240 'user-format' :"short-datetime", 241 'wire-format' :"wire-datetime" 242 }, 243 264 }, 244 265 "time" : { 245 '@validators' : { 246 "isDate" : {} 247 }, 248 'user-format' :"short-time", 249 'wire-format' :"wire-time" 250 } 251 */ 252 }); 266 'user-format' : "time", 267 'wire-format' : "time" 268 } 269 }); 270 fieldTypes.put("datetime", { 271 base : "composite", 272 members : { 273 "date" : { type : "date"}, 274 "time" : { type : "time"} 275 }, 276 control : "datetime-control" 277 }); 253 278 254 279 $.inherit(DateControl, kf.Control); … … 322 347 */ 323 348 controlTypes.putAll( { 324 "date-control" :DateControl 349 "date-control" :DateControl, 350 "datetime-control" : { 351 base : "composite-control", 352 elements : { 353 input : { create : "<div/>" }, 354 label : { create : "<span/>" }, 355 container : { create : "<div/>" }, 356 layout : { create : "<span kauri-rev='item'><input kauri-rev='input'/><span kauri-rev='messages'/></span>" } 357 }, 358 setWireValue : function (value) { 359 var valArr = value.split("T"); 360 var newVal = {date : valArr[0], time : valArr[1]} 361 return this.setValueLoop("setWireValue", newVal); 362 }, 363 getWireValue : function() { 364 // concat the date with the time 365 var value = this.getValueLoop("getWireValue"); 366 return value.date + "T" + value.time; 367 } 368 } 325 369 /* 326 370 "datetime-control" :DateTimeControl, … … 328 372 */ 329 373 }); 330 331 332 333 334 374 })(jQuery); -
trunk/modules/kauri-forms/kauri-forms-framework/src/main/kauri/js/field.js
r647 r705 311 311 312 312 for ( var ref in subtypes) { 313 var type = subtypes[ref].type; 314 subtypes[ref] = FieldType.buildType(builder, type); 313 // only build field types if they haven't been built already 314 if (subtypes[ref].format == null) { 315 var type = subtypes[ref].type; 316 subtypes[ref] = FieldType.buildType(builder, type); 317 } 315 318 } 316 319 } -
trunk/modules/kauri-forms/kauri-forms-framework/src/main/kauri/js/location.js
r701 r705 6 6 7 7 if (!$) 8 throw "Kauri Forms Advanced-Controlsrequires jQuery";8 throw "Kauri Forms Location module requires jQuery"; 9 9 if (!$.org.kauriproject.forms) 10 throw "Kauri Forms Advanced-Controlsrequires the kauri-form namespace";10 throw "Kauri Forms Location module requires the kauri-form namespace"; 11 11 12 12 var kp = $.org.kauriproject; … … 25 25 26 26 $.inherit(GMapControl, kf.AbstractContainerControl); 27 28 /** 29 * @class Uses a google map as a control for choosing a location 30 * @param {id} 31 * identification for this control 32 * @param {Form} 33 * form form where this control resides in 34 * @param {FieldType} 35 * type supporting FieldType for this control 36 * @constructor 37 */ 27 38 function GMapControl ( id, form, conf) { 28 39 this['<super.init>'](id, form, conf); 29 40 } 30 41 31 // google maps api key for http://localhost:8888/ 42 /** 43 * The google maps api key. Defaults to a key for http://localhost:8888/ 44 */ 32 45 GMapControl.prototype.apiKey = "ABQIAAAAOLLfFZQRGe8Hwl8R-4_7ABTb-vLQlFZmc2N8bgWI8YDPp5FEVBRSxdJTJfWoHiTs2nyCjV6ZpIuHvA"; 33 46 -
trunk/modules/kauri-forms/kauri-forms-framework/src/test/js/test-date.js
r694 r705 54 54 assertFail(f, "parse", "29/08/2008 26:15:20"); 55 55 }); 56 57 test("wire-time formatter test", function() {58 var f = getFormatter("wire-time");59 60 expect(6);61 62 var d = Date.today().add({hours:8,minutes:50,seconds:20});63 64 // check if the formatted exists65 ok(f != null, "There should be a wire-date");66 67 //test formatting68 assertFail(f, "format", "This is not a date");69 assertConvert(f, "format", d, "08:50:20Z");70 71 //test parsing72 // TODO have a look at datejs to see why the iso8601 time format isn't being parsed in all it's glory73 //assertConvert(f, "parse", "08:50:20Z", d);74 assertConvert(f, "parse", "8:50:20am", d);75 assertConvert(f, "parse", "8:50:20", d);76 assertFail(f, "parse", "8:65:20");77 });78 56 */ 57 test("time formatter test", function() { 58 var f = getFormatter("time"); 59 60 expect(7); 61 62 var d = new Date(0, 0, 0, 14, 3, 33, 0) 63 64 // check if the formatted exists 65 ok(f != null, "There should be a time formatter"); 66 67 //test formatting 68 assertFail(f, "format", "This is not a date"); 69 assertConvert(f, "format", d, "14:03:33"); 70 71 //test parsing 72 var parsedTime = f.parse("14:3:33"); 73 ok (d.getHours() == parsedTime.getHours() && d.getMinutes() == parsedTime.getMinutes() && d.getSeconds() == parsedTime.getSeconds(), "The parsed date doesn't match the test date"); 74 parsedTime = f.parse("14:3"); 75 ok (d.getHours() == parsedTime.getHours() && d.getMinutes() == parsedTime.getMinutes() && 0 == parsedTime.getSeconds(), "The parsed date doesn't match the test date"); 76 parsedTime = f.parse("14"); 77 ok (d.getHours() == parsedTime.getHours() && 0 == parsedTime.getMinutes() && 0 == parsedTime.getSeconds(), "The parsed date doesn't match the test date"); 78 assertFail(f, "parse", "abb"); 79 }); 80 79 81 test ("pattern-date formatter test", function() { 80 82 var f = getFormatter("pattern-date", {pattern : "dd | mm | yy"}); -
trunk/samples/kauri-forms-sample/src/main/kauri/router.groovy
r702 r705 35 35 def rand = new Random(); 36 36 def dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 37 def dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss"); 37 38 def contactTypes = [ 38 39 [ 'caseName' : "phone", 'value' : "'222-2222'" ], … … 59 60 ", friendscount: "+ (11 - i) + 60 61 ", pi: " + String.valueOf(Math.PI).substring(0, i+2) + 61 ", birthdate: '" + date Format.format(bday.getTime()) + "'" +62 ", birthdate: '" + dateTimeFormat.format(bday.getTime()) + "'" + 62 63 ", holiday: ['" + dateFormat.format(holidayStart.getTime()) + "', '" + dateFormat.format(holidayEnd.getTime()) + "']" + 63 64 ", description : '" + description + "'" + -
trunk/samples/kauri-forms-sample/src/main/kauri/templates/data/sample-form-config.xml
r702 r705 35 35 }, 36 36 'birthdate' : { 37 type: ['date ', {38 control : ['date-control', {label : 'When is your next birthday?'}]37 type: ['datetime', { 38 control : ['datetime-control', {label : 'When is your next birthday?'}] 39 39 }] 40 40 }, 41 41 'holiday' : { 42 42 type: ['date-range', { 43 control : ['date-control', {label : 'When and how long is your next holiday?', isRange : true}]43 control : ['date-control', {label : 'When and how long is your next holiday?', isRange : true}] 44 44 }] 45 45 },
Note: See TracChangeset
for help on using the changeset viewer.