cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From r...@apache.org
Subject [1/2] git commit: updated refs/heads/master to 8221ebd
Date Wed, 26 Aug 2015 23:08:49 GMT
Repository: cloudstack
Updated Branches:
  refs/heads/master eb60ac976 -> 8221ebd15


CLOUDSTACK-8766: Fix infinite scrolling pagination for zonal template listing

Uses listViewDataProvider to implement pagination for listing templates and ISOs
in the zones tab. Dedupes isos and templates in the list views.

This closes #740

(cherry picked from commit 26700fbe766e06c3b953ee9ebae3f51ff1a08968)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>


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

Branch: refs/heads/master
Commit: 462bb0654d4a207d20bc57591195e003441d6551
Parents: 09f7153
Author: Rohit Yadav <rohit.yadav@shapeblue.com>
Authored: Tue Aug 25 11:29:21 2015 +0530
Committer: Rohit Yadav <rohit.yadav@shapeblue.com>
Committed: Wed Aug 26 12:46:47 2015 +0530

----------------------------------------------------------------------
 ui/scripts/templates.js | 64 +++++++++++++++++++++++++++-----------------
 1 file changed, 40 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/462bb065/ui/scripts/templates.js
----------------------------------------------------------------------
diff --git a/ui/scripts/templates.js b/ui/scripts/templates.js
index 225a0c3..48f06fd 100644
--- a/ui/scripts/templates.js
+++ b/ui/scripts/templates.js
@@ -16,6 +16,8 @@
 // under the License.
 (function(cloudStack, $) {
     var ostypeObjs;
+    var previousCollection = [];
+    var previousFilterType = null;
 
     cloudStack.sections.templates = {
         title: 'label.menu.templates',
@@ -881,6 +883,10 @@
                         var ignoreProject = false;
                         if (args.filterBy != null) { //filter dropdown
                             if (args.filterBy.kind != null) {
+                                if (previousFilterType != args.filterBy.kind || args.page
== 1) {
+                                    previousFilterType = args.filterBy.kind;
+                                    previousCollection = [];
+                                }
                                 switch (args.filterBy.kind) {
                                     case "all":
                                         ignoreProject = true;
@@ -924,19 +930,19 @@
                                 var itemsView = [];
 
                                 $(items).each(function(index, item) {
-                                    var existing = $.grep(itemsView, function(it){
+                                    var existing = $.grep(previousCollection, function(it){
                                         return it != null && it.id !=null &&
it.id == item.id;
                                     });
 
-                                    if (existing.length == 0) {
-                                        itemsView.push($.extend(item, {
+                                    if (existing.length > 0) {
+                                        return true; // skip adding this entry
+                                    } else {
+                                        var templateItem = $.extend(item, {
                                             zones: item.zonename,
                                             zoneids: [item.zoneid]
-                                        }));
-                                    }
-                                    else {
-                                        existing[0].zones = 'label.multiplezones';
-                                        existing[0].zoneids.push(item.zoneid);
+                                        });
+                                        itemsView.push(templateItem);
+                                        previousCollection.push(templateItem);
                                     }
                                 });
 
@@ -1377,12 +1383,13 @@
 
 
                                     dataProvider: function(args) {  // UI > Templates
menu (listing) > select a template from listing > Details tab > Zones tab (listing)
+                                        var data = { templatefilter: "self",
+                                                     id: args.context.templates[0].id
+                                                   };
+                                        listViewDataProvider(args, data);
                                         $.ajax({
                                             url: createURL("listTemplates"),
-                                            data: {
-                                                templatefilter: "self",
-                                                id: args.context.templates[0].id
-                                            },
+                                            data: data,
                                             success: function(json) {
                                                 var jsonObjs = json.listtemplatesresponse.template;
 
@@ -2021,6 +2028,10 @@
                         var ignoreProject = false;
                         if (args.filterBy != null) { //filter dropdown
                             if (args.filterBy.kind != null) {
+                                if (previousFilterType != args.filterBy.kind || args.page
== 1) {
+                                    previousFilterType = args.filterBy.kind;
+                                    previousCollection = [];
+                                }
                                 switch (args.filterBy.kind) {
                                     case "all":
                                         ignoreProject = true;
@@ -2064,22 +2075,24 @@
 
                                 var itemsView = [];
                                 $(items).each(function(index, item) {
-                                    var existing = $.grep(itemsView, function(it){
+                                    var existing = $.grep(previousCollection, function(it){
                                         return it != null && it.id !=null &&
it.id == item.id;
                                     });
-                                    if (existing.length == 0) {
-                                        itemsView.push({
+
+
+                                    if (existing.length > 0) {
+                                        return true; // skip adding this entry
+                                    } else {
+                                        var isoItem = {
                                             id: item.id,
                                             name: item.name,
                                             description: item.description,
                                             ostypeid: item.ostypeid,
                                             zones: item.zonename,
                                             zoneids: [item.zoneid]
-                                        });
-                                    }
-                                    else {
-                                        existing[0].zones = 'Multiple Zones';
-                                        existing[0].zoneids.push(item.zoneid);
+                                        };
+                                        itemsView.push(isoItem);
+                                        previousCollection.push(isoItem);
                                     }
                                 }
 );
@@ -2382,11 +2395,14 @@
                                     hideSearchBar: true,
 
                                     dataProvider: function(args) {
-                                                var jsonObj = args.context.isos[0];
-                                                var apiCmd = "listIsos&isofilter=self&id="
+ jsonObj.id;
-
+                                                var data = {
+                                                    isofilter: 'self',
+                                                    id: args.context.isos[0].id
+                                                };
+                                                listViewDataProvider(args, data);
                                                 $.ajax({
-                                                    url: createURL(apiCmd),
+                                                    url: createURL('listIsos'),
+                                                    data: data,
                                                     dataType: "json",
                                                     success: function(json) {
                                                             var isos = json.listisosresponse.iso;


Mime
View raw message