123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- 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
- }
- });
- }
|