Merge branch 'master' into 3699-arv-copy
[arvados.git] / apps / workbench / app / views / jobs / _show_log.html.erb
index 01d5b18901e1cbba98cb783c5b6caa64bd7d35b3..7324104a55875903c0712e05b522a897050432ad 100644 (file)
@@ -53,35 +53,38 @@ var makeFilter = function() {
 <% if @object.log %>
   <% logcollection = Collection.find @object.log %>
   <% if logcollection %>
-    var log_maxbytes = <%= Rails.configuration.log_viewer_max_bytes %>;
+    log_size = <%= logcollection.files[0][2] %>
+    log_maxbytes = <%= Rails.configuration.log_viewer_max_bytes %>;
     logcollection_url = '<%=j url_for logcollection %>/<%=j logcollection.files[0][1] %>';
     $("#log-viewer-download-url").attr('href', logcollection_url);
-    $("#log-viewer-download-pane").css('display', 'inline');
-    $.ajax(logcollection_url,
-          {
-            headers: {'Range': 'bytes=0-' + log_maxbytes}
-          }).
-       done(function(data, status, jqxhr) {
-           logViewer.filter();
-           addToLogViewer(logViewer, data.split("\n"), taskState);
-           logViewer.filter(makeFilter());
-           var v = jqxhr.getResponseHeader('Content-Range')
-             .match(/bytes \d+-(\d+)\/(.+)/);
+    $("#log-viewer-download-pane").show();
+    if (log_size > log_maxbytes) {
+      range_header = { 'Range': 'bytes=0-' + log_maxbytes };
+    } else {
+      range_header = null;
+    }
+    $.ajax(logcollection_url, { headers: range_header }).
+        done(function(data, status, jqxhr) {
+            logViewer.filter();
+            addToLogViewer(logViewer, data.split("\n"), taskState);
+            logViewer.filter(makeFilter());
+            content_range_hdr = jqxhr.getResponseHeader('Content-Range');
+            var v = content_range_hdr && content_range_hdr.match(/bytes \d+-(\d+)\/(.+)/);
             short_log = v && (v[2] == '*' || parseInt(v[1]) + 1 < v[2]);
-           if (jqxhr.status == 206 && short_log) {
-             $("#log-viewer-overview").html(
-               '<p>Showing only ' + data.length + ' bytes of this log.' +
-               ' Timing information is unavailable since' +
-               ' the full log was not retrieved.</p>'
-             );
+            if (jqxhr.status == 206 && short_log) {
+              $("#log-viewer-overview").html(
+                '<p>Showing only ' + data.length + ' bytes of this log.' +
+                ' Timing information is unavailable since' +
+                ' the full log was not retrieved.</p>'
+              );
             } else {
-             generateJobOverview("#log-viewer-overview", logViewer, taskState);
-           }
-           $("#log-viewer .spinner").detach();
-       }).
-       fail(function(jqxhr, status, error) {
-           $("#log-viewer .spinner").detach();
-       });
+              generateJobOverview("#log-viewer-overview", logViewer, taskState);
+            }
+            $("#log-viewer .spinner").detach();
+        }).
+        fail(function(jqxhr, status, error) {
+            $("#log-viewer .spinner").detach();
+        });
   <% end %>
 <% else %>
   <%# Live log loading not implemented yet. %>