]> git.proxmox.com Git - proxmox-widget-toolkit.git/blame - src/window/PackageVersions.js
add package version window
[proxmox-widget-toolkit.git] / src / window / PackageVersions.js
CommitLineData
1820e77d
TL
1Ext.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: {
48 'background-color': 'white',
49 'white-space': 'pre',
50 'font-family': 'monospace',
51 },
52 },
53 ],
54 listeners: {
55 afterrender: function() {
56 this.loadPackageVersions(); // wait for after render so that we can show a load mask
57 },
58 },
59
60 loadPackageVersions: async function() {
61 let me = this;
62
63 let { result } = await Proxmox.Async.api2({
64 waitMsgTarget: me.down('component[id="pkgversions"]'),
65 method: 'GET',
66 url: me.url,
67 }).catch(Proxmox.Utils.alertResponseFailure); // FIXME: mask window instead?
68
69 let text = '';
70 for (const pkg of result.data) {
71 let version = "not correctly installed";
72 if (pkg.OldVersion && pkg.OldVersion !== 'unknown') {
73 version = pkg.OldVersion;
74 } else if (pkg.CurrentState === 'ConfigFiles') {
75 version = 'residual config';
76 }
77 const name = pkg.Package;
78 if (pkg.ExtraInfo) {
79 text += `${name}: ${version} (${pkg.ExtraInfo})\n`;
80 } else {
81 text += `${name}: ${version}\n`;
82 }
83 }
84 me.getViewModel().set('packageList', Ext.htmlEncode(text));
85 },
86});