]> git.pond.sub.org Git - eow/blobdiff - static/dojo-release-1.1.1/dojox/grid/_data/fields.js
add Dojo 1.1.1
[eow] / static / dojo-release-1.1.1 / dojox / grid / _data / fields.js
diff --git a/static/dojo-release-1.1.1/dojox/grid/_data/fields.js b/static/dojo-release-1.1.1/dojox/grid/_data/fields.js
new file mode 100644 (file)
index 0000000..230bede
--- /dev/null
@@ -0,0 +1,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;
+       }
+});
+
+}