]>
Commit | Line | Data |
---|---|---|
1820e77d TL |
1 | Ext.define('Proxmox.window.PackageVersions', { |
2 | extend: 'Ext.window.Window', | |
3 | alias: 'widget.proxmoxPackageVersions', | |
4 | ||
5 | title: gettext('Package versions'), | |
6 | width: 600, | |
7 | height: 650, | |
8 | layout: 'fit', | |
9 | modal: true, | |
10 | ||
11 | url: `/nodes/localhost/apt/versions`, | |
12 | ||
13 | viewModel: { | |
14 | parent: null, | |
15 | data: { | |
16 | packageList: '', | |
17 | }, | |
18 | }, | |
19 | buttons: [ | |
20 | { | |
21 | xtype: 'button', | |
22 | text: gettext('Copy'), | |
23 | iconCls: 'fa fa-clipboard', | |
24 | handler: function(button) { | |
25 | window.getSelection().selectAllChildren( | |
26 | document.getElementById('pkgversions'), | |
27 | ); | |
28 | document.execCommand("copy"); | |
29 | }, | |
30 | }, | |
31 | { | |
32 | text: gettext('Ok'), | |
33 | handler: function() { | |
34 | this.up('window').close(); | |
35 | }, | |
36 | }, | |
37 | ], | |
38 | items: [ | |
39 | { | |
40 | xtype: 'component', | |
41 | autoScroll: true, | |
42 | id: 'pkgversions', | |
43 | padding: 5, | |
44 | bind: { | |
45 | html: '{packageList}', | |
46 | }, | |
47 | style: { | |
1820e77d TL |
48 | 'white-space': 'pre', |
49 | 'font-family': 'monospace', | |
50 | }, | |
51 | }, | |
52 | ], | |
53 | listeners: { | |
54 | afterrender: function() { | |
55 | this.loadPackageVersions(); // wait for after render so that we can show a load mask | |
56 | }, | |
57 | }, | |
58 | ||
59 | loadPackageVersions: async function() { | |
60 | let me = this; | |
61 | ||
62 | let { result } = await Proxmox.Async.api2({ | |
63 | waitMsgTarget: me.down('component[id="pkgversions"]'), | |
64 | method: 'GET', | |
65 | url: me.url, | |
66 | }).catch(Proxmox.Utils.alertResponseFailure); // FIXME: mask window instead? | |
67 | ||
68 | let text = ''; | |
69 | for (const pkg of result.data) { | |
70 | let version = "not correctly installed"; | |
71 | if (pkg.OldVersion && pkg.OldVersion !== 'unknown') { | |
72 | version = pkg.OldVersion; | |
73 | } else if (pkg.CurrentState === 'ConfigFiles') { | |
74 | version = 'residual config'; | |
75 | } | |
76 | const name = pkg.Package; | |
77 | if (pkg.ExtraInfo) { | |
78 | text += `${name}: ${version} (${pkg.ExtraInfo})\n`; | |
79 | } else { | |
80 | text += `${name}: ${version}\n`; | |
81 | } | |
82 | } | |
83 | me.getViewModel().set('packageList', Ext.htmlEncode(text)); | |
84 | }, | |
85 | }); |