Changeset 426
- Timestamp:
- 03/13/13 17:07:58 (12 years ago)
- Location:
- Dev/trunk
- Files:
-
- 1 added
- 27 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
Dev/trunk
- Property svn:ignore
-
old new 1 1 data 2 2 nbproject 3 node_modules
-
- Property svn:ignore
-
Dev/trunk/client
- Property svn:externals
-
old new 1 dojo http://svn.dojotoolkit.org/src/tags/release-1.8. 0/dojo2 dijit http://svn.dojotoolkit.org/src/tags/release-1.8. 0/dijit3 dojox http://svn.dojotoolkit.org/src/tags/release-1.8. 0/dojox4 util http://svn.dojotoolkit.org/src/tags/release-1.8. 0/util1 dojo http://svn.dojotoolkit.org/src/tags/release-1.8.3/dojo 2 dijit http://svn.dojotoolkit.org/src/tags/release-1.8.3/dijit 3 dojox http://svn.dojotoolkit.org/src/tags/release-1.8.3/dojox 4 util http://svn.dojotoolkit.org/src/tags/release-1.8.3/util
-
- Property svn:externals
-
Dev/trunk/client/qed/lib/async.js
r420 r426 1 1 define([ 2 3 4 5 2 'dojo/_base/array', 3 'dojo/_base/lang', 4 'dojo/when', 5 'dojo/Deferred' 6 6 ],function(array,lang,when,Deferred){ 7 7 … … 20 20 var running = null; 21 21 function cancel(err) { 22 if ( cancelled ) return;22 if ( cancelled ) { return; } 23 23 cancelled = true; 24 running && running.cancel && !running.isFulfilled() && running.cancel(); 24 if ( running && running.cancel && !running.isFulfilled() ) { 25 running.cancel(); 26 } 25 27 d.reject(err); 26 28 } 27 29 28 30 function update(fs,arg) { 29 if ( cancelled ) return;31 if ( cancelled ) { return; } 30 32 if ( fs.length > 0 ) { 31 33 try { … … 58 60 */ 59 61 function par(functions,ctx) { 60 var d = new Deferred(cancel);61 62 var d; // later: Deferred 63 62 64 var cancelled = false; 63 65 var running = []; 64 66 function cancel(err) { 65 if (cancelled) return;67 if (cancelled) { return; } 66 68 cancelled = true; 67 69 array.forEach(running,function(running){ 68 running && running.cancel && !running.isFulfilled() && running.cancel(); 70 if ( running && running.cancel && !running.isFulfilled() ) { 71 running.cancel(); 72 } 69 73 }); 70 74 d.reject(err); 71 75 } 72 76 77 d = new Deferred(cancel); 78 73 79 var results = []; 74 80 var left = functions.length; 75 81 function update(res,idx) { 76 if (cancelled) return;82 if (cancelled) { return; } 77 83 results[idx] = res; 78 84 left -= 1; // Works because/as long as AJAX/JS is single-threaded. … … 83 89 84 90 array.forEach(functions,function(f,idx){ 85 if (cancelled) return;91 if (cancelled) { return; } 86 92 try { 87 93 running.push(when(f.call(ctx)).then(function(res){ -
Dev/trunk/client/qed/main-response.js
r420 r426 14 14 'dojo/domReady!', 15 15 'qed/stddeps' 16 ],function(date,locale,hash,parser,store,Content,Page,Path,async,Response,SurveyRun, response) {16 ],function(date,locale,hash,parser,store,Content,Page,Path,async,Response,SurveyRun,ResponsePage) { 17 17 parser.parse(); 18 18 Content.startup(); … … 73 73 .then(function(responseId){ 74 74 hash(Path.format("/"+surveyRunId,{ id: responseId })); 75 Content.set(new response({75 Content.set(new ResponsePage({ 76 76 surveyRunId: surveyRunId, 77 77 options: { -
Dev/trunk/client/qed/model/schema.js
r420 r426 28 28 var string = mkType({ type:'string' }); 29 29 var integer = mkType({ type: 'integer' }); 30 var bool ean= mkType({ type: 'boolean' });30 var bool = mkType({ type: 'boolean' }); 31 31 var pattern = function(p){ 32 32 return mixin({ … … 102 102 }), 103 103 typedobject('MultipleChoiceInput',{ 104 multiple:bool ean(),104 multiple:bool(), 105 105 items:array(nestring()) 106 106 }) -
Dev/trunk/client/qed/model/widgets/CategoryListView.js
r417 r426 2 2 'dojo/_base/declare', 3 3 'dojo/_base/lang', 4 'dojo/dom-construct', 4 5 '../../widgets/LineWithActionsWidget', 5 6 '../../widgets/list/List' 6 ],function( 7 declare, 8 lang, 9 LineWithActionsWidget, 10 List 11 ) { 7 ],function(declare, lang, domConstruct, LineWithActionsWidget, List) { 12 8 return declare([List],{ 13 9 baseClass: 'rftLineListView', 14 10 15 11 _createAvatarNode: function(item) { 16 var node = document.createElement("div"); 17 node.className = "dragAvatar"; 18 node.innerHTML = item.title; 12 var node = domConstruct.create("div",{ 13 className: "dragAvatar", 14 innerHTML: item.title 15 }); 19 16 return node; 20 17 }, -
Dev/trunk/client/qed/model/widgets/QuestionEditorToolkit.js
r417 r426 14 14 './CategoryListView', 15 15 'dojo/text!./templates/QuestionEditorToolkit.html' 16 ], function(declare, lang, Source, domConstruct, Memory, _Container, _TemplatedMixin, _WidgetBase, _WidgetsInTemplateMixin, Button, ComboBox, store, CategoryListView, template) { 17 return declare([_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin, _Container], { 16 ], function(declare, lang, Source, domConstruct, Memory, _Container, 17 _TemplatedMixin, _WidgetBase, _WidgetsInTemplateMixin, Button, 18 ComboBox, store, CategoryListView, template) { 19 return declare([_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin, _Container], { 18 20 19 20 21 22 23 24 25 21 templateString: template, 22 _list: null, 23 _categorySelect: null, 24 _categoryStore: null, 25 _topicSelect: null, 26 _topicStore: null, 27 _categories : null, 26 28 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 29 _contentItems: [ 30 { type: "Header" }, 31 { type: "Text" }, 32 { type: "Image" }, 33 { type: "ExternalMedia" }, 34 { type: "Divider" } 35 ], 36 _inputsItems: [ 37 { type: "StringInput" }, 38 { type: "TextInput" }, 39 { type: "IntegerInput" }, 40 { type: "ScaleInput" }, 41 { type: "MultipleChoiceInput" } 42 ], 43 _labelMap: { 44 "Header": "Header", 45 "Text": "Text", 46 "Image": "Image", 47 "ExternalMedia": "External media", 48 "Divider": "Divider", 49 "StringInput": "Text line", 50 "TextInput": "Free text", 51 "IntegerInput": "Integer number", 52 "ScaleInput": "Scale", 53 "MultipleChoiceInput": "Multiple choice" 54 }, 55 _iconMap: { 56 "Header": "Header", 57 "Text": "TextBox", 58 "Image": "Image", 59 "ExternalMedia": "External", 60 "Divider": "Divider", 61 "StringInput": "Text", 62 "TextInput": "Text", 63 "IntegerInput": "Integer", 64 "ScaleInput": "Scale", 65 "MultipleChoiceInput": "MultipleChoice" 66 }, 65 67 66 postCreate: function(){ 67 this.inherited(arguments); 68 var creator = lang.hitch(this,"_creator"); 69 this.contentSource = new Source(this.ToolkitContentSourceNode, { 70 accept: [], 71 copyOnly: true, 72 selfAccept: false, 73 singular: true, 74 creator: creator 68 postCreate: function(){ 69 this.inherited(arguments); 70 var creator = lang.hitch(this,"_creator"); 71 this.contentSource = new Source(this.ToolkitContentSourceNode, { 72 accept: [], 73 copyOnly: true, 74 selfAccept: false, 75 singular: true, 76 creator: creator 77 }); 78 this.inputsSource = new Source(this.ToolkitInputsSourceNode, { 79 accept: [], 80 copyOnly: true, 81 selfAccept: false, 82 singular: true, 83 creator: creator 84 }); 85 this.contentSource.insertNodes(false, this._contentItems); 86 this.inputsSource.insertNodes(false, this._inputsItems); 87 }, 88 _setValueAttr: function(question) { 89 this.propertiesForm.set('value', question); 90 this._categories = question.categories || []; 91 this._setupListView(); 92 this._setupCategories(); 93 this._setupTopic(question.topic); 94 }, 95 _getValueAttr: function() { 96 var value = this.propertiesForm.get('value'); 97 value.categories = this._categories; 98 return value; 99 }, 100 onCategoryAdd: function() { 101 this._addCategory(this._categorySelect.get('displayedValue')); 102 this._categorySelect.reset(); 103 }, 104 _creator: function(item, hint) { 105 var node; 106 if (hint === "avatar") { 107 node = domConstruct.create('span',{ 108 innerHTML: this._labelMap[item.type] || item.type 75 109 }); 76 this.inputsSource = new Source(this.ToolkitInputsSourceNode, { 77 accept: [], 78 copyOnly: true, 79 selfAccept: false, 80 singular: true, 81 creator: creator 110 } else { 111 var w = new Button({ 112 baseClass: "rftLargeButton", 113 iconClass: "rftIcon rftIcon"+(this._iconMap[item.type]||"Unknown"), 114 label: this._labelMap[item.type] || item.type, 115 showLabel: true, 116 'class': "newline" 82 117 }); 83 this.contentSource.insertNodes(false, this._contentItems); 84 this.inputsSource.insertNodes(false, this._inputsItems); 85 }, 86 _setValueAttr: function(question) { 87 this.propertiesForm.set('value', question); 88 this._categories = question.categories || []; 89 this._setupListView(); 90 this._setupCategories(); 91 this._setupTopic(question.topic); 92 }, 93 _getValueAttr: function() { 94 var value = this.propertiesForm.get('value'); 95 value.categories = this._categories; 96 return value; 97 }, 98 onCategoryAdd: function() { 99 this._addCategory(this._categorySelect.get('displayedValue')); 100 this._categorySelect.reset(); 101 }, 102 _creator: function(item, hint) { 103 var node; 104 if (hint == "avatar") { 105 node = domConstruct.create('span',{ 106 innerHTML: this._labelMap[item.type] || item.type 107 }); 108 } else { 109 var w = new Button({ 110 baseClass: "rftLargeButton", 111 iconClass: "rftIcon rftIcon"+(this._iconMap[item.type]||"Unknown"), 112 label: this._labelMap[item.type] || item.type, 113 showLabel: true, 114 'class': "newline" 115 }); 116 node = w.domNode; 117 } 118 return {node: node, data: item, type: ["questionContent"]}; 119 }, 120 _setupListView: function() { 121 this._list = new CategoryListView( { 122 removeCallback: lang.hitch(this, this._removeCategory) 123 }).placeAt(this.listNode); 124 this._list.startup(); 125 for (var category in this._categories) { 126 this._list.appendItem(this._categories[category]); 127 } 128 }, 129 _setupCategories: function() { 130 this._categoryStore = new Memory({data: [] }); 131 store.query("_design/questions/_view/all", {reduce:true, group:false, group_level:1}) 132 .forPairs(lang.hitch(this, function(value, key) { 133 this._categoryStore.put({ id: key[0] }); 134 })); 135 this._categorySelect = new ComboBox( { 136 name: "categories", 137 store: this._categoryStore, 138 searchAttr: "id" 139 }, this.categoriesBoxNode); 140 this._supportingWidgets.push(this._categorySelect); 118 node = w.domNode; 119 } 120 return {node: node, data: item, type: ["questionContent"]}; 121 }, 122 _setupListView: function() { 123 this._list = new CategoryListView( { 124 removeCallback: lang.hitch(this, this._removeCategory) 125 }).placeAt(this.listNode); 126 this._list.startup(); 127 for (var category in this._categories) { 128 this._list.appendItem(this._categories[category]); 129 } 130 }, 131 _setupCategories: function() { 132 this._categoryStore = new Memory({data: [] }); 133 store.query("_design/questions/_view/all", {reduce:true, group:false, group_level:1}) 134 .forPairs(lang.hitch(this, function(value, key) { 135 this._categoryStore.put({ id: key[0] }); 136 })); 137 this._categorySelect = new ComboBox( { 138 name: "categories", 139 store: this._categoryStore, 140 searchAttr: "id" 141 }, this.categoriesBoxNode); 142 this._supportingWidgets.push(this._categorySelect); 141 143 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 144 }, 145 _setupTopic: function(topic) { 146 this._topicStore = new Memory( {data: [] }); 147 store.query("_design/questions/_view/all_topics", {reduce:true, group:true}) 148 .forPairs(lang.hitch(this, function(value, key) { 149 this._topicStore.put({ id: key }); 150 })); 151 this._topicSelect = new ComboBox( { 152 name: "topic", 153 store: this._topicStore, 154 searchAttr: "id", 155 value: topic 156 }, this.topicBoxNode); 157 this._supportingWidgets.push(this._topicSelect); 158 }, 159 _addCategory: function(item) { 160 this._categories.push(item); 161 this._list.appendItem(item); 162 }, 163 _removeCategory: function(item) { 164 this._categories.splice(this._categories.indexOf(item), 1); 165 } 164 166 165 });166 167 }); 168 }); -
Dev/trunk/client/qed/model/widgets/QuestionListView.js
r417 r426 36 36 }, 37 37 "Info" : { 38 callback: function(){ item.description && alert(item.description); }, 38 callback: function(){ 39 if ( item.description ) { alert(item.description); } 40 }, 39 41 properties: { 40 42 blockButton: false, -
Dev/trunk/client/qed/model/widgets/QuestionWidget.js
r417 r426 2 2 'dijit/_TemplatedMixin','dijit/_WidgetsInTemplateMixin', 3 3 'dojo/text!./templates/QuestionWidget.html','dijit/form/TextBox', 4 'dijit/form/Textarea','../../widgets/MultipleChoiceWidget'], 5 function(declare,lang,domConstruct,_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin,templateString,TextBox,Textarea,MultipleChoiceWidget){ 6 return declare([_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin],{ 7 templateString: templateString, 8 mode: 'view', // view || edit 9 name: '', 10 value: null, 11 _scale: null, 12 _widgetCache: null, 13 constructor: function() { 14 this.inherited(arguments); 15 this.value = {}; 16 this._widgetCache = {}; 17 }, 18 postCreate: function() { 19 this._resetValue = this.value; 20 this.scaleSelector.set('disabled', this.mode == 'edit'); 21 }, 22 _setValueAttr: function(value) { 23 this.value = value; 24 this._onTypeChange(value.scale || 'string'); 25 this.ourForm.set('value',value); 26 }, 27 _getValueAttr: function() { 28 var value = this.ourForm.get('value'); 29 lang.mixin(this.value,value); 30 return this.value; 31 }, 32 _onTypeChange: function(scale) { 33 if ( this._scale == scale ) return; 34 this._scale = scale; 35 domConstruct.empty(this.scaleDetails); 36 var widget = this._getTypeWidget(scale); 37 widget && widget.placeAt(this.scaleDetails,'only'); 38 }, 39 _getTypeWidget: function(scale) { 40 var widget = this._widgetCache[scale]; 41 if (!widget) { 42 switch(scale) { 43 case 'string': 44 widget = new TextBox({ 45 name: 'answers', 46 disabled: this.mode == 'view' 47 }); 48 break; 49 case 'text': 50 widget = new Textarea({ 51 name: 'answers', 52 disabled: this.mode == 'view', 53 style: 'min-height: 120px' 54 }); 55 break; 56 case 'singleChoice': 57 case 'multipleChoice': 58 widget = new MultipleChoiceWidget({ 59 name: 'answers', 60 mode: this.mode, 61 allowMultiple: scale == 'multipleChoice' 62 }); 63 break; 64 } 65 this._widgetCache[scale] = widget; 4 'dijit/form/Textarea','../../widgets/MultipleChoiceWidget' 5 ], function(declare,lang,domConstruct,_WidgetBase,_TemplatedMixin, 6 _WidgetsInTemplateMixin,templateString,TextBox,Textarea,MultipleChoiceWidget){ 7 return declare([_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin],{ 8 templateString: templateString, 9 mode: 'view', // view || edit 10 name: '', 11 value: null, 12 _scale: null, 13 _widgetCache: null, 14 constructor: function() { 15 this.inherited(arguments); 16 this.value = {}; 17 this._widgetCache = {}; 18 }, 19 postCreate: function() { 20 this._resetValue = this.value; 21 this.scaleSelector.set('disabled', this.mode === 'edit'); 22 }, 23 _setValueAttr: function(value) { 24 this.value = value; 25 this._onTypeChange(value.scale || 'string'); 26 this.ourForm.set('value',value); 27 }, 28 _getValueAttr: function() { 29 var value = this.ourForm.get('value'); 30 lang.mixin(this.value,value); 31 return this.value; 32 }, 33 _onTypeChange: function(scale) { 34 if ( this._scale === scale ) { return; } 35 this._scale = scale; 36 domConstruct.empty(this.scaleDetails); 37 var widget = this._getTypeWidget(scale); 38 if ( widget ) { widget.placeAt(this.scaleDetails,'only'); } 39 }, 40 _getTypeWidget: function(scale) { 41 var widget = this._widgetCache[scale]; 42 if (!widget) { 43 switch(scale) { 44 case 'string': 45 widget = new TextBox({ 46 name: 'answers', 47 disabled: this.mode === 'view' 48 }); 49 break; 50 case 'text': 51 widget = new Textarea({ 52 name: 'answers', 53 disabled: this.mode === 'view', 54 style: 'min-height: 120px' 55 }); 56 break; 57 case 'singleChoice': 58 case 'multipleChoice': 59 widget = new MultipleChoiceWidget({ 60 name: 'answers', 61 mode: this.mode, 62 allowMultiple: scale === 'multipleChoice' 63 }); 64 break; 66 65 } 67 return widget; 68 }, 69 reset: function() { 70 this.ourForm.reset(); 71 this._setValueAttr(this._resetValue); 66 this._widgetCache[scale] = widget; 72 67 } 73 }); 68 return widget; 69 }, 70 reset: function() { 71 this.ourForm.reset(); 72 this._setValueAttr(this._resetValue); 73 } 74 74 }); 75 }); -
Dev/trunk/client/qed/model/widgets/QuestionWidgetFactory.js
r421 r426 30 30 var fun = this['create'+options.type+'EditWidget']; 31 31 var view = fun !== undefined ? fun() : null; 32 if (view)32 if (view) { 33 33 view.set('value', options); 34 } 34 35 return view; 35 36 }, … … 272 273 var table = new TableContainer({ cols: 1, customClass: "labelsAndValues"} ); 273 274 274 var ctor = this.options.multiple === true ? CheckBox : RadioButton;275 array.forEach(this.options.items || [], function(item){276 table.addChild(new ctor({277 278 275 var Ctor = this.options.multiple === true ? CheckBox : RadioButton; 276 array.forEach(this.options.items || [], function(item){ 277 table.addChild(new Ctor({ 278 name: this.options.code || '', 279 title: item 279 280 })); 280 281 },this); … … 342 343 w.startup(); 343 344 w.set('value',item); 344 w.on('delete',lang.hitch(this,'_onRemove',w ));345 w.on('delete',lang.hitch(this,'_onRemove',w,item)); 345 346 return w.domNode; 346 347 }, 347 _onRemove: function(w ) {348 _onRemove: function(w,item) { 348 349 w.destroyRecursive(); 349 this.removeCallback && this.removeCallback(item);350 if ( this.removeCallback ) { this.removeCallback(item); } 350 351 this.source.sync(); 351 352 } -
Dev/trunk/client/qed/package.json
r407 r426 1 1 { 2 "name": "rft", 3 "description": "Research Facilitator Tool", 4 "dependencies": { 5 "dojo": "~1.8.0", 6 "dijit": "~1.8.0", 7 "dojox": "~1.8.0" 8 }, 9 "dojoBuild": "package.js" 2 "name": "qed", 3 "description": "QED", 4 "dependencies": { 5 "dojo": "~1.8.0", 6 "dijit": "~1.8.0", 7 "dojox": "~1.8.0" 8 }, 9 "dojoBuild": "qed.profile.js", 10 "devDependencies": { 11 "grunt": "~0.4.0", 12 "grunt-contrib-less": "~0.5.0", 13 "grunt-contrib-jshint": "~0.2.0" 14 } 10 15 } -
Dev/trunk/client/qed/pages/question.js
r420 r426 54 54 Content.notify(err,'error'); 55 55 }); 56 evt && event.stop( evt );56 if ( evt ) { event.stop( evt ); } 57 57 return false; 58 58 }, -
Dev/trunk/client/qed/pages/response.js
r420 r426 62 62 this._getAnswersAndSaveResponse(); 63 63 this.content.domNode.innerHTML = "<div>Thanks for filling in the survey.</div>"; 64 e && event.stop(e);64 if ( e ) { event.stop(e); } 65 65 return false; 66 66 }, … … 68 68 this._getAnswersAndSaveResponse(); 69 69 this.content.domNode.innerHTML = "<div>To continue with this survey later, just save the URL in the location bar and revisit it later. Your answers will still be there.</div>"; 70 e && event.stop(e);70 if ( e ) { event.stop(e); } 71 71 return false; 72 72 }, 73 73 _ignoreEvent: function(e) { 74 e && event.stop(e);74 if ( e ) { event.stop(e); } 75 75 return false; 76 76 } -
Dev/trunk/client/qed/pages/survey.js
r420 r426 43 43 itemActions: { 44 44 "Info": { 45 callback: function(item){ item.description && alert(item.description); }, 45 callback: function(item){ 46 if ( item.description ) { alert(item.description); } 47 }, 46 48 icon: "Inspect", 47 49 description: "Show item description" -
Dev/trunk/client/qed/pages/surveys.js
r422 r426 68 68 refreshDrafts: function() { 69 69 this.draftsContainer.set('content',''); 70 when(store.query("_design/surveys/_view/drafts") 71 ,lang.hitch(this,function(surveys){70 when(store.query("_design/surveys/_view/drafts"), 71 lang.hitch(this,function(surveys) { 72 72 this.draftsTab.set('title','Drafts ('+surveys.length+')'); 73 73 array.forEach(surveys,function(survey){ … … 110 110 refreshPublished: function() { 111 111 this.publishedContainer.set('content',''); 112 when(store.query("_design/surveys/_view/published") 113 ,lang.hitch(this,function(surveys){112 when(store.query("_design/surveys/_view/published"), 113 lang.hitch(this, function(surveys) { 114 114 this.publishedTab.set('title','Published ('+surveys.length+')'); 115 115 array.forEach(surveys,function(survey){ … … 138 138 refreshRuns: function() { 139 139 this.runsContainer.set('content',''); 140 when(store.query("_design/default/_view/by_type",{key:'SurveyRun'}) 141 ,lang.hitch(this,function(surveyRuns){140 when(store.query("_design/default/_view/by_type",{key:'SurveyRun'}), 141 lang.hitch(this,function(surveyRuns){ 142 142 this.runsTab.set('title','Runs ('+surveyRuns.length+')'); 143 143 array.forEach(surveyRuns,function(surveyRun){ -
Dev/trunk/client/qed/qed.profile.js
r424 r426 3 3 resourceTags: { 4 4 amd: function (filename, mid) { 5 return /\.js$/.test(filename);5 return (/\.js$/).test(filename); 6 6 }, 7 7 declarative: function (filename, mid) { 8 return /\.html$/.test(filename);8 return (/\.html$/).test(filename); 9 9 }, 10 10 copyOnly: function(filename,mid) { -
Dev/trunk/client/qed/store/CouchStore.js
r418 r426 271 271 dfd.reject(getCouchError(err)); 272 272 }); 273 return CouchResults(dfd.promise);273 return couchResults(dfd.promise); 274 274 } 275 275 }); 276 276 277 function CouchResults(results) { 278 results = QueryResults(results); 277 var queryResults = QueryResults; 278 279 function couchResults(results) { 280 results = queryResults(results); 279 281 results.forPairs = function(callback,thisObject) { 280 282 callback = lang.hitch(thisObject,callback); -
Dev/trunk/client/qed/store/ElasticReadStore.js
r410 r426 23 23 }); 24 24 return this.inherited(arguments); 25 25 }, 26 26 _fetchItems: function(request, fetchHandler, errorHandler){ 27 27 var serverQuery = request.serverQuery; -
Dev/trunk/client/qed/ui/MenuBarLink.js
r410 r426 1 define(['dojo/_base/declare','dijit/MenuBarItem','../app/Router' ],2 function(declare,MenuBarItem,Router){3 return declare([MenuBarItem], {1 define(['dojo/_base/declare','dijit/MenuBarItem','../app/Router' 2 ], function(declare,MenuBarItem,Router) { 3 return declare([MenuBarItem], { 4 4 options:{ 5 5 path: null 6 6 }, 7 7 onClick: function(){ 8 this.path && Router.go(this.path);8 if ( this.path ) { Router.go(this.path); } 9 9 } 10 10 }); -
Dev/trunk/client/qed/ui/MenuLink.js
r410 r426 1 define(['dojo/_base/declare','dijit/MenuItem','../app/Router' ],2 function(declare,MenuItem,Router){1 define(['dojo/_base/declare','dijit/MenuItem','../app/Router' 2 ], function(declare,MenuItem,Router) { 3 3 return declare([MenuItem],{ 4 4 options:{ 5 5 path: null 6 6 }, 7 onClick: function() {8 this.path && Router.go(this.path);7 onClick: function() { 8 if ( this.path ) { Router.go(this.path); } 9 9 } 10 10 }); -
Dev/trunk/client/qed/widgets/LineWithActionsWidget.js
r417 r426 42 42 title: this.actions[action].properties.tooltip, 43 43 onClick: lang.hitch(this, function(action, e){ 44 action.callback && action.callback(e);44 if ( action.callback ) { action.callback(e); } 45 45 event.stop(e); 46 46 return false; … … 56 56 title: this.actions[action].properties.tooltip, 57 57 onClick: lang.hitch(this, function(action, e){ 58 action.callback && action.callback(e);58 if ( action.callback ) { action.callback(e); } 59 59 event.stop(e); 60 60 return false; … … 75 75 return !preventDefault; 76 76 }, 77 onClick: function( e) {77 onClick: function(/*e*/) { 78 78 }, 79 79 _setTitleAttr: function(value){ -
Dev/trunk/client/qed/widgets/MultipleChoiceWidget.js
r417 r426 3 3 'dijit/_TemplatedMixin','dijit/_WidgetsInTemplateMixin','dijit/_Container', 4 4 'dojo/text!./templates/MultipleChoiceWidget.html', 5 'dijit/form/RadioButton','dijit/form/CheckBox','dijit/form/TextBox','dijit/form/Button'], 6 function(declare,array,lang,domConstruct,registry,_WidgetBase,_TemplatedMixin, 7 _WidgetsInTemplateMixin,_Container, 8 templateString,RadioButton,CheckBox,TextBox,Button){ 9 return declare([_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin,_Container],{ 10 templateString: templateString, 11 multiple: true, 12 baseClass: 'rftMultipleChoiceWidget', 13 14 allowMultiple: false, 15 name: '', 16 value: null, 17 18 _widgetCache: null, 19 constuctor: function() { 20 this.inherited(arguments); 21 this.value = []; 22 this._widgetCache = {}; 23 }, 24 _setValueAttr: function(value) { 25 this.reset(); 26 this.value = value; 27 array.forEach(this.value,lang.hitch(this,function(val){ 28 this._addRow(val); 29 })); 30 }, 31 _getValueAttr: function() { 32 var value = []; 33 registry.findWidgets(this.domNode).forEach(function(w){ 34 w.isInstanceOf(TextBox) && value.push(w.get('value')); 35 }); 36 this.value = value; 37 return value; 38 }, 39 reset: function() { 40 this._removeWidgetsBelowNode(this.rows); 41 domConstruct.empty(this.rows); 42 }, 43 _onAddRow: function() { 44 this._addRow(); 45 }, 46 _addRow: function(value,tagRow,pos) { 47 var row = domConstruct.create('div',{'class':'row'}); 48 if ( this.allowMultiple ) { 49 new CheckBox({ 50 name:this.name, 51 'class':'rowBox', 52 disabled: this.mode == 'edit' 53 }).placeAt(row); 54 } else { 55 new RadioButton({ 56 name:this.name, 57 'class':'rowBox', 58 disabled: this.mode == 'edit' 59 }).placeAt(row); 60 } 61 new TextBox({ 5 'dijit/form/RadioButton','dijit/form/CheckBox','dijit/form/TextBox','dijit/form/Button' 6 ], function(declare,array,lang,domConstruct,registry,_WidgetBase,_TemplatedMixin, 7 _WidgetsInTemplateMixin,_Container, templateString,RadioButton,CheckBox,TextBox,Button){ 8 return declare([_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin,_Container],{ 9 templateString: templateString, 10 multiple: true, 11 baseClass: 'rftMultipleChoiceWidget', 12 13 allowMultiple: false, 14 name: '', 15 value: null, 16 17 _widgetCache: null, 18 constuctor: function() { 19 this.inherited(arguments); 20 this.value = []; 21 this._widgetCache = {}; 22 }, 23 _setValueAttr: function(value) { 24 this.reset(); 25 this.value = value; 26 array.forEach(this.value,lang.hitch(this,function(val){ 27 this._addRow(val); 28 })); 29 }, 30 _getValueAttr: function() { 31 var value = []; 32 registry.findWidgets(this.domNode).forEach(function(w){ 33 if ( w.isInstanceOf(TextBox) ) { value.push(w.get('value')); } 34 }); 35 this.value = value; 36 return value; 37 }, 38 reset: function() { 39 this._removeWidgetsBelowNode(this.rows); 40 domConstruct.empty(this.rows); 41 }, 42 _onAddRow: function() { 43 this._addRow(); 44 }, 45 _addRow: function(value,tagRow,pos) { 46 var row = domConstruct.create('div',{'class':'row'}); 47 if ( this.allowMultiple ) { 48 new CheckBox({ 62 49 name:this.name, 63 value:value || '',64 'class':'rowText'50 'class':'rowBox', 51 disabled: this.mode === 'edit' 65 52 }).placeAt(row); 66 new Button({ 67 label:'-', 68 'class':'rowBtn', 69 onClick:lang.hitch(this,'_removeNodeWithWidgets',row) 53 } else { 54 new RadioButton({ 55 name:this.name, 56 'class':'rowBox', 57 disabled: this.mode === 'edit' 70 58 }).placeAt(row); 71 new Button({72 label:'+',73 'class':'rowBtn',74 onClick:lang.hitch(this,'_addRow','',row,'before')75 }).placeAt(row);76 domConstruct.place(row,tagRow || this.rows,pos||'last');77 },78 _removeNodeWithWidgets: function(node) {79 this._removeWidgetsBelowNode(node);80 domConstruct.destroy(node);81 },82 _removeWidgetsBelowNode: function(node) {83 registry.findWidgets(node).forEach(function(w){84 w.destroyRecursive();85 });86 },87 _onRowChange: function(row) {88 89 59 } 90 }); 60 new TextBox({ 61 name:this.name, 62 value:value || '', 63 'class':'rowText' 64 }).placeAt(row); 65 new Button({ 66 label:'-', 67 'class':'rowBtn', 68 onClick:lang.hitch(this,'_removeNodeWithWidgets',row) 69 }).placeAt(row); 70 new Button({ 71 label:'+', 72 'class':'rowBtn', 73 onClick:lang.hitch(this,'_addRow','',row,'before') 74 }).placeAt(row); 75 domConstruct.place(row,tagRow || this.rows,pos||'last'); 76 }, 77 _removeNodeWithWidgets: function(node) { 78 this._removeWidgetsBelowNode(node); 79 domConstruct.destroy(node); 80 }, 81 _removeWidgetsBelowNode: function(node) { 82 registry.findWidgets(node).forEach(function(w){ 83 w.destroyRecursive(); 84 }); 85 }, 86 _onRowChange: function(/*row*/) {} 91 87 }); 88 }); -
Dev/trunk/client/qed/widgets/ObjectBox.js
r417 r426 43 43 line3Actions[action] = { 44 44 callback: lang.hitch(this, function(callback){ 45 this.value && callback(this.value);45 if ( this.value ) { callback(this.value); } 46 46 }, this.actions[action]), 47 47 properties: { … … 54 54 return line3Actions; 55 55 }, 56 _showInfoBox: function() { 57 alert(this.value.description); 58 }, 56 _showInfoBox: function() {}, 59 57 _setValueAttr: function(value) { 60 58 this.value = value; -
Dev/trunk/client/qed/widgets/Selector.js
r417 r426 70 70 action.callback), 71 71 properties: { 72 73 74 75 76 72 blockButton: true, 73 label: action.title || actionName, 74 icon: action.icon, 75 tooltip: action.description 76 } 77 77 78 78 }; … … 145 145 this._folded = true; 146 146 } 147 evt && event.stop(evt);147 if ( evt ) { event.stop(evt); } 148 148 return false; 149 149 }, … … 174 174 }, 175 175 176 onSelect: function( item) {}176 onSelect: function(/*item*/) {} 177 177 }); 178 178 }); -
Dev/trunk/client/qed/widgets/ThresholdFilteringSelect.js
r417 r426 4 4 ], function(declare, FilteringSelect) { 5 5 return declare(FilteringSelect, { 6 7 6 // custom min input character count to trigger search 7 minKeyCount: 3, 8 8 9 10 11 12 13 14 15 16 9 // override search method, count the input length 10 _startSearch: function (/*String*/key) { 11 if (!key || key.length < this.minKeyCount) { 12 this.closeDropDown(); 13 return; 14 } 15 this.inherited(arguments); 16 } 17 17 }); 18 18 }); -
Dev/trunk/client/qed/widgets/list/List.js
r420 r426 52 52 }; 53 53 }, 54 _createListNode: function( item) {},55 _createAvatarNode: function( item) {},54 _createListNode: function(/*item*/) {}, 55 _createAvatarNode: function(/*item*/) {}, 56 56 57 57 appendItem: function(item) { … … 86 86 .forEach(lang.hitch(this,function(node){ 87 87 registry.byNode(node).destroyRecursive(); 88 this.removeCallback && this.removeCallback(item);88 if ( this.removeCallback ) { this.removeCallback(item); } 89 89 })); 90 90 this.source.sync(); -
Dev/trunk/client/qed/widgets/list/OrderedList.js
r407 r426 5 5 './List', 6 6 'dojo/text!./templates/OrderedList.html' 7 8 9 10 11 12 13 14 15 16 7 ],function( 8 declare, 9 lang, 10 Button, 11 List, 12 templateString 13 ){ 14 return declare([List],{ 15 templateString: templateString, 16 baseClass: 'rftLineListView', 17 17 18 19 20 18 startup: function() { 19 if ( this._started ){ return; } 20 this.inherited(arguments); 21 21 22 23 24 25 26 27 28 29 30 31 22 new Button({ 23 label: "Move up", 24 showLabel: false, 25 iconClass: "rftIcon rftIconFullArrowUp", 26 baseClass: "rftBlockButton", 27 'class': "trans", 28 onClick: lang.hitch(this, function() { 29 this._moveSelectedItem("up"); 30 }) 31 }, this.btnListMoveUp).startup(); 32 32 33 34 35 36 37 38 39 40 41 42 43 33 new Button({ 34 label: "Move down", 35 showLabel: false, 36 iconClass: "rftIcon rftIconFullArrowDown", 37 baseClass: "rftBlockButton", 38 'class': "trans", 39 onClick: lang.hitch(this, function() { 40 this._moveSelectedItem("down"); 41 }) 42 }, this.btnListMoveDown).startup(); 43 }, 44 44 45 46 47 48 49 50 51 52 53 45 _moveSelectedItem: function(dir) { 46 var node = this.source.getSelectedNodes()[0]; 47 if (node) { 48 if (dir === "up") { 49 if (node.previousSibling) { 50 return node.parentNode.insertBefore(node, node.previousSibling); 51 } else { 52 return false; 53 } 54 54 55 } else if (dir === "down") { 56 if (node.nextSibling) { 57 return node.parentNode.insertBefore(node.nextSibling, node); 58 } else { 59 return false; 60 } 55 } else if (dir === "down") { 56 if (node.nextSibling) { 57 return node.parentNode.insertBefore(node.nextSibling, node); 61 58 } else { 62 throw "Invalid move direction passed!";59 return false; 63 60 } 64 61 } else { 65 return false;62 throw "Invalid move direction passed!"; 66 63 } 67 }, 64 } else { 65 return false; 66 } 67 }, 68 68 69 insertItem: function(item) { 70 var anchor = this.source.getSelectedNodes()[0]; 71 if (anchor) { 72 this.source.insertNodes(false,[item], false, anchor); 73 } else { 74 this.appendItem(item); 75 } 69 insertItem: function(item) { 70 var anchor = this.source.getSelectedNodes()[0]; 71 if (anchor) { 72 this.source.insertNodes(false,[item], false, anchor); 73 } else { 74 this.appendItem(item); 76 75 } 76 } 77 77 78 });79 78 }); 79 }); -
Dev/trunk/client/qed/widgets/list/_EditableListMixin.js
r407 r426 9 9 .map(function(node){ 10 10 var value = registry.byId(node.id).get('value'); 11 this.source.setItem(node.id, value) 11 this.source.setItem(node.id, value); 12 12 return value; 13 13 },this);
Note: See TracChangeset
for help on using the changeset viewer.