[ARVADOS] updated: c16a97576716f81c721bcd0c889309cb75e3eb9a

git at public.curoverse.com git at public.curoverse.com
Wed Feb 5 23:03:44 EST 2014


Summary of changes:
 .../app/assets/javascripts/application.js          |    2 +
 .../workbench/app/assets/javascripts/provenance.js |   13 +++-
 .../app/assets/stylesheets/application.css.scss    |    4 +
 .../app/controllers/application_controller.rb      |   33 +------
 .../app/controllers/collections_controller.rb      |    2 +-
 apps/workbench/app/controllers/jobs_controller.rb  |    4 +
 .../controllers/pipeline_instances_controller.rb   |    4 +
 .../app/views/application/_arvados_object.html.erb |   88 ----------------
 .../app/views/application/_show_api.html.erb       |   27 +++++
 .../views/application/_show_attributes.html.erb    |   14 +++-
 .../app/views/application/_show_json.html.erb      |    3 +
 .../app/views/application/_show_links.html.erb     |   40 ++++++++
 .../app/views/application/_svg_div.html.erb        |    4 +-
 .../workbench/app/views/application/index.html.erb |   22 ++---
 apps/workbench/app/views/application/show.html.erb |    7 +-
 .../app/views/collections/_show_files.html.erb     |    4 +-
 .../{show.html.erb => _show_provenance.html.erb}   |    2 -
 .../app/views/layouts/application.html.erb         |  105 +++++++++++++-------
 .../{show.html.erb => _show_components.html.erb}   |   17 ---
 .../views/pipeline_instances/_show_graph.html.erb  |   19 ++++
 .../{show.js.erb => _show_graph.js.erb}            |    0
 21 files changed, 217 insertions(+), 197 deletions(-)
 create mode 100644 apps/workbench/app/views/application/_show_api.html.erb
 create mode 100644 apps/workbench/app/views/application/_show_json.html.erb
 create mode 100644 apps/workbench/app/views/application/_show_links.html.erb
 rename apps/workbench/app/views/jobs/{show.html.erb => _show_provenance.html.erb} (77%)
 rename apps/workbench/app/views/pipeline_instances/{show.html.erb => _show_components.html.erb} (74%)
 create mode 100644 apps/workbench/app/views/pipeline_instances/_show_graph.html.erb
 rename apps/workbench/app/views/pipeline_instances/{show.js.erb => _show_graph.js.erb} (100%)

       via  c16a97576716f81c721bcd0c889309cb75e3eb9a (commit)
      from  0863b0df409012677f0911ac3a068195067f7c7b (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit c16a97576716f81c721bcd0c889309cb75e3eb9a
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date:   Wed Feb 5 23:04:40 2014 -0500

    * Left nav correctly highlights current section
    * Refactored pipeline instances and job pages to use tabs
    * Uses javascript to adjust height of tab pane so that scrollbars show up in the right place
    * Fixed some glyphicons broken by bootstrap 3

diff --git a/apps/workbench/app/assets/javascripts/application.js b/apps/workbench/app/assets/javascripts/application.js
index 863776b..fbbf8f3 100644
--- a/apps/workbench/app/assets/javascripts/application.js
+++ b/apps/workbench/app/assets/javascripts/application.js
@@ -14,6 +14,7 @@
 //= require jquery_ujs
 //= require bootstrap
 //= require bootstrap/dropdown
+//= require bootstrap/tab
 //= require bootstrap-editable
 //= require bootstrap-editable-rails
 //= require_tree .
@@ -46,3 +47,4 @@ jQuery(function($){
             $('.loading').hide();
         });
 })(jQuery);
+
diff --git a/apps/workbench/app/assets/javascripts/provenance.js b/apps/workbench/app/assets/javascripts/provenance.js
index bacbfd1..53e2d19 100644
--- a/apps/workbench/app/assets/javascripts/provenance.js
+++ b/apps/workbench/app/assets/javascripts/provenance.js
@@ -29,6 +29,7 @@ function provenance_sizing_fixup(divId, svgId) {
         b.style.paddingTop = String(max) + "px";
     }
 
+    /*
     w = window.innerWidth - 25;
     a.style.width = String(w) + "px";
     gw = parseFloat(g.getAttribute("width"));
@@ -37,7 +38,7 @@ function provenance_sizing_fixup(divId, svgId) {
     }
     else {
         c.style.paddingLeft = "0px";
-    }
+    }*/
 }
 
 function graph_zoom(divId, svgId, scale) {
@@ -51,3 +52,13 @@ function graph_zoom(divId, svgId, scale) {
     pg.scrollLeft = (hcenter * pg.scrollWidth) - (pg.scrollWidth - pg.scrollLeftMax)/2.0;
     provenance_sizing_fixup(divId, svgId);
 }
+
+$(window).on('load resize', function () {
+    var s = document.getElementsByClassName("smart-scroll");
+    for (var i = 0; i < s.length; i++) {
+        a = s[i];
+        var h = window.innerHeight - a.getBoundingClientRect().top - 20;
+        height = String(h) + "px";
+        a.style.height = height;
+    }
+});
diff --git a/apps/workbench/app/assets/stylesheets/application.css.scss b/apps/workbench/app/assets/stylesheets/application.css.scss
index 6fc4522..d94dc4e 100644
--- a/apps/workbench/app/assets/stylesheets/application.css.scss
+++ b/apps/workbench/app/assets/stylesheets/application.css.scss
@@ -117,3 +117,7 @@ ul.arvados-nav li ul li {
     margin-right: 1em;
     float: left
 }
+
+.smart-scroll {
+    overflow: auto;
+}
\ No newline at end of file
diff --git a/apps/workbench/app/controllers/application_controller.rb b/apps/workbench/app/controllers/application_controller.rb
index aa87a60..4c2d6dd 100644
--- a/apps/workbench/app/controllers/application_controller.rb
+++ b/apps/workbench/app/controllers/application_controller.rb
@@ -142,6 +142,10 @@ class ApplicationController < ActionController::Base
      (@object.friendly_link_name if @object.respond_to? :friendly_link_name))
   end
 
+  def show_pane_list
+    %w(attributes links json api)
+  end
+
   protected
     
   def find_object_by_uuid
@@ -343,34 +347,5 @@ class ApplicationController < ActionController::Base
     if @notification_count == 0
       @notification_count = ''
     end
-    
-    # @my_ssh_keys = AuthorizedKey.where(authorized_user_uuid: current_user.uuid)
-    # @my_vm_perms = Link.where(tail_uuid: current_user.uuid, head_kind: 'arvados#virtual_machine', link_class: 'permission', name: 'can_login')
-    # @my_repo_perms = Link.where(tail_uuid: current_user.uuid, head_kind: 'arvados#repository', link_class: 'permission', name: 'can_write')
-
-    # @my_tag_links = {}
-
-    # @my_jobs = Job.
-    #   limit(10).
-    #   order('created_at desc').
-    #   where(created_by: current_user.uuid)
-
-    # @my_collections = Collection.
-    #   limit(10).
-    #   order('created_at desc').
-    #   where(created_by: current_user.uuid)
-
-    # Link.limit(1000).where(head_uuid: @my_collections.collect(&:uuid),
-    #                        link_class: 'tag').each do |link|
-    #   (@my_tag_links[link.head_uuid] ||= []) << link
-    # end
-
-    # @my_pipelines = PipelineInstance.
-    #   limit(10).
-    #   order('created_at desc').
-    #   where(created_by: current_user.uuid)
-
-    
-
   end
 end
diff --git a/apps/workbench/app/controllers/collections_controller.rb b/apps/workbench/app/controllers/collections_controller.rb
index c6a7eaf..c38ca9a 100644
--- a/apps/workbench/app/controllers/collections_controller.rb
+++ b/apps/workbench/app/controllers/collections_controller.rb
@@ -3,7 +3,7 @@ class CollectionsController < ApplicationController
   skip_before_filter :check_user_agreements, :only => [:show_file]
 
   def show_pane_list
-    %w(files attributes provenance provenance_graph used_by)
+    %w(files attributes provenance_graph used_by)
   end
   def index
     if params[:search].andand.length.andand > 0
diff --git a/apps/workbench/app/controllers/jobs_controller.rb b/apps/workbench/app/controllers/jobs_controller.rb
index e6179ff..9b52977 100644
--- a/apps/workbench/app/controllers/jobs_controller.rb
+++ b/apps/workbench/app/controllers/jobs_controller.rb
@@ -30,4 +30,8 @@ class JobsController < ApplicationController
   def show
     generate_provenance([@object])
   end
+
+  def show_pane_list
+    %w(attributes provenance links json api)
+  end
 end
diff --git a/apps/workbench/app/controllers/pipeline_instances_controller.rb b/apps/workbench/app/controllers/pipeline_instances_controller.rb
index 4798271..b7339c0 100644
--- a/apps/workbench/app/controllers/pipeline_instances_controller.rb
+++ b/apps/workbench/app/controllers/pipeline_instances_controller.rb
@@ -128,6 +128,10 @@ class PipelineInstancesController < ApplicationController
       :pips => pips }
   end
 
+  def show_pane_list
+    %w(components graph attributes  links json api)
+  end
+
   protected
   def for_comparison v
     if v.is_a? Hash or v.is_a? Array
diff --git a/apps/workbench/app/views/application/_arvados_object.html.erb b/apps/workbench/app/views/application/_arvados_object.html.erb
index d04ca84..b4bf70d 100644
--- a/apps/workbench/app/views/application/_arvados_object.html.erb
+++ b/apps/workbench/app/views/application/_arvados_object.html.erb
@@ -1,57 +1,5 @@
 <% content_for :arvados_object_table do %>
 
-<%= form_for @object do |f| %>
-<table class="table topalign">
-  <thead>
-  </thead>
-  <tbody>
-    <% @object.attributes_for_display.each do |attr, attrvalue| %>
-    <%= render partial: 'application/arvados_object_attr', locals: { attr: attr, attrvalue: attrvalue } %>
-    <% end %>
-  </tbody>
-</table>
-
-<% incoming = Link.where(tail_uuid: @object.uuid) %>
-<% if incoming.items_available > 0 %>
-<h3>Incoming Links</h3>
-<table class="table topalign">
-  <thead>
-  </thead>
-  <tbody>
-    <% incoming.each do |link| %>
-      <tr>
-        <td><%= render partial: 'application/arvados_attr_value', locals: { obj: link, attr: "uuid", attrvalue: link.uuid } %></td>
-        <td><%= render partial: 'application/arvados_attr_value', locals: { obj: link, attr: "link_class", attrvalue: link.link_class } %></td>
-        <td><%= render partial: 'application/arvados_attr_value', locals: { obj: link, attr: "name", attrvalue: link.name } %></td>
-        <td><%= render partial: 'application/arvados_attr_value', locals: { obj: link, attr: "head_uuid", attrvalue: link.head_uuid } %></td>
-        <td><%= render partial: 'application/arvados_attr_value', locals: { obj: link, attr: "properties", attrvalue: link.properties } %></td>
-      </tr>
-    <% end %>
-  </tbody>
-</table>
-<% end %>
-
-<% outgoing = Link.where(head_uuid: @object.uuid) %>
-<% if outgoing.items_available > 0 %>
-<h3>Outgoing Links</h3>
-<table class="table topalign">
-  <thead>
-  </thead>
-  <tbody>
-    <% outgoing.each do |link| %>
-      <tr>
-        <td><%= render partial: 'application/arvados_attr_value', locals: { obj: link, attr: "uuid", attrvalue: link.uuid } %></td>
-        <td><%= render partial: 'application/arvados_attr_value', locals: { obj: link, attr: "link_class", attrvalue: link.link_class } %></td>
-        <td><%= render partial: 'application/arvados_attr_value', locals: { obj: link, attr: "name", attrvalue: link.name } %></td>
-        <td><%= render partial: 'application/arvados_attr_value', locals: { obj: link, attr: "tail_uuid", attrvalue: link.tail_uuid } %></td>
-        <td><%= render partial: 'application/arvados_attr_value', locals: { obj: link, attr: "properties", attrvalue: link.properties } %></td>
-      </tr>
-    <% end %>
-  </tbody>
-</table>
-<% end %>
-
-<% end %>
 <% end %>
 
 <% if content_for? :page_content %>
@@ -80,45 +28,9 @@
     </div>
     <% end %>
     <div id="arvados-object-json" class="tab-pane fade in active">
-      <pre>
-<%= JSON.pretty_generate(@object.attributes.reject { |k,v| k == 'id' }) rescue nil %>
-      </pre>
-    </div>
 
-    <% if @object.andand.uuid %>
-
-    <div id="arvados-object-curl" class="tab-pane fade">
-      <pre>
-curl -X PUT \
- -H "Authorization: OAuth2 $ARVADOS_API_TOKEN" \
- --data-urlencode <%= @object.class.to_s.underscore %>@/dev/stdin \
- https://$ARVADOS_API_HOST/arvados/v1/<%= @object.class.to_s.pluralize.underscore %>/<%= @object.uuid %> \
- <<EOF
-<%= JSON.pretty_generate({@object.attributes.keys[-3] => @object.attributes.values[-3]}) %>
-EOF
-      </pre>
-    </div>
-
-    <div id="arvados-object-arv" class="tab-pane fade">
-      <pre>
-arv --pretty <%= @object.class.to_s.underscore %> get \
- --uuid <%= @object.uuid %>
-
-arv <%= @object.class.to_s.underscore %> update \
- --uuid <%= @object.uuid %> \
- --<%= @object.class.to_s.underscore.gsub '_', '-' %> '<%= JSON.generate({@object.attributes.keys[-3] => @object.attributes.values[-3]}).gsub("'","'\''") %>'
-      </pre>
     </div>
 
-    <div id="arvados-object-python" class="tab-pane fade">
-      <pre>
-import arvados
-
-x = arvados.api().<%= @object.class.to_s.pluralize.underscore %>().get(uuid='<%= @object.uuid %>').execute()
-      </pre>
-    </div>
-
-    <% end %>
 
   </div>
 </div>
diff --git a/apps/workbench/app/views/application/_show_api.html.erb b/apps/workbench/app/views/application/_show_api.html.erb
new file mode 100644
index 0000000..df271e0
--- /dev/null
+++ b/apps/workbench/app/views/application/_show_api.html.erb
@@ -0,0 +1,27 @@
+<% if @object.andand.uuid %>
+
+  <pre>
+curl -X PUT \
+ -H "Authorization: OAuth2 $ARVADOS_API_TOKEN" \
+ --data-urlencode <%= @object.class.to_s.underscore %>@/dev/stdin \
+ https://$ARVADOS_API_HOST/arvados/v1/<%= @object.class.to_s.pluralize.underscore %>/<%= @object.uuid %> \
+ <<EOF
+<%= JSON.pretty_generate({@object.attributes.keys[-3] => @object.attributes.values[-3]}) %>
+EOF
+  </pre>
+
+  <pre>
+arv --pretty <%= @object.class.to_s.underscore %> get \
+ --uuid <%= @object.uuid %>
+
+arv <%= @object.class.to_s.underscore %> update \
+ --uuid <%= @object.uuid %> \
+ --<%= @object.class.to_s.underscore.gsub '_', '-' %> '<%= JSON.generate({@object.attributes.keys[-3] => @object.attributes.values[-3]}).gsub("'","'\''") %>'
+      </pre>
+
+    <pre>
+import arvados
+
+x = arvados.api().<%= @object.class.to_s.pluralize.underscore %>().get(uuid='<%= @object.uuid %>').execute()
+      </pre>
+<% end %>
diff --git a/apps/workbench/app/views/application/_show_attributes.html.erb b/apps/workbench/app/views/application/_show_attributes.html.erb
index 0e8d2a2..965ec5a 100644
--- a/apps/workbench/app/views/application/_show_attributes.html.erb
+++ b/apps/workbench/app/views/application/_show_attributes.html.erb
@@ -1 +1,13 @@
-<%= render partial: 'arvados_object' %>
+<%= form_for @object do |f| %>
+<table class="table topalign">
+  <thead>
+  </thead>
+  <tbody>
+    <% @object.attributes_for_display.each do |attr, attrvalue| %>
+    <%= render partial: 'application/arvados_object_attr', locals: { attr: attr, attrvalue: attrvalue } %>
+    <% end %>
+  </tbody>
+</table>
+
+<% end %>
+
diff --git a/apps/workbench/app/views/application/_show_json.html.erb b/apps/workbench/app/views/application/_show_json.html.erb
new file mode 100644
index 0000000..2f0cd21
--- /dev/null
+++ b/apps/workbench/app/views/application/_show_json.html.erb
@@ -0,0 +1,3 @@
+<pre>
+<%= JSON.pretty_generate(@object.attributes.reject { |k,v| k == 'id' }) rescue nil %>
+</pre>
diff --git a/apps/workbench/app/views/application/_show_links.html.erb b/apps/workbench/app/views/application/_show_links.html.erb
new file mode 100644
index 0000000..8dcf335
--- /dev/null
+++ b/apps/workbench/app/views/application/_show_links.html.erb
@@ -0,0 +1,40 @@
+<% incoming = Link.where(tail_uuid: @object.uuid) %>
+<% if incoming.items_available > 0 %>
+<h3>Incoming Links</h3>
+<table class="table topalign">
+  <thead>
+  </thead>
+  <tbody>
+    <% incoming.each do |link| %>
+      <tr>
+        <td><%= render partial: 'application/arvados_attr_value', locals: { obj: link, attr: "uuid", attrvalue: link.uuid } %></td>
+        <td><%= render partial: 'application/arvados_attr_value', locals: { obj: link, attr: "link_class", attrvalue: link.link_class } %></td>
+        <td><%= render partial: 'application/arvados_attr_value', locals: { obj: link, attr: "name", attrvalue: link.name } %></td>
+        <td><%= render partial: 'application/arvados_attr_value', locals: { obj: link, attr: "head_uuid", attrvalue: link.head_uuid } %></td>
+        <td><%= render partial: 'application/arvados_attr_value', locals: { obj: link, attr: "properties", attrvalue: link.properties } %></td>
+      </tr>
+    <% end %>
+  </tbody>
+</table>
+<% end %>
+
+<% outgoing = Link.where(head_uuid: @object.uuid) %>
+<% if outgoing.items_available > 0 %>
+<h3>Outgoing Links</h3>
+<table class="table topalign">
+  <thead>
+  </thead>
+  <tbody>
+    <% outgoing.each do |link| %>
+      <tr>
+        <td><%= render partial: 'application/arvados_attr_value', locals: { obj: link, attr: "uuid", attrvalue: link.uuid } %></td>
+        <td><%= render partial: 'application/arvados_attr_value', locals: { obj: link, attr: "link_class", attrvalue: link.link_class } %></td>
+        <td><%= render partial: 'application/arvados_attr_value', locals: { obj: link, attr: "name", attrvalue: link.name } %></td>
+        <td><%= render partial: 'application/arvados_attr_value', locals: { obj: link, attr: "tail_uuid", attrvalue: link.tail_uuid } %></td>
+        <td><%= render partial: 'application/arvados_attr_value', locals: { obj: link, attr: "properties", attrvalue: link.properties } %></td>
+      </tr>
+    <% end %>
+  </tbody>
+</table>
+<% end %>
+
diff --git a/apps/workbench/app/views/application/_svg_div.html.erb b/apps/workbench/app/views/application/_svg_div.html.erb
index ddc8e61..9f5f330 100644
--- a/apps/workbench/app/views/application/_svg_div.html.erb
+++ b/apps/workbench/app/views/application/_svg_div.html.erb
@@ -27,8 +27,8 @@ stroke-linecap: round;
 
 <div id="_<%= divId %>_container" style="padding-top: 41px; margin-top: -41px">
   <div style="text-align: right">
-    <a style="cursor: pointer"><span class="icon-zoom-out" onclick="graph_zoom('<%= divId %>', '<%= svgId %>', .9)"></span></a>
-    <a style="cursor: pointer"><span class="icon-zoom-in" onclick="graph_zoom('<%= divId %>', '<%= svgId %>', 1./.9)"></span></a>
+    <a style="cursor: pointer"><span class="glyphicon glyphicon-zoom-out" onclick="graph_zoom('<%= divId %>', '<%= svgId %>', .9)"></span></a>
+    <a style="cursor: pointer"><span class="glyphicon glyphicon-zoom-in" onclick="graph_zoom('<%= divId %>', '<%= svgId %>', 1./.9)"></span></a>
   </div>
 
   <div id="<%= divId %>">
diff --git a/apps/workbench/app/views/application/index.html.erb b/apps/workbench/app/views/application/index.html.erb
index 4ebedf6..26adf59 100644
--- a/apps/workbench/app/views/application/index.html.erb
+++ b/apps/workbench/app/views/application/index.html.erb
@@ -7,6 +7,7 @@
     { action: 'create', return_to: request.url }, 
     { class: 'btn btn-primary pull-right' } %>
 <% end %>
+
 <%= form_tag({action: 'compare', controller: params[:controller], method: 'get'}, {method: 'get', id: 'compare', class: 'pull-right small-form-margin'}) do |f| %>
 <%= submit_tag 'Compare selected', {class: 'btn btn-primary', disabled: true, style: 'display: none'} %>
  
@@ -14,24 +15,17 @@
 
 <% pane_list = controller.index_pane_list rescue %w(recent) %>
 
-<% if pane_list.length > 1 %>
-<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" id="<%= pane %>-tab"> <%= pane.capitalize %></a></li>
+    <li class="<%= 'active' if i==0 %>"><a href="#<%= pane %>" data-toggle="tab" id="<%= pane %>-tab"> <%= pane.capitalize %></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: pane %>
+<% pane_list.each_with_index do |pane, i| %>
+  <div id="<%= pane %>" class="tab-pane fade <%= 'in active' if i==0 %>">
+    <div class="smart-scroll">
+      <%= render partial: pane %>
+    </div>
   </div>
-  <% end %>
-</div>
-
-<% else %>
-  <% pane_list.each_with_index do |pane, i| %>
-    <%= render partial: pane %>
-  <% end %>
 <% end %>
+</div>
diff --git a/apps/workbench/app/views/application/show.html.erb b/apps/workbench/app/views/application/show.html.erb
index d2abd72..03a8f9b 100644
--- a/apps/workbench/app/views/application/show.html.erb
+++ b/apps/workbench/app/views/application/show.html.erb
@@ -21,9 +21,8 @@
 <% end %>
 <% end %>
 
-<% pane_list = controller.show_pane_list rescue %w(attributes) %>
+<% pane_list = controller.show_pane_list  %>
 
-<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" id="<%= pane %>-tab"><%= pane.capitalize.gsub '_', ' ' %></a></li>
@@ -33,7 +32,9 @@
 <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 class="smart-scroll">
+      <%= render partial: 'show_' + pane %>
+    </div>
   </div>
   <% end %>
 </div>
diff --git a/apps/workbench/app/views/collections/_show_files.html.erb b/apps/workbench/app/views/collections/_show_files.html.erb
index 3973800..991c92d 100644
--- a/apps/workbench/app/views/collections/_show_files.html.erb
+++ b/apps/workbench/app/views/collections/_show_files.html.erb
@@ -3,7 +3,7 @@
     <tr>
       <th>path</th>
       <th>file</th>
-      <th style="width:1.5em">d/l</th>
+      <th style="width: 3em">d/l</th>
       <th style="width: 7em; text-align:right">size</th>
     </tr>
   </thead><tbody>
@@ -20,7 +20,7 @@
 
       <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'} %>
+          <%= link_to raw('<i class="glyphicon glyphicon-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>
 
diff --git a/apps/workbench/app/views/jobs/show.html.erb b/apps/workbench/app/views/jobs/_show_provenance.html.erb
similarity index 77%
rename from apps/workbench/app/views/jobs/show.html.erb
rename to apps/workbench/app/views/jobs/_show_provenance.html.erb
index 2bc74ca..253af56 100644
--- a/apps/workbench/app/views/jobs/show.html.erb
+++ b/apps/workbench/app/views/jobs/_show_provenance.html.erb
@@ -1,5 +1,3 @@
-<%= render partial: 'arvados_object' %>
-
 <%= render partial: 'application/svg_div', locals: {
       divId: "provenance_graph", 
       svgId: "provenance_svg", 
diff --git a/apps/workbench/app/views/layouts/application.html.erb b/apps/workbench/app/views/layouts/application.html.erb
index b5bf677..b7f4ad3 100644
--- a/apps/workbench/app/views/layouts/application.html.erb
+++ b/apps/workbench/app/views/layouts/application.html.erb
@@ -23,9 +23,19 @@
   <% end %>
   <style>
     <%= yield :css %>
+    body {
+    min-height: 100%;
+    height: 100%;
+    }
+
     body > div.container-fluid {
     padding-top: 70px; /* 70px to make the container go all the way to the bottom of the navbar */
     }
+    
+    body > div.container-fluid > div.col-sm-9.col-sm-offset-3 {
+    overflow: auto;
+    }
+
     @media (max-width: 979px) { body { padding-top: 0; } }
 
     .navbar .nav li.nav-separator > span.glyphicon.glyphicon-arrow-right {
@@ -39,7 +49,14 @@
     width: 400px;
     overflow-y: auto;
     }
-    
+
+    .arvados-nav-container {
+    position: fixed; 
+    top: 70px; 
+    height: calc(100% - 70px); 
+    overflow: auto; 
+    z-index: 2;
+    }
     .arvados-nav-active {
     background: rgb(66, 139, 202);
     }
@@ -87,10 +104,11 @@
 
         <li>
           <form class="navbar-form" role="search">
-            <div class="input-group" style="width: 300px">
+            <div class="input-group" style="width: 220px">
               <input type="text" class="form-control" placeholder="search">
-              <span class="input-group-addon"><span class="glyphicon glyphicon-search"></span>
+              <span class="input-group-addon"><span class="glyphicon glyphicon-search"></span></span>
             </div>
+          </form>
         </li>
 
         <li class="dropdown">
@@ -131,34 +149,36 @@
     </div>
   </div>
 
-  <div style="padding: 70px 15px 0px">
-    <div class="row">
+  <div class="container-fluid">
       <div class="col-sm-3">
+        <div class="left-nav arvados-nav-container">
         <% if current_user %>
         <div class="well">
         <ul class="arvados-nav">
           <li><a href="/">Dashboard</a></li>
-          <li>Data
-            <ul>
-              <li class="arvados-nav-active"><a href="/humans">Humans</a></li>
-              <li><a href="/traits">Traits</a></li>
-              <li><a href="/specimens">Specimens</a></li>
-              <li><a href="/collections">Files</a></li>
-            </ul>
-          </li>
-          <li>Compute
-            <ul>
-              <li><a href="/pipeline_templates">Pipelines</a></li>
-              <li><a href="/repositories">Script repositories</a></li>
-              <li><a href="/virtual_machines">Virtual machines</a></li>
-            </ul>
-          </li>
-          <li>History
-            <ul>
-              <li><a href="/pipeline_instances">Pipeline history</a></li>
-              <li><a href="/jobs">Job history</a></li>
-            </ul>
-          </li>
+          
+          <% [['Data', [['humans'],
+                        ['traits'],
+                        ['specimens'],
+                        ['collections', 'Files']]],
+              ['Compute', [['pipeline_templates', 'Pipelines'],
+                           ['repositories', 'Code repositories'],
+                           ['virtual_machines']]],
+              ['Activity', [['pipeline_instances', 'Recent pipelines'],
+                            ['jobs', 'Recent jobs']]]].each do |j| %>
+            <li><%= j[0] %>
+              <ul>
+              <% j[1].each do |k| %>
+                <li class="<%= 'arvados-nav-active' if params[:controller] == k[0] %>">
+                  <a href="/<%= k[0] %>">
+                    <%= if k[1] then k[1] else k[0].capitalize.gsub('_', ' ') end %>
+                  </a>
+                </li>
+              <% end %>
+              </ul>
+            </li>
+          <% end %>
+
           <li>Help
             <ul>
               <li><%= link_to 'Tutorials and User guide', "#{Rails.configuration.arvados_docsite}/user", target: "_blank" %></li>
@@ -168,23 +188,34 @@
             </ul>
           </li>
           <% if current_user.andand.is_admin %>
-          <li>Admin
-            <ul>
-              <li><a href="/users">Users</a></li>
-              <li><a href="/groups">Groups</a></li>
-              <li><a href="/compute_nodes">Compute nodes</a></li>
-              <li><a href="/keep_disks">Keep disks</a></li>
-            </ul>
-          </li>
+
+          <% [['Admin', [['users'],
+                         ['groups'],
+                         ['nodes', 'Compute nodes'],
+                         ['keep_disks']]]].each do |j| %>   
+            <li><%= j[0] %>
+              <ul>
+              <% j[1].each do |k| %>
+                <li class="<%= "arvados-nav-active" if params[:controller] == k[0] %>">
+                  <a href="/<%= k[0] %>">
+                    <%= if k[1] then k[1] else k[0].capitalize.gsub('_', ' ') end %>
+                  </a>
+                </li>
+              <% end %>
+              </ul>
+            </li>
+          <% end %>
           <% end %>
         </ul>
         </div>
         <% end %>
       </div>
-      <div class="col-sm-9">
-        <%= yield %>
+        </div>
+      <div class="col-sm-9 col-sm-offset-3">
+        <div id="content">
+          <%= yield %>
+        </div>
       </div>
-    </div>
   </div>
 
   <%= piwik_tracking_tag %>
diff --git a/apps/workbench/app/views/pipeline_instances/show.html.erb b/apps/workbench/app/views/pipeline_instances/_show_components.html.erb
similarity index 74%
rename from apps/workbench/app/views/pipeline_instances/show.html.erb
rename to apps/workbench/app/views/pipeline_instances/_show_components.html.erb
index cf56b97..c6f7f9a 100644
--- a/apps/workbench/app/views/pipeline_instances/show.html.erb
+++ b/apps/workbench/app/views/pipeline_instances/_show_components.html.erb
@@ -65,23 +65,6 @@ table.pipeline-components-table div.progress {
   </tfoot>
 </table>
 
-<% if @pipelines.count > 1 %>
-  <div style="text-align: center">
-    <span class="pipeline_color_legend" style="background: #88ff88">This pipeline</span> 
-    <span class="pipeline_color_legend" style="background: #8888ff">Comparison pipeline</span>
-    <span class="pipeline_color_legend" style="background: #88ffff">Shared by both pipelines</span>
-  </div>
-<% end %>
-
-   <%= render partial: 'application/svg_div', locals: {
-         divId: "provenance_graph", 
-         svgId: "provenance_svg", 
-         svg: @prov_svg } %>
-
-<div style="height: 1em"></div>
-
-<%= render partial: 'arvados_object' %>
-
 <% if @object.active %>
 <% content_for :js do %>
 setInterval(function(){$('a.refresh').click()}, 30000);
diff --git a/apps/workbench/app/views/pipeline_instances/_show_graph.html.erb b/apps/workbench/app/views/pipeline_instances/_show_graph.html.erb
new file mode 100644
index 0000000..ad3a8bb
--- /dev/null
+++ b/apps/workbench/app/views/pipeline_instances/_show_graph.html.erb
@@ -0,0 +1,19 @@
+<% content_for :css do %>
+  .pipeline_color_legend {
+    padding-left: 1em;
+    padding-right: 1em;
+  }
+<% end %>
+
+<% if @pipelines.count > 1 %>
+  <div style="text-align: center">
+    <span class="pipeline_color_legend" style="background: #88ff88">This pipeline</span> 
+    <span class="pipeline_color_legend" style="background: #8888ff">Comparison pipeline</span>
+    <span class="pipeline_color_legend" style="background: #88ffff">Shared by both pipelines</span>
+  </div>
+<% end %>
+
+<%= render partial: 'application/svg_div', locals: {
+      divId: "provenance_graph", 
+      svgId: "provenance_svg", 
+      svg: @prov_svg } %>
diff --git a/apps/workbench/app/views/pipeline_instances/show.js.erb b/apps/workbench/app/views/pipeline_instances/_show_graph.js.erb
similarity index 100%
rename from apps/workbench/app/views/pipeline_instances/show.js.erb
rename to apps/workbench/app/views/pipeline_instances/_show_graph.js.erb

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list