mirror of
https://git.proxmox.com/git/pmg-gui
synced 2025-06-01 00:57:55 +00:00
144 lines
2.6 KiB
JavaScript
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();
|
|
}
|
|
});
|