source: trunk/grails-app/views/import/parseUploadResult.gsp @ 72

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

Implemented addition of logfiles to sequence data

File size: 7.9 KB
Line 
1<html>
2        <head>
3                <meta name="layout" content="main" />
4                <title>Processed files| Mass Sequencing | dbNP</title>
5               
6                <script>
7                        var entityId = ${entity.id};
8
9                        function showSampleDataWarning( select, i ) {
10                                if( $( 'option:selected', $(select) ).hasClass( 'containsdata' ) ) {
11                                        $( '#warningSampleContainsData_' + i ).show();
12                                } else {
13                                        $( '#warningSampleContainsData_' + i ).hide();
14                                }
15                        }
16                </script>
17        </head>
18<body>
19        <h1>
20                <g:if test="${entityType == 'assay'}">
21                        Assay ${entity.study?.name} - ${entity.name}
22                </g:if>
23                <g:else>
24                        Run ${entity.name}
25                </g:else>
26        </h1>
27       
28        <h2>Sequence files</h2>
29        <g:form name="saveProcessedFiles" action="saveMatchedFiles" id="${entity.id}" params="${[controller: controller]}">
30        <input type="hidden" name="entityType" value="${entityType}" />
31        <input type="hidden" name="processId" value="${processId}" />
32       
33                <g:if test="${matchedFiles.size() > 0}">
34                        <p>
35                                Match each sequencefile with the qualityfile, classification file and the sample it belongs to. Samples are already chosen for some files based
36                                on the given excelsheet or the filenames.
37                        </p>
38                        <p>
39                                By unchecking a sequence file you can exclude the file from being used.
40                        </p>
41                         
42                        <%
43                                def sortedSamples = entity.assaySamples.findAll { it.assay.study.canWrite( session.user ) }.sort() { a,b -> a.sample.name <=> b.sample.name }
44                        %>
45                        <g:if test="${sortedSamples.size()}">
46                                <table class="importProcessedFiles" cellspacing="0">
47                                        <thead>
48                                                <tr>
49                                                        <th></th>
50                                                        <th>Fasta file</th>
51                                                        <th># sequences</th>
52                                                        <th>Type</th>
53                                                        <th>Choice</th>
54                                                </tr>
55                                        </thead>
56                                       
57                                        <g:each in="${matchedFiles}" var="file" status="i">
58                                                <tr class="${ i % 2 == 0 ? 'even' : 'odd' }">
59                                                        <td>
60                                                                <g:hiddenField name="file.${i}.fasta" value="${file.fasta.filename}" />
61                                                                <g:checkBox name="file.${i}.include" value="${file.checked}" />
62                                                        </td>
63                                                        <td class="name" valign="center">${file.fasta.originalfilename}</td>
64                                                        <td class="sequences">${file.fasta.numSequences}</td>
65                                                        <td class="type">Sample</td>
66                                                        <td nowrap>
67                                                                <select name="file.${i}.assaySample" onChange="showSampleDataWarning(this, ${i});">
68                                                                        <g:each in="${sortedSamples}" var="assaySample">
69                                                                                <option
70                                                                                        <g:if test="${file.assaySample?.id == assaySample.id}">
71                                                                                                <g:set var="selectedAssaySample" value="${assaySample}" />
72                                                                                                selected="selected"
73                                                                                        </g:if>
74                                                                                        value="${assaySample.id}" class="<g:if test="${assaySample?.sequenceData?.size() > 0}">containsdata</g:if><g:else>nodata</g:else>">${assaySample.sample.name}</option>
75                                                                        </g:each>
76                                                                </select>
77                                                                <span id="warningSampleContainsData_${i}" class="warningSampleContainsData" <g:if test="${selectedAssaySample?.sequenceData?.size() > 0}">style="display: inline;"</g:if>>
78                                                                        <img src="${fam.icon( name: "exclamation" ) }" title="This sample already contains sequences. Adding sequences doesn't replace the old ones." />
79                                                                </span>
80                                                        </td>
81                                                </tr>
82                                               
83                                                <g:if test="${existingTypes.qual}">
84                                                        <tr class="${ i % 2 == 0 ? 'even' : 'odd' }">
85                                                                <td></td>
86                                                                <td></td>
87                                                                <td></td>
88                                                                <td>Quality file</td>
89                                                                <td>
90                                                                        <g:if test="${file.feasibleQuals?.size()}">
91                                                                                <g:select name="file.${i}.qual" from="${file.feasibleQuals}" optionKey="filename" optionValue="originalfilename" value="${file.qual?.filename}" noSelection="['': '- No qual file -']"/>
92                                                                        </g:if>
93                                                                        <g:else>
94                                                                                <select name="" disabled="disabled"><option value="">No qual file available</option></select>
95                                                                        </g:else>
96                                                                </td>
97                                                        </tr>
98                                                </g:if>
99                                                <g:if test="${existingTypes.taxonomy}">
100                                                        <tr class="${ i % 2 == 0 ? 'even' : 'odd' }">
101                                                                <td></td>
102                                                                <td></td>
103                                                                <td></td>
104                                                                <td>Classification file</td>
105                                                                <td>
106                                                                        <g:if test="${file.feasibleClassifications?.size()}">
107                                                                                <g:select name="file.${i}.classification" from="${file.feasibleClassifications}" optionKey="filename" optionValue="originalfilename" value="${file.classification?.filename}" noSelection="['': '- No classification -']"/>
108                                                                        </g:if>
109                                                                        <g:else>
110                                                                                <select name="" disabled="disabled"><option value="">No classification available</option></select>
111                                                                        </g:else>
112                                                                </td>
113                                                        </tr>
114                                                </g:if>
115                                                <g:if test="${existingTypes.logfile}">
116                                                        <tr class="${ i % 2 == 0 ? 'even' : 'odd' }">
117                                                                <td></td>
118                                                                <td></td>
119                                                                <td></td>
120                                                                <td>Log file</td>
121                                                                <td>
122                                                                        <g:if test="${file.feasibleLogfiles?.size()}">
123                                                                                <g:select name="file.${i}.logfile" from="${file.feasibleLogfiles}" optionKey="filename" optionValue="originalfilename" value="${file.logfile?.filename}" noSelection="['': '- No logfile -']"/>
124                                                                        </g:if>
125                                                                        <g:else>
126                                                                                <select name="" disabled="disabled"><option value="">No logfile available</option></select>
127                                                                        </g:else>
128                                                                </td>
129                                                        </tr>
130                                                </g:if>
131                                        </g:each>
132                               
133                                </table>
134                        </g:if>
135                        <g:else>
136                                <p>${parsedFiles.success?.size()} files were successfully uploaded, but no samples are available to connect the data to.</p>
137                        </g:else>
138                </g:if>
139                <g:else>
140                        <p>
141                                ${parsedFiles.success?.size()} files were successfully uploaded, but no FASTA file could be determined. Please
142                                upload at least one FASTA file if sequences should be added.
143                        </p>
144                </g:else>
145               
146                <g:if test="${remainingClassificationFiles}">
147                        <h2>Clasification files</h2>
148                        <p>
149                                The following classification files could not be matched with an uploaded sequence file. Please choose which file
150                                belongs to which sample and data file.
151                        </p>
152                        <p>
153                                <b>N.B.</b> Existing classification data wil be removed for the selected file.
154                        </p>
155                        <table class="importProcessedFiles">
156                                <thead>
157                                        <tr>
158                                                <th></th>
159                                                <th>Classification file</th>
160                                                <th># sequences</th>
161                                                <th>Matching existing file</th>
162                                        </tr>
163                                </thead>
164                               
165                                <g:each in="${remainingClassificationFiles}" var="file" status="i">
166                                        <tr class="${ i % 2 == 0 ? 'even' : 'odd' }">
167                                                <td>
168                                                        <g:hiddenField name="remainingClassification.${i}.filename" value="${file.filename}" />
169                                                        <g:checkBox name="remainingClassification.${i}.include" value="${file.feasibleSequenceData as Boolean}" disabled="${!file.feasibleSequenceData}" />
170                                                </td>
171                                                <td class="name" valign="center">${file.originalfilename}</td>
172                                                <td class="sequences">${file.numLines}</td>
173                                                <td nowrap>
174                                                        <g:if test="${file.feasibleSequenceData}">
175                                                                <select name="remainingClassification.${i}.sequenceData">
176                                                                        <g:each in="${file.feasibleSequenceData}" var="sequenceData">
177                                                                                <option
178                                                                                        <g:if test="${file.sequenceData?.id == sequenceData.id}">
179                                                                                                selected="selected"
180                                                                                        </g:if>
181                                                                                        value="${sequenceData.id}">
182                                                                                        ${sequenceData.sample.sample.name} - ${sequenceData.sequenceFile}</option>
183                                                                        </g:each>
184                                                                </select>
185                                                        </g:if>
186                                                        <g:else>
187                                                                No samples available for this classification file
188                                                        </g:else>
189                                                </td>
190                                        </tr>
191                                </g:each>
192                       
193                        </table>
194                </g:if>
195
196                <g:if test="${remainingClassificationFiles || matchedFiles.size() > 0}">
197                        <input type="submit" value="Continue">
198                </g:if>
199        </g:form>
200
201       
202        <g:if test="${parsedFiles.failure?.size()}">
203                <h2>Failure</h2>
204                <p>
205                        The following files could not be correctly imported. The system can only interpret FASTA, QUAL, GROUPS and TAXONOMY files.<br />
206                        If these files were intended to be included into the system, please check the messages below.
207                 </p>
208                <ul>
209                        <g:each in="${parsedFiles.failure}" var="file">
210                                <li>
211                                        ${file.originalfilename}:
212                                        ${file.message}
213                                </li>
214                        </g:each>
215                </ul>   
216        </g:if>
217       
218        <p>
219                <g:link controller="import" action="returnWithoutSaving" params="[processId: processId, entityType: entityType, id: entity.id]">Return to ${entityType}</g:link>       
220        </p>
221</body>
222</html>
Note: See TracBrowser for help on using the repository browser.