Merge branch 'master' into 1971-show-image-thumbnails
[arvados.git] / apps / workbench / app / views / users / _tables.html.erb
index ef7d4a860ce9c01c76ce174aff114cdac764c623..9e1c220fd66d928a4b2630a23d32d5f7b75a93ad 100644 (file)
@@ -7,13 +7,14 @@
       <p>(None)</p>
     <% else %>
       <table class="table table-bordered table-condensed table-fixedlayout">
-       <colgroup>
-          <col width="28%" />
-          <col width="38%" />
-          <col width="7%" />
-          <col width="15%" />
-          <col width="12%" />
-       </colgroup>
+        <colgroup>
+          <col width="20%" />
+          <col width="20%" />
+          <col width="20%" />
+          <col width="13%" />
+          <col width="13%" />
+          <col width="20%" />
+        </colgroup>
 
         <tr>
          <th>Script</th>
          <th>Log</th>
          <th>Age</th>
          <th>Status</th>
+         <th>Progress</th>
        </tr>
 
         <% @my_jobs[0..6].each do |j| %>
           <tr>
             <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 %>
+               <% if j.success and j.output %>
 
                  <a href="<%= collection_path(j.output) %>">
                    <% Collection.limit(1).where(uuid: j.output).each do |c| %>
 <td>
   <small>
     <% if j.log %>
-      <% Collection.limit(1).where(uuid: j.log).each do |c| %>
+      <% fixup = /([a-f0-9]{32}\+\d+)(\+?.*)/.match(j.log)%>
+      <% Collection.limit(1).where(uuid: fixup[1]).each do |c| %>
         <% c.files.each do |file| %>
           <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 %>
+      <% buf = j.log_buffer.strip.split("\n").last %>
+      <span title="<%= buf %>"><%= buf %></span>
     <% end %>
   </small>
 </td>
 </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">
-      <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 %>
+  <%= render partial: 'job_status_label', locals: {:j => j} %>
+</td>
+<td>
+  <div class="inline-progress-container">
+  <%= render partial: 'job_progress', locals: {:j => j} %>
+  </div>
 </td>
 
 </tr>
         <col width="30%" />
         <col width="30%" />
         <col width="13%" />
-        <col width="27%" />
+        <col width="13%" />
+        <col width="20%" />
       </colgroup>
 
       <tr>
        <th>Template</th>
        <th>Age</th>
        <th>Status</th>
+       <th>Progress</th>
       </tr>
 
       <% @my_pipelines[0..6].each do |p| %>
           </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">
-                <div class="bar bar-success" style="width: <%= summary[:percent_done] %>%;">
-                </div>
-                <% if p.success == false %>
-                <div class="bar bar-danger" style="width: <%= 100.0 - summary[:percent_done] %>%;">
-                </div>
-                <% else %>
-                <div class="bar" style="width: <%= summary[:percent_running] %>%;">
-                </div>
-                <div class="bar bar-info" style="width: <%= summary[:percent_queued] %>%;">
-                </div>
-                <div class="bar bar-danger" style="width: <%= summary[:percent_failed] %>%;">
-                </div>
-                <% end %>
-              </div>
+          <td>
+            <div class="inline-progress-container">
+              <%= render partial: 'pipeline_progress', locals: {:p => p} %>
             </div>
           </td>
-
         </tr>
       <% end %>
     </table>
   <strong>Recent collections</strong>
   <%= link_to '(refresh)', request.fullpath, class: 'refresh', remote: true, method: 'get' %>
   <%= link_to raw("Show all collections &rarr;"), collections_path, class: 'pull-right' %>
-  <div class="pull-right" style="padding-right: 1em">
+  <div class="pull-right" style="padding-right: 1em; width: 30%;">
     <%= form_tag collections_path,
           method: 'get',
           class: 'form-search small-form-margin' do %>
-    <div class="input-append">
-      <%= text_field_tag :search, params[:search], class: 'search-query search-mini' %>
-      <%= submit_tag "Search", name: nil, class: 'btn btn-mini btn-info' %>
-    </div>  
+    <div class="input-group input-group-sm">
+      <%= text_field_tag :search, params[:search], class: 'form-control', placeholder: 'Search' %>
+      <span class="input-group-btn">
+        <%= button_tag(class: 'btn btn-info') do %>
+        <span class="glyphicon glyphicon-search"></span>
+        <% end %>
+      </span>
+    </div>
     <% end %>
   </div>
   <% if not current_user.andand.is_active or @my_collections.empty? %>
 </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 &#x2709;'),
+             Rails.configuration.activation_contact_link, class: "pull-right btn btn-primary" %></p>
+      </div>
+    </div>
+  </div>
 <% end %>
 
 <% content_for :js do %>