diff --git a/build/models/br.py b/build/models/br.py index d72fca4..18cd0e0 100644 --- a/build/models/br.py +++ b/build/models/br.py @@ -113,6 +113,8 @@ class BuildRelease(models.Model): @property def done(self): + if self.built_projects is None: + return False built_len = len(self.built_projects) return built_len == self.release_jobs_len + 1 + len(self.projects) diff --git a/panel/static/panel/js/panel.js b/panel/static/panel/js/panel.js index a55b512..0d55e6e 100644 --- a/panel/static/panel/js/panel.js +++ b/panel/static/panel/js/panel.js @@ -65,7 +65,7 @@ function update_stats_progress() { var total = $.release.projects.size; if ( $.release.uuid ) { - total += $.release.stats.queued.size; + total = parseInt( $( "#stats-total" ).text(), 10 ); } for ( var label of labels ) { diff --git a/panel/static/panel/js/panel_release.js b/panel/static/panel/js/panel_release.js index c7dcca7..d3c5b5f 100644 --- a/panel/static/panel/js/panel_release.js +++ b/panel/static/panel/js/panel_release.js @@ -174,6 +174,18 @@ function is_project_done( project ) { } +function is_done() { + var success = parseInt( $( "#stats-success" ).text(), 10 ); + var failed = parseInt( $( "#stats-danger" ).text(), 10 ); + var queued = parseInt( $( "#stats-queued" ).text(), 10 ); + var building = parseInt( $( "#stats-created" ).text(), 10 ); + + if ( failed === 0 && queued === 0 && building === 0 && success > 0 ) { + return true; + } + return false; +} + function is_stuck() { var success = parseInt( $( "#stats-success" ).text(), 10 ); var failed = parseInt( $( "#stats-danger" ).text(), 10 ); @@ -199,7 +211,12 @@ function update_release_info( release ) { get_uuids_for_project( release, project ); } } - if ( is_stuck() ) { + if ( is_done() ) { + clearInterval( $.release.timer ); + clearInterval( $.release.update_info_timer ); + $( "#update-info-all" ).addClass( "hidden" ); + $( "#resume" ).prop( "disabled", true ); + } else if ( is_stuck() ) { $( "#resume" ).prop( "disabled", false ); } } diff --git a/panel/templates/panel/release_stats.html b/panel/templates/panel/release_stats.html index 7abe523..09a5126 100644 --- a/panel/templates/panel/release_stats.html +++ b/panel/templates/panel/release_stats.html @@ -1,6 +1,8 @@
Statistics -
next info refresh in 0 seconds
+
+ next info refresh in 0 seconds +
diff --git a/panel/templates/panel/release_uuid.html b/panel/templates/panel/release_uuid.html index d60c42e..b91e064 100644 --- a/panel/templates/panel/release_uuid.html +++ b/panel/templates/panel/release_uuid.html @@ -38,8 +38,10 @@ $( document ).ready(function() { $.release.uuid = '{{ build_release.uuid }}'; $.release.release_jobs_size = {{ release_jobs_size }}; $.release.max_uuids = 1; - $.release.interval = 30000; - update_release_info('{{ build_release.release }}'); +{% if build_release.done %} + $( "#update-info-all" ).addClass( "hidden" ); +{% else %} + $.release.interval = 15000; $( "#update-info" ).text($.release.interval/1000); $.release.timer = setInterval(function(){ update_release_info('{{ build_release.release }}'); @@ -49,6 +51,7 @@ $( document ).ready(function() { var step = parseInt($( "#update-info" ).text()); $( "#update-info" ).text(step - 1); }, 1000); +{% endif %} set_stats_total('{{ total }}'); {% for projectname in queued_projects %} set_project_stats('{{ projectname }}', 'queued'); @@ -72,6 +75,8 @@ create_new_release_job(values); {% endif %} {% endfor %} {% endfor %} +update_stats(); +update_release_info('{{ build_release.release }}'); }); {% endblock %}