Edo.controls.DurationSpinner = function(config){
|
|
Edo.controls.DurationSpinner.superclass.constructor.call(this);
|
|
};
|
Edo.controls.DurationSpinner.extend(Edo.controls.Spinner,{
|
value : {
|
Duration: 0,
|
DurationFormat: 37,
|
Estimated: 1
|
},
|
minValue: 0,
|
|
incrementValue : 1,
|
alternateIncrementValue : 8,
|
|
durationFormat: null, //必须有一个工期format数组
|
|
mustDay: false,
|
//durationFormat:
|
// incrementConstant : Date.DAY,
|
// alternateIncrementConstant : Date.MONTH,
|
|
spin: function(value, direction, alternate){
|
if(!value) value = '0';
|
|
var v = parseFloat(value);
|
|
var Estimated = value.indexOf('?') != -1;
|
|
var dv = value.replace(v, '');
|
if(!dv) dv = 'd';
|
else if(dv == '?') dv = 'd?';
|
|
if(this.mustDay){
|
|
if(dv != 'd' || dv != 'd?') dv = 'd';
|
}
|
|
var DurationFormat = this.durationFormat[dv];
|
|
if(!DurationFormat){
|
this._setValue(this.value);
|
return;
|
}
|
|
var incr = (alternate == true) ? this.alternateIncrementValue : this.incrementValue;
|
if(Edo.isValue(direction)){
|
(direction == 'down') ? v -= incr : v += incr ;
|
}
|
|
var f = this.durationFormat[DurationFormat];
|
v *= f[0];
|
|
v = {
|
Duration: v,
|
DurationFormat: DurationFormat,
|
Estimated: Estimated
|
}
|
|
this._setValue(v);
|
},
|
_setText: function(v){
|
|
if(!this.durationFormat) return;
|
|
var f = this.durationFormat[v.DurationFormat];
|
if(!f) {
|
v = '0d';
|
}else{
|
v = (v.Duration / f[0]) + f[2] + (v.Estimated ? '?' : '')
|
}
|
Edo.controls.DurationSpinner.superclass._setText.c(this, v);
|
}
|
,
|
//确保值的有效性
|
normalizeValue : function(v){
|
|
v.Duration = Edo.controls.DurationSpinner.superclass.normalizeValue.call(this, v.Duration);
|
|
return v;
|
}
|
});
|
|
Edo.controls.DurationSpinner.regType('durationspinner');
|