if(!dojo._hasResource["dojox.wire.CompositeWire"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. dojo._hasResource["dojox.wire.CompositeWire"] = true; dojo.provide("dojox.wire.CompositeWire"); dojo.require("dojox.wire._base"); dojo.require("dojox.wire.Wire"); dojo.declare("dojox.wire.CompositeWire", dojox.wire.Wire, { // summary: // A Wire for composite values in object or array // description: // This class has multiple child Wires for object properties or array // elements. // When an object with Wires is specified to 'children' property, they // are used to get or set an object with property values. // When an array of Wiares is specified to 'children' property, they // are used to get or set an array with element values. _wireClass: "dojox.wire.CompositeWire", constructor: function(/*Object*/args){ // summary: // Initialize properties // description: // If object properties or array elements specified in 'children' // property are not Wires, Wires are created from them as // arguments, with 'parent' property set to this Wire instance. // args: // Arguments to initialize properties // children: // An object or array containing child Wires this._initializeChildren(this.children); }, _getValue: function(/*Object||Array*/object){ // summary: // Return an object with property values or an array with element // values // description: // This method calls getValue() method of the child Wires with // 'object' argument and returns an object with the values as // properties or an arary of the values as elements. // object: // A root object // returns: // An object or array with values if(!object || !this.children){ return object; //Object||Array } var value = (dojo.isArray(this.children) ? [] : {}); // array or object for(var c in this.children){ value[c] = this.children[c].getValue(object); } return value;//Object||Array }, _setValue: function(/*Object||Array*/object, /*Object||Array*/value){ // summary: // Set an object properties or an array elements to an object // desription: // This method calls setValues() method of the child Wires with // a corresponding property or element in 'value' argument and // 'object' argument. // object: // A root object // value: // An object or array with values to set // returns: // 'object' if(!object || !this.children){ return object; //Object||Array } for(var c in this.children){ this.children[c].setValue(value[c], object); } return object; //Object||Array }, _initializeChildren: function(/*Object||Array*/children){ // summary: // Initialize child Wires // description: // If object properties or array elements specified in 'children' // argument are not Wires, Wires are created from them as // arguments, with 'parent' property set to this Wire instance. // children: // An object or array containing child Wires if(!children){ return; //undefined } for(var c in children){ var child = children[c]; child.parent = this; if(!dojox.wire.isWire(child)){ children[c] = dojox.wire.create(child); } } } }); }