Changeset 386

Show
Ignore:
Timestamp:
27-04-10 15:53:06 (4 years ago)
Author:
roberth
Message:

Updated the template entities to be able to return domain fields, template fields and both.
Rolled back the change of Kees in the Event object, so the startTime and endTime fields returned.
Also updated the studies list with a new layout.

Location:
trunk
Files:
2 added
9 modified

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/conf/BootStrap.groovy

    r384 r386  
    4747                                accession: '9606' 
    4848                        ).with { if (!validate()) { errors.each { println it} } else save()} 
     49 
     50                        def bloodTerm = new Term( 
     51                                name: 'Portion of blood', 
     52                                ontology: speciesOntology, 
     53                                accession: '9670' 
     54                        ).with { if (!validate()) { errors.each { println it} } else save()} 
     55 
    4956 
    5057                        // Create a few persons, roles and Affiliations 
     
    135142                        ).with { if (!validate()) { errors.each { println it} } else save()} 
    136143                         
    137                         def bloodTerm = new Term( 
    138                                 name: 'Portion of blood', 
    139                                 ontology: humanBodyOntology, 
    140                                 accession: '9670' 
    141                         ).with { if (!validate()) { errors.each { println it} } else save()} 
    142144 
    143145                        def c57bl6Term = new Term( 
     
    441443                                name: 'Compound', type: TemplateFieldType.STRING, 
    442444                                listEntries: [new TemplateFieldListItem(name:'Vehicle'),new TemplateFieldListItem(name: 'Leptin')])) 
     445                        .with { if (!validate()) { errors.each { println it} } else save()} 
     446 
     447                        def bloodSamplingEventTemplate = new Template( 
     448                                name: 'Blood extraction', entity: dbnp.studycapturing.Event) 
     449                        .addToFields(sampleDescriptionField) 
     450                        .addToFields(new TemplateField( 
     451                                name: 'Sample volume', type: TemplateFieldType.FLOAT)) 
     452                        .with { if (!validate()) { errors.each { println it} } else save()} 
     453 
     454                        def fastingTreatmentTemplate = new Template( 
     455                                name: 'Fasting treatment', entity: dbnp.studycapturing.Event) 
     456                        .addToFields(sampleDescriptionField) 
     457                        .addToFields(new TemplateField( 
     458                                name: 'Fasting period', type: TemplateFieldType.STRING)) 
    443459                        .with { if (!validate()) { errors.each { println it} } else save()} 
    444460 
     
    500516                        exampleStudy.save() 
    501517 
     518 
     519                        /* Test output of fields things */ 
     520                        println "-----------------------------" 
     521                        print "Diet domain fields: " 
     522                        println exampleStudy.giveDomainFields().join( ", " ) 
     523 
     524                        print "Diet template fields: " 
     525                        println exampleStudy.giveTemplateFields().join( ", " ) 
     526 
     527                        print "Diet all fields: " 
     528                        println exampleStudy.giveFields().join( ", " ) 
     529 
     530                        println "-----------------------------" 
     531 
    502532                        println ".adding NuGO PPSH example study..." 
    503533                        def exampleHumanStudy = new Study( 
     
    515545 
    516546                        def evLF = new Event( 
    517                                 template: dietTreatmentTemplate 
     547                                template: dietTreatmentTemplate, 
     548                                startTime: Date.parse('yyyy-MM-dd','2008-01-07'), 
     549                                endTime: Date.parse('yyyy-MM-dd','2008-01-14') 
    518550                        ) 
    519551                        .with { if (!validate()) { errors.each { println it} } else save()} 
    520552 
    521                         evLF.setStartTime(Date.parse('yyyy-MM-dd','2008-01-07')) 
    522                         evLF.setEndTime(Date.parse('yyyy-MM-dd','2008-01-14')) 
    523  
    524553                        evLF.setFieldValue( 'Diet','10% fat (palm oil)' ) 
    525554                        evLF.save(flush:true) 
     
    529558 
    530559                        def evHF = new Event( 
    531                                 template: dietTreatmentTemplate 
     560                                template: dietTreatmentTemplate, 
     561                                startTime: Date.parse('yyyy-MM-dd','2008-01-07'), 
     562                                endTime: Date.parse('yyyy-MM-dd','2008-01-14') 
    532563                        ) 
    533                         .setStartTime( Date.parse('yyyy-MM-dd','2008-01-07')) 
    534                         .setEndTime( Date.parse('yyyy-MM-dd','2008-01-14')) 
    535564                        .setFieldValue( 'Diet','45% fat (palm oil)' ) 
    536565                        .with { if (!validate()) { errors.each { println it} } else save()} 
    537566 
    538567                        def evBV = new Event( 
    539                                 template: boostTreatmentTemplate 
     568                                template: boostTreatmentTemplate, 
     569                                startTime: Date.parse('yyyy-MM-dd','2008-01-07'), 
     570                                endTime: Date.parse('yyyy-MM-dd','2008-01-14') 
    540571                        ) 
    541                         .setStartTime( Date.parse('yyyy-MM-dd','2008-01-07')) 
    542                         .setEndTime( Date.parse('yyyy-MM-dd','2008-01-14')) 
    543572                        .setFieldValue( 'Compound','Vehicle' ) 
    544573                        .with { if (!validate()) { errors.each { println it} } else save()} 
    545574 
    546575                        def evBL = new Event( 
    547                                 template: boostTreatmentTemplate 
    548                         ) 
    549                         .setStartTime( Date.parse('yyyy-MM-dd','2008-01-07')) 
    550                         .setEndTime( Date.parse('yyyy-MM-dd','2008-01-14')) 
     576                                template: boostTreatmentTemplate, 
     577                                startTime: Date.parse('yyyy-MM-dd','2008-01-07'), 
     578                                endTime: Date.parse('yyyy-MM-dd','2008-01-14') 
     579                        ) 
    551580                        .setFieldValue( 'Compound','Leptin' ) 
    552581                        .with { if (!validate()) { errors.each { println it} } else save()} 
     
    657686 
    658687                        def x=1 
    659                         40.times { 
     688                        12.times { 
    660689                                def currentSubject = new Subject( 
    661690                                        name: "A" + x++, 
     
    684713                                */ 
    685714 
    686                                 if (x > 30) { HFBL1.addToSubjects(currentSubject).save() } 
     715                                if (x > 9)      { HFBL1.addToSubjects(currentSubject).save() } 
     716                                else if (x > 6) { HFBV1.addToSubjects(currentSubject).save() } 
     717                                else if (x > 3)  { LFBL1.addToSubjects(currentSubject).save() } 
     718                                else             { LFBV1.addToSubjects(currentSubject).save() } 
     719 
     720                        } 
     721 
     722                        // Also add some human subjects 
     723                        2.times { 
     724                                def currentSubject = new Subject( 
     725                                        name: "H" + x++, 
     726                                        species: humanTerm, 
     727                                        template: humanTemplate, 
     728                                ) 
     729                                .setFieldValue("Gender", "Male") 
     730                                //.setFieldValue("Genotype", c57bl6Term) 
     731                                .setFieldValue("Age (years)", 27) 
     732                                .setFieldValue("Height", 1.5) 
     733                                .with { if (!validate()) { errors.each { println it} } else save(flush:true)} 
     734 
     735                                exampleStudy.addToSubjects(currentSubject) 
     736                                .with { if (!validate()) { errors.each { println it} } else save()} 
     737 
     738                                // Add subject to appropriate EventGroup 
     739                                /* 
     740                                if (x > 70) { HFBL4.addToSubjects(currentSubject).save() } 
     741                                else if (x > 60) { HFBV4.addToSubjects(currentSubject).save() } 
     742                                else if (x > 50) { LFBL4.addToSubjects(currentSubject).save() } 
     743                                else if (x > 40) { LFBV4.addToSubjects(currentSubject).save() } 
     744                                else if (x > 30) { HFBL1.addToSubjects(currentSubject).save() } 
    687745                                else if (x > 20) { HFBV1.addToSubjects(currentSubject).save() } 
    688746                                else if (x > 10) { LFBL1.addToSubjects(currentSubject).save() } 
    689747                                else             { LFBV1.addToSubjects(currentSubject).save() } 
     748                                */ 
     749 
     750                                if (x == 0)      { HFBL1.addToSubjects(currentSubject).save() } 
     751                                else             { LFBV1.addToSubjects(currentSubject).save() } 
    690752 
    691753                        } 
     754 
    692755 
    693756                        // Add EventGroups to study 
     
    711774                        .save() 
    712775                        
    713                         /* 
    714776                        println 'Adding PPSH study' 
    715777 
     
    719781                                code:"PPSH", 
    720782                                researchQuestion:"How much are fasting plasma and urine metabolite levels affected by prolonged fasting ?", 
    721                                 description:"Human study", 
    722783                                ecCode:"unknown", 
    723784                                startDate: Date.parse('yyyy-MM-dd','2009-01-01') 
     
    725786 
    726787                        def fastingEvent = new Event( 
    727                                         startTime: Date.parse('yyyy-MM-dd','2008-01-14'), 
    728                                         endTime: Date.parse('yyyy-MM-dd','2008-01-14'), 
    729                                         eventDescription: fastingTreatment, 
    730                                         parameterStringValues: ['Fasting period':'8h']); 
     788                            template: fastingTreatmentTemplate, 
     789                            startTime: Date.parse('yyyy-MM-dd','2008-01-14' ), 
     790                            endTime: Date.parse('yyyy-MM-dd','2008-01-14' ) 
     791                        ) 
     792                        .setFieldValue( 'Fasting period','8h' ) 
     793                        .with { if (!validate()) { errors.each { println it} } else save()} 
    731794 
    732795                        def bloodSamplingEvent = new SamplingEvent( 
    733                                         startTime: Date.parse('yyyy-MM-dd','2008-01-14'), 
    734                                         endTime: Date.parse('yyyy-MM-dd','2008-01-14'), 
    735                                         eventDescription: bloodSamplingEventDescription, 
    736                                         parameterFloatValues: ['Sample volume':4.5F]); 
     796                            template: bloodSamplingEventTemplate, 
     797                            startTime: Date.parse('yyyy-MM-dd','2008-01-14' ), 
     798                            endTime: Date.parse('yyyy-MM-dd','2008-01-14' ) 
     799                        ) 
     800                        .setFieldValue( 'Sample volume',4.5F ) 
     801                        .with { if (!validate()) { errors.each { println it} } else save()} 
    737802 
    738803                        def rootGroup = new EventGroup(name: 'Root group'); 
     
    741806                        rootGroup.save() 
    742807 
    743             def y = 1 
    744             11.times { 
    745               def currentSubject = new Subject( 
    746                       name: "" + y++, 
    747                       species: humanTerm, 
    748                       template: humanTemplate).setFieldValue("Gender", (boolean) (x / 2) ? "Male" : "Female").setFieldValue("DOB", new java.text.SimpleDateFormat("dd-mm-yy").parse("01-02-19" + (10 + (int) (Math.random() * 80)))).setFieldValue("Age (years)", 30).setFieldValue("Height", Math.random() * 2F).setFieldValue("Weight (kg)", Math.random() * 150F).setFieldValue("BMI", 20 + Math.random() * 10F).with { if (!validate()) { errors.each { println it} } else save()} 
    749  
    750               rootGroup.addToSubjects currentSubject 
    751               rootGroup.save() 
    752  
    753               def currentSample = new Sample( 
    754                       name: currentSubject.name + '_B', 
    755                       material: bloodTerm, 
    756                       parentSubject: currentSubject, 
    757                       parentEvent: bloodSamplingEvent); 
    758  
    759  
    760               humanStudy.addToSubjects(currentSubject).addToSamples(currentSample).with { if (!validate()) { errors.each { println it} } else save()} 
    761           } 
    762  
    763           humanStudy.addToEvents(fastingEvent) 
    764           humanStudy.addToSamplingEvents(bloodSamplingEvent) 
    765           humanStudy.addToEventGroups rootGroup 
    766           humanStudy.save() 
    767  
     808                        def y = 1 
     809                        11.times { 
     810                          def currentSubject = new Subject( 
     811                                  name: "" + y++, 
     812                                  species: humanTerm, 
     813                                  template: humanTemplate).setFieldValue("Gender", (boolean) (x / 2) ? "Male" : "Female").setFieldValue("DOB", new java.text.SimpleDateFormat("dd-mm-yy").parse("01-02-19" + (10 + (int) (Math.random() * 80)))).setFieldValue("Age (years)", 30).setFieldValue("Height", Math.random() * 2F).setFieldValue("Weight (kg)", Math.random() * 150F).setFieldValue("BMI", 20 + Math.random() * 10F).with { if (!validate()) { errors.each { println it} } else save()} 
     814 
     815                          rootGroup.addToSubjects currentSubject 
     816                          rootGroup.save() 
     817 
     818                          def currentSample = new Sample( 
     819                                  name: currentSubject.name + '_B', 
     820                                  material: bloodTerm, 
     821                                  parentSubject: currentSubject, 
     822                                  parentEvent: bloodSamplingEvent); 
     823 
     824                          humanStudy.addToSubjects(currentSubject).addToSamples(currentSample).with { if (!validate()) { errors.each { println it} } else save()} 
     825                      } 
     826 
     827                      humanStudy.addToEvents(fastingEvent) 
     828                      humanStudy.addToSamplingEvents(bloodSamplingEvent) 
     829                      humanStudy.addToEventGroups rootGroup 
     830                      humanStudy.save() 
    768831                        // Add clinical data 
    769832 
     
    793856                        lipidAssay.addToMeasurements ldlMeasurement 
    794857                        lipidAssay.addToMeasurements hdlMeasurement 
    795  
     858                        
    796859                        def lipidAssayInstance = new dbnp.clinicaldata.ClinicalAssayInstance( 
    797860                                assay: lipidAssay 
     
    815878 
    816879                        // Add assay to study capture module 
    817  
    818880                        def clinicalModule = new AssayModule( 
    819881                                name: 'Clinical data', 
     
    834896                        lipidAssayRef.save() 
    835897 
    836                         humanStudy.addToAssays(lipidAssayRef); 
     898                        humanStudy.addToAssays(lipidAssayRef); 
     899 
     900                        // Add some sample assay 
     901                        // Add assay to study capture module 
     902                        def dummyModule = new AssayModule( 
     903                                name: 'Dummy data', 
     904                                type: AssayType.CLINICAL_DATA, 
     905                                platform: 'other type of measurement platform', 
     906                                url: 'http://localhost:8080/gscf' 
     907                        ).with { if (!validate()) { errors.each { println it} } else save()} 
     908 
     909                        def dummyAssayRef = new Assay( 
     910                                name: 'Test assay', 
     911                                module: dummyModule, 
     912                                externalAssayId: lipidAssayInstance.id 
     913                        ).with { if (!validate()) { errors.each { println it} } else save()} 
     914 
     915                        humanStudy.addToAssays(dummyAssayRef); 
     916 
    837917                        humanStudy.save() 
    838 */ 
    839918                } 
    840919        } 
  • trunk/grails-app/domain/dbnp/studycapturing/Event.groovy

    r384 r386  
    1515class Event extends TemplateEntity implements Serializable { 
    1616 
     17        Date startTime 
     18        Date endTime 
     19         
    1720        static constraints = { 
    1821                startTime(nullable: true) 
     
    2528        } 
    2629         
    27         Date getStartTime() { 
    28                 getFieldValue('Start time') 
    29         } 
    3030 
    31         def setStartTime(Date value) { 
    32                 if (value != null) { 
    33                         setFieldValue('Start time',value) 
    34                 } 
    35                 return this 
    36         } 
    37  
    38         Date getEndTime() { 
    39                 getFieldValue('End time') 
    40         } 
    41  
    42         def setEndTime(Date value) { 
    43                 if (value != null) { 
    44                         setFieldValue('End time',value) 
    45                 } 
    46                 return this 
    47         } 
    48  
    49         Map giveDomainFields() { 
    50                 return ['startTime':TemplateFieldType.DATE,'endTime':TemplateFieldType.DATE] 
     31        List<DomainTemplateField> giveDomainFields() { 
     32                [ new DomainTemplateField(  
     33                            name: 'startDate', 
     34                            type: TemplateFieldType.DATE), 
     35                        new DomainTemplateField(  
     36                            name: 'endDate', 
     37                            type: TemplateFieldType.DATE) ]; 
    5138        } 
    5239 
  • trunk/grails-app/domain/dbnp/studycapturing/Sample.groovy

    r375 r386  
    1616        // a member that describes the quantity of the sample? --> should be in the templates 
    1717 
    18         Map giveDomainFields() { 
    19                 return ['name':TemplateFieldType.STRING,'material':TemplateFieldType.ONTOLOGYTERM] 
     18        List<DomainTemplateField> giveDomainFields() { 
     19                [ new DomainTemplateField( 
     20                            name: 'name', 
     21                            type: TemplateFieldType.STRING), 
     22                        new DomainTemplateField( 
     23                            name: 'material', 
     24                            type: TemplateFieldType.ONTOLOGYTERM) ]; 
    2025        } 
    2126 
  • trunk/grails-app/domain/dbnp/studycapturing/Study.groovy

    r375 r386  
    2323        //String ecCode 
    2424 
    25         Map giveDomainFields() { 
    26                 return ['title':TemplateFieldType.STRING,'startDate':TemplateFieldType.DATE] 
     25        List<DomainTemplateField> giveDomainFields() { 
     26                [ new TemplateField(  
     27                            name: 'title - niet opslaan!', 
     28                            type: TemplateFieldType.STRING), 
     29                        new TemplateField(  
     30                            name: 'startDate',  
     31                            type: TemplateFieldType.DATE) ]; 
    2732        } 
    2833 
  • trunk/grails-app/domain/dbnp/studycapturing/Subject.groovy

    r375 r386  
    1616        Term species 
    1717 
    18         Map giveDomainFields() { 
    19                 return ['name':TemplateFieldType.STRING,'species':TemplateFieldType.ONTOLOGYTERM] 
     18        List<DomainTemplateField> giveDomainFields() { 
     19                [ new DomainTemplateField( 
     20                            name: 'name', 
     21                            type: TemplateFieldType.STRING), 
     22                        new DomainTemplateField( 
     23                            name: 'species', 
     24                            type: TemplateFieldType.ONTOLOGYTERM) ]; 
    2025        } 
    2126} 
  • trunk/grails-app/domain/dbnp/studycapturing/TemplateEntity.groovy

    r384 r386  
    349349 
    350350        /** 
     351        * Return all fields defined in the underlying template and the built-in 
     352        * domain fields of this entity 
     353        */ 
     354        def List<TemplateField> giveFields() { 
     355                return this.giveDomainFields() + this.giveTemplateFields(); 
     356        } 
     357 
     358        /** 
    351359        * Return all templated fields defined in the underlying template of this entity 
    352360        */ 
    353         def List<TemplateField> giveFields() { 
     361        def List<TemplateField> giveTemplateFields() { 
    354362                return this.template.fields; 
    355363        } 
    356364 
    357         def List<TemplateField> giveSystemFields() { 
    358                 return systemFields; 
    359         } 
    360          
    361  
    362365        /** 
    363366         * Return all relevant 'built-in' domain fields of the super class 
    364          * @return key-value pairs describing the built-in fields, with the names as keys and type (as TemplateFieldType) as values 
     367         * @return List with DomainTemplateFields 
     368         * @see DomainTemplateField 
    365369         */ 
    366         abstract Map giveDomainFields() 
     370        abstract List<DomainTemplateField> giveDomainFields() 
     371 
    367372        /*def giveDomainFields() { 
    368373                def fieldSet = [:]; 
  • trunk/grails-app/views/sandbox/index.gsp

    r375 r386  
    3737                <td>Type</td> 
    3838        </tr> 
    39         <g:each in="${subject.giveDomainFields()}" var="field"> 
    40             <tr> 
    41                     <td>Domain field</td> 
    42                         <td>${field.key}</td> 
    43                          <td>${field.value}</td> 
    44                 </tr> 
    45         </g:each> 
    4639        <g:each in="${subject.giveFields()}" var="field"> 
    4740            <tr> 
  • trunk/grails-app/views/study/list.gsp

    r370 r386  
    55    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    66    <meta name="layout" content="main" /> 
    7   <g:set var="entityName" value="${message(code: 'study.label', default: 'Study')}" /> 
    8   <title><g:message code="default.list.label" args="[entityName]" /></title> 
     7    <g:set var="entityName" value="${message(code: 'study.label', default: 'Study')}" /> 
     8    <title><g:message code="default.list.label" args="[entityName]" /></title> 
    99</head> 
    1010<body> 
     
    1212  <g:form action="list_extended"> 
    1313 
    14   <div class="nav"> 
    15     <span class="menuButton"><a class="home" href="${createLink(uri: '/')}">Home</a></span> 
    16     <span class="menuButton"><g:link class="create" action="create"><g:message code="default.new.label" args="[entityName]" /></g:link></span> 
    17   </div> 
    1814  <div class="body"> 
    1915    <h1><g:message code="default.list.label" args="[entityName]" /></h1> 
     
    2218    </g:if> 
    2319 
    24       <g:each in="${studyInstanceList}" var="studyInstance"> 
     20    <div class="list"> 
     21      <table> 
     22          <thead> 
     23              <tr> 
     24                  <th></th> 
     25                  <g:sortableColumn property="title" title="${message(code: 'study.title.label', default: 'Title')}" /> 
     26                  <th>Subjects</th> 
     27                  <th>Events</th> 
     28                  <th>Assays</th> 
     29              </tr> 
     30          </thead> 
     31          <tbody> 
     32          <g:each in="${studyInstanceList}" var="studyInstance" status="i" > 
     33              <tr class="${(i % 2) == 0 ? 'odd' : 'even'}"> 
     34 
     35                  <td><input type="checkbox" name="${studyInstance.title}" id="${studyInstance.title}"></td> 
     36 
     37                  <td><g:link action="show" id="${studyInstance.id}">${fieldValue(bean: studyInstance, field: "title")}</g:link></td> 
     38 
     39                  <td> 
     40                    <g:if test="${studyInstance.subjects.species.size()==0}"> 
     41                      - 
     42                    </g:if> 
     43                    <g:else> 
     44                      <g:each in="${studyInstance.subjects.species.unique()}" var="currentSpecies" status="j"> 
     45                        <g:if test="${j > 0}">, </g:if> 
     46                        <%= studyInstance.subjects.findAll { return it.species == currentSpecies; }.size() %> 
     47                        ${currentSpecies} 
     48                      </g:each> 
     49                    </g:else> 
     50                  </td> 
     51 
     52                  <td> 
     53                    <g:if test="${studyInstance.giveEventTemplates().size()==0}"> 
     54                      - 
     55                    </g:if> 
     56                    <g:else> 
     57                      ${studyInstance.giveEventTemplates().name.join( ', ' )} 
     58                    </g:else> 
     59                  </td> 
     60 
     61                  <td> 
     62                    <g:if test="${studyInstance.assays.size()==0}"> 
     63                      - 
     64                    </g:if> 
     65                    <g:else> 
     66                      ${studyInstance.assays.module.platform.unique().join( ', ' )} 
     67                    </g:else> 
     68                  </td> 
     69 
     70              </tr> 
     71          </g:each> 
     72          </tbody> 
     73      </table> 
     74    </div> 
     75    <div class="buttons"> 
     76        <span class="button"><g:link controller="wizard" class="create" action="index"><g:message code="default.new.label" args="[entityName]" /></g:link></span> 
     77    </div> 
     78    <div class="paginateButtons"> 
     79        <g:paginate total="${studyInstanceTotal}" prev="&laquo; Previous" next="&raquo; Next" /> 
    2580        <br> 
    26         <table> 
    27           <tr> 
    28             <td width="50"></td> 
    29             <td colspan="3"> 
    30               <center><b>${studyInstance.title}</b></center> 
    31             </td> 
    32           </tr> 
    33           <tr> 
    34             <td> 
    35  
    36               <input type="checkbox" name="${studyInstance.title}" id="${studyInstance.title}"></td> 
    37  
    38             <td width="150"> 
    39           <g:link action="show" id="${studyInstance.id}"> 
    40 ${message(code: 'study.id.label', default: 'Id')} : 
    41 ${fieldValue(bean: studyInstance, field: "id")}</g:link></td> 
    42  
    43         <td width="300"> 
    44 <b>${message(code: 'study.template.label', default: 'Template')} </b>: 
    45 ${fieldValue(bean: studyInstance, field: "template")}</td> 
    46  
    47 <td > 
    48 <b>${message(code: 'study.subjects.label', default: 'Subjects')} </b>: 
    49 ${studyInstance.subjects.size()} subjects</td> 
    50  
    51         </tr> 
    52         <tr> 
    53           <td></td> 
    54           <td > 
    55 <b>${message(code: 'study.owner.label', default: 'Owner')} </b>: 
    56 ${fieldValue(bean: studyInstance, field: "owner")}</td> 
    57  
    58           <td > 
    59 <b>Assays </b>: 
    60         <g:each in="${studyInstance.assays}" var="assay"> 
    61           ${assay.name} 
    62         </g:each> 
    63           </td> 
    64  
    65           <td><b> Samples </b>: 
    66           <g:each in="${studyInstance.assays.samples}" var="samples"> 
    67           ${samples.name} 
    68           </g:each> 
    69           </td> 
    70  
    71  
    72         </tr> 
    73         <g:if test="${studyInstance.fieldExists( 'Description' )}"> 
    74         <tr> 
    75           <td></td> 
    76           <td colspan="3"> 
    77             <b>${message(code: 'study.description.label', default: 'Description')} </b>: 
    78             ${studyInstance.getFieldValue( 'Description' )} 
    79              
    80           </td> 
    81         </tr> 
    82         </g:if> 
    83         </table> 
    84       </g:each> 
    85     
    86     <div class="paginateButtons"> 
    87       <g:paginate total="${studyInstanceTotal}" /> 
    88       <br> 
    89       <INPUT TYPE=submit name=submit Value="Compare selected studies"> 
     81        <INPUT TYPE=submit name=submit Value="Compare selected studies"> 
    9082    </div> 
    9183  </div> 
  • trunk/grails-app/views/study/show.gsp

    r370 r386  
    4949            </g:if> 
    5050            <g:else> 
    51              ${studyInstance.giveEventTemplates().name} 
     51              ${studyInstance.giveEventTemplates().name} 
    5252            </g:else> 
    5353          <br>