From e30c346017115e508cd59ee6c6f521c44c64abf8 Mon Sep 17 00:00:00 2001 From: bfederle Date: Tue, 7 Feb 2012 12:36:15 -0800 Subject: [PATCH] Better handling for list view header actions --- ui/scripts/ui/widgets/listView.js | 56 ++++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 16 deletions(-) diff --git a/ui/scripts/ui/widgets/listView.js b/ui/scripts/ui/widgets/listView.js index ff2d42299df..1ecb4275242 100644 --- a/ui/scripts/ui/widgets/listView.js +++ b/ui/scripts/ui/widgets/listView.js @@ -162,34 +162,48 @@ message: messages.complete(args.data) }); } + + if (options.complete) { + options.complete(args); + } }, {}, // Error function(args) { - if ($instanceRow.data('list-view-new-item')) { - // For create forms - $instanceRow.remove(); - } else { - // For standard actions - replaceItem( - $instanceRow, - $.extend($instanceRow.data('json-obj'), args.data), - args.actionFilter ? - args.actionFilter : - $instanceRow.data('list-view-action-filter') - ); + if (!isHeader) { + if ($instanceRow.data('list-view-new-item')) { + // For create forms + $instanceRow.remove(); + } else { + // For standard actions + replaceItem( + $instanceRow, + $.extend($instanceRow.data('json-obj'), args.data), + args.actionFilter ? + args.actionFilter : + $instanceRow.data('list-view-action-filter') + ); + } + } + + if (options.error) { + options.error(args); } } ); }, error: function(message) { - if (($.isPlainObject(args.action.createForm) && args.action.addRow != 'false') || - (!args.action.createForm && args.action.addRow == 'true')) { - $instanceRow.remove(); + if (!isHeader) { + if (($.isPlainObject(args.action.createForm) && args.action.addRow != 'false') || + (!args.action.createForm && args.action.addRow == 'true')) { + $instanceRow.remove(); + } } + if (options.error) options.error(message); + if (message) cloudStack.dialog.notice({ message: message }); } } @@ -262,11 +276,21 @@ $form: args.$form }); } else { + var $loading = $('
').addClass('loading-overlay'); + + $loading.appendTo($listView); performAction(args.data, { ref: args.ref, context: createFormContext, $form: args.$form, - isHeader: isHeader + isHeader: isHeader, + complete: function(args) { + $loading.remove(); + $listView.listView('refresh'); + }, + error: function(args) { + $loading.remove(); + } }); } },