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 2013/11/07 20:46:28 UTC

git commit: updated refs/heads/master to 6a396a9

Updated Branches:
  refs/heads/master 62286fcc6 -> 6a396a905


CLOUDSTACK-4793: UI > Infrastructure > Virtual Routers > listView > implement Advanced Search by name/zone/pod/domain/account.


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

Branch: refs/heads/master
Commit: 6a396a90576c7e29bb3cfa00957fe06b96319d2b
Parents: 62286fc
Author: Jessica Wang <je...@apache.org>
Authored: Thu Nov 7 11:45:53 2013 -0800
Committer: Jessica Wang <je...@apache.org>
Committed: Thu Nov 7 11:46:19 2013 -0800

----------------------------------------------------------------------
 ui/scripts/system.js | 176 ++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 148 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/6a396a90/ui/scripts/system.js
----------------------------------------------------------------------
diff --git a/ui/scripts/system.js b/ui/scripts/system.js
index e568a6d..8c03e75 100644
--- a/ui/scripts/system.js
+++ b/ui/scripts/system.js
@@ -7394,41 +7394,57 @@
                         },
                         virtualRouters: function() {
                             var listView = $.extend(true, {}, cloudStack.sections.system.subsections.virtualRouters.listView, {
-                                dataProvider: function(args) {
-                                    var searchByArgs = args.filterBy.search.value.length ?
-                                        '&keyword=' + args.filterBy.search.value : '';
-
+                                dataProvider: function(args) {                                	
+                                	var data = {};
+                                    listViewDataProvider(args, data);
+                                	
                                     var routers = [];
+                                    
+                                    //get account-owned routers
                                     $.ajax({
-                                        url: createURL("listRouters&listAll=true&page=" + args.page + "&pagesize=" + pageSize + searchByArgs),
-                                        async: true,
+                                        url: createURL('listRouters'),
+                                        data: $.extend(data,{
+                                        	listAll: true
+                                        }), 
+                                        async: false,
                                         success: function(json) {
-                                            var items = json.listroutersresponse.router ?
-                                                json.listroutersresponse.router : [];
-
+                                            var items = json.listroutersresponse.router ? json.listroutersresponse.router : [];
                                             $(items).map(function(index, item) {
                                                 routers.push(item);
                                             });
-
-                                            // Get project routers
-                                            $.ajax({
-                                                url: createURL("listRouters&listAll=true&page=" + args.page + "&pagesize=" + pageSize + "&projectid=-1"),
-                                                async: true,
-                                                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)
-                                                    });
-                                                }
-                                            });
+                                              
+                                            //get project-owned routers
+                                            var toSearchByProjectid = 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 (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);
+	                                                    });
+	                                                }
+	                                            });
+                                            }
                                         }
-                                    });
+                                    });                                    
+
+                                    args.response.success({
+                                        actionFilter: routerActionfilter,
+                                        data: $(routers).map(mapRouterType)
+                                    });                                    
                                 },
 
                                 detailView: {
@@ -7558,6 +7574,110 @@
                             }
                         }
                     },
+                                        
+                    advSearchFields: {
+                        name: {
+                            label: 'Name'
+                        },
+                        zoneid: {
+                            label: 'Zone',
+                            select: function(args) {
+                                $.ajax({
+                                    url: createURL('listZones'),
+                                    data: {
+                                        listAll: true
+                                    },
+                                    success: function(json) {
+                                        var zones = json.listzonesresponse.zone ? json.listzonesresponse.zone : [];
+
+                                        args.response.success({
+                                            data: $.map(zones, function(zone) {
+                                                return {
+                                                    id: zone.id,
+                                                    description: zone.name
+                                                };
+                                            })
+                                        });
+                                    }
+                                });
+                            }
+                        },                        
+                        podid: {
+                            label: 'Pod',
+                            dependsOn: 'zoneid',
+                            select: function (args) {                            	
+                                $.ajax({
+                                    url: createURL("listPods&zoneid=" + args.zoneid),
+                                    dataType: "json",
+                                    async: true,
+                                    success: function (json) {                                    
+                                        var pods = json.listpodsresponse.pod ? json.listpodsresponse.pod : [];
+                                        args.response.success({
+                                            data: $.map(pods, function(pod) {
+                                                return {
+                                                    id: pod.id,
+                                                    description: pod.name
+                                                };
+                                            })
+                                        });                                        
+                                    }
+                                });
+                            }
+                        },                                                
+                        domainid: {
+                            label: 'Domain',
+                            select: function(args) {
+                                if (isAdmin() || isDomainAdmin()) {
+                                    $.ajax({
+                                        url: createURL('listDomains'),
+                                        data: {
+                                            listAll: true,
+                                            details: 'min'
+                                        },
+                                        success: function(json) {
+                                            var array1 = [{
+                                                id: '',
+                                                description: ''
+                                            }];
+                                            var domains = json.listdomainsresponse.domain;
+                                            if (domains != null && domains.length > 0) {
+                                                for (var i = 0; i < domains.length; i++) {
+                                                    array1.push({
+                                                        id: domains[i].id,
+                                                        description: domains[i].path
+                                                    });
+                                                }
+                                            }
+                                            args.response.success({
+                                                data: array1
+                                            });
+                                        }
+                                    });
+                                } else {
+                                    args.response.success({
+                                        data: null
+                                    });
+                                }
+                            },
+                            isHidden: function(args) {
+                                if (isAdmin() || isDomainAdmin())
+                                    return false;
+                                else
+                                    return true;
+                            }
+                        },
+
+                        account: {
+                            label: 'Account',
+                            isHidden: function(args) {
+                                if (isAdmin() || isDomainAdmin())
+                                    return false;
+                                else
+                                    return true;
+                            }
+                        }
+                    },                    
+                    
                     dataProvider: function(args) {
                         var array1 = [];
                         if (args.filterBy != null) {