Skip to content

Commit d43d696

Browse files
committed
Support hiding columns through config file
We want users to be able to hide some columns in metrics tables that may not be necessary for their organizations. The current commit will start supporting metrics table and it can be extended to any table with similar logic
1 parent ea8baf3 commit d43d696

4 files changed

Lines changed: 57 additions & 10 deletions

File tree

ui/config.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,13 @@ cloudStackOptions = {
2727
"fr": "label.french.azerty.keyboard",
2828
"jp": "label.japanese.keyboard",
2929
"sc": "label.simplified.chinese.keyboard"
30+
},
31+
metricsHidden: {
32+
zones:[],
33+
clusters: [],
34+
hosts: [],
35+
storagepool: [],
36+
instances: [],
37+
volumes: []
3038
}
3139
};

ui/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1900,5 +1900,6 @@ <h3><translate key="label.set.up.zone.type"/></h3>
19001900
<script type="text/javascript" src="plugins/plugins.js"></script>
19011901
<script type="text/javascript" src="modules/modules.js"></script>
19021902
<script type="text/javascript" src="scripts/plugins.js"></script>
1903+
<script type="text/javascript" src="scripts/configureHiddenColumns.js"></script>
19031904
</body>
19041905
</html>
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Licensed to the Apache Software Foundation (ASF) under one
2+
// or more contributor license agreements. See the NOTICE file
3+
// distributed with this work for additional information
4+
// regarding copyright ownership. The ASF licenses this file
5+
// to you under the Apache License, Version 2.0 (the
6+
// "License"); you may not use this file except in compliance
7+
// with the License. You may obtain a copy of the License at
8+
//
9+
// http://www.apache.org/licenses/LICENSE-2.0
10+
//
11+
// Unless required by applicable law or agreed to in writing,
12+
// software distributed under the License is distributed on an
13+
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
// KIND, either express or implied. See the License for the
15+
// specific language governing permissions and limitations
16+
// under the License.
17+
18+
(function(cloudStack) {
19+
// This file must be loaded at the end of the scripts as it assumes data to be pre populated.
20+
cloudStack.sections.metrics.zones.listView.hiddenFields = cloudStackOptions.metricsHidden.zones;
21+
cloudStack.sections.metrics.clusters.listView.hiddenFields = cloudStackOptions.metricsHidden.clusters;
22+
cloudStack.sections.metrics.hosts.listView.hiddenFields = cloudStackOptions.metricsHidden.hosts;
23+
cloudStack.sections.metrics.storagepool.listView.hiddenFields = cloudStackOptions.metricsHidden.storagepool;
24+
cloudStack.sections.metrics.instances.listView.hiddenFields = cloudStackOptions.metricsHidden.instances;
25+
cloudStack.sections.metrics.volumes.listView.hiddenFields = cloudStackOptions.metricsHidden.volumes;
26+
})(cloudStack);

ui/scripts/ui/widgets/listView.js

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -762,7 +762,7 @@
762762
).length;
763763
};
764764

765-
var createHeader = function(preFilter, fields, $table, actions, options) {
765+
var createHeader = function(preFilter, fields, forceHiddenFields, $table, actions, options) {
766766
if (!options) options = {};
767767

768768
var $tr = $('<tr>');
@@ -773,10 +773,10 @@
773773
var groupableColumns = options.groupableColumns;
774774
var viewArgs = $table.closest('.list-view').data('view-args');
775775
var uiCustom = viewArgs.uiCustom;
776-
var hiddenFields = [];
776+
var hiddenFields = forceHiddenFields ? forceHiddenFields : [];
777777

778778
if (preFilter != null)
779-
hiddenFields = preFilter();
779+
hiddenFields = hiddenFields.concat(preFilter());
780780

781781
var addColumnToTr = function($tr, key, colspan, label, needsCollapsibleColumn) {
782782
var trText = _l(label);
@@ -860,6 +860,8 @@
860860
if (groupableColumns) {
861861
$tr.addClass('groupable-header-columns').addClass('groupable-header');
862862
$.each(fields, function(key) {
863+
if ($.inArray(key, hiddenFields) != -1)
864+
return true;
863865
var field = this;
864866
if (field.columns) {
865867
var colspan = Object.keys(field.columns).length;
@@ -1134,7 +1136,7 @@
11341136
}
11351137
};
11361138

1137-
var addTableRows = function(preFilter, fields, data, $tbody, actions, options) {
1139+
var addTableRows = function(preFilter, fields, forceHiddenFields, data, $tbody, actions, options) {
11381140
if (!options) options = {};
11391141
var rows = [];
11401142
var reorder = options.reorder;
@@ -1173,9 +1175,9 @@
11731175
$tr.appendTo($tbody);
11741176
}
11751177

1176-
var hiddenFields = [];
1178+
var hiddenFields = forceHiddenFields ? forceHiddenFields : [];
11771179
if (preFilter != null)
1178-
hiddenFields = preFilter();
1180+
hiddenFields = hiddenFields.concat(preFilter());
11791181

11801182
if (multiSelect) {
11811183
var $td = $('<td>')
@@ -1203,6 +1205,8 @@
12031205
var reducedFields = {};
12041206
var idx = 0;
12051207
$.each(fields, function(key) {
1208+
if ($.inArray(key, hiddenFields) != -1)
1209+
return true;
12061210
var field = this;
12071211
if (field.columns) {
12081212
$.each(field.columns, function(innerKey) {
@@ -1675,7 +1679,7 @@
16751679
});
16761680
};
16771681

1678-
var loadBody = function($table, dataProvider, preFilter, fields, append, loadArgs, actions, options) {
1682+
var loadBody = function($table, dataProvider, preFilter, fields, forceHiddenFields, append, loadArgs, actions, options) {
16791683
if (!options) options = {};
16801684
var context = options.context;
16811685
var reorder = options.reorder;
@@ -1712,7 +1716,7 @@
17121716
success: function(args) {
17131717
setLoadingArgs.loadingCompleted();
17141718

1715-
addTableRows(preFilter, fields, args.data, $tbody, actions, {
1719+
addTableRows(preFilter, fields, forceHiddenFields, args.data, $tbody, actions, {
17161720
actionFilter: args.actionFilter,
17171721
context: context,
17181722
reorder: reorder,
@@ -1730,7 +1734,7 @@
17301734
},
17311735
error: function(args) {
17321736
setLoadingArgs.loadingCompleted();
1733-
addTableRows(preFilter, fields, [], $tbody, actions);
1737+
addTableRows(preFilter, fields, forceHiddenFields, [], $tbody, actions);
17341738
$table.find('td:first').html(_l('ERROR'));
17351739
$table.dataTable(null, {
17361740
noSelect: uiCustom
@@ -1964,6 +1968,7 @@
19641968

19651969
createHeader(listViewData.preFilter,
19661970
listViewData.fields,
1971+
listViewData.hiddenFields,
19671972
$table,
19681973
listViewData.actions, {
19691974
reorder: reorder,
@@ -1993,6 +1998,7 @@
19931998
listViewData.dataProvider,
19941999
listViewData.preFilter,
19952000
listViewData.fields,
2001+
listViewData.hiddenFields,
19962002
false, {
19972003
page: $listView.data('page'),
19982004
filterBy: {
@@ -2048,6 +2054,7 @@
20482054
listViewData.dataProvider,
20492055
listViewData.preFilter,
20502056
listViewData.fields,
2057+
listViewData.hiddenFields,
20512058
false, {
20522059
page: $listView.data('page'),
20532060
filterBy: {
@@ -2100,6 +2107,7 @@
21002107
listViewData.dataProvider,
21012108
listViewData.preFilter,
21022109
listViewData.fields,
2110+
listViewData.hiddenFields,
21032111
false, {
21042112
page: $listView.data('page'),
21052113
filterBy: {
@@ -2207,7 +2215,8 @@
22072215
$table,
22082216
listViewData.dataProvider,
22092217
listViewData.preFilter,
2210-
listViewData.fields, true, {
2218+
listViewData.fields,
2219+
listViewData.hiddenFields, true, {
22112220
context: context,
22122221
page: $listView.data('page'),
22132222
filterBy: filterBy
@@ -2390,6 +2399,7 @@
23902399
var $tr = addTableRows(
23912400
targetArgs.preFilter,
23922401
targetArgs.fields,
2402+
targetArgs.hiddenFields,
23932403
data,
23942404
listView.find('table tbody'),
23952405
targetArgs.actions, {
@@ -2425,6 +2435,7 @@
24252435
$newRow = addTableRows(
24262436
targetArgs.preFilter,
24272437
targetArgs.fields,
2438+
targetArgs.hiddenFields,
24282439
data,
24292440
$listView.find('table tbody'),
24302441
targetArgs.actions, {
@@ -2500,6 +2511,7 @@
25002511
listViewArgs.dataProvider,
25012512
listViewArgs.preFilter,
25022513
listViewArgs.fields,
2514+
listViewArgs.hiddenFields,
25032515
false,
25042516
null,
25052517
listViewArgs.actions, {

0 commit comments

Comments
 (0)