uses the MultiDiskPanel as a base and implements the necessary
functions/values

Signed-off-by: Dominik Csapak <d.csa...@proxmox.com>
---
 www/manager6/Makefile            |  1 +
 www/manager6/lxc/CreateWizard.js |  8 +---
 www/manager6/lxc/MultiMPEdit.js  | 79 ++++++++++++++++++++++++++++++++
 3 files changed, 82 insertions(+), 6 deletions(-)
 create mode 100644 www/manager6/lxc/MultiMPEdit.js

diff --git a/www/manager6/Makefile b/www/manager6/Makefile
index dc045e73..3b9b057a 100644
--- a/www/manager6/Makefile
+++ b/www/manager6/Makefile
@@ -166,6 +166,7 @@ JSSRC=                                                      
\
        lxc/Options.js                                  \
        lxc/ResourceEdit.js                             \
        lxc/Resources.js                                \
+       lxc/MultiMPEdit.js                              \
        menu/MenuItem.js                                \
        menu/TemplateMenu.js                            \
        ceph/CephInstallWizard.js                       \
diff --git a/www/manager6/lxc/CreateWizard.js b/www/manager6/lxc/CreateWizard.js
index aead515f..1f902c2c 100644
--- a/www/manager6/lxc/CreateWizard.js
+++ b/www/manager6/lxc/CreateWizard.js
@@ -197,15 +197,11 @@ Ext.define('PVE.lxc.CreateWizard', {
            ],
        },
        {
-           xtype: 'pveLxcMountPointInputPanel',
-           title: gettext('Root Disk'),
+           xtype: 'pveMultiMPPanel',
+           title: gettext('Disks'),
            insideWizard: true,
            isCreate: true,
            unused: false,
-           bind: {
-               nodename: '{nodename}',
-               unprivileged: '{unprivileged}',
-           },
            confid: 'rootfs',
        },
        {
diff --git a/www/manager6/lxc/MultiMPEdit.js b/www/manager6/lxc/MultiMPEdit.js
new file mode 100644
index 00000000..709dacb1
--- /dev/null
+++ b/www/manager6/lxc/MultiMPEdit.js
@@ -0,0 +1,79 @@
+Ext.define('PVE.lxc.MultiMPPanel', {
+    extend: 'PVE.panel.MultiDiskPanel',
+    alias: 'widget.pveMultiMPPanel',
+
+    onlineHelp: 'pct_container_storage',
+
+    controller: {
+       xclass: 'Ext.app.ViewController',
+
+       // count of mps + rootfs
+       maxCount: PVE.Utils.mp_counts.mps + 1,
+
+       getNextFreeDisk: function(vmconfig) {
+           let nextFreeDisk;
+           if (!vmconfig.rootfs) {
+               return {
+                   confid: 'rootfs',
+               };
+           } else {
+               for (let i = 0; i < PVE.Utils.mp_counts.mps; i++) {
+                   let confid = `mp${i}`;
+                   if (!vmconfig[confid]) {
+                       nextFreeDisk = {
+                           confid,
+                       };
+                       break;
+                   }
+               }
+           }
+           return nextFreeDisk;
+       },
+
+       addPanel: function(itemId, vmconfig, nextFreeDisk) {
+           let me = this;
+           return me.getView().add({
+               vmconfig,
+               border: false,
+               showAdvanced: 
Ext.state.Manager.getProvider().get('proxmox-advanced-cb'),
+               xtype: 'pveLxcMountPointInputPanel',
+               confid: nextFreeDisk.confid === 'rootfs' ? 'rootfs' : null,
+               bind: {
+                   nodename: '{nodename}',
+                   unprivileged: '{unprivileged}',
+               },
+               padding: '0 5 0 10',
+               itemId,
+               selectFree: true,
+               isCreate: true,
+               insideWizard: true,
+           });
+       },
+
+       getBaseVMConfig: function() {
+           let me = this;
+
+           return {
+               unprivileged: me.getViewModel().get('unprivileged'),
+           };
+       },
+
+       diskSorter: {
+           sorterFn: function(rec1, rec2) {
+               if (rec1.data.name === 'rootfs') {
+                   return -1;
+               } else if (rec2.data.name === 'rootfs') {
+                   return 1;
+               }
+
+               let mp_match = /^mp(\d+)$/;
+               let [, id1] = mp_match.exec(rec1.data.name);
+               let [, id2] = mp_match.exec(rec2.data.name);
+
+               return parseInt(id1, 10) - parseInt(id2, 10);
+           },
+       },
+
+       deleteDisabled: (view, rI, cI, item, rec) => rec.data.name === 'rootfs',
+    },
+});
-- 
2.30.2



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to