1 | define([
|
---|
2 | "../../../lib/object",
|
---|
3 | "./HeaderConfigWidget",
|
---|
4 | "./HeaderWidget",
|
---|
5 | "./MultipleChoiceInputConfigWidget",
|
---|
6 | "./MultipleChoiceInputWidget",
|
---|
7 | "./NumberInputConfigWidget",
|
---|
8 | "./NumberInputWidget",
|
---|
9 | "./ScaleInputConfigWidget",
|
---|
10 | "./ScaleInputWidget",
|
---|
11 | "./StringInputConfigWidget",
|
---|
12 | "./StringInputWidget",
|
---|
13 | "./TextConfigWidget",
|
---|
14 | "./TextInputConfigWidget",
|
---|
15 | "./TextInputWidget",
|
---|
16 | "./TextWidget",
|
---|
17 | "dijit/_WidgetBase",
|
---|
18 | "dojo/_base/declare"
|
---|
19 | ], function(objectFuns, HeaderConfigWidget, HeaderWidget, MultipleChoiceInputConfigWidget, MultipleChoiceInputWidget, NumberInputConfigWidget, NumberInputWidget, ScaleInputConfigWidget, ScaleInputWidget, StringInputConfigWidget, StringInputWidget, TextConfigWidget, TextInputConfigWidget, TextInputWidget, TextWidget, _WidgetBase, declare) {
|
---|
20 |
|
---|
21 | var DividerWidget = declare([_WidgetBase], {
|
---|
22 | postCreate: function() {
|
---|
23 | this.domNode.innerHTML = "<hr>";
|
---|
24 | }
|
---|
25 | });
|
---|
26 |
|
---|
27 | var viewMap = {
|
---|
28 | Header: HeaderWidget,
|
---|
29 | Text: TextWidget,
|
---|
30 | Divider: DividerWidget,
|
---|
31 | StringInput: StringInputWidget,
|
---|
32 | TextInput: TextInputWidget,
|
---|
33 | NumberInput: NumberInputWidget,
|
---|
34 | MultipleChoiceInput: declare([MultipleChoiceInputWidget],
|
---|
35 | {allowMultiple:true}),
|
---|
36 | SingleChoiceInput: declare([MultipleChoiceInputWidget],
|
---|
37 | {allowMultiple:false}),
|
---|
38 | ScaleInput: ScaleInputWidget
|
---|
39 | };
|
---|
40 | var editMap = {
|
---|
41 | Header: HeaderConfigWidget,
|
---|
42 | Text: TextConfigWidget,
|
---|
43 | StringInput: StringInputConfigWidget,
|
---|
44 | TextInput: TextInputConfigWidget,
|
---|
45 | NumberInput: NumberInputConfigWidget,
|
---|
46 | MultipleChoiceInput: declare([MultipleChoiceInputConfigWidget],
|
---|
47 | {allowMultiple:true}),
|
---|
48 | SingleChoiceInput: declare([MultipleChoiceInputConfigWidget],
|
---|
49 | {allowMultiple:false}),
|
---|
50 | ScaleInput: ScaleInputConfigWidget
|
---|
51 | };
|
---|
52 |
|
---|
53 | editMap = objectFuns.map(editMap,function(Ctor,type){
|
---|
54 | return declare([Ctor],{
|
---|
55 | _getValueAttr: function() {
|
---|
56 | var value = this.inherited(arguments);
|
---|
57 | value.type = type;
|
---|
58 | return value;
|
---|
59 | }
|
---|
60 | });
|
---|
61 | });
|
---|
62 |
|
---|
63 | var factory = declare(null, {
|
---|
64 | createViewWidget: function(/*Object*/options) {
|
---|
65 | // options: Object
|
---|
66 | // type: "Header", "Text", "TextInput", etc.
|
---|
67 | // other type specific fields
|
---|
68 | var Ctor = viewMap[options.type];
|
---|
69 | var view = Ctor && new Ctor(options) || null;
|
---|
70 | return view;
|
---|
71 | },
|
---|
72 | createEditWidget: function(/*Object*/options) {
|
---|
73 | var Ctor = editMap[options.type];
|
---|
74 | var edit = Ctor && new Ctor({
|
---|
75 | value: options
|
---|
76 | });
|
---|
77 | return edit || null;
|
---|
78 | }
|
---|
79 | });
|
---|
80 |
|
---|
81 | return factory;
|
---|
82 | });
|
---|