bitbake: toasterui: fix time estimation in project page

This patch fixes the time estimation to build completion
in project page. Additionally it fixes the Most Recent Builds
section used in various pages in managed mode, and proper
time to build estimation in all pages.

[YOCTO #7004]

(Bitbake rev: 5fecfda0e47c2ecba9b7c903c6d258eefa431aa0)

Signed-off-by: Alexandru Damian <alexandru.damian@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Alexandru Damian 2015-02-17 15:02:26 +00:00 committed by Richard Purdie
parent 6dbd214fdf
commit 9c358bd1d7
4 changed files with 24 additions and 7 deletions

View File

@ -194,7 +194,7 @@ class Build(models.Model):
eta = timezone.now()
completeper = self.completeper()
if self.completeper() > 0:
eta = timezone.now() + ((timezone.now() - self.started_on)*(100-completeper)/completeper)
eta += ((eta - self.started_on)*100)/completeper
return eta

View File

@ -136,6 +136,16 @@ projectApp.filter('timediff', function() {
}
});
// add "time to future" eta that computes time from now to a point in the future
projectApp.filter('toeta', function() {
return function(input) {
var crtmiliseconds = new Date().getTime();
diff = (parseInt(input) - crtmiliseconds ) / 1000;
console.log("Debug: future time ", input, "crt time", crtmiliseconds, ":", diff);
return diff < 0 ? 300 : diff;
}
});
/**
* main controller for the project page
*/
@ -259,7 +269,14 @@ projectApp.controller('prjCtrl', function($scope, $modal, $http, $interval, $loc
var i = 0;
for (i = 0 ; i < $scope.builds.length; i ++) {
if ($scope.builds[i].id > elem.id) continue;
if ($scope.builds[i].id == elem.id) { found=true; break;}
if ($scope.builds[i].id == elem.id) {
found=true;
// do deep data copy
for (var attr in elem) {
$scope.builds[i][attr] = elem[attr];
}
break;
}
if ($scope.builds[i].id < elem.id) break;
}
if (!found) {
@ -272,8 +289,8 @@ projectApp.controller('prjCtrl', function($scope, $modal, $http, $interval, $loc
var found = false;
var i = 0;
for (i = 0; i < $scope.builds.length; i ++) {
if ($scope.builds[i].id > elem.id) continue;
if ($scope.builds[i].id == elem.id) { found=true; break;}
if ($scope.builds[i].id > elem.id) continue;
if ($scope.builds[i].id == elem.id) { found=true; break; }
if ($scope.builds[i].id < elem.id) break;
}
if (!found) {
@ -281,6 +298,7 @@ projectApp.controller('prjCtrl', function($scope, $modal, $http, $interval, $loc
}
});
$scope.fetchLayersForTargets();
}
if (_data.targets !== undefined) {

View File

@ -2,8 +2,7 @@
{% load projecttags %}
{% load humanize %}
{%if len.mru > 0%}
{%if mru|length > 0%}
<div class="page-header top-air">
<h1>
Latest builds

View File

@ -196,7 +196,7 @@ vim: expandtab tabstop=2
<div style="width: {[b.build[0].completeper]}%;" class="bar"></div>
</div>
</div>
<div class="text-right lead">ETA: {[b.build[0].eta|date:"HH:mm:ss"]}</div>
<div class="text-right lead">ETA in {[b.build[0].eta|toeta|timediff]}</div>
</case>
</case>