UI multi view all: Support updateContext and preFilter -If preFilter is specified for a viewAll item in an array, show/hide view all button based on if it returns true/false
-If updateContext is specified, add returned object to the proceeding list view's context. Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/a756f7da Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/a756f7da Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/a756f7da Branch: refs/heads/ui-quick-view-v2 Commit: a756f7da89e95d88b197ac24ce01e01529668c27 Parents: 49849a8 Author: Brian Federle <[email protected]> Authored: Mon Jan 14 11:45:00 2013 -0800 Committer: Brian Federle <[email protected]> Committed: Mon Jan 14 11:45:10 2013 -0800 ---------------------------------------------------------------------- ui/scripts/ui/widgets/detailView.js | 23 +++++++++++++++++++---- 1 files changed, 19 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/a756f7da/ui/scripts/ui/widgets/detailView.js ---------------------------------------------------------------------- diff --git a/ui/scripts/ui/widgets/detailView.js b/ui/scripts/ui/widgets/detailView.js index a712267..f0cc8fd 100644 --- a/ui/scripts/ui/widgets/detailView.js +++ b/ui/scripts/ui/widgets/detailView.js @@ -578,7 +578,7 @@ } }; - var viewAll = function(viewAllID) { + var viewAll = function(viewAllID, options) { var $detailView = $('div.detail-view:last'); var args = $detailView.data('view-args'); var cloudStackArgs = $('[cloudstack-container]').data('cloudStack-args'); @@ -586,6 +586,7 @@ var listViewArgs, viewAllPath; var $listView; var isCustom = $.isFunction(viewAllID.custom); + var updateContext = options.updateContext; if (isCustom) { $browser.cloudBrowser('addPanel', { @@ -637,6 +638,10 @@ // Load context data var context = $.extend(true, {}, $detailView.data('view-args').context); + if (updateContext) { + $.extend(context, updateContext({ context: context })); + } + // Make panel var $panel = $browser.cloudBrowser('addPanel', { title: _l(listViewArgs.title), @@ -915,6 +920,11 @@ $(detailViewArgs.viewAll).each(function() { var viewAllItem = this; + if (viewAllItem.preFilter && + !viewAllItem.preFilter({ context: context })) { + return true; + } + $('<div>') .addClass('view-all') .append( @@ -1199,12 +1209,17 @@ $('a').live('click', function(event) { var $target = $(event.target); var $viewAll = $target.closest('td.view-all a'); + var viewAllArgs; if ($target.closest('div.detail-view').size() && $target.closest('td.view-all a').size()) { + viewAllArgs = $viewAll.data('detail-view-link-view-all'); viewAll( - $viewAll.data('detail-view-link-view-all').custom ? - $viewAll.data('detail-view-link-view-all') : - $viewAll.data('detail-view-link-view-all').path + viewAllArgs.custom ? + viewAllArgs : + viewAllArgs.path, + { + updateContext: viewAllArgs.updateContext + } ); return false; }
