You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by je...@apache.org on 2014/01/30 23:27:08 UTC

git commit: updated refs/heads/4.3-forward to 713240b

Updated Branches:
  refs/heads/4.3-forward 54f2234e2 -> 713240bae


CLOUDSTACK-5996: UI - In project view, the first listRotuers API(without projectid=-1) will return the same objects as the second listRouters API(with projectid=-1), because in project view, all API calls are appended with projectid=[projectID]. Therefore, we only call the second listRouters API(with projectid=-1) in non-project view.


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/713240ba
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/713240ba
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/713240ba

Branch: refs/heads/4.3-forward
Commit: 713240baef97ddd62b646ad35c86e1e3ab6702d6
Parents: 54f2234
Author: Jessica Wang <je...@apache.org>
Authored: Thu Jan 30 14:26:04 2014 -0800
Committer: Jessica Wang <je...@apache.org>
Committed: Thu Jan 30 14:26:52 2014 -0800

----------------------------------------------------------------------
 ui/scripts/system.js | 113 ++++++++++++++++++++++++++++++++--------------
 1 file changed, 78 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/713240ba/ui/scripts/system.js
----------------------------------------------------------------------
diff --git a/ui/scripts/system.js b/ui/scripts/system.js
index 72f9e33..6b89182 100644
--- a/ui/scripts/system.js
+++ b/ui/scripts/system.js
@@ -318,7 +318,6 @@
 
                     virtualRouterCount: function(data) {
                         var data2 = {
-                            projectid: -1,
                             page: 1,
                             pagesize: 1 //specifying pagesize as 1 because we don't need any embedded objects to be returned here. The only thing we need from API response is "count" property.
                         };
@@ -327,24 +326,35 @@
                             data: data2,
                             success: function(json) {
                                 var total1 = json.listroutersresponse.count ? json.listroutersresponse.count : 0;
+                                var total2 = 0; //reset
 
+                                /*
+                                 * In project view, the first listRotuers API(without projectid=-1) will return the same objects as the second listRouters API(with projectid=-1),
+                                 * because in project view, all API calls are appended with projectid=[projectID].  
+                                 * Therefore, we only call the second listRouters API(with projectid=-1) in non-project view.
+                                 */   
+                                if (cloudStack.context && cloudStack.context.projects == null) { //non-project view
                                 var data3 = {
                                     listAll: true,
+	                                    projectid: -1,
                                     page: 1,
                                     pagesize: 1 //specifying pagesize as 1 because we don't need any embedded objects to be returned here. The only thing we need from API response is "count" property.
                                 };
                                 $.ajax({
                                     url: createURL('listRouters'),
                                     data: data3,
+	                                    async: false,
                                     success: function(json) {
-                                        var total2 = json.listroutersresponse.count ? json.listroutersresponse.count : 0;
+	                                        total2 = json.listroutersresponse.count ? json.listroutersresponse.count : 0;	                                        
+	                                    }
+	                                });
+                                }
+                                                                
                                         dataFns.capacity($.extend(data, {
                                             virtualRouterCount: (total1 + total2)
                                         }));
                                     }
                                 });
-                            }
-                        });
                     },
 
                     capacity: function(data) {
@@ -2317,10 +2327,16 @@
                                                     routers.push(item);
                                                 });
 
-                                                // Get project routers
+                                                /*
+                                                 * In project view, the first listRotuers API(without projectid=-1) will return the same objects as the second listRouters API(with projectid=-1),
+                                                 * because in project view, all API calls are appended with projectid=[projectID].  
+                                                 * Therefore, we only call the second listRouters API(with projectid=-1) in non-project view.
+                                                 */   
+                                                if (cloudStack.context && cloudStack.context.projects == null) { //non-project view
                                                 $.ajax({
                                                     url: createURL("listRouters&zoneid=" + selectedZoneObj.id + "&listAll=true&page=" + args.page + "&pagesize=" + pageSize + array1.join("") + "&projectid=-1"),
                                                     data: data2,
+	                                                    async: false,
                                                     success: function(json) {
                                                         var items = json.listroutersresponse.router ?
                                                             json.listroutersresponse.router : [];
@@ -2328,14 +2344,16 @@
                                                         $(items).map(function(index, item) {
                                                             routers.push(item);
                                                         });
+	                                                    }
+	                                                });
+                                                }
+                                                
                                                         args.response.success({
                                                             actionFilter: routerActionfilter,
                                                             data: $(routers).map(mapRouterType)
                                                         });
                                                     }
                                                 });
-                                            }
-                                        });
                                     },
                                     detailView: {
                                         name: 'Virtual applicance details',
@@ -3397,25 +3415,32 @@
                                                     routers.push(item);
                                                 });
 
-                                                // Get project routers
+                                                /*
+                                                 * In project view, the first listRotuers API(without projectid=-1) will return the same objects as the second listRouters API(with projectid=-1),
+                                                 * because in project view, all API calls are appended with projectid=[projectID].  
+                                                 * Therefore, we only call the second listRouters API(with projectid=-1) in non-project view.
+                                                 */   
+                                                if (cloudStack.context && cloudStack.context.projects == null) { //non-project view
                                                 $.ajax({
                                                     url: createURL("listRouters&zoneid=" + selectedZoneObj.id + "&listAll=true&page=" + args.page + "&pagesize=" + pageSize + array1.join("") + "&projectid=-1"),
                                                     dataType: 'json',
                                                     data: data2,
-                                                    async: true,
+	                                                    async: false,
                                                     success: function(json) {
                                                         var items = json.listroutersresponse.router;
                                                         $(items).map(function(index, item) {
                                                             routers.push(item);
                                                         });
+	                                                    }
+	                                                });
+                                                }
+                                                
                                                         args.response.success({
                                                             actionFilter: routerActionfilter,
                                                             data: $(routers).map(mapRouterType)
                                                         });
                                                     }
                                                 });
-                                            }
-                                        });
                                     },
                                     detailView: {
                                         name: 'Virtual applicance details',
@@ -7392,32 +7417,41 @@
                                                         $(items).map(function(index, item) {
                                                             routers.push(item);
                                                         });
-
-                                                        //get project-owned routers
-                                                        var toSearchByProjectid = true;
+                                                        
+                                                        //if account is specified in advanced search, don't search project-owned routers
+                                                        var accountIsNotSpecifiedInAdvSearch = true;
                                                         if (args.filterBy != null) {
                                                             if (args.filterBy.advSearch != null && typeof(args.filterBy.advSearch) == "object") { //advanced search
-                                                                if ('account' in args.filterBy.advSearch  && args.filterBy.advSearch.account.length > 0) { //if account is specified in advanced search, don't search project-owned routers
-                                                                    toSearchByProjectid = false;  //since account and projectid can't be specified together
+                                                                if ('account' in args.filterBy.advSearch  && args.filterBy.advSearch.account.length > 0) { 
+                                                                    accountIsNotSpecifiedInAdvSearch = false;  //since account and projectid can't be specified together
                                                                 }
                                                             }
                                                         }
-                                                        if (toSearchByProjectid) {
-                                                            $.ajax({
-                                                                url: createURL('listRouters'),
-                                                                data: $.extend(data,{
-                                                                    listAll: true,
-                                                                    projectid: -1
-                                                                }),
-                                                                async: false,
-                                                                success: function(json) {
-                                                                    var items = json.listroutersresponse.router ? json.listroutersresponse.router : [];
-                                                                    $(items).map(function(index, item) {
-                                                                        routers.push(item);
-                                                                    });
-                                                                }
-                                                            });
-                                                        }
+                                                        if (accountIsNotSpecifiedInAdvSearch) {                                                        
+				                                            /*
+				                                             * In project view, the first listRotuers API(without projectid=-1) will return the same objects as the second listRouters API(with projectid=-1),
+				                                             * because in project view, all API calls are appended with projectid=[projectID].  
+				                                             * Therefore, we only call the second listRouters API(with projectid=-1) in non-project view.
+				                                             */   
+				                                            if (cloudStack.context && cloudStack.context.projects == null) { //non-project view
+					                                            $.ajax({
+					                                                url: createURL("listRouters&listAll=true&page=" + args.page + "&pagesize=" + pageSize + "&projectid=-1"),
+				                                                    async: false,
+				                                                    success: function(json) {
+				                                                        var items = json.listroutersresponse.router ? json.listroutersresponse.router : [];
+				                                                        $(items).map(function(index, item) {
+				                                                            routers.push(item);
+				                                                        });
+				                                                    }
+				                                                });
+				
+				                                            }
+                                                        }   
+			                                                                                        
+			                                            args.response.success({
+			                                                actionFilter: routerActionfilter,
+			                                                data: $(routers).map(mapRouterType)
+			                                            });                                                    
                                                     }
                                                 });
 
@@ -7681,10 +7715,17 @@
                                         $(items).map(function(index, item) {
                                             routers.push(item);
                                         });
-                                        // Get project routers
+                                
+                                /*
+                                 * In project view, the first listRotuers API(without projectid=-1) will return the same objects as the second listRouters API(with projectid=-1),
+                                 * because in project view, all API calls are appended with projectid=[projectID].  
+                                 * Therefore, we only call the second listRouters API(with projectid=-1) in non-project view.
+                                 */   
+                                if (cloudStack.context && cloudStack.context.projects == null) { //non-project view
                                         $.ajax({
                                             url: createURL("listRouters&listAll=true&page=" + args.page + "&pagesize=" + pageSize + array1.join("") + "&projectid=-1"),
                                             data: data2,
+	                                    async: false,
                                             success: function(json) {
                                                 var items = json.listroutersresponse.router ?
                                                         json.listroutersresponse.router : [];
@@ -7692,14 +7733,16 @@
                                                 $(items).map(function(index, item) {
                                                     routers.push(item);
                                                 });
+	                                    }
+	                                });
+                                }
+                                
                                                 args.response.success({
                                                     actionFilter: routerActionfilter,
                                                     data: $(routers).map(mapRouterType)
                                                 });
                                             }
                                         });
-                                    }
-                                });
                             },
                             detailView: {
                                 name: 'Virtual applicance details',