define([ "dijit/_Container", "dijit/_TemplatedMixin", "dijit/_WidgetBase", "dijit/form/RadioButton", "dijit/form/_FormMixin", "dojo/_base/array", "dojo/_base/declare", "dojo/_base/lang", "dojo/dom-attr", "dojo/dom-construct", "dojo/text!./templates/ScaleWidget.html" ], function(_Container, _TemplatedMixin, _WidgetBase, RadioButton, _FormMixin, array, declare, lang, domAttr, domConstruct, template) { return declare([_WidgetBase,_TemplatedMixin,_Container,_FormMixin],{ templateString: template, baseClass: "qedScaleWidget", min: 0, max: 0, minLabel: "", maxLabel: "", naLabel: null, items: null, value: null, constuctor: function() { this.items = []; this.value = {}; }, startup: function() { if ( this._started ) { return; } this.inherited(arguments); this._renderHead(); this._renderItems(); }, _renderHead: function() { for (var i = this.min; i <= this.max; i++) { domConstruct.create("th", { innerHTML: i.toString() }, this.rangeNode, "after"); } if ( this.naLabel !== null ) { this.naNode.innerHTML = this.naLabel; } }, _renderItems: function() { array.forEach(this.items, function(item,index) { var tr = domConstruct.create("tr", {}, this.itemsNode); var td; var radio; domConstruct.create("th", { innerHTML: item.text || "", 'class': "item" }, tr); domConstruct.create("th", { innerHTML: item.minLabel || "", 'class': 'min' }, tr); for (var i = this.min; i <= this.max; i++) { td = domConstruct.create("td", {}, tr); radio = new RadioButton({ name: index.toString(), value: i.toString() }); domConstruct.place(radio.domNode, td); } domConstruct.create("th", { innerHTML: item.maxLabel || "", className: 'max' }, tr); if ( this.naLabel !== null ) { td = domConstruct.create("td", {}, tr); radio = new RadioButton({ name: index.toString(), value: "n/a" }); domConstruct.place(radio.domNode, td); } }, this); } }); });