]> git.proxmox.com Git - pve-manager.git/commitdiff
copy lxc/CreateWizard.js from manager to manager6
authorDietmar Maurer <dietmar@proxmox.com>
Thu, 3 Mar 2016 09:51:31 +0000 (10:51 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Thu, 3 Mar 2016 09:51:31 +0000 (10:51 +0100)
www/manager6/lxc/CreateWizard.js [new file with mode: 0644]

diff --git a/www/manager6/lxc/CreateWizard.js b/www/manager6/lxc/CreateWizard.js
new file mode 100644 (file)
index 0000000..fee77d8
--- /dev/null
@@ -0,0 +1,234 @@
+/*jslint confusion: true */
+Ext.define('PVE.lxc.CreateWizard', {
+    extend: 'PVE.window.Wizard',
+
+    initComponent: function() {
+       var me = this;
+
+       var summarystore = Ext.create('Ext.data.Store', {
+           model: 'KeyValue',
+           sorters: [
+               {
+                   property : 'key',
+                   direction: 'ASC'
+               }
+           ]
+       });
+
+       var tmplsel = Ext.create('PVE.form.FileSelector', {
+           name: 'ostemplate',
+           storageContent: 'vztmpl',
+           fieldLabel: gettext('Template'),
+           allowBlank: false
+       });
+
+       var tmplstoragesel = Ext.create('PVE.form.StorageSelector', {
+           name: 'tmplstorage',
+           fieldLabel: gettext('Storage'),
+           storageContent: 'vztmpl',
+           autoSelect: true,
+           allowBlank: false,
+           listeners: {
+               change: function(f, value) {
+                   tmplsel.setStorage(value);
+               }
+           }
+       });
+
+       var rootfspanel = Ext.create('PVE.lxc.MountPointInputPanel', {
+           title: gettext('Root Disk'),
+           insideWizard: true,
+           create: true,
+           unused: false,
+           confid: 'rootfs'
+       });
+
+       var networkpanel = Ext.create('PVE.lxc.NetworkInputPanel', {
+           title: gettext('Network'),
+           insideWizard: true,
+           dataCache: {},
+           create: true
+       });
+
+       Ext.applyIf(me, {
+           subject: gettext('LXC Container'),
+           items: [
+               {
+                   xtype: 'inputpanel',
+                   title: gettext('General'),
+                   column1: [
+                       {
+                           xtype: 'PVE.form.NodeSelector',
+                           name: 'nodename',
+                           fieldLabel: gettext('Node'),
+                           allowBlank: false,
+                           onlineValidator: true,
+                           listeners: {
+                               change: function(f, value) {
+                                   tmplstoragesel.setNodename(value);
+                                   tmplsel.setStorage(undefined, value);
+                                   networkpanel.setNodename(value);
+                                   rootfspanel.setNodename(value);
+                               }
+                           }
+                       },
+                       {
+                           xtype: 'pveVMIDSelector',
+                           name: 'vmid',
+                           value: '',
+                           loadNextFreeVMID: true,
+                           validateExists: false
+                       },
+                       {
+                           xtype: 'pvetextfield',
+                           name: 'hostname',
+                           vtype: 'DnsName',
+                           value: '',
+                           fieldLabel: gettext('Hostname'),
+                           skipEmptyText: true,
+                           allowBlank: true
+                       }
+                   ],
+                   column2: [
+                       {
+                           xtype: 'pvePoolSelector',
+                           fieldLabel: gettext('Resource Pool'),
+                           name: 'pool',
+                           value: '',
+                           allowBlank: true
+                       },
+                       {
+                           xtype: 'textfield',
+                           inputType: 'password',
+                           name: 'password',
+                           value: '',
+                           fieldLabel: gettext('Password'),
+                           allowBlank: false,
+                           minLength: 5,
+                           change: function(f, value) {
+                               if (!me.rendered) {
+                                   return;
+                               }
+                               me.down('field[name=confirmpw]').validate();
+                           }
+                       },
+                       {
+                           xtype: 'textfield',
+                           inputType: 'password',
+                           name: 'confirmpw',
+                           value: '',
+                           fieldLabel: gettext('Confirm password'),
+                           allowBlank: false,
+                           validator: function(value) {
+                               var pw = me.down('field[name=password]').getValue();
+                               if (pw !== value) {
+                                   return "Passwords does not match!";
+                               }
+                               return true;
+                           }
+                       }
+                   ],
+                   onGetValues: function(values) {
+                       delete values.confirmpw;
+                       if (!values.pool) {
+                           delete values.pool;
+                       }
+                       return values;
+                   }
+               },
+               {
+                   xtype: 'inputpanel',
+                   title: gettext('Template'),
+                   column1: [ tmplstoragesel, tmplsel]
+               },
+               rootfspanel,
+               {
+                   xtype: 'pveLxcCPUInputPanel',
+                   title: gettext('CPU'),
+                   insideWizard: true
+               },
+               {
+                   xtype: 'pveLxcMemoryInputPanel',
+                   title: gettext('Memory'),
+                   insideWizard: true
+               },
+               networkpanel,
+               {
+                   xtype: 'pveLxcDNSInputPanel',
+                   title: gettext('DNS'),
+                   insideWizard: true
+               },
+               {
+                   title: gettext('Confirm'),
+                   layout: 'fit',
+                   items: [
+                       {
+                           title: gettext('Settings'),
+                           xtype: 'grid',
+                           store: summarystore,
+                           columns: [
+                               {header: 'Key', width: 150, dataIndex: 'key'},
+                               {header: 'Value', flex: 1, dataIndex: 'value'}
+                           ]
+                       }
+                   ],
+                   listeners: {
+                       show: function(panel) {
+                           var form = me.down('form').getForm();
+                           var kv = me.getValues();
+                           var data = [];
+                           Ext.Object.each(kv, function(key, value) {
+                               if (key === 'delete' || key === 'tmplstorage') { // ignore
+                                   return;
+                               }
+                               if (key === 'password') { // don't show pw
+                                   return;
+                               }
+                               var html = Ext.htmlEncode(Ext.JSON.encode(value));
+                               data.push({ key: key, value: value });
+                           });
+                           summarystore.suspendEvents();
+                           summarystore.removeAll();
+                           summarystore.add(data);
+                           summarystore.sort();
+                           summarystore.resumeEvents();
+                           summarystore.fireEvent('datachanged', summarystore);
+                       }
+                   },
+                   onSubmit: function() {
+                       var kv = me.getValues();
+                       delete kv['delete'];
+
+                       var nodename = kv.nodename;
+                       delete kv.nodename;
+                       delete kv.tmplstorage;
+
+                       PVE.Utils.API2Request({
+                           url: '/nodes/' + nodename + '/lxc',
+                           waitMsgTarget: me,
+                           method: 'POST',
+                           params: kv,
+                           success: function(response, opts){
+                               var upid = response.result.data;
+                   
+                               var win = Ext.create('PVE.window.TaskViewer', { 
+                                   upid: upid
+                               });
+                               win.show();
+                               me.close();
+                           },
+                           failure: function(response, opts) {
+                               Ext.Msg.alert(gettext('Error'), response.htmlStatus);
+                           }
+                       });
+                   }
+               }
+           ]
+       });
+
+       me.callParent();
+    }
+});
+
+
+