Ignore:
Timestamp:
May 29, 2012, 4:24:52 PM (8 years ago)
Author:
work@…
Message:
  • improved initial study compare page gives visual feedback
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/generic/AjaxController.groovy

    r2170 r2237  
    1616import dbnp.studycapturing.*
    1717import grails.converters.JSON
     18import org.dbnp.gdt.AssayModule
    1819
    1920class AjaxController {
     
    9899        }
    99100
     101    /**
     102     * Get all modules
     103     */
     104    def modules = {
     105        def result = AssayModule.list()
     106
     107        // set output header to json
     108        response.contentType = 'application/json'
     109
     110        // render result
     111        if (params.callback) {
     112            render "${params.callback}(${result as JSON})"
     113        } else {
     114            render result as JSON
     115        }
     116    }
     117
    100118        /**
    101119         * return the number of studies the user can read based on criteria
     
    124142         */
    125143        def studies = {
    126                 def studies = ajaxService.getStudiesByCriteriaForCurrentUser(params)
     144        def user        = authenticationService.getLoggedInUser()
     145        def total       = Study.giveReadableStudies(user).size()
     146        def studies = ajaxService.getStudiesByCriteriaForCurrentUser(params)
    127147
    128                 // define json result
    129                 def result = ['studies':studies.collect{ it.title }]
     148        // find unique properties for these studies
     149        def species = []
     150        def uniqueSpecies = [:]
     151        def eventTemplates = []
     152        def uniqueEventTemplateNames = [:]
     153        def samplingEventTemplates = []
     154        def uniqueSamplingEventTemplateNames = [:]
     155        def modules = []
     156        def uniqueModules = [:]
     157
     158        // iterate through studies to temporarily remember properties
     159        studies.each {
     160            species                 = species + it.uniqueSpecies()
     161            eventTemplates          = eventTemplates + it.uniqueEventTemplates()
     162            samplingEventTemplates  = samplingEventTemplates + it.uniqueSamplingEventTemplates()
     163            modules                 = modules + it.uniqueAssayModules()
     164        }
     165
     166        // fetch unique properties
     167        species.unique().each { uniqueSpecies[ it.id ] = it.name }
     168        eventTemplates.unique().each { uniqueEventTemplateNames[ it.id ] = it.name }
     169        samplingEventTemplates.unique().each { uniqueSamplingEventTemplateNames[ it.id ] = it.name }
     170        modules.unique().each { uniqueModules[ it.id ] = it.name }
     171
     172        // define json result
     173                def result = [
     174                'studies':studies.collect{ it.title },
     175                'total':total,
     176                'matched':studies.size(),
     177                'uniqueSpecies':uniqueSpecies,
     178                'uniqueEventTemplateNames':uniqueEventTemplateNames,
     179                'uniqueSamplingEventTemplateNames':uniqueSamplingEventTemplateNames,
     180                'modules':uniqueModules
     181        ]
    130182
    131183                // set output header to json
Note: See TracChangeset for help on using the changeset viewer.