Changeset 370
- Timestamp:
- Apr 22, 2010, 9:31:50 AM (11 years ago)
- Location:
- trunk/grails-app
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/grails-app/conf/BootStrap.groovy
r367 r370 48 48 ).with { if (!validate()) { errors.each { println it} } else save()} 49 49 50 // Create a few persons, roles and Affiliations 51 println ".adding persons, roles and affiliations" 52 def affiliation1 = new PersonAffiliation( 53 name: "Science Institute NYC" 54 ).save(); 55 def affiliation2 = new PersonAffiliation( 56 name: "InfoStats GmbH, Hamburg" 57 ).save(); 58 def role1 = new PersonRole( 59 name: "Principal Investigator" 60 ).save(); 61 def role2 = new PersonRole( 62 name: "Statician" 63 ).save(); 64 def person1 = new Person( 65 lastName: "Scientist", 66 firstName: "John", 67 midInitials: "R", 68 email: "john@scienceinstitute.com", 69 phone: "1-555-3049", 70 address: "First street 2,NYC" 71 ) 72 .addToAffiliations( affiliation1 ) 73 .addToAffiliations( affiliation2 ) 74 .save(); 75 76 def person2 = new Person( 77 lastName: "Statician", 78 firstName: "Jane", 79 midInitials: "W", 80 email: "jane@statisticalcompany.de", 81 phone: "49-555-8291", 82 address: "Dritten strasse 38, Hamburg, Germany" 83 ) 84 .addToAffiliations( affiliation2 ) 85 .save(); 50 86 51 87 /* COMMENTED OUT BECAUSE IT BREAKS EVERYTHING AFTER REFACTORING THE DATAMODEL … … 223 259 def studyTemplate = new Template( 224 260 name: 'Academic study', entity: dbnp.studycapturing.Study) 225 .addToFields(new TemplateField(name: 'Description',type: TemplateFieldType.TEXT))261 //.addToFields(new TemplateField(name: 'Description',type: TemplateFieldType.TEXT)) 226 262 .addToFields(new TemplateField(name: 'Study code',type: TemplateFieldType.STRING)) 227 263 .addToFields(new TemplateField(name: 'Objectives',type: TemplateFieldType.TEXT)) … … 303 339 304 340 // Human sample template 305 /* COMMENTED OUT AS IT BREAKS THE WHOLE LOT306 341 def humanSampleTemplate = new Template( 307 342 name: 'Human tissue sample', entity: dbnp.studycapturing.Sample) … … 363 398 364 399 400 // Event template 401 def dietTreatmentTemplate = new Template( 402 name: 'Diet treatment ', entity: dbnp.studycapturing.Event) 403 .addToFields(sampleDescriptionField) 404 .addToFields(new TemplateField( 405 name: 'Diet', type: TemplateFieldType.STRING)) 406 .with { if (!validate()) { errors.each { println it} } else save()} 407 408 def boostTreatmentTemplate = new Template( 409 name: 'Boost treatment ', entity: dbnp.studycapturing.Event) 410 .addToFields(sampleDescriptionField) 411 .addToFields(new TemplateField( 412 name: 'Compound', type: TemplateFieldType.STRING)) 413 .with { if (!validate()) { errors.each { println it} } else save()} 414 415 /* 365 416 //events 366 417 def eventDiet = new EventDescription( … … 403 454 404 455 println('Adding PPS3 study...') 405 456 */ 406 457 // studies 407 458 def exampleStudy = new Study( … … 410 461 code:"PPS3_leptin_module", 411 462 researchQuestion:"Leptin etc.", 412 description:"C57Bl/6 mice were fed a high fat (45 en%) or low fat (10 en%) diet after a four week run-in on low fat diet. After 1 week 10 mice that received a low fat diet were given an IP leptin challenge and 10 mice of the low-fat group received placebo injections. The same procedure was performed with mice that were fed the high-fat diet. After 4 weeks the procedure was repeated. In total 80 mice were culled.",413 463 ecCode:"2007117.c", 414 464 startDate: Date.parse('yyyy-MM-dd','2007-12-11') 415 ).with { if (!validate()) { errors.each { println it} } else save()} 465 ) 466 //.setFieldValue( 'Description', "C57Bl/6 mice were fed a high fat (45 en%) or low fat (10 en%) diet after a four week run-in on low fat diet. After 1 week 10 mice that received a low fat diet were given an IP leptin challenge and 10 mice of the low-fat group received placebo injections. The same procedure was performed with mice that were fed the high-fat diet. After 4 weeks the procedure was repeated. In total 80 mice were culled." ) 467 .with { if (!validate()) { errors.each { println it} } else save()} 416 468 417 469 def exampleHumanStudy = new Study( … … 420 472 code:"Human example code", 421 473 researchQuestion:"Leptin etc.", 422 description:"C57Bl/6 mice were fed a high fat (45 en%) or low fat (10 en%) diet after a four week run-in on low fat diet. After 1 week 10 mice that received a low fat diet were given an IP leptin challenge and 10 mice of the low-fat group received placebo injections. The same procedure was performed with mice that were fed the high-fat diet. After 4 weeks the procedure was repeated. In total 80 mice were culled.",423 474 ecCode:"2007117.c", 424 475 startDate: Date.parse('yyyy-MM-dd','2007-12-11') 425 ).with { if (!validate()) { errors.each { println it} } else save()} 476 ) 477 //.setFieldValue( 'Description', "C57Bl/6 mice were fed a high fat (45 en%) or low fat (10 en%) diet after a four week run-in on low fat diet. After 1 week 10 mice that received a low fat diet were given an IP leptin challenge and 10 mice of the low-fat group received placebo injections. The same procedure was performed with mice that were fed the high-fat diet. After 4 weeks the procedure was repeated. In total 80 mice were culled." ) 478 .with { if (!validate()) { errors.each { println it} } else save()} 426 479 427 480 def evLF = new Event( 428 481 startTime: Date.parse('yyyy-MM-dd','2008-01-07'), 429 482 endTime: Date.parse('yyyy-MM-dd','2008-01-14'), 430 eventDescription: eventDiet, 431 parameterStringValues: ['Diet':'10% fat (palm oil)'] 432 ).with { if (!validate()) { errors.each { println it} } else save()} 483 template: dietTreatmentTemplate 484 ) 485 .setFieldValue( 'Diet','10% fat (palm oil)' ) 486 .with { if (!validate()) { errors.each { println it} } else save()} 433 487 434 488 def evHF = new Event( 435 489 startTime: Date.parse('yyyy-MM-dd','2008-01-07'), 436 490 endTime: Date.parse('yyyy-MM-dd','2008-01-14'), 437 eventDescription: eventDiet, 438 parameterStringValues: ['Diet':'45% fat (palm oil)'] 439 ).with { if (!validate()) { errors.each { println it} } else save()} 491 template: dietTreatmentTemplate 492 ) 493 .setFieldValue( 'Diet','45% fat (palm oil)' ) 494 .with { if (!validate()) { errors.each { println it} } else save()} 440 495 441 496 def evBV = new Event( 442 497 startTime: Date.parse('yyyy-MM-dd','2008-01-07'), 443 498 endTime: Date.parse('yyyy-MM-dd','2008-01-14'), 444 eventDescription: eventBoost, 445 parameterStringValues: ['Compound':'Vehicle'] 446 ).with { if (!validate()) { errors.each { println it} } else save()} 499 template: boostTreatmentTemplate 500 ) 501 .setFieldValue( 'Compound','Vehicle' ) 502 .with { if (!validate()) { errors.each { println it} } else save()} 447 503 448 504 def evBL = new Event( 449 505 startTime: Date.parse('yyyy-MM-dd','2008-01-07'), 450 506 endTime: Date.parse('yyyy-MM-dd','2008-01-14'), 451 eventDescription: eventBoost, 452 parameterStringValues: ['Compound':'Leptin'] 453 ).with { if (!validate()) { errors.each { println it} } else save()} 454 507 template: boostTreatmentTemplate 508 ) 509 .setFieldValue( 'Compound','Leptin' ) 510 .with { if (!validate()) { errors.each { println it} } else save()} 511 512 /* 455 513 def evLF4 = new Event( 456 514 startTime: Date.parse('yyyy-MM-dd','2008-01-07'), … … 494 552 parameterFloatValues: ['Sample weight':5F] 495 553 ).with { if (!validate()) { errors.each { println it} } else save()} 554 */ 496 555 497 556 // Add events to study … … 501 560 .addToEvents(evBV) 502 561 .addToEvents(evBL) 503 .addToEvents(evLF4) 562 /* 563 .addToEvents(evLF4) 504 564 .addToEvents(evHF4) 505 565 .addToEvents(evBV4) … … 507 567 .addToSamplingEvents(evS) 508 568 .addToSamplingEvents(evS4) 569 */ 509 570 .save() 510 571 … … 529 590 .with { if (!validate()) { errors.each { println it} } else save()} 530 591 592 /* 531 593 def LFBV4 = new EventGroup(name:"10% fat + vehicle for 4 weeks") 532 594 .addToEvents(evLF4) … … 548 610 .addToEvents(evBL4) 549 611 .with { if (!validate()) { errors.each { println it} } else save()} 612 */ 550 613 551 614 // Add subjects and samples and compose EventGroups 552 615 553 616 def x=1 554 80.times {617 40.times { 555 618 def currentSubject = new Subject( 556 619 name: "A" + x++, … … 559 622 ) 560 623 .setFieldValue("Gender", "Male") 561 .setFieldValue("Genotype", c57bl6Term)624 //.setFieldValue("Genotype", c57bl6Term) 562 625 .setFieldValue("Age (weeks)", 17) 563 626 .setFieldValue("Cage", "" + (int)(x/2)) … … 568 631 569 632 // Add subject to appropriate EventGroup 570 if (x > 70) { HFBL4.addToSubjects(currentSubject).save() } 633 /* 634 if (x > 70) { HFBL4.addToSubjects(currentSubject).save() } 571 635 else if (x > 60) { HFBV4.addToSubjects(currentSubject).save() } 572 636 else if (x > 50) { LFBL4.addToSubjects(currentSubject).save() } … … 576 640 else if (x > 10) { LFBL1.addToSubjects(currentSubject).save() } 577 641 else { LFBV1.addToSubjects(currentSubject).save() } 578 579 } 642 */ 643 644 if (x > 30) { HFBL1.addToSubjects(currentSubject).save() } 645 else if (x > 20) { HFBV1.addToSubjects(currentSubject).save() } 646 else if (x > 10) { LFBL1.addToSubjects(currentSubject).save() } 647 else { LFBV1.addToSubjects(currentSubject).save() } 648 649 } 580 650 581 651 // Add EventGroups to study … … 585 655 .addToEventGroups(HFBV1) 586 656 .addToEventGroups(HFBL1) 587 .addToEventGroups(LFBV4) 588 .addToEventGroups(LFBL4) 589 .addToEventGroups(HFBV4) 590 .addToEventGroups(HFBL4) 591 .save() 592 593 println 'Adding PPSH study' 657 //.addToEventGroups(LFBV4) 658 //.addToEventGroups(LFBL4) 659 //.addToEventGroups(HFBV4) 660 //.addToEventGroups(HFBL4) 661 662 // Add persons to study 663 def studyperson1 = new StudyPerson( person: person1, role: role1 ).save(); 664 def studyperson2 = new StudyPerson( person: person2, role: role2 ).save(); 665 666 exampleStudy 667 .addToPersons( studyperson1 ) 668 .addToPersons( studyperson2 ) 669 .save() 670 671 /* 672 println 'Adding PPSH study' 594 673 595 674 def humanStudy = new Study( -
trunk/grails-app/domain/dbnp/studycapturing/Event.groovy
r359 r370 88 88 89 89 def String toString() { 90 return eventDescription ? eventDescription.name: ""90 return fieldExists( 'Description' ) ? getFieldValue( 'Description') : "" 91 91 } 92 92 -
trunk/grails-app/domain/dbnp/studycapturing/Study.groovy
r359 r370 60 60 } 61 61 62 /** 63 * Return the unique Event templates that are used in this study 64 */ 65 def Set<Template> giveEventTemplates() { 66 TemplateEntity.giveTemplates(events); 67 } 62 68 69 /** 70 * Return the unique SamplingEvent templates that are used in this study 71 */ 72 def Set<Template> giveSamplingEventTemplates() { 73 TemplateEntity.giveTemplates(events); 74 } 75 63 76 /** 64 77 * Returns the template of all subjects in the study -
trunk/grails-app/domain/dbnp/studycapturing/TemplateEntity.groovy
r359 r370 263 263 264 264 /** 265 * Check whether a given template field exists or not 266 * @param fieldName The name of the template field 267 * @return true if the given field exists and false otherwise 268 */ 269 def fieldExists(String fieldName) { 270 TemplateFieldType fieldType = template.getFieldType(fieldName) 271 272 // If the field is found, a TemplateFieldType is returned 273 // otherwise null 274 if (fieldType) { 275 return true 276 } else { 277 return false 278 } 279 } 280 281 /** 265 282 * Set a template/entity field value 266 283 * @param fieldName The name of the template or entity field -
trunk/grails-app/views/study/list.gsp
r359 r370 71 71 72 72 </tr> 73 <g:if test="${studyInstance.fieldExists( 'Description' )}"> 73 74 <tr> 74 75 <td></td> 75 76 <td colspan="3"> 76 77 <b>${message(code: 'study.description.label', default: 'Description')} </b>: 77 ${fieldValue(bean: studyInstance, field: "description")}</td> 78 ${studyInstance.getFieldValue( 'Description' )} 79 80 </td> 78 81 </tr> 82 </g:if> 79 83 </table> 80 84 </g:each> -
trunk/grails-app/views/study/list_extended.gsp
r359 r370 21 21 <% def tmpList = [] %> 22 22 23 23 24 <div class="nav"> 24 25 <span class="menuButton"><a class="home" href="${createLink(uri: '/')}">Home</a></span> … … 43 44 <% }} %> 44 45 45 <% if (selectedStudies.size()>0) {%> 46 <% 47 /* Determine all template fields that are available in one or more templates used */ 48 def allTemplateFields = [] 49 selectedStudies.each { println it.giveFields(); allTemplateFields += it.giveFields() } 50 allTemplateFields = allTemplateFields.unique(); 51 %> 52 <g:if test="${selectedStudies.size()>0}"> 46 53 47 54 <div id="tabs"> … … 49 56 <li><a href="#study">Study Information</a></li> 50 57 <li><a href="#subjects">Subjects</a></li> 51 <li><a href="#groups">Groups</a></li>52 <li><a href="#protocols">Protocols</a></li>53 58 <li><a href="#events">Events</a></li> 54 <li><a href="#event-description">Event Description</a></li>55 59 <li><a href="#event-group">Event Groups</a></li> 56 60 <li><a href="#assays">Assays</a></li> 61 <li><a href="#persons">Persons</a></li> 57 62 </ul> 58 63 … … 74 79 </g:each> 75 80 </tr> 76 77 <g:each in="${att_list}" var="att"> 78 <tr> 79 <td><b>${att[0].toUpperCase()+att.substring(1)}</b></td> 80 <g:each in="${selectedStudies}" status="k" var="studyIns"> 81 82 <g:if test="${att == 'events'}"> 83 <td> 84 <% def eventList = [] %> 85 <g:each in="${studyIns.events}" var="s"> 86 <% eventList.add(s.eventDescription) %> 87 </g:each> 88 <g:if test="${eventList.size()==0}"> 89 - 90 </g:if> 91 <g:else> 92 <% def sampEvent = eventList.get(0).name %> 93 ${sampEvent} 94 <g:each in="${eventList}" var="event"> 95 <g:if test="${(event.name!=sampEvent)}"> 96 ${event.name} 97 </g:if> 81 <tr> 82 <td><b>Template</b></td> 83 <g:each in="${selectedStudies}" status="k" var="studyIns"> 84 <td><g:link controller="template" action="show" id="${studyIns.template?.id}"> 85 ${studyInse?.template?.encodeAsHTML()}</g:link></td> 86 </g:each> 87 </tr> 88 89 <tr> 90 <td><b>Title</b></td> 91 <g:each in="${selectedStudies}" status="k" var="studyIns"> 92 <td>${fieldValue(bean: studyIns, field: "title")}</td> 93 </g:each> 94 </tr> 95 <tr> 96 <td><b>Start</b></td> 97 <g:each in="${selectedStudies}" status="k" var="studyIns"> 98 <td><g:formatDate date="${studyIns?.startDate}" /></td> 99 </g:each> 100 </tr> 101 102 <tr> 103 <td><b>Date Created</b></td> 104 <g:each in="${selectedStudies}" status="k" var="studyIns"> 105 <td><g:formatDate date="${studyIns?.dateCreated}" /></td> 106 </g:each> 107 </tr> 108 <tr> 109 <td><b>Last updated</b></td> 110 <g:each in="${selectedStudies}" status="k" var="studyIns"> 111 <td><g:formatDate date="${studyIns?.lastUpdated}" /></td> 112 </g:each> 113 </tr> 114 115 <tr> 116 <td><b>Events</b></td> 117 <g:each in="${selectedStudies}" status="k" var="studyIns"> 118 <td> 119 <g:if test="${studyIns.giveEventTemplates().size()==0}"> 120 - 121 </g:if> 122 <g:else> 123 ${studyIns.giveEventTemplates().name} 124 </g:else> 125 </td> 126 </g:each> 127 </tr> 128 <tr> 129 <td><b>Sampling Events</b></td> 130 <g:each in="${selectedStudies}" status="k" var="studyIns"> 131 <td> 132 <g:if test="${studyIns.giveSamplingEventTemplates().size()==0}"> 133 - 134 </g:if> 135 <g:else> 136 ${studyIns.giveSamplingEventTemplates().name} 137 </g:else> 138 </td> 139 </g:each> 140 </tr> 141 <tr> 142 <td><b>Owner</b></td> 143 <g:each in="${selectedStudies}" status="k" var="studyIns"> 144 <td> 145 <g:link controller="user" action="show" id="${studyIns?.owner?.id}">${studyIns?.owner?.encodeAsHTML()}</g:link> 146 </td> 147 </g:each> 148 </tr> 149 150 <tr> 151 <td><b>Readers</b></td> 152 <g:each in="${selectedStudies}" status="k" var="studyIns"> 153 <td> 154 <g:if test="${studyIns.readers.size()==0}"> 155 - 156 </g:if> 157 <g:else> 158 <g:each in="${studyIns.readers}" var="r"> 159 <li><g:link controller="user" action="show" id="${r.id}">${r?.encodeAsHTML()}</g:link></li> 160 </g:each> 161 </g:else> 162 </td> 163 </g:each> 164 </tr> 165 <tr> 166 <td><b>Editors</b></td> 167 <g:each in="${selectedStudies}" status="k" var="studyIns"> 168 <td> 169 <g:if test="${studyIns.editors.size()==0}"> 170 - 171 </g:if> 172 <g:else> 173 <g:each in="${studyIns.editors}" var="r"> 174 <li><g:link controller="user" action="show" id="${r.id}">${r?.encodeAsHTML()}</g:link></li> 175 </g:each> 176 </g:else> 177 </td> 178 </g:each> 179 </tr> 180 181 <!-- All template fields --> 182 <g:each in="${allTemplateFields}" var="field"> 183 <tr> 184 <td><b>${field.name}</b></td> 185 <g:each in="${selectedStudies}" status="k" var="studyIns"> 186 <td> 187 <g:if test="${studyIns.fieldExists(field.name)}"> 188 ${studyIns.getFieldValue(field.name)} 189 </g:if> 190 <g:else> 191 - 192 </g:else> 193 </td> 98 194 </g:each> 99 </g:else> 100 </td> 101 </g:if> 102 103 <g:elseif test="${att == 'samplingEvents'}"> 104 <td> 105 <% def SampeventList = [] %> 106 <g:each in="${studyIns.samplingEvents}" var="s"> 107 <% SampeventList.add(s.eventDescription) %> 108 </g:each> 109 <g:if test="${SampeventList.size()==0}"> 110 - 111 </g:if> 112 <g:else> 113 <% def samplEvent = SampeventList.get(0).name %> 114 ${samplEvent} 115 <g:each in="${SampeventList}" var="samplingEvent"> 116 <g:if test="${(samplingEvent.name!=samplEvent)}"> 117 ${samplingEvent.name} 118 </g:if> 119 </g:each> 120 </g:else> 121 </td> 122 </g:elseif> 123 124 <g:else> 125 <td>${fieldValue(bean: studyIns, field: att)}</td> 126 </g:else> 127 </g:each> 128 </tr> 195 </tr> 129 196 </g:each> 130 197 … … 186 253 </div> 187 254 188 <div id="groups">189 <table border="2">190 <tr>191 <g:each in="${selectedStudies}" var="study">192 <td width="50%"><center><b>${study.title}</b></center></td>193 </g:each>194 </tr>195 <tr>196 <g:each in="${selectedStudies}" var="study">197 <td>198 <g:if test="${study.groups.size()==0}"> No groups in this study </g:if>199 <g:else><center><b>${study.groups}</b></center></g:else>200 </td>201 </g:each>202 </tr>203 </table>204 </div>205 206 <div id="protocols">207 <table border="2">208 <tr>209 <g:each in="${selectedStudies}" var="study">210 <td width="50%"><center><b>${study.title}</b></center></td>211 </g:each>212 </tr>213 214 <tr>215 <g:each in="${selectedStudies}" var="stud">216 <td>217 <table>218 <tr>219 <td><b>Id </b></td>220 <td><b>Name</b></td>221 <td><b>Parameters</b></td>222 <td><b>Reference</b></td>223 </tr>224 225 <% def protocol_list = [] %>226 <% protocol_list.add(stud.events.eventDescription.protocol.unique()) %>227 <% protocol_list.addAll(stud.samplingEvents.eventDescription.protocol.unique()) %>228 229 <g:each in="${protocol_list}" var="protocol">230 <tr>231 <td><g:link controller="protocol" action="show" id="${protocol.id}">${protocol.id}</g:link></td>232 <td>${protocol.name}</td>233 <td>234 <g:each in="${protocol.parameters}" var="p"><ul><li>235 <g:link controller="protocolParameter" action="show" id="${p.id}">${p.name}</g:link>236 </li></ul>237 </g:each>238 </td>239 <td>${protocol.reference}</td>240 </tr>241 </g:each>242 </table>243 244 </td>245 </g:each>246 </tr>247 </table>248 </div>249 250 255 <div id="events"> 251 256 <table border="2"> 252 <tr> 253 <g:each in="${selectedStudies}" var="study"> 254 <td><center><b>${study.title}</b></center></td> 255 </g:each> 256 </tr> 257 258 <tr> 259 <g:each in="${selectedStudies}" var="stud"> 260 <td> 261 262 <table> 263 <tr> 264 <td><b>Event Description</b></td> 265 <td><b>Subject</b></td> 266 <td><b>Start Time</b></td> 267 <td><b>Duration</b></td> 268 <td><b>Sampling Event</b></td> 269 <td><b>Parameters</b></td> 270 </tr> 271 272 <g:each in="${stud.events}" var="e"> 273 <tr> 274 <td><g:link controller="event" action="show" id="${e.id}"> ${e.eventDescription.name}</g:link></td> 275 <td>?</td> 276 <td>${e.getPrettyDuration(stud.startDate,e.startTime)}</td> 277 <td>${e.getPrettyDuration()}</td> 278 <td><g:checkBox name="event" disabled="${true}" value="${false}"/></td> 279 280 </tr> 281 </g:each> 282 283 <g:each in="${stud.samplingEvents}" var="e"> 284 <tr> 285 <td><g:link controller="event" action="show" id="${e.id}">${e.eventDescription.name}</g:link></td> 286 <td>?</td> 287 <td>${e.getPrettyDuration(stud.startDate,e.startTime)}</td> 288 <td>${e.getPrettyDuration()}</td> 289 <td><g:checkBox name="samplingEvent" disabled="${true}" value="${true}"/></td> 290 291 <g:each in="${e.eventDescription.protocol.parameters}" var="param"> 292 <td> 293 ${param.name} : ${param.listEntries} 294 </td> 295 </g:each> 296 </tr> 297 </g:each> 298 299 300 </table> 301 </td> 302 </g:each> 303 </tr> 304 </table> 257 <tr> 258 <g:each in="${selectedStudies}" var="study"> 259 <td><center><b>${study.title}</b></center></td> 260 </g:each> 261 </tr> 262 263 <tr> 264 <g:each in="${selectedStudies}" var="study"> 265 <td> 266 267 <g:if test="${study.events.size()+study.samplingEvents.size()==0}"> 268 No events in this study 269 </g:if> 270 <g:else> 271 <table> 272 <tr> 273 <td><b>Id </b></td> 274 <td><b>Start time</b></td> 275 <td><b>Duration</b></td> 276 <td><b>Type</b></td> 277 <td><b>Sampling event</b></td> 278 <td><b>Parameters</b></td> 279 </tr> 280 281 <g:each in="${study.events + study.samplingEvents}" var="event"> 282 <tr> 283 <td><g:link controller="event" action="show" id="${event.id}">${event.id}</g:link></td> 284 <td>${event.getPrettyDuration(study.startDate,event.startTime)}</td> 285 <td>${event.getPrettyDuration()}</td> 286 <td>${event.template.name}</td> 287 <td> 288 <g:if test="${event instanceof dbnp.studycapturing.SamplingEvent}"> 289 <g:checkBox name="samplingEvent" disabled="${true}" value="${true}"/> 290 </g:if> 291 <g:else> 292 <g:checkBox name="event" disabled="${true}" value="${false}" /> 293 </g:else> 294 </td> 295 <td> 296 <g:set var="fieldCounter" value="${1}" /> 297 <g:each in="${event.giveFields()}" var="field"> 298 <g:if test="${event.getFieldValue(field.name)}"> 299 <g:if test="${fieldCounter > 1}">, </g:if> 300 ${field.name} = ${event.getFieldValue( field.name )} 301 <g:set var="fieldCounter" value="${fieldCounter + 1}" /> 302 </g:if> 303 </g:each> 304 </td> 305 </tr> 306 </g:each> 307 </table> 308 309 </g:else> 310 311 </td> 312 </g:each> 313 </tr> 314 </table> 305 315 306 316 </div> 307 308 <div id="event-description"> 309 <table border="2"> 310 <tr> 311 <g:each in="${selectedStudies}" var="study"> 312 <td><center><b>${study.title}</b></center></td> 313 </g:each> 314 </tr> 315 <tr> 316 <g:each in="${selectedStudies}" var="stud"> 317 <td> 318 <table> 319 <tr> 320 321 <td><b>Event Name</b></td> 322 <td><b>Parameters </b></td> 323 </tr> 324 <tr> 325 <td><b></b></td> 326 <td><b>Name</b></td> 327 <td><b>Description</b></td> 328 <td><b>Unit</b></td> 329 <td><b>Reference</b></td> 330 <td><b>Options</b></td> 331 <td><b>Type</b></td> 332 </tr> 333 <g:each in="${dbnp.studycapturing.EventDescription.list()}" var="e"> 334 <g:if test="${(stud.events.eventDescription.contains(e))}" > 335 <tr> 336 <td>${e.name} </td></tr><tr> 337 <g:each in="${e.protocol.parameters}" var="p"> 338 <td></td> 339 <td>${p.name}</td> 340 <td>${p.description}</td> 341 <td>${p.unit}</td> 342 <td>${p.reference}</td> 343 <g:if test="${(p.listEntries.size()==0)}" > 344 <td>-</td> 345 </g:if> 346 <g:else> 347 <td>${p.listEntries}</td> 348 </g:else> 349 <td>${p.type}</td> 350 </tr> 351 </g:each> 352 </g:if> 353 </g:each> 354 355 <g:each in="${dbnp.studycapturing.EventDescription.list()}" var="e"> 356 <g:if test="${(stud.samplingEvents.eventDescription.contains(e))}" > 357 <tr> 358 <td>${e.name} </td></tr><tr> 359 <g:each in="${e.protocol.parameters}" var="p"> 360 <td></td> 361 <td>${p.name}</td> 362 <td>${p.description}</td> 363 <td>${p.unit}</td> 364 <td>${p.reference}</td> 365 <g:if test="${(p.listEntries.size()==0)}" > 366 <td>-</td> 367 </g:if> 368 <g:else> 369 <td>${p.listEntries}</td> 370 </g:else> 371 <td>${p.type}</td> 372 </tr> 373 </g:each> 374 </g:if> 375 </g:each> 376 377 </table> 378 </td> 379 </g:each> 380 </tr> 381 </table> 382 383 </div> 384 385 <div id="event-group"> 386 </div> 317 318 <div id="event-group"> 319 <table border="2"> 320 <tr> 321 <g:each in="${selectedStudies}" var="study"> 322 <td><center><b>${study.title}</b></center></td> 323 </g:each> 324 </tr> 325 326 <tr> 327 <g:each in="${selectedStudies}" var="study"> 328 329 <g:if test="${study.eventGroups.size()==0}"> 330 No event groups in this study 331 </g:if> 332 <g:else> 333 <table> 334 <tr> 335 <td><b>Name</b></td> 336 <td colspan="${study.giveEventTemplates().size()}"><b>Events</b></td> 337 <td><b>Subjects</b></td> 338 </tr> 339 <tr> 340 <td></td> 341 <g:each in="${study.giveEventTemplates()}" var="eventTemplate"> 342 <td><b>${eventTemplate.name}</b></td> 343 </g:each> 344 <td></td> 345 </tr> 346 <g:each in="${study.eventGroups}" var="eventGroup"> 347 <tr> 348 <td>${eventGroup.name}</td> 349 350 <g:each in="${study.giveEventTemplates()}" var="currentEventTemplate"> 351 <td> 352 <g:each in="${eventGroup.events}" var="event"> 353 <g:if test="${event.template.name==currentEventTemplate.name}"> 354 355 <g:set var="fieldCounter" value="${1}" /> 356 <g:each in="${event.giveFields()}" var="field"> 357 <g:if test="${event.getFieldValue(field.name)}"> 358 <g:if test="${fieldCounter > 1}">, </g:if> 359 ${field.name} = ${event.getFieldValue( field.name )} 360 <g:set var="fieldCounter" value="${fieldCounter + 1}" /> 361 </g:if> 362 </g:each> 363 </g:if> 364 </g:each> 365 </td> 366 </g:each> 367 <td>${eventGroup.subjects.name.join( ', ' )}</td> 368 </tr> 369 </g:each> 370 </table> 371 </g:else> 372 373 </g:each> 374 </tr> 375 </table> 376 </div> 387 377 388 378 <div id="assays"> … … 438 428 </div> 439 429 430 431 <div id="persons"> 432 <table border="2"> 433 <tr> 434 <g:each in="${selectedStudies}" var="study"> 435 <td><center><b>${study.title}</b></center></td> 436 </g:each> 437 </tr> 438 <tr> 439 <g:each in="${selectedStudies}" var="study"> 440 <td> 441 <g:if test="${study.persons.size()==0}"> 442 No persons involved in this study 443 </g:if> 444 <g:else> 445 <table> 446 <tr> 447 448 <td><b>Name</b></td> 449 <td><b>Affiliations</b></td> 450 <td><b>Role</b></td> 451 <td><b>Phone</b></td> 452 <td><b>Email</b></td> 453 </tr> 454 <g:each in="${study.persons}" var="studyperson"> 455 <tr> 456 <td>${studyperson.person.firstName} ${studyperson.person.midInitials} ${studyperson.person.lastName}</td> 457 <td> 458 ${studyperson.person.affiliations.name.join(', ')} 459 </td> 460 <td>${studyperson.role.name}</td> 461 <td>${studyperson.person.phone}</td> 462 <td>${studyperson.person.email}</td> 463 </tr> 464 </g:each> 465 </table> 466 </g:else> 467 </td> 468 </g:each> 469 </tr> 470 </table> 471 472 </div> 473 440 474 </div> 441 475 442 < % } %>476 </g:if> 443 477 444 <% if (selectedStudies.size()==0) {%>478 <g:if test="${selectedStudies.size()==0}"> 445 479 Please select studies to compare. 446 < % } %>480 </g:if> 447 481 448 482 </div> -
trunk/grails-app/views/study/show.gsp
r359 r370 29 29 <div class="dialog"> 30 30 31 <% protocolList = dbnp.studycapturing.Protocol.list() %>32 <% def study_eventsDescription = [] %>33 <% study_eventsDescription = studyInstance.events.eventDescription.unique() %>34 <% study_eventsDescription.addAll(studyInstance.samplingEvents.eventDescription.unique()) %>35 <% def study_events = [] %>36 <% study_events = studyInstance.events.unique() %>37 <% study_events.addAll(studyInstance.samplingEvents.unique()) %>38 39 31 <div id="tabs"> 40 32 <ul> 41 33 <li><a href="#study">Study Information</a></li> 42 34 <li><a href="#subjects">Subjects</a></li> 43 <li><a href="#groups">Groups</a></li>44 <li><a href="#protocols">Protocols</a></li>45 35 <li><a href="#events">Events</a></li> 46 <li><a href="#event-description">Event Description</a></li>47 36 <li><a href="#event-group">Event Groups</a></li> 48 37 <li><a href="#assays">Assays</a></li> 38 <li><a href="#persons">Persons</a></li> 49 39 </ul> 50 40 … … 55 45 <b> Start </b>:<g:formatDate date="${studyInstance?.startDate}" /> <br> 56 46 <b> Events </b>: 57 <g:if test="${studyInstance. events.eventDescription.size()==0}">47 <g:if test="${studyInstance.giveEventTemplates().size()==0}"> 58 48 - 59 49 </g:if> 60 50 <g:else> 61 ${studyInstance.events.eventDescription.unique().toString().replaceAll("]"," "). 62 substring(1,studyInstance.events.eventDescription.unique().toString().size())} 51 ${studyInstance.giveEventTemplates().name} 63 52 </g:else> 64 53 <br> 65 54 <b>Sampling Events </b>: 66 <g:if test="${studyInstance. samplingEvents.eventDescription.size()==0}">55 <g:if test="${studyInstance.giveSamplingEventTemplates().size()==0}"> 67 56 - 68 57 </g:if> 69 58 <g:else> 70 ${studyInstance.samplingEvents.eventDescription.unique().toString().replaceAll("]"," "). 71 substring(1,studyInstance.samplingEvents.eventDescription.unique().toString().size())} 59 ${studyInstance.giveSamplingEventTemplates().name} 72 60 </g:else> 73 61 <br> … … 86 74 </g:else> 87 75 <br> 88 <b>Code </b>: ${fieldValue(bean: studyInstance, field: "code")} <br> 76 77 <!-- All template fields --> 78 <g:each in="${studyInstance.giveFields()}" var="field"> 79 <b>${field.name}</b>: ${studyInstance.getFieldValue(field.name)}<br /> 80 </g:each> 81 89 82 <b>Editors </b>: 90 83 <g:if test="${studyInstance.editors.size()==0}"> … … 99 92 </g:else> 100 93 <br> 101 <b>EC Code </b>: ${fieldValue(bean: studyInstance, field: "ecCode")} <br>102 <b>Research Question </b>: ${fieldValue(bean: studyInstance, field: "researchQuestion")} <br>103 94 <b>Title </b>: ${fieldValue(bean: studyInstance, field: "title")} <br> 104 <b>Description </b>: ${fieldValue(bean: studyInstance, field: "description")} <br>105 95 <b>Owner </b>:<g:link controller="user" action="show" id="${studyInstance?.owner?.id}">${studyInstance?.owner?.encodeAsHTML()}</g:link> <br> 106 96 <b>Date Created </b>:<g:formatDate date="${studyInstance?.dateCreated}" /> <br> … … 129 119 <g:each in="${template.fields}" var="g"> 130 120 <td> 131 <% print s.getFieldValue(g.toString()) %>121 <% print s.getFieldValue(g.toString()) %> 132 122 </td> 133 123 </g:each> … … 140 130 </div> 141 131 142 <div id="groups">143 <g:if test="${studyInstance.groups.size()==0}">144 No groups in this study145 </g:if>146 <g:else>147 <g:each in="${studyInstance.groups}" var="g">148 ${g.name}149 </g:each>150 </g:else>151 </div>152 153 <div id="protocols">154 <% def protocol_list = [] %>155 <% protocol_list= studyInstance.events.eventDescription.protocol.unique() %>156 <g:if test="${protocol_list.size()==0}">157 No protocols in this study158 </g:if>159 <g:else>160 <table>161 <tr>162 <td><b>Id </b></td>163 <td><b>Name</b></td>164 <td><b>Parameters</b></td>165 <td><b>Reference</b></td>166 </tr>167 <g:each in="${protocol_list}" var="protocol">168 <tr>169 <td><g:link controller="protocol" action="show" id="${protocol.id}">${protocol.id}</g:link></td>170 <td>${protocol.name}</td>171 <td>172 <g:each in="${protocol.parameters}" var="p">173 <g:link controller="protocolParameter" action="show" id="${p.id}">${p.name}</g:link>174 </g:each>175 </td>176 <td>${protocol.reference}</td>177 </tr>178 179 </g:each>180 </table>181 </g:else>182 </div>183 132 184 133 <div id="events"> 185 <g:if test="${study_events.size()==0}"> 186 No events in this study 187 </g:if> 188 <g:else> 189 <table> 190 <tr> 191 <td><b>Subject</b></td> 192 <td><b>Start Time</b></td> 193 <td><b>Duration</b></td> 194 <td><b>Event Description</b></td> 195 <td><b>Sampling Event</b></td> 196 <td><b>Parameters</b></td> 197 </tr> 198 <g:each in="${study_events}" var="e"> 199 <tr> 200 <td>-</td> 201 <td>${e.getPrettyDuration(studyInstance.startDate,e.startTime)}</td> 202 <td>${e.getPrettyDuration()}</td> 203 <td><g:link controller="event" action="show" id="${e.id}"> ${e.eventDescription.name}</g:link></td> 204 <td> 205 <g:if test="${e instanceof dbnp.studycapturing.SamplingEvent}"> 206 <g:checkBox name="samplingEvent" disabled="${true}" value="${true}"/> 207 </g:if> 208 <g:else> 209 <g:checkBox name="event" disabled="${true}" value="${false}"/> 210 </g:else> 211 </td> 212 <td> 213 <g:if test="${e.parameterStringValues.size()>0}"> 214 <% def stringValues = e.parameterStringValues.toString().replaceAll("}"," ") %> 215 <% print stringValues.substring(1,stringValues.size()) %> 216 </g:if> 217 <g:elseif test="${e.parameterIntegerValues.size()>0}"> 218 <% def integerValues = e.parameterInteger.toString().replaceAll("}"," ") %> 219 <% print integerValues.substring(1,integerValues.size()) %> 220 </g:elseif> 221 <g:elseif test="${e.parameterFloatValues.size()>0}"> 222 <% def floatValues = e.parameterFloatValues.toString().replaceAll("}"," ") %> 223 <% print floatValues.substring(1,floatValues.size()) %> 224 </g:elseif> 225 </td> 226 </tr> 227 </g:each> 228 </table> 229 </g:else> 230 </div> 231 232 <div id="event-description"> 233 <g:if test="${study_eventsDescription.size()==0}"> 234 No events description in this study 235 </g:if> 236 <g:else> 237 <table> 238 <tr> 239 <td><b>Event Name</b></td> 240 <td><b>Parameters </b></td> 241 </tr> 242 <tr> 243 <td><b></b></td> 244 <td><b>Name</b></td> 245 <td><b>Description</b></td> 246 <td><b>Unit</b></td> 247 <td><b>Reference</b></td> 248 <td><b>Options</b></td> 249 <td><b>Type</b></td> 250 </tr> 251 <g:each in="${study_eventsDescription}" var="e"> 252 <tr> 253 <td>${e.name} </td> 254 <g:each in="${e.protocol.parameters}" var="p"> 255 <td>${p.name}</td> 256 <td>${p.description}</td> 257 <td>${p.unit}</td> 258 <td>${p.reference}</td> 259 <g:if test="${(p.listEntries.size()==0)}" > 260 <td>-</td> 261 </g:if> 262 <g:else> 263 <td>${p.listEntries.toString().replaceAll("]"," ").substring(1,p.listEntries.toString().size())}</td> 264 </g:else> 265 <td>${p.type}</td> 134 <g:if test="${studyInstance.events.size()==0}"> 135 No events in this study 136 </g:if> 137 <g:else> 138 139 <table> 140 <tr> 141 <td><b>Id </b></td> 142 <td><b>Start time</b></td> 143 <td><b>Duration</b></td> 144 <td><b>Type</b></td> 145 <td><b>Sampling event</b></td> 146 <td><b>Parameters</b></td> 147 </tr> 148 149 <g:each in="${studyInstance.events}" var="event"> 150 <tr> 151 <td><g:link controller="event" action="show" id="${event.id}">${event.id}</g:link></td> 152 <td>${event.getPrettyDuration(studyInstance.startDate,event.startTime)}</td> 153 <td>${event.getPrettyDuration()}</td> 154 <td>${event.template.name}</td> 155 <td> 156 <g:if test="${event instanceof dbnp.studycapturing.SamplingEvent}"> 157 <g:checkBox name="samplingEvent" disabled="${true}" value="${true}"/> 158 </g:if> 159 <g:else> 160 <g:checkBox name="event" disabled="${true}" value="${false}" /> 161 </g:else> 162 </td> 163 <td> 164 <g:set var="fieldCounter" value="${1}" /> 165 <g:each in="${event.giveFields()}" var="field"> 166 <g:if test="${event.getFieldValue(field.name)}"> 167 <g:if test="${fieldCounter > 1}">, </g:if> 168 ${field.name} = ${event.getFieldValue( field.name )} 169 <g:set var="fieldCounter" value="${fieldCounter + 1}" /> 170 </g:if> 171 </g:each> 172 </td> 266 173 </tr> 267 174 </g:each> 268 </g:each> 269 </table> 270 271 <g:form controller="eventDescription" action="create"> 272 <INPUT TYPE=submit name=submit Value="New Event Description"> 273 </g:form> 274 </g:else> 175 176 </table> 177 178 </g:else> 275 179 </div> 276 180 … … 280 184 </g:if> 281 185 <g:else> 282 <table> 283 <tr> 284 <td><b>Name</b></td> 285 <td colspan="${study_eventsDescription.size()}"><b>Events</b></td> 286 <td><b>Subjects</b></td> 287 </tr> 288 <tr> 289 <td></td> 290 <g:each in="${study_eventsDescription}" var="list"> 291 <td> 292 <b>${list}</b> 293 </td> 294 </g:each> 295 </tr> 296 <g:each in="${studyInstance.eventGroups}" var="eventGroup"> 297 <tr> 298 <td>${eventGroup.name}</td> 299 300 <g:each in="${study_eventsDescription}" var="des"> 301 <td> 302 <g:each in="${eventGroup.events}" var="e"> 303 <g:if test="${e.eventDescription==des}"> 304 <g:if test="${e.parameterStringValues.size()>0}"> 305 <% def stringValues = e.parameterStringValues.toString().replaceAll("}"," ") %> 306 <% print stringValues.substring(1,stringValues.size()) %> 307 </g:if> 308 <g:elseif test="${e.parameterIntegerValues.size()>0}"> 309 <% def integerValues = e.parameterInteger.toString().replaceAll("}"," ") %> 310 <% print integerValues.substring(1,integerValues.size()) %> 311 </g:elseif> 312 <g:elseif test="${e.parameterFloatValues.size()>0}"> 313 <% def floatValues = e.parameterFloatValues.toString().replaceAll("}"," ") %> 314 <% print floatValues.substring(1,floatValues.size()) %> 315 </g:elseif> 316 </g:if> 317 </g:each> 318 </td> 319 </g:each> 320 321 <td>${eventGroup.subjects.name.toString().replaceAll("]"," "). 322 substring(1,eventGroup.subjects.name.toString().size())}</td> 323 </tr> 324 </g:each> 325 </table> 186 <table> 187 <tr> 188 <td><b>Name</b></td> 189 <td colspan="${studyInstance.giveEventTemplates().size()}"><b>Events</b></td> 190 <td><b>Subjects</b></td> 191 </tr> 192 <tr> 193 <td></td> 194 <g:each in="${studyInstance.giveEventTemplates()}" var="eventTemplate"> 195 <td><b>${eventTemplate.name}</b></td> 196 </g:each> 197 <td></td> 198 </tr> 199 <g:each in="${studyInstance.eventGroups}" var="eventGroup"> 200 <tr> 201 <td>${eventGroup.name}</td> 202 203 <g:each in="${studyInstance.giveEventTemplates()}" var="currentEventTemplate"> 204 <td> 205 <g:each in="${eventGroup.events}" var="event"> 206 <g:if test="${event.template.name==currentEventTemplate.name}"> 207 208 <g:set var="fieldCounter" value="${1}" /> 209 <g:each in="${event.giveFields()}" var="field"> 210 <g:if test="${event.getFieldValue(field.name)}"> 211 <g:if test="${fieldCounter > 1}">, </g:if> 212 ${field.name} = ${event.getFieldValue( field.name )} 213 <g:set var="fieldCounter" value="${fieldCounter + 1}" /> 214 </g:if> 215 </g:each> 216 </g:if> 217 </g:each> 218 </td> 219 </g:each> 220 <td>${eventGroup.subjects.name.join( ', ' )}</td> 221 </tr> 222 </g:each> 223 </table> 326 224 </g:else> 327 225 </div> … … 360 258 </div> 361 259 260 <div id="persons"> 261 <g:if test="${studyInstance.persons.size()==0}"> 262 No persons involved in this study 263 </g:if> 264 <g:else> 265 <table> 266 <tr> 267 <td><b>Name</b></td> 268 <td><b>Affiliations</b></td> 269 <td><b>Role</b></td> 270 <td><b>Phone</b></td> 271 <td><b>Email</b></td> 272 </tr> 273 <g:each in="${studyInstance.persons}" var="studyperson"> 274 <tr> 275 <td>${studyperson.person.firstName} ${studyperson.person.midInitials} ${studyperson.person.lastName}</td> 276 <td> 277 ${studyperson.person.affiliations.name.join(', ')} 278 </td> 279 <td>${studyperson.role.name}</td> 280 <td>${studyperson.person.phone}</td> 281 <td>${studyperson.person.email}</td> 282 </tr> 283 </g:each> 284 </table> 285 </g:else> 286 </div> 362 287 </div> 363 288 </div>
Note: See TracChangeset
for help on using the changeset viewer.