]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/tree/ResourceTree.js
open vm console on doubleclick in tree
[pve-manager.git] / www / manager6 / tree / ResourceTree.js
index 202a46f9299ed23f020ea60d6ad1293aae6fd980..ac487c6c30adf7ba6d75fd6dfe78000fb9a550a5 100644 (file)
@@ -32,7 +32,7 @@ Ext.define('PVE.tree.ResourceTree', {
                iconCls: 'fa fa-file-o fa-dark  x-fa-tree-template'
            },
            datacenter: {
-               iconCls: 'fa fa-server x-fa-tree-datacenter',
+               iconCls: 'fa fa-server x-fa-tree-datacenter'
            }
        }
     },
@@ -104,7 +104,7 @@ Ext.define('PVE.tree.ResourceTree', {
 
        var defaults = PVE.tree.ResourceTree.typeDefaults[info.type];
        if (info.id === 'root') {
-           defaults = PVE.tree.ResourceTree.typeDefaults['datacenter'];
+           defaults = PVE.tree.ResourceTree.typeDefaults.datacenter;
        } else if (info.type === 'type') {
            defaults = PVE.tree.ResourceTree.typeDefaults[info.groupbyid];
        }
@@ -128,7 +128,7 @@ Ext.define('PVE.tree.ResourceTree', {
 
            if (info.template) {
                iconClsAdd = '-template';
-               info.iconCls = PVE.tree.ResourceTree.typeDefaults['template'].iconCls + '-' + info.type;
+               info.iconCls = PVE.tree.ResourceTree.typeDefaults.template.iconCls + '-' + info.type;
            }
 
        }
@@ -266,6 +266,7 @@ Ext.define('PVE.tree.ResourceTree', {
                    if (item) {
                        // test if any grouping attributes changed
                        // this will also catch migrated nodes
+                       // in server view
                        var i, len;
                        for (i = 0, len = groups.length; i < len; i++) {
                            var attr = groups[i];
@@ -276,6 +277,13 @@ Ext.define('PVE.tree.ResourceTree', {
                            }
                        }
 
+                       // explicitely check for node, since
+                       // in some views, node is not a grouping
+                       // attribute
+                       if (!moved && item.data.node !== olditem.data.node) {
+                           moved = true;
+                       }
+
                        // tree item has been updated
                        if ((item.data.text !== olditem.data.text) ||
                            (item.data.running !== olditem.data.running) ||
@@ -357,6 +365,7 @@ Ext.define('PVE.tree.ResourceTree', {
        sp.on('statechange', statechange);
 
        Ext.apply(me, {
+           allowSelection: true,
            store: store,
            viewConfig: {
                // note: animate cause problems with applyState
@@ -366,39 +375,20 @@ Ext.define('PVE.tree.ResourceTree', {
             //rootVisible: false,
             //title: 'Resource Tree',
            listeners: {
-               itemcontextmenu: function(v, record, item, index, event) {
-                   event.stopEvent();
-                   //v.select(record);
-                   var menu;
-                   
-                   if (record.data.type === 'qemu' && !record.data.template) {
-                       menu = Ext.create('PVE.qemu.CmdMenu', {
-                           pveSelNode: record
-                       });
-                   } else if (record.data.type === 'qemu' && record.data.template) {
-                       menu = Ext.create('PVE.qemu.TemplateMenu', {
-                           pveSelNode: record
-                       });
-                   } else if (record.data.type === 'lxc' && !record.data.template) {
-                       menu = Ext.create('PVE.lxc.CmdMenu', {
-                           pveSelNode: record
-                       });
-                   } else if (record.data.type === 'lxc' && record.data.template) {
-                       /* since clone does not work reliably, disable for now
-                       menu = Ext.create('PVE.lxc.TemplateMenu', {
-                           pveSelNode: record
-                       });
-                       */
-                       return;
-                   } else {
-                       return;
-                   }
-
-                   menu.showAt(event.getXY());
-               },
+               itemcontextmenu: PVE.Utils.createCmdMenu,
                destroy: function() {
                    rstore.un("load", updateTree);
-               }
+               },
+               beforecellmousedown: function (tree, td, cellIndex, record, tr, rowIndex, ev) {
+                   // disable selection when right clicking
+                   me.allowSelection = (ev.button !== 2);
+               },
+               beforeselect: function (tree, record, index, eopts) {
+                   var allow = me.allowSelection;
+                   me.allowSelection = true;
+                   return allow;
+               },
+               itemdblclick: PVE.Utils.openTreeConsole
            },
            setViewFilter: function(view) {
                me.viewFilter = view;
@@ -423,6 +413,7 @@ Ext.define('PVE.tree.ResourceTree', {
                            cn.expand();
                        }
                    }
+                   me.getView().focusRow(node);
                }
            },
            selectById: function(nodeid) {