Changeset 500


Ignore:
Timestamp:
03/10/14 16:07:00 (11 years ago)
Author:
hendrikvanantwerpen
Message:
  • Indicate of refresh is due to load or due to save in _ObjectPage.
  • _ComplexValueMixin & ListWidget? catch all change events and drops them if still being created.
Location:
Dev/trunk/src/client/qed-client
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • Dev/trunk/src/client/qed-client/model/widgets/QuestionEditorPreviewItem.js

    r443 r500  
    11define([
     2    "../../widgets/_ComplexValueWidget",
    23    "./questions/Factory",
    34    "dijit/_Container",
     
    1415    "dojo/on",
    1516    "dojo/text!./templates/QuestionEditorPreviewItem.html"
    16 ], function(QuestionWidgetFactory, _Container, _TemplatedMixin, _WidgetBase, _WidgetsInTemplateMixin, declare, event, fx, lang, domClass, domGeom, domStyle, on, template) {
    17     return declare([_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin, _Container], {
     17], function(_ComplexValueWidget, QuestionWidgetFactory, _Container, _TemplatedMixin, _WidgetBase, _WidgetsInTemplateMixin, declare, event, fx, lang, domClass, domGeom, domStyle, on, template) {
     18    return declare([_ComplexValueWidget], {
    1819        templateString: template,
    1920        baseClass: "qedQuestionEditorPreviewItem",
     
    8788                this._destroyInnerWidget();
    8889                this.innerWidget = newWidget;
    89                 this.innerWidget.placeAt(this.containerNode);
    90                 this.innerWidget.startup();
     90                this.addChild(this.innerWidget);
    9191                this.innerWidget.set('readOnly',true);
    9292                this.titleNode.innerHTML = this.value.type+" [preview]";
     
    101101                this._destroyInnerWidget();
    102102                this.innerWidget = newWidget;
    103                 this.innerWidget.placeAt(this.containerNode);
    104                 this.innerWidget.startup();
     103                this.addChild(this.innerWidget);
    105104                this.titleNode.innerHTML = this.value.type+" [editing]";
    106105                domClass.replace(this.editButton.iconNode, "rftIconAccept", "rftIconEdit");
     
    111110        _destroyInnerWidget: function() {
    112111            if ( this.innerWidget !== null ) {
     112                this.removeChild(this.innerWidget);
    113113                this.innerWidget.destroyRecursive();
     114                this.innerWidget = null;
    114115            }
    115116        },
  • Dev/trunk/src/client/qed-client/model/widgets/questions/MultipleChoiceInputWidget.js

    r495 r500  
    3232        _getValueAttr: function() {
    3333            var value = this.inherited(arguments);
    34             if ( this.allowMultiple === true ) {
     34            /*if ( this.allowMultiple === true ) {
    3535                return value;
    3636            } else {
    37                 return value.choice.length > 0;
    38             }
     37                return value.choice; //.length > 0;
     38            }*/
    3939        },
    4040        _setValueAttr: function(value) {
  • Dev/trunk/src/client/qed-client/model/widgets/templates/QuestionEditorPreviewItem.html

    r443 r500  
    1 <div>
     1<form>
    22        <div class="topBorder inheritBgColor bg dojoDndHandle">
    33                <span class="title" data-dojo-attach-point="titleNode">Default title</span>
     
    1313                </div>
    1414        </div>
    15 </div>
     15</form>
  • Dev/trunk/src/client/qed-client/pages/_ObjectPage.js

    r492 r500  
    2222        _load: function() {
    2323            if ( this.object ) {
    24                 this._refresh();
     24                this._refresh(true);
    2525            } else if ( this.objectId ) {
    2626                if ( this.objectId === "new" ) {
    2727                    this.object = this.classStore.create();
    28                     this._refresh();
     28                    this.markDirty();
     29                    this._refresh(true);
    2930                } else {
    3031                    this.classStore.load(this.objectId)
    31                     .then(lang.hitch(this,'_setObject'),
    32                           lang.hitch(this,function(err){
    33                                 this.die(err.error);
    34                             }));
     32                    .then(lang.hitch(this,function(object){
     33                        this._setObject(object,true);
     34                    }),lang.hitch(this,function(err){
     35                        this.die(err.error);
     36                    }));
    3537                }
    3638            } else {
    37                 this.die("No valid uid or object passed!");
     39                this.die("No valid id or object passed!");
    3840            }
    3941        },
    40         _setObject: function(object) {
     42        _setObject: function(object,initial) {
    4143            this.object = object;
    4244            if ( this.objectId === "new" ) {
    4345                this.go(this.classStore.getObjectPath(this.object),{},true);
    4446            }
    45             this._refresh();
     47            this.markClean();
     48            this._refresh(initial);
    4649        },
    47         _refresh: function() {},
     50        _refresh: function(initial) {},
    4851        _save: function() {
    4952            return this.classStore.save(this.object)
    5053            .then(lang.hitch(this,function(object){
    51                 this.markClean();
    5254                this._setObject(object);
    5355                this.notify(this.classStore.getName()+" successfully saved.");
  • Dev/trunk/src/client/qed-client/pages/question.js

    r498 r500  
    2323            this._load();
    2424        },
    25         _refresh: function() {
    26             this.propertiesForm.set('value',this.object,null);
    27             this.contentList.set('value',this.object.content,null);
    28             this._internalRefresh();
    29         },
    30         _internalRefresh: function(){
     25        _refresh: function(initial) {
     26            if ( initial === true ) {
     27                this.propertiesForm.set('value',this.object,null);
     28                this.contentList.set('value',this.object.content,null);
     29            }
    3130            this.titleNode.innerHTML = this.object.title || "";
    3231        },
     
    3433            this._updateObject();
    3534            this.markDirty();
    36             this._internalRefresh();
     35            this._refresh();
    3736        },
    3837        _handleContentChange: function() {
    3938            this._updateObject();
    4039            this.markDirty();
    41             this._internalRefresh();
     40            this._refresh();
    4241        },
    4342        _updateObject: function() {
  • Dev/trunk/src/client/qed-client/pages/survey.js

    r498 r500  
    6161            this.questionList.startup();
    6262        },
    63         _refresh: function() {
    64             this.propertiesForm.set('value',{survey:this.object},null);
    65             this.questionList.set('value',this.object.questions,null);
    66             this._internalRefresh();
    67         },
    68         _internalRefresh: function() {
     63        _refresh: function(initial) {
     64            if ( initial === true ) {
     65                this.propertiesForm.set('value',{survey:this.object},null);
     66                this.questionList.set('value',this.object.questions,null);
     67            }
    6968            this.titleNode.innerHTML = this.object.title || "(set title in properties)";
    7069        },
     
    7574            this.object.questions = this.questionList.get('value');
    7675            this.markDirty();
    77             this._internalRefresh();
     76            this._refresh();
    7877        },
    7978        _onShowProperties: function(evt) {
     
    8685            lang.mixin(this.object, this.propertiesForm.get('value').survey);
    8786            this.markDirty();
    88             this._internalRefresh();
     87            this._refresh();
    8988            if ( evt ) { event.stop(evt); }
    9089            return false;
  • Dev/trunk/src/client/qed-client/pages/surveyRun.js

    r498 r500  
    2929            this._load();
    3030        },
    31         _refresh: function() {
    32             this.surveySummaryWidget.set('value',this.object.survey,null);
    33             this.surveyRunWidget.set('value',this.object,null);
    34             this._internalRefresh();
    35             this._loadResponses();
    36         },
    37         _internalRefresh: function() {
     31        _refresh: function(initial) {
     32            if ( initial === true ) {
     33                this.surveySummaryWidget.set('value',this.object.survey,null);
     34                this.surveyRunWidget.set('value',this.object,null);
     35                this._loadResponses();
     36            }
    3837            this.titleNode.innerHTML = this.object.title || "";
    3938            if ( this.object.mode === "open" ) {
     
    7776            this._updateObject();
    7877            this.markDirty();
    79             this._internalRefresh();
     78            this._refresh();
    8079        },
    8180        _buildGeneralURL: function(surveyRun) {
  • Dev/trunk/src/client/qed-client/widgets/ListWidget.js

    r494 r500  
    1414        name: "",
    1515        value: null,
     16        disabled: false,
     17        readOnly: false,
    1618        multiple: true,
    1719        type: "text",
     
    2022         */
    2123        container: Source,
     24        _onChangeActive: false,
    2225        buildRendering: function() {
    2326            this.inherited(arguments);
     
    5053            });
    5154            this.source = new this.container(this.domNode,sourceParams);
    52             this.own(this.source.on('Drop',lang.hitch(this,'_handleChange')));
     55            this.own(this.source.on('Drop',
     56                                    lang.hitch(this,'_handleDrop')));
     57            this.own(on(this.domNode,'change',
     58                        lang.hitch(this,'_handleChange')));
    5359        },
    5460        creator: function(item, hint) {
     
    9298            return this.value;
    9399        },
    94         _setValueAttr: function(value) {
     100        _setValueAttr: function(value,priorityChange) {
    95101            this.clear();
    96102            this.appendItems(value || []);
     
    158164            this.inherited(arguments);
    159165        },
    160         _handleChange: function() {
    161             this.value = this._getValueAttr();
    162             this.onChange(this.value);
     166        _handleChange: function(evt) {
     167            if ( evt.target !== this.domNode ) {
     168                if ( this._onChangeActive && !(this.readOnly || this.disabled) ) {
     169                    this.emit('change',this.get('value'));
     170                }
     171                if ( evt ) { event.stop(evt); }
     172                return false;
     173            }
     174            return true;
    163175        },
    164         onChange: function(value) {}
     176        _handleDrop: function() {
     177            if ( this._onChangeActive && !(this.readOnly || this.disabled) ) {
     178                this.emit('change',this.get('value'));
     179            }
     180        }
    165181    });
    166182});
  • Dev/trunk/src/client/qed-client/widgets/_ComplexValueMixin.js

    r493 r500  
    1111    return declare([_Container, _FormMixin], {
    1212        name: "",
     13        value: null,
    1314        disabled: false,
    1415        readOnly: false,
    15         _changeActive: false,
     16        _onChangeActive: false,
     17        constructor: function() {
     18            this._listenerMap = {};
     19        },
     20        buildRendering: function() {
     21            // capture child change events
     22            this.inherited(arguments);
     23            this.own(on(this.domNode,'change',
     24                        lang.hitch(this,'_handleChange')));
     25        },
     26        create: function() {
     27            this.inherited(arguments);
     28            this._onChangeActive = true;
     29        },
    1630        postCreate: function() {
    1731            this.inherited(arguments);
     
    2438            if (this._started) { return; }
    2539            this.inherited(arguments);
    26             this._connectChildren();
    27             this._changeActive = true;
    28         },
    29         _connectChildren: function() {
    30             var children = this._getDescendantFormWidgets();
    31             array.forEach(children, lang.hitch(this,function(child) {
    32                 this.own(child.on('change',lang.hitch(this,'_handleChange')));
    33             }));
    3440        },
    3541        _setDisabledAttr: function(value) {
     
    4147        // Yuk, this function is taken directly from _FromMixin only
    4248        // to add the priorityChange parameter
     49        _getValueAttr: function() {
     50            this.value = this.inherited(arguments);
     51            return this.value;
     52        },
    4353                _setValueAttr: function(obj, priorityChange) {
     54            this.value = obj;
     55
    4456                        var map = { };
    4557                        array.forEach(this._getDescendantFormWidgets(), function(widget){
     
    8496            }
    8597        },
    86         _handleChange: function() {
    87             if ( this._changeActive ) {
    88                 this.onChange(this.get('value'));
     98        _handleChange: function(evt) {
     99            if ( evt.target !== this.domNode ) {
     100                if ( this._onChangeActive && !(this.readOnly || this.disabled) ) {
     101                    this.emit('change',this.get('value'));
     102                }
     103                if ( evt ) { event.stop(evt); }
     104                return false;
    89105            }
     106            return true;
    90107        },
    91         onChange: function(){},
    92108        _handleSubmit: function(evt) {
    93109            var node = this.domNode;
Note: See TracChangeset for help on using the changeset viewer.