]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/lxc/Network.js
drop jslint lines
[pve-manager.git] / www / manager6 / lxc / Network.js
index 3ef96a2f5536b3f60a12caca171db5fdcacbe55d..2938c503c882d12738400a005c9f45906590a608 100644 (file)
@@ -1,12 +1,14 @@
 Ext.define('PVE.lxc.NetworkInputPanel', {
-    extend: 'PVE.panel.InputPanel',
+    extend: 'Proxmox.panel.InputPanel',
     alias: 'widget.pveLxcNetworkInputPanel',
 
     insideWizard: false,
 
+    onlineHelp: 'pct_container_network',
+
     setNodename: function(nodename) {
        var me = this;
-       
+
        if (!nodename || (me.nodename === nodename)) {
            return;
        }
@@ -16,12 +18,12 @@ Ext.define('PVE.lxc.NetworkInputPanel', {
        var bridgesel = me.query("[isFormField][name=bridge]")[0];
        bridgesel.setNodename(nodename);
     },
-    
+
     onGetValues: function(values) {
        var me = this;
 
        var id;
-       if (me.create) {
+       if (me.isCreate) {
            id = values.id;
            delete values.id;
        } else {
@@ -47,18 +49,20 @@ Ext.define('PVE.lxc.NetworkInputPanel', {
     initComponent : function() {
        var me = this;
 
-       if (!me.dataCache) {
-           throw "no dataCache specified";
-       }
-       
        var cdata = {};
 
        if (me.insideWizard) {
            me.ifname = 'net0';
            cdata.name = 'eth0';
+           me.dataCache = {};
        }
-       
-       if (!me.create) {
+       cdata.firewall =  (me.insideWizard || me.isCreate);
+
+       if (!me.dataCache) {
+           throw "no dataCache specified";
+       }
+
+       if (!me.isCreate) {
            if (!me.ifname) {
                throw "no interface name specified";
            }
@@ -69,45 +73,31 @@ Ext.define('PVE.lxc.NetworkInputPanel', {
            cdata = PVE.Parser.parseLxcNetwork(me.dataCache[me.ifname]);
        }
 
-       var i, netlist = [];
+       var i;
        for (i = 0; i < 10; i++) {
-           netlist.push({ "name": "net" + i });
+           if (me.isCreate && !me.dataCache['net'+i.toString()]) {
+               me.ifname = 'net' + i.toString();
+               break;
+           }
        }
-       
-       var netliststore = Ext.create('Ext.data.Store', {
-           fields: ['name'],
-           data: netlist
-       });
 
-       var ifselector = {
-           xtype: 'combobox',
-           fieldLabel: gettext('ID'),
-           store: netliststore,
-           editable: false,
+       var idselector = {
+           xtype: 'hidden',
            name: 'id',
-           value: me.ifname,
-           disabled: !me.create,
-           queryMode: 'local',
-           displayField: 'name',
-           valueField: 'name',
-           validator: function(value) {
-               if (me.create && me.dataCache[value]) {
-                   return "Network ID already in use";
-               }
-               return true;
-           }
+           value: me.ifname
        };
 
-       me.column1 = [
-           ifselector,
+       me.column1 = [
+           idselector,
            {
                xtype: 'textfield',
                name: 'name',
-               fieldLabel: gettext('Name') + ' (i.e. eth0)',
+               fieldLabel: gettext('Name'),
+               emptyText: '(e.g., eth0)',
                allowBlank: false,
                value: cdata.name,
                validator: function(value) {
-                   var result = true;
+                   var result = '';
                    Ext.Object.each(me.dataCache, function(key, netstr) {
                        if (!key.match(/^net\d+/) || key === me.ifname) {
                            return; // continue
@@ -118,7 +108,11 @@ Ext.define('PVE.lxc.NetworkInputPanel', {
                            return false;
                        }
                    });
-                   return result;
+                   if (result !== '') {
+                       return result;
+                   }
+                   // validator can return bool/string
+                   return true;
                }
            },
            {
@@ -141,7 +135,7 @@ Ext.define('PVE.lxc.NetworkInputPanel', {
            {
                xtype: 'pveVlanField',
                name: 'tag',
-               value: cdata.tag,
+               value: cdata.tag
            },
            {
                xtype: 'numberfield',
@@ -154,10 +148,10 @@ Ext.define('PVE.lxc.NetworkInputPanel', {
                allowBlank: true
            },
            {
-               xtype: 'pvecheckbox',
+               xtype: 'proxmoxcheckbox',
                fieldLabel: gettext('Firewall'),
                name: 'firewall',
-               checked: cdata.firewall,
+               value: cdata.firewall
            }
        ];
 
@@ -185,7 +179,7 @@ Ext.define('PVE.lxc.NetworkInputPanel', {
                items: [
                    {
                        xtype: 'label',
-                       text: gettext('IPv4') + ':',
+                       text: 'IPv4:' // do not localize
                    },
                    {
                        xtype: 'radiofield',
@@ -196,6 +190,9 @@ Ext.define('PVE.lxc.NetworkInputPanel', {
                        margin: '0 0 0 10',
                        listeners: {
                            change: function(cb, value) {
+                               me.down('field[name=ip]').setEmptyText(
+                                   !!value ? Proxmox.Utils.NoneText : ""
+                               );
                                me.down('field[name=ip]').setDisabled(!value);
                                me.down('field[name=gw]').setDisabled(!value);
                            }
@@ -203,7 +200,7 @@ Ext.define('PVE.lxc.NetworkInputPanel', {
                    },
                    {
                        xtype: 'radiofield',
-                       boxLabel: gettext('DHCP'),
+                       boxLabel: 'DHCP', // do not localize
                        name: 'ipv4mode',
                        inputValue: 'dhcp',
                        checked: dhcp4,
@@ -216,8 +213,9 @@ Ext.define('PVE.lxc.NetworkInputPanel', {
                name: 'ip',
                vtype: 'IPCIDRAddress',
                value: cdata.ip,
+               emptyText: dhcp4 ? '' : Proxmox.Utils.NoneText,
                disabled: dhcp4,
-               fieldLabel: gettext('IPv4/CIDR')
+               fieldLabel: 'IPv4/CIDR' // do not localize
            },
            {
                xtype: 'textfield',
@@ -225,7 +223,7 @@ Ext.define('PVE.lxc.NetworkInputPanel', {
                value: cdata.gw,
                vtype: 'IPAddress',
                disabled: dhcp4,
-               fieldLabel: gettext('Gateway') + ' (' + gettext('IPv4') +')',
+               fieldLabel: gettext('Gateway') + ' (IPv4)',
                margin: '0 0 3 0' // override bottom margin to account for the menuseparator
            },
            {
@@ -243,7 +241,7 @@ Ext.define('PVE.lxc.NetworkInputPanel', {
                items: [
                    {
                        xtype: 'label',
-                       text: gettext('IPv6') + ':',
+                       text: 'IPv6:' // do not localize
                    },
                    {
                        xtype: 'radiofield',
@@ -254,6 +252,9 @@ Ext.define('PVE.lxc.NetworkInputPanel', {
                        margin: '0 0 0 10',
                        listeners: {
                            change: function(cb, value) {
+                               me.down('field[name=ip6]').setEmptyText(
+                                   !!value ? Proxmox.Utils.NoneText : ""
+                               );
                                me.down('field[name=ip6]').setDisabled(!value);
                                me.down('field[name=gw6]').setDisabled(!value);
                            }
@@ -261,7 +262,7 @@ Ext.define('PVE.lxc.NetworkInputPanel', {
                    },
                    {
                        xtype: 'radiofield',
-                       boxLabel: gettext('DHCP'),
+                       boxLabel: 'DHCP', // do not localize
                        name: 'ipv6mode',
                        inputValue: 'dhcp',
                        checked: dhcp6,
@@ -269,7 +270,7 @@ Ext.define('PVE.lxc.NetworkInputPanel', {
                    },
                    {
                        xtype: 'radiofield',
-                       boxLabel: gettext('SLAAC'),
+                       boxLabel: 'SLAAC', // do not localize
                        name: 'ipv6mode',
                        inputValue: 'auto',
                        checked: auto6,
@@ -281,9 +282,10 @@ Ext.define('PVE.lxc.NetworkInputPanel', {
                xtype: 'textfield',
                name: 'ip6',
                value: cdata.ip6,
+               emptyText: dhcp6 || auto6 ? '' : Proxmox.Utils.NoneText,
                vtype: 'IP6CIDRAddress',
                disabled: (dhcp6 || auto6),
-               fieldLabel: gettext('IPv6/CIDR')
+               fieldLabel: 'IPv6/CIDR' // do not localize
            },
            {
                xtype: 'textfield',
@@ -291,17 +293,16 @@ Ext.define('PVE.lxc.NetworkInputPanel', {
                vtype: 'IP6Address',
                value: cdata.gw6,
                disabled: (dhcp6 || auto6),
-               fieldLabel: gettext('Gateway') + ' (' + gettext('IPv6') +')'
+               fieldLabel: gettext('Gateway') + ' (IPv6)'
            }
        ];
 
        me.callParent();
     }
 });
-       
-/*jslint confusion: true */
+
 Ext.define('PVE.lxc.NetworkEdit', {
-    extend: 'PVE.window.Edit',
+    extend: 'Proxmox.window.Edit',
 
     isAdd: true,
 
@@ -320,9 +321,9 @@ Ext.define('PVE.lxc.NetworkEdit', {
            ifname: me.ifname,
            nodename: me.nodename,
            dataCache: me.dataCache,
-           create: me.create
+           isCreate: me.isCreate
        });
-          
+
        Ext.apply(me, {
            subject: gettext('Network Device') + ' (veth)',
            digest: me.dataCache.digest,
@@ -335,22 +336,27 @@ Ext.define('PVE.lxc.NetworkEdit', {
 
 Ext.define('PVE.lxc.NetworkView', {
     extend: 'Ext.grid.GridPanel',
-    alias: ['widget.pveLxcNetworkView'],
+    alias: 'widget.pveLxcNetworkView',
+
+    onlineHelp: 'pct_container_network',
 
     dataCache: {}, // used to store result of last load
 
+    stateful: true,
+    stateId: 'grid-lxc-network',
+
     load: function() {
        var me = this;
 
-       PVE.Utils.setErrorMask(me, true);
+       Proxmox.Utils.setErrorMask(me, true);
 
-       PVE.Utils.API2Request({
+       Proxmox.Utils.API2Request({
            url: me.url,
            failure: function(response, opts) {
-               PVE.Utils.setErrorMask(me, gettext('Error') + ': ' + response.htmlStatus);
+               Proxmox.Utils.setErrorMask(me, gettext('Error') + ': ' + response.htmlStatus);
            },
            success: function(response, opts) {
-               PVE.Utils.setErrorMask(me, false);
+               Proxmox.Utils.setErrorMask(me, false);
                var result = Ext.decode(response.responseText);
                var data = result.data || {};
                me.dataCache = data;
@@ -364,6 +370,7 @@ Ext.define('PVE.lxc.NetworkView', {
                    records.push(net);
                });
                me.store.loadData(records);
+               me.down('button[name=addButton]').setDisabled((records.length >= 10));
            }
        });
     },
@@ -397,7 +404,7 @@ Ext.define('PVE.lxc.NetworkView', {
 
        var sm = Ext.create('Ext.selection.RowModel', {});
 
-       var remove_btn = new PVE.button.Button({
+       var remove_btn = new Proxmox.button.Button({
            text: gettext('Remove'),
            disabled: true,
            selModel: sm,
@@ -409,7 +416,7 @@ Ext.define('PVE.lxc.NetworkView', {
                                         "'" + rec.data.id + "'");
            },
            handler: function(btn, event, rec) {
-               PVE.Utils.API2Request({
+               Proxmox.Utils.API2Request({
                    url: me.url,
                    waitMsgTarget: me,
                    method: 'PUT',
@@ -444,7 +451,7 @@ Ext.define('PVE.lxc.NetworkView', {
            win.show();
        };
 
-       var edit_btn = new PVE.button.Button({
+       var edit_btn = new Proxmox.button.Button({
            text: gettext('Edit'),
            selModel: sm,
            disabled: true,
@@ -460,16 +467,16 @@ Ext.define('PVE.lxc.NetworkView', {
        Ext.apply(me, {
            store: store,
            selModel: sm,
-           stateful: false,
            tbar: [
                {
                    text: gettext('Add'),
+                   name: 'addButton',
                    disabled: !caps.vms['VM.Config.Network'],
                    handler: function() {
                        var win = Ext.create('PVE.lxc.NetworkEdit', {
                            url: me.url,
                            nodename: nodename,
-                           create: true,
+                           isCreate: true,
                            dataCache: me.dataCache
                        });
                        win.on('destroy', me.load, me);
@@ -481,7 +488,7 @@ Ext.define('PVE.lxc.NetworkView', {
            ],
            columns: [
                {
-                   header: gettext('ID'),
+                   header: 'ID',
                    width: 50,
                    dataIndex: 'id'
                },
@@ -499,7 +506,7 @@ Ext.define('PVE.lxc.NetworkView', {
                    header: gettext('Firewall'),
                    width: 80,
                    dataIndex: 'firewall',
-                   renderer: PVE.Utils.format_boolean
+                   renderer: Proxmox.Utils.format_boolean
                },
                {
                    header: gettext('VLAN Tag'),