TimeSpinner.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. define("dojox/form/TimeSpinner", [
  2. "dojo/_base/lang",
  3. "dojo/_base/event",
  4. "dijit/form/_Spinner",
  5. "dojo/keys",
  6. "dojo/date",
  7. "dojo/date/locale",
  8. "dojo/date/stamp",
  9. "dojo/_base/declare"
  10. ], function(lang, event, Spinner, keys, dateUtil, dateLocale, dateStamp, declare){
  11. /*=====
  12. Spinner = dijit.form._Spinner;
  13. =====*/
  14. return declare( "dojox.form.TimeSpinner", Spinner,
  15. {
  16. // summary: Time Spinner
  17. // description: This widget is the same as a normal NumberSpinner, but for the time component of a date object instead
  18. required: false,
  19. adjust: function(/* Object */ val, /*Number*/ delta){
  20. return dateUtil.add(val, "minute", delta)
  21. },
  22. //FIXME should we allow for constraints in this widget?
  23. isValid: function(){return true;},
  24. smallDelta: 5,
  25. largeDelta: 30,
  26. timeoutChangeRate: 0.50,
  27. parse: function(time, locale){
  28. return dateLocale.parse(time, {selector:"time", formatLength:"short"});
  29. },
  30. format: function(time, locale){
  31. if(lang.isString(time)){ return time; }
  32. return dateLocale.format(time, {selector:"time", formatLength:"short"});
  33. },
  34. serialize: dateStamp.toISOString,
  35. value: "12:00 AM",
  36. _onKeyPress: function(e){
  37. if((e.charOrCode == keys.HOME || e.charOrCode == keys.END) && !(e.ctrlKey || e.altKey || e.metaKey)
  38. && typeof this.get('value') != 'undefined' /* gibberish, so HOME and END are default editing keys*/){
  39. var value = this.constraints[(e.charOrCode == keys.HOME ? "min" : "max")];
  40. if(value){
  41. this._setValueAttr(value,true);
  42. }
  43. // eat home or end key whether we change the value or not
  44. event.stop(e);
  45. }
  46. }
  47. });
  48. });