[bitbake-devel] [PATCH 03/10] toasterui: fix time estimation in project page

Alex DAMIAN alexandru.damian at intel.com
Wed Feb 18 19:10:57 UTC 2015


From: Alexandru Damian <alexandru.damian at intel.com>

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]

Signed-off-by: Alexandru Damian <alexandru.damian at intel.com>
---
 lib/toaster/orm/models.py                          |  2 +-
 lib/toaster/toastergui/static/js/projectapp.js     | 24 +++++++++++++++++++---
 .../toastergui/templates/managed_mrb_section.html  |  3 +--
 lib/toaster/toastergui/templates/project.html      |  2 +-
 4 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/lib/toaster/orm/models.py b/lib/toaster/orm/models.py
index f70c006..0f85c8f 100644
--- a/lib/toaster/orm/models.py
+++ b/lib/toaster/orm/models.py
@@ -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
 
 
diff --git a/lib/toaster/toastergui/static/js/projectapp.js b/lib/toaster/toastergui/static/js/projectapp.js
index bee3c56..4d00f40 100644
--- a/lib/toaster/toastergui/static/js/projectapp.js
+++ b/lib/toaster/toastergui/static/js/projectapp.js
@@ -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) {
diff --git a/lib/toaster/toastergui/templates/managed_mrb_section.html b/lib/toaster/toastergui/templates/managed_mrb_section.html
index 6f31ee0..b8d087a 100644
--- a/lib/toaster/toastergui/templates/managed_mrb_section.html
+++ b/lib/toaster/toastergui/templates/managed_mrb_section.html
@@ -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
diff --git a/lib/toaster/toastergui/templates/project.html b/lib/toaster/toastergui/templates/project.html
index 7da2361..a1cce33 100644
--- a/lib/toaster/toastergui/templates/project.html
+++ b/lib/toaster/toastergui/templates/project.html
@@ -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>
 
-- 
1.9.1




More information about the bitbake-devel mailing list