Ext.define('pbs-prune-list', { extend: 'Ext.data.Model', fields: [ 'backup-type', 'backup-id', { name: 'backup-time', type: 'date', dateFormat: 'timestamp' }, ] }); Ext.define('PBS.DataStorePruneInputPanel', { extend: 'Proxmox.panel.InputPanel', alias: 'widget.pbsDataStorePruneInputPanel', mixins: ['Proxmox.Mixin.CBind'], onGetValues: function(values) { var me = this; values["backup-type"] = me.backup_type; values["backup-id"] = me.backup_id; return values; }, controller: { xclass: 'Ext.app.ViewController', init: function(view) { if (!view.url) { throw "no url specified"; } if (!view.backup_type) { throw "no backup_type specified"; } if (!view.backup_id) { throw "no backup_id specified"; } this.reload(); // initial load }, reload: function() { var view = this.getView(); let params = view.getValues(); params["dry-run"] = true; Proxmox.Utils.API2Request({ url: view.url, method: "POST", params: params, callback: function() { console.log("DONE"); }, failure: function (response, opts) { Ext.Msg.alert(gettext('Error'), response.htmlStatus); }, success: function(response, options) { var data = response.result.data; console.log(data); view.prune_store.setData(data); } }); }, control: { field: { change: 'reload' } } }, column1: [ { xtype: 'proxmoxintegerfield', name: 'keep-last', allowBlank: true, fieldLabel: gettext('keep-last'), minValue: 1, }, { xtype: 'proxmoxintegerfield', name: 'keep-hourly', allowBlank: true, fieldLabel: gettext('keep-hourly'), minValue: 1, }, { xtype: 'proxmoxintegerfield', name: 'keep-daily', allowBlank: true, fieldLabel: gettext('keep-daily'), minValue: 1, }, { xtype: 'proxmoxintegerfield', name: 'keep-weekly', allowBlank: true, fieldLabel: gettext('keep-weekly'), minValue: 1, }, { xtype: 'proxmoxintegerfield', name: 'keep-monthly', allowBlank: true, fieldLabel: gettext('keep-monthly'), minValue: 1, }, { xtype: 'proxmoxintegerfield', name: 'keep-yearly', allowBlank: true, fieldLabel: gettext('keep-yearly'), minValue: 1, } ], initComponent : function() { var me = this; me.prune_store = Ext.create('Ext.data.Store', { model: 'pbs-prune-list', sorters: { property: 'backup-time', direction: 'DESC' } }); me.column2 = [ { xtype: 'grid', height: 200, store: me.prune_store, columns: [ { header: gettext('Backup Time'), sortable: true, dataIndex: 'backup-time', renderer: function(value, metaData, record) { let text = Ext.Date.format(value, 'Y-m-d H:i:s'); if (record.data.keep) { return text; } else { return '