1 /** 2 * @author Dennis Verhoeven <dennis@vivesta.com> 3 * @package Banana.Controls 4 * @summary Date span control 5 */ 6 7 goog.provide('Banana.Controls.DataControls.DateSpan'); 8 9 goog.require('Banana.Controls.DataControls.DataControl'); 10 11 /** @namespace Banana.Controls.DateSpan */ 12 namespace('Banana.Controls').DateSpan = Banana.Controls.DataControl.extend( 13 /** @lends Banana.Controls.DateSpan.prototype */ 14 { 15 /** 16 * Creates a datespan control. 17 * @constructs 18 */ 19 init : function() 20 { 21 this._super(); 22 23 this.addCssClass('BDateSpan'); 24 25 this.amount = new Banana.Controls.DropDown() 26 .setDataSource({ 27 '1' : '1', 28 '2' : '2', 29 '3' : '3', 30 '4' : '4', 31 '5' : '5', 32 '6' : '6', 33 '7' : '7', 34 '8' : '8', 35 '9' : '9', 36 '10' : '10' 37 }) 38 .setStyle('width:45px;margin-right:4px;') 39 .bind('dataChanged',this.getProxy(function(e) 40 { 41 var suffix = (this.amount.getData()>1 ? 's' : ''); 42 var source = { 43 'days' : 'day'+suffix, 44 'weeks' : 'week'+suffix, 45 'months' : 'month'+suffix 46 }; 47 this.unit.setDataSource(source); 48 })); 49 50 this.addControl(this.amount); 51 52 this.unit = new Banana.Controls.DropDown() 53 .setStyle('width:80px;'); 54 this.addControl(this.unit); 55 this.setData('1 day'); 56 }, 57 58 /** 59 * @override 60 */ 61 setData : function(data,ignoreEvent,ignoreDom) 62 { 63 if (!data) return; 64 65 var parts=data.split(' '); 66 this.amount.setData(parts[0]); 67 this.unit.setData(parts[1]); 68 69 return this; 70 }, 71 72 /** 73 * @return {String} 74 */ 75 getData : function() 76 { 77 return this.amount.getData()+' '+this.unit.getData(); 78 } 79 });