Ignore:
Timestamp:
Apr 11, 2011, 4:02:04 PM (6 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)

File:
1 edited

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}
Note: See TracChangeset for help on using the changeset viewer.