<col width="20%" />
<col width="20%" />
<col width="13%" />
- <col width="27%" />
+ <col width="13%" />
+ <col width="20%" />
</colgroup>
<tr>
- <th>Script</th>
- <th>Output</th>
- <th>Log</th>
- <th>Age</th>
- <th>Status</th>
- </tr>
+ <th>Script</th>
+ <th>Output</th>
+ <th>Log</th>
+ <th>Age</th>
+ <th>Status</th>
+ <th>Progress</th>
+ </tr>
<% @my_jobs[0..6].each do |j| %>
- <tr>
+ <tr data-object-uuid="<%= j.uuid %>">
<td>
<small>
- <%= link_to j.script[0..31], job_path(j.uuid) %>
+ <%= link_to((j.script.andand[0..31] || j.uuid), job_path(j.uuid)) %>
</small>
</td>
- <td>
- <small>
- <% if j.success %>
+ <td>
+ <small>
+ <% if j.success and j.output %>
- <a href="<%= collection_path(j.output) %>">
- <% Collection.limit(1).where(uuid: j.output).each do |c| %>
- <% c.files.each do |file| %>
- <%= file[0] == '.' ? file[1] : "#{file[0]}/#{file[1]}" %>
- <% end %>
- <% end %>
- </a>
+ <a href="<%= collection_path(j.output) %>">
+ <% Collection.limit(1).where(uuid: j.output).each do |c| %>
+ <% c.files.each do |file| %>
+ <%= file[0] == '.' ? file[1] : "#{file[0]}/#{file[1]}" %>
+ <% end %>
+ <% end %>
+ </a>
- <% end %>
- </small>
+ <% end %>
+ </small>
</td>
<td>
<a href="<%= collection_path(j.log) %>/<%= file[1] %>?disposition=inline&size=<%= file[2] %>">Log</a>
<% end %>
<% end %>
- <% elsif j.respond_to? :log_buffer and j.log_buffer %>
+ <% elsif j.respond_to? :log_buffer and j.log_buffer.is_a? String %>
<% buf = j.log_buffer.strip.split("\n").last %>
<span title="<%= buf %>"><%= buf %></span>
<% end %>
<td>
<small>
- <%= raw(distance_of_time_in_words(j.created_at, Time.now).sub('about
-','~').sub(' ',' ')) if j.created_at %>
+ <%= raw(distance_of_time_in_words(j.created_at, Time.now).sub('about ','~').sub(' ',' ')) if j.created_at %>
</small>
</td>
<td>
- <% if j.success %>
- <span class="label label-success">finished</span>
- <% elsif j.success == false %>
- <span class="label label-danger">failed</span>
- <% elsif j.finished_at %>
- <span class="label">finished?</span>
- <% elsif j.started_at %>
- <span class="label label-info">running</span>
- <% else %>
- <span class="label">queued</span>
- <% end %>
- <% percent_total_tasks = 100 / (j.tasks_summary[:running] + j.tasks_summary[:done] + j.tasks_summary[:todo]) rescue 0 %>
- <div class="inline-progress-container pull-right">
- <div class="progress">
- <span class="progress-bar progress-bar-success" style="width: <%= j.tasks_summary[:done] * percent_total_tasks rescue 0 %>%;">
- </span>
- <span class="progress-bar" style="width: <%= j.tasks_summary[:running] * percent_total_tasks rescue 0 %>%;">
- </span>
- <% if j.success == false %>
- <span class="progress-bar progress-bar-danger" style="width: <%= tasks_summary[:failed] * percent_total_tasks rescue 0 %>%;">
- </span>
- <% end %>
- </div>
+ <%= render partial: 'job_status_label', locals: {:j => j} %>
+</td>
+<td>
+ <div class="inline-progress-container">
+ <%= render partial: 'job_progress', locals: {:j => j} %>
</div>
</td>
<col width="30%" />
<col width="30%" />
<col width="13%" />
- <col width="27%" />
+ <col width="13%" />
+ <col width="20%" />
</colgroup>
<tr>
- <th>Instance</th>
- <th>Template</th>
- <th>Age</th>
- <th>Status</th>
+ <th>Instance</th>
+ <th>Template</th>
+ <th>Age</th>
+ <th>Status</th>
+ <th>Progress</th>
</tr>
<% @my_pipelines[0..6].each do |p| %>
- <tr>
+ <tr data-object-uuid="<%= p.uuid %>">
<td>
<small>
- <%= link_to_if_arvados_object p.uuid, friendly_name: true %>
+ <%= link_to_if_arvados_object p.uuid, friendly_name: true %>
</small>
</td>
<td>
<small>
- <%= link_to_if_arvados_object p.pipeline_template_uuid, friendly_name: true %>
+ <%= link_to_if_arvados_object p.pipeline_template_uuid, friendly_name: true %>
</small>
</td>
<td>
<small>
- <%= raw(distance_of_time_in_words(p.created_at, Time.now).sub('about
-','~').sub(' ',' ')) if p.created_at %>
+ <%= raw(distance_of_time_in_words(p.created_at, Time.now).sub('about ','~').sub(' ',' ')) if p.created_at %>
</small>
</td>
<td>
- <% if p.success %>
- <span class="label label-success">finished</span>
- <% elsif p.success == false %>
- <span class="label label-danger">failed</span>
- <% elsif p.active and p.modified_at < 30.minutes.ago %>
- <span class="label label-info">stopped</span>
- <% elsif p.active %>
- <span class="label label-info">running</span>
- <% else %>
- <span class="label">queued</span>
- <% end %>
+ <%= render partial: 'pipeline_status_label', locals: {:p => p} %>
+ </td>
- <% summary = pipeline_summary p %>
- <div class="inline-progress-container pull-right">
- <div class="progress">
- <span class="progress-bar progress-bar-success" style="width: <%= summary[:percent_done] %>%;">
- </span>
- <% if p.success == false %>
- <span class="progress-bar progress-bar-danger" style="width: <%= 100.0 - summary[:percent_done] %>%;">
- </span>
- <% else %>
- <span class="progress-bar" style="width: <%= summary[:percent_running] %>%;">
- </span>
- <span class="progress-bar progress-bar-info" style="width: <%= summary[:percent_queued] %>%;">
- </span>
- <span class="progress-bar progress-bar-danger" style="width: <%= summary[:percent_failed] %>%;">
- </span>
- <% end %>
- </div>
+ <td>
+ <div class="inline-progress-container">
+ <%= render partial: 'pipeline_progress', locals: {:p => p} %>
</div>
</td>
-
</tr>
<% end %>
</table>
<span class="glyphicon glyphicon-search"></span>
<% end %>
</span>
- </div>
+ </div>
<% end %>
</div>
<% if not current_user.andand.is_active or @my_collections.empty? %>
<table class="table table-bordered table-condensed table-fixedlayout">
<colgroup>
<col width="46%" />
- <col width="27%" />
- <col width="27%" />
+ <col width="32%" />
+ <col width="10%" />
+ <col width="12%" />
</colgroup>
<tr>
- <th>Contents</th>
- <th>Tags</th>
- <th>Age</th>
+ <th>Contents</th>
+ <th>Tags</th>
+ <th>Age</th>
+ <th>Storage</th>
</tr>
<% @my_collections[0..6].each do |c| %>
- <tr>
+ <tr data-object-uuid="<%= c.uuid %>">
<td>
<small>
- <a href="<%= collection_path(c.uuid) %>">
- <% c.files.each do |file| %>
- <%= file[0] == '.' ? file[1] : "#{file[0]}/#{file[1]}" %>
- <% end %>
- </a>
+ <a href="<%= collection_path(c.uuid) %>">
+ <% c.files.each do |file| %>
+ <%= file[0] == '.' ? file[1] : "#{file[0]}/#{file[1]}" %>
+ <% end %>
+ </a>
</small>
</td>
<td>
</td>
<td>
<small>
- <%= raw(distance_of_time_in_words(c.created_at, Time.now).sub('about
-','~').sub(' ',' ')) if c.created_at %>
+ <%= raw(distance_of_time_in_words(c.created_at, Time.now).sub('about ','~').sub(' ',' ')) if c.created_at %>
</small>
</td>
+ <td>
+ <%= render partial: 'collections/toggle_persist', locals: { uuid: c.uuid, current_state: @persist_state[c.uuid] } %>
+ </td>
</tr>
<% end %>
</table>
</div>
<% else %>
- <%= image_tag "dax.png", style: "max-width=40%" %>
+
+ <div class="row-fluid">
+ <div class="col-sm-4">
+ <%= image_tag "dax.png", style: "max-width:100%" %>
+ </div>
+ <div class="col-sm-8">
+ <h2>Welcome to Arvados, <%= current_user.first_name %>!</h2>
+ <div class="well">
+ <p>
+ Your account must be activated by an Arvados administrator. If this
+ is your first time accessing Arvados and would like to request
+ access, or you believe you are seeing the page in error, please
+ <%= link_to "contact us", Rails.configuration.activation_contact_link %>.
+ You should receive an email at the address you used to log in when
+ your account is activated. In the mean time, you can
+ <%= link_to "learn more about Arvados", "https://arvados.org/projects/arvados/wiki/Introduction_to_Arvados" %>,
+ and <%= link_to "read the Arvados user guide", "http://doc.arvados.org/user" %>.
+ </p>
+ <p style="padding-bottom: 1em">
+ <%= link_to raw('Contact us ✉'),
+ Rails.configuration.activation_contact_link, class: "pull-right btn btn-primary" %></p>
+ </div>
+ </div>
+ </div>
<% end %>
<% content_for :js do %>