2020-04-01 14:14:44 +02:00
Ext . define ( 'pbs-prune-list' , {
extend : 'Ext.data.Model' ,
fields : [
'backup-type' ,
'backup-id' ,
{
name : 'backup-time' ,
type : 'date' ,
dateFormat : 'timestamp'
} ,
]
} ) ;
2020-03-26 13:23:28 +01:00
Ext . define ( 'PBS.DataStorePruneInputPanel' , {
extend : 'Proxmox.panel.InputPanel' ,
alias : 'widget.pbsDataStorePruneInputPanel' ,
2020-04-01 14:14:44 +02:00
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' ,
2020-03-26 13:23:28 +01:00
2020-04-01 14:14:44 +02:00
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 ( ) {
2020-05-26 12:50:06 +02:00
return ; // for easy breakpoint setting
2020-04-01 14:14:44 +02:00
} ,
failure : function ( response , opts ) {
Ext . Msg . alert ( gettext ( 'Error' ) , response . htmlStatus ) ;
} ,
success : function ( response , options ) {
var data = response . result . data ;
view . prune _store . setData ( data ) ;
}
} ) ;
} ,
control : {
field : { change : 'reload' }
}
} ,
column1 : [
2020-03-26 13:23:28 +01:00
{
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' ,
2020-03-31 08:42:05 +02:00
name : 'keep-monthly' ,
2020-03-26 13:23:28 +01:00
allowBlank : true ,
fieldLabel : gettext ( 'keep-monthly' ) ,
minValue : 1 ,
} ,
{
xtype : 'proxmoxintegerfield' ,
name : 'keep-yearly' ,
allowBlank : true ,
fieldLabel : gettext ( 'keep-yearly' ) ,
minValue : 1 ,
}
2020-04-01 14:14:44 +02:00
] ,
initComponent : function ( ) {
var me = this ;
2020-03-26 13:23:28 +01:00
2020-04-01 14:14:44 +02:00
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 ( ) ;
}
2020-03-26 13:23:28 +01:00
} ) ;
Ext . define ( 'PBS.DataStorePrune' , {
extend : 'Proxmox.window.Edit' ,
method : 'POST' ,
submitText : "Prune" ,
isCreate : true ,
initComponent : function ( ) {
var me = this ;
if ( ! me . datastore ) {
throw "no datastore specified" ;
}
if ( ! me . backup _type ) {
throw "no backup_type specified" ;
}
if ( ! me . backup _id ) {
throw "no backup_id specified" ;
}
Ext . apply ( me , {
url : '/api2/extjs/admin/datastore/' + me . datastore + "/prune" ,
title : "Prune Datastore '" + me . datastore + "'" ,
items : [ {
xtype : 'pbsDataStorePruneInputPanel' ,
2020-04-01 14:14:44 +02:00
url : '/api2/extjs/admin/datastore/' + me . datastore + "/prune" ,
backup _type : me . backup _type ,
backup _id : me . backup _id
2020-03-26 13:23:28 +01:00
} ]
} ) ;
me . callParent ( ) ;
}
} ) ;