]> git.proxmox.com Git - pmg-gui.git/blame - js/ClamAVDatabase.js
add regex Tester to regular expression editor
[pmg-gui.git] / js / ClamAVDatabase.js
CommitLineData
e50f4acb 1Ext.define('PMG.ClamAVDatabaseConfig', {
41c05692 2 extend: 'Proxmox.grid.ObjectGrid',
e50f4acb 3 alias: ['widget.pmgClamAVDatabaseConfig'],
41c05692 4
5e453db7
DM
5 monStoreErrors: true,
6
41c05692
DM
7 initComponent : function() {
8 var me = this;
9
10 me.add_text_row('dbmirror', gettext('Database Mirror'),
11 { deleteEmpty: true, defaultValue: 'database.clamav.net' });
41c05692 12
13fe6e87
DM
13 me.add_boolean_row('safebrowsing', gettext('Google Safe Browsing'),
14 { defaultValue: 1 });
15
e50f4acb 16 var baseurl = '/config/clamav';
41c05692
DM
17
18 Ext.apply(me, {
41c05692
DM
19 url: '/api2/json' + baseurl,
20 editorConfig: {
21 url: '/api2/extjs' + baseurl,
22 },
23 interval: 5000,
24 cwidth1: 200,
25 listeners: {
26 itemdblclick: me.run_editor
27 }
28 });
29
30 me.callParent();
31
41ab9005 32 me.on('activate', me.rstore.startUpdate);
41c05692 33 me.on('destroy', me.rstore.stopUpdate);
00564597 34 me.on('deactivate', me.rstore.stopUpdate);
41c05692
DM
35 }
36});
13fe6e87
DM
37
38Ext.define('pmg-clamav-database', {
e50f4acb
DM
39 extend: 'Ext.data.Model',
40 fields: [ 'name', 'type', 'build_time', 'version',
41 { name: 'nsigs', type: 'integer' }],
42 idProperty: 'name'
43});
44
45Ext.define('PMG.ClamAVDatabaseStatus', {
46 extend: 'Ext.grid.GridPanel',
47 alias: ['widget.pmgClamAVDatabaseStatus'],
48
49 title: gettext('Status'),
50
51 reload: function() {
52 var me = this;
53
54 me.store.load();
55 },
56
57 initComponent : function() {
58 var me = this;
59
60 me.store = new Ext.data.Store({
13fe6e87 61 model: 'pmg-clamav-database',
e50f4acb
DM
62 proxy: {
63 type: 'proxmox',
13fe6e87 64 url: "/api2/json/nodes/" + Proxmox.NodeName + "/clamav/database"
e50f4acb
DM
65 },
66 sorters: {
67 property: 'name',
68 order: 'DESC'
69 }
70 });
71
e50f4acb
DM
72 Ext.apply(me, {
73 viewConfig: {
74 trackOver: false
75 },
76 columns: [
77 {
78 header: gettext('Name'),
79 sortable: true,
80 flex: 1,
81 dataIndex: 'name'
82 },
83 {
84 header: gettext('Build time'),
85 sortable: true,
86 flex: 2,
87 dataIndex: 'build_time'
88 },
89 {
90 header: gettext('Version'),
91 flex: 1,
92 sortable: true,
93 dataIndex: 'version'
94 },
95 {
96 header: gettext('Signatures'),
97 flex: 1,
98 sortable: true,
99 dataIndex: 'nsigs'
100 },
fdebab3d
DC
101 ],
102 listeners: {
103 activate: me.reload
104 }
e50f4acb 105 });
fdebab3d 106
e50f4acb
DM
107 me.callParent();
108
decc6090 109 Proxmox.Utils.monStoreErrors(me.getView(), me.store, true);
e50f4acb
DM
110 }
111});
112
113Ext.define('PMG.ClamAVDatabase', {
114 extend: 'Ext.panel.Panel',
115 alias: ['widget.pmgClamAVDatabase'],
116
117 layout: { type: 'vbox', align: 'stretch' },
118
119 initComponent : function() {
120 var me = this;
121
122 var selModel = Ext.create('Ext.selection.RowModel', {});
123 var editPanel = Ext.create('PMG.ClamAVDatabaseConfig', {
124 border: false,
125 xtype: 'pmgClamAVDatabaseConfig',
126 selModel: selModel
127 });
128
13fe6e87 129 var statusPanel = Ext.create('PMG.ClamAVDatabaseStatus', {
decc6090
DC
130 border: false,
131 flex: 1
13fe6e87
DM
132 });
133
134 var update_command = function(){
135 Proxmox.Utils.API2Request({
136 url: '/nodes/' + Proxmox.NodeName + '/clamav/database',
137 method: 'POST',
138 failure: function(response, opts) {
139 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
140 },
141 success: function(response, opts) {
142 var upid = response.result.data;
143
144 var win = Ext.create('Proxmox.window.TaskViewer', {
145 upid: upid
146 });
147 win.show();
148 me.mon(win, 'close', function() { statusPanel.reload() });
149 }
150 });
151 };
152
e50f4acb
DM
153 me.tbar = [
154 {
155 text: gettext('Edit'),
156 xtype: 'proxmoxButton',
157 disabled: true,
158 handler: function() { editPanel.run_editor() },
159 selModel: selModel
160 },
161 {
162 text: gettext('Update now'),
13fe6e87 163 handler: update_command
e50f4acb
DM
164 }
165 ];
166
13fe6e87 167 me.items = [ editPanel, statusPanel ];
e50f4acb
DM
168
169 me.callParent();
170
fdebab3d
DC
171 editPanel.relayEvents(me, ['activate']);
172 editPanel.relayEvents(me, ['deactivate']);
173 editPanel.relayEvents(me, ['destroy']);
174 statusPanel.relayEvents(me, ['activate']);
175 statusPanel.relayEvents(me, ['deactivate']);
176 statusPanel.relayEvents(me, ['destroy']);
177
e50f4acb
DM
178 }
179});