source: trunk/grails-app/views/run/show.gsp @ 9

Last change on this file since 9 was 9, checked in by robert@…, 8 years ago
File size: 6.7 KB
Line 
1<html>
2        <head>
3                <meta name="layout" content="main" />
4                <title>Show run ${run.name} | Metagenomics | dbNP</title>
5               
6                <link rel="stylesheet" href="<g:resource dir="css" file="showAssay.css" />" type="text/css"/>
7                <link rel="stylesheet" href="<g:resource dir="css" file="fileuploader.new.css" />" type="text/css"/>
8               
9                <g:javascript src="jquery.ui.tabbeddialog.js" />
10                <g:javascript src="addFilesDialog.js" />
11
12                <g:javascript src="run.show.enterTagsDialog.js" />
13                <g:javascript src="run.show.assayDialog.js" />
14                <g:javascript src="run.show.runDialog.js" />
15                <g:javascript src="showSampleDialog.js" />
16
17                <g:javascript src="assay.show.showRunDialog.js" />
18
19                <g:javascript src="fileuploader.new.js" />
20                <g:javascript src="fileuploads.new.js" />
21               
22                <script>
23                        var runId = ${run.id};
24                        var numOtherAssays = ${otherAssays.size()};
25
26                        // Create a variable with assay names to check for existing names
27                        var runNames = [];
28                        <g:each in="${allRuns}" var="currentrun">
29                                runNames[ runNames.length ] = {id: ${currentrun.id}, name: '${currentrun.name}', alreadyAdded: false };
30                        </g:each>
31                       
32                        function initializeUploadedFiles( selector ) {
33                                if( selector == undefined )
34                                        selector = "";
35                               
36                                $( selector + ' .uploadedFile').each( function( idx, el ) {
37                                        $(el).html( createFileHTML( $(el).text(), 'getPermanent' ) );
38                                });
39                        }
40
41                        // Initializefiles on load
42                        $(function() { initializeUploadedFiles(); });
43                </script>
44        </head>
45<body>
46        <h1>
47                Run ${run.name}
48        </h1>
49       
50        <div id="editRunDialog" class="dialog"></div>
51        <div class="blok_data">
52                <label>Run</label>: ${run.name}<br />
53                <label>Date</label>: <g:formatDate format="dd-MM-yyyy" date="${run.date}"/><br />
54                <label>Supplier</label>: ${run.supplier}<br />
55                <label>Machine</label>: ${run.machine}<br />
56                <label>Parameters</label>: <g:uploadedFile value="${run.parameterFile}" /><br />
57                <a href="#" onClick="showEditRunDialog( ${run.id} ); return false;">Edit run</a>
58        </div>
59        <div class="blok_data">
60                <label># assays</label>: ${run.assays?.size()}
61                <% def numHidden = run.assays?.findAll { !it.study.canRead( session.user ) }.size() ; %>
62                <g:if test="${numHidden}">
63                        (${numHidden}
64                        <a href="#" onClick="alert( '${numHidden} assay(s) from this run are hidden because you don\'t have the right permissions to view them.' ); return false;">
65                        hidden</a>)
66                </g:if>
67                <br />
68       
69                <label># samples</label>: ${run.assaySamples?.size()}
70                <% numHidden = run.assaySamples?.findAll { !it.assay?.study.canRead( session.user ) }.size() ; %>
71                <g:if test="${numHidden}">
72                        (${numHidden}
73                        <a href="#" onClick="alert( '${numHidden} sample(s) from this run are hidden because you don\'t have the right permissions to view them.' ); return false;">
74                        hidden</a>)
75                </g:if>
76                <br />
77                <label># sequences</label>: ${run.numSequences()}<br />
78                <label># files</label>: ${run.numFiles()}<br />
79        </div>
80       
81        <!-- Samples -->
82        <h2>Samples</h2>
83        <g:if test="${run.assaySamples == null || run.assaySamples.size() == 0}">
84                No samples found in run.
85        </g:if>
86        <g:else>
87                <table class="paginate">
88                        <thead>
89                                <tr>
90                                        <th nowrap>name</th>
91                                        <th nowrap>assay</th>
92                                        <th nowrap>subject</th>
93                                        <th nowrap>event</th>
94                                        <th nowrap># sequences</th>
95                                </tr>
96                        </thead>                       
97                        <tbody>
98                                <% def assaySamples = run.assaySamples.findAll { it.assay?.study.canRead( session.user ) }.toList().sort { it.sample.name }; %>
99                                <g:each in="${assaySamples}" var="assaySample">
100                                        <tr>
101                                                <td><a href="#" onClick="showSample(${assaySample.id}, 'run'); return false;">${assaySample.sample.name}</a></td>
102                                                <td>${assaySample.assay.study.name} - ${assaySample.assay.name}</td>
103                                                <td>${assaySample.sample.subject}</td>
104                                                <td>${assaySample.sample.event}</td>
105                                                <td>${assaySample.numSequences()}</td>
106                                        </tr>
107                                </g:each>
108                        </tbody>
109                </table>
110                <g:if test="${editable}">
111                        <% def writableAssaySamples = assaySamples.findAll { it.assay.study.canWrite( session.user ) } %>
112                        <g:if test="${writableAssaySamples.size() > 0}">
113                                <input type="button" value="Edit sample data" onClick="showEnterTagsDialog();">
114                                <input type="button" value="Add sequence files" onClick="showAddFilesDialog();" <g:if test="${run.assays == null || run.assays.size() == 0}">disabled="disabled"</g:if>>
115                                <g:render template="enterTagsDialog" model="[run: run, writableAssaySamples: writableAssaySamples]" />
116                                <g:render template="addFilesDialog" model="[run: run]" />
117                        </g:if>
118                        <g:else>
119                                <input type="button" value="Edit sample data" disabled="disabled">
120                                <input type="button" value="Add sequence files" disabled="disabled">
121                        </g:else>
122
123                </g:if>
124                <div id="showSampleDialog" class="dialog"></div>
125        </g:else>       
126
127        <!-- Runs -->
128        <h2>Assays</h2>
129        <g:if test="${run.assays == null || run.assays.size() == 0}">
130                No assay found for this run
131        </g:if>
132        <g:else>
133                <table class="paginate">
134                        <thead>
135                                <tr>
136                                        <th nowrap>name</th>
137                                        <th nowrap>study</th>
138                                        <th nowrap># samples</th>
139                                        <th nowrap>other runs</th>
140                                        <th class="nonsortable"></th>
141                                </tr>
142                        </thead>                       
143                        <tbody>
144                                <% def assays = run.assays.findAll { it.study.canRead( session.user ) }.toList().sort { it.name }; %>
145                                <g:each in="${assays}" var="assay">
146                                        <tr>
147                                                <td><g:link controller="assay" action="show" id="${assay.id}">${assay.name}</g:link></td>
148                                                <td>${assay.study?.name}</td>
149                                                <td>${assay.assaySamples?.size()}</td>
150                                                <td>
151                                                        <g:if test="${assay.runs?.size() == 1}">
152                                                                <% /* If only 1 run is found, then it is the current one */ %>
153                                                                -
154                                                        </g:if>
155                                                        <g:else>
156                                                                <g:each in="${assay.runs - run}" var="otherRun">
157                                                                        <g:link action="show" id="${otherRun.id}">${otherRun.name}</g:link><br />
158                                                                </g:each>
159                                                        </g:else>
160                                                </td>
161                                                <td class="button">
162                                                        <g:if test="${run.samples(assay.id).size()}">
163                                                                <img src="${fam.icon(name: 'application_delete')}" class="disabled" title="You can't remove this assay because sequences from this assay are coupled to this run." />
164                                                        </g:if>
165                                                        <g:else>
166                                                                <g:link onClick="return confirm( 'Are you sure you want to remove the selected assay from this run?' );" controller="run" action="removeAssay" id="${run.id}" params="${[assay_id: assay.id]}" ><img src="${fam.icon(name: 'application_delete')}" /></g:link>
167                                                        </g:else>
168                                                </td>
169                                        </tr>
170                                </g:each>
171                        </tbody>
172                </table>
173        </g:else>
174        <% def writableAssays = otherAssays.findAll { it.study.canWrite( session.user ) } %>
175        <g:if test="${editable}">
176                <g:if test="${writableAssays.size() > 0}">
177                        <input type="button" value="Add assay" onClick="showAddAssayDialog();" />
178                        <g:render template="addAssayDialog" model="[run: run, writableAssays: writableAssays]" />
179                </g:if>
180                <g:else>
181                        <input type="button" value="Add assay" disabled="disabled" />
182                </g:else>
183        </g:if>
184        <div id="showRunDialog" class="dialog"></div>
185</body>
186</html>
Note: See TracBrowser for help on using the repository browser.