[ARVADOS] updated: 1e8f93a86465bce9bf6b32245ef99932c3cbfe08

git at public.curoverse.com git at public.curoverse.com
Mon Dec 30 15:08:16 EST 2013


Summary of changes:
 apps/workbench/app/controllers/users_controller.rb |    2 +
 .../app/views/layouts/application.html.erb         |    8 +-
 .../app/views/users/_notifications.html.erb        |  101 +++++++++
 apps/workbench/app/views/users/_tables.html.erb    |  182 +++++++++++++++
 apps/workbench/app/views/users/home.html.erb       |  236 +++-----------------
 doc/api/crunch-scripts.textile                     |    4 +-
 doc/api/index.textile                              |   44 ++--
 .../{ApiClients.textile => ApiClient.textile}      |   10 +-
 doc/api/schema/ApiClientAuthorization.textile      |    6 +-
 doc/api/schema/AuthorizedKey.textile               |    8 +-
 .../{Collections.textile => Collection.textile}    |   12 +-
 doc/api/schema/Commit.textile                      |    8 +-
 doc/api/schema/CommitAncestor.textile              |    8 +-
 doc/api/schema/Group.textile                       |    8 +-
 doc/api/schema/Human.textile                       |    8 +-
 doc/api/schema/{Jobs.textile => Job.textile}       |   16 +-
 .../schema/{JobTasks.textile => JobTask.textile}   |   14 +-
 doc/api/schema/KeepDisk.textile                    |    8 +-
 doc/api/schema/Link.textile                        |   62 ++++--
 doc/api/schema/Links.textile                       |   58 -----
 doc/api/schema/Log.textile                         |    8 +-
 doc/api/schema/Node.textile                        |    8 +-
 doc/api/schema/PipelineInstance.textile            |    8 +-
 doc/api/schema/PipelineTemplate.textile            |    8 +-
 doc/api/schema/Repository.textile                  |    8 +-
 doc/api/schema/Specimen.textile                    |    8 +-
 doc/api/schema/Trait.textile                       |    8 +-
 doc/api/schema/User.textile                        |    8 +-
 doc/api/schema/VirtualMachine.textile              |    8 +-
 docker/run.sh                                      |    2 +-
 sdk/cli/Gemfile                                    |    8 +
 sdk/cli/Gemfile.lock                               |   46 ++++
 sdk/python/requirements.txt                        |    4 +
 33 files changed, 526 insertions(+), 409 deletions(-)
 create mode 100644 apps/workbench/app/views/users/_notifications.html.erb
 create mode 100644 apps/workbench/app/views/users/_tables.html.erb
 rename doc/api/schema/{ApiClients.textile => ApiClient.textile} (75%)
 rename doc/api/schema/{Collections.textile => Collection.textile} (81%)
 rename doc/api/schema/{Jobs.textile => Job.textile} (86%)
 rename doc/api/schema/{JobTasks.textile => JobTask.textile} (88%)
 delete mode 100644 doc/api/schema/Links.textile
 create mode 100644 sdk/python/requirements.txt

       via  1e8f93a86465bce9bf6b32245ef99932c3cbfe08 (commit)
       via  0be3297ce7c76d312b429532541bf94a7da2b83c (commit)
       via  8c8391fa8c763032742bdc0d6fa0c02ca336a82a (commit)
       via  10be0dd7536aeb8909cb21573f9c47bfdc4cfbea (commit)
       via  0b7ddcd0f4d867b1794bf0a0b67a6120d3345fbd (commit)
       via  f26e2be2691915e1db2b384bb7b90260ca4f121f (commit)
       via  cb2aec9c9a0fb6c4d15b9b3db25e59f3c531df42 (commit)
       via  c5293d314b5ac46ef712ffbee0c2fa64e8baba52 (commit)
      from  8fe9c3a7c28ecc4a8b4f9fd788d5554dd391f725 (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 1e8f93a86465bce9bf6b32245ef99932c3cbfe08
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date:   Mon Dec 30 15:08:42 2013 -0500

    Account status is now part of the "notifications" area

diff --git a/apps/workbench/app/controllers/users_controller.rb b/apps/workbench/app/controllers/users_controller.rb
index 002ea62..89d336f 100644
--- a/apps/workbench/app/controllers/users_controller.rb
+++ b/apps/workbench/app/controllers/users_controller.rb
@@ -10,9 +10,11 @@ class UsersController < ApplicationController
   end
 
   def home
+    @showallalerts = false
     @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_jobs = Job.
       limit(10).
       order('created_at desc').
diff --git a/apps/workbench/app/views/users/_notifications.html.erb b/apps/workbench/app/views/users/_notifications.html.erb
new file mode 100644
index 0000000..37636c6
--- /dev/null
+++ b/apps/workbench/app/views/users/_notifications.html.erb
@@ -0,0 +1,101 @@
+<% if current_user.andand.is_active %>
+
+<% if @my_ssh_keys.count == 0 || @showallalerts %>
+  <div class="alert alert-info daxalert">
+    <button type="button" class="close" data-dismiss="alert">×</button>
+    <%= image_tag "dax.png", class: "dax" %>
+    <div>
+      Hi, I noticed that you have not yet set up an SSH public key for use with Arvados.  
+      <%= link_to "Click here to learn about SSH keys in Arvados.",
+	  "http://doc.arvados.org/user/getting_started/ssh-access.html", 
+	  style: "font-weight: bold",
+	  target: "_blank" %>
+      When you have an SSH key you would like to use, paste the SSH public key
+      in the text box.
+    </div>
+      <%= form_for AuthorizedKey.new do |f| %>
+	<%= hidden_field_tag :return_to, request.original_url %>
+	<%= f.text_area :public_key, cols: 50, rows: 4, placeholder: "Paste your public key here", style: "width: 100%" %>
+	<%= f.submit :Save, value: raw("✓"), class: "btn btn-primary pull-right" %>
+      <% end %>
+  </div>
+<% end %>
+
+<% if @my_collections.count == 0 || @showallalerts %>
+<div class="alert alert-info daxalert">
+  <button type="button" class="close" data-dismiss="alert">×</button>
+  <%= image_tag "dax.png", class: "dax" %>
+  <p>
+    Hi, I noticed you haven't uploaded a new collection yet. 
+    <%= link_to "Click here to learn how to upload data to Arvados Keep.", 
+	"http://doc.arvados.org/user/tutorials/tutorial-keep.html", 
+	style: "font-weight: bold", target: "_blank" %>
+  </p>
+</div>
+
+<% end %>
+
+<% if @my_jobs.count == 0 || @showallalerts %>
+<div class="alert alert-info daxalert">
+  <button type="button" class="close" data-dismiss="alert">×</button>  
+  <p><%= image_tag "dax.png", class: "dax" %>
+    Hi, I noticed you haven't run a job yet. 
+    <%= link_to "Click here to learn how to run an Arvados Crunch job.", 
+	"http://doc.arvados.org/user/tutorials/tutorial-job1.html", 
+	style: "font-weight: bold",
+	target: "_blank" %>
+  </p>
+</div>
+<% end %>
+
+<% if @my_pipelines.count == 0 || @showallalerts %>
+<div class="alert alert-info daxalert">
+  <button type="button" class="close" data-dismiss="alert">×</button>
+  <p><%= image_tag "dax.png", class: "dax" %>
+    Hi, I noticed you haven't run a pipeline yet.  
+    <%= link_to "Click here to learn how to run an Arvados Crunch pipeline.", 
+	"http://doc.arvados.org/user/tutorials/tutorial-new-pipeline.html", 
+	style: "font-weight: bold",
+	target: "_blank" %>
+  </p>
+</div>
+<% end %>
+
+<% end %>
+
+<div class="well">
+  <p><strong>Useful links</strong></p>
+  <p><ul>
+      <li><%= link_to "Arvados project page", "http://arvados.org", target: "_blank" %></li>
+      <li><%= link_to "Tutorials and user guide",
+      "http://doc.arvados.org/user/", target: "_blank" %></li>
+    </ul>
+  </p>
+</div>
+
+<% if current_user.andand.is_active %>
+<div class="well">
+  <p><strong>System status</strong></p>
+    <table>
+      <% [Human, Trait, Collection, PipelineTemplate,
+	  PipelineInstance].each do |aclass| %>
+	<tr>
+	  <td>
+	    <span style="margin-right: 2em">
+	      <a href="/<%= raw(aclass.to_s.pluralize.underscore) %>">
+	    <%= raw(aclass.to_s.pluralize.underscore.capitalize.gsub '_', ' ') %>
+	    </a>
+	    </span>
+	    </td>
+	  <td>
+        <% if aclass == 'File' %>
+          <%= Collection.limit(4000).where({}).collect(&:files).flatten(1).count %>
+        <% else %>
+          <%= aclass.limit(4000).where({}).count %>
+        <% end %>
+	</td>
+	</tr>
+      <% end %>
+      </table>
+</div>
+<% end %>
diff --git a/apps/workbench/app/views/users/_tables.html.erb b/apps/workbench/app/views/users/_tables.html.erb
new file mode 100644
index 0000000..c52057c
--- /dev/null
+++ b/apps/workbench/app/views/users/_tables.html.erb
@@ -0,0 +1,182 @@
+<% if current_user.andand.is_active %>
+  <div>
+    <strong>Recent jobs</strong>
+    <%= link_to raw("Show all jobs →"), jobs_path, class: 'pull-right' %>
+    <% if not current_user.andand.is_active or @my_jobs.empty? %>
+      <br/>(None)
+    <% else %>
+      <table class="table table-bordered table-condensed job-table">
+	<colgroup>
+          <col width="28%" />
+          <col width="38%" />
+          <col width="7%" />
+          <col width="15%" />
+          <col width="12%" />
+	</colgroup>
+
+        <tr>
+	  <th>Script</th>
+	  <th>Output</th>
+	  <th>Log</th>
+	  <th>Status</th>
+	  <th>Age</th>
+	</tr>
+
+        <% @my_jobs[0..6].each do |j| %>
+          <tr>
+            <td>
+              <small>
+		<%= link_to j.script[0..31], job_path(j.uuid) %>
+              </small>
+            </td>
+
+	    <td>
+	      <small>
+		<% if j.success %>
+
+		  <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]}" %>
+		    <% end %>
+		<% end %>
+		</a>
+
+	<% end %>
+	</small>
+</td>
+
+<td>
+  <small>
+    <% if j.success %>
+      <a href="<%= collection_path(j.log) %>">Log</a>
+    <% end %>
+  </small>
+</td>
+
+<td>
+  <small>
+    <%= raw(distance_of_time_in_words(j[:created_at], Time.now).sub('about
+','~').sub(' ',' ')) if j[:created_at] %> ago
+  </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.running and j.started_at and not j.finished_at %>
+    <% percent_total_tasks = 100 / (j.tasks_summary[:running] + j.tasks_summary[:done] + j.tasks_summary[:todo]) rescue 0 %>
+    <div class="progress" style="margin-bottom: 0">
+      <div class="bar bar-success" style="width: <%= j.tasks_summary[:done] * percent_total_tasks rescue 0 %>%;"></div>
+      <div class="bar" style="width: <%= j.tasks_summary[:running] * percent_total_tasks rescue 0 %>%; opacity: 0.3"></div>
+    </div>
+  <% else %>
+    <span class="label">queued</span>
+  <% end %>
+</td>
+
+</tr>
+<% end %>
+</table>
+<% end %>
+</div>
+
+<div>
+  <strong>Recent pipeline instances</strong>
+  <%= link_to raw("Show all pipeline instances →"), jobs_path, class: 'pull-right' %>
+  <% if not current_user.andand.is_active or @my_pipelines.empty? %>
+    <br/>(None)
+  <% else %>
+    <table class="table table-bordered table-condensed job-table">
+      <colgroup>
+        <col width="73%" />
+        <col width="15%" />
+        <col width="12%" />
+      </colgroup>
+
+      <tr>
+	<th>Pipeline template</th>
+	<th>Age</th>
+	<th>Status</th>
+      </tr>
+
+      <% @my_pipelines[0..6].each do |p| %>
+        <tr>
+          <td>
+            <small>
+	      <% PipelineTemplate.limit(1).where(uuid: p.pipeline_template_uuid).each do |i| %>
+		<%= link_to i.name, pipeline_instance_path(p.uuid) %>
+	      <% end %>
+            </small>
+          </td>
+
+          <td>
+            <small>
+	      <%= raw(distance_of_time_in_words(p[:created_at], Time.now).sub('about
+','~').sub(' ',' ')) if p[:created_at] %> ago
+            </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 %>
+              <span class="label label-info">running</span>
+            <% else %>
+              <span class="label">queued</span>
+            <% end %>
+          </td>
+
+        </tr>
+      <% end %>
+    </table>
+  <% end %>
+</div>
+
+<div>
+  <strong>Recent collections</strong>
+  <%= link_to raw("Show all collections →"), collections_path, class: 'pull-right' %>
+  <% if not current_user.andand.is_active or @my_collections.empty? %>
+    <br/>(None)
+  <% else %>
+    <table class="table table-bordered table-condensed job-table">
+      <colgroup>
+        <col width="73%" />
+        <col width="27%" />
+      </colgroup>
+
+      <tr>
+	<th>Contents</th>
+	<th>Age</th>
+      </tr>
+
+      <% @my_collections[0..6].each do |c| %>
+        <tr>
+          <td>
+            <small>
+	      <a href="<%= collection_path(c.uuid) %>">
+		<% c.files.each do |file| %>
+		  <%= "#{file[0]}/#{file[1]}" %>
+		<% end %>
+	      </a>
+            </small>
+          </td>
+          <td>
+            <small>
+	      <%= raw(distance_of_time_in_words(c[:created_at], Time.now).sub('about
+','~').sub(' ',' ')) if c[:created_at] %> ago
+            </small>
+          </td>
+        </tr>
+      <% end %>
+    </table>
+  <% end %>
+</div>
+
+<% else %>
+  <%= image_tag "dax.png", style: "max-width=40%" %>
+<% end %>
diff --git a/apps/workbench/app/views/users/home.html.erb b/apps/workbench/app/views/users/home.html.erb
index 89fab32..d221db9 100644
--- a/apps/workbench/app/views/users/home.html.erb
+++ b/apps/workbench/app/views/users/home.html.erb
@@ -37,315 +37,37 @@
     </style>
 <% end %>
 
-<% if current_user.andand.is_active %>
-
 <div class="container-fluid">
-  
-  <div class="span7">
-
-    <div>
-      <strong>Recent jobs</strong>
-      <%= link_to raw("Show all jobs →"), jobs_path, class: 'pull-right' %>
-      <% if not current_user.andand.is_active or @my_jobs.empty? %>
-      (None)
-      <% else %>
-      <table class="table table-bordered table-condensed job-table">
-	<colgroup>
-          <col width="28%" />
-          <col width="38%" />
-          <col width="7%" />
-          <col width="15%" />
-          <col width="12%" />
-	</colgroup>
-
-        <tr>
-	  <th>Script</th>
-	  <th>Output</th>
-	  <th>Log</th>
-	  <th>Status</th>
-	  <th>Age</th>
-	</tr>
-
-        <% @my_jobs[0..6].each do |j| %>
-        <tr>
-          <td>
-            <small>
-              <%= link_to j.script[0..31], job_path(j.uuid) %>
-            </small>
-          </td>
-
-	  <td>
-	    <small>
-	    <% if j.success %>
 
-	      <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]}" %>
-		<% end %>
-		<% end %>
-	      </a>
-
-	    <% end %>
-	    </small>
-	  </td>
-
-	  <td>
-	    <small>
-	    <% if j.success %>
-	      <a href="<%= collection_path(j.log) %>">Log</a>
-	    <% end %>
-	    </small>
-	  </td>
-
-          <td>
-            <small>
-<%= raw(distance_of_time_in_words(j[:created_at], Time.now).sub('about
-','~').sub(' ',' ')) if j[:created_at] %> ago
-            </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.running and j.started_at and not j.finished_at %>
-            <% percent_total_tasks = 100 / (j.tasks_summary[:running] + j.tasks_summary[:done] + j.tasks_summary[:todo]) rescue 0 %>
-            <div class="progress" style="margin-bottom: 0">
-              <div class="bar bar-success" style="width: <%= j.tasks_summary[:done] * percent_total_tasks rescue 0 %>%;"></div>
-              <div class="bar" style="width: <%= j.tasks_summary[:running] * percent_total_tasks rescue 0 %>%; opacity: 0.3"></div>
-            </div>
-            <% else %>
-            <span class="label">queued</span>
-            <% end %>
-          </td>
-
-        </tr>
-        <% end %>
-      </table>
-      <% end %>
-    </div>
+  <div class="span3 pull-right">
+    <br/>
 
-    <div>
-      <strong>Recent pipeline instances</strong>
-      <%= link_to raw("Show all pipeline instances →"), jobs_path, class: 'pull-right' %>
-      <% if not current_user.andand.is_active or @my_pipelines.empty? %>
-      (None)
-      <% else %>
-      <table class="table table-bordered table-condensed job-table">
-	<colgroup>
-          <col width="73%" />
-          <col width="15%" />
-          <col width="12%" />
-	</colgroup>
-
-        <tr>
-	  <th>Pipeline template</th>
-	  <th>Age</th>
-	  <th>Status</th>
-	</tr>
-
-        <% @my_pipelines[0..6].each do |p| %>
-        <tr>
-          <td>
-            <small>
-	      <% PipelineTemplate.limit(1).where(uuid: p.pipeline_template_uuid).each do |i| %>
-		<%= link_to i.name, pipeline_instance_path(p.uuid) %>
-	      <% end %>
-            </small>
-          </td>
-
-          <td>
-            <small>
-<%= raw(distance_of_time_in_words(p[:created_at], Time.now).sub('about
-','~').sub(' ',' ')) if p[:created_at] %> ago
-            </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 %>
-            <span class="label label-info">running</span>
-            <% else %>
-            <span class="label">queued</span>
-            <% end %>
-          </td>
-
-        </tr>
-        <% end %>
-      </table>
-      <% end %>
+    <div class="well">
+<% if current_user.andand.is_active %>
+  <p>Your account status:<br/>
+    <strong>Active</strong></p>
+<% elsif current_user %>
+      <p>Your account status:<br/>
+	<strong>New / inactive</strong></p>
+      <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.
+      </p>
+      <p>
+	<%= link_to raw('Contact us &#x2709;'),
+	    Rails.configuration.activation_contact_link, class: "btn btn-primary" %></p>
+<% end %>
     </div>
 
-    <div>
-      <strong>Recent collections</strong>
-      <%= link_to raw("Show all collections →"), collections_path, class: 'pull-right' %>
-      <% if not current_user.andand.is_active or @my_collections.empty? %>
-      (None)
-      <% else %>
-      <table class="table table-bordered table-condensed job-table">
-	<colgroup>
-          <col width="73%" />
-          <col width="27%" />
-	</colgroup>
-
-	<tr>
-	  <th>Contents</th>
-	  <th>Age</th>
-	</tr>
-
-        <% @my_collections[0..6].each do |c| %>
-        <tr>
-          <td>
-            <small>
-	      <a href="<%= collection_path(c.uuid) %>">
-              <% c.files.each do |file| %>
-              <%= "#{file[0]}/#{file[1]}" %>
-	      <% end %>
-	      </a>
-            </small>
-          </td>
-          <td>
-            <small>
-<%= raw(distance_of_time_in_words(c[:created_at], Time.now).sub('about
-','~').sub(' ',' ')) if c[:created_at] %> ago
-            </small>
-          </td>
-        </tr>
-        <% end %>
-      </table>
-      <% end %>
-    </div>
+    <%= render :partial => 'notifications' %>
   </div>
-
-<div class="span4">
-<br/>
-
-<% if @my_ssh_keys.count == 0%>
-  <div class="alert alert-info daxalert">
-    <button type="button" class="close" data-dismiss="alert">×</button>
-    <%= image_tag "dax.png", class: "dax" %>
-    <div>
-      Hi, I noticed that you have not yet set up an SSH public key for use with Arvados.  
-      <%= link_to "Click here to learn about SSH keys in Arvados.",
-	  "http://doc.arvados.org/user/getting_started/ssh-access.html", 
-	  style: "font-weight: bold",
-	  target: "_blank" %>
-      When you have an SSH key you would like to use, paste the SSH public key
-      in the text box.
-    </div>
-      <%= form_for AuthorizedKey.new do |f| %>
-	<%= hidden_field_tag :return_to, request.original_url %>
-	<%= f.text_area :public_key, cols: 50, rows: 4, placeholder: "Paste your public key here", style: "width: 100%" %>
-	<%= f.submit :Save, value: raw("✓"), class: "btn btn-primary pull-right" %>
-      <% end %>
+  
+  <div class="span8">
+    <%= render :partial => 'tables' %>
   </div>
-<% end %>
-
-<% if @my_collections.count == 0 %>
-<div class="alert alert-info daxalert">
-  <button type="button" class="close" data-dismiss="alert">×</button>
-  <%= image_tag "dax.png", class: "dax" %>
-  <p>
-    Hi, I noticed you haven't uploaded a new collection yet. 
-    <%= link_to "Click here to learn how to upload data to Arvados Keep.", 
-	"http://doc.arvados.org/user/tutorials/tutorial-keep.html", 
-	style: "font-weight: bold", target: "_blank" %>
-  </p>
-</div>
-
-<% end %>
-
-<% if @my_jobs.count == 0 %>
-<div class="alert alert-info daxalert">
-  <button type="button" class="close" data-dismiss="alert">×</button>  
-  <p><%= image_tag "dax.png", class: "dax" %>
-    Hi, I noticed you haven't run a job yet. 
-    <%= link_to "Click here to learn how to run an Arvados Crunch job.", 
-	"http://doc.arvados.org/user/tutorials/tutorial-job1.html", 
-	style: "font-weight: bold",
-	target: "_blank" %>
-  </p>
-</div>
-<% end %>
-
-<% if @my_pipelines.count == 0 %>
-<div class="alert alert-info daxalert">
-  <button type="button" class="close" data-dismiss="alert">×</button>
-  <p><%= image_tag "dax.png", class: "dax" %>
-    Hi, I noticed you haven't run a pipeline yet.  
-    <%= link_to "Click here to learn how to run an Arvados Crunch pipeline.", 
-	"http://doc.arvados.org/user/tutorials/tutorial-new-pipeline.html", 
-	style: "font-weight: bold",
-	target: "_blank" %>
-  </p>
-</div>
-<% end %>
-
-<div class="well">
-  <p><strong>Useful links</strong></p>
-  <p><ul>
-      <li><%= link_to "Arvados project page", "http://arvados.org", target: "_blank" %></li>
-      <li><%= link_to "Tutorials and user guide",
-      "http://doc.arvados.org/user/", target: "_blank" %></li>
-    </ul>
-  </p>
-</div>
-
-<div class="well">
-  <p><strong>System status</strong></p>
-    <table>
-      <% [Human, Trait, Collection, PipelineTemplate,
-	  PipelineInstance].each do |aclass| %>
-	<tr>
-	  <td>
-	    <span style="margin-right: 2em">
-	      <a href="/<%= raw(aclass.to_s.pluralize.underscore) %>">
-	    <%= raw(aclass.to_s.pluralize.underscore.capitalize.gsub '_', ' ') %>
-	    </a>
-	    </span>
-	    </td>
-	  <td>
-        <% if aclass == 'File' %>
-          <%= Collection.limit(4000).where({}).collect(&:files).flatten(1).count %>
-        <% else %>
-          <%= aclass.limit(4000).where({}).count %>
-        <% end %>
-	</td>
-	</tr>
-      <% end %>
-      </table>
-</div>
 
 </div>
-</div>
-
-<% elsif current_user %>
-  <%= image_tag "dax.png", style: "float: left; max-width: 25%; margin-right: 2em" %>
-  <h1>Welcome to Arvados, <%= current_user.first_name %>!</h1>
-  <div class="row-fluid">
-    <div class="col span8">
-      <h4>Your account status</h4>
-      <div class="well clearfix">
-	<p><strong>New / inactive</strong></p>
-	<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>
-	  <%= link_to raw('Contact us &#x2709;'),
-	      Rails.configuration.activation_contact_link, class: "pull-right btn btn-primary" %></p>
-      </div>
-    </div>
-  </div>
-<% end %>

commit 0be3297ce7c76d312b429532541bf94a7da2b83c
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date:   Mon Dec 30 12:19:22 2013 -0500

    Added system status box

diff --git a/apps/workbench/app/views/users/home.html.erb b/apps/workbench/app/views/users/home.html.erb
index bf14fdd..89fab32 100644
--- a/apps/workbench/app/views/users/home.html.erb
+++ b/apps/workbench/app/views/users/home.html.erb
@@ -223,6 +223,8 @@
   </div>
 
 <div class="span4">
+<br/>
+
 <% if @my_ssh_keys.count == 0%>
   <div class="alert alert-info daxalert">
     <button type="button" class="close" data-dismiss="alert">×</button>
@@ -294,6 +296,31 @@
   </p>
 </div>
 
+<div class="well">
+  <p><strong>System status</strong></p>
+    <table>
+      <% [Human, Trait, Collection, PipelineTemplate,
+	  PipelineInstance].each do |aclass| %>
+	<tr>
+	  <td>
+	    <span style="margin-right: 2em">
+	      <a href="/<%= raw(aclass.to_s.pluralize.underscore) %>">
+	    <%= raw(aclass.to_s.pluralize.underscore.capitalize.gsub '_', ' ') %>
+	    </a>
+	    </span>
+	    </td>
+	  <td>
+        <% if aclass == 'File' %>
+          <%= Collection.limit(4000).where({}).collect(&:files).flatten(1).count %>
+        <% else %>
+          <%= aclass.limit(4000).where({}).count %>
+        <% end %>
+	</td>
+	</tr>
+      <% end %>
+      </table>
+</div>
+
 </div>
 </div>
 

commit 8c8391fa8c763032742bdc0d6fa0c02ca336a82a
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date:   Mon Dec 30 11:54:28 2013 -0500

    New two-column dashboard layout suggested by Adam

diff --git a/apps/workbench/app/views/layouts/application.html.erb b/apps/workbench/app/views/layouts/application.html.erb
index c295dc3..e7c7d5d 100644
--- a/apps/workbench/app/views/layouts/application.html.erb
+++ b/apps/workbench/app/views/layouts/application.html.erb
@@ -93,10 +93,10 @@
               Docs <b class="caret"></b>
             </a>
             <ul class="dropdown-menu">
-              <li><%= link_to 'Tutorials and User guide', "http://doc.arvados.org/user" %></li>
-              <li><%= link_to 'API Reference', "http://doc.arvados.org/api" %></li>
-              <li><%= link_to 'Admin guide', "http://doc.arvados.org/admin" %></li>
-              <li><%= link_to 'Install guide', "http://doc.arvados.org/install" %></li>
+              <li><%= link_to 'Tutorials and User guide', "http://doc.arvados.org/user", target: "_blank" %></li>
+              <li><%= link_to 'API Reference', "http://doc.arvados.org/api", target: "_blank" %></li>
+              <li><%= link_to 'Admin guide', "http://doc.arvados.org/admin", target: "_blank" %></li>
+              <li><%= link_to 'Install guide', "http://doc.arvados.org/install", target: "_blank" %></li>
             </ul>
           </li>
 
diff --git a/apps/workbench/app/views/users/home.html.erb b/apps/workbench/app/views/users/home.html.erb
index d99b29a..bf14fdd 100644
--- a/apps/workbench/app/views/users/home.html.erb
+++ b/apps/workbench/app/views/users/home.html.erb
@@ -27,7 +27,7 @@
       font-weight: bold;
       }
       .dax {
-      max-width: 5%;
+      max-width: 10%;
       margin-right: 1em;
       float: left
       }
@@ -39,116 +39,72 @@
 
 <% if current_user.andand.is_active %>
 
+<div class="container-fluid">
+  
+  <div class="span7">
 
-<% if @my_ssh_keys.count == 0%>
-  <div class="alert alert-info daxalert">
-    <button type="button" class="close" data-dismiss="alert">×</button>
-    <%= image_tag "dax.png", class: "dax" %>
-    <div class="span5" style="margin-right: 1em">
-      Hi, I noticed that you have not yet set up an SSH public key for use with Arvados.  
-      <%= link_to "Click here to learn about SSH keys in Arvados.",
-	  "http://doc.arvados.org/user/getting_started/ssh-access.html", style: "font-weight: bold" %>
-      Once have an SSH key you would like to use, paste your SSH public key
-      in the text box.
-    </div>
-      <%= form_for AuthorizedKey.new do |f| %>
-	<%= hidden_field_tag :return_to, request.original_url %>
-	<%= f.text_area :public_key, cols: 50, rows: 4, placeholder: "Paste your public key here", style: "width: 40%" %>
-	<%= f.submit :Save, value: raw("✓"), class: "btn btn-primary", style: "vertical-align: top" %>
-      <% end %>
-  </div>
-<% end %>
-
-<% if @my_collections.count == 0 %>
-<div class="alert alert-info daxalert">
-  <button type="button" class="close" data-dismiss="alert">×</button>
-  <%= image_tag "dax.png", class: "dax" %>
-  <p>
-    Hi, I noticed you haven't uploaded a new collection yet. 
-    <%= link_to "Click here to learn how to upload data to Arvados Keep.", "http://doc.arvados.org/user/tutorials/tutorial-keep.html", style: "font-weight: bold" %>
-  </p>
-</div>
-
-<% end %>
-
-<% if @my_jobs.count == 0 %>
-<div class="alert alert-info daxalert">
-  <button type="button" class="close" data-dismiss="alert">×</button>  
-  <p><%= image_tag "dax.png", class: "dax" %>
-    Hi, I noticed you haven't run a job yet. 
-    <%= link_to "Click here to learn how to run an Arvados Crunch job.", "http://doc.arvados.org/user/tutorials/tutorial-job1.html", style: "font-weight: bold" %>
-  </p>
-</div>
-<% end %>
-
-<% if @my_pipelines.count == 0 %>
-<div class="alert alert-info daxalert">
-  <button type="button" class="close" data-dismiss="alert">×</button>
-  <p><%= image_tag "dax.png", class: "dax" %>
-    Hi, I noticed you haven't run a pipeline yet.  
-    <%= link_to "Click here to learn how to run an Arvados Crunch pipeline.", "http://doc.arvados.org/user/tutorials/tutorial-new-pipeline.html", style: "font-weight: bold" %>
-  </p>
-</div>
-<% end %>
-
-<div class="row-fluid">
-
-  <div class="col span4">
-    <div class="clearfix">
-      <h4>Recent collections</h4>
-      <% if not current_user.andand.is_active or @my_collections.empty? %>
+    <div>
+      <strong>Recent jobs</strong>
+      <%= link_to raw("Show all jobs →"), jobs_path, class: 'pull-right' %>
+      <% if not current_user.andand.is_active or @my_jobs.empty? %>
       (None)
       <% else %>
       <table class="table table-bordered table-condensed job-table">
 	<colgroup>
-          <col width="70%" />
-          <col width="30%" />
+          <col width="28%" />
+          <col width="38%" />
+          <col width="7%" />
+          <col width="15%" />
+          <col width="12%" />
 	</colgroup>
-        <% @my_collections[0..8].each do |c| %>
+
+        <tr>
+	  <th>Script</th>
+	  <th>Output</th>
+	  <th>Log</th>
+	  <th>Status</th>
+	  <th>Age</th>
+	</tr>
+
+        <% @my_jobs[0..6].each do |j| %>
         <tr>
           <td>
             <small>
-	      <a href="<%= collection_path(c.uuid) %>">
-              <% c.files.each do |file| %>
-              <%= "#{file[0]}/#{file[1]}" %>
-	      <% end %>
-	      </a>
-            </small>
-          </td>
-          <td>
-            <small>
-<%= raw(distance_of_time_in_words(c[:created_at], Time.now).sub('about
-','~').sub(' ',' ')) if c[:created_at] %> ago
+              <%= link_to j.script[0..31], job_path(j.uuid) %>
             </small>
           </td>
-        </tr>
-        <% end %>
-      </table>
-      <%= link_to raw("Show all collections →"), collections_path, class: 'pull-right' %>
-      <% end %>
-    </div>
-  </div>
 
-  <div class="col span4">
-    <div class="clearfix">
-      <h4>Recent jobs</h4>
-      <% if not current_user.andand.is_active or @my_jobs.empty? %>
-      (None)
-      <% else %>
-      <table class="table table-bordered table-condensed job-table">
-	<colgroup>
-          <col width="40%" />
-          <col width="20%" />
-          <col width="40%" />
-	</colgroup>
+	  <td>
+	    <small>
+	    <% if j.success %>
+
+	      <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]}" %>
+		<% end %>
+		<% end %>
+	      </a>
+
+	    <% end %>
+	    </small>
+	  </td>
+
+	  <td>
+	    <small>
+	    <% if j.success %>
+	      <a href="<%= collection_path(j.log) %>">Log</a>
+	    <% end %>
+	    </small>
+	  </td>
 
-        <% @my_jobs[0..8].each do |j| %>
-        <tr>
           <td>
             <small>
-              <%= link_to j.script[0..31], job_path(j.uuid) %>
+<%= raw(distance_of_time_in_words(j[:created_at], Time.now).sub('about
+','~').sub(' ',' ')) if j[:created_at] %> ago
             </small>
           </td>
+
           <td>
             <% if j.success %>
             <span class="label label-success">finished</span>
@@ -164,42 +120,33 @@
             <span class="label">queued</span>
             <% end %>
           </td>
-	  <td>
-	    <small>
-	    <% if j.success %>
 
-	      <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]}" %>
-		<% end %>
-		<% end %>
-	      </a>
-
-	    <% end %>
-	    </small>
-	  </td>
         </tr>
         <% end %>
       </table>
-      <%= link_to raw("Show all jobs →"), jobs_path, class: 'pull-right' %>
       <% end %>
     </div>
-  </div>
 
-  <div class="col span4">
-    <div class="clearfix">
-      <h4>Recent pipeline instances</h4>
+    <div>
+      <strong>Recent pipeline instances</strong>
+      <%= link_to raw("Show all pipeline instances →"), jobs_path, class: 'pull-right' %>
       <% if not current_user.andand.is_active or @my_pipelines.empty? %>
       (None)
       <% else %>
       <table class="table table-bordered table-condensed job-table">
 	<colgroup>
-          <col width="80%" />
-          <col width="20%" />
+          <col width="73%" />
+          <col width="15%" />
+          <col width="12%" />
 	</colgroup>
 
-        <% @my_pipelines[0..8].each do |p| %>
+        <tr>
+	  <th>Pipeline template</th>
+	  <th>Age</th>
+	  <th>Status</th>
+	</tr>
+
+        <% @my_pipelines[0..6].each do |p| %>
         <tr>
           <td>
             <small>
@@ -208,6 +155,14 @@
 	      <% end %>
             </small>
           </td>
+
+          <td>
+            <small>
+<%= raw(distance_of_time_in_words(p[:created_at], Time.now).sub('about
+','~').sub(' ',' ')) if p[:created_at] %> ago
+            </small>
+          </td>
+
           <td>
             <% if p.success %>
             <span class="label label-success">finished</span>
@@ -219,15 +174,127 @@
             <span class="label">queued</span>
             <% end %>
           </td>
+
+        </tr>
+        <% end %>
+      </table>
+      <% end %>
+    </div>
+
+    <div>
+      <strong>Recent collections</strong>
+      <%= link_to raw("Show all collections →"), collections_path, class: 'pull-right' %>
+      <% if not current_user.andand.is_active or @my_collections.empty? %>
+      (None)
+      <% else %>
+      <table class="table table-bordered table-condensed job-table">
+	<colgroup>
+          <col width="73%" />
+          <col width="27%" />
+	</colgroup>
+
+	<tr>
+	  <th>Contents</th>
+	  <th>Age</th>
+	</tr>
+
+        <% @my_collections[0..6].each do |c| %>
+        <tr>
+          <td>
+            <small>
+	      <a href="<%= collection_path(c.uuid) %>">
+              <% c.files.each do |file| %>
+              <%= "#{file[0]}/#{file[1]}" %>
+	      <% end %>
+	      </a>
+            </small>
+          </td>
+          <td>
+            <small>
+<%= raw(distance_of_time_in_words(c[:created_at], Time.now).sub('about
+','~').sub(' ',' ')) if c[:created_at] %> ago
+            </small>
+          </td>
         </tr>
         <% end %>
       </table>
-      <%= link_to raw("Show all pipeline instances →"), jobs_path, class: 'pull-right' %>
       <% end %>
     </div>
   </div>
 
+<div class="span4">
+<% if @my_ssh_keys.count == 0%>
+  <div class="alert alert-info daxalert">
+    <button type="button" class="close" data-dismiss="alert">×</button>
+    <%= image_tag "dax.png", class: "dax" %>
+    <div>
+      Hi, I noticed that you have not yet set up an SSH public key for use with Arvados.  
+      <%= link_to "Click here to learn about SSH keys in Arvados.",
+	  "http://doc.arvados.org/user/getting_started/ssh-access.html", 
+	  style: "font-weight: bold",
+	  target: "_blank" %>
+      When you have an SSH key you would like to use, paste the SSH public key
+      in the text box.
+    </div>
+      <%= form_for AuthorizedKey.new do |f| %>
+	<%= hidden_field_tag :return_to, request.original_url %>
+	<%= f.text_area :public_key, cols: 50, rows: 4, placeholder: "Paste your public key here", style: "width: 100%" %>
+	<%= f.submit :Save, value: raw("✓"), class: "btn btn-primary pull-right" %>
+      <% end %>
+  </div>
+<% end %>
 
+<% if @my_collections.count == 0 %>
+<div class="alert alert-info daxalert">
+  <button type="button" class="close" data-dismiss="alert">×</button>
+  <%= image_tag "dax.png", class: "dax" %>
+  <p>
+    Hi, I noticed you haven't uploaded a new collection yet. 
+    <%= link_to "Click here to learn how to upload data to Arvados Keep.", 
+	"http://doc.arvados.org/user/tutorials/tutorial-keep.html", 
+	style: "font-weight: bold", target: "_blank" %>
+  </p>
+</div>
+
+<% end %>
+
+<% if @my_jobs.count == 0 %>
+<div class="alert alert-info daxalert">
+  <button type="button" class="close" data-dismiss="alert">×</button>  
+  <p><%= image_tag "dax.png", class: "dax" %>
+    Hi, I noticed you haven't run a job yet. 
+    <%= link_to "Click here to learn how to run an Arvados Crunch job.", 
+	"http://doc.arvados.org/user/tutorials/tutorial-job1.html", 
+	style: "font-weight: bold",
+	target: "_blank" %>
+  </p>
+</div>
+<% end %>
+
+<% if @my_pipelines.count == 0 %>
+<div class="alert alert-info daxalert">
+  <button type="button" class="close" data-dismiss="alert">×</button>
+  <p><%= image_tag "dax.png", class: "dax" %>
+    Hi, I noticed you haven't run a pipeline yet.  
+    <%= link_to "Click here to learn how to run an Arvados Crunch pipeline.", 
+	"http://doc.arvados.org/user/tutorials/tutorial-new-pipeline.html", 
+	style: "font-weight: bold",
+	target: "_blank" %>
+  </p>
+</div>
+<% end %>
+
+<div class="well">
+  <p><strong>Useful links</strong></p>
+  <p><ul>
+      <li><%= link_to "Arvados project page", "http://arvados.org", target: "_blank" %></li>
+      <li><%= link_to "Tutorials and user guide",
+      "http://doc.arvados.org/user/", target: "_blank" %></li>
+    </ul>
+  </p>
+</div>
+
+</div>
 </div>
 
 <% elsif current_user %>
diff --git a/sdk/cli/Gemfile.lock b/sdk/cli/Gemfile.lock
index afbc573..b14404a 100644
--- a/sdk/cli/Gemfile.lock
+++ b/sdk/cli/Gemfile.lock
@@ -1,12 +1,58 @@
 GEM
   remote: https://rubygems.org/
   specs:
+    activesupport (3.2.16)
+      i18n (~> 0.6, >= 0.6.4)
+      multi_json (~> 1.0)
+    addressable (2.3.5)
+    andand (1.3.3)
+    autoparse (0.3.3)
+      addressable (>= 2.3.1)
+      extlib (>= 0.9.15)
+      multi_json (>= 1.0.0)
+    curb (0.8.5)
+    extlib (0.9.16)
+    faraday (0.8.8)
+      multipart-post (~> 1.2.0)
+    google-api-client (0.6.4)
+      addressable (>= 2.3.2)
+      autoparse (>= 0.3.3)
+      extlib (>= 0.9.15)
+      faraday (~> 0.8.4)
+      jwt (>= 0.1.5)
+      launchy (>= 2.1.1)
+      multi_json (>= 1.0.0)
+      signet (~> 0.4.5)
+      uuidtools (>= 2.1.0)
+    i18n (0.6.9)
+    json (1.8.1)
+    jwt (0.1.8)
+      multi_json (>= 1.5)
+    launchy (2.4.2)
+      addressable (~> 2.3)
     minitest (5.0.8)
+    multi_json (1.8.2)
+    multipart-post (1.2.0)
+    oj (2.5.1)
     rake (10.1.0)
+    signet (0.4.5)
+      addressable (>= 2.2.3)
+      faraday (~> 0.8.1)
+      jwt (>= 0.1.5)
+      multi_json (>= 1.0.0)
+    trollop (2.0)
+    uuidtools (2.1.4)
 
 PLATFORMS
   ruby
 
 DEPENDENCIES
+  activesupport (>= 3.2.13)
+  andand (>= 1.3.3)
+  curb (~> 0.8)
+  google-api-client (>= 0.6.3)
+  json (>= 1.7.7)
   minitest
+  oj (>= 2.0.3)
   rake
+  trollop (>= 2.0)

commit 10be0dd7536aeb8909cb21573f9c47bfdc4cfbea
Merge: 8fe9c3a 0b7ddcd
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date:   Mon Dec 30 09:05:05 2013 -0500

    Merge branch 'master' of git.clinicalfuture.com:arvados into 1692-redesign-dashboard


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


hooks/post-receive
-- 




More information about the arvados-commits mailing list