+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',
- items: [
+ 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',
fieldLabel: gettext('keep-yearly'),
minValue: 1,
}
- // fixme: howto handle dry-run?
- //{
- // xtype: 'proxmoxcheckbox',
- // name: 'dry-run',
- // fieldLabel: gettext('dry-run'),
- //}
- ],
+ ],
+
+
+ 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 '<div style="text-decoration: line-through;">'+ text +'</div>';
+ }
+ },
+ flex: 1,
+ },
+ {
+ text: "keep",
+ dataIndex: 'keep'
+ }
+ ]
+ }
+ ];
+
+ me.callParent();
+ }
});
Ext.define('PBS.DataStorePrune', {
title: "Prune Datastore '" + me.datastore + "'",
items: [{
xtype: 'pbsDataStorePruneInputPanel',
- onGetValues: function(values) {
- values["backup-type"] = me.backup_type;
- values["backup-id"] = me.backup_id;
- return values;
- }
+ url: '/api2/extjs/admin/datastore/' + me.datastore + "/prune",
+ backup_type: me.backup_type,
+ backup_id: me.backup_id
}]
});