pmg-gui/js/RuleConfiguration.js
2017-03-03 16:06:41 +01:00

144 lines
2.6 KiB
JavaScript

Ext.define('PMG.RuleConfiguration', {
extend: 'Ext.tree.Panel',
alias: 'widget.pmgRuleConfiguration',
title: gettext('Configuration') + ': ' +
gettext('Rules'),
rootVisible: false,
baseurl: '/config/ruledb/rules',
useArrows: true,
rowLines: true,
reload: function() {
var me = this;
Proxmox.Utils.API2Request({
url: me.baseurl,
method: 'GET',
waitMsgTarget: me,
success: function(response) {
var data = response.result.data;
var rulelist = [];
var root = {
expanded: true,
children: rulelist
};
Ext.Array.each(data, function(rule) {
var entry = {
text: rule.name,
priority: rule.priority,
active: rule.active,
direction: rule.direction,
children: [],
expanded: false,
leaf: true
};
var add_group = function(group, group_name) {
var tmp = [];
entry.leaf = false;
entry.children.push({
text: group_name,
expanded: true,
leaf: false,
children: tmp
});
Ext.Array.each(group, function(obj) {
tmp.push({
leaf: true,
text: obj.name,
info: obj.info
});
});
};
if (rule.from) {
add_group(rule.from, gettext('From'));
}
if (rule.to) {
add_group(rule.to, gettext('To'));
}
if (rule.what) {
add_group(rule.what, gettext('What'));
}
if (rule.when) {
add_group(rule.when, gettext('When'));
}
if (rule.action) {
add_group(rule.action, gettext('Action'));
}
rulelist.push(entry);
});
me.store.setRoot(root);
},
failure: function (response, opts) {
me.store.setRoot({});
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
});
},
initComponent : function() {
var me = this;
me.store = Ext.create('Ext.data.TreeStore', {});
me.columns = [
{
xtype: 'treecolumn',
text: gettext('Name'),
width: 300,
sortable: true,
dataIndex: 'text',
locked: true
},
{
text: gettext('Priority'),
width: 80,
dataIndex: 'priority',
sortable: true
},
{
text: gettext('Active'),
width: 80,
dataIndex: 'active',
sortable: true
},
{
text: gettext('Direction'),
width: 80,
dataIndex: 'direction',
renderer: function(value) {
if (value === 0) {
return 'in';
} else if (value === 1) {
return 'out';
} else if (value === 2) {
return 'inout';
} else {
return value; // unknown
}
},
sortable: true
},
{
text: gettext('Description'),
flex: 1,
dataIndex: 'info',
sortable: false
}
];
me.callParent();
me.reload();
}
});