From: Imre Farkas<ifarkas(a)redhat.com>
https://bugzilla.redhat.com/show_bug.cgi?id=781579
---
src/app/controllers/deployables_controller.rb | 8 ++++++
src/app/views/deployables/show.html.haml | 33 +++++++++++++++++++++++++
src/public/javascripts/backbone/models.js | 10 +++++++
src/public/javascripts/backbone/routers.js | 19 ++++++++++++++
src/public/javascripts/backbone/views.js | 13 +++++++++-
5 files changed, 82 insertions(+), 1 deletions(-)
diff --git a/src/app/controllers/deployables_controller.rb
b/src/app/controllers/deployables_controller.rb
index 2acc259..5090e81 100644
--- a/src/app/controllers/deployables_controller.rb
+++ b/src/app/controllers/deployables_controller.rb
@@ -98,6 +98,14 @@ class DeployablesController< ApplicationController
:status => status,
}
end
+
+ respond_to do |format|
+ format.html
+ format.json do
+ render :json => { :build_results => @build_results }
+ end
+ end
+
end
def definition
diff --git a/src/app/views/deployables/show.html.haml
b/src/app/views/deployables/show.html.haml
index 8d311e5..4e35572 100644
--- a/src/app/views/deployables/show.html.haml
+++ b/src/app/views/deployables/show.html.haml
@@ -106,3 +106,36 @@
%h2.roles= t('role_assignments')
.content
= render :partial => 'permissions/permissions'
+
+%script#deployableBuildsTemplate{ :type => 'text/x-jquery-tmpl' }
+ :plain
+ {{each(provider_type, results) build_results}}
+ {{each(index, result) results}}
+<li>
+<div class="summary">
+<div class="info">
+<h2>${provider_type}</h2>
+<span>${result['provider']}</span>
+ |
+<span>${result['account']}</span>
+</div>
+<div class="controls">
+<div class="build_status">
+ {{if result['status'] == 'not_built'}}
+<span>#{t('deployables.show.build_statuses_descriptions.not_built')}</span>
+ {{else result['status'] == 'building'}}
+<span>#{t('deployables.show.build_statuses_descriptions.building')}</span>
+ {{else result['status'] == 'not_pushed'}}
+<span>#{t('deployables.show.build_statuses_descriptions.not_pushed')}</span>
+ {{else result['status'] == 'pushing'}}
+<span>#{t('deployables.show.build_statuses_descriptions.pushing')}</span>
+ {{else result['status'] == 'pushed'}}
+<span>#{t('deployables.show.build_statuses_descriptions.pushed')}</span>
+ {{/if}}
+<div class="build_status_icon ${result['status']}"></div>
+</div>
+</div>
+</div>
+</li>
+ {{/each}}
+ {{/each}}
diff --git a/src/public/javascripts/backbone/models.js
b/src/public/javascripts/backbone/models.js
index e6e81fa..93c9114 100644
--- a/src/public/javascripts/backbone/models.js
+++ b/src/public/javascripts/backbone/models.js
@@ -33,6 +33,16 @@ Conductor.Models.Instances = Backbone.Collection.extend({
}
});
+Conductor.Models.Deployable = Backbone.Model.extend({
+ initialize: function(options) {
+ this.catalog_id = options['catalog_id']
+ },
+
+ url: function() {
+ return Conductor.prefixedPath('/catalogs/' + this.catalog_id +
'/deployables/' + this.id);;
+ }
+});
+
Conductor.Models.Deployment = Backbone.Model.extend({
urlRoot: Conductor.prefixedPath('/deployments'),
diff --git a/src/public/javascripts/backbone/routers.js
b/src/public/javascripts/backbone/routers.js
index d2f0123..2e17348 100644
--- a/src/public/javascripts/backbone/routers.js
+++ b/src/public/javascripts/backbone/routers.js
@@ -86,6 +86,25 @@ Conductor.Routers.Deployments = Backbone.Router.extend({
}
});
+Conductor.Routers.Deployables = Backbone.Router.extend({
+ routes: {
+ 'catalogs/:catalog_id/deployables/:id': 'show'
+ },
+
+ show: function(catalog_id, id) {
+ id = Conductor.idFromURLFragment(id);
+ var catalogId = Conductor.idFromURLFragment(catalog_id);
+
+ if(! _.isNumber(id) || ! _.isNumber(catalogId)) return;
+
+ setInterval(function() {
+ var deployable = new Conductor.Models.Deployable({ catalog_id: catalogId, id: id
});
+ var view = new Conductor.Views.DeployablesShow({ model: deployable });
+ deployable.fetch({ success: function() { view.render(); } })
+ }, Conductor.AJAX_REFRESH_INTERVAL);
+ }
+});
+
Conductor.Routers.Images = Backbone.Router.extend({
routes: {
'images/:id': 'show'
diff --git a/src/public/javascripts/backbone/views.js
b/src/public/javascripts/backbone/views.js
index ec558e9..5063583 100644
--- a/src/public/javascripts/backbone/views.js
+++ b/src/public/javascripts/backbone/views.js
@@ -134,6 +134,18 @@ Conductor.Views.PoolsShow = Backbone.View.extend({
}
});
+Conductor.Views.DeployablesShow = Backbone.View.extend({
+
+ el: '#content',
+
+ render: function() {
+ var $builds = this.$('ul#providers-list');
+ if($builds.length === 0) return;
+
+ $builds.empty();
+ $('#deployableBuildsTemplate').tmpl(this.model.toJSON()).appendTo($builds);
+ }
+});
Conductor.Views.DeploymentsShow = Backbone.View.extend({
@@ -158,7 +170,6 @@ Conductor.Views.DeploymentsShow = Backbone.View.extend({
});
-
Conductor.Views.ImagesShow = Backbone.View.extend({
el: '#content',
ACK
OT note: I'm little bit scared of how much code is duplicated for
html/backbone views. Would be great to do deeper investigation how to
optimize this (in post 1.0).
Jan