summaryrefslogtreecommitdiff
path: root/includes/js/dojox/wire/ml/Data.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/js/dojox/wire/ml/Data.js')
-rw-r--r--includes/js/dojox/wire/ml/Data.js143
1 files changed, 143 insertions, 0 deletions
diff --git a/includes/js/dojox/wire/ml/Data.js b/includes/js/dojox/wire/ml/Data.js
new file mode 100644
index 0000000..71ab0ad
--- /dev/null
+++ b/includes/js/dojox/wire/ml/Data.js
@@ -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
+ }
+});
+
+}