From 45360b7a576445debce3e3a66bbc8cf5cf42e99f Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Wed, 26 Sep 2012 15:14:18 -0700 Subject: [PATCH] cloudstack UI - advanced search - introduce new property "advSearchFields" to lsitViewData. --- ui/scripts/storage.js | 31 +++++++++++++++++++++++++++++-- ui/scripts/ui/widgets/listView.js | 6 ++---- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/ui/scripts/storage.js b/ui/scripts/storage.js index 7d6a9636731..418fe368129 100644 --- a/ui/scripts/storage.js +++ b/ui/scripts/storage.js @@ -49,6 +49,32 @@ } */ }, + 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; + + args.response.success({ + data: $.map(zones, function(zone) { + return { + id: zone.id, + description: zone.name + }; + }) + }); + } + }); + } + } + }, // List view actions actions: { @@ -270,11 +296,12 @@ }, dataProvider: function(args) { - var array1 = []; + var array1 = []; if(args.filterBy != null) { if(args.filterBy.advSearch != null && typeof(args.filterBy.advSearch) == "object") { for(var key in args.filterBy.advSearch) { - array1.push("&" + key + "=" + args.filterBy.advSearch[key]); + if(args.filterBy.advSearch[key] != null && args.filterBy.advSearch[key].length > 0) + array1.push("&" + key + "=" + args.filterBy.advSearch[key]); } } else if(args.filterBy.search != null && args.filterBy.search.by != null && args.filterBy.search.value != null) { diff --git a/ui/scripts/ui/widgets/listView.js b/ui/scripts/ui/widgets/listView.js index e5781200e05..883e86d8d32 100644 --- a/ui/scripts/ui/widgets/listView.js +++ b/ui/scripts/ui/widgets/listView.js @@ -1390,13 +1390,11 @@ ); }; - $listView.find('.button.search#advanced_search').bind('click', function(event) { + $listView.find('.button.search#advanced_search').bind('click', function(event) { cloudStack.dialog.createForm({ form: { title: 'Advanced Search', - fields: { - name: { label: 'Name' } - } + fields: listViewData.advSearchFields }, after: function(args) { advancedSearch(args);