]> git.proxmox.com Git - proxmox-widget-toolkit.git/blobdiff - src/node/NetworkView.js
node network view: move add-menu generation to common helper
[proxmox-widget-toolkit.git] / src / node / NetworkView.js
index 6f60965a998bd9ec6166e85bc4aeeb7446849262..1d67ac82799bedce1188c3d480b15dadffe0f229 100644 (file)
@@ -150,7 +150,7 @@ Ext.define('Proxmox.node.NetworkView', {
            del_btn.setDisabled(!rec);
        };
 
-       let find_next_iface_id = function(prefix) {
+       let findNextFreeInterfaceId = function(prefix) {
            for (let next = 0; next <= 9999; next++) {
                let id = `${prefix}${next.toString()}`;
                if (!store.getById(id)) {
@@ -162,53 +162,32 @@ Ext.define('Proxmox.node.NetworkView', {
        };
 
        let menu_items = [];
-
-       if (me.types.indexOf('bridge') !== -1) {
+       let addEditWindowToMenu = (iType, iDefault) => {
            menu_items.push({
-               text: Proxmox.Utils.render_network_iface_type('bridge'),
-               handler: function() {
-                   let win = Ext.create('Proxmox.node.NetworkEdit', {
-                       nodename: me.nodename,
-                       iftype: 'bridge',
-                       iface_default: find_next_iface_id('vmbr'),
-                       onlineHelp: 'sysadmin_network_configuration',
-                   });
-                   win.on('destroy', reload);
-                   win.show();
-               },
+               text: Proxmox.Utils.render_network_iface_type(iType),
+               handler: () => Ext.create('Proxmox.node.NetworkEdit', {
+                   autoShow: true,
+                   nodename: me.nodename,
+                   iftype: iType,
+                   iface_default: findNextFreeInterfaceId(iDefault ?? iType),
+                   onlineHelp: 'sysadmin_network_configuration',
+                   listeners: {
+                       destroy: () => reload(),
+                   },
+               }),
            });
+       };
+
+       if (me.types.indexOf('bridge') !== -1) {
+           addEditWindowToMenu('bridge', 'vmbr');
        }
 
        if (me.types.indexOf('bond') !== -1) {
-           menu_items.push({
-               text: Proxmox.Utils.render_network_iface_type('bond'),
-               handler: function() {
-                   let win = Ext.create('Proxmox.node.NetworkEdit', {
-                       nodename: me.nodename,
-                       iftype: 'bond',
-                       iface_default: find_next_iface_id('bond'),
-                       onlineHelp: 'sysadmin_network_configuration',
-                   });
-                   win.on('destroy', reload);
-                   win.show();
-               },
-           });
+           addEditWindowToMenu('bond');
        }
 
        if (me.types.indexOf('vlan') !== -1) {
-           menu_items.push({
-               text: Proxmox.Utils.render_network_iface_type('vlan'),
-               handler: function() {
-                   let win = Ext.create('Proxmox.node.NetworkEdit', {
-                       nodename: me.nodename,
-                       iftype: 'vlan',
-                       iface_default: find_next_iface_id('vlan'),
-                       onlineHelp: 'sysadmin_network_configuration',
-                   });
-                   win.on('destroy', reload);
-                   win.show();
-               },
-           });
+           addEditWindowToMenu('vlan');
        }
 
        if (me.types.indexOf('ovs') !== -1) {
@@ -216,43 +195,20 @@ Ext.define('Proxmox.node.NetworkView', {
                menu_items.push({ xtype: 'menuseparator' });
            }
 
-           menu_items.push(
-               {
-                   text: Proxmox.Utils.render_network_iface_type('OVSBridge'),
-                   handler: function() {
-                       let win = Ext.create('Proxmox.node.NetworkEdit', {
-                           nodename: me.nodename,
-                           iftype: 'OVSBridge',
-                           iface_default: find_next_iface_id('vmbr'),
-                       });
-                       win.on('destroy', reload);
-                       win.show();
-                   },
-               },
-               {
-                   text: Proxmox.Utils.render_network_iface_type('OVSBond'),
-                   handler: function() {
-                       let win = Ext.create('Proxmox.node.NetworkEdit', {
-                           nodename: me.nodename,
-                           iftype: 'OVSBond',
-                           iface_default: find_next_iface_id('bond'),
-                       });
-                       win.on('destroy', reload);
-                       win.show();
-                   },
-               },
-               {
-                   text: Proxmox.Utils.render_network_iface_type('OVSIntPort'),
-                   handler: function() {
-                       let win = Ext.create('Proxmox.node.NetworkEdit', {
-                           nodename: me.nodename,
-                           iftype: 'OVSIntPort',
-                       });
-                       win.on('destroy', reload);
-                       win.show();
+           addEditWindowToMenu('OVSBridge', 'vmbr');
+           addEditWindowToMenu('OVSBond', 'bond');
+
+           menu_items.push({
+               text: Proxmox.Utils.render_network_iface_type('OVSIntPort'),
+               handler: () => Ext.create('Proxmox.node.NetworkEdit', {
+                   autoShow: true,
+                   nodename: me.nodename,
+                   iftype: 'OVSIntPort',
+                   listeners: {
+                       destroy: () => reload(),
                    },
-               },
-           );
+               }),
+           });
        }
 
        let renderer_generator = function(fieldname) {