]>
Commit | Line | Data |
---|---|---|
b0ee976f DM |
1 | Ext.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 | ||
20 | Ext.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 | }); |