]> git.proxmox.com Git - pmg-gui.git/blame - js/Subscription.js
followup: add separator
[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) {
a10c81d9 110 var message = me.getObjectValue('message');
a10c81d9
DM
111 if (message) {
112 return value + ": " + message;
113 }
114 return value;
115 };
116
117 var rows = {
118 productname: {
119 header: gettext('Type')
120 },
121 key: {
122 header: gettext('Subscription Key')
123 },
124 status: {
125 header: gettext('Status'),
126 renderer: render_status
127 },
128 message: {
129 visible: false
130 },
131 serverid: {
132 header: gettext('Server ID')
133 },
134 sockets: {
135 header: gettext('Sockets')
136 },
137 checktime: {
138 header: gettext('Last checked'),
139 renderer: Proxmox.Utils.render_timestamp
140 },
141 nextduedate: {
142 header: gettext('Next due date')
143 }
144 };
145
146 Ext.apply(me, {
147 url: '/api2/json' + baseurl,
148 cwidth1: 170,
149 tbar: [
150 {
151 text: gettext('Upload Subscription Key'),
152 handler: function() {
153 var win = Ext.create('PMG.SubscriptionKeyEdit', {
154 url: '/api2/extjs/' + baseurl
155 });
156 win.show();
157 win.on('destroy', reload);
158 }
159 },
a5db7653
MA
160 {
161 text: gettext('Remove Subscription'),
162 xtype: 'proxmoxStdRemoveButton',
163 confirmMsg: gettext('Are you sure to remove the subscription key?'),
164 baseurl: baseurl,
165 dangerous: true,
166 selModel: false,
167 callback: reload,
168 },
a10c81d9
DM
169 {
170 text: gettext('Check'),
171 handler: function() {
172 Proxmox.Utils.API2Request({
173 params: { force: 1 },
174 url: baseurl,
175 method: 'POST',
176 waitMsgTarget: me,
177 failure: function(response, opts) {
178 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
179 },
180 callback: reload
181 });
182 }
35241008 183 },
51ef4bbe 184 '-',
35241008
DC
185 {
186 text: gettext('System Report'),
187 handler: function() {
188 Proxmox.Utils.checked_command(function (){ me.showReport(); });
189 }
a10c81d9
DM
190 }
191 ],
192 rows: rows
193 });
194
195 me.callParent();
196
197 reload();
198 }
199});