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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
if(!dojo._hasResource["dojox.grid._data.fields"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo._hasResource["dojox.grid._data.fields"] = true;
dojo.provide("dojox.grid._data.fields");
dojo.declare("dojox.grid.data.Mixer", null, {
// summary:
// basic collection class that provides a default value for items
constructor: function(){
this.defaultValue = {};
this.values = [];
},
count: function(){
return this.values.length;
},
clear: function(){
this.values = [];
},
build: function(inIndex){
var result = dojo.mixin({owner: this}, this.defaultValue);
result.key = inIndex;
this.values[inIndex] = result;
return result;
},
getDefault: function(){
return this.defaultValue;
},
setDefault: function(inField /*[, inField2, ... inFieldN] */){
for(var i=0, a; (a = arguments[i]); i++){
dojo.mixin(this.defaultValue, a);
}
},
get: function(inIndex){
return this.values[inIndex] || this.build(inIndex);
},
_set: function(inIndex, inField /*[, inField2, ... inFieldN] */){
// each field argument can be a single field object of an array of field objects
var v = this.get(inIndex);
for(var i=1; i<arguments.length; i++){
dojo.mixin(v, arguments[i]);
}
this.values[inIndex] = v;
},
set: function(/* inIndex, inField [, inField2, ... inFieldN] | inArray */){
if(arguments.length < 1){
return;
}
var a = arguments[0];
if(!dojo.isArray(a)){
this._set.apply(this, arguments);
}else{
if(a.length && a[0]["default"]){
this.setDefault(a.shift());
}
for(var i=0, l=a.length; i<l; i++){
this._set(i, a[i]);
}
}
},
insert: function(inIndex, inProps){
if (inIndex >= this.values.length){
this.values[inIndex] = inProps;
}else{
this.values.splice(inIndex, 0, inProps);
}
},
remove: function(inIndex){
this.values.splice(inIndex, 1);
},
swap: function(inIndexA, inIndexB){
dojox.grid.arraySwap(this.values, inIndexA, inIndexB);
},
move: function(inFromIndex, inToIndex){
dojox.grid.arrayMove(this.values, inFromIndex, inToIndex);
}
});
dojox.grid.data.compare = function(a, b){
return (a > b ? 1 : (a == b ? 0 : -1));
}
dojo.declare('dojox.grid.data.Field', null, {
constructor: function(inName){
this.name = inName;
this.compare = dojox.grid.data.compare;
},
na: dojox.grid.na
});
dojo.declare('dojox.grid.data.Fields', dojox.grid.data.Mixer, {
constructor: function(inFieldClass){
var fieldClass = inFieldClass ? inFieldClass : dojox.grid.data.Field;
this.defaultValue = new fieldClass();
},
indexOf: function(inKey){
for(var i=0; i<this.values.length; i++){
var v = this.values[i];
if(v && v.key == inKey){return i;}
}
return -1;
}
});
}
|