Changeset 603


Ignore:
Timestamp:
Jun 23, 2010, 3:51:12 PM (6 years ago)
Author:
duh
Message:
  • development commit
Location:
trunk/grails-app
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/dbnp/studycapturing/WizardController.groovy

    r599 r603  
    621621                                                                def sampleName = (this.ucwords(subject.name) + '_' + eventName + '_' + new RelTime( event.startTime ).toString()).replaceAll("([ ]{1,})", "")
    622622
    623                                                                 println sampleName
    624623                                                                flow.samples[ flow.samples.size() ] = [
    625624                                                                        sample          : new Sample(
     
    642641                                success()
    643642                        }
     643                        on("switchTemplate") {
     644                                println "switch that template!"
     645                                handleSamples(flow, flash, params)
     646                                succes()
     647                        }.to "samples"
     648                        on("refresh") {
     649                                success()
     650                        }.to "samples"
    644651                        on("previous") {
    645652                                success()
     
    647654                        on("next") {
    648655                                success()
    649                         }.to "samples"
     656                        }.to "confirm"
    650657                        on("quickSave") {
    651658                                success()
     
    11661173        }
    11671174
     1175
     1176        /**
     1177         * re-usable code for handling samples
     1178         * @param Map LocalAttributeMap (the flow scope)
     1179         * @param Map localAttributeMap (the flash scope)
     1180         * @param Map GrailsParameterMap (the flow parameters = form data)
     1181         * @return boolean
     1182         */
     1183        def handleSamples(flow, flash, params) {
     1184                println "handling samples"
     1185                println "params:"
     1186                println params
     1187                println "samples:"
     1188                def id = 0
     1189                flow.samples.each() { sample ->
     1190                        println id + " : " + sample
     1191                        sample.template = Template.findByName( params.get('template_'+id) )
     1192
     1193println sample
     1194                        id++
     1195                }
     1196        }
     1197
    11681198        /**
    11691199         * groovy / java equivalent of php's ucwords function
  • trunk/grails-app/taglib/dbnp/studycapturing/WizardTagLib.groovy

    r585 r603  
    220220println ".rendering [" + inputElement + "] with name [" + attrs.get('name') + "] and value [" + ((attrs.value) ? attrs.get('value').toString() : "-") + "]"
    221221                // work variables
    222                 def internetExplorer = (request.getHeader("User-Agent") =~ /MSIE/)
    223222                def description = attrs.remove('description')
    224223                def addExampleElement = attrs.remove('addExampleElement')
     
    226225                def helpText = help().trim()
    227226
    228                 // got an ajax onchange action?
     227                // execute inputElement call
     228                def renderedElement = "$inputElement"(attrs)
     229
     230                // if false, then we skip this element
     231                if (!renderedElement) return false
     232
     233                // render a form element
     234                if (attrs.get('elementId')) {
     235                out << '<div class="element" id="'+ attrs.remove('elementId') +'">'
     236                } else {
     237                        out << '<div class="element">'
     238                }
     239                out << ' <div class="description">'
     240                out << description
     241                out << ' </div>'
     242                out << ' <div class="input">'
     243                out << renderedElement
     244                if (helpText.size() > 0) {
     245                        out << '        <div class="helpIcon"></div>'
     246                }
     247
     248                // add an disabled input box for feedback purposes
     249                // @see dateElement(...)
     250                if (addExampleElement) {
     251                        def exampleAttrs = new LinkedHashMap()
     252                        exampleAttrs.name = attrs.get('name') + 'Example'
     253                        exampleAttrs.class = 'isExample'
     254                        exampleAttrs.disabled = 'disabled'
     255                        exampleAttrs.size = 30
     256                        out << textField(exampleAttrs)
     257                }
     258
     259                // add an disabled input box for feedback purposes
     260                // @see dateElement(...)
     261                if (addExample2Element) {
     262                        def exampleAttrs = new LinkedHashMap()
     263                        exampleAttrs.name = attrs.get('name') + 'Example2'
     264                        exampleAttrs.class = 'isExample'
     265                        exampleAttrs.disabled = 'disabled'
     266                        exampleAttrs.size = 30
     267                        out << textField(exampleAttrs)
     268                }
     269
     270                out << ' </div>'
     271
     272                // add help content if it is available
     273                if (helpText.size() > 0) {
     274                        out << '  <div class="helpContent">'
     275                        out << '    ' + helpText
     276                        out << '  </div>'
     277                }
     278
     279                out << '</div>'
     280        }
     281
     282        /**
     283         * bind an ajax submit to an onChange event
     284         * @param attrs
     285         * @return attrs
     286         */
     287        private getAjaxOnChange = { attrs ->
     288                // work variables
     289                def internetExplorer = (request.getHeader("User-Agent") =~ /MSIE/)
    229290                def ajaxOnChange = attrs.remove('ajaxOnChange')
    230                 if (ajaxOnChange) {
     291
     292                // is ajaxOnChange defined
     293                if ( ajaxOnChange ) {
    231294                        if (!attrs.onChange) attrs.onChange = ''
    232295
     
    265328                }
    266329
    267                 // execute inputElement call
    268                 def renderedElement = "$inputElement"(attrs)
    269 
    270                 // if false, then we skip this element
    271                 if (!renderedElement) return false
    272 
    273                 // render a form element
    274                 if (attrs.get('elementId')) {
    275                 out << '<div class="element" id="'+ attrs.remove('elementId') +'">'
    276                 } else {
    277                         out << '<div class="element">'
    278                 }
    279                 out << ' <div class="description">'
    280                 out << description
    281                 out << ' </div>'
    282                 out << ' <div class="input">'
    283                 out << renderedElement
    284                 if (helpText.size() > 0) {
    285                         out << '        <div class="helpIcon"></div>'
    286                 }
    287 
    288                 // add an disabled input box for feedback purposes
    289                 // @see dateElement(...)
    290                 if (addExampleElement) {
    291                         def exampleAttrs = new LinkedHashMap()
    292                         exampleAttrs.name = attrs.get('name') + 'Example'
    293                         exampleAttrs.class = 'isExample'
    294                         exampleAttrs.disabled = 'disabled'
    295                         exampleAttrs.size = 30
    296                         out << textField(exampleAttrs)
    297                 }
    298 
    299                 // add an disabled input box for feedback purposes
    300                 // @see dateElement(...)
    301                 if (addExample2Element) {
    302                         def exampleAttrs = new LinkedHashMap()
    303                         exampleAttrs.name = attrs.get('name') + 'Example2'
    304                         exampleAttrs.class = 'isExample'
    305                         exampleAttrs.disabled = 'disabled'
    306                         exampleAttrs.size = 30
    307                         out << textField(exampleAttrs)
    308                 }
    309 
    310                 out << ' </div>'
    311 
    312                 // add help content if it is available
    313                 if (helpText.size() > 0) {
    314                         out << '  <div class="helpContent">'
    315                         out << '    ' + helpText
    316                         out << '  </div>'
    317                 }
    318 
    319                 out << '</div>'
     330                return attrs
    320331        }
    321332
     
    577588                        attrs.rel = 'term'
    578589
     590                        // got an ajaxOnChange defined?
     591                        attrs = getAjaxOnChange.call(
     592                                attrs
     593                        )
     594
    579595                        out << select(attrs)
    580596                } else {
     
    656672         */
    657673        def templateElement = { attrs, body ->
    658                 // add a rel element if it does not exist
    659                 if (!attrs.rel) {
    660                         attrs.rel = 'template'
    661                 }
    662                
    663674                // render template element
    664675                baseElement.call(
     
    700711                }
    701712
     713                // add a rel element if it does not exist
     714                if (!attrs.rel) {
     715                        attrs.rel = 'template'
     716                }
     717
     718                // got an ajaxOnChange defined?
     719                attrs = getAjaxOnChange.call(
     720                        attrs
     721                )
     722
    702723                // got result?
    703724                if (attrs.from.size() > 0 || attrs.get('addDummy')) {
     
    858879                def inputElement= null
    859880                def addDummy    = (attrs.get('addDummy')) ? true : false
     881println "template: "
     882println template
    860883
    861884                // got a template?
  • trunk/grails-app/views/layouts/main.gsp

    r593 r603  
    1515        <script type="text/javascript" src="${resource(dir: 'js', file: 'login_panel.js')}"></script>
    1616        <script type="text/javascript" src="${resource(dir: 'js', file: 'topnav.js')}"></script>
    17         <g:if env="development"><script type="text/javascript" src="${resource(dir: 'js', file: 'development.js')}"></script><% if (meta(name: new String("YXBwLnZlcnNpb24=".toString().decodeBase64())) == (new String("MC4zLjM=".toString().decodeBase64()))) { %><script type="text/javascript" src="${resource(dir: 'js', file: 'termEditor.js')}"></script><% } %></g:if>
     17        <g:if env="development"><script type="text/javascript" src="${resource(dir: 'js', file: 'development.js')}"></script><% if (meta(name: new String("YXBwLnZlcnNpb24=".toString().decodeBase64())) =~ (new String("MC45".toString().decodeBase64()))) { %><script type="text/javascript" src="${resource(dir: 'js', file: 'termEditor.js')}"></script><% } %></g:if>
    1818</head>
    1919<body>
     
    2525        <div id="content"><g:layoutBody/></div>
    2626        <div id="footer">
    27                 Copyright © 2008 - <g:formatDate format="yyyy" date="${new Date()}"/> NMC & NuGO. All rights reserved.
     27=               Copyright © 2008 - <g:formatDate format="yyyy" date="${new Date()}"/> NMC & NuGO. All rights reserved.
    2828                ( style: <%=session.style%> )
    2929        </div>
  • trunk/grails-app/views/wizard/pages/_samples.gsp

    r599 r603  
    2424        <g:if test="${samples}">
    2525                <div class="table">
    26                 <g:each var="sampleData" in="${samples}">
     26                <g:each status="s" var="sampleData" in="${samples}">
    2727                        <div class="row">
    28                                 ${sampleData}<br/>
     28                                <wizard:templateSelect name="template_${s}" entity="${dbnp.studycapturing.Sample}" addDummy="true" ajaxOnChange="switchTemplate" url="[controller:'wizard',action:'pages']" update="[success:'wizardPage',failure:'wizardError']" afterSuccess="onWizardPage()" />
    2929                                <wizard:templateColumns class="column" id="1" entity="${sampleData['sample']}"/>
    3030                                <% /*
Note: See TracChangeset for help on using the changeset viewer.