]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/node/Subscription.js
use Proxmox.Utils instead of PVE.Utils
[pve-manager.git] / www / manager6 / node / Subscription.js
CommitLineData
604881d0 1/*global Blob*/
0bef095a
DM
2Ext.define('PVE.node.SubscriptionKeyEdit', {
3 extend: 'PVE.window.Edit',
f2833f5f
DC
4 title: gettext('Upload Subscription Key'),
5 width: 300,
6 items: {
7 xtype: 'textfield',
8 name: 'key',
9 value: '',
10 fieldLabel: gettext('Subscription Key')
11 },
0bef095a
DM
12 initComponent : function() {
13 var me = this;
14
0bef095a
DM
15 me.callParent();
16
17 me.load();
18 }
19});
20
21Ext.define('PVE.node.Subscription', {
22 extend: 'PVE.grid.ObjectGrid',
23
24 alias: ['widget.pveNodeSubscription'],
25
ba93a9c6
DC
26 onlineHelp: 'getting_help',
27
e83795f5
DM
28 viewConfig: {
29 enableTextSelection: true
30 },
0bef095a
DM
31
32 showReport: function() {
33 var me = this;
34 var nodename = me.pveSelNode.data.node;
35
a764c5f7 36 var getReportFileName = function() {
0bef095a
DM
37 var now = Ext.Date.format(new Date(), 'D-d-F-Y-G-i');
38 return me.nodename + '-report-' + now + '.txt';
a764c5f7 39 };
0bef095a
DM
40
41 var view = Ext.createWidget('component', {
42 itemId: 'system-report-view',
f2833f5f 43 scrollable: true,
0bef095a
DM
44 style: {
45 'background-color': 'white',
46 'white-space': 'pre',
47 'font-family': 'monospace',
48 padding: '5px'
49 }
50 });
51
52 var reportWindow = Ext.create('Ext.window.Window', {
53 title: gettext('System Report'),
54 width: 1024,
55 height: 600,
56 layout: 'fit',
57 modal: true,
58 buttons: [
59 '->',
60 {
61 text: gettext('Download'),
62 handler: function() {
68f8c765
DC
63 var fileContent = reportWindow.getComponent('system-report-view').html;
64 var fileName = getReportFileName();
0bef095a
DM
65
66 // Internet Explorer
67 if (window.navigator.msSaveOrOpenBlob) {
68 navigator.msSaveOrOpenBlob(new Blob([fileContent]), fileName);
69 } else {
70 var element = document.createElement('a');
71 element.setAttribute('href', 'data:text/plain;charset=utf-8,'
72 + encodeURIComponent(fileContent));
73 element.setAttribute('download', fileName);
74 element.style.display = 'none';
75 document.body.appendChild(element);
76 element.click();
77 document.body.removeChild(element);
78 }
79 }
22f2f9d6 80 }
0bef095a 81 ],
ec0bd652 82 items: view
0bef095a
DM
83 });
84
e7ade592 85 Proxmox.Utils.API2Request({
0bef095a
DM
86 url: '/api2/extjs/nodes/' + me.nodename + '/report',
87 method: 'GET',
88 waitMsgTarget: me,
89 failure: function(response) {
90 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
91 },
92 success: function(response) {
93 var report = Ext.htmlEncode(response.result.data);
94 reportWindow.show();
95 view.update(report);
96 }
97 });
98 },
99
100 initComponent : function() {
101 var me = this;
102
103 if (!me.nodename) {
104 throw "no node name specified";
105 }
106
107 var reload = function() {
108 me.rstore.load();
109 };
110
111 var baseurl = '/nodes/' + me.nodename + '/subscription';
112
113 var render_status = function(value) {
114
115 var message = me.getObjectValue('message');
116
117 if (message) {
118 return value + ": " + message;
119 }
120 return value;
121 };
122
123 var rows = {
124 productname: {
125 header: gettext('Type')
126 },
127 key: {
128 header: gettext('Subscription Key')
129 },
130 status: {
131 header: gettext('Status'),
132 renderer: render_status
133 },
134 message: {
135 visible: false
136 },
137 serverid: {
138 header: gettext('Server ID')
139 },
140 sockets: {
141 header: gettext('Sockets')
142 },
143 checktime: {
144 header: gettext('Last checked'),
e7ade592 145 renderer: Proxmox.Utils.render_timestamp
0bef095a
DM
146 },
147 nextduedate: {
22f2f9d6 148 header: gettext('Next due date')
0bef095a
DM
149 }
150 };
151
f2833f5f 152 Ext.apply(me, {
0bef095a
DM
153 url: '/api2/json' + baseurl,
154 cwidth1: 170,
155 tbar: [
156 {
157 text: gettext('Upload Subscription Key'),
158 handler: function() {
159 var win = Ext.create('PVE.node.SubscriptionKeyEdit', {
160 url: '/api2/extjs/' + baseurl
161 });
162 win.show();
163 win.on('destroy', reload);
164 }
165 },
166 {
167 text: gettext('Check'),
168 handler: function() {
e7ade592 169 Proxmox.Utils.API2Request({
0bef095a
DM
170 params: { force: 1 },
171 url: baseurl,
172 method: 'POST',
173 waitMsgTarget: me,
174 failure: function(response, opts) {
175 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
176 },
177 callback: reload
178 });
179 }
180 },
181 {
182 text: gettext('System Report'),
183 handler: function() {
e7ade592 184 Proxmox.Utils.checked_command(function (){ me.showReport(); });
0bef095a
DM
185 }
186 }
187 ],
188 rows: rows,
189 listeners: {
55bc7923 190 activate: reload
0bef095a
DM
191 }
192 });
193
194 me.callParent();
195 }
0bef095a 196});