fix #1278 gui: backup: add backup mode pool

Signed-off-by: Tim Marx <t.marx@proxmox.com>
This commit is contained in:
Tim Marx 2019-06-19 12:08:38 +02:00 committed by Thomas Lamprecht
parent f337626155
commit ab64886987

View File

@ -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' },