Blame | Last modification | View Log | RSS feed
if(!dojo._hasResource["dojox.dtl.tag.loop"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.dojo._hasResource["dojox.dtl.tag.loop"] = true;dojo.provide("dojox.dtl.tag.loop");dojo.require("dojox.dtl._base");dojox.dtl.tag.loop.CycleNode = function(cyclevars, name, VarNode){this._cyclevars = cyclevars;this._counter = -1this._name = name;this._map = {};this._VarNode = VarNode;}dojo.extend(dojox.dtl.tag.loop.CycleNode, {render: function(context, buffer){if(context.forloop && !context.forloop.counter0){this._counter = -1;}++this._counter;var value = this._cyclevars[this._counter % this._cyclevars.length];if(this._name){context[this._name] = value;}if(!this._map[value]){this._map[value] = {};}var node = this._map[value][this._counter] = new this._VarNode(value);return node.render(context, buffer, this);},unrender: function(context, buffer){return buffer;},clone: function(){return new this.constructor(this._cyclevars, this._name);},_onEnd: function(){this._counter = -1;},toString: function(){ return "dojox.dtl.tag.loop.CycleNode"; }});dojox.dtl.tag.loop.cycle = function(parser, text){// summary: Cycle among the given strings each time this tag is encounteredvar args = text.split(" ");if(args.length < 2){throw new Error("'cycle' tag requires at least two arguments");}if(args[1].indexOf(",") != -1){var vars = args[1].split(",");args = [args[0]];for(var i = 0; i < vars.length; i++){args.push('"' + vars[i] + '"');}}if(args.length == 2){var name = args[args.length - 1];if(!parser._namedCycleNodes){throw new Error("No named cycles in template: '" + name + "' is not defined");}if(!parser._namedCycleNodes[name]){throw new Error("Named cycle '" + name + "' does not exist");}return parser._namedCycleNodes[name];}if(args.length > 4 && args[args.length - 2] == "as"){var name = args[args.length - 1];var node = new dojox.dtl.tag.loop.CycleNode(args.slice(1, args.length - 2), name, parser.getVarNode());if(!parser._namedCycleNodes){parser._namedCycleNodes = {};}parser._namedCycleNodes[name] = node;}else{node = new dojox.dtl.tag.loop.CycleNode(args.slice(1), null, parser.getVarNode());}return node;}}