]> git.proxmox.com Git - pmg-gui.git/blame - js/ActionList.js
set correct size/mask for clamav status
[pmg-gui.git] / js / ActionList.js
CommitLineData
2c1d504e 1/*global Proxmox*/
f5de8682
DM
2Ext.define('pmg-action-list', {
3 extend: 'Ext.data.Model',
4 fields: [
5 'id', 'name', 'info', 'descr',
749af060 6 { name: 'otype', type: 'integer' }
f5de8682
DM
7 ],
8 idProperty: 'id'
9});
10
39700611 11Ext.define('PMG.ActionList', {
f5de8682 12 extend: 'Ext.grid.GridPanel',
39700611 13 alias: ['widget.pmgActionList'],
f5de8682 14
acc1fede 15 title: PMG.Utils.oclass_text.action,
f2ca0a1a 16 border: false,
f5de8682
DM
17
18 baseurl: '/config/ruledb/action',
19
20 otype_list: [4005],
21
39700611
DM
22 enableButtons: true,
23
f5de8682
DM
24 initComponent : function() {
25 var me = this;
26
27 me.store = new Ext.data.Store({
28 model: 'pmg-action-list',
29 proxy: {
30 type: 'proxmox',
749af060 31 url: "/api2/json" + me.baseurl + '/objects'
f5de8682
DM
32 },
33 sorters: {
34 property: 'name',
35 order: 'DESC'
36 }
37 });
38
39 me.selModel = Ext.create('Ext.selection.RowModel', {});
40
41 var reload = function() {
42 me.store.load();
43 };
44
45 var run_editor = function() {
46 var rec = me.selModel.getSelection()[0];
47 if (!rec) {
48 return;
49 }
50
51 var editor = PMG.Utils.object_editors[rec.data.otype];
52 if (!editor) {
53 return;
54 }
55
56 var config = Ext.apply({ method: 'PUT' }, editor);
39700611 57
f5de8682
DM
58 config.url = me.baseurl + '/' + editor.subdir + '/' + rec.data.id;
59
60 var win = Ext.createWidget('proxmoxWindowEdit', config);
61
62 win.load();
63 win.on('destroy', reload);
64 win.show();
65 };
66
b357057e 67 var remove_btn = Ext.createWidget('proxmoxStdRemoveButton', {
f5de8682 68 selModel: me.selModel,
b357057e
DM
69 getUrl: function(rec) {
70 return me.baseurl + '/objects/' + rec.data.id;
f5de8682 71 },
b357057e
DM
72 callback: reload,
73 getRecordName: function(rec) { return rec.data.descr; },
74 waitMsgTarget: me
f5de8682
DM
75 });
76
77 var menu_items = [];
78
79 Ext.Array.each(me.otype_list, function(otype) {
80
81 var editor = PMG.Utils.object_editors[otype];
82
83 var config = Ext.apply({ method: 'POST' }, editor);
84
ea07c9aa
DC
85 /*jslint confusion: true*/
86 /*create is a boolean below and a function above*/
87 config.create = true;
88 /*jslint confusion: false*/
f5de8682
DM
89 menu_items.push({
90 text: config.subject,
91 handler: function() {
92 if (me.baseurl == undefined) {
93 return;
94 }
95 config.url = me.baseurl + '/' + editor.subdir;
96 var win = Ext.createWidget('proxmoxWindowEdit', config);
97 win.on('destroy', reload);
98 win.show();
99 }
100 });
101 });
102
103 var tbar = [
104 {
105 text: gettext('Add'),
106 menu: new Ext.menu.Menu({
107 items: menu_items
108 })
109 },
110 {
111 xtype: 'proxmoxButton',
112 text: gettext('Edit'),
113 disabled: true,
114 selModel: me.selModel,
115 handler: run_editor
116 },
117 remove_btn
118 ];
119
2f8fe1a3 120 Proxmox.Utils.monStoreErrors(me, me.store, true);
f5de8682 121
39700611
DM
122 if (me.enableButtons) {
123 me.tbar = tbar;
124 }
125
f5de8682 126 Ext.apply(me, {
f5de8682
DM
127 columns: [
128 {
129 header: gettext('Name'),
130 sortable: true,
131 width: 200,
132 dataIndex: 'name',
133 renderer: Ext.String.htmlEncode
134 },
135 {
136 header: gettext('Description'),
137 sortable: true,
138 width: 300,
139 dataIndex: 'descr',
140 renderer: Ext.String.htmlEncode
141 },
142 {
143 header: gettext('Comment'),
144 sortable: false,
145 flex: 1,
146 dataIndex: 'info',
147 renderer: Ext.String.htmlEncode
749af060 148 }
f5de8682
DM
149 ],
150 listeners: {
39700611
DM
151 itemdblclick: function() {
152 if (me.enableButtons) {
153 run_editor();
154 }
155 },
f5de8682
DM
156 activate: reload
157 }
158 });
159
160 me.callParent();
161
162 reload(); // initial load
163 }
164});