2020-11-05 12:12:24 +01:00
Ext . define ( 'PBS.form.RemoteStoreSelector' , {
extend : 'Proxmox.form.ComboGrid' ,
alias : 'widget.pbsRemoteStoreSelector' ,
queryMode : 'local' ,
valueField : 'store' ,
displayField : 'store' ,
notFoundIsValid : true ,
matchFieldWidth : false ,
listConfig : {
loadingText : gettext ( 'Scanning...' ) ,
width : 350 ,
columns : [
{
header : gettext ( 'Datastore' ) ,
sortable : true ,
dataIndex : 'store' ,
renderer : Ext . String . htmlEncode ,
flex : 1 ,
} ,
{
header : gettext ( 'Comment' ) ,
dataIndex : 'comment' ,
renderer : Ext . String . htmlEncode ,
flex : 1 ,
} ,
] ,
} ,
doRawQuery : function ( ) {
// do nothing.
} ,
setRemote : function ( remote ) {
let me = this ;
if ( me . remote === remote ) {
return ;
}
me . remote = remote ;
let store = me . store ;
store . removeAll ( ) ;
if ( me . remote ) {
me . setDisabled ( false ) ;
if ( ! me . firstLoad ) {
me . clearValue ( ) ;
}
store . proxy . url = '/api2/json/config/remote/' + encodeURIComponent ( me . remote ) + '/scan' ;
store . load ( ) ;
me . firstLoad = false ;
} else {
me . setDisabled ( true ) ;
me . clearValue ( ) ;
}
} ,
initComponent : function ( ) {
let me = this ;
me . firstLoad = true ;
let store = Ext . create ( 'Ext.data.Store' , {
fields : [ 'store' , 'comment' ] ,
proxy : {
type : 'proxmox' ,
url : '/api2/json/config/remote/' + encodeURIComponent ( me . remote ) + '/scan' ,
} ,
} ) ;
store . sort ( 'store' , 'ASC' ) ;
Ext . apply ( me , {
store : store ,
} ) ;
me . callParent ( ) ;
} ,
} ) ;
2020-05-29 10:53:41 +02:00
Ext . define ( 'PBS.window.SyncJobEdit' , {
extend : 'Proxmox.window.Edit' ,
alias : 'widget.pbsSyncJobEdit' ,
mixins : [ 'Proxmox.Mixin.CBind' ] ,
userid : undefined ,
2020-09-11 10:35:28 +02:00
onlineHelp : 'syncjobs' ,
2020-05-29 10:53:41 +02:00
isAdd : true ,
subject : gettext ( 'SyncJob' ) ,
fieldDefaults : { labelWidth : 120 } ,
2020-11-04 19:05:46 +01:00
defaultFocus : 'proxmoxtextfield[name=comment]' ,
2020-05-29 10:53:41 +02:00
cbindData : function ( initialConfig ) {
let me = this ;
let baseurl = '/api2/extjs/config/sync' ;
let id = initialConfig . id ;
me . isCreate = ! id ;
me . url = id ? ` ${ baseurl } / ${ id } ` : baseurl ;
me . method = id ? 'PUT' : 'POST' ;
me . autoLoad = ! ! id ;
2020-11-04 19:04:06 +01:00
me . scheduleValue = id ? null : 'hourly' ;
2020-11-06 13:01:57 +01:00
me . authid = id ? null : Proxmox . UserName ;
2020-11-09 16:01:25 +01:00
me . editDatastore = me . datastore === undefined && me . isCreate ;
2020-05-29 10:53:41 +02:00
return { } ;
} ,
items : {
xtype : 'inputpanel' ,
2020-10-28 21:25:30 +01:00
onGetValues : function ( values ) {
let me = this ;
if ( ! values . id && me . up ( 'pbsSyncJobEdit' ) . isCreate ) {
2020-11-11 07:30:52 +01:00
values . id = 's-' + Ext . data . identifier . Uuid . Global . generate ( ) . slice ( 0 , 13 ) ;
2020-10-28 21:25:30 +01:00
}
return values ;
} ,
2020-05-29 10:53:41 +02:00
column1 : [
{
2020-11-09 16:01:25 +01:00
xtype : 'pmxDisplayEditField' ,
2020-10-28 21:25:30 +01:00
fieldLabel : gettext ( 'Local Datastore' ) ,
2020-11-09 16:01:25 +01:00
name : 'store' ,
2020-10-28 21:25:30 +01:00
submitValue : true ,
2020-05-29 10:53:41 +02:00
cbind : {
2020-11-09 16:01:25 +01:00
editable : '{editDatastore}' ,
2020-10-28 21:25:30 +01:00
value : '{datastore}' ,
2020-05-29 10:53:41 +02:00
} ,
2020-11-09 16:01:25 +01:00
editConfig : {
xtype : 'pbsDataStoreSelector' ,
allowBlank : false ,
} ,
2020-05-29 10:53:41 +02:00
} ,
2020-10-30 12:36:41 +01:00
{
2020-11-04 19:04:42 +01:00
fieldLabel : gettext ( 'Local Owner' ) ,
2020-11-06 13:01:57 +01:00
xtype : 'pbsAuthidSelector' ,
2020-10-30 12:36:41 +01:00
name : 'owner' ,
2020-11-04 11:34:14 +01:00
cbind : {
2020-11-06 13:01:57 +01:00
value : '{authid}' ,
2020-11-04 11:34:14 +01:00
deleteEmpty : '{!isCreate}' ,
2020-10-30 12:36:41 +01:00
} ,
} ,
2020-05-29 10:53:41 +02:00
{
fieldLabel : gettext ( 'Remove vanished' ) ,
xtype : 'proxmoxcheckbox' ,
name : 'remove-vanished' ,
2020-11-04 19:07:07 +01:00
autoEl : {
tag : 'div' ,
'data-qtip' : gettext ( 'Remove snapshots from local datastore if they vanished from source datastore?' ) ,
} ,
2020-05-29 10:53:41 +02:00
uncheckedValue : false ,
2020-07-21 18:48:30 +02:00
value : false ,
2020-05-29 10:53:41 +02:00
} ,
2020-11-04 19:05:46 +01:00
] ,
column2 : [
{
fieldLabel : gettext ( 'Source Remote' ) ,
xtype : 'pbsRemoteSelector' ,
allowBlank : false ,
name : 'remote' ,
2020-11-05 12:12:24 +01:00
listeners : {
change : function ( f , value ) {
let me = this ;
let remoteStoreField = me . up ( 'pbsSyncJobEdit' ) . down ( 'field[name=remote-store]' ) ;
remoteStoreField . setRemote ( value ) ;
} ,
} ,
2020-11-04 19:05:46 +01:00
} ,
{
fieldLabel : gettext ( 'Source Datastore' ) ,
2020-11-05 12:12:24 +01:00
xtype : 'pbsRemoteStoreSelector' ,
2020-11-04 19:05:46 +01:00
allowBlank : false ,
2021-05-10 13:22:40 +02:00
autoSelect : false ,
2020-11-04 19:05:46 +01:00
name : 'remote-store' ,
2020-11-05 12:12:24 +01:00
disabled : true ,
2020-11-04 19:05:46 +01:00
} ,
2020-05-29 10:53:41 +02:00
{
2020-11-04 19:05:46 +01:00
fieldLabel : gettext ( 'Sync Schedule' ) ,
2020-07-21 19:32:25 +02:00
xtype : 'pbsCalendarEvent' ,
2020-05-29 10:53:41 +02:00
name : 'schedule' ,
2020-10-28 21:25:30 +01:00
emptyText : gettext ( 'none (disabled)' ) ,
2020-06-23 15:29:57 +02:00
cbind : {
deleteEmpty : '{!isCreate}' ,
2020-11-04 19:04:06 +01:00
value : '{scheduleValue}' ,
2020-06-23 15:29:57 +02:00
} ,
2020-05-29 10:53:41 +02:00
} ,
] ,
columnB : [
{
fieldLabel : gettext ( 'Comment' ) ,
xtype : 'proxmoxtextfield' ,
name : 'comment' ,
2020-06-23 15:29:57 +02:00
cbind : {
deleteEmpty : '{!isCreate}' ,
} ,
2020-05-29 10:53:41 +02:00
} ,
] ,
} ,
} ) ;