c325c636df5c8ab72e2b61dce1ea29a9fa8aae4c
[arvados.git] / app / views / collections / show.html.erb
1 <%= content_for :head do %>
2 <style>
3 <%# https://github.com/mbostock/d3/wiki/Ordinal-Scales %>
4 <% n=-1; %w(#1f77b4 #ff7f0e #2ca02c #d62728 #9467bd #8c564b #e377c2 #7f7f7f #bcbd22 #17becf).each do |color| %>
5 .colorseries-10-<%= n += 1 %>, .btn.colorseries-10-<%= n %>:hover {
6   *background-color: <%= color %>;
7   background-color: <%= color %>;
8   background-image: none;
9 }
10 <% end %>
11 .colorseries-nil { background-color: white }
12 </style>
13 <% end %>
14
15 <%= render :partial => 'nav' %>
16
17 <ul class="nav nav-tabs">
18   <li class="active"><a href="#files" data-toggle="tab">Files (<%= @object.files ? @object.files.size : 0 %>)</a></li>
19   <li><a href="#provenance" data-toggle="tab">Provenance (<%= @provenance.size %>)</a></li>
20   <li><a href="#jobs" data-toggle="tab">Jobs (<%= @provenance.size %>)</a></li>
21   <li><a href="#sourcedata" data-toggle="tab">Source data (<%= @sourcedata.size %>)</a></li>
22 </ul>
23
24 <div class="tab-content">
25   <div id="files" class="tab-pane fade in active">
26     <table class="table table-bordered">
27       <thead>
28         <tr><th style="text-align:right">size (bytes)</th><th>filename</th></tr>
29       </thead><tbody>
30         <% if @object then @object.files.each do |file| %>
31         <tr>
32           <td style="text-align:right">
33             <%= raw(human_readable_bytes_html(file[2])) %>
34           </td><td>
35             <%= file[0] %>/<%= file[1] %>
36           </td>
37         </tr>
38         <% end; end %>
39       </tbody>
40     </table>
41   </div>
42   <div id="provenance" class="tab-pane fade">
43     <table class="topalign table table-bordered">
44       <thead>
45       </thead>
46       <tbody>
47
48         <% @provenance.reverse.each do |p| %>
49         <% j = p[:job] %>
50
51         <% if j %>
52
53         <tr class="job">
54           <td style="padding-bottom: 3em">
55             <table class="table" style="margin-bottom: 0; background: #f0f0ff">
56               <% j.script_parameters.each do |k,v| %>
57               <tr>
58                 <td style="width: 60%">
59                   <% re = v.match(/^([0-9a-f]+)/) %>
60                   <% justhash = (re and re[1].length == 32) ? re[1] : nil %>
61                   <% if justhash and @output2job.has_key? justhash %>
62                   <tt class="btn colorseries-10-<%= @output2colorindex[v] %> deemphasize"><%= v %></tt>
63                   <% elsif justhash %>
64                   <tt class="btn colorseries-nil deemphasize"><%= justhash %></tt><br /><span class="deemphasize"><%= v %></span>
65                   <% else %>
66                   <span class="deemphasize"><%= v %></span>
67                   <% end %>
68                 </td><td style="text-align: center; width: 20%">
69                   <% if justhash
70                        if @protected[justhash]
71                          btnclass = 'success'
72                          btntext = 'keep'
73                        else
74                          btnclass = @output2job.has_key?(v) ? 'warning' : 'danger'
75                          btntext = 'cache'
76                        end %>
77
78                   <tt class="btn btn-<%= btnclass %> deemphasize"><%= btntext %></tt>
79                   <% end %>
80                 </td><td style="width: 20%">
81                   <%= k.to_s %>
82                 </td>
83               </tr>
84               <% end %>
85             </table>
86             <div style="text-align: center">
87               &darr;
88               <br />
89               <span class="btn deemphasize"><%= j.script %><br /><tt><%= link_to_if j.script_version.match(/[0-9a-f]{40}/), j.script_version, "https://redmine.clinicalfuture.com/projects/freefactories/repository/revisions/#{j.script_version}/entry/mapreduce/mr-#{j.script}" if j.script_version %></tt></span>
90               <br />
91               &darr;
92               <br />
93               <tt class="btn colorseries-10-<%= @output2colorindex[p[:output]] %> deemphasize"><%= p[:output] %></tt>
94             </div>
95           </td>
96           <td>
97             <tt><span class="deemphasize">job:</span><br /><%= j.uuid %><br /><span class="deemphasize"><%= j.submit_id %></span></tt>
98           </td>
99         </tr>
100
101         <% else %>
102         <tr>
103           <td>
104             <span class="btn btn-danger">lookup fail</span>
105             <br />
106             <tt class="deemphasize"><%= p[:target] %></tt>
107           </td><td colspan="4">
108           </td>
109         </tr>
110         <% end %>
111
112         <% end %>
113
114       </tbody>
115     </table>
116   </div>
117   <div id="jobs" class="tab-pane fade">
118     <table class="topalign table table-bordered">
119       <thead>
120         <tr class="contain-align-left">
121           <th>
122             job
123           </th><th>
124             version
125           </th><th>
126             status
127           </th><th>
128             start
129           </th><th>
130             finish
131           </th><th>
132             clock time
133           </th>
134         </tr>
135       </thead>
136       <tbody>
137
138         <% @provenance.reverse.each do |p| %>
139         <% j = p[:job] %>
140
141         <% if j %>
142
143         <tr class="job">
144           <td>
145             <tt><%= j.uuid %></tt>
146             <br />
147             <tt class="deemphasize"><%= j.submit_id %></tt>
148           </td><td>
149             <%= j.script_version %>
150           </td><td>
151             <span class="btn <%= if j.success then 'btn-success'; elsif j.active then 'btn-primary'; else 'btn-warning'; end %>">
152               <%= j.success || j.active ? 'ok' : 'failed' %>
153             </span>
154           </td><td>
155             <%= j.started_at %>
156           </td><td>
157             <%= j.finished_at %>
158           </td><td>
159             <% if j.started_at and j.finished_at %>
160             <%= raw(distance_of_time_in_words(j.started_at, j.finished_at).sub('about ','~').sub(' ','&nbsp;')) %>
161             <% elsif j.started_at and j.running %>
162             <%= raw(distance_of_time_in_words(j.started_at, Time.now).sub('about ','~').sub(' ','&nbsp;')) %> (running)
163             <% end %>
164           </td>
165         </tr>
166
167         <% else %>
168         <tr>
169           <td>
170             <span class="btn btn-danger">lookup fail</span>
171             <br />
172             <tt class="deemphasize"><%= p[:target] %></tt>
173           </td><td colspan="4">
174           </td>
175         </tr>
176         <% end %>
177
178         <% end %>
179
180       </tbody>
181     </table>
182   </div>
183   <div id="sourcedata" class="tab-pane fade">
184     <table class="table table-bordered table-striped">
185       <thead>
186         <tr class="contain-align-left">
187           <th>
188             collection
189           </th><th class="data-size">
190             data size
191           </th><th>
192             storage
193           </th><th>
194             origin
195           </th>
196         </tr>
197       </thead>
198       <tbody>
199
200         <% @sourcedata.values.each do |sourcedata| %>
201
202         <tr class="collection">
203           <td>
204             <span class="btn"><tt class="deemphasize"><%= sourcedata[:uuid] %></tt></span>
205           </td><td class="data-size">
206             <%= raw(human_readable_bytes_html(sourcedata[:collection].data_size)) if sourcedata[:collection] and sourcedata[:collection].data_size %>
207           </td><td>
208             <% if @protected[sourcedata[:uuid]] %>
209             <span class="btn btn-success">keep</span>
210             <% else %>
211             <span class="btn btn-danger">cache</span>
212             <% end %>
213           </td><td>
214             <% if sourcedata[:data_origins] %>
215             <% sourcedata[:data_origins].each do |data_origin| %>
216             <span class="deemphasize"><%= data_origin[0] %></span>
217             <%= data_origin[2] %>
218             <br />
219             <% end %>
220             <% end %>
221           </td>
222         </tr>
223
224         <% end %>
225
226       </tbody>
227     </table>
228   </div>
229 </div>