]> git.pond.sub.org Git - eow/blobdiff - static/dojo-release-1.1.1/dojox/wire/TableAdapter.js
add Dojo 1.1.1
[eow] / static / dojo-release-1.1.1 / dojox / wire / TableAdapter.js
diff --git a/static/dojo-release-1.1.1/dojox/wire/TableAdapter.js b/static/dojo-release-1.1.1/dojox/wire/TableAdapter.js
new file mode 100644 (file)
index 0000000..16a5280
--- /dev/null
@@ -0,0 +1,88 @@
+if(!dojo._hasResource["dojox.wire.TableAdapter"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojox.wire.TableAdapter"] = true;
+dojo.provide("dojox.wire.TableAdapter");
+
+dojo.require("dojox.wire.CompositeWire");
+
+dojo.declare("dojox.wire.TableAdapter", dojox.wire.CompositeWire, {
+       //      summary:
+       //              A composite Wire for table rows
+       //      description:
+       //              This class has multiple child Wires for object properties or array
+       //              elements of a table row.
+       //              The root object for this class must be an array.
+       //              When an object with Wires is specified to 'columns' property, they
+       //              are used to get a row object with property values.
+       //              When an array of Wires is specified to 'columns' property, they
+       //              are used to get a row array with element values.
+       //              The row values are returned in an array.
+       //              This class only supports getValue(), but not setValue().
+       
+       _wireClass: "dojox.wire.TableAdapter",
+       
+       constructor: function(/*Object*/args){
+               //      summary:
+               //              Initialize properties
+               //      description:
+               //              If object properties or array elements specified in 'columns'
+               //              property are not Wires, Wires are created from them as
+               //              arguments, with 'parent' property set to this Wire instance.
+               //      args:
+               //              Arguments to initialize properties
+               //              columns:
+               //                      An object or array containing child Wires for column values
+               this._initializeChildren(this.columns);
+       },
+
+       _getValue: function(/*Array*/object){
+               //      summary:
+               //              Return an array of table row value (object or array)
+               //      description:
+               //              This method iterates over an array specified to 'object'
+               //              argument and calls getValue() method of the child Wires with
+               //              each element of the array to get a row object or array.
+               //              Finally, an array with the row objects or arrays are retuned.
+               //      object:
+               //              A root array
+               //      returns:
+               //              An array of table row value
+               if(!object || !this.columns){
+                       return object; //Array
+               }
+
+               var array = object;
+               if(!dojo.isArray(array)){
+                       array = [array];
+               }
+
+               var rows = [];
+               for(var i in array){
+                       var row = this._getRow(array[i]);
+                       rows.push(row);
+               }
+               return rows; //Array
+       },
+
+       _setValue: function(/*Array*/object, /*Array*/value){
+               //      summary:
+               //              Not supported
+               throw new Error("Unsupported API: " + this._wireClass + "._setValue");
+       },
+
+       _getRow: function(/*Object||Array*/object){
+               //      summary:
+               //              Return an array or object for a table row
+               //      description:
+               //              This method calls getValue() method of the child Wires to
+               //              create a row object or array.
+               //      returns:
+               //              An array or object for a table row
+               var row = (dojo.isArray(this.columns) ? [] : {}); // array or object
+               for(var c in this.columns){
+                       row[c] = this.columns[c].getValue(object);
+               }
+               return row; //Array||Object
+       }
+});
+
+}