source: trunk/grails-app/views/study/show_samples.gsp @ 1769

Last change on this file since 1769 was 1769, checked in by robert@…, 9 years ago

Added fields to study view and fixed strange values for parentEvent in samples overview

  • Property svn:keywords set to Rev Author Date
File size: 3.1 KB
Line 
1<g:if test="${studyList*.samples.flatten()?.size()==0}">
2  No samples in the selected studies
3</g:if>
4<g:else>
5  <table>
6        <thead>
7          <tr>
8                <g:if test="${multipleStudies}">
9                  <th></th>
10                </g:if>
11
12                  <th>Parent Subject</th>
13                  <th>Parent Sampling Event</th>
14                  <th>Parent Event Group</th>
15
16                <g:each in="${new dbnp.studycapturing.Sample().giveDomainFields()}" var="field">
17                  <th>${field}</th>
18                </g:each>
19
20                <%
21                  // Determine a union of the fields for all different
22                  // samples in all studies. In order to show a proper list.
23                  // We want every field to appear just once, so the list is filtered
24                  // for unique names. This ensures that different template fields with
25                  // the same name, show up in the same column. This might happen when
26                  // both humans and mice are shown, where humans have a weight in kgs
27                  // and mice have a weight in grams.
28                  sampleTemplates = studyList*.giveSampleTemplates().flatten().unique()
29
30                  if( !sampleTemplates ) {
31                        sampleTemplates = [];
32                        sampleFields = [];
33                        showSampleFields = [];
34                  } else {
35                        sampleFields = sampleTemplates*.fields.flatten().name.unique()
36                        if( !sampleFields ) {
37                          sampleFields = [];
38                          showSampleFields = [];
39                        } else {
40                          // Filter out all fields that are left blank for all samples
41                          allSamples = studyList*.samples.flatten()
42
43                          showSampleFields = [];
44                          sampleFields.each { sampleField ->
45                                for( sample in allSamples )
46                                {
47                                  // If the field is filled for this subject, we have to
48                                  // show the field and should not check any other
49                                  // samples (hence the break)
50                                  if( sample.fieldExists( sampleField ) && sample.getFieldValue( sampleField ) ) {
51                                        showSampleFields << sampleField;
52                                        break;
53                                  }
54                                }
55                          }
56                        }
57                  }
58                %>
59
60                <g:each in="${showSampleFields}" var="field">
61                  <th>${field}</th>
62                </g:each>
63
64          </tr>
65        </thead>
66
67        <g:set var="i" value="${1}" />
68
69        <g:each in="${studyList}" var="studyInstance">
70          <%
71                // Sort samples by name
72                samples = studyInstance.samples;
73                sortedSamples = samples.sort( { a, b -> a.name <=> b.name } as Comparator )
74          %>
75
76          <g:each in="${sortedSamples}" var="sample" status="j">
77                <tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
78                  <g:if test="${multipleStudies && j==0}">
79                        <td class="studytitle" rowspan="${sortedSamples?.size()}">
80                          ${studyInstance.title}
81                        </td>
82                  </g:if>
83                        <td>${sample.parentSubject?.name}</td>
84                        <td><g:if test="${sample.parentEvent}">${sample.parentEvent?.template?.name} at ${sample.parentEvent?.getStartTimeString()}</g:if></td>
85                        <td>${sample.parentEventGroup?.name}</td>
86                  <g:each in="${sample.giveDomainFields()}" var="field">
87                        <td><af:showTemplateField field="${field}" entity="${sample}" /></td>
88                  </g:each>
89
90                  <g:each in="${showSampleFields}" var="fieldname">
91                        <td>
92                          <g:if test="${sample.fieldExists(fieldname)}">
93                                <g:set var="field" value="${sample.getField(fieldname)}" />
94                                <af:showTemplateField field="${field}" entity="${sample}" />
95                          </g:if>
96                          <g:else>
97                                N/A
98                          </g:else>
99                        </td>
100                  </g:each>
101
102                </tr>
103                <g:set var="i" value="${i + 1}" />
104          </g:each>
105        </g:each>
106
107  </table>
108</g:else>
Note: See TracBrowser for help on using the repository browser.