Changeset 733

Show
Ignore:
Timestamp:
27-07-10 16:08:14 (4 years ago)
Author:
duh
Message:

- resolved issue #153: sample page eventhandlers are bound in the wrong order

Location:
trunk
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/taglib/dbnp/studycapturing/WizardTagLib.groovy

    r629 r733  
    140140                                "\$('" + attrs.get('form') + "')" 
    141141                        ) 
     142                } 
     143 
     144                // change 'this' if a this attribute is preset 
     145                if (attrs.get('this')) { 
     146                        button = button.replace('this', attrs.get('this')) 
    142147                } 
    143148 
  • trunk/grails-app/views/wizard/pages/_samples.gsp

    r694 r733  
    2929        </span> 
    3030 
     31        <script type="text/javascript"> 
     32                function switchTemplate( element ) { 
     33                        <wizard:ajaxSubmitJs functionName="switchTemplate" this="element" url="[controller:'wizard',action:'pages']" update="[success:'wizardPage',failure:'wizardError']" afterSuccess="onWizardPage()"/> 
     34                } 
     35        </script> 
     36 
    3137        <g:if test="${samples}"> 
    3238                <g:if test="${samples.size() > samplesWithTemplate}"> 
     
    4652                                                <div class="firstColumn">${s+1}</div> 
    4753                                                <div class="column"> 
    48                                                         <wizard:templateSelect name="template_${s}" entity="${dbnp.studycapturing.Sample}" value="${sampleData['sample'].template}" addDummy="true" ajaxOnChange="switchTemplate" url="[controller:'wizard',action:'pages']" update="[success:'wizardPage',failure:'wizardError']" afterSuccess="onWizardPage()" /> 
     54                                                        <wizard:templateSelect name="template_${s}" entity="${dbnp.studycapturing.Sample}" value="${sampleData['sample'].template}" addDummy="true" tableEditorChangeEvent="switchTemplate(element);" /> 
    4955                                                </div> 
    5056                                                <wizard:templateColumns name="sample_${s}" class="column" id="1" entity="${sampleData.sample}"/> 
     
    7581                                                <div class="firstColumn">${s+1}</div> 
    7682                                                <div class="column"> 
    77                                                         <wizard:templateSelect name="template_${s}" entity="${dbnp.studycapturing.Sample}" value="${sampleData['sample'].template}" addDummy="true" ajaxOnChange="switchTemplate" url="[controller:'wizard',action:'pages']" update="[success:'wizardPage',failure:'wizardError']" afterSuccess="onWizardPage()" /> 
     83                                                        <wizard:templateSelect name="template_${s}" entity="${dbnp.studycapturing.Sample}" value="${sampleData['sample'].template}" addDummy="true" tableEditorChangeEvent="switchTemplate(element);" /> 
    7884                                                </div> 
    7985                                                <wizard:templateColumns name="sample_${s}" class="column" id="1" entity="${sampleData.sample}"/> 
  • trunk/web-app/js/table-editor.js

    r460 r733  
    9797            // does this column contain an input field 
    9898            if (input && type) { 
     99                // check field type 
    99100                switch (type) { 
    100101                    case 'text': 
     
    123124                        inputElement.bind('change.tableEditor', function() { 
    124125                            that.updateSingleInputElements(input, columnNumber, 'select'); 
     126 
     127                            // probably we want to bind these extra event handlers 
     128                            // separately, but for now this will suffice :) 
     129                            that.handleExtraEvents( inputElement ); 
    125130                        }); 
    126131                        break; 
     
    211216                break; 
    212217        } 
     218    }, 
     219 
     220    /** 
     221     * execute extra functions when binding to a particular event. The extra change 
     222     * handlers are called after replicating template fields 
     223     * example: <select ... tableEditorChangeEvent="console.log(element);" ... /> 
     224     * @param element 
     225     */ 
     226    handleExtraEvents: function( element ) { 
     227        // define parameters 
     228        var events = ['change']; 
     229 
     230        // check if we need to execute some more event handlers 
     231        for ( var i=0; i < events.length; i++ ) { 
     232            var call = element.attr('tableEditor' + events[ i ].substr(0, 1).toUpperCase() + events[ i ].substr(1).toLowerCase() + 'Event'); 
     233            if ( call ) { 
     234                // yes, execute! 
     235                eval( call ); 
     236            } 
     237        } 
    213238    } 
    214239}