Ignore:
Timestamp:
03/13/13 17:07:58 (12 years ago)
Author:
hendrikvanantwerpen
Message:

Added grunt tasks and code cleanup.

Added grunt for less and jshint procesing.
Cleanup of code to pass jshint (one bug found :).

Location:
Dev/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • Dev/trunk

    • Property svn:ignore
      •  

        old new  
        11data
        22nbproject
         3node_modules
  • Dev/trunk/client

    • Property svn:externals
      •  

        old new  
        1 dojo http://svn.dojotoolkit.org/src/tags/release-1.8.0/dojo
        2 dijit http://svn.dojotoolkit.org/src/tags/release-1.8.0/dijit
        3 dojox http://svn.dojotoolkit.org/src/tags/release-1.8.0/dojox
        4 util http://svn.dojotoolkit.org/src/tags/release-1.8.0/util
         1dojo http://svn.dojotoolkit.org/src/tags/release-1.8.3/dojo
         2dijit http://svn.dojotoolkit.org/src/tags/release-1.8.3/dijit
         3dojox http://svn.dojotoolkit.org/src/tags/release-1.8.3/dojox
         4util http://svn.dojotoolkit.org/src/tags/release-1.8.3/util
  • Dev/trunk/client/qed/model/widgets/QuestionEditorToolkit.js

    r417 r426  
    1414    './CategoryListView',
    1515    '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], {
    1820
    19             templateString: template,
    20             _list: null,
    21             _categorySelect: null,
    22             _categoryStore: null,
    23             _topicSelect: null,
    24             _topicStore: null,
    25             _categories : null,
     21        templateString: template,
     22        _list: null,
     23        _categorySelect: null,
     24        _categoryStore: null,
     25        _topicSelect: null,
     26        _topicStore: null,
     27        _categories : null,
    2628
    27             _contentItems: [
    28                 { type: "Header" },
    29                 { type: "Text" },
    30                 { type: "Image" },
    31                 { type: "ExternalMedia" },
    32                 { type: "Divider" }
    33             ],
    34             _inputsItems: [
    35                 { type: "StringInput" },
    36                 { type: "TextInput" },
    37                 { type: "IntegerInput" },
    38                 { type: "ScaleInput" },
    39                 { type: "MultipleChoiceInput" }
    40             ],
    41             _labelMap: {
    42                 "Header": "Header",
    43                 "Text": "Text",
    44                 "Image": "Image",
    45                 "ExternalMedia": "External media",
    46                 "Divider": "Divider",
    47                 "StringInput": "Text line",
    48                 "TextInput": "Free text",
    49                 "IntegerInput": "Integer number",
    50                 "ScaleInput": "Scale",
    51                 "MultipleChoiceInput": "Multiple choice"
    52             },
    53             _iconMap: {
    54                 "Header": "Header",
    55                 "Text": "TextBox",
    56                 "Image": "Image",
    57                 "ExternalMedia": "External",
    58                 "Divider": "Divider",
    59                 "StringInput": "Text",
    60                 "TextInput": "Text",
    61                 "IntegerInput": "Integer",
    62                 "ScaleInput": "Scale",
    63                 "MultipleChoiceInput": "MultipleChoice"
    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        },
    6567
    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
    75109                });
    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"
    82117                });
    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);
    141143
    142             },
    143             _setupTopic: function(topic) {
    144                 this._topicStore = new Memory( {data: [] });
    145                 store.query("_design/questions/_view/all_topics", {reduce:true, group:true})
    146                 .forPairs(lang.hitch(this, function(value, key) {
    147                     this._topicStore.put({ id: key });
    148                 }));
    149                 this._topicSelect = new ComboBox( {
    150                     name: "topic",
    151                     store: this._topicStore,
    152                     searchAttr: "id",
    153                     value: topic
    154                 }, this.topicBoxNode);
    155                 this._supportingWidgets.push(this._topicSelect);
    156             },
    157             _addCategory: function(item) {
    158                 this._categories.push(item);
    159                 this._list.appendItem(item);
    160             },
    161             _removeCategory: function(item) {
    162                 this._categories.splice(this._categories.indexOf(item), 1);
    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        }
    164166
    165         });
    166167    });
     168});
Note: See TracChangeset for help on using the changeset viewer.