From a0464ec4cc0a2c3a3f93d05775da6d94753ba220 Mon Sep 17 00:00:00 2001 From: Pierre Tardy Date: Wed, 27 Aug 2014 18:40:01 +0200 Subject: [PATCH 1/4] add back the build part, that was in .gitignore Signed-off-by: Pierre Tardy --- www/.gitignore | 2 +- .../builders/build/build.controller.coffee | 24 +++++++++++++++++++ .../src/app/builders/build/build.route.coffee | 15 ++++++++++++ .../src/app/builders/build/build.tpl.jade | 24 +++++++++++++++++++ 4 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 www/base/src/app/builders/build/build.controller.coffee create mode 100644 www/base/src/app/builders/build/build.route.coffee create mode 100644 www/base/src/app/builders/build/build.tpl.jade diff --git a/www/.gitignore b/www/.gitignore index 1f88e3c01e3..1666fdde9f9 100644 --- a/www/.gitignore +++ b/www/.gitignore @@ -1,6 +1,6 @@ MANIFEST.in build -!src/app/builders/build +!base/src/app/builders/build dist/ static/ coverage/ diff --git a/www/base/src/app/builders/build/build.controller.coffee b/www/base/src/app/builders/build/build.controller.coffee new file mode 100644 index 00000000000..56204190f8e --- /dev/null +++ b/www/base/src/app/builders/build/build.controller.coffee @@ -0,0 +1,24 @@ +class Build extends Controller + constructor: ($rootScope, $scope, $location, buildbotService, $stateParams, recentStorage) -> + + buildbotService.bindHierarchy($scope, $stateParams, ['builders', 'builds']) + .then ([builder, build]) -> + $rootScope.$broadcast "breadcrumb", [ + caption: "Builders" + sref: "builders" + , + caption: builder.name + sref: "builder({builder:#{builder.id}})" + , + caption: build.number + sref: "build({build:#{build.number}})" + ] + buildbotService.one("buildslaves", build.buildslaveid).bind($scope) + buildbotService.one("buildrequests", build.buildrequestid) + .bind($scope).then (buildrequest) -> + buildset = buildbotService.one("buildsets", buildrequest.buildsetid) + buildset.bind($scope) + buildset.one("properties").bind($scope, dest_key:'properties') + recentStorage.addBuild + link: "#/builders/#{$scope.builder.builderid}/build/#{$scope.build.number}" + caption: "#{$scope.builder.name} / #{$scope.build.number}" diff --git a/www/base/src/app/builders/build/build.route.coffee b/www/base/src/app/builders/build/build.route.coffee new file mode 100644 index 00000000000..b37dcf58310 --- /dev/null +++ b/www/base/src/app/builders/build/build.route.coffee @@ -0,0 +1,15 @@ +class State extends Config + constructor: ($stateProvider) -> + + # Name of the state + name = 'build' + + # Register new state + state = + controller: "#{name}Controller" + templateUrl: "views/#{name}.html" + name: name + url: '/builders/:builder/build/:build' + data: {} + + $stateProvider.state(state) diff --git a/www/base/src/app/builders/build/build.tpl.jade b/www/base/src/app/builders/build/build.tpl.jade new file mode 100644 index 00000000000..8916585d342 --- /dev/null +++ b/www/base/src/app/builders/build/build.tpl.jade @@ -0,0 +1,24 @@ +.container + .row + ul.breadcrumb + li.pull-right + button.btn.btn-default(ng-show="build.complete") Rebuild + li.pull-right + button.btn.btn-default(ng-show="build.complete") Promote + .row + .col-sm-5 + buildsummary(ng-if="build", buildid="build.buildid") + .col-sm-7 + tabset + tab(heading="properties") + rawdata(data="properties") + tab(heading="{{buildslave.name}}") + rawdata(data="buildslave") + tab(heading="builder") + rawdata(data="builder") + tab(heading="build") + rawdata(data="build") + tab(heading="buildrequest") + rawdata(data="buildrequest") + tab(heading="buildset") + rawdata(data="buildset") From 93244ef2550896cab248ebd9978f6295d62520bd Mon Sep 17 00:00:00 2001 From: Pierre Tardy Date: Wed, 27 Aug 2014 19:00:32 +0200 Subject: [PATCH 2/4] fix color for step mouseover popup Signed-off-by: Pierre Tardy --- www/waterfall_view/src/module/main.module.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/www/waterfall_view/src/module/main.module.coffee b/www/waterfall_view/src/module/main.module.coffee index a701147c680..aef8cfd3391 100644 --- a/www/waterfall_view/src/module/main.module.coffee +++ b/www/waterfall_view/src/module/main.module.coffee @@ -431,7 +431,7 @@ class Waterfall extends Controller .append('text') .attr('y', (step, i) -> 15 * (i + 1)) .attr('x', if r then 30 else 10) - .attr('class', color) + .attr('class', (step, i) -> self.result(step)) .classed('fill', true) .transition().delay(100) # Text format From 0b485d2969379ee8a9382b80d9463defc6ab7f79 Mon Sep 17 00:00:00 2001 From: Pierre Tardy Date: Sun, 31 Aug 2014 21:58:14 +0200 Subject: [PATCH 3/4] make message to say www/base/setup.py depends on mock and buildbot as well Fix some review comments from prev commit Signed-off-by: Pierre Tardy --- www/base/setup.py | 5 ++++- www/waterfall_view/src/module/main.module.coffee | 10 ++++------ www/waterfall_view/src/module/main.module.spec.coffee | 6 +++--- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/www/base/setup.py b/www/base/setup.py index 8ef3db60a80..5758648dda6 100644 --- a/www/base/setup.py +++ b/www/base/setup.py @@ -17,9 +17,11 @@ try: from buildbot_pkg import setup_www_plugin + import mock, buildbot except ImportError: + from setuptools import setup import sys - print >> sys.stderr, "Please install buildbot_pkg module in order to install that package, or use the pre-build .whl modules available on pypi" + print >> sys.stderr, "Please install buildbot, buildbot_pkg, and mock modules in order to install that package, or use the pre-build .whl modules available on pypi" sys.exit(1) setup_www_plugin( @@ -27,6 +29,7 @@ description='Buildbot UI', author=u'Pierre Tardy', author_email=u'tardyp@gmail.com', + setup_requires=['buildbot', 'buildbot_pkg', 'mock'], url='http://buildbot.net/', license='GNU GPL', packages=['buildbot_www'], diff --git a/www/waterfall_view/src/module/main.module.coffee b/www/waterfall_view/src/module/main.module.coffee index aef8cfd3391..5b3966e16a7 100644 --- a/www/waterfall_view/src/module/main.module.coffee +++ b/www/waterfall_view/src/module/main.module.coffee @@ -191,7 +191,7 @@ class Waterfall extends Controller ### # Returns the result string of a builder, build or step ### - result: (b) -> + getResultClassFromThing: (b) -> if not b.complete and b.started_at >= 0 result = 'pending' else @@ -211,7 +211,6 @@ class Waterfall extends Controller drawXAxis: -> x = @scale.getX(@builders, @getInnerWidth()) builderName = @scale.getBuilderName(@builders) - color = @result # Remove old axis @header.select('.axis.x').remove() @@ -252,7 +251,7 @@ class Waterfall extends Controller .attr('x2', 0) .attr('y1', x.rangeBand() / 2) .attr('y2', - x.rangeBand() / 2) - .attr('class', color) + .attr('class', self.getResultClassFromThing) .classed('stroke', true) # Y axis tick values @@ -328,7 +327,6 @@ class Waterfall extends Controller drawBuilds: -> x = @scale.getX(@builders, @getInnerWidth()) y = @scale.getY(@groups, @c.gap, @getInnerHeight()) - color = @result # Remove previous elements @chart.selectAll('.builder').remove() @@ -351,7 +349,7 @@ class Waterfall extends Controller # Draw rectangle for each build builds.append('rect') - .attr('class', color) + .attr('class', self.getResultClassFromThing) .attr('width', x.rangeBand()) .attr('height', (build) -> y(build.started_at) - y(build.complete_at)) .classed('fill', true) @@ -431,7 +429,7 @@ class Waterfall extends Controller .append('text') .attr('y', (step, i) -> 15 * (i + 1)) .attr('x', if r then 30 else 10) - .attr('class', (step, i) -> self.result(step)) + .attr('class', self.getResultClassFromThing) .classed('fill', true) .transition().delay(100) # Text format diff --git a/www/waterfall_view/src/module/main.module.spec.coffee b/www/waterfall_view/src/module/main.module.spec.coffee index 576975882b2..5be25b31942 100644 --- a/www/waterfall_view/src/module/main.module.spec.coffee +++ b/www/waterfall_view/src/module/main.module.spec.coffee @@ -109,9 +109,9 @@ describe 'Waterfall view controller', -> testBuild = complete: false started_at: 0 - expect(w.result(testBuild)).toBe('pending') + expect(w.getResultClassFromThing(testBuild)).toBe('pending') testBuild.complete = true - expect(w.result(testBuild)).toBe('unknown') + expect(w.getResultClassFromThing(testBuild)).toBe('unknown') results = 0: 'success' 1: 'warnings' @@ -121,4 +121,4 @@ describe 'Waterfall view controller', -> 5: 'cancelled' for i in [0..5] testBuild.results = i - expect(w.result(testBuild)).toBe(results[i]) \ No newline at end of file + expect(w.getResultClassFromThing(testBuild)).toBe(results[i]) From b7b710cf3c3c9aab2a02a3e656c754f16b0c3b03 Mon Sep 17 00:00:00 2001 From: Pierre Tardy Date: Sun, 31 Aug 2014 22:27:42 +0200 Subject: [PATCH 4/4] update to guanlecoja 1.2 Signed-off-by: Pierre Tardy --- www/base/guanlecoja/config.coffee | 2 +- www/base/src/styles/styles.less | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/www/base/guanlecoja/config.coffee b/www/base/guanlecoja/config.coffee index 69f5ff22d6c..af62fe5a285 100644 --- a/www/base/guanlecoja/config.coffee +++ b/www/base/guanlecoja/config.coffee @@ -30,7 +30,7 @@ config = # JavaScript libraries (order matters) deps: "guanlecoja-ui": - version: '~1.1.0' + version: '~1.2.0' files: ['vendors.js', 'scripts.js'] moment: version: "~2.6.0" diff --git a/www/base/src/styles/styles.less b/www/base/src/styles/styles.less index e8492886d82..bbd28fef1f5 100644 --- a/www/base/src/styles/styles.less +++ b/www/base/src/styles/styles.less @@ -1,5 +1,6 @@ // Import bootstrap and font awesome stylesheets @import "../../libs/bootstrap/less/bootstrap.less"; +@import "../../libs/font-awesome/less/font-awesome.less"; @import (inline) "../../libs/guanlecoja-ui/styles.css"; // Import colors and animation stylesheet