From dab16fb26b78643d0c3a97009ad6ca26a8051222 Mon Sep 17 00:00:00 2001
From: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date: Fri, 25 Mar 2016 13:49:06 +0100
Subject: [PATCH] Lazy load the metrics tab

---
 src/lib/Hydra/Controller/Job.pm |  6 ++++++
 src/root/job-metrics-tab.tt     | 27 +++++++++++++++++++++++++++
 src/root/job.tt                 | 26 +-------------------------
 3 files changed, 34 insertions(+), 25 deletions(-)
 create mode 100644 src/root/job-metrics-tab.tt

diff --git a/src/lib/Hydra/Controller/Job.pm b/src/lib/Hydra/Controller/Job.pm
index 7f5bbb56..ccbae4b6 100644
--- a/src/lib/Hydra/Controller/Job.pm
+++ b/src/lib/Hydra/Controller/Job.pm
@@ -77,7 +77,13 @@ sub overview : Chained('job') PathPart('') Args(0) {
         , jobset => $c->stash->{jobset}->name
         , job => $c->stash->{job}->name
         })->count == 1 if $c->user_exists;
+}
 
+
+sub metrics_tab : Chained('job') PathPart('metrics-tab') Args(0) {
+    my ($self, $c) = @_;
+    my $job = $c->stash->{job};
+    $c->stash->{template} = 'job-metrics-tab.tt';
     $c->stash->{metrics} = [ $job->buildmetrics->search(
         { }, { select => ["name"], distinct => 1, order_by => "name",  }) ];
 }
diff --git a/src/root/job-metrics-tab.tt b/src/root/job-metrics-tab.tt
new file mode 100644
index 00000000..2aaa652c
--- /dev/null
+++ b/src/root/job-metrics-tab.tt
@@ -0,0 +1,27 @@
+[% PROCESS common.tt %]
+
+<div id="tabs-charts" class="tab-pane">
+
+  <h3>Build time (in seconds)</h3>
+
+  [% INCLUDE createChart id="build-times" yaxis="sec" dataUrl=c.uri_for('/job' project.name jobset.name job.name 'build-times') %]
+
+  <h3>Closure size (in MiB)</h3>
+
+  [% INCLUDE createChart id="closure-size" yaxis="mib" dataUrl=c.uri_for('/job' project.name jobset.name job.name 'closure-sizes') %]
+
+  <h3>Output size (in MiB)</h3>
+
+  [% INCLUDE createChart id="output-size" yaxis="mib" dataUrl=c.uri_for('/job' project.name jobset.name job.name 'output-sizes') %]
+
+  [% FOREACH metric IN metrics %]
+
+    <h3>Metric: <tt>[%HTML.escape(metric.name)%]</tt></h3>
+
+    [% id = "metric-" _ metric.name;
+       id = id.replace('\.', '_');
+       INCLUDE createChart dataUrl=c.uri_for('/job' project.name jobset.name job.name 'metric' metric.name); %]
+
+  [% END %]
+
+</div>
diff --git a/src/root/job.tt b/src/root/job.tt
index 0a621e44..1bf7c499 100644
--- a/src/root/job.tt
+++ b/src/root/job.tt
@@ -84,31 +84,7 @@ removed or had an evaluation error.</div>
 
   [% END %]
 
-  <div id="tabs-charts" class="tab-pane">
-
-    <h3>Build time (in seconds)</h3>
-
-    [% INCLUDE createChart id="build-times" yaxis="sec" dataUrl=c.uri_for('/job' project.name jobset.name job.name 'build-times') %]
-
-    <h3>Closure size (in MiB)</h3>
-
-    [% INCLUDE createChart id="closure-size" yaxis="mib" dataUrl=c.uri_for('/job' project.name jobset.name job.name 'closure-sizes') %]
-
-    <h3>Output size (in MiB)</h3>
-
-    [% INCLUDE createChart id="output-size" yaxis="mib" dataUrl=c.uri_for('/job' project.name jobset.name job.name 'output-sizes') %]
-
-    [% FOREACH metric IN metrics %]
-
-      <h3>Metric: <tt>[%HTML.escape(metric.name)%]</tt></h3>
-
-      [% id = "metric-" _ metric.name;
-         id = id.replace('\.', '_');
-         INCLUDE createChart dataUrl=c.uri_for('/job' project.name jobset.name job.name 'metric' metric.name); %]
-
-    [% END %]
-
-  </div>
+  [% INCLUDE makeLazyTab tabName="tabs-charts" uri=c.uri_for('/job' project.name jobset.name job.name 'metrics-tab') %]
 
   <div id="tabs-links" class="tab-pane">
     <ul>