zhuguifei
2026-03-10 58402bd5e762361363a0f7d7907153c77dbb819f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
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');