[ARVADOS] updated: 9c72375f74e8a251e9f09c8a16dbed9174417292

git at public.curoverse.com git at public.curoverse.com
Wed Jun 18 17:08:25 EDT 2014


Summary of changes:
 .../workbench/app/assets/javascripts/log_viewer.js | 15 ++--
 apps/workbench/app/views/jobs/_show_log.html.erb   | 93 +++++++++++++---------
 2 files changed, 62 insertions(+), 46 deletions(-)

       via  9c72375f74e8a251e9f09c8a16dbed9174417292 (commit)
       via  6743d58bac1eb91040fc422fcd07f3351360d506 (commit)
      from  715a760e661e589d454dadca9040729e651edc8a (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 9c72375f74e8a251e9f09c8a16dbed9174417292
Merge: 6743d58 715a760
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date:   Wed Jun 18 17:08:11 2014 -0400

    Merge branch '2883-job-log-viewer' of git.curoverse.com:arvados into origin-2883-job-log-viewer
    
    Conflicts:
    	apps/workbench/app/views/jobs/_show_log.html.erb

diff --cc apps/workbench/app/views/jobs/_show_log.html.erb
index 1d5da8a,8508287..831d717
--- a/apps/workbench/app/views/jobs/_show_log.html.erb
+++ b/apps/workbench/app/views/jobs/_show_log.html.erb
@@@ -103,17 -99,17 +103,29 @@@ $("#set-show-failed-only").on("click", 
  <div id="log-viewer">
  
    <h3>Summary</h3>
--  <div id="log-viewer-overview"></div>
- 
-   <% if @object.tasks_summary[:failed] > 0 %>
-     <button id="set-show-failed-only" class="btn btn-danger" style="margin-top: 1em">
-       Show failed task output only
-     </button>
-   <% end %>
++  <p id="log-viewer-overview">
++    <% if !@object.log %>
++      <% if @object.finished_at %>
++        This job did not produce an output log.
++      <% else %>
++        This job is still running.  The job log will be available when the job is complete.
++      <% end %>
++    <% else %>
++      <% if !logcollection %>
++        The collection containing the job log was not found.
++      <% end %>
++    <% end %>
++  </p>
  
    <div class="h3">Log
  
      <span class="pull-right">
 -      <% if @object.tasks_summary[:failed] > 0 %>
++      <% if @object.andand.tasks_summary.andand[:failed] and @object.tasks_summary[:failed] > 0 %>
+         <button id="set-show-failed-only" class="btn btn-danger">
+           Show failed task output only
+         </button>
+       <% end %>
+ 
        <button id="filter-all" class="btn">
          Select all
        </button>
@@@ -166,50 -162,42 +178,41 @@@
  
    </div>
  
-   <div class="log-viewer-paging-div">
-     <a href="#" class="log-viewer-page-up"><span class='glyphicon glyphicon-arrow-up'></span></a>
-     <span class="log-viewer-paging"></span>
-     <a href="#" class="log-viewer-page-down"><span class='glyphicon glyphicon-arrow-down'></span></a>
+   <div class="smart-scroll" data-smart-scroll-padding-bottom="50" style="margin-bottom: 0px">
 -  <table class="log-viewer-table">
 -    <thead>
 -      <tr>
 -        <th class="id" data-sort="id"></th>
 -        <th class="timestamp" data-sort="timestamp">Timestamp</th>
 -        <th class="node"  data-sort="node">Node</th>
 -        <th class="slot"  data-sort="slot">Slot</th>
 -        <th class="type" data-sort="type">Log type</th>
 -        <th class="taskid"  data-sort="taskid">Task</th>
 -        <th class="message" data-sort="message">Message</th>
 -      </tr>
 -    </thead>
 -    <tbody class="list">
 -      <tr>
 -        <td class="id"></td>
 -        <td class="timestamp"></td>
 -        <td class="node"></td>
 -        <td class="slot"></td>
 -        <td class="type"></td>
 -        <td class="taskid"></td>
 -        <td class="message"></td>
 -      </tr>
 -    </tbody>
 -  </table>
 -</div>
++    <table class="log-viewer-table">
++      <thead>
++        <tr>
++          <th class="id" data-sort="id"></th>
++          <th class="timestamp" data-sort="timestamp">Timestamp</th>
++          <th class="node"  data-sort="node">Node</th>
++          <th class="slot"  data-sort="slot">Slot</th>
++          <th class="type" data-sort="type">Log type</th>
++          <th class="taskid"  data-sort="taskid">Task</th>
++          <th class="message" data-sort="message">Message</th>
++        </tr>
++      </thead>
++      <tbody class="list">
++        <tr>
++          <td class="id"></td>
++          <td class="timestamp"></td>
++          <td class="node"></td>
++          <td class="slot"></td>
++          <td class="type"></td>
++          <td class="taskid"></td>
++          <td class="message"></td>
++        </tr>
++      </tbody>
++    </table>
++
++    <% if @object.log and logcollection %>
++      <%= image_tag 'ajax-loader.gif', id: "logloadspinner" %>
++    <% end %>
++
 +  </div>
 +
-   <table class="log-viewer-table">
-     <thead>
-       <tr>
-         <th class="id" data-sort="id"></th>
-         <th class="timestamp" data-sort="timestamp">Timestamp</th>
-         <th class="node"  data-sort="node">Node</th>
-         <th class="slot"  data-sort="slot">Slot</th>
-         <th class="type" data-sort="type">Log type</th>
-         <th class="taskid"  data-sort="taskid">Task</th>
-         <th class="message" data-sort="message">Message</th>
-       </tr>
-     </thead>
-     <tbody class="list">
-       <tr>
-         <td class="id"></td>
-         <td class="timestamp"></td>
-         <td class="node"></td>
-         <td class="slot"></td>
-         <td class="type"></td>
-         <td class="taskid"></td>
-         <td class="message"></td>
-       </tr>
-     </tbody>
-   </table>
- 
-   <div style="font-size: 18px">
+   <div class="log-viewer-paging-div" style="margin-bottom: -15px">
      <a href="#" class="log-viewer-page-up"><span class='glyphicon glyphicon-arrow-up'></span></a>
      <span class="log-viewer-paging"></span>
      <a href="#" class="log-viewer-page-down"><span class='glyphicon glyphicon-arrow-down'></span></a>
    </div>
 -
  </div>
--
--<% if !@object.log %>
-     <p>This job is still running.  The job log will be available when the job is complete.</p>
- <% else %>
-   <% if logcollection %>
-     <%= image_tag 'ajax-loader.gif', id: "logloadspinner" %>
-   <% else %>
-     <p>The collection containing the job log was not found.</p>
-   <% end %>
 -  This job is still running.  The job log will be available when the job is complete.
--<% end %>
 -
 -<%= image_tag 'ajax-loader.gif', id: "logloadspinner" %>

commit 6743d58bac1eb91040fc422fcd07f3351360d506
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date:   Wed Jun 18 16:56:43 2014 -0400

    Add error handling when log collection is not found. refs #3027.

diff --git a/apps/workbench/app/assets/javascripts/log_viewer.js b/apps/workbench/app/assets/javascripts/log_viewer.js
index 405c8ef..aa6ba79 100644
--- a/apps/workbench/app/assets/javascripts/log_viewer.js
+++ b/apps/workbench/app/assets/javascripts/log_viewer.js
@@ -181,13 +181,12 @@ function dumbPluralize(n, s, p) {
 function generateJobOverview(id, logViewer, taskState) {
     var html = "";
 
-    var first = logViewer.items[1];
-    var last = logViewer.items[logViewer.items.length-1];
-
-    {
-        html += "<div>";
+    if (logViewer.items.length > 2) {
+        html += "<p>";
         html += "Started at " + first.values().timestamp;
 
+        var first = logViewer.items[1];
+        var last = logViewer.items[logViewer.items.length-1];
         var duration = (last.values().ts.getTime() - first.values().ts.getTime()) / 1000;
 
         var hours = 0;
@@ -224,7 +223,9 @@ function generateJobOverview(id, logViewer, taskState) {
         html += " (" + dumbPluralize(taskState.failure_count, " failure") + ")";
 
         html += ".  Finished at " + last.values().timestamp + ".";
-        html += "</div>";
+        html += "</p>";
+    } else {
+       html = "<p>Job log is empty or failed to load.</p>";
     }
 
     $(id).html(html);
@@ -277,4 +278,4 @@ function nextPage(logViewer, page, id) {
 
 function prevPage(logViewer, page, id) {
     gotoPage(logViewer.page_offset-1, logViewer, page, id);
-}
\ No newline at end of file
+}
diff --git a/apps/workbench/app/views/jobs/_show_log.html.erb b/apps/workbench/app/views/jobs/_show_log.html.erb
index 2c060cd..1d5da8a 100644
--- a/apps/workbench/app/views/jobs/_show_log.html.erb
+++ b/apps/workbench/app/views/jobs/_show_log.html.erb
@@ -40,16 +40,20 @@ var makeFilter = function() {
 }
 
 <% if @object.log %>
-<% logcollection = Collection.find @object.log %>
-
-$.ajax('<%=j url_for logcollection %>/<%=j logcollection.files[0][1] %>').
-  done(function(data, status, jqxhr) {
+  <% logcollection = Collection.find @object.log %>
+  <% if logcollection %>
+    $.ajax('<%=j url_for logcollection %>/<%=j logcollection.files[0][1] %>').
+    done(function(data, status, jqxhr) {
     logViewer.filter();
     addToLogViewer(logViewer, data.split("\n"), taskState);
     logViewer.filter(makeFilter());
     generateJobOverview("#log-viewer-overview", logViewer, taskState);
     $("#logloadspinner").detach();
-  });
+    }).
+    fail(function(jqxhr, status, error) {
+    $("#logloadspinner").detach();
+    });
+  <% end %>
 <% else %>
   <%# Live log loading not implemented yet. %>
 <% end %>
@@ -193,18 +197,19 @@ $("#set-show-failed-only").on("click", function() {
     </tbody>
   </table>
 
-
   <div style="font-size: 18px">
     <a href="#" class="log-viewer-page-up"><span class='glyphicon glyphicon-arrow-up'></span></a>
     <span class="log-viewer-paging"></span>
     <a href="#" class="log-viewer-page-down"><span class='glyphicon glyphicon-arrow-down'></span></a>
   </div>
-
-
 </div>
 
 <% if !@object.log %>
-  This job is still running.  The job log will be available when the job is complete.
+    <p>This job is still running.  The job log will be available when the job is complete.</p>
+<% else %>
+  <% if logcollection %>
+    <%= image_tag 'ajax-loader.gif', id: "logloadspinner" %>
+  <% else %>
+    <p>The collection containing the job log was not found.</p>
+  <% end %>
 <% end %>
-
-<%= image_tag 'ajax-loader.gif', id: "logloadspinner" %>

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


hooks/post-receive
-- 




More information about the arvados-commits mailing list