self.render_error status: 404
end
- def helper
- (self.class.to_s.sub(/Controller$/,'')+'Helper').constantize
- end
def index
@objects ||= model_class.limit(1000).all
respond_to do |f|
class AuthorizedKeysController < ApplicationController
def index_pane_list
- %w(recent setup)
+ %w(recent help)
end
def new
skip_before_filter :find_object_by_uuid, :only => [:provenance]
skip_before_filter :check_user_agreements, :only => [:show_file]
+ def show_pane_list
+ %w(files attributes provenance provenance_graph)
+ end
def index
if params[:search].andand.length.andand > 0
tags = Link.where(any: ['contains', params[:search]])
class RepositoriesController < ApplicationController
+ def index_pane_list
+ %w(recent help)
+ end
end
class VirtualMachinesController < ApplicationController
+ def index_pane_list
+ %w(recent help)
+ end
def index
@objects ||= model_class.all
@vm_logins = {}
module AuthorizedKeysHelper
- def index_pane_list
- %w(recent help)
- end
end
module RepositoriesHelper
- def index_pane_list
- %w(recent help)
- end
end
module VirtualMachinesHelper
- def index_pane_list
- %w(recent help)
- end
end
--- /dev/null
+<%= render partial: 'arvados_object' %>
<% end rescue nil %>
-<% pane_list = (controller.class.to_s.sub(/Controller$/,'')+'Helper').constantize.index_pane_list rescue %w(recent) %>
+<% pane_list = controller.index_pane_list rescue %w(recent) %>
<div class="tabbable">
<ul class="nav nav-tabs">
<% end %>
<% end %>
+<% pane_list = controller.show_pane_list rescue %w(attributes) %>
-<%= render :partial => 'application/arvados_object' %>
+<div class="tabbable">
+<ul class="nav nav-tabs">
+ <% pane_list.each_with_index do |pane, i| %>
+ <li class="<%= 'active' if i==0 %>"><a href="#<%= pane %>" data-toggle="tab"><%= pane.capitalize.gsub '_', ' ' %></a></li>
+ <% end %>
+</ul>
+
+<div class="tab-content">
+ <% pane_list.each_with_index do |pane, i| %>
+ <div id="<%= pane %>" class="tab-pane fade in <%= 'active' if i==0 %>">
+ <%= render partial: 'show_' + pane %>
+ </div>
+ <% end %>
+</div>
--- /dev/null
+<table class="table table-bordered" style="table-layout: fixed">
+ <thead>
+ <tr>
+ <th>path</th>
+ <th>file</th>
+ <th style="width:1.5em">d/l</th>
+ <th style="width: 7em; text-align:right">size</th>
+ </tr>
+ </thead><tbody>
+ <% if @object then @object.files.sort_by{|f|f[1]}.each do |file| %>
+ <% file_path = "#{file[0]}/#{file[1]}" %>
+ <tr>
+ <td>
+ <%= file[0] %>
+ </td>
+
+ <td>
+ <%= link_to file[1], {controller: 'collections', action: 'show_file', uuid: @object.uuid, file: file_path, size: file[2], disposition: 'inline'}, {title: 'View in browser'} %>
+ </td>
+
+ <td>
+ <div style="display:inline-block">
+ <%= link_to raw('<i class="icon-download"></i>'), {controller: 'collections', action: 'show_file', uuid: @object.uuid, file: file_path, size: file[2], disposition: 'attachment'}, {class: 'label label-info', title: 'Download'} %>
+ </div>
+ </td>
+
+ <td style="text-align:right">
+ <%= raw(human_readable_bytes_html(file[2])) %>
+ </td>
+
+ </tr>
+ <% end; end %>
+ </tbody>
+</table>
--- /dev/null
+<table class="topalign table table-bordered">
+ <thead>
+ <tr class="contain-align-left">
+ <th>
+ job
+ </th><th>
+ version
+ </th><th>
+ status
+ </th><th>
+ start
+ </th><th>
+ finish
+ </th><th>
+ clock time
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+
+ <% @provenance.reverse.each do |p| %>
+ <% j = p[:job] %>
+
+ <% if j %>
+
+ <tr class="job">
+ <td>
+ <tt><%= j.uuid %></tt>
+ <br />
+ <tt class="deemphasize"><%= j.submit_id %></tt>
+ </td><td>
+ <%= j.script_version %>
+ </td><td>
+ <span class="label <%= if j.success then 'label-success'; elsif j.running then 'label-primary'; else 'label-warning'; end %>">
+ <%= j.success || j.running ? 'ok' : 'failed' %>
+ </span>
+ </td><td>
+ <%= j.started_at %>
+ </td><td>
+ <%= j.finished_at %>
+ </td><td>
+ <% if j.started_at and j.finished_at %>
+ <%= raw(distance_of_time_in_words(j.started_at, j.finished_at).sub('about ','~').sub(' ',' ')) %>
+ <% elsif j.started_at and j.running %>
+ <%= raw(distance_of_time_in_words(j.started_at, Time.now).sub('about ','~').sub(' ',' ')) %> (running)
+ <% end %>
+ </td>
+ </tr>
+
+ <% else %>
+ <tr>
+ <td>
+ <span class="label label-danger">lookup fail</span>
+ <br />
+ <tt class="deemphasize"><%= p[:target] %></tt>
+ </td><td colspan="4">
+ </td>
+ </tr>
+ <% end %>
+
+ <% end %>
+
+ </tbody>
+</table>
--- /dev/null
+<%= content_for :css do %>
+<%# https://github.com/mbostock/d3/wiki/Ordinal-Scales %>
+<% n=-1; %w(#1f77b4 #ff7f0e #2ca02c #d62728 #9467bd #8c564b #e377c2 #7f7f7f #bcbd22 #17becf).each do |color| %>
+.colorseries-10-<%= n += 1 %>, .btn.colorseries-10-<%= n %>:hover, .label.colorseries-10-<%= n %>:hover {
+ *background-color: <%= color %>;
+ background-color: <%= color %>;
+ background-image: none;
+}
+<% end %>
+.colorseries-nil { }
+.label a {
+ color: inherit;
+}
+<% end %>
+
+<table class="topalign table table-bordered">
+ <thead>
+ </thead>
+ <tbody>
+
+ <% @provenance.reverse.each do |p| %>
+ <% j = p[:job] %>
+
+ <% if j %>
+
+ <tr class="job">
+ <td style="padding-bottom: 3em">
+ <table class="table" style="margin-bottom: 0; background: #f0f0ff">
+ <% j.script_parameters.each do |k,v| %>
+ <tr>
+ <td style="width: 20%">
+ <%= k.to_s %>
+ </td><td style="width: 60%">
+ <% if v and @output2job.has_key? v %>
+ <tt class="label colorseries-10-<%= @output2colorindex[v] %>"><%= link_to_if_arvados_object v %></tt>
+ <% else %>
+ <span class="deemphasize"><%= link_to_if_arvados_object v %></span>
+ <% end %>
+ </td><td style="text-align: center; width: 20%">
+ <% if v
+ if @protected[v]
+ labelclass = 'success'
+ labeltext = 'keep'
+ else
+ labelclass = @output2job.has_key?(v) ? 'warning' : 'danger'
+ labeltext = 'cache'
+ end %>
+
+ <tt class="label label-<%= labelclass %>"><%= labeltext %></tt>
+ <% end %>
+ </td>
+ </tr>
+ <% end %>
+ </table>
+ <div style="text-align: center">
+ ↓
+ <br />
+ <span class="label"><%= j.script %><br /><tt><%= link_to_if j.script_version.match(/[0-9a-f]{40}/), j.script_version, "https://arvados.org/projects/arvados/repository/revisions/#{j.script_version}/entry/crunch_scripts/#{j.script}" if j.script_version %></tt></span>
+ <br />
+ ↓
+ <br />
+ <tt class="label colorseries-10-<%= @output2colorindex[p[:output]] %>"><%= link_to_if_arvados_object p[:output] %></tt>
+ </div>
+ </td>
+ <td>
+ <tt><span class="deemphasize">job:</span><br /><%= link_to_if_arvados_object j %><br /><span class="deemphasize"><%= j.submit_id %></span></tt>
+ </td>
+ </tr>
+
+ <% else %>
+ <tr>
+ <td>
+ <span class="label label-danger">lookup fail</span>
+ <br />
+ <tt class="deemphasize"><%= p[:target] %></tt>
+ </td><td colspan="5">
+ </td>
+ </tr>
+ <% end %>
+
+ <% end %>
+
+ </tbody>
+</table>
--- /dev/null
+<% content_for :js do %>
+ $(function() {
+ $('#prov-tab').on('shown', function() { provenance_sizing_fixup("provenance_graph", "provenance_svg"); });
+ })
+<% end %>
+<%= render partial: 'application/svg_div', locals: {
+ divId: "provenance_graph",
+ svgId: "provenance_svg",
+ svg: @prov_svg } %>
--- /dev/null
+<table class="table table-bordered table-striped">
+ <thead>
+ <tr class="contain-align-left">
+ <th>
+ collection
+ </th><th class="data-size">
+ data size
+ </th><th>
+ storage
+ </th><th>
+ origin
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+
+ <% @sourcedata.values.each do |sourcedata| %>
+
+ <tr class="collection">
+ <td>
+ <tt class="label"><%= sourcedata[:uuid] %></tt>
+ </td><td class="data-size">
+ <%= raw(human_readable_bytes_html(sourcedata[:collection].data_size)) if sourcedata[:collection] and sourcedata[:collection].data_size %>
+ </td><td>
+ <% if @protected[sourcedata[:uuid]] %>
+ <span class="label label-success">keep</span>
+ <% else %>
+ <span class="label label-danger">cache</span>
+ <% end %>
+ </td><td>
+ <% if sourcedata[:data_origins] %>
+ <% sourcedata[:data_origins].each do |data_origin| %>
+ <span class="deemphasize"><%= data_origin[0] %></span>
+ <%= data_origin[2] %>
+ <br />
+ <% end %>
+ <% end %>
+ </td>
+ </tr>
+
+ <% end %>
+
+ </tbody>
+</table>