]>
git.proxmox.com Git - proxmox-widget-toolkit.git/blob - node/APT.js
1 Ext
.define('apt-pkglist', {
2 extend
: 'Ext.data.Model',
3 fields
: ['Package', 'Title', 'Description', 'Section', 'Arch',
4 'Priority', 'Version', 'OldVersion', 'ChangeLogUrl', 'Origin'],
8 Ext
.define('Proxmox.node.APT', {
9 extend
: 'Ext.grid.GridPanel',
11 xtype
: 'proxmoxNodeAPT',
13 upgradeBtn
: undefined,
17 header
: gettext('Package'),
23 text
: gettext('Version'),
26 header
: gettext('current'),
29 dataIndex
: 'OldVersion',
32 header
: gettext('new'),
40 header
: gettext('Description'),
47 initComponent: function() {
51 throw "no node name specified";
54 let store
= Ext
.create('Ext.data.Store', {
59 url
: "/api2/json/nodes/" + me
.nodename
+ "/apt/update",
69 let groupingFeature
= Ext
.create('Ext.grid.feature.Grouping', {
70 groupHeaderTpl
: '{[ "Origin: " + values.name ]} ({rows.length} Item{[values.rows.length > 1 ? "s" : ""]})',
71 enableGroupingMenu
: false,
74 let rowBodyFeature
= Ext
.create('Ext.grid.feature.RowBody', {
75 getAdditionalData: function(data
, rowIndex
, record
, orig
) {
76 let headerCt
= this.view
.headerCt
;
77 let colspan
= headerCt
.getColumnCount();
79 rowBody
: '<div style="padding: 1em">' +
80 Ext
.String
.htmlEncode(data
.Description
) +
82 rowBodyCls
: me
.full_description
? '' : Ext
.baseCSSPrefix
+ 'grid-row-body-hidden',
83 rowBodyColspan
: colspan
,
88 let reload = function() {
92 Proxmox
.Utils
.monStoreErrors(me
, store
, true);
94 let apt_command = function(cmd
) {
95 Proxmox
.Utils
.API2Request({
96 url
: "/nodes/" + me
.nodename
+ "/apt/" + cmd
,
98 failure: function(response
, opts
) {
99 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
101 success: function(response
, opts
) {
102 let upid
= response
.result
.data
;
104 let win
= Ext
.create('Proxmox.window.TaskViewer', {
108 me
.mon(win
, 'close', reload
);
113 let sm
= Ext
.create('Ext.selection.RowModel', {});
115 let update_btn
= new Ext
.Button({
116 text
: gettext('Refresh'),
117 handler: function() {
118 Proxmox
.Utils
.checked_command(function() { apt_command('update'); });
122 let show_changelog = function(rec
) {
123 if (!rec
|| !rec
.data
|| !(rec
.data
.ChangeLogUrl
&& rec
.data
.Package
)) {
127 let view
= Ext
.createWidget('component', {
130 'background-color': 'white',
131 'white-space': 'pre',
132 'font-family': 'monospace',
137 let win
= Ext
.create('Ext.window.Window', {
138 title
: gettext('Changelog') + ": " + rec
.data
.Package
,
146 Proxmox
.Utils
.API2Request({
148 url
: "/nodes/" + me
.nodename
+ "/apt/changelog",
150 name
: rec
.data
.Package
,
151 version
: rec
.data
.Version
,
154 failure: function(response
, opts
) {
156 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
158 success: function(response
, opts
) {
160 view
.update(Ext
.htmlEncode(response
.result
.data
));
165 let changelog_btn
= new Proxmox
.button
.Button({
166 text
: gettext('Changelog'),
169 enableFn: function(rec
) {
170 if (!rec
|| !rec
.data
|| !(rec
.data
.ChangeLogUrl
&& rec
.data
.Package
)) {
175 handler: function(b
, e
, rec
) {
180 let verbose_desc_checkbox
= new Ext
.form
.field
.Checkbox({
181 boxLabel
: gettext('Show details'),
184 change
: (f
, val
) => {
185 me
.full_description
= val
;
186 me
.getView().refresh();
192 me
.tbar
= [update_btn
, me
.upgradeBtn
, changelog_btn
, '->', verbose_desc_checkbox
];
194 me
.tbar
= [update_btn
, changelog_btn
, '->', verbose_desc_checkbox
];
200 stateId
: 'grid-update',
204 emptyText
: '<div style="display:table; width:100%; height:100%;"><div style="display:table-cell; vertical-align: middle; text-align:center;"><b>' + gettext('No updates available.') + '</div></div>',
206 features
: [groupingFeature
, rowBodyFeature
],
209 itemdblclick: function(v
, rec
) {