Changeset 733


Ignore:
Timestamp:
Jul 27, 2010, 4:08:14 PM (6 years ago)
Author:
duh
Message:
  • resolved issue #153: sample page eventhandlers are bound in the wrong order
Location:
trunk
Files:
3 edited

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}
Note: See TracChangeset for help on using the changeset viewer.