Changeset 1879 for trunk


Ignore:
Timestamp:
2011-04-05 22:18:43 (14 months ago)
Author:
mpo
Message:

fixes #451, thx to Ives for spotting and providing the test.
In stead of delegating a show() to the selected case child we now opt for resetting its 'showstate' based on the initial settings of the control.
This allows passing the test, and is IMHO preferable to keeping track off the last state of that child.

Location:
trunk/modules/kauri-forms/kauri-forms-framework/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/modules/kauri-forms/kauri-forms-framework/src/main/kauri/static-{build}.key/kauri.forms/case.js

    r1875 r1879  
    258258            if (valueControl) { 
    259259                me.putChild("value", valueControl); 
    260                 valueControl.show(); 
     260                valueControl.resetShowState(); // don't just show, restore initial view state 
    261261            }else{ 
    262262                if(me.nullable) 
     
    295295        for (i in me._valueControls) { 
    296296          if (me._valueControls[i] === me.getChild("value")) { 
    297             me._valueControls[i].show(); 
     297            me._valueControls[i].resetShowState(); // do not just make visible, but apply initial view state 
    298298          } else { 
    299299            me._valueControls[i].hide(); 
     
    324324            cfn("value", this.getChild("value")); 
    325325        } 
     326         
     327        this.getChild("value").resetShowState(); 
    326328    } 
    327329     
  • trunk/modules/kauri-forms/kauri-forms-framework/src/main/kauri/static-{build}.key/kauri.forms/control.js

    r1873 r1879  
    14561456        me.updateValidationClasses(); 
    14571457         
     1458        me.resetShowState();         
     1459    } 
     1460     
     1461    Control.prototype.resetShowState = function() { 
     1462        Control.resetShowState(this); 
     1463    } 
     1464 
     1465    Control.resetShowState = function(me) { 
    14581466        if (me.isEnabled()) { 
    14591467            me.enable(); 
     
    14621470        } 
    14631471         
    1464         if(me.initial.show != undefined) { 
    1465             if (me.initial.show) { 
    1466                 me.show(); 
    1467             } else { 
    1468                 me.hide(); 
    1469             } 
    1470         } 
    1471          
    1472     } 
    1473      
     1472        if (!!me.initial.show) { 
     1473            me.show(); 
     1474        } else { 
     1475            me.hide(); 
     1476        } 
     1477    } 
     1478 
    14741479    /** 
    14751480    * closes a control 
     
    23032308         AbstractContainerControl.reset(this); 
    23042309    }; 
     2310     
    23052311    AbstractContainerControl.reset = function(me){ 
    23062312        if (me.initial.value == undefined) { 
     
    23122318        } 
    23132319    }; 
     2320     
    23142321    AbstractContainerControl.childReset = function(i, child) { 
    23152322        child.reset(); 
     2323    }; 
     2324 
     2325    AbstractContainerControl.prototype.resetShowState = function() { 
     2326        Control.resetShowState(this); 
     2327        this.eachChild(AbstractContainerControl.childResetShowState); 
     2328    }; 
     2329     
     2330    AbstractContainerControl.childResetShowState = function (i, child) { 
     2331        child.resetShowState(); 
    23162332    }; 
    23172333 
  • trunk/modules/kauri-forms/kauri-forms-framework/src/test/kauri.forms/test-case.js

    r1876 r1879  
    8888    caseTest(true); // split html 
    8989}); 
     90 
     91test("visibility of composite case members (see #451)", function() { 
     92 
     93  // create 
     94  var $main = $('#main').show(); 
     95 
     96  var $form = $('<form></form>').appendTo($main); 
     97  var fconf = { 
     98 
     99      members : { 
     100          'c' : { 
     101            base: 'case', 
     102            "+validators": { "required": {} }, 
     103            "control": { 
     104                "base": "case-control", 
     105                "nullable": false, 
     106                "initial":{"value": {"case":"t"}} 
     107            }, 
     108            "cases": { 
     109                "t" : { 
     110                    "base": "composite", 
     111                    "members": { 
     112                      "member1": { 
     113                        "base": "string", 
     114                        "label": "Text", 
     115                        "control": { 
     116                            "base": "input-control", 
     117                            "initial": { 
     118                              "value": "Enter text", 
     119                              "enable": false 
     120                            } 
     121                        } 
     122                      }, 
     123                      "member2": { 
     124                        "base": "string", 
     125                        "label": "Text", 
     126                        "control": { 
     127                            "base": "input-control", 
     128                            "initial": { 
     129                              "value": "Enter text", 
     130                              "show": false 
     131                            } 
     132                        } 
     133                      } 
     134                    } 
     135                }, 
     136                "n" : { 
     137                    "base": "string" 
     138                } 
     139            } 
     140          }    
     141      } 
     142  }; 
     143 
     144  var form = new $.org.kauriproject.forms.Form($form, fconf); 
     145   
     146   
     147  var caset = form.findControl('/c/case-t'); 
     148  var $caset = caset.getElement(); 
     149   
     150  var member1 = form.findControl('/c/case-t/member1'); 
     151  var $member1 = member1.getElement(); 
     152   
     153  var member2 = form.findControl('/c/case-t/member2'); 
     154  var $member2 = member2.getElement(); 
     155   
     156  expect(3); 
     157   
     158  ok(!$caset.is(':hidden'), "checking that default case is visible."); 
     159  ok($member1.is(':disabled'), "checking that first member is disabled."); 
     160  ok($member2.is(':hidden'), "checking that second member is hidden."); 
     161   
     162  // cleanup 
     163  $main.html("").hide(); 
     164      
     165}); 
Note: See TracChangeset for help on using the changeset viewer.