root/trunk/grails-app/views/study/show.gsp @ 1245

Revision 1245, 7.6 KB (checked in by work@…, 3 years ago)

- moved 'description' from study template fields into domain variables so that every study will contain a -non required- description which is more logical

  • Property svn:keywords set to Author Date Rev
Line 
1<%@ page import="dbnp.studycapturing.Study" %>
2<%@ page import="dbnp.studycapturing.EventGroup" %>
3<%@ page import="dbnp.studycapturing.RelTime" %>
4<html>
5<head>
6        <meta name="layout" content="main"/>
7        <g:if test="${studyList.size() == 1}">
8        <meta property="og:title" content="${studyList[0].title}"/>
9        <meta property="og:description" content="${(studyList[0].getFieldValue('description')) ? studyList[0].getFieldValue('description') : 'A study in the Generic Study Capture Framework'}"/>
10        </g:if>
11        <g:set var="entityName" value="${message(code: 'study.label', default: 'Study')}"/>
12        <title><g:message code="default.show.label" args="[entityName]"/></title>
13        <script type="text/javascript">
14                // Number of timelines that should be loaded
15                var numTimelines = ${studyList?.size()};
16
17                // This method is called on the event body.onLoad
18                $(function() {
19                        $("#tabs").tabs({
20                                load: function(event, ui) {
21                                        // If the events tab is shown, the timeline should be redrawn
22                                        if (ui.tab.hash == '#Events_timeline') {
23                                                loadTimeline('eventstimeline', 'eventtitles', 0);
24                                        }
25                                },
26                                ajaxOptions: {
27                                        error: function(xhr, status, index, anchor) {
28                                                $(anchor.hash).html(
29                                                        "Couldn't load this tab. We'll try to fix this as soon as possible.");
30                                        }
31                                }
32                        });
33                });
34
35                // Parameters for the SIMILE timeline
36                Timeline_ajax_url = "${resource(dir: 'js', file: 'timeline-simile/timeline_ajax/simile-ajax-api.js')}";
37                Timeline_urlPrefix = '${resource(dir: 'js', file: 'timeline-simile/')}';
38                Timeline_parameters = 'bundle=true';
39
40        </script>
41        <link rel="stylesheet" type="text/css" href="${resource(dir: 'css', file: 'studies.css')}"/>
42
43        <!-- Include scripts for the SIMILE timeline. See http://simile-widgets.org/wiki/ -->
44        <script src="${resource(dir: 'js', file: 'timeline-simile/timeline-api.js')}" type="text/javascript"></script>
45        <script src="${resource(dir: 'js', file: 'timeline-simile/custom-timeline.js')}" type="text/javascript"></script>
46        <script src="${resource(dir: 'js', file: 'timeline-simile/relative-time.js')}" type="text/javascript"></script>
47        <script src="${resource(dir: 'js', file: 'jquery-callback-1.2.js')}" type="text/javascript"></script>
48
49        <!-- Create the JSON objects for the timeline with events -->
50        <script type="text/javascript" src="<g:createLink action="createTimelineBandsJs" id="${studyList.id.join(',')}"/>" type="text/javascript"></script>
51</head>
52<body>
53
54<div class="body" id="studies">
55        <h1><g:message code="default.show.label" args="[entityName]"/></h1>
56        <g:if test="${flash.message}">
57                <div class="message">${flash.message}</div>
58        </g:if>
59        <div class="dialog">
60                <div id="tabs">
61                        <ul>
62                                <li><a href="#study">Study Information</a></li>
63                                <li><a href="<g:createLink action="show_subjects" id="${studyList.id.join(',')}"/>" title="Subjects"><span>Subjects</span></a></li>
64                                <li><a href="<g:createLink action="show_events_timeline" id="${studyList.id.join(',')}"/>" title="Events timeline"><span>Events timeline</span></a></li>
65                                <li><a href="<g:createLink action="show_events_table" id="${studyList.id.join(',')}"/>" title="Events table"><span>Events table</span></a></li>
66                                <li><a href="<g:createLink action="show_assays" id="${studyList.id.join(',')}"/>" title="Assays"><span>Assays</span></a></li>
67                                <li><a href="<g:createLink action="show_samples" id="${studyList.id.join(',')}"/>" title="Samples"><span>Samples</span></a></li>
68                                <li><a href="<g:createLink action="show_persons" id="${studyList.id.join(',')}"/>" title="Persons"><span>Persons</span></a></li>
69                                <li><a href="<g:createLink action="show_publications" id="${studyList.id.join(',')}"/>" title="Publications"><span>Publications</span></a></li>
70                        </ul>
71
72                        <div id="study">
73                                <table>
74                                <!-- only show the head section if there are multiple studies -->
75                                        <g:if test="${multipleStudies}">
76                                                <thead>
77                                                <tr>
78                                                        <th></th>
79                                                        <g:each in="${studyList}" var="studyInstance">
80                                                                <th>${studyInstance.title}</th>
81                                                        </g:each>
82                                                </tr>
83                                                </thead>
84                                        </g:if>
85                                        <%
86                                                // Determine a union of the fields from all studies, in order
87                                                // to show a proper list. We want every field to appear just once,
88                                                // so the list is filtered for unique values
89                                                studyFields = studyList[0].giveDomainFields() + studyList*.giveTemplateFields()?.flatten().unique()
90                                        %>
91                                <!-- Show all template and domain fields, if filled -->
92                                        <g:each in="${studyFields}" var="field">
93                                                <g:if test="${field.isFilledInList( studyList )}">
94                                                        <tr>
95                                                                <td>${field}</td>
96                                                                <g:each in="${studyList}" var="studyInstance">
97                                                                        <td>
98                                                                                <g:if test="${studyInstance.fieldExists(field.name)}">
99                                                                                        <wizard:showTemplateField field="${field}" entity="${studyInstance}"/>
100                                                                                </g:if>
101                                                                                <g:else>
102                                                                                        -
103                                                                                </g:else>
104                                                                        </td>
105                                                                </g:each>
106                                                        </tr>
107                                                </g:if>
108                                        </g:each>
109
110                                <!-- Add some extra fields -->
111                                        <tr>
112                                                <td>Events</td>
113                                                <g:each in="${studyList}" var="studyInstance">
114                                                        <td>
115                                                                <g:if test="${studyInstance.giveEventTemplates()?.size()==0}">
116                                                                        -
117                                                                </g:if>
118                                                                <g:else>
119                                                                        ${studyInstance.giveEventTemplates().name.join(", ")}
120                                                                </g:else>
121                                                        </td>
122                                                </g:each>
123                                        </tr>
124                                        <tr>
125                                                <td>Sampling events</td>
126                                                <g:each in="${studyList}" var="studyInstance">
127                                                        <td>
128                                                                <g:if test="${studyInstance.giveSamplingEventTemplates()?.size()==0}">
129                                                                        -
130                                                                </g:if>
131                                                                <g:else>
132                                                                        ${studyInstance.giveSamplingEventTemplates().name.join(", ")}
133                                                                </g:else>
134                                                        </td>
135                                                </g:each>
136                                        </tr>
137                                        <tr>
138                                                <td>Public</td>
139                                                <g:each in="${studyList}" var="studyInstance">
140                                                        <td>
141                                                                ${studyInstance.publicstudy}
142                                                        </td>
143                                                </g:each>
144                                        </tr>
145                                        <tr>
146                                                <td>Owner</td>
147                                                <g:each in="${studyList}" var="studyInstance">
148                                                        <td>
149                                                                ${studyInstance.owner?.username}
150                                                        </td>
151                                                </g:each>
152                                        </tr>
153                                        <tr>
154                                                <td>Readers</td>
155                                                <g:each in="${studyList}" var="studyInstance">
156                                                        <td>
157                                                                <g:if test="${studyInstance.readers.size() == 0}">
158                                                                        -
159                                                                </g:if>
160                                                                <g:else>
161                                                                        ${studyInstance.readers.username.join(", ")}
162                                                                </g:else>
163                                                        </td>
164                                                </g:each>
165                                        </tr>
166                                        <tr>
167                                                <td>Writers</td>
168                                                <g:each in="${studyList}" var="studyInstance">
169                                                        <td>
170                                                                <g:if test="${studyInstance.writers?.size()==0}">
171                                                                        -
172                                                                </g:if>
173                                                                <g:else>
174                                                                        ${studyInstance.writers.username.join(", ")}
175                                                                </g:else>
176                                                        </td>
177                                                </g:each>
178                                        </tr>
179                                </table>
180                        </div>
181
182                        <% /*
183                  All other tabs are moved to separate views and are loaded using
184                  ajax calls when a tab is opened. See http://jqueryui.com/demos/tabs/#ajax
185                */ %>
186
187                </div>
188        </div>
189        <br>
190        <div class="buttons">
191                <g:form action="delete">
192                        <g:if test="${studyList?.size() == 1}">
193                                <g:set var="studyInstance" value="${studyList[0]}"/>
194                                <g:hiddenField name="id" value="${studyInstance?.id}"/>
195                                <g:if test="${studyInstance.canWrite(loggedInUser)}">
196                                        <span class="button"><g:link class="edit" controller="wizard" params="[jump:'edit']" id="${studyInstance?.id}">${message(code: 'default.button.edit.label', default: 'Edit')}</g:link></span>
197                                </g:if>
198                                <g:if test="${studyInstance.isOwner(loggedInUser)}">
199                                        <span class="button"><g:actionSubmit class="delete" action="delete" value="${message(code: 'default.button.delete.label', default: 'Delete')}" onclick="return confirm('${message(code: 'default.button.delete.confirm.message', default: 'Are you sure?')}');"/></span>
200                                </g:if>
201                        </g:if>
202                        <span class="button"><g:link class="backToList" action="list">Back to list</g:link></span>
203                </g:form>
204        </div>
205</div>
206</body>
207</html>
Note: See TracBrowser for help on using the browser.