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