Ignore:
Timestamp:
02/21/12 13:03:21 (13 years ago)
Author:
hendrikvanantwerpen
Message:
  • [Server] Added PUT support to API.
  • [Client] Extended questions page with Accordion and list with actions on each row.
Location:
Dev/branches/rest-dojo-ui/client/rft
Files:
3 edited
2 moved

Legend:

Unmodified
Added
Removed
  • Dev/branches/rest-dojo-ui/client/rft/pages/questions.html

    r274 r275  
    44    <div data-dojo-type="dijit.layout.AccordionContainer" data-dojo-props="doLayout: false" style="width: 100%; height: 100%;" data-rft-attach-point="accordion">
    55    </div>
    6     <div data-dojo-type="dijit.Dialog" title="Question" data-rft-attach-point="questionDialog" style="width: 400px; height: 300px;">
     6    <div data-dojo-type="dijit.Dialog" title="Question" data-rft-attach-point="questionDialog">
    77        <form data-dojo-type="dijit.form.Form" data-rft-attach-point="questionForm" data-rft-attach-event="onSubmit:onSaveQuestion">
    88            <fieldset>
  • Dev/branches/rest-dojo-ui/client/rft/pages/questions.js

    r274 r275  
    11define(['dojo/_base/declare','dojo/_base/lang','dojo/_base/array','dojo/_base/event',
    22    'dojo/_base/Deferred','dojo/store/JsonRest','dijit/layout/ContentPane',
    3     'rft/ui/_Page','rft/ui/QuestionWidget'],
    4     function(declare,lang,array,event,Deferred,JsonRest,ContentPane,_Page,QuestionWidget) {
     3    'rft/ui/_Page','rft/ui/LineWithActionsWidget'],
     4    function(declare,lang,array,event,Deferred,JsonRest,ContentPane,_Page,LineWithActionsWidget) {
    55        return declare('rft.pages.questions',[_Page],{
    66            constructor: function() {
     
    2626                if ( !categoryContainer ) {
    2727                    var ac = new ContentPane({
    28                         title:category
     28                        title:category,
     29                        doLayout: false
    2930                    });
    3031                    categoryContainer = this.containers[category] = {
     
    4041                var question = this.questions[uid];
    4142                if ( !question ) {
    42                     var qw = new QuestionWidget({
    43                         question: q
     43                    var qw = new LineWithActionsWidget({
     44                        title: q.title,
     45                        userObject: q,
     46                        actions: {
     47                            'Edit': lang.hitch(this,'_editQuestion')
     48                        }
    4449                    });
    4550                    qw.startup();
     
    4853                        widget: qw
    4954                    }
     55                } else {
     56                    // update info
     57                    question.question = q;
     58                    question.widget.title = q.title;
     59                    question.widget.userObject = q;
     60                    question.widget.refresh();
    5061                }
    5162                var container = this._getContainerForQuestion(q);
    5263                question.widget.placeAt(container.containerNode);
    53                 container.resize();
    5464            },
    5565            onNewQuestion: function() {
    5666                Deferred.when( this._store.add({}) )
    5767                .then(lang.hitch(this,function(question){
    58                     this.questionForm.reset();
    59                     this.questionForm.set('value',question);
    60                     this.questionDialog.show();
     68                    this._editQuestion(question);
    6169                }));
     70            },
     71            _editQuestion: function(question) {
     72                this.questionForm.reset();
     73                this.questionForm.set('value',question);
     74                this.questionDialog.show();
    6275            },
    6376            onSaveQuestion: function(evt) {
  • Dev/branches/rest-dojo-ui/client/rft/run.js

    r274 r275  
    1616    'rft/ui/MenuBarLink',
    1717    'rft/ui/MenuLink',
    18     'rft/ui/QuestionWidget',
     18    'rft/ui/LineWithActionsWidget',
    1919    'rft/pages/questions' // could this be done dynamically?
    2020]);
  • Dev/branches/rest-dojo-ui/client/rft/ui/LineWithActionsWidget.html

    r274 r275  
    11<div>
    2     <h2>Question</h2>
    3     <table>
    4         <tr><td>Code</td><td data-dojo-attach-point="codeField"></td></tr>
    5         <tr><td>Title</td><td data-dojo-attach-point="titleField"></td></tr>
    6         <tr><td>Description</td><td data-dojo-attach-point="descriptionField"></td></tr>
    7     </table>
     2    <span data-dojo-attach-point="actionBar"></span>
     3    <span data-dojo-attach-point="titleNode"></span>
    84</div>
  • Dev/branches/rest-dojo-ui/client/rft/ui/LineWithActionsWidget.js

    r274 r275  
    1 define(['dojo/_base/declare','dijit/_WidgetBase','dijit/_TemplatedMixin','dijit/_WidgetsInTemplateMixin','dojo/text!rft/ui/QuestionWidget.html'],
    2     function(declare,_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin,templateString){
    3         return declare('rft.ui.QuestionWidget',[_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin],{
     1define(['dojo/_base/declare','dojo/_base/lang','dijit/form/Button','dijit/_WidgetBase','dijit/_TemplatedMixin','dijit/_WidgetsInTemplateMixin','dojo/text!rft/ui/LineWithActionsWidget.html'],
     2    function(declare,lang,Button,_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin,templateString){
     3        return declare('rft.ui.LineWithActionsWidget',[_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin],{
    44            templateString: templateString,
    5             question: null,
     5            title: '',
     6            userObject: null,
     7            actions: {},
    68            startup: function() {
    7                 if ( this.question ) {
    8                     this.codeField.innerHTML = this.question.code;
    9                     this.titleField.innerHTML = this.question.title;
    10                     this.descriptionField.innerHTML = this.question.description;
     9                this.inherited(arguments);
     10                this._setupActions();
     11                this.refresh();
     12            },
     13            _setupActions: function() {
     14                for (var action in this.actions) {
     15                    new Button({
     16                        label: action,
     17                        onClick: lang.hitch(this,function(){
     18                            this.actions[action](this.userObject);
     19                        })
     20                    }).placeAt(this.actionBar);
    1121                }
     22            },
     23            refresh: function() {
     24                this.titleNode.innerHTML = this.title;
    1225            }
    1326        });
Note: See TracChangeset for help on using the changeset viewer.