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