Clean up handling for UI refresh events

-Always unbind event if object isn't visible

-Use widget-specific refresh event for multi-edit actions, to prevent
 other widgets from being refreshed unecessarily.
This commit is contained in:
Brian Federle 2011-12-09 09:12:25 -08:00
parent 3a94a41baf
commit 314c1f90c4
2 changed files with 20 additions and 11 deletions

View File

@ -439,9 +439,14 @@
return false; return false;
}); });
$(window).bind('cloudStack.fullRefresh', function(event) { var fullRefreshEvent = function(event) {
refreshChart(); if ($charts.is(':visible')) {
}); refreshChart();
} else {
$(window).unbind('cloudStack.fullRefresh', fullRefreshEvent);
}
};
$(window).bind('cloudStack.fullRefresh', fullRefreshEvent);
}; };
loadNetworkData(); loadNetworkData();

View File

@ -159,7 +159,7 @@
$loading.remove(); $loading.remove();
$dataItem.remove(); $dataItem.remove();
} else { } else {
$(window).trigger('cloudStack.fullRefresh'); $multi.trigger('refresh');
} }
complete(); complete();
@ -168,7 +168,7 @@
error(args); error(args);
$loading.remove(); $loading.remove();
$dataItem.show(); $dataItem.show();
return cloudStack.dialog.error; return cloudStack.dialog.error;
} }
}); });
@ -513,7 +513,7 @@
complete: function(completeArgs) { complete: function(completeArgs) {
complete(args); complete(args);
$loading.remove(); $loading.remove();
$(window).trigger('cloudStack.fullRefresh'); getData();
}, },
error: function(args) { error: function(args) {
@ -555,10 +555,10 @@
'input[type=radio]:checked, input[type=checkbox]:checked' 'input[type=radio]:checked, input[type=checkbox]:checked'
).size()) { ).size()) {
cloudStack.dialog.notice({ message: 'Please select an instance '}); cloudStack.dialog.notice({ message: 'Please select an instance '});
return false; return false;
} }
$dataList.fadeOut(function() { $dataList.fadeOut(function() {
addItem($.map( addItem($.map(
$dataList.find('tr.multi-edit-selected'), $dataList.find('tr.multi-edit-selected'),
@ -631,11 +631,15 @@
// Get existing data // Get existing data
getData(); getData();
$(window).bind('cloudStack.fullRefresh', function(event) { var fullRefreshEvent = function(event) {
if ($multi.is(':visible')) { if ($multi.is(':visible')) {
getData(); getData();
} else {
$(window).unbind('cloudStack.fullRefresh', fullRefreshEvent);
} }
}); };
$(window).bind('cloudStack.fullRefresh', fullRefreshEvent);
$multi.bind('refresh', fullRefreshEvent);
$multi.bind('change select', function() { $multi.bind('change select', function() {
_medit.refreshItemWidths($multi); _medit.refreshItemWidths($multi);