[pve-devel] [PATCH manager] qemu/Monitor: save the last 20 commands

Dominik Csapak d.csapak at proxmox.com
Fri Jan 26 15:25:26 CET 2018


and make them available with the up/down arrow key

Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
 www/manager6/qemu/Monitor.js | 45 ++++++++++++++++++++++++++++++++++++--------
 1 file changed, 37 insertions(+), 8 deletions(-)

diff --git a/www/manager6/qemu/Monitor.js b/www/manager6/qemu/Monitor.js
index 686950ad..4cfd1537 100644
--- a/www/manager6/qemu/Monitor.js
+++ b/www/manager6/qemu/Monitor.js
@@ -18,6 +18,8 @@ Ext.define('PVE.qemu.Monitor', {
 	    throw "no VM ID specified";
 	}
 
+	var history = [];
+	var histNum = -1;
 	var lines = [];
 
 	var textbox = Ext.createWidget('panel', {
@@ -56,6 +58,14 @@ Ext.define('PVE.qemu.Monitor', {
 
 	var executeCmd = function(cmd) {
 	    addLine("# " + Ext.htmlEncode(cmd));
+	    if (cmd) {
+		history.unshift(cmd);
+		if (history.length > 20) {
+		    history.splice(20);
+		}
+	    }
+	    histNum = -1;
+
 	    refresh();
 	    Proxmox.Utils.API2Request({
 		params: { command: cmd },
@@ -96,14 +106,33 @@ Ext.define('PVE.qemu.Monitor', {
 			    refresh();
 			},
 			specialkey: function(f, e) {
-			    if (e.getKey() === e.ENTER) {
-				var cmd = f.getValue();
-				f.setValue('');
-				executeCmd(cmd);
-			    } else if (e.getKey() === e.PAGE_UP) {
-				textbox.scrollBy(0, -0.9*textbox.getHeight(), false);
-			    } else if (e.getKey() === e.PAGE_DOWN) {
-				textbox.scrollBy(0, 0.9*textbox.getHeight(), false);
+			    var key = e.getKey();
+			    switch (key) {
+				case e.ENTER:
+				    var cmd = f.getValue();
+				    f.setValue('');
+				    executeCmd(cmd);
+				    break;
+				case e.PAGE_UP:
+				    textbox.scrollBy(0, -0.9*textbox.getHeight(), false);
+				    break;
+				case e.PAGE_DOWN:
+				    textbox.scrollBy(0, 0.9*textbox.getHeight(), false);
+				    break;
+				case e.UP:
+				    if (histNum + 1 < history.length) {
+					f.setValue(history[++histNum]);
+				    }
+				    e.preventDefault();
+				    break;
+				case e.DOWN:
+				    if (histNum > 0) {
+					f.setValue(history[--histNum]);
+				    }
+				    e.preventDefault();
+				    break;
+				default:
+				    break;
 			    }
 			}
 		    }
-- 
2.11.0





More information about the pve-devel mailing list