-<% if @tutorial_links.any? %>
-<% content_for :tutorials do %>
-<h4>Tutorials</h4>
-<% @tutorial_links.each do |tut| %>
-<div class="well clearfix">
- <div>
- <strong><%= tut.properties[:page_title] %></strong>
- <% if @tutorial_complete[tut.properties[:page_title]] %>
- <span class="badge badge-success pull-right">✔</span>
- <% else %>
- <span class="badge pull-right">✍</span>
- <% end %>
- </div>
- <%= render_content_from_database tut.properties[:page_subtitle] %>
- <br />
- <%= link_to raw('Tutorial: ' + tut.properties[:page_title] + ' ➜'), link_path(tut.uuid), class: "pull-right btn btn-primary" %>
-</div>
-<% end %>
-<% end %>
+<% content_for :head do %>
+ <style>
+ .dash-list {
+ padding: 9px 0;
+ }
+ .dash-list>ul>li>a>span {
+ min-width: 1.5em;
+ margin-left: auto;
+ margin-right: auto;
+ }
+ .job-table {
+ white-space: nowrap;
+ table-layout: fixed;
+ }
+ .job-table td {
+ overflow: hidden;
+ overflow-x: hidden;
+ text-overflow: ellipsis;
+ }
+ .centerme {
+ margin-left: auto;
+ margin-right: auto;
+ text-align: center;
+ }
+ .bigfatnumber {
+ font-size: 4em;
+ font-weight: bold;
+ }
+ .dax {
+ max-width: 10%;
+ margin-right: 1em;
+ float: left
+ }
+ .daxalert {
+ overflow: hidden;
+ }
+ </style>
<% end %>
-<% content_for :references do %>
-<h4>References</h4>
-<div class="well clearfix">
- <div>
- <strong>API Reference</strong>
- </div>
- API calls for running jobs, building pipelines, and developing apps.
- <br />
- <%= link_to raw('API Reference ➜'), 'http://doc.arvados.org/api/', class: "pull-right btn" %>
-</div>
-<div class="well clearfix">
- <div>
- <strong>User Guide</strong>
+<% 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>
+ <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>
+
+ <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>
</div>
- Getting acquainted with the Arvados platform.
- <br />
- <%= link_to raw('User Guide ➜'), 'http://doc.arvados.org/user/', class: "pull-right btn" %>
-</div>
-<div class="well clearfix">
- <div>
- <strong>arvados.org</strong>
+
+<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>
- Project home page: developer docs, source code, background.
- <br />
- <%= link_to raw('arvados.org ➜'), 'https://arvados.org/', class: "pull-right btn" %>
-</div>
<% end %>
-<% if current_user.andand.is_active %>
-<% content_for :manage_access do %>
-<h4>Setup</h4>
-<div class="well clearfix">
- <div>
- <strong>SSH keys</strong>
- <span class="badge <%= 'badge-success' if @my_ssh_keys.any? %> pull-right"><%= @my_ssh_keys.count %></span>
- </div>
- You’ll use public key authentication when logging in to a
- VM or use a hosted git repository.
- <br />
- <%= link_to raw('Add/edit keys ➜'), authorized_keys_path, class: "pull-right btn #{'btn-primary' if @my_ssh_keys.empty?}" %>
-</div>
-<div class="well clearfix">
- <div>
- <strong>Virtual machines</strong>
- <span class="badge <%= 'badge-success' if @my_vm_perms.any? %> pull-right"><%= @my_vm_perms.collect(&:head_uuid).uniq.count %></span>
- </div>
- Arvados includes virtual machines with SDKs installed and ready to use.
- <br />
- <% if @my_vm_perms.any? %>
- <%= link_to raw('Show VMs ➜'), virtual_machines_path, class: "pull-right btn" %>
- <% elsif @my_ssh_keys.any? %>
- <%= link_to raw('Request a VM ➜'), virtual_machines_path, class: "pull-right btn btn-primary" %>
- <% else %>
- <%= link_to raw('Request a VM ➜'), virtual_machines_path, { :class => "pull-right btn disabled", :"data-toggle" => "tooltip", :"data-placement" => "bottom", :title => "Add an SSH public key first!" } %>
- <% 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>
-<div class="well clearfix">
- <div>
- <strong>Git repositories</strong>
- <span class="badge <%= 'badge-success' if @my_repo_perms.any? %> pull-right"><%= @my_repo_perms.collect(&:head_uuid).uniq.count %></span>
- </div>
- In order to run jobs using your own code, you need to push your code to a git repository. We provide hosted git repositories to make this easy.
- <br />
- <% if @my_repo_perms.any? %>
- <%= link_to raw('Show repositories ➜'), repositories_path, class: "pull-right btn" %>
- <% elsif @my_ssh_keys.any? %>
- <%= link_to raw('Request a repository ➜'), repositories_path, class: "pull-right btn btn-primary" %>
- <% else %>
- <%= link_to raw('Request a repository ➜'), repositories_path, { :class => "pull-right btn disabled", :"data-toggle" => "tooltip", :"data-placement" => "bottom", :title => "Add an SSH public key first!" } %>
- <% end %>
+
+<% 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="row-fluid">
- <div class="col span4">
- <% if content_for? :manage_access %>
- <%= yield :manage_access %>
- <% else %>
- <%= render partial: 'request_activation' %>
- <% end %>
- </div>
+<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 content_for? :tutorials %>
- <div class="col span4">
- <%= yield :tutorials %>
- </div>
- <% end %>
+</div>
+</div>
- <div class="col span4">
- <%= yield :references %>
+<% 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 ✉'),
+ Rails.configuration.activation_contact_link, class: "pull-right btn btn-primary" %></p>
+ </div>
+ </div>
</div>
-</div>
+<% end %>