]> git.proxmox.com Git - proxmox-backup.git/blob - www/Subscription.js
api2/tape/restore: return backup manifest in try_restore_snapshot_archive
[proxmox-backup.git] / www / Subscription.js
1 Ext.define('PBS.SubscriptionKeyEdit', {
2 extend: 'Proxmox.window.Edit',
3
4 title: gettext('Upload Subscription Key'),
5 width: 320,
6 autoLoad: true,
7
8 onlineHelp: 'get_help',
9
10 items: {
11 xtype: 'textfield',
12 labelWidth: 120,
13 name: 'key',
14 value: '',
15 fieldLabel: gettext('Subscription Key'),
16 },
17 });
18
19 Ext.define('PBS.Subscription', {
20 extend: 'Proxmox.grid.ObjectGrid',
21 xtype: 'pbsSubscription',
22
23 title: gettext('Subscription'),
24 border: true,
25
26 onlineHelp: 'get_help',
27 tools: [PBS.Utils.get_help_tool("get_help")],
28
29 viewConfig: {
30 enableTextSelection: true,
31 },
32
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 `${me.nodename}-pbs-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() {
63 var fileContent = Ext.String.htmlDecode(reportWindow.getComponent('system-report-view').html);
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/' + 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 let me = this;
102
103 let reload = () => me.rstore.load();
104 let baseurl = '/nodes/localhost/subscription';
105
106 let rows = {
107 productname: {
108 header: gettext('Type'),
109 },
110 key: {
111 header: gettext('Subscription Key'),
112 },
113 status: {
114 header: gettext('Status'),
115 renderer: (value) => {
116 value = Ext.String.capitalize(value);
117 let message = me.getObjectValue('message');
118 if (message) {
119 return value + ": " + message;
120 }
121 return value;
122 },
123 },
124 message: {
125 visible: false,
126 },
127 serverid: {
128 header: gettext('Server ID'),
129 },
130 checktime: {
131 header: gettext('Last checked'),
132 renderer: Proxmox.Utils.render_timestamp,
133 },
134 nextduedate: {
135 header: gettext('Next due date'),
136 },
137 };
138
139 Ext.apply(me, {
140 url: `/api2/json${baseurl}`,
141 cwidth1: 170,
142 tbar: [
143 {
144 text: gettext('Upload Subscription Key'),
145 iconCls: 'fa fa-ticket',
146 handler: function() {
147 let win = Ext.create('PBS.SubscriptionKeyEdit', {
148 url: '/api2/extjs/' + baseurl,
149 autoShow: true,
150 });
151 win.on('destroy', reload);
152 },
153 },
154 {
155 text: gettext('Check'),
156 iconCls: 'fa fa-check-square-o',
157 handler: function() {
158 Proxmox.Utils.API2Request({
159 params: { force: 1 },
160 url: baseurl,
161 method: 'POST',
162 waitMsgTarget: me,
163 failure: function(response, opts) {
164 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
165 },
166 callback: reload,
167 });
168 },
169 },
170 {
171 text: gettext('Remove Subscription'),
172 xtype: 'proxmoxStdRemoveButton',
173 confirmMsg: gettext('Are you sure you want to remove the subscription key?'),
174 baseurl: baseurl,
175 dangerous: true,
176 selModel: false,
177 callback: reload,
178 iconCls: 'fa fa-trash-o',
179 },
180 '-',
181 {
182 text: gettext('System Report'),
183 iconCls: 'fa fa-stethoscope',
184 handler: function() {
185 Proxmox.Utils.checked_command(function() { me.showReport(); });
186 },
187 },
188 ],
189 rows: rows,
190 });
191
192 me.callParent();
193
194 reload();
195 },
196 });