]> git.proxmox.com Git - proxmox-backup.git/blame - www/Subscription.js
update to rrd-api-types 1.0.2
[proxmox-backup.git] / www / Subscription.js
CommitLineData
b0ee976f
DM
1Ext.define('PBS.SubscriptionKeyEdit', {
2 extend: 'Proxmox.window.Edit',
2e75b6d8 3
b0ee976f 4 title: gettext('Upload Subscription Key'),
c3a1b34e 5 width: 320,
b0ee976f
DM
6 autoLoad: true,
7
bb26843c 8 onlineHelp: 'get_help',
b0ee976f
DM
9
10 items: {
9d66b5b5
SS
11 xtype: 'proxmoxtextfield',
12 trimValue: true,
c3a1b34e 13 labelWidth: 120,
b0ee976f
DM
14 name: 'key',
15 value: '',
6ab77df3
TL
16 fieldLabel: gettext('Subscription Key'),
17 },
b0ee976f
DM
18});
19
20Ext.define('PBS.Subscription', {
21 extend: 'Proxmox.grid.ObjectGrid',
22 xtype: 'pbsSubscription',
23
24 title: gettext('Subscription'),
63bd6a9f 25 border: true,
b0ee976f 26
bb26843c 27 onlineHelp: 'get_help',
f4f9a503 28 tools: [PBS.Utils.get_help_tool("get_help")],
b0ee976f
DM
29
30 viewConfig: {
6ab77df3 31 enableTextSelection: true,
b0ee976f
DM
32 },
33
46dce62b
HL
34 showReport: function() {
35 var me = this;
36
37 var getReportFileName = function() {
38 var now = Ext.Date.format(new Date(), 'D-d-F-Y-G-i');
39 return `${me.nodename}-pbs-report-${now}.txt`;
40 };
41
42 var view = Ext.createWidget('component', {
43 itemId: 'system-report-view',
44 scrollable: true,
45 style: {
46dce62b
HL
46 'white-space': 'pre',
47 'font-family': 'monospace',
48 padding: '5px',
49 },
50 });
51
fe5b6a05
TL
52 let reportWindow;
53 reportWindow = Ext.create('Ext.window.Window', {
46dce62b
HL
54 title: gettext('System Report'),
55 width: 1024,
56 height: 600,
57 layout: 'fit',
58 modal: true,
59 buttons: [
60 '->',
61 {
62 text: gettext('Download'),
63 handler: function() {
ad531be5
TL
64 let fileContent = Ext.htmlDecode(reportWindow.getComponent('system-report-view').html);
65 let fileName = getReportFileName();
66
67 let dataUrl = `data:text/plain;charset=utf-8,${encodeURIComponent(fileContent)}`;
68
69 Proxmox.Utils.downloadAsFile(dataUrl, fileName);
46dce62b
HL
70 },
71 },
72 ],
73 items: view,
74 });
75
76 Proxmox.Utils.API2Request({
77 url: '/api2/extjs/nodes/' + me.nodename + '/report',
78 method: 'GET',
79 waitMsgTarget: me,
46dce62b
HL
80 success: function(response) {
81 var report = Ext.htmlEncode(response.result.data);
82 reportWindow.show();
83 view.update(report);
84 },
85 });
86 },
87
6ab77df3 88 initComponent: function() {
d28e6886 89 let me = this;
b0ee976f 90
d28e6886
TL
91 let reload = () => me.rstore.load();
92 let baseurl = '/nodes/localhost/subscription';
b0ee976f 93
d28e6886 94 let rows = {
b0ee976f 95 productname: {
6ab77df3 96 header: gettext('Type'),
b0ee976f
DM
97 },
98 key: {
6ab77df3 99 header: gettext('Subscription Key'),
b0ee976f
DM
100 },
101 status: {
102 header: gettext('Status'),
d28e6886
TL
103 renderer: (value) => {
104 value = Ext.String.capitalize(value);
105 let message = me.getObjectValue('message');
106 if (message) {
107 return value + ": " + message;
108 }
109 return value;
110 },
b0ee976f
DM
111 },
112 message: {
6ab77df3 113 visible: false,
b0ee976f
DM
114 },
115 serverid: {
6ab77df3 116 header: gettext('Server ID'),
b0ee976f 117 },
b0ee976f
DM
118 checktime: {
119 header: gettext('Last checked'),
6ab77df3 120 renderer: Proxmox.Utils.render_timestamp,
b0ee976f
DM
121 },
122 nextduedate: {
6ab77df3
TL
123 header: gettext('Next due date'),
124 },
480f1552
FG
125 signature: {
126 header: gettext('Signed/Offline'),
127 renderer: (value) => {
128 if (value) {
129 return gettext('Yes');
130 } else {
131 return gettext('No');
132 }
133 },
134 },
b0ee976f
DM
135 };
136
137 Ext.apply(me, {
d28e6886 138 url: `/api2/json${baseurl}`,
b0ee976f 139 cwidth1: 170,
2e75b6d8 140 tbar: [
b0ee976f
DM
141 {
142 text: gettext('Upload Subscription Key'),
c3a1b34e 143 iconCls: 'fa fa-ticket',
b0ee976f 144 handler: function() {
fe5b6a05 145 Ext.create('PBS.SubscriptionKeyEdit', {
6ab77df3 146 url: '/api2/extjs/' + baseurl,
c3a1b34e 147 autoShow: true,
214e187d 148 listeners: {
fe5b6a05
TL
149 destroy: () => reload(),
150 },
b0ee976f 151 });
6ab77df3 152 },
b0ee976f
DM
153 },
154 {
155 text: gettext('Check'),
c3a1b34e 156 iconCls: 'fa fa-check-square-o',
b0ee976f
DM
157 handler: function() {
158 Proxmox.Utils.API2Request({
159 params: { force: 1 },
160 url: baseurl,
161 method: 'POST',
162 waitMsgTarget: me,
6ab77df3 163 callback: reload,
b0ee976f 164 });
6ab77df3
TL
165 },
166 },
d3444c08
TL
167 {
168 text: gettext('Remove Subscription'),
169 xtype: 'proxmoxStdRemoveButton',
170 confirmMsg: gettext('Are you sure you want to remove the subscription key?'),
171 baseurl: baseurl,
172 dangerous: true,
173 selModel: false,
174 callback: reload,
c3a1b34e 175 iconCls: 'fa fa-trash-o',
d3444c08 176 },
46dce62b
HL
177 '-',
178 {
179 text: gettext('System Report'),
c3a1b34e 180 iconCls: 'fa fa-stethoscope',
46dce62b
HL
181 handler: function() {
182 Proxmox.Utils.checked_command(function() { me.showReport(); });
183 },
184 },
b0ee976f 185 ],
6ab77df3 186 rows: rows,
b0ee976f
DM
187 });
188
189 me.callParent();
190
191 reload();
6ab77df3 192 },
b0ee976f 193});