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