1 if(!dojo._hasResource["dojox.grid._data.fields"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
2 dojo._hasResource["dojox.grid._data.fields"] = true;
3 dojo.provide("dojox.grid._data.fields");
5 dojo.declare("dojox.grid.data.Mixer", null, {
7 // basic collection class that provides a default value for items
9 constructor: function(){
10 this.defaultValue = {};
14 return this.values.length;
19 build: function(inIndex){
20 var result = dojo.mixin({owner: this}, this.defaultValue);
22 this.values[inIndex] = result;
25 getDefault: function(){
26 return this.defaultValue;
28 setDefault: function(inField /*[, inField2, ... inFieldN] */){
29 for(var i=0, a; (a = arguments[i]); i++){
30 dojo.mixin(this.defaultValue, a);
33 get: function(inIndex){
34 return this.values[inIndex] || this.build(inIndex);
36 _set: function(inIndex, inField /*[, inField2, ... inFieldN] */){
37 // each field argument can be a single field object of an array of field objects
38 var v = this.get(inIndex);
39 for(var i=1; i<arguments.length; i++){
40 dojo.mixin(v, arguments[i]);
42 this.values[inIndex] = v;
44 set: function(/* inIndex, inField [, inField2, ... inFieldN] | inArray */){
45 if(arguments.length < 1){
50 this._set.apply(this, arguments);
52 if(a.length && a[0]["default"]){
53 this.setDefault(a.shift());
55 for(var i=0, l=a.length; i<l; i++){
60 insert: function(inIndex, inProps){
61 if (inIndex >= this.values.length){
62 this.values[inIndex] = inProps;
64 this.values.splice(inIndex, 0, inProps);
67 remove: function(inIndex){
68 this.values.splice(inIndex, 1);
70 swap: function(inIndexA, inIndexB){
71 dojox.grid.arraySwap(this.values, inIndexA, inIndexB);
73 move: function(inFromIndex, inToIndex){
74 dojox.grid.arrayMove(this.values, inFromIndex, inToIndex);
78 dojox.grid.data.compare = function(a, b){
79 return (a > b ? 1 : (a == b ? 0 : -1));
82 dojo.declare('dojox.grid.data.Field', null, {
83 constructor: function(inName){
85 this.compare = dojox.grid.data.compare;
90 dojo.declare('dojox.grid.data.Fields', dojox.grid.data.Mixer, {
91 constructor: function(inFieldClass){
92 var fieldClass = inFieldClass ? inFieldClass : dojox.grid.data.Field;
93 this.defaultValue = new fieldClass();
95 indexOf: function(inKey){
96 for(var i=0; i<this.values.length; i++){
97 var v = this.values[i];
98 if(v && v.key == inKey){return i;}