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= 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