Editing input values of pipeline_instances mostly works, but needs polishing.
[arvados.git] / apps / workbench / app / views / pipeline_instances / _show_components.html.erb
1 <% content_for :css do %>
2   .pipeline_color_legend {
3     padding-left: 1em;
4     padding-right: 1em;
5   }
6 table.pipeline-components-table {
7   width: 100%;
8   table-layout: fixed;
9   overflow: hidden;
10 }
11
12 table.pipeline-components-table thead th {
13   text-align: bottom;
14 }
15 table.pipeline-components-table div.progress {
16   margin-bottom: 0;
17 }
18
19 table.pipeline-components-table td {
20   overflow: hidden;
21   text-overflow: ellipsis;
22 }
23
24 <% end %>
25
26 <% if @object.active != nil %>
27 <table class="table pipeline-components-table">
28   <colgroup>
29     <col style="width: 15%" />
30     <col style="width: 20%" />
31     <col style="width: 20%" />
32     <col style="width: 45%" />
33   </colgroup>
34   <thead>
35     <tr>
36       <th>
37         component
38       </th><th>
39         script, version
40       </th><th>
41         progress
42         <%= link_to '(refresh)', request.fullpath, class: 'refresh', remote: true, method: 'get' %>
43       </th><th>
44         output
45       </th>
46     </tr>
47   </thead>
48   <tbody>
49     <% render_pipeline_jobs.each do |pj| %>
50     <tr>
51       <td>
52         <% label = if pj[:job].andand[:uuid] 
53                        if pj[:job][:running]
54                          'label-info'
55                        elsif pj[:job][:success]
56                          'label-success'
57                        else
58                          'label-danger'
59                        end 
60                      else
61                        'label-default'
62                      end %>
63         <% if pj[:job].andand[:uuid] %>
64         <%= link_to pj[:name], job_url(id: pj[:job][:uuid]), class: "label #{label}" %>
65         <% else %>
66           <span class="label <%= label %>"><%= pj[:name] %></span>
67         <% end %>
68         </span>
69       </td><td>
70         <%= pj[:script] %>
71         <br /><span class="deemphasize"><%= pj[:script_version] %></span>
72       </td><td>
73         <%= pj[:progress_bar] %>
74         <% if pj[:job].andand[:cancelled_at] %>
75         <span class="pull-right label label-warning">cancelled</span>
76         <% elsif pj[:failed] %>
77         <span class="pull-right label label-warning">failed</span>
78         <% elsif pj[:result] == 'queued' %>
79         <span class="pull-right label">queued</span>
80         <% end %>
81       </td><td>
82         <%= link_to_if_arvados_object pj[:output] %>
83       </td>
84     </tr>
85     <% end %>
86   </tbody>
87   <tfoot>
88     <tr><td colspan="4"></td></tr>
89   </tfoot>
90 </table>
91
92 <% if @object.active %>
93 <% content_for :js do %>
94 setInterval(function(){$('a.refresh').click()}, 30000);
95 <% end %>
96 <% end %>
97
98 <% else %>
99
100   <%= form_tag @object, :method => :put do |f| %>
101
102   <%= hidden_field @object.class.to_s.underscore.singularize.to_sym, :active, :value => true %>
103   <%= button_tag "Run pipeline", {class: 'btn btn-primary pull-right'} %>
104   <% end %>
105
106 <table class="table pipeline-components-table" style="margin-top: -.1em">
107   <colgroup>
108     <col style="width: 15%" />
109     <col style="width: 20%" />
110     <col style="width: 20%" />
111     <col style="width: 45%" />
112   </colgroup>
113
114   <thead>
115     <tr>
116       <th>
117         component
118       </th><th>
119         script
120       </th><th>
121         parameter
122       </th><th>
123         input
124       </th>
125     </tr>
126   </thead>
127   <tbody>
128     <% template = PipelineTemplate.find(@object.pipeline_template_uuid) %>
129     <% template.components.each do |k, v| %>
130
131     <% sp = v[:script_parameters].collect do |x, y| [x, y] end %>
132
133     <tr>
134       <td><span class="label label-default"><%= k %></span></td>
135
136       <td><%= v[:script] %></td>
137
138       <td>script_version</td>
139
140       <td>
141         <%= render_editable_subattribute @object, :components, [k, :script_version], v[:script_version] %>
142       </td>
143     </tr>
144
145     <% if sp.length > 0 %>
146     <tr>
147       <td style="border-top: none"></td>
148       <td style="border-top: none"></td>
149
150       <% sp.each do |p| %>
151         <td><%= p[0] %></td>
152         <td><%= render_editable_subattribute @object, :components, [k, :script_parameters, p[0].to_sym], p[1] %></td>
153       <% end %>
154     </tr>
155   <% end %>
156   <% end %>
157   </tbody>
158   </table>
159   
160 <% end %>