diff options
Diffstat (limited to 'includes/js/dojox/widget/Iterator.js')
-rw-r--r-- | includes/js/dojox/widget/Iterator.js | 177 |
1 files changed, 0 insertions, 177 deletions
diff --git a/includes/js/dojox/widget/Iterator.js b/includes/js/dojox/widget/Iterator.js deleted file mode 100644 index c2f510d..0000000 --- a/includes/js/dojox/widget/Iterator.js +++ /dev/null @@ -1,177 +0,0 @@ -if(!dojo._hasResource["dojox.widget.Iterator"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. -dojo._hasResource["dojox.widget.Iterator"] = true; -dojo.provide("dojox.widget.Iterator"); -dojo.require("dijit.Declaration"); - -dojo.experimental("dojox.widget.Iterator"); // level: prototype, designed for dijit.chat.demo - -/* - example: - from markup: - | <span dojoType="dojo.data.ItemFileReadStore" - | jsId="cstore" url="countries.json"></span> - | - | <div> - | <div dojoType="dojox.widget.Iterator" store="cstore" - | query="{ name: 'A*'}"> - | ${name} is a ${type} - | </div> - | </div> - - example: - programmatic: - | var store = new dojo.data.ItemFileReadStore({ url: "countries.json" }); - | - | var iter = new dojox.widget.Iterator({ - | store: store, - | template: "" - | }); - | - - example: - programmatic from an array of objects: - | var dataArr = [ - | { name: "foo", valueAttr: "bar" }, - | { name: "thinger", valueAttr: "blah" } - | ]; - | - | var iter = new dojox.widget.Iterator({ - | data: dataArr, - | template: "" - | }); - - example: - programmatic from an array of strings: - | var dataArr = [ - | { name: "foo", valueAttr: "bar" }, - | { name: "thinger", valueAttr: "blah" } - | ]; - | - | var iter = new dojox.widget.Iterator({ - | data: dataArr, - | template: "" - | }); - -*/ - - -dojo.declare("dojox.widget.Iterator", - [ dijit.Declaration ], - { - - constructor: (function(){ - var ctr = 0; - return function(){ - this.attrs = []; - this.children = []; - this.widgetClass = "dojox.widget.Iterator._classes._"+(ctr++); - } - })(), - - start: 0, - fetchMax: 1000, - query: { name: "*" }, - attrs: [], - defaultValue: "", - widgetCtor: null, - dataValues: [], // an array of strings - data: null, // should be a reference to an Array - store: null, - _srcIndex: 0, - _srcParent: null, - - _setSrcIndex: function(s){ - this._srcIndex = 0; - this._srcParent = s.parentNode; - var ts = s; - while(ts.previousSibling){ - this._srcIndex++; - ts = ts.previousSibling; - }; - }, - - postscript: function(p, s){ - // figure out the position of the source node in it's parent - this._setSrcIndex(s); - // this._srcIndex = dojo.query(">", this._srcParent).indexOf(s); - - this.inherited("postscript", arguments); - var wc = this.widgetCtor = dojo.getObject(this.widgetClass); - - this.attrs = dojo.map( - wc.prototype.templateString.match(/\$\{([^\s\:\}]+)(?:\:([^\s\:\}]+))?\}/g), - function(s){ return s.slice(2, -1); } - ); - dojo.forEach( - this.attrs, - function(m){ wc.prototype[m] = ""; } - ); - this.update(); - }, - - clear: function(){ - if(this.children.length){ - this._setSrcIndex(this.children[0].domNode); - } - dojo.forEach(this.children, "item.destroy();"); - this.children = []; - }, - - update: function(){ - if(this.store){ - // we're executing a query - this.fetch(); - }else{ - // we came from an array of objects. Easier! - this.onDataAvailable(this.data||this.dataValues); - } - }, - - _addItem: function(/*Object*/config, idx){ - if(dojo.isString(config)){ - config = { value: config }; - } - var widget = new this.widgetCtor(config); - this.children.push(widget); - dojo.place(widget.domNode, this._srcParent, this._srcIndex+idx); - }, - - getAttrValuesObj: function(item){ - var obj = {}; - if(dojo.isString(item)){ - dojo.forEach(this.attrs, function(attr){ - obj[attr] = (attr == "value") ? item : this.defaultValue; - }, this); - }else{ - dojo.forEach(this.attrs, function(attr){ - if(this.store){ - obj[attr] = this.store.getValue(item, attr)||this.defaultValue; - }else{ - obj[attr] = item[attr]||this.defaultValue; - } - }, this); - } - return obj; - }, - - onDataAvailable: function(data){ - this.clear(); - // console.debug(data); - dojo.forEach(data, function(item, idx){ - this._addItem(this.getAttrValuesObj(item), idx); - }, this); - }, - - fetch: function(query, start, end){ - this.store.fetch({ - query: query||this.query, - start: start||this.start, - count: end||this.fetchMax, - onComplete: dojo.hitch(this,"onDataAvailable") - }); - } -}); - -dojox.widget.Iterator._classes = {}; - -} |