Changeset 296


Ignore:
Timestamp:
Mar 22, 2010, 1:44:00 PM (13 years ago)
Author:
duh
Message:
  • refactored template field handeling in the wizard
  • added escapedName() method to TemplateField? which returns the field name in lowercase format, and all non-alphanumeric characters escaped to underscores (hence: jeroen_s_very_cool_field)
  • (re)moved some template 'note' boxes
Location:
trunk/grails-app
Files:
7 edited

Legend:

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

    r281 r296  
    461461                                        }
    462462
     463                                        // TODO: eventDescriptions that are not linked to an event are currently
     464                                        //               stored but end up in a black hole. We should either decide to
     465                                        //               NOT store these eventDescriptions, or add "hasmany eventDescriptions"
     466                                        //               to Study domain class
     467
    463468                                        // save events
    464469                                        flow.events.each() {
     
    579584
    580585                // update study instance with parameters
    581                 params.each() {key, value ->
     586                params.each() { key, value ->
    582587                        if (flow.study.hasProperty(key)) {
    583588                                flow.study.setProperty(key, value);
     589                        }
     590                }
     591
     592                // walk through template fields
     593                params.template.fields.each() { field ->
     594                        def value = params.get(field.escapedName())
     595
     596                        if (value) {
     597                                flow.study.setFieldValue(field.name, value)
    584598                        }
    585599                }
     
    698712                                // iterate through template fields
    699713                                templateFields.each() { subjectField ->
    700                                         def value = params.get('subject_' + subjectId + '_' + subjectField.name)
     714                                        def value = params.get('subject_' + subjectId + '_' + subjectField.escapedName())
    701715
    702716                                        if (value) {
  • trunk/grails-app/domain/dbnp/studycapturing/TemplateEntity.groovy

    r290 r296  
    6464                        case TemplateFieldType.ONTOLOGYTERM:
    6565                                return templateTermFields
    66                         default:
     66                    default:
    6767                                throw new NoSuchFieldException("Field type ${fieldType} not recognized")
    6868                }
     
    139139        }
    140140
    141 
    142 
    143141        def Set<TemplateField> giveFields() {
    144142                return this.template.fields;
     
    173171        }
    174172
     173        def validate() {
     174                return super.validate()
     175        }
    175176}
  • trunk/grails-app/domain/dbnp/studycapturing/TemplateField.groovy

    r290 r296  
    3131        }
    3232
     33
     34        /**
     35         * return an escaped name which can be used in business logic
     36         * @return String
     37         */
     38        def String escapedName() {
     39                return name.toLowerCase().replaceAll("([^a-zA-Z0-9])","_")
     40        }
     41
    3342        //TODO: make a convenience setter for a string array
    3443        /*def setListEntries(ArrayList entries) {
  • trunk/grails-app/taglib/dbnp/studycapturing/WizardTagLib.groovy

    r262 r296  
    593593                                case ['STRING', 'TEXT', 'INTEGER', 'FLOAT', 'DOUBLE']:
    594594                                        out << textField(
    595                                                 name: attrs.name + '_' + it.name,
     595                                                name: attrs.name + '_' + it.escapedName(),
    596596                                                value: fieldValue
    597597                                        )
     
    601601                                        if (!it.listEntries.isEmpty()) {
    602602                                                out << select(
    603                                                         name: attrs.name + '_' + it.name,
     603                                                        name: attrs.name + '_' + it.escapedName(),
    604604                                                        from: it.listEntries,
    605605                                                        value: fieldValue
     
    624624                                        // javascript front-end bind the jquery-ui datepicker)
    625625                                        out << textField(
    626                                                 name: attrs.name + '_' + it.name,
     626                                                name: attrs.name + '_' + it.escapedName(),
    627627                                                value: fieldValue,
    628628                                                rel: 'date'
     
    634634                                        //out << it.getClass()
    635635                                        out << textField(
    636                                                 name: attrs.name + '_' + it.name,
     636                                                name: attrs.name + '_' + it.escapedName(),
    637637                                                value: fieldValue,
    638638                                                rel: 'ontology-all-name',
     
    640640                                        )
    641641                                        out << hiddenField(
    642                                                 name: attrs.name + '_' + it.name + '-concept_id'
     642                                                name: attrs.name + '_' + it.escapedName() + '-concept_id'
    643643                                        )
    644644                                        out << hiddenField(
    645                                                 name: attrs.name + '_' + it.name + '-ontology_id'
     645                                                name: attrs.name + '_' + it.escapedName() + '-ontology_id'
    646646                                        )
    647647                                        out << hiddenField(
    648                                                 name: attrs.name + '_' + it.name + '-full_id'
     648                                                name: attrs.name + '_' + it.escapedName() + '-full_id'
    649649                                        )
    650650                                        break
     
    672672                        // render template fields
    673673                        template.fields.each() {
     674                                def fieldValue = entity.getFieldValue(it.name)
     675
    674676                                switch (it.type.toString()) {
    675677                                        case ['STRING', 'TEXT', 'INTEGER', 'FLOAT', 'DOUBLE']:
    676678                                                out << textFieldElement(
    677679                                                        description: it.name,
    678                                                         name: it.name
     680                                                        name: it.escapedName(),
     681                                                        value: fieldValue
    679682                                                )
    680683                                                break
     
    683686                                                        out << selectElement(
    684687                                                                description: it.name,
    685                                                                 name: it.name,
     688                                                                name: it.escapedName(),
    686689                                                                from: it.listEntries,
    687                                                                 value: attrs
     690                                                                value: fieldValue
    688691                                                        )
    689692                                                } else {
     
    695698                                                // @see ontology-chooser.js
    696699                                                out << textFieldElement(
    697                                                         name: it.name,
     700                                                        name: it.escapedName(),
    698701                                                        value: fieldValue,
    699702                                                        rel: 'ontology-all-name',
     
    701704                                                )
    702705                                                out << hiddenField(
    703                                                         name: it.name + '-concept_id'
     706                                                        name: it.name + '-concept_id',
     707                                                        value: fieldValue
    704708                                                )
    705709                                                out << hiddenField(
    706                                                         name: it.name + '-ontology_id'
     710                                                        name: it.escapedName() + '-ontology_id',
     711                                                        value: fieldValue
    707712                                                )
    708713                                                out << hiddenField(
    709                                                         name: it.name + '-full_id'
     714                                                        name: it.escapedName() + '-full_id',
     715                                                        value: fieldValue
    710716                                                )
    711717                                                break
     
    713719                                                out << dateElement(
    714720                                                        description: it.name,
    715                                                         name: it.name
     721                                                        name: it.escapedName(),
     722                                                        value: fieldValue
    716723                                                )
    717724                                                break
  • trunk/grails-app/views/wizard/pages/_eventDescriptions.gsp

    r275 r296  
    6161</g:if>
    6262
    63         <span class="info">
    64                 <span class="known">Known issues</span>
    65                 <ul>
    66                         <li>no protocol selection available yet</li>
    67                 </ul>
    68         </span>
     63
     64<span class="info">
     65        <span class="todo">TODO</span>
     66        <ul>
     67                <li>parameter values should still be asked and implemented</li>
     68        </ul>
     69</span>
     70
     71<span class="info">
     72        <span class="known">Known issues</span>
     73        <ul>
     74                <li>no protocol selection available yet</li>
     75        </ul>
     76</span>
     77
    6978</wizard:pageContent>
  • trunk/grails-app/views/wizard/pages/_events.gsp

    r275 r296  
    8282        </div>
    8383</g:if>
    84 
    85 <span class="info">
    86         <span class="todo">TODO</span>
    87         <ul>
    88                 <li>parameter values should still be asked and implemented</li>
    89         </ul>
    90 </span>
    9184       
    9285</wizard:pageContent>
  • trunk/grails-app/views/wizard/pages/_study.gsp

    r262 r296  
    4343                The start date of the study
    4444        </wizard:dateElement>
    45 
    46         <span class="info">
    47                 <span class="todo">TODO</span>
    48                 Below you will see the template fields of the study template selected above. These fields are not yet
    49                 properly handled so you can ignore them for now... To be completed at a later stage
    50         </span>
    51        
    5245        <wizard:templateElements entity="${study}" />
    5346
     
    5649                <ul>
    5750                        <li>the templated fields appear in random order</li>
    58                         <li>the templated fields are not yet handled / stored</li>
    5951                </ul>
    6052        </span>
Note: See TracChangeset for help on using the changeset viewer.