Changeset 296

Show
Ignore:
Timestamp:
22-03-10 13:44:00 (4 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 modified

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>