Changeset 1425 for trunk/grails-app


Ignore:
Timestamp:
Jan 21, 2011, 4:37:54 PM (10 years ago)
Author:
s.h.sikkema@…
Message:

Rudimentary assay export functionality

Location:
trunk/grails-app
Files:
2 edited
1 moved

Legend:

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

    r1261 r1425  
    138138     */
    139139    def exportAssayAsExcel = {
    140         Assay assay = Assay.get(params.id)
     140
     141        Assay assay = Assay.get(params.assayId)
    141142
    142143        if (!assay) {
    143             flash.errorMessage = "No assay found with id: $params.id."
     144            flash.errorMessage = "No assay found with id: $params.assayId."
    144145            redirect action: 'selectAssay'
    145146            return
    146147        }
    147148
    148         // TODO: refactor into service
     149        try {
    149150
    150         // Gather sample meta data from GSCF
    151         def samples = assay.samples
     151            def assayData = assayService.collectAssayData(assay, grailsApplication.config.modules.metabolomics.url)
    152152
    153         def collectUsedTemplateFields = { templateEntityList ->
     153            def filename = 'export.xlsx'
     154            response.setHeader("Content-disposition", "attachment;filename=\"${filename}\"")
     155            response.setContentType("application/octet-stream")
    154156
    155             def templateFields = templateEntityList*.giveFields().flatten().unique().findAll{it}
    156             def usedTemplateFields = templateFields.findAll{ tf ->
     157            assayService.exportColumnWiseDataToExcelFile(assayData, response.outputStream)
    157158
    158                 templateEntityList.any { it.fieldExists(tf.name) && it.getFieldValue(tf.name) }
    159             }
     159        } catch (Exception e) {
    160160
    161             def m = [:]
    162             usedTemplateFields.each { tf ->
    163                 m["${tf.name}"] = templateEntityList.collect{ it.fieldExists(tf.name) ? it.getFieldValue(tf.name) : '' }
    164             }
    165             m
    166         }
     161            flash.errorMessage = e.toString()
     162            redirect action: 'selectAssay'
    167163
    168         // get all sample related subjects
    169         def assayData = [
    170                 'Subject Data':         collectUsedTemplateFields(samples*.parentSubject.unique()),
    171                 'Sampling Event Data':  collectUsedTemplateFields(samples*.parentEvent.unique()),
    172                 'Event Data':           collectUsedTemplateFields(samples*.parentEventGroup.events.flatten().unique()),
    173                 'Sample Data':          collectUsedTemplateFields(samples)]
    174 
    175         // Gather sample meta data from the module
    176 
    177         // - sample metadata
    178 
    179         // Gather measurement data from the module
    180 
    181         // - measurements
    182 
    183         // Write to excel
    184 
    185         println assayData
    186 
    187         try {
    188             assayService.exportAssayDataAsExcelFile(assayData)
    189         } catch (Exception e) {
    190             flash.errorMessage = e.message
    191             redirect action: 'selectAssay'
    192164        }
    193165    }
  • trunk/grails-app/services/dbnp/authentication/AuthenticationService.groovy

    r983 r1425  
    5555        def user = getSessionAuthenticatedUser(consumer, token)
    5656       
    57         if( user )
     57        if( user ) {
     58            user.refresh()
    5859            user.delete()
     60        }
    5961       
    6062        return true
  • trunk/grails-app/views/assay/selectAssay.gsp

    r1281 r1425  
    2424  <body>
    2525  <div style="color:red;">
    26     flash.errorMessage
     26    ${flash.errorMessage}
    2727  </div>
    28   <g:form name="assaySelect" action="">
    29     <g:select optionKey="id" optionValue="title" name="study" from="${userStudies}"
     28  <g:form name="assaySelect" action="exportAssayAsExcel">
     29    <g:select optionKey="id" optionValue="title" name="studyId" from="${userStudies}"
    3030            onChange="${remoteFunction(controller:'study',action:'ajaxGetAssays',params:'\'id=\'+escape(this.value)',onComplete: 'updateAssay(XMLHttpRequest.responseText, \'assay\')')}"/>
    31     <g:select name="assay" id="assay" from="${assays}"/>
     31    <g:select optionKey="id" name="assayId" id="assay" from="${assays}"/>
    3232    <g:submitButton name="submit" value="Submit"/>
    3333  </g:form>
Note: See TracChangeset for help on using the changeset viewer.