Show
Ignore:
Timestamp:
11-04-11 16:02:04 (3 years ago)
Author:
robert@…
Message:

Updated assay export to be able to export multiple assays or studies (in the search results page).
Also changed the assay export such that the assay can still be exported if the module is not reachable (without module measurements but with a message in the excel sheet)

Files:
1 modified

Legend:

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

    r1735 r1752  
    385385        render study?.assays?.collect{[name: it.name, id: it.id]} as JSON 
    386386    } 
    387  
    388  
     387         
     388        /** 
     389         * Exports all data from the given studies to excel. This is done using a redirect to the  
     390         * assay controller 
     391         *  
     392         * @param       ids                             ids of the studies to export 
     393         * @param       params.format   "list" in order to export all assays in one big excel sheet 
     394         *                                                      "sheets" in order to export every assay on its own sheet (default) 
     395         * @see         AssayController.exportToExcel 
     396         */ 
     397        def exportToExcel = { 
     398                def ids = params.list( 'ids' ).findAll { it.isLong() }.collect { Long.valueOf( it ) }; 
     399 
     400                if( !ids ) { 
     401                        flash.errorMessage = "No study ids given"; 
     402                        redirect( controller: "assay", action: "errorPage" ); 
     403                        return; 
     404                } 
     405                 
     406                // Find all assay ids for these studies 
     407                def assayIds = ids.collect { id -> 
     408                        def study = Study.get( id ); 
     409                        if( study ) { 
     410                                return study.assays.collect { assay -> assay.id } 
     411                        } else { 
     412                                return [] 
     413                        } 
     414                }.flatten() 
     415                 
     416                if( !assayIds ) { 
     417                        flash.errorMessage = "No assays found for the given studies"; 
     418                        redirect( controller: "assay", action: "errorPage" ); 
     419                        return; 
     420                } 
     421                 
     422                // Create url to redirect to 
     423                def format = params.get( "format", "sheets" ) 
     424                redirect( controller: "assay", action: "exportToExcel", params: [ "format": format, "ids": assayIds ] ); 
     425        } 
    389426}