Changeset 510 for Dev/trunk/src/client/qed-client/model/widgets/questions
- Timestamp:
- 03/12/14 15:16:54 (11 years ago)
- Location:
- Dev/trunk/src/client/qed-client/model/widgets/questions
- Files:
-
- 5 added
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
Dev/trunk/src/client/qed-client/model/widgets/questions/Factory.js
r443 r510 1 1 define([ 2 "../../../lib/object", 2 3 "./HeaderConfigWidget", 3 4 "./HeaderWidget", … … 8 9 "./ScaleInputConfigWidget", 9 10 "./ScaleInputWidget", 11 "./SingleChoiceInputConfigWidget", 12 "./SingleChoiceInputWidget", 10 13 "./StringInputConfigWidget", 11 14 "./StringInputWidget", … … 16 19 "dijit/_WidgetBase", 17 20 "dojo/_base/declare" 18 ], function(HeaderConfigWidget, HeaderWidget, MultipleChoiceInputConfigWidget, MultipleChoiceInputWidget, NumberInputConfigWidget, NumberInputWidget, ScaleInputConfigWidget, ScaleInputWidget, StringInputConfigWidget, StringInputWidget, TextConfigWidget, TextInputConfigWidget, TextInputWidget, TextWidget, _WidgetBase, declare) { 21 ], function(objectFuns, HeaderConfigWidget, HeaderWidget, MultipleChoiceInputConfigWidget, MultipleChoiceInputWidget, NumberInputConfigWidget, NumberInputWidget, ScaleInputConfigWidget, ScaleInputWidget, SingleChoiceInputConfigWidget, SingleChoiceInputWidget, StringInputConfigWidget, StringInputWidget, TextConfigWidget, TextInputConfigWidget, TextInputWidget, TextWidget, _WidgetBase, declare) { 22 23 var DividerWidget = declare([_WidgetBase], { 24 postCreate: function() { 25 this.domNode.innerHTML = "<hr>"; 26 } 27 }); 28 29 var viewMap = { 30 Header: HeaderWidget, 31 Text: TextWidget, 32 Divider: DividerWidget, 33 StringInput: StringInputWidget, 34 TextInput: TextInputWidget, 35 NumberInput: NumberInputWidget, 36 MultipleChoiceInput: MultipleChoiceInputWidget, 37 SingleChoiceInput: SingleChoiceInputWidget, 38 ScaleInput: ScaleInputWidget 39 }; 40 var editMap = { 41 Header: HeaderConfigWidget, 42 Text: TextConfigWidget, 43 StringInput: StringInputConfigWidget, 44 TextInput: TextInputConfigWidget, 45 NumberInput: NumberInputConfigWidget, 46 MultipleChoiceInput: MultipleChoiceInputConfigWidget, 47 SingleChoiceInput: SingleChoiceInputConfigWidget, 48 ScaleInput: ScaleInputConfigWidget 49 }; 50 51 editMap = objectFuns.map(editMap,function(Ctor,type){ 52 return declare([Ctor],{ 53 _getValueAttr: function() { 54 var value = this.inherited(arguments); 55 value.type = type; 56 return value; 57 } 58 }); 59 }); 60 19 61 var factory = declare(null, { 20 62 createViewWidget: function(/*Object*/options) { … … 22 64 // type: "Header", "Text", "TextInput", etc. 23 65 // other type specific fields 24 var fun = this['create'+options.type+'ViewWidget'];25 var view = fun !== undefined ? fun(options) :null;66 var Ctor = viewMap[options.type]; 67 var view = Ctor && new Ctor(options) || null; 26 68 return view; 27 69 }, 28 70 createEditWidget: function(/*Object*/options) { 29 var fun = this['create'+options.type+'EditWidget']; 30 var view = fun !== undefined ? fun(options) : null; 31 return view; 32 }, 33 34 createHeaderViewWidget: function(config) { 35 return new HeaderWidget(config); 36 }, 37 createHeaderEditWidget: function(config) { 38 return new HeaderConfigWidget({ 39 value: config 71 var Ctor = editMap[options.type]; 72 var edit = Ctor && new Ctor({ 73 value: options 40 74 }); 41 }, 42 43 createTextViewWidget: function(config) { 44 return new TextWidget(config); 45 }, 46 createTextEditWidget: function(config) { 47 return new TextConfigWidget({ 48 value: config 49 }); 50 }, 51 52 createDividerViewWidget: function(options) { 53 return new DividerView({ 54 options: options 55 }); 56 }, 57 58 createStringInputViewWidget: function(config) { 59 return new StringInputWidget(config); 60 }, 61 createStringInputEditWidget: function(config) { 62 return new StringInputConfigWidget({ 63 value: config 64 }); 65 }, 66 67 createTextInputViewWidget: function(config) { 68 return new TextInputWidget(config); 69 }, 70 createTextInputEditWidget: function(config) { 71 return new TextInputConfigWidget({ 72 value: config 73 }); 74 }, 75 76 createNumberInputViewWidget: function(config) { 77 return new NumberInputWidget(config); 78 }, 79 createNumberInputEditWidget: function(config) { 80 return new NumberInputConfigWidget({ 81 value: config 82 }); 83 }, 84 85 createMultipleChoiceInputViewWidget: function(config) { 86 return new MultipleChoiceInputWidget(config); 87 }, 88 createMultipleChoiceInputEditWidget: function(config) { 89 return new MultipleChoiceInputConfigWidget({ 90 value: config 91 }); 92 }, 93 94 createScaleInputViewWidget: function(options) { 95 return new ScaleInputWidget(options); 96 }, 97 createScaleInputEditWidget: function(options) { 98 return new ScaleInputConfigWidget({ 99 value: options || {} 100 }); 101 } 102 }); 103 104 var DividerView = declare([_WidgetBase], { 105 postCreate: function() { 106 this.domNode.innerHTML = "<hr>"; 75 return edit || null; 107 76 } 108 77 }); -
Dev/trunk/src/client/qed-client/model/widgets/questions/MultipleChoiceInputConfigWidget.js
r506 r510 19 19 20 20 return declare([_ComplexValueWidget],{ 21 type: 'MultipleChoiceInput',22 21 baseClass: 'qedMultipleChoiceWidget', 23 22 templateString: template, … … 51 50 }); 52 51 }, 53 _getValueAttr: function() {54 var value = this.inherited(arguments);55 value.type = this.type;56 value.allowMultiple = value.allowMultiple.length > 0;57 return value;58 },59 _setValueAttr: function(value) {60 value.allowMultiple = value.allowMultiple ? ["on"] : [];61 return this.inherited(arguments);62 },63 52 onAddItem: function(evt) { 64 53 this.itemsWidget.appendItem({},true); -
Dev/trunk/src/client/qed-client/model/widgets/questions/MultipleChoiceInputWidget.js
r508 r510 5 5 "dijit/_WidgetsInTemplateMixin", 6 6 "dijit/form/CheckBox", 7 "dijit/form/RadioButton",8 7 "dojo/_base/array", 9 8 "dojo/_base/declare", 10 9 "dojo/dom-construct", 11 10 "dojo/text!./templates/MultipleChoiceInputWidget.html" 12 ], function(_Container, _TemplatedMixin, _WidgetBase, _WidgetsInTemplateMixin, CheckBox, RadioButton,array, declare, domConstruct, template) {11 ], function(_Container, _TemplatedMixin, _WidgetBase, _WidgetsInTemplateMixin, CheckBox, array, declare, domConstruct, template) { 13 12 return declare([_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin,_Container],{ 14 13 templateString: template, … … 18 17 19 18 domConstruct.empty(this.domNode); 20 var Ctor = this.allowMultiple === true ? CheckBox : RadioButton;21 19 array.forEach(this.items, function(item){ 22 20 var div = domConstruct.create("div", { 23 21 }, this.domNode, "last"); 24 var input = new C tor({25 name: this.code + (this.allowMultiple === true ? item.subcode : ''),26 value: this.allowMultiple === true ? null : item.subcode22 var input = new CheckBox({ 23 name: this.code + item.subcode, 24 value: 1 27 25 }).placeAt(div); 28 26 var label = domConstruct.create("label",{ -
Dev/trunk/src/client/qed-client/model/widgets/questions/NumberInputConfigWidget.js
r506 r510 5 5 ], function(_ComplexValueWidget, declare, template) { 6 6 return declare([_ComplexValueWidget],{ 7 type: 'NumberInput', 8 templateString: template, 9 _getValueAttr: function() { 10 var value = this.inherited(arguments); 11 value.type = this.type; 12 return value; 13 } 7 baseClass: 'qedNumberInputConfig', 8 templateString: template 14 9 }); 15 10 }); -
Dev/trunk/src/client/qed-client/model/widgets/questions/NumberInputWidget.js
r508 r510 10 10 templateString: template, 11 11 text: '', 12 subcode: '', 12 13 startup: function() { 13 14 if ( this._started ) { return; } -
Dev/trunk/src/client/qed-client/model/widgets/questions/ScaleInputConfigWidget.js
r490 r510 79 79 return false; 80 80 }, 81 _getValueAttr: function(){82 var value = this.inherited(arguments);83 value.type = 'ScaleInput';84 return value;85 },86 81 onNAChange: function(value) { 87 82 this._hasNA = value !== null && value !== ""; -
Dev/trunk/src/client/qed-client/model/widgets/questions/StringInputConfigWidget.js
r443 r510 5 5 ], function(_ComplexValueWidget, declare, template) { 6 6 return declare([_ComplexValueWidget],{ 7 type: 'StringInput', 8 templateString: template, 9 _getValueAttr: function() { 10 var value = this.inherited(arguments); 11 value.type = this.type; 12 return value; 13 } 7 baseClass: 'qedStringInputConfig', 8 templateString: template 14 9 }); 15 10 }); -
Dev/trunk/src/client/qed-client/model/widgets/questions/StringInputWidget.js
r508 r510 9 9 return declare([_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin,_Container],{ 10 10 templateString: template, 11 text: '' 11 text: '', 12 subcode: '' 12 13 }); 13 14 }); -
Dev/trunk/src/client/qed-client/model/widgets/questions/TextConfigWidget.js
r443 r510 5 5 ], function(_ComplexValueWidget, declare, template) { 6 6 return declare([_ComplexValueWidget],{ 7 type: 'Text', 8 templateString: template, 9 _getValueAttr: function() { 10 var value = this.inherited(arguments); 11 value.type = this.type; 12 return value; 13 } 7 templateString: template 14 8 }); 15 9 }); -
Dev/trunk/src/client/qed-client/model/widgets/questions/TextInputConfigWidget.js
r506 r510 5 5 ], function(_ComplexValueWidget, declare, template) { 6 6 return declare([_ComplexValueWidget],{ 7 type: 'TextInput', 8 templateString: template, 9 _getValueAttr: function() { 10 var value = this.inherited(arguments); 11 value.type = this.type; 12 return value; 13 } 7 baseClass: 'qedTextInputConfig', 8 templateString: template 14 9 }); 15 10 }); -
Dev/trunk/src/client/qed-client/model/widgets/questions/TextInputWidget.js
r508 r510 10 10 templateString: template, 11 11 text: '', 12 subcode: '', 12 13 startup: function() { 13 14 if ( this._started ) { return; } -
Dev/trunk/src/client/qed-client/model/widgets/questions/templates/MultipleChoiceInputConfigRowWidget.html
r506 r510 1 1 <form> 2 <div data-dojo-type="dijit/form/ValidationTextBox" 3 data-dojo-props="required: true, placeholder: 'Subcode'" 2 <div data-dojo-type="dijit/form/CheckBox" 3 data-dojo-props="disabled: true, readOnly: true"></div> 4 <div data-dojo-type="dijit/form/ValidationTextBox" 5 data-dojo-props="required: true, placeholder: 'Subcode'" 4 6 class="subcode" 5 7 name="subcode"></div> 6 8 <div data-dojo-type="dijit/form/ValidationTextBox" 7 9 data-dojo-props="required: true, placeholder: 'Item text'" -
Dev/trunk/src/client/qed-client/model/widgets/questions/templates/MultipleChoiceInputConfigWidget.html
r506 r510 1 1 <form class="${baseClass}"> 2 <div>3 <label class="qedLabel" for="allowMultiple">Allow multiple</label>4 <div name="allowMultiple" data-dojo-type="dijit/form/CheckBox"></div>5 </div>6 2 <div data-dojo-attach-point="itemsNode"> 7 3 </div> -
Dev/trunk/src/client/qed-client/model/widgets/questions/templates/NumberInputConfigWidget.html
r506 r510 1 <form >1 <form class="${baseClass}"> 2 2 <div> 3 3 <label class="qedLabel" for="text">Subcode</label> 4 <div class="qedField "4 <div class="qedField subcode" 5 5 data-dojo-attach-point="subcodeBox" 6 6 data-dojo-type="dijit/form/ValidationTextBox" -
Dev/trunk/src/client/qed-client/model/widgets/questions/templates/StringInputConfigWidget.html
r506 r510 1 <form >1 <form class="${baseClass}"> 2 2 <div> 3 <label class="qedLabel" for=" text">Subcode</label>4 <div class="qedField "3 <label class="qedLabel" for="subcode">Subcode</label> 4 <div class="qedField subcode" 5 5 data-dojo-attach-point="subcodeBox" 6 6 data-dojo-type="dijit/form/ValidationTextBox" -
Dev/trunk/src/client/qed-client/model/widgets/questions/templates/TextConfigWidget.html
r461 r510 1 1 <form> 2 2 <label for="text" class="qedLabel">Text</label> 3 <textarea class="qedField" data-dojo-type="dijit/form/Textarea" name="text"></textarea> 3 <textarea class="qedField" 4 data-dojo-type="dijit/form/Textarea" 5 data-dojo-props="required: true" 6 name="text"></textarea> 4 7 </form> -
Dev/trunk/src/client/qed-client/model/widgets/questions/templates/TextInputConfigWidget.html
r506 r510 1 <form >1 <form class="${baseClass}"> 2 2 <div> 3 3 <label class="qedLabel" for="text">Subcode</label> 4 <div class="qedField "4 <div class="qedField subcode" 5 5 data-dojo-attach-point="subcodeBox" 6 6 data-dojo-type="dijit/form/ValidationTextBox"
Note: See TracChangeset
for help on using the changeset viewer.