Changeset 281


Ignore:
Timestamp:
02/22/12 12:54:44 (13 years ago)
Author:
hendrikvanantwerpen
Message:
  • [Client] Removed local Dojo copy and pull in via svn:external.
  • [Client] Keep categories of questions in alphabetical order.
  • [Client] Added skeleton QuestionWidget? for different question types.
Location:
Dev/branches/rest-dojo-ui
Files:
3 added
1 deleted
6 edited

Legend:

Unmodified
Added
Removed
  • Dev/branches/rest-dojo-ui/client

  • Dev/branches/rest-dojo-ui/client/index.html

    r274 r281  
    44        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    55        <title>Research Facilitator Tool</title>
    6         <link type="text/css" href="dijit/themes/claro/claro.css" rel="stylesheet" />
    7         <link type="text/css" href="dojox/grid/resources/Grid.css" rel="stylesheet" />
    8         <link type="text/css" href="dojox/grid/resources/claroGrid.css" rel="stylesheet" />
     6        <link type="text/css" href="dojotoolkit/dijit/themes/claro/claro.css" rel="stylesheet" />
     7        <link type="text/css" href="dojotoolkit/dojox/grid/resources/Grid.css" rel="stylesheet" />
     8        <link type="text/css" href="dojotoolkit/dojox/grid/resources/claroGrid.css" rel="stylesheet" />
    99        <link type="text/css" href="rft/css/main.css" rel="stylesheet" />
    10         <script type="text/javascript" src="dojo/dojo.js" data-dojo-config="async: true, parseOnLoad: false, tlmSiblingOfDojo: false, isDebug: true, baseUrl: '', packages: ['dojo','dijit', 'dojox', 'rft']"></script>
     10        <script type="text/javascript" src="dojotoolkit/dojo/dojo.js" data-dojo-config="async: true, parseOnLoad: false, tlmSiblingOfDojo: false, isDebug: true, baseUrl: '', packagePaths: {'dojotoolkit':['dojo','dijit', 'dojox'], '.':['rft']}"></script>
    1111        <script type="text/javascript" src="rft/run.js"></script>
    1212    </head>
  • Dev/branches/rest-dojo-ui/client/rft/css/main.css

    r274 r281  
     1html,body {
     2    width: 100%;
     3    height: 100%;
     4}
     5
    16.mainHeader {
    27    display: inline-block;
  • Dev/branches/rest-dojo-ui/client/rft/pages/questions.html

    r275 r281  
    22    <h1>Questions</h1>
    33    <div data-dojo-type="dijit.form.Button" data-rft-attach-event="onClick:onNewQuestion">New question</div>
    4     <div data-dojo-type="dijit.layout.AccordionContainer" data-dojo-props="doLayout: false" style="width: 100%; height: 100%;" data-rft-attach-point="accordion">
     4    <div data-dojo-type="rft.ui.TitleGroup" data-rft-attach-point="accordion">
    55    </div>
    66    <div data-dojo-type="dijit.Dialog" title="Question" data-rft-attach-point="questionDialog">
     
    1717                <input data-dojo-type="dijit.form.TextBox" name="category" type="text" class="loginInput" />
    1818            </fieldset>
     19            <fieldset>
     20                <div data-dojo-type="rft.ui.QuestionWidget" data-rft-attach-point="questionWidget" ></div>
     21            </fieldset>
    1922            <div style="float: right;">
    2023                <button type="button" data-dojo-type="dijit.form.Button" data-rft-attach-event="onClick:onCancelQuestion">Cancel</button>
  • Dev/branches/rest-dojo-ui/client/rft/pages/questions.js

    r275 r281  
    11define(['dojo/_base/declare','dojo/_base/lang','dojo/_base/array','dojo/_base/event',
    2     'dojo/_base/Deferred','dojo/store/JsonRest','dijit/layout/ContentPane',
     2    'dojo/_base/Deferred','dojo/store/JsonRest','dijit/layout/ContentPane','dijit/TitlePane',
    33    'rft/ui/_Page','rft/ui/LineWithActionsWidget'],
    4     function(declare,lang,array,event,Deferred,JsonRest,ContentPane,_Page,LineWithActionsWidget) {
     4    function(declare,lang,array,event,Deferred,JsonRest,ContentPane,TitlePane,_Page,LineWithActionsWidget) {
    55        return declare('rft.pages.questions',[_Page],{
    66            constructor: function() {
    77                this.inherited(arguments);
    8                 this.containers = {};
    98                this.questions = {};
    109            },
     
    2019                    array.forEach(results,lang.hitch(this,'_addQuestion'));
    2120                }));
    22             },
    23             _getContainerForQuestion: function(q) {
    24                 var category = q.category || 'Unsorted';
    25                 var categoryContainer = this.containers[category];
    26                 if ( !categoryContainer ) {
    27                     var ac = new ContentPane({
    28                         title:category,
    29                         doLayout: false
    30                     });
    31                     categoryContainer = this.containers[category] = {
    32                         container: ac
    33                     };
    34                     ac.placeAt(this.accordion);
    35                     ac.startup();
    36                 }
    37                 return categoryContainer.container;
    3821            },
    3922            _addQuestion: function(q) {
     
    6245                var container = this._getContainerForQuestion(q);
    6346                question.widget.placeAt(container.containerNode);
     47                this._cleanupEmptyContainers();
     48            },
     49            _getContainerForQuestion: function(q) {
     50                var category = q.category || 'Unsorted';
     51                var widgets = this.accordion.getChildren();
     52                var containerWidget;
     53                var lastIndex = 'last';
     54                array.some(widgets,lang.hitch(this,function(widget,idx) {
     55                    if ( widget.title == category ) {
     56                        containerWidget = widget;
     57                        return true;
     58                    } else if ( widget.title > category  ) {
     59                        lastIndex = idx;
     60                        return true;
     61                    }
     62                    return false;
     63                }));
     64                if ( !containerWidget ) {
     65                    containerWidget = new TitlePane({
     66                        title:category
     67                    });
     68                    containerWidget.startup();
     69                    this.accordion.addChild(containerWidget,lastIndex);
     70                }
     71                return containerWidget;
     72            },
     73            _cleanupEmptyContainers: function() {
     74                var widgets = this.accordion.getChildren();
     75                array.forEach(widgets,lang.hitch(this,function(widget){
     76                    if ( !widget.getChildren().length ) {
     77                        this.accordion.removeChild(widget).destroy();
     78                    }
     79                }));
    6480            },
    6581            onNewQuestion: function() {
     
    7288                this.questionForm.reset();
    7389                this.questionForm.set('value',question);
     90                this.questionWidget.set('value',question);
    7491                this.questionDialog.show();
    7592            },
    7693            onSaveQuestion: function(evt) {
    7794                var value = this.questionForm.get('value');
     95                var subvalue = this.questionWidget.get('value');
     96                lang.mixin(value,subvalue);
    7897                Deferred.when( this._store.put(value) )
    7998                .then(lang.hitch(this,function(){
     
    88107                this.questionDialog.hide();
    89108                this.questionForm.reset();
    90                 this._refresh();
    91109            }
    92110        });
  • Dev/branches/rest-dojo-ui/client/rft/run.js

    r275 r281  
    11require([
     2    'dojo/data/ObjectStore',
     3    'dojo/store/JsonRest',
     4    'dijit/MenuBar',
     5    'dijit/MenuBarItem',
     6    'dijit/PopupMenuBarItem',
     7    'dijit/DropDownMenu',
     8    'dijit/TitlePane',
     9    'dijit/layout/ContentPane',
     10    'dijit/layout/TabContainer',
     11    'dijit/layout/AccordionContainer',
    212    'dijit/form/Form',
    313    'dijit/form/TextBox',
    414    'dijit/form/Button',
    515    'dijit/form/Textarea',
    6     'dojo/store/JsonRest',
    7     'dojo/data/ObjectStore',
     16    'dijit/form/ComboBox',
     17    'dijit/form/Select',
    818    'dojox/grid/DataGrid',
    9     'dijit/layout/ContentPane',
    10     'dijit/layout/TabContainer',
    11     'dijit/layout/AccordionContainer',
    12     'dijit/MenuBar',
    13     'dijit/MenuBarItem',
    14     'dijit/PopupMenuBarItem',
    15     'dijit/DropDownMenu',
     19    'dojox/widget/TitleGroup',
    1620    'rft/ui/MenuBarLink',
    1721    'rft/ui/MenuLink',
    1822    'rft/ui/LineWithActionsWidget',
     23    'rft/ui/QuestionWidget',
     24    'rft/ui/TitleGroup',
    1925    'rft/pages/questions' // could this be done dynamically?
    2026]);
Note: See TracChangeset for help on using the changeset viewer.