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