source: trunk/grails-app/views/assay/show.gsp @ 2

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

Initial import of basic functionality

File size: 5.3 KB
Line 
1<html>
2        <head>
3                <meta name="layout" content="main" />
4                <title>Show assay ${assay.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="assay.show.addFilesDialog.js" />
11                <g:javascript src="assay.show.enterTagsDialog.js" />
12                <g:javascript src="assay.show.runDialogs.js" />
13
14                <g:javascript src="fileuploader.new.js" />
15                <g:javascript src="fileuploads.new.js" />
16               
17                <script>
18                        var assayId = ${assay.id};
19                        var numOtherRuns = ${otherRuns.size()};
20
21                        // Create a variable with assay names to check for existing names
22                        var runNames = [];
23                        <g:each in="${assay.runs + otherRuns}" var="run">
24                                runNames[ runNames.length ] = {id: ${run.id}, name: '${run.name}', alreadyAdded: ${ run.assays.contains( assay ) ? 'true' : 'false' }};
25                        </g:each>
26                       
27                        $(function() {
28                                $('.uploadedFile').each( function( idx, el ) {
29                                        $(el).html( createFileHTML( $(el).text(), 'getPermanent' ) );
30                                });
31                        });
32                </script>
33        </head>
34<body>
35        <h1>
36                ${assay.study.name} - ${assay.name}
37        </h1>
38       
39        <label>Study</label>: <a target="_top" href="${ assay.study.viewUrl() }">${assay.study.name}</a><br />
40        <label>Assay</label>: ${assay.name}<br />
41        <label># samples</label>: ${assay.assaySamples?.size()}<br />
42        <label># sequences</label>: ${assay.numSequences()}<br />
43        <label># files</label>: ${assay.numFiles()}<br />
44
45        <!-- Samples -->
46        <h2>Samples</h2>
47        <g:if test="${assay.assaySamples == null || assay.assaySamples.size() == 0}">
48                No samples found in assay.
49                <g:if test="${editable}">
50                        Associate samples with this assay in <a target="_top" href="${ assay.study.viewUrl() }">GSCF</a>.
51                </g:if>
52        </g:if>
53        <g:else>
54                <table class="paginate">
55                        <thead>
56                                <tr>
57                                        <th nowrap>name</th>
58                                        <th nowrap>tag sequence</th>
59                                        <th nowrap># sequences</th>
60                                        <th nowrap>avg quality</th>
61                                        <th nowrap># unique sequences</th>
62                                </tr>
63                        </thead>                       
64                        <tbody>
65                                <% def assaySamples = assay.assaySamples.toList().sort { it.sample.name }; %>
66                                <g:each in="${assaySamples}" var="assaySample">
67                                        <tr>
68                                                <td>${assaySample.sample.name}</td>
69                                                <td>${assaySample.tagSequence}</td>
70                                                <td>${assaySample.numSequences()}</td>
71                                                <td>
72                                                        <g:if test="${assaySample.averageQuality() > 0.0}">
73                                                                <g:formatNumber number="${assaySample.averageQuality()}" format="0.0" />
74                                                        </g:if>
75                                                        <g:else>
76                                                                -
77                                                        </g:else>
78                                                </td>
79                                                <td>
80                                                        <g:if test="${assaySample.numUniqueSequences > 0}">
81                                                                ${assaySample.numUniqueSequences}
82                                                        </g:if>
83                                                        <g:else>
84                                                                -
85                                                        </g:else>
86                                                </td>
87                                        </tr>
88                                </g:each>
89                        </tbody>
90                </table>
91                <g:if test="${editable}">
92                        <input type="button" value="Edit sample data" onClick="showEnterTagsDialog();">
93                        <input type="button" value="Add sequence files" onClick="showAddFilesDialog();" <g:if test="${assay.runs == null || assay.runs.size() == 0}">disabled="disabled"</g:if>>
94                        <g:render template="enterTagsDialog" model="[assay: assay, sortedAssaySamples: assaySamples]" />
95                        <g:render template="addFilesDialog" model="[assay: assay]" />
96                </g:if>
97        </g:else>       
98
99        <!-- Runs -->
100        <h2>Runs</h2>
101        <g:if test="${assay.runs == null || assay.runs.size() == 0}">
102                No runs found for this assay.
103        </g:if>
104        <g:else>
105                <table class="paginate">
106                        <thead>
107                                <tr>
108                                        <th nowrap>name</th>
109                                        <th nowrap>date</th>
110                                        <th nowrap>machine</th>
111                                        <th nowrap>supplier</th>
112                                        <th nowrap>configuration</th>
113                                        <th nowrap>other assays</th>
114                                        <th class="nonsortable"></th>
115                                        <th class="nonsortable"></th>
116                                </tr>
117                        </thead>                       
118                        <tbody>
119                                <% def runs = assay.runs.toList().sort { it.name }; %>
120                                <g:each in="${runs}" var="run">
121                                        <tr>
122                                                <td>${run.name}</td>
123                                                <td><g:formatDate format="dd-MM-yyyy" date="${run.date}"/></td>
124                                                <td>${run.machine}</td>
125                                                <td>${run.supplier}</td>
126                                                <td><g:uploadedFile value="${run.parameterFile}"/></td>
127                                                <td>
128                                                        <g:if test="${run.assays?.size() == 1}">
129                                                                <% /* If only 1 assay is found, then it is the current one */ %>
130                                                                -
131                                                        </g:if>
132                                                        <g:else>
133                                                                <g:each in="${run.assays - assay}" var="otherAssay">
134                                                                        <g:link action="show" id="${otherAssay.id}">${otherAssay.name}</g:link><br />
135                                                                </g:each>
136                                                        </g:else>
137                                                </td>
138                                                <td class="button"><a href="#" onClick="showEditRunDialog( ${run.id}, '${run.name?.encodeAsJavaScript()}', '${run.date ? run.date.format( 'yyyy-mm-dd' ).encodeAsJavaScript() : ''}', '${run.machine?.encodeAsJavaScript()}', '${run.supplier?.encodeAsJavaScript()}', '${run.parameterFile?.encodeAsJavaScript()}' ); return false;"><img src="${fam.icon(name: 'application_edit')}" /></a></td>
139                                                <td class="button"><g:link onClick="return confirm( 'Are you sure you want to remove the selected run from this assay?' );" controller="assay" action="removeRun" id="${assay.id}" params="${[run_id: run.id]}" ><img src="${fam.icon(name: 'application_delete')}" /></g:link></td>
140                                        </tr>
141                                </g:each>
142                        </tbody>
143                </table>
144        </g:else>
145        <g:if test="${editable}">
146                <input type="button" value="Add run" onClick="showAddRunDialog();">
147                <g:render template="addRunDialog" model="[assay: assay]" />
148                <g:render template="editRunDialog" model="[assay: assay]" />
149        </g:if>
150</body>
151</html>
Note: See TracBrowser for help on using the repository browser.