root/trunk/grails-app/views/study/show_samples.gsp @ 1224

Revision 1224, 3.0 KB (checked in by robert@…, 3 years ago)

Fixed issue in study overview with double columns. See ticket #155

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
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>${sample.parentEvent?.template?.name} at ${sample.parentEvent?.getStartTimeString()}</td>
85                  <g:each in="${sample.giveDomainFields()}" var="field">
86                        <td><wizard:showTemplateField field="${field}" entity="${sample}" /></td>
87                  </g:each>
88
89                  <g:each in="${showSampleFields}" var="fieldname">
90                        <td>
91                          <g:if test="${sample.fieldExists(fieldname)}">
92                                <g:set var="field" value="${sample.getField(fieldname)}" />
93                                <wizard:showTemplateField field="${field}" entity="${sample}" />
94                          </g:if>
95                          <g:else>
96                                N/A
97                          </g:else>
98                        </td>
99                  </g:each>
100
101                </tr>
102                <g:set var="i" value="${i + 1}" />
103          </g:each>
104        </g:each>
105
106  </table>
107</g:else>
Note: See TracBrowser for help on using the browser.