New file |
0,0 → 1,143 |
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: "", |
|
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 |
} |
}); |
|
} |