diff --git a/src/laminar.cpp b/src/laminar.cpp index 85a1e5d..4a1d57f 100644 --- a/src/laminar.cpp +++ b/src/laminar.cpp @@ -184,6 +184,7 @@ void Laminar::sendStatus(LaminarClient* client) { j.set("number", run->build); j.set("node", run->node->name); j.set("started", run->startedAt); + j.set("reason", run->reason()); j.EndObject(); } j.EndArray(); @@ -245,6 +246,11 @@ void Laminar::sendStatus(LaminarClient* client) { j.set("number", run->build); j.set("node", run->node->name); j.set("started", run->startedAt); + db->stmt("SELECT completedAt - startedAt FROM builds WHERE name = ? ORDER BY completedAt DESC LIMIT 1") + .bind(run->name) + .fetch([&](int etc){ + j.set("etc", time(0) + etc); + }); j.EndObject(); } j.EndArray(); @@ -585,6 +591,7 @@ void Laminar::assignNewJobs() { .startObject("data") .set("queueIndex", std::distance(it,queuedJobs.begin())) .set("name", run->name) + .set("queued", run->startedAt - run->queuedAt) .set("started", run->startedAt) .set("number", run->build) .set("reason", run->reason()); @@ -644,6 +651,8 @@ void Laminar::runFinished(const Run * r) { .startObject("data") .set("name", r->name) .set("number", r->build) + .set("queued", r->startedAt - r->queuedAt) + .set("completed", completedAt) .set("duration", completedAt - r->startedAt) .set("started", r->startedAt) .set("result", to_string(r->result)) diff --git a/src/resources/index.html b/src/resources/index.html index b761ea0..5f7530e 100644 --- a/src/resources/index.html +++ b/src/resources/index.html @@ -5,6 +5,7 @@ + Laminar diff --git a/src/resources/js/app.js b/src/resources/js/app.js index 94f7c02..f1c8641 100644 --- a/src/resources/js/app.js +++ b/src/resources/js/app.js @@ -181,6 +181,15 @@ angular.module('laminar',['ngRoute','ngSanitize']) $scope.tags = Object.keys(tags); $scope.$apply(); }, + job_completed: function(data) { + for(var i in $scope.jobs) { + if($scope.jobs[i].name === data.name) { + $scope.jobs[i] = data; + $scope.$apply; + break; + } + } + } }); }) .controller('JobController', function($rootScope, $scope, $routeParams, $ws) { @@ -228,16 +237,13 @@ angular.module('laminar',['ngRoute','ngSanitize']) }, job_started: function(data) { $scope.nQueued--; - if(data.name == $routeParams.name) { - $scope.jobsQueued.splice($scope.jobsQueued.length - 1,1); - $scope.jobsRunning.splice(0,0,data); - $scope.$apply(); - } + $scope.jobsRunning.splice(0,0,data); + $scope.$apply(); }, job_completed: function(data) { for(var i = 0; i < $scope.jobsRunning.length; ++i) { var job = $scope.jobsRunning[i]; - if(job.name == data.name && job.number == data.number) { + if(job.number === data.number) { $scope.jobsRunning.splice(i,1); $scope.jobsRecent.splice(0,0,data); $scope.$apply(); @@ -258,15 +264,17 @@ angular.module('laminar',['ngRoute','ngSanitize']) $scope.name = $routeParams.name; $scope.num = parseInt($routeParams.num); + $ws.statusListener({ status: function(data) { $rootScope.title = data.title; $rootScope.updateProgress(data); $scope.job = data; + $scope.latestNum = data.latestNum; $scope.$apply(); }, job_started: function() { - $scope.job.latestNum++; + $scope.latestNum++; $scope.$apply(); }, job_completed: function(data) { diff --git a/src/resources/tpl/browse.html b/src/resources/tpl/browse.html index 7041ab5..dc75ec9 100644 --- a/src/resources/tpl/browse.html +++ b/src/resources/tpl/browse.html @@ -12,10 +12,10 @@ - +
{{job.name}} #{{job.number}} #{{job.number}} {{formatDate(job.started)}}
- \ No newline at end of file + diff --git a/src/resources/tpl/run.html b/src/resources/tpl/run.html index 21df207..76854ef 100644 --- a/src/resources/tpl/run.html +++ b/src/resources/tpl/run.html @@ -5,7 +5,7 @@
@@ -13,8 +13,8 @@
Reason
{{job.reason}}
Queued for
{{job.queued}}s
Started
{{formatDate(job.started)}}
-
Completed
{{formatDate(job.completed)}}
-
Duration
{{job.duration}}s
+
Completed
{{formatDate(job.completed)}}
+
Duration
{{job.duration}}s