ui: tape: add single snapshot restore
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
parent
0ecdaa0dc0
commit
68b102269f
|
@ -16,6 +16,38 @@ Ext.define('PBS.TapeManagement.BackupOverview', {
|
|||
}).show();
|
||||
},
|
||||
|
||||
restoreSingle: function(button, record) {
|
||||
let me = this;
|
||||
let view = me.getView();
|
||||
let selection = view.getSelection();
|
||||
if (!selection || selection.length < 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
let node = selection[0];
|
||||
if (node.data.restoreid === undefined) {
|
||||
return;
|
||||
}
|
||||
let restoreid = node.data.restoreid;
|
||||
let mediaset = node.data.text;
|
||||
let uuid = node.data['media-set-uuid'];
|
||||
let datastores = [node.data.store];
|
||||
|
||||
Ext.create('PBS.TapeManagement.TapeRestoreWindow', {
|
||||
mediaset,
|
||||
uuid,
|
||||
list: [
|
||||
restoreid,
|
||||
],
|
||||
datastores,
|
||||
listeners: {
|
||||
destroy: function() {
|
||||
me.reload();
|
||||
},
|
||||
},
|
||||
}).show();
|
||||
},
|
||||
|
||||
restore: function(button, record) {
|
||||
let me = this;
|
||||
let view = me.getView();
|
||||
|
@ -149,6 +181,7 @@ Ext.define('PBS.TapeManagement.BackupOverview', {
|
|||
entry.text = entry.snapshot;
|
||||
entry.leaf = true;
|
||||
entry.children = [];
|
||||
entry.restoreid = `${entry.store}:${entry.snapshot}`;
|
||||
let iconCls = PBS.Utils.get_type_icon_cls(entry.snapshot);
|
||||
if (iconCls !== '') {
|
||||
entry.iconCls = `fa ${iconCls}`;
|
||||
|
@ -262,6 +295,14 @@ Ext.define('PBS.TapeManagement.BackupOverview', {
|
|||
parentXType: 'treepanel',
|
||||
enableFn: (rec) => !!rec.data['media-set-uuid'],
|
||||
},
|
||||
{
|
||||
xtype: 'proxmoxButton',
|
||||
disabled: true,
|
||||
text: gettext('Restore Snapshot'),
|
||||
handler: 'restoreSingle',
|
||||
parentXType: 'treepanel',
|
||||
enableFn: (rec) => !!rec.data.restoreid,
|
||||
},
|
||||
],
|
||||
|
||||
columns: [
|
||||
|
|
|
@ -10,6 +10,18 @@ Ext.define('PBS.TapeManagement.TapeRestoreWindow', {
|
|||
showTaskViewer: true,
|
||||
isCreate: true,
|
||||
|
||||
cbindData: function(config) {
|
||||
let me = this;
|
||||
me.isSingle = false;
|
||||
me.listText = "";
|
||||
if (me.list !== undefined) {
|
||||
me.isSingle = true;
|
||||
me.listText = me.list.join('<br>');
|
||||
me.title = gettext('Restore Snapshot');
|
||||
}
|
||||
return {};
|
||||
},
|
||||
|
||||
defaults: {
|
||||
labelWidth: 120,
|
||||
},
|
||||
|
@ -33,6 +45,10 @@ Ext.define('PBS.TapeManagement.TapeRestoreWindow', {
|
|||
}
|
||||
delete values.mapping;
|
||||
|
||||
if (me.up('window').list !== undefined) {
|
||||
values.snapshots = me.up('window').list;
|
||||
}
|
||||
|
||||
values.store = datastores.join(',');
|
||||
|
||||
return values;
|
||||
|
@ -55,6 +71,15 @@ Ext.define('PBS.TapeManagement.TapeRestoreWindow', {
|
|||
value: '{uuid}',
|
||||
},
|
||||
},
|
||||
{
|
||||
xtype: 'displayfield',
|
||||
fieldLabel: gettext('Snapshot(s)'),
|
||||
submitValue: false,
|
||||
cbind: {
|
||||
hidden: '{!isSingle}',
|
||||
value: '{listText}',
|
||||
},
|
||||
},
|
||||
{
|
||||
xtype: 'pbsDriveSelector',
|
||||
fieldLabel: gettext('Drive'),
|
||||
|
|
Loading…
Reference in New Issue