From 4761b9ec5888d88dcf474c68702cf4f11fb86ee0 Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Thu, 8 Mar 2012 13:30:06 -0800 Subject: [PATCH] cloudstack 3.0 UI - (1) listView widget - add PreFilter() to exclude fields that shouldn't show upon conditions. (2) Instance page - add new field "Internal name" (e.g. "i-3-5-JW") that only shows for root-admin. --- .../classes/resources/messages.properties | 1 + ui/index.jsp | 3 +- ui/scripts/instances.js | 19 +++++-- ui/scripts/ui/widgets/listView.js | 50 ++++++++++++------- 4 files changed, 52 insertions(+), 21 deletions(-) diff --git a/client/WEB-INF/classes/resources/messages.properties b/client/WEB-INF/classes/resources/messages.properties index 1430f6534ab..7c05f43c96a 100644 --- a/client/WEB-INF/classes/resources/messages.properties +++ b/client/WEB-INF/classes/resources/messages.properties @@ -6,6 +6,7 @@ label.system.wide.capacity=System-wide capacity label.network.service.providers=Network Service Providers message.launch.zone=Zone is ready to launch; please proceed to the next step. error.unable.to.reach.management.server=Unable to reach Management Server +label.internal.name=Internal name #new labels (end) ************************************************************************************************ label.add.compute.offering=Add compute offering diff --git a/ui/index.jsp b/ui/index.jsp index d53335a32ab..c216d76dfa6 100644 --- a/ui/index.jsp +++ b/ui/index.jsp @@ -2873,6 +2873,7 @@ dictionary = { 'message.please.select.a.different.public.and.management.network.before.removing': '', 'label.purpose': '', 'error.please.specify.physical.network.tags': '', -'error.unable.to.reach.management.server': '' +'error.unable.to.reach.management.server': '', +'label.internal.name': '' }; diff --git a/ui/scripts/instances.js b/ui/scripts/instances.js index 18f23c1d773..4fac2bc3b61 100644 --- a/ui/scripts/instances.js +++ b/ui/scripts/instances.js @@ -23,9 +23,17 @@ }, label: 'state.Destroyed' } - }, + }, + preFilter: function(args) { + var hiddenFields = []; + if(!isAdmin()) { + hiddenFields.push('instancename'); + } + return hiddenFields; + }, fields: { displayname: { label: 'label.display.name' }, + instancename: { label: 'label.internal.name' }, zonename: { label: 'label.zone.name' }, state: { label: 'label.state', @@ -1495,14 +1503,19 @@ if (!args.context.instances[0].publicip) { hiddenFields.push('publicip'); } - + + if(!isAdmin()) { + hiddenFields.push('instancename'); + } + return hiddenFields; }, fields: [ { id: { label: 'label.id', isEditable: false }, - displayname: { label: 'label.display.name', isEditable: true }, + displayname: { label: 'label.display.name', isEditable: true }, + instancename: { label: 'label.internal.name' }, state: { label: 'label.state', isEditable: false }, publicip: { label: 'label.public.ip', isEditable: false }, zonename: { label: 'label.zone.name', isEditable: false }, diff --git a/ui/scripts/ui/widgets/listView.js b/ui/scripts/ui/widgets/listView.js index 3948ca34c11..311b81bea2b 100644 --- a/ui/scripts/ui/widgets/listView.js +++ b/ui/scripts/ui/widgets/listView.js @@ -526,13 +526,19 @@ ).length; }; - var createHeader = function(fields, $table, actions, options) { + var createHeader = function(preFilter, fields, $table, actions, options) { if (!options) options = {}; var $thead = $('').prependTo($table).append($('')); var reorder = options.reorder; - $.each(fields, function(key) { + var hiddenFields = []; + if(preFilter != null) + hiddenFields = preFilter(); + + $.each(fields, function(key) { + if($.inArray(key, hiddenFields) != -1) + return true; var field = this; var $th = $('').addClass(key).appendTo($thead.find('tr')); @@ -702,7 +708,7 @@ $detailsPanel = data.$browser.cloudBrowser('addPanel', panelArgs); }; - var addTableRows = function(fields, data, $tbody, actions, options) { + var addTableRows = function(preFilter, fields, data, $tbody, actions, options) { if (!options) options = {}; var rows = []; var reorder = options.reorder; @@ -734,9 +740,15 @@ $tr.appendTo($tbody); } + var hiddenFields = []; + if(preFilter != null) + hiddenFields = preFilter(); + // Add field data - $.each(fields, function(key) { - var field = this; + $.each(fields, function(key) { + if($.inArray(key, hiddenFields) != -1) + return true; + var field = this; var $td = $('') .addClass(key) .data('list-view-item-field', key) @@ -912,7 +924,7 @@ }); }; - var loadBody = function($table, dataProvider, fields, append, loadArgs, actions, options) { + var loadBody = function($table, dataProvider, preFilter, fields, append, loadArgs, actions, options) { if (!options) options = {}; var context = options.context; var reorder = options.reorder; @@ -941,8 +953,8 @@ response: { success: function(args) { setLoadingArgs.loadingCompleted(); - - addTableRows(fields, args.data, $tbody, actions, { + + addTableRows(preFilter, fields, args.data, $tbody, actions, { actionFilter: args.actionFilter, context: context, reorder: reorder @@ -954,8 +966,8 @@ }); }, error: function(args) { - setLoadingArgs.loadingCompleted(); - addTableRows(fields, [], $tbody, actions); + setLoadingArgs.loadingCompleted(); + addTableRows(preFilter, fields, [], $tbody, actions); $table.find('td:first').html(_l('ERROR')); $table.dataTable(null, { noSelect: uiCustom }); } @@ -1147,16 +1159,18 @@ $('').appendTo($table); - createHeader(listViewData.fields, + createHeader(listViewData.preFilter, + listViewData.fields, $table, listViewData.actions, { reorder: reorder }); createFilters($toolbar, listViewData.filters); createSearchBar($toolbar); - + loadBody( $table, listViewData.dataProvider, + listViewData.preFilter, listViewData.fields, false, { @@ -1201,10 +1215,11 @@ return true; }); - var search = function() { + var search = function() { loadBody( - $table, + $table, listViewData.dataProvider, + listViewData.preFilter, listViewData.fields, false, { @@ -1256,8 +1271,7 @@ if (loadMoreData) { page = page + 1; - - loadBody($table, listViewData.dataProvider, listViewData.fields, true, { + loadBody($table, listViewData.dataProvider, listViewData.preFilter, listViewData.fields, true, { context: context, page: page, filterBy: { @@ -1408,8 +1422,8 @@ listViewArgs.activeSection ].listView : listViewArgs; var reorder = targetArgs.reorder; - var $tr = addTableRows( + targetArgs.preFilter, targetArgs.fields, data, listView.find('table tbody'), @@ -1441,6 +1455,7 @@ var defaultActionFilter = $row.data('list-view-action-filter'); $newRow = addTableRows( + targetArgs.preFilter, targetArgs.fields, data, $listView.find('table tbody'), @@ -1482,6 +1497,7 @@ loadBody( this.find('table:last'), listViewArgs.dataProvider, + listViewArgs.preFilter, listViewArgs.fields, false, null,