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.

This commit is contained in:
Jessica Wang 2012-03-08 13:30:06 -08:00
parent e152e64ac0
commit 4761b9ec58
4 changed files with 52 additions and 21 deletions

View File

@ -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

View File

@ -2873,6 +2873,7 @@ dictionary = {
'message.please.select.a.different.public.and.management.network.before.removing': '<fmt:message key="message.please.select.a.different.public.and.management.network.before.removing" />',
'label.purpose': '<fmt:message key="label.purpose" />',
'error.please.specify.physical.network.tags': '<fmt:message key="error.please.specify.physical.network.tags" />',
'error.unable.to.reach.management.server': '<fmt:message key="error.unable.to.reach.management.server" />'
'error.unable.to.reach.management.server': '<fmt:message key="error.unable.to.reach.management.server" />',
'label.internal.name': '<fmt:message key="label.internal.name" />'
};
</script>

View File

@ -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 },

View File

@ -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 = $('<thead>').prependTo($table).append($('<tr>'));
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 = $('<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 = $('<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 @@
$('<tbody>').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,