[pve-devel] [PATCH manager v2 1/1] fix #4228: ui: Add checkbox to rollback dialog for automatically restarting VM/CT
Stefan Hanreich
s.hanreich at proxmox.com
Mon Sep 12 14:00:08 CEST 2022
Signed-off-by: Stefan Hanreich <s.hanreich at proxmox.com>
---
I've added a custom Window containing the dialog, since using MessageBox
for this seemed a bit tricky. Maybe I could move the definition of the
components outside the handler and only instantiate them there? I
thought it was fine for now, since the Window is specific to the
SnapshotTree anyway.
www/manager6/tree/SnapshotTree.js | 62 +++++++++++++++++++++++++++----
1 file changed, 55 insertions(+), 7 deletions(-)
diff --git a/www/manager6/tree/SnapshotTree.js b/www/manager6/tree/SnapshotTree.js
index 97268072..a6f25f19 100644
--- a/www/manager6/tree/SnapshotTree.js
+++ b/www/manager6/tree/SnapshotTree.js
@@ -61,7 +61,9 @@ Ext.define('PVE.guest.SnapshotTree', {
me.mon(win, 'destroy', me.reload, me);
},
- snapshotAction: function(action, method) {
+ snapshotAction: function(action, method, params) {
+ params = params || {};
+
let me = this;
let view = me.getView();
let vm = me.getViewModel();
@@ -75,6 +77,7 @@ Ext.define('PVE.guest.SnapshotTree', {
Proxmox.Utils.API2Request({
url: `/nodes/${nodename}/${type}/${vmid}/snapshot/${snapname}/${action}`,
method: method,
+ params: params,
waitMsgTarget: view,
callback: function() {
me.reload();
@@ -89,9 +92,8 @@ Ext.define('PVE.guest.SnapshotTree', {
},
});
},
-
- rollback: function() {
- this.snapshotAction('rollback', 'POST');
+ rollback: function(params) {
+ this.snapshotAction('rollback', 'POST', params);
},
remove: function() {
this.snapshotAction('', 'DELETE');
@@ -255,14 +257,60 @@ Ext.define('PVE.guest.SnapshotTree', {
bind: {
disabled: '{!canRollback}',
},
- confirmMsg: function() {
+ handler: function() {
let view = this.up('treepanel');
+
let rec = view.getSelection()[0];
let vmid = view.getViewModel().get('vmid');
- return Proxmox.Utils.format_task_description('qmrollback', vmid) +
+ let label = Proxmox.Utils.format_task_description('qmrollback', vmid) +
` '${rec.data.name}'? ${gettext("Current state will be lost.")}`;
+
+ let formPanel = Ext.create({
+ xtype: 'inputpanel',
+ bodyPadding: 10,
+ border: false,
+ items: [
+ {
+ xtype: 'label',
+ html: label,
+ },
+ {
+ xtype: 'proxmoxcheckbox',
+ name: 'start',
+ margin: '5 0 0 0',
+ boxLabel: gettext('Start guest after rollback'),
+ },
+ ],
+ });
+
+ let win = Ext.create("Ext.window.Window", {
+ width: 400,
+ layout: 'fit',
+ title: gettext('Confirm'),
+ closable: true,
+ resizable: false,
+ modal: true,
+ buttons: [
+ {
+ text: 'Yes',
+ handler: function() {
+ view.controller.rollback(formPanel.getValues());
+ win.close();
+ },
+ },
+ {
+ text: 'No',
+ handler: function() {
+ win.close();
+ },
+ },
+ ],
+ buttonAlign: 'center',
+ items: [formPanel],
+ });
+
+ win.show();
},
- handler: 'rollback',
},
'-',
{
--
2.30.2
More information about the pve-devel
mailing list