123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- /*
- Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
- */
- if(!dojo._hasResource["dojox.wire.ml.Data"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
- dojo._hasResource["dojox.wire.ml.Data"] = true;
- dojo.provide("dojox.wire.ml.Data");
- dojo.provide("dojox.wire.ml.DataProperty");
- dojo.require("dijit._Widget");
- dojo.require("dijit._Container");
- dojo.require("dojox.wire.ml.util");
- dojo.declare("dojox.wire.ml.Data", [dijit._Widget, dijit._Container], {
- // summary:
- // A widget for a data object
- // description:
- // This widget represents an object with '_properties' property.
- // If child 'DataProperty' widgets exist, they are used to initialize
- // propertiy values of '_properties' object.
- startup: function(){
- // summary:
- // Call _initializeProperties()
- // description:
- // See _initializeProperties().
- this._initializeProperties();
- },
- _initializeProperties: function(/*Boolean*/reset){
- // summary:
- // Initialize a data object
- // description:
- // If this widget has child DataProperty widgets, their getValue()
- // methods are called and set the return value to a property
- // specified by 'name' attribute of the child widgets.
- // reset:
- // A boolean to reset current properties
- if(!this._properties || reset){
- this._properties = {};
- }
- var children = this.getChildren();
- for(var i in children){
- var child = children[i];
- if((child instanceof dojox.wire.ml.DataProperty) && child.name){
- this.setPropertyValue(child.name, child.getValue());
- }
- }
- },
- getPropertyValue: function(/*String*/property){
- // summary:
- // Return a property value
- // description:
- // This method returns the value of a property, specified with
- // 'property' argument, in '_properties' object.
- // property:
- // A property name
- // returns:
- // A property value
- return this._properties[property]; //anything
- },
- setPropertyValue: function(/*String*/property, /*anything*/value){
- // summary:
- // Store a property value
- // description:
- // This method stores 'value' as a property, specified with
- // 'property' argument, in '_properties' object.
- // property:
- // A property name
- // value:
- // A property value
- this._properties[property] = value;
- }
- });
- dojo.declare("dojox.wire.ml.DataProperty", [dijit._Widget, dijit._Container], {
- // summary:
- // A widget to define a data property
- // description:
- // Attributes of this widget are used to add a property to the parent
- // Data widget.
- // 'type' attribute specifies one of "string", "number", "boolean",
- // "array", "object" and "element" (DOM Element)
- // (default to "string").
- // If 'type' is "array" or "object", child DataProperty widgets are
- // used to initialize the array elements or the object properties.
- // name:
- // A property name
- // type:
- // A property type name
- // value:
- // A property value
- name: "",
- type: "",
- value: "",
- _getValueAttr: function(){
- return this.getValue();
- },
- getValue: function(){
- // summary:
- // Returns a property value
- // description:
- // If 'type' is specified, 'value' attribute is converted to
- // the specified type and returned.
- // Otherwise, 'value' attribute is returned as is.
- // returns:
- // A property value
- var value = this.value;
- if(this.type){
- if(this.type == "number"){
- value = parseInt(value);
- }else if(this.type == "boolean"){
- value = (value == "true");
- }else if(this.type == "array"){
- value = [];
- var children = this.getChildren();
- for(var i in children){
- var child = children[i];
- if(child instanceof dojox.wire.ml.DataProperty){
- value.push(child.getValue());
- }
- }
- }else if(this.type == "object"){
- value = {};
- var children = this.getChildren();
- for(var i in children){
- var child = children[i];
- if((child instanceof dojox.wire.ml.DataProperty) && child.name){
- value[child.name] = child.getValue();
- }
- }
- }else if(this.type == "element"){
- value = new dojox.wire.ml.XmlElement(value);
- var children = this.getChildren();
- for(var i in children){
- var child = children[i];
- if((child instanceof dojox.wire.ml.DataProperty) && child.name){
- value.setPropertyValue(child.name, child.getValue());
- }
- }
- }
- }
- return value; //anything
- }
- });
- }
|