]>
git.proxmox.com Git - pmg-gui.git/blob - js/RuleConfiguration.js
1 Ext
.define('pmg-rule-list', {
2 extend
: 'Ext.data.Model',
5 { name
: 'active', type
: 'boolean' },
6 { name
: 'direction', type
: 'integer' },
7 { name
: 'priority', type
: 'integer' },
12 Ext
.define('PMG.RulesConfiguration', {
13 extend
: 'Ext.container.Container',
14 xtype
: 'pmgRuleConfiguration',
23 xclass
: 'Ext.app.ViewController',
25 selectedRuleChange: function(grid
, selected
, eOpts
) {
27 let infoPanel
= me
.lookupReference('infopanel');
30 if (selected
.length
> 0) {
31 baseurl
= `/config/ruledb/rules/${selected[0].data.id}`;
34 infoPanel
.getController().setBaseUrl(baseurl
);
37 editIconClick: function(gridView
, rowindex
, colindex
, column
, e
, record
) {
39 me
.showEditWindow(gridView
, record
);
42 showEditWindow: function(gridView
, record
) {
44 let win
= Ext
.create('PMG.RuleEditor', {
45 url
: `/api2/extjs/config/ruledb/rules/${record.data.id}/config`,
48 gridView
.getStore().load();
56 toggleIconClick: function(gridView
, rowindex
, colindex
, column
, e
, record
) {
58 Proxmox
.Utils
.API2Request({
59 url
: `/config/ruledb/rules/${record.data.id}/config`,
61 active
: record
.data
.active
? 0 : 1,
64 callback: function() {
65 gridView
.getStore().load();
67 failure: function(response
, opts
) {
68 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
75 me
.lookupReference('rulegrid').getStore().load();
80 let win
= Ext
.create('PMG.RuleEditor', {
81 url
: '/api2/extjs/config/ruledb/rules/',
86 me
.lookupReference('rulegrid').getStore().load();
94 onFactoryDefaults: function() {
99 gettext('Reset rule database to factory defaults?'),
101 if (button
!== 'yes') {
104 Proxmox
.Utils
.API2Request({
105 url
: '/config/ruledb',
107 waitMsgTarget
: me
.getView(),
108 callback: function() {
111 failure: function(response
, opts
) {
112 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
119 init: function(view
) {
120 let grid
= this.lookupReference('rulegrid');
121 Proxmox
.Utils
.monStoreErrors(grid
, grid
.getStore(), true);
125 'grid[reference=rulegrid]': {
126 itemdblclick
: 'showEditWindow',
127 selectionchange
: 'selectedRuleChange',
129 'button[reference=addButton]': {
137 selectedRule
: undefined,
138 baseUrl
: '/config/ruledb/rules',
147 reference
: 'rulegrid',
151 selection
: '{selectedRule}',
160 text
: gettext('Add'),
161 iconCls
: 'fa fa-plus-circle',
162 reference
: 'addButton',
165 xtype
: 'proxmoxStdRemoveButton',
166 text
: gettext('Remove'),
167 iconCls
: 'fa fa-minus-circle',
168 reference
: 'removeButton',
170 getRecordName: function(rec
) { return rec
.data
.name
; },
172 baseurl
: '{baseUrl}',
177 text
: gettext('Factory Defaults'),
178 handler
: 'onFactoryDefaults',
184 getRowClass: function(record
, rowIndex
) {
185 return record
.get('active') ? 'enabled' : 'disabled';
191 model
: 'pmg-rule-list',
192 reference
: 'rulesStore',
195 url
: '/api2/json/config/ruledb/rules',
199 property
: 'priority',
208 sortableColumns
: false,
222 dataIndex
: 'priority',
226 dataIndex
: 'direction',
227 renderer
: PMG
.Utils
.format_rule_direction
,
231 xtype
: 'actioncolumn',
236 iconCls
: 'fa fa-fw fa-pencil',
238 handler
: 'editIconClick',
241 getClass: function(val
, meta
, rec
) {
242 return 'fa fa-fw fa-' + (rec
.get('active') ? 'toggle-on' : 'toggle-off');
244 getTip: function(val
, meta
, rec
) {
245 return rec
.get('active') ? 'Deactivate' : 'Activate';
247 handler
: 'toggleIconClick',
255 reference
: 'infopanel',
256 xtype
: 'pmgRuleInfo',