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