]> git.proxmox.com Git - pmg-gui.git/blame - js/Subscription.js
d/control: bump versioned to proxmox-widget-toolkit
[pmg-gui.git] / js / Subscription.js
CommitLineData
ff735274 1/*global Blob,Proxmox*/
a10c81d9
DM
2Ext.define('PMG.SubscriptionKeyEdit', {
3 extend: 'Proxmox.window.Edit',
4
5 title: gettext('Upload Subscription Key'),
6 width: 300,
7 autoLoad: true,
8
54fd9bd8
DM
9 onlineHelp: 'getting_help',
10
a10c81d9
DM
11 items: {
12 xtype: 'textfield',
13 name: 'key',
14 value: '',
15 fieldLabel: gettext('Subscription Key')
16 }
17});
18
19Ext.define('PMG.Subscription', {
20 extend: 'Proxmox.grid.ObjectGrid',
21 xtype: 'pmgSubscription',
22
ad02dfe7
DC
23 title: gettext('Subscription'),
24
a151c079
DC
25 border: false,
26
28580cc2 27 onlineHelp: 'getting_help',
a10c81d9 28
562d589c
DM
29 viewConfig: {
30 enableTextSelection: true
31 },
a10c81d9 32
35241008
DC
33 showReport: function() {
34 var me = this;
35
36 var getReportFileName = function() {
37 var now = Ext.Date.format(new Date(), 'D-d-F-Y-G-i');
38 return Proxmox.NodeName + '-report-' + now + '.txt';
39 };
40
41 var view = Ext.createWidget('component', {
42 itemId: 'system-report-view',
43 scrollable: true,
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() {
5101a9f8 63 var fileContent = Ext.String.htmlDecode(reportWindow.getComponent('system-report-view').html);
35241008
DC
64 var fileName = getReportFileName();
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 }
80 }
81 ],
82 items: view
83 });
84
85 Proxmox.Utils.API2Request({
86 url: '/api2/extjs/nodes/' + Proxmox.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
a10c81d9
DM
100 initComponent : function() {
101 var me = this;
102
103 var reload = function() {
104 me.rstore.load();
105 };
106
107 var baseurl = '/nodes/' + Proxmox.NodeName + '/subscription';
108
109 var render_status = function(value) {
110
111 var message = me.getObjectValue('message');
112
113 if (message) {
114 return value + ": " + message;
115 }
116 return value;
117 };
118
119 var rows = {
120 productname: {
121 header: gettext('Type')
122 },
123 key: {
124 header: gettext('Subscription Key')
125 },
126 status: {
127 header: gettext('Status'),
128 renderer: render_status
129 },
130 message: {
131 visible: false
132 },
133 serverid: {
134 header: gettext('Server ID')
135 },
136 sockets: {
137 header: gettext('Sockets')
138 },
139 checktime: {
140 header: gettext('Last checked'),
141 renderer: Proxmox.Utils.render_timestamp
142 },
143 nextduedate: {
144 header: gettext('Next due date')
145 }
146 };
147
148 Ext.apply(me, {
149 url: '/api2/json' + baseurl,
150 cwidth1: 170,
151 tbar: [
152 {
153 text: gettext('Upload Subscription Key'),
154 handler: function() {
155 var win = Ext.create('PMG.SubscriptionKeyEdit', {
156 url: '/api2/extjs/' + baseurl
157 });
158 win.show();
159 win.on('destroy', reload);
160 }
161 },
162 {
163 text: gettext('Check'),
164 handler: function() {
165 Proxmox.Utils.API2Request({
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 },
173 callback: reload
174 });
175 }
35241008
DC
176 },
177 {
178 text: gettext('System Report'),
179 handler: function() {
180 Proxmox.Utils.checked_command(function (){ me.showReport(); });
181 }
a10c81d9
DM
182 }
183 ],
184 rows: rows
185 });
186
187 me.callParent();
188
189 reload();
190 }
191});