]>
git.proxmox.com Git - pmg-gui.git/blob - js/RuleInfo.js
2 /*jslint confusion: true*/
3 /* bind is a function function */
4 Ext
.define('PMG.RuleInfo', {
5 extend
: 'Ext.panel.Panel',
9 xclass
: 'Ext.app.ViewController',
11 setBaseUrl: function(baseurl
) {
13 me
.getViewModel().set('baseurl', baseurl
);
19 var viewmodel
= me
.getViewModel();
20 var baseurl
= viewmodel
.get('baseurl');
23 me
.setRuleInfo(undefined);
27 Proxmox
.Utils
.API2Request({
28 url
: baseurl
+ "/config",
30 success: function(response
, opts
) {
31 me
.setRuleInfo(response
.result
.data
);
33 failure: function (response
, opts
) {
34 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
39 removeObjectGroup: function(rec
) {
44 gettext('Are you sure you want to remove entry {0}'),
45 "'" + rec
.data
.name
+ "'"),
47 if (button
=== 'yes') {
48 Proxmox
.Utils
.API2Request({
49 url
: me
.getViewModel().get('baseurl') + '/' + rec
.data
.oclass
+ '/'+ rec
.data
.typeid
,
51 waitMsgTarget
: me
.getView(),
52 callback: function() {
55 failure: function (response
, opts
) {
56 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
64 addObjectGroup: function(type
, record
) {
66 var baseurl
= me
.getViewModel().get('baseurl');
67 var url
= baseurl
+ '/' + type
;
68 var id
= (type
=== 'action')?record
.data
.ogroup
:record
.data
.id
;
69 Proxmox
.Utils
.API2Request({
71 params
: { ogroup
: id
},
73 waitMsgTarget
: me
.getView(),
74 callback: function() {
77 failure: function (response
, opts
) {
78 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
83 setRuleInfo: function(ruledata
) {
86 var viewmodel
= me
.getViewModel();
88 if (ruledata
=== undefined) {
90 viewmodel
.set('selectedRule', null);
91 viewmodel
.get('objects').setData([]);
95 ruledata
.name
= Ext
.String
.htmlEncode(ruledata
.name
);
96 viewmodel
.set('selectedRule', ruledata
);
99 Ext
.Array
.each(['from', 'to', 'when', 'what', 'action'], function(oc
) {
101 var store
= viewmodel
.get(oc
+ 'objects');
102 if (ruledata
[oc
] === undefined || store
=== undefined) { return; }
104 // we build a filter for the objects,
105 // which are already added to the rule,
106 // so what we only show the ones,
107 // which are still available
109 var ids
= Ext
.Array
.pluck(ruledata
[oc
], 'id');
110 // for the actions, we have a different id field
111 var idField
= (oc
=== 'action')?'ogroup':'id';
114 filterFn:function(record
){
116 // actions have the ogroup as a string
118 return (ids
.indexOf(parseInt(record
.data
[idField
], 10)) === -1);
122 Ext
.Array
.each(ruledata
[oc
], function(og
) {
123 data
.push({ oclass
: oc
, name
: og
.name
, typeid
: og
.id
});
127 viewmodel
.get('objects').setData(data
);
131 removeIconClick: function(gridView
, rowindex
, colindex
, button
, event
, record
) {
133 me
.removeObjectGroup(record
);
136 removeDrop: function(gridView
, data
, overModel
) {
138 var record
= data
.records
[0]; // only one
139 me
.removeObjectGroup(record
);
143 addIconClick: function(gridView
, rowindex
, colindex
, button
, event
, record
) {
145 me
.addObjectGroup(gridView
.panel
.type
, record
);
149 addDrop: function(gridView
, data
, overModel
) {
151 var record
= data
.records
[0]; // only one
152 me
.addObjectGroup(data
.view
.panel
.type
, record
);
157 'grid[reference=usedobjects]': {
160 'tabpanel[reference=availobjects] > grid': {
173 fields
: ['oclass', 'name', 'typeid'],
174 groupField
: 'oclass',
179 model
: 'pmg-action-list',
182 url
: "/api2/json/config/ruledb/action/objects"
187 model
: 'pmg-object-group',
190 url
: "/api2/json/config/ruledb/who"
195 model
: 'pmg-object-group',
198 url
: "/api2/json/config/ruledb/who"
203 model
: 'pmg-object-group',
206 url
: "/api2/json/config/ruledb/what"
211 model
: 'pmg-object-group',
214 url
: "/api2/json/config/ruledb/when"
226 bodyPadding
: '5 0 5 0',
238 bodyPadding
: '10 10 10 10',
244 name
: '{selectedRule.name}',
245 priority
: '{selectedRule.priority}',
246 active
: '{selectedRule.active}',
247 direction
: '{selectedRule.direction}',
248 selected
: '{selectedRule}'
252 '<tpl if="selected">',
253 '<b>{name}</b><br><br>',
254 gettext('Priority') + ': {priority}<br>',
255 gettext('Direction') + ': {[PMG.Utils.format_rule_direction(values.direction)]}<br>',
256 gettext('Active') + ': {[Proxmox.Utils.format_boolean(values.active)]}<br>',
258 gettext('Please select a rule.'),
264 reference
: 'usedobjects',
266 emptyText
: gettext('No Objects'),
270 enableGroupingMenu
: false,
273 '{[PMG.Utils.format_oclass(values.name)]}'
277 title
: gettext('Used Objects'),
281 ptype
: 'gridviewdragdrop',
283 dragGroup
: 'usedobjects',
284 dropGroup
: 'unusedobjects',
286 // do not show default grid dragdrop behaviour
290 handleNodeDrop
: Ext
.emptyFn
297 header
: gettext('Type'),
302 header
: gettext('Name'),
308 xtype
: 'actioncolumn',
313 iconCls
: 'fa fa-fw fa-minus-circle',
314 tooltip
: gettext('Remove'),
315 handler
: 'removeIconClick'
323 hidden
: '{!selectedRule}'
328 title
: gettext('Available Objects'),
329 reference
: 'availobjects',
332 hidden
: '{!selectedRule}'
336 emptyText
: gettext('No Objects'),
339 ptype
: 'gridviewdragdrop',
340 dragGroup
: 'unusedobjects',
341 dropGroup
: 'usedobjects',
343 // do not show default grid dragdrop behaviour
347 handleNodeDrop
: Ext
.emptyFn
353 header
: gettext('Name'),
359 xtype
: 'actioncolumn',
364 iconCls
: 'fa fa-fw fa-plus-circle',
365 tooltip
: gettext('Add'),
366 handler
: 'addIconClick'
374 title
: gettext('Action'),
376 store
: '{actionobjects}'
379 iconCls
: 'fa fa-flag'
382 title
: gettext('From'),
383 iconCls
: 'fa fa-user-circle',
386 store
: '{fromobjects}'
390 title
: gettext('To'),
391 iconCls
: 'fa fa-user-circle',
398 title
: gettext('What'),
399 iconCls
: 'fa fa-cube',
402 store
: '{whatobjects}'
406 title
: gettext('When'),
407 iconCls
: 'fa fa-clock-o',
410 store
: '{whenobjects}'