Ignore:
Timestamp:
Feb 9, 2010, 3:22:46 PM (10 years ago)
Author:
duh
Message:
  • wizard subject page now mainains state and stores form data in flow scope
File:
1 edited

Legend:

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

    r178 r180  
    9494                                        // validation failed, feedback errors
    9595                                        flash.errors = new LinkedHashMap()
    96                                         this.appendErrors(flow.study,flash.errors)
     96                                        this.appendErrors(flow.study, flash.errors)
    9797                                        error()
    9898                                }
     
    110110                                }
    111111                        }
    112                         on ("add") {
     112                        on("add") {
    113113                                // fetch species by name (as posted by the form)
    114114                                def speciesTerm = Term.findByName(params.addSpecies)
    115                                
     115
    116116                                // add x subject of species y
    117117                                (params.addNumber as int).times {
    118118                                        def increment = flow.subjects.size()
    119                                         flow.subjects[ increment ] = new Subject(
    120                                                 name: 'Subject ' + (increment+1),
    121                                                 species: speciesTerm
     119                                        flow.subjects[increment] = new Subject(
     120                                                name: 'Subject ' + (increment + 1),
     121                                                species: speciesTerm,
     122                                                template: flow.study.template
    122123                                        )
    123124                                }
    124125                        }.to "subjects"
    125126                        on("next") {
     127                                def errors = false
     128                                flash.errors = new LinkedHashMap()
     129
    126130                                // got one or more subjects?
    127131                                if (flow.subjects.size() < 1) {
     132                                        errors = true;
     133                                } else {
     134                                        // handle form data
     135                                        def id = 0;
     136                                        flow.subjects.each() {
     137                                                // store subject properties
     138                                                it.name = params.get('subject_' + id + '_name')
     139                                                it.species = Term.findByName(params.get('subject_' + id + '_species'))
     140
     141                                                // clear lists
     142                                                def stringList = new LinkedHashMap();
     143                                                def intList = new LinkedHashMap();
     144
     145                                                // get all template fields
     146                                                flow.study.template.subjectFields.each() {
     147                                                        // get value
     148                                                        def value = params.get('subject_' + id + '_' + it.name);
     149                                                        if (value) {
     150                                                                // add to template parameters
     151                                                                switch (it.type) {
     152                                                                        case 'STRINGLIST':
     153                                                                                stringList[it.name] = value
     154                                                                                break;
     155                                                                        case 'INTEGER':
     156                                                                                intList[ it.name ] = value
     157                                                                                break;
     158                                                                        default:
     159                                                                                // unsupported type?
     160                                                                                println "ERROR: unsupported type: "+it.type
     161                                                                                break;
     162                                                                }
     163                                                        }
     164                                                }
     165
     166                                                // set field data
     167                                                it.templateStringFields         = stringList
     168                                                it.templateIntegerFields        = intList
     169
     170                                                // validate subject
     171                                                if (!it.validate()) {
     172                                                        errors = true
     173                                                        //println id + ' :: ' + it.errors.getAllErrors()
     174                                                        this.appendErrors(it, flash.errors)
     175                                                }
     176
     177                                                id++;
     178                                        }
     179                                }
     180
     181                                // got errors?
     182                                if (errors) {
     183                                        println flash.errors
    128184                                        error()
    129                                 }
    130                                 println params
     185                                } else {
     186                                        success()
     187                                }
    131188                        }.to "groups"
    132189                        on("previous") {
     
    146203                        on("add") {
    147204                                def increment = flow.groups.size()
    148                                 flow.groups[ increment ] = new SubjectGroup(params)
     205                                flow.groups[increment] = new SubjectGroup(params)
    149206
    150207                                println flow.groups
Note: See TracChangeset for help on using the changeset viewer.