mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-08-08 12:56:48 +00:00
fix #1278 gui: backup: add backup mode pool
Signed-off-by: Tim Marx <t.marx@proxmox.com>
This commit is contained in:
parent
f337626155
commit
ab64886987
@ -31,7 +31,8 @@ Ext.define('PVE.dc.BackupEdit', {
|
|||||||
comboItems: [
|
comboItems: [
|
||||||
['include', gettext('Include selected VMs')],
|
['include', gettext('Include selected VMs')],
|
||||||
['all', gettext('All')],
|
['all', gettext('All')],
|
||||||
['exclude', gettext('Exclude selected VMs')]
|
['exclude', gettext('Exclude selected VMs')],
|
||||||
|
['pool', gettext('Pool')]
|
||||||
],
|
],
|
||||||
fieldLabel: gettext('Selection mode'),
|
fieldLabel: gettext('Selection mode'),
|
||||||
name: 'selMode',
|
name: 'selMode',
|
||||||
@ -111,6 +112,33 @@ Ext.define('PVE.dc.BackupEdit', {
|
|||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var selectPoolMembers = function(poolid) {
|
||||||
|
if (!poolid) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
sm.deselectAll(true);
|
||||||
|
store.filter([
|
||||||
|
{
|
||||||
|
id: 'poolFilter',
|
||||||
|
property: 'pool',
|
||||||
|
value: poolid
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
sm.selectAll(true);
|
||||||
|
};
|
||||||
|
|
||||||
|
var selPool = Ext.create('PVE.form.PoolSelector', {
|
||||||
|
fieldLabel: gettext('Pool'),
|
||||||
|
hidden: true,
|
||||||
|
allowBlank: true,
|
||||||
|
name: 'pool',
|
||||||
|
listeners: {
|
||||||
|
change: function( selpool, newValue, oldValue) {
|
||||||
|
selectPoolMembers(newValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
var nodesel = Ext.create('PVE.form.NodeSelector', {
|
var nodesel = Ext.create('PVE.form.NodeSelector', {
|
||||||
name: 'node',
|
name: 'node',
|
||||||
fieldLabel: gettext('Node'),
|
fieldLabel: gettext('Node'),
|
||||||
@ -129,6 +157,10 @@ Ext.define('PVE.dc.BackupEdit', {
|
|||||||
if (mode === 'all') {
|
if (mode === 'all') {
|
||||||
sm.selectAll(true);
|
sm.selectAll(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mode === 'pool') {
|
||||||
|
selectPoolMembers(selPool.value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -153,7 +185,8 @@ Ext.define('PVE.dc.BackupEdit', {
|
|||||||
value: '00:00',
|
value: '00:00',
|
||||||
allowBlank: false
|
allowBlank: false
|
||||||
},
|
},
|
||||||
selModeField
|
selModeField,
|
||||||
|
selPool
|
||||||
];
|
];
|
||||||
|
|
||||||
var column2 = [
|
var column2 = [
|
||||||
@ -217,13 +250,19 @@ Ext.define('PVE.dc.BackupEdit', {
|
|||||||
values.all = 1;
|
values.all = 1;
|
||||||
values.exclude = values.vmid;
|
values.exclude = values.vmid;
|
||||||
delete values.vmid;
|
delete values.vmid;
|
||||||
|
} else if (selMode === 'pool') {
|
||||||
|
delete values.vmid;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (selMode !== 'pool') {
|
||||||
|
delete values.pool;
|
||||||
}
|
}
|
||||||
return values;
|
return values;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var update_vmid_selection = function(list, mode) {
|
var update_vmid_selection = function(list, mode) {
|
||||||
if (mode !== 'all') {
|
if (mode !== 'all' && mode !== 'pool') {
|
||||||
sm.deselectAll(true);
|
sm.deselectAll(true);
|
||||||
if (list) {
|
if (list) {
|
||||||
Ext.Array.each(list.split(','), function(vmid) {
|
Ext.Array.each(list.split(','), function(vmid) {
|
||||||
@ -242,15 +281,32 @@ Ext.define('PVE.dc.BackupEdit', {
|
|||||||
});
|
});
|
||||||
|
|
||||||
selModeField.on('change', function(f, value, oldValue) {
|
selModeField.on('change', function(f, value, oldValue) {
|
||||||
|
if (oldValue === 'pool') {
|
||||||
|
store.removeFilter('poolFilter');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (oldValue === 'all') {
|
||||||
|
sm.deselectAll(true);
|
||||||
|
vmidField.setValue('');
|
||||||
|
}
|
||||||
|
|
||||||
if (value === 'all') {
|
if (value === 'all') {
|
||||||
sm.selectAll(true);
|
sm.selectAll(true);
|
||||||
vmgrid.setDisabled(true);
|
vmgrid.setDisabled(true);
|
||||||
} else {
|
} else {
|
||||||
vmgrid.setDisabled(false);
|
vmgrid.setDisabled(false);
|
||||||
}
|
}
|
||||||
if (oldValue === 'all') {
|
|
||||||
sm.deselectAll(true);
|
if (value === 'pool') {
|
||||||
|
vmgrid.setDisabled(true);
|
||||||
vmidField.setValue('');
|
vmidField.setValue('');
|
||||||
|
selPool.setVisible(true);
|
||||||
|
selPool.allowBlank = false;
|
||||||
|
selectPoolMembers(selPool.value);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
selPool.setVisible(false);
|
||||||
|
selPool.allowBlank = true;
|
||||||
}
|
}
|
||||||
var list = vmidField.getValue();
|
var list = vmidField.getValue();
|
||||||
update_vmid_selection(list, value);
|
update_vmid_selection(list, value);
|
||||||
@ -269,6 +325,8 @@ Ext.define('PVE.dc.BackupEdit', {
|
|||||||
var mode = selModeField.getValue();
|
var mode = selModeField.getValue();
|
||||||
if (mode === 'all') {
|
if (mode === 'all') {
|
||||||
sm.selectAll(true);
|
sm.selectAll(true);
|
||||||
|
} else if (mode === 'pool'){
|
||||||
|
selectPoolMembers(selPool.value);
|
||||||
} else {
|
} else {
|
||||||
update_vmid_selection(list, mode);
|
update_vmid_selection(list, mode);
|
||||||
}
|
}
|
||||||
@ -302,6 +360,9 @@ Ext.define('PVE.dc.BackupEdit', {
|
|||||||
data.vmid = '';
|
data.vmid = '';
|
||||||
data.selMode = 'all';
|
data.selMode = 'all';
|
||||||
}
|
}
|
||||||
|
} else if (data.pool) {
|
||||||
|
data.selMode = 'pool';
|
||||||
|
data.selPool = data.pool;
|
||||||
} else {
|
} else {
|
||||||
data.selMode = 'include';
|
data.selMode = 'include';
|
||||||
}
|
}
|
||||||
@ -490,6 +551,10 @@ Ext.define('PVE.dc.BackupView', {
|
|||||||
return record.data.vmid;
|
return record.data.vmid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (record.data.pool) {
|
||||||
|
return record.data.pool;
|
||||||
|
}
|
||||||
|
|
||||||
return "-";
|
return "-";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -509,7 +574,7 @@ Ext.define('PVE.dc.BackupView', {
|
|||||||
fields: [
|
fields: [
|
||||||
'id', 'starttime', 'dow',
|
'id', 'starttime', 'dow',
|
||||||
'storage', 'node', 'vmid', 'exclude',
|
'storage', 'node', 'vmid', 'exclude',
|
||||||
'mailto',
|
'mailto', 'pool',
|
||||||
{ name: 'enabled', type: 'boolean' },
|
{ name: 'enabled', type: 'boolean' },
|
||||||
{ name: 'all', type: 'boolean' },
|
{ name: 'all', type: 'boolean' },
|
||||||
{ name: 'snapshot', type: 'boolean' },
|
{ name: 'snapshot', type: 'boolean' },
|
||||||
|
Loading…
Reference in New Issue
Block a user