You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2014/11/15 18:07:10 UTC

[2/8] incubator-brooklyn git commit: catalog js-gui tweaks

catalog js-gui tweaks

* force server ordering to be respected on refresh, so new default versions show at root
* update applications as well as entities
* fix bug where sometimes on relead, policies would cause errors in browser


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/9ed1f981
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/9ed1f981
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/9ed1f981

Branch: refs/heads/master
Commit: 9ed1f9814c46b5347b9880fba0d106c156dd181f
Parents: f143310
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Fri Nov 14 23:58:24 2014 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Sat Nov 15 02:20:55 2014 +0000

----------------------------------------------------------------------
 .../catalog/internal/BasicBrooklynCatalog.java  |  2 +-
 .../src/main/webapp/assets/js/view/catalog.js   | 21 +++++++++++++++-----
 2 files changed, 17 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9ed1f981/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java b/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
index 3a21114..674b380 100644
--- a/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
+++ b/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
@@ -604,7 +604,7 @@ public class BasicBrooklynCatalog implements BrooklynCatalog {
     private void checkItemNotExists(CatalogItem<?,?> itemDto, boolean forceUpdate) {
         if (!forceUpdate && getCatalogItemDo(itemDto.getSymbolicName(), itemDto.getVersion()) != null) {
             throw new IllegalStateException("Updating existing catalog entries is forbidden: " +
-                    itemDto.getId() + ":" + itemDto.getVersion() + ". Use forceUpdate argument to override.");
+                    itemDto.getSymbolicName() + ":" + itemDto.getVersion() + ". Use forceUpdate argument to override.");
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9ed1f981/usage/jsgui/src/main/webapp/assets/js/view/catalog.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/view/catalog.js b/usage/jsgui/src/main/webapp/assets/js/view/catalog.js
index 2d6aa8b..7f849af 100644
--- a/usage/jsgui/src/main/webapp/assets/js/view/catalog.js
+++ b/usage/jsgui/src/main/webapp/assets/js/view/catalog.js
@@ -185,7 +185,10 @@ define([
                     .done(function (data, status, xhr) {
                         // Can extract location of new item with:
                         //model.url = Brooklyn.util.pathOf(xhr.getResponseHeader("Location"));
+                        submitButton.button("reset");
+                        self.close();  // one of the calls below should draw a different view
                         parent.loadAccordionItem("entities", data.id);
+                        parent.loadAccordionItem("applications", data.id);
                     })
                     .fail(function (xhr, status, error) {
                         submitButton.button("reset");
@@ -232,6 +235,8 @@ define([
                 location.save()
                     .done(function (newModel) {
                         newModel = new Location.Model(newModel);
+                        submitButton.button("reset");
+                        self.close();  // the call below should draw a different view
                         parent.loadAccordionItem("locations", newModel.id);
                     })
                     .fail(function (response) {
@@ -370,9 +375,9 @@ define([
     
     var AccordionEntityView = AccordionItemView.extend({
         renderEntries: function() {
-            var symbolicNameFn = function(model) {return model.get("type")};
+            var symbolicNameFn = function(model) {return model.get("symbolicName")};
             var groups = this.collection.groupBy(symbolicNameFn);
-            var orderedIds = _.uniq(this.collection.map(symbolicNameFn), true);
+            var orderedIds = _.uniq(this.collection.map(symbolicNameFn));
 
             function getLatestStableVersion(items) {
                 //the server sorts items by descending version, snapshots at the back
@@ -429,9 +434,13 @@ define([
                     autoOpen: this.options.kind == "entities"
                 }),
                 "policies": new AccordionEntityView({
+                    // TODO needs parsing, and probably its own model
+                    // but cribbing "entity" works for now 
+                    // (and not setting a model can cause errors intermittently)
                     onItemSelected: _.partial(this.showCatalogItem, DetailsEntityHtml),
                     name: "policies",
                     singular: "policy",
+                    model: Entity.Model,
                     autoOpen: this.options.kind == "policies"
                 }),
                 "locations": new AccordionItemView({
@@ -499,13 +508,15 @@ define([
             } else {
                 var accordion = this.accordion[kind];
                 var self = this;
-                accordion.collection.fetch()
+                // reset is needed because we rely on server's ordering;
+                // without it, server additions are placed at end of list
+                accordion.collection.fetch({reset: true})
                     .then(function() {
                         var model = accordion.collection.get(id);
                         if (!model) {
-                            self.setDetailsView(new CatalogItemDetailsView().renderEmpty(
-                                    "No " + accordion.options.singular + " with id: " + id));
+                            // caller probably passed the wrong kind (in case of entity v app, the caller might try both)                        
                         } else {
+                            Backbone.history.navigate("/v1/catalog/"+kind+"/"+id);
                             activeDetailsView = kind;
                             accordion.activeCid = model.cid;
                             accordion.options.onItemSelected(kind, model);