2871: get collections methods return all collections for the given uuid.
[arvados.git] / apps / workbench / app / views / users / _tables.html.erb
1 <% if current_user.andand.is_active %>
2   <div>
3     <strong>Recent jobs</strong>
4     <%= link_to '(refresh)', {format: :js}, {class: 'refresh', remote: true, method: 'get'} %>
5     <%= link_to raw("Show all jobs &rarr;"), jobs_path, class: 'pull-right' %>
6     <% if not current_user.andand.is_active or @my_jobs.empty? %>
7       <p>(None)</p>
8     <% else %>
9       <table class="table table-bordered table-condensed table-fixedlayout">
10         <colgroup>
11           <col width="20%" />
12           <col width="20%" />
13           <col width="20%" />
14           <col width="13%" />
15           <col width="13%" />
16           <col width="20%" />
17         </colgroup>
18
19         <tr>
20           <th>Script</th>
21           <th>Output</th>
22           <th>Log</th>
23           <th>Age</th>
24           <th>Status</th>
25           <th>Progress</th>
26         </tr>
27
28         <% 
29           job_outputs = []
30           job_logs = []
31           @my_jobs[0..6].each do |j|
32             job_outputs << j.output
33             job_logs << j.log
34           end
35
36           preload_collections job_outputs
37           preload_log_collections job_logs
38         %>
39         <% @my_jobs[0..6].each do |j| %>
40           <tr data-object-uuid="<%= j.uuid %>">
41             <td>
42               <small>
43                 <%= link_to((j.script.andand[0..31] || j.uuid), job_path(j.uuid)) %>
44               </small>
45             </td>
46
47             <td>
48               <small>
49                 <% if j.success and j.output %>
50                   <a href="<%= collection_path(j.output) %>">
51                     <% collections = get_collections(j.output) %>
52                       <% if collections && !collections.empty? %>
53                       <% c = collections.first %>
54                       <% c.files.each do |file| %>
55                         <%= file[0] == '.' ? file[1] : "#{file[0]}/#{file[1]}" %>
56                       <% end %>
57                      <% end %>
58                   </a>
59               <% end %>
60             </small>
61           </td>
62
63 <td>
64   <small>
65     <% if j.log %>
66       <% log_collections = get_log_collections(j.log) %>
67       <% if log_collections && !log_collections.empty? %>
68         <% c = log_collections.first %>
69         <% c.files.each do |file| %>
70           <a href="<%= collection_path(j.log) %>/<%= file[1] %>?disposition=inline&size=<%= file[2] %>">Log</a>
71         <% end %>
72       <% end %>
73     <% elsif j.respond_to? :log_buffer and j.log_buffer.is_a? String %>
74       <% buf = j.log_buffer.strip.split("\n").last %>
75       <span title="<%= buf %>"><%= buf %></span>
76     <% end %>
77   </small>
78 </td>
79
80 <td>
81   <small>
82     <%= raw(distance_of_time_in_words(j.created_at, Time.now).sub('about ','~').sub(' ','&nbsp;')) if j.created_at %>
83   </small>
84 </td>
85
86 <td>
87   <%= render partial: 'job_status_label', locals: {:j => j} %>
88 </td>
89 <td>
90   <div class="inline-progress-container">
91   <%= render partial: 'job_progress', locals: {:j => j} %>
92   </div>
93 </td>
94
95 </tr>
96 <% end %>
97 </table>
98 <% end %>
99 </div>
100
101 <div>
102   <strong>Recent pipeline instances</strong>
103   <%= link_to '(refresh)', {format: :js}, {class: 'refresh', remote: true, method: 'get'} %>
104   <%= link_to raw("Show all pipeline instances &rarr;"), pipeline_instances_path, class: 'pull-right' %>
105   <% if not current_user.andand.is_active or @my_pipelines.empty? %>
106     <p>(None)</p>
107   <% else %>
108     <table class="table table-bordered table-condensed table-fixedlayout">
109       <colgroup>
110         <col width="30%" />
111         <col width="30%" />
112         <col width="13%" />
113         <col width="13%" />
114         <col width="20%" />
115       </colgroup>
116
117       <tr>
118         <th>Instance</th>
119         <th>Template</th>
120         <th>Age</th>
121         <th>Status</th>
122         <th>Progress</th>
123       </tr>
124
125       <% @my_pipelines[0..6].each do |p| %>
126         <tr data-object-uuid="<%= p.uuid %>">
127           <td>
128             <small>
129               <%= link_to_if_arvados_object p.uuid, friendly_name: true %>
130             </small>
131           </td>
132
133           <td>
134             <small>
135               <%= link_to_if_arvados_object p.pipeline_template_uuid, friendly_name: true %>
136             </small>
137           </td>
138
139           <td>
140             <small>
141               <%= raw(distance_of_time_in_words(p.created_at, Time.now).sub('about ','~').sub(' ','&nbsp;')) if p.created_at %>
142             </small>
143           </td>
144
145           <td>
146             <%= render partial: 'pipeline_status_label', locals: {:p => p} %>
147           </td>
148
149           <td>
150             <div class="inline-progress-container">
151               <%= render partial: 'pipeline_progress', locals: {:p => p} %>
152             </div>
153           </td>
154         </tr>
155       <% end %>
156     </table>
157   <% end %>
158 </div>
159
160 <div>
161   <strong>Recent collections</strong>
162   <%= link_to '(refresh)', {format: :js}, {class: 'refresh', remote: true, method: 'get'} %>
163   <%= link_to raw("Show all collections &rarr;"), collections_path, class: 'pull-right' %>
164   <div class="pull-right" style="padding-right: 1em; width: 30%;">
165     <%= form_tag collections_path,
166           method: 'get',
167           class: 'form-search small-form-margin' do %>
168     <div class="input-group input-group-sm">
169       <%= text_field_tag :search, params[:search], class: 'form-control', placeholder: 'Search' %>
170       <span class="input-group-btn">
171         <%= button_tag(class: 'btn btn-info') do %>
172         <span class="glyphicon glyphicon-search"></span>
173         <% end %>
174       </span>
175     </div>
176     <% end %>
177   </div>
178   <% if not current_user.andand.is_active or @my_collections.empty? %>
179     <p>(None)</p>
180   <% else %>
181     <table class="table table-bordered table-condensed table-fixedlayout">
182       <colgroup>
183         <col width="46%" />
184         <col width="32%" />
185         <col width="10%" />
186         <col width="12%" />
187       </colgroup>
188
189       <tr>
190         <th>Contents</th>
191         <th>Tags</th>
192         <th>Age</th>
193         <th>Storage</th>
194       </tr>
195
196       <% @my_collections[0..6].each do |c| %>
197         <tr data-object-uuid="<%= c.uuid %>">
198           <td>
199             <small>
200               <a href="<%= collection_path(c.uuid) %>">
201                 <% c.files.each do |file| %>
202                   <%= file[0] == '.' ? file[1] : "#{file[0]}/#{file[1]}" %>
203                 <% end %>
204               </a>
205             </small>
206           </td>
207           <td>
208             <% if @my_tag_links[c.uuid] %>
209             <small>
210               <%= @my_tag_links[c.uuid].collect(&:name).join(", ") %>
211             </small>
212             <% end %>
213           </td>
214           <td>
215             <small>
216               <%= raw(distance_of_time_in_words(c.created_at, Time.now).sub('about ','~').sub(' ','&nbsp;')) if c.created_at %>
217             </small>
218           </td>
219           <td>
220             <%= render partial: 'collections/toggle_persist', locals: { uuid: c.uuid, current_state: @persist_state[c.uuid] } %>
221           </td>
222         </tr>
223       <% end %>
224     </table>
225   <% end %>
226 </div>
227
228 <% else %>
229
230   <div class="row-fluid">
231     <div class="col-sm-4">
232       <%= image_tag "dax.png", style: "max-width:100%" %>
233     </div>
234     <div class="col-sm-8">
235       <h2>Welcome to Arvados, <%= current_user.first_name %>!</h2>
236       <div class="well">
237         <p>
238           Your account must be activated by an Arvados administrator.  If this
239           is your first time accessing Arvados and would like to request
240           access, or you believe you are seeing the page in error, please
241           <%= link_to "contact us", Rails.configuration.activation_contact_link %>.
242           You should receive an email at the address you used to log in when
243           your account is activated.  In the mean time, you can
244           <%= link_to "learn more about Arvados", "https://arvados.org/projects/arvados/wiki/Introduction_to_Arvados" %>,
245           and <%= link_to "read the Arvados user guide", "http://doc.arvados.org/user" %>.
246         </p>
247         <p style="padding-bottom: 1em">
248           <%= link_to raw('Contact us &#x2709;'),
249               Rails.configuration.activation_contact_link, class: "pull-right btn btn-primary" %></p>
250       </div>
251     </div>
252   </div>
253 <% end %>
254
255 <% content_for :js do %>
256 setInterval(function(){$('a.refresh:eq(0)').click()}, 60000);
257 <% end %>