]> git.proxmox.com Git - pmg-gui.git/blob - js/ActionList.js
add virusfilter
[pmg-gui.git] / js / ActionList.js
1 /*global Proxmox*/
2 Ext.define('pmg-action-list', {
3 extend: 'Ext.data.Model',
4 fields: [
5 'id', 'name', 'info', 'descr',
6 { name: 'otype', type: 'integer' }
7 ],
8 idProperty: 'id'
9 });
10
11 Ext.define('PMG.ActionList', {
12 extend: 'Ext.grid.GridPanel',
13 alias: ['widget.pmgActionList'],
14
15 title: PMG.Utils.oclass_text.action,
16 border: false,
17
18 baseurl: '/config/ruledb/action',
19
20 otype_list: [4005],
21
22 enableButtons: true,
23
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',
31 url: "/api2/json" + me.baseurl + '/objects'
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);
57
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
67 var remove_btn = Ext.createWidget('proxmoxStdRemoveButton', {
68 selModel: me.selModel,
69 getUrl: function(rec) {
70 return me.baseurl + '/objects/' + rec.data.id;
71 },
72 callback: reload,
73 getRecordName: function(rec) { return rec.data.descr; },
74 waitMsgTarget: me
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
85 /*jslint confusion: true*/
86 /*create is a boolean below and a function above*/
87 config.create = true;
88 /*jslint confusion: false*/
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
120 Proxmox.Utils.monStoreErrors(me, me.store, true);
121
122 if (me.enableButtons) {
123 me.tbar = tbar;
124 }
125
126 Ext.apply(me, {
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
148 }
149 ],
150 listeners: {
151 itemdblclick: function() {
152 if (me.enableButtons) {
153 run_editor();
154 }
155 },
156 activate: reload
157 }
158 });
159
160 me.callParent();
161
162 reload(); // initial load
163 }
164 });