source: Dev/trunk/client/qed/model/widgets/ScaleInputWidget.js @ 435

Last change on this file since 435 was 435, checked in by hendrikvanantwerpen, 12 years ago

Rename as Input and add 'type' to output.

File size: 2.9 KB
Line 
1define([
2    "dijit/_Container",
3    "dijit/_TemplatedMixin",
4    "dijit/_WidgetBase",
5    "dijit/form/RadioButton",
6    "dijit/form/_FormMixin",
7    "dojo/_base/array",
8    "dojo/_base/declare",
9    "dojo/_base/lang",
10    "dojo/dom-attr",
11    "dojo/dom-construct",
12    "dojo/text!./templates/ScaleInputWidget.html"
13], function(_Container, _TemplatedMixin, _WidgetBase, RadioButton, _FormMixin, array, declare, lang, domAttr, domConstruct, template) {
14    return declare([_WidgetBase,_TemplatedMixin,_Container,_FormMixin],{
15        templateString: template,
16        baseClass: "qedScaleWidget",
17        min: 0,
18        max: 0,
19        minLabel: "",
20        maxLabel: "",
21        naLabel: null,
22        items: null,
23        value: null,
24        constuctor: function() {
25            this.items = [];
26            this.value = {};
27        },
28        startup: function() {
29            if ( this._started ) { return; }
30            this.inherited(arguments);
31            this._renderHead();
32            this._renderItems();
33        },
34        _renderHead: function() {
35            this.minNode.innerHTML = this.minLabel || "";
36            this.maxNode.innerHTML = this.maxLabel || "";
37            if ( this.naLabel !== null ) {
38                this.naNode.innerHTML = this.naLabel;
39            }
40            for (var i = this.min; i <= this.max; i++) {
41                domConstruct.create("th", {
42                    innerHTML: i.toString()
43                }, this.minNode, "after");
44            }
45        },
46        _renderItems: function() {
47            array.forEach(this.items, function(item,index) {
48                var tr = domConstruct.create("tr", {}, this.itemsNode);
49                var td;
50                var radio;
51                domConstruct.create("th", {
52                    innerHTML: item.text || "",
53                    'class': "item"
54                }, tr);
55                domConstruct.create("th", {
56                    innerHTML: item.minLabel || "",
57                    'class': 'min'
58                }, tr);
59                for (var i = this.min; i <= this.max; i++) {
60                    td = domConstruct.create("td", {}, tr);
61                    radio = new RadioButton({
62                        name: index.toString(),
63                        value: i.toString()
64                    });
65                    domConstruct.place(radio.domNode, td);
66                }
67                domConstruct.create("th", {
68                    innerHTML: item.maxLabel || "",
69                    className: 'max'
70                }, tr);
71                if ( this.naLabel !== null ) {
72                    td = domConstruct.create("td", {}, tr);
73                    radio = new RadioButton({
74                        name: index.toString(),
75                        value: "n/a"
76                    });
77                    domConstruct.place(radio.domNode, td);
78                }
79            }, this);
80        }
81    });
82});
Note: See TracBrowser for help on using the repository browser.