[pve-devel] [PATCH manager 4/6] ui: ProcessorEdit: fix total core calculation and use view model
Dominik Csapak
d.csapak at proxmox.com
Thu Apr 23 15:33:41 CEST 2020
nice that you cleaned up the panel :) (LGTM)
but the actual fix would be much easier ;)
since the 'total cores' is just informational
we can set
'isFormField: false'
on the totalcore field
which then will not be reset (and not tracked as a formfield)
if you do this you can drop the whole setValues function
On 4/22/20 3:39 PM, Stefan Reiter wrote:
> Clean up the code in ProcessorEdit with a view model and fix a bug while at
> it - previously, pressing the 'Reset' button on the form would always set
> the value of the total core count field to 1.
>
> Signed-off-by: Stefan Reiter <s.reiter at proxmox.com>
> ---
>
> The fix is technically only the setValues part, but I started off thinking that
> using a view model would also fix it - it did not, but I still think it looks
> nicer than before.
>
> www/manager6/qemu/ProcessorEdit.js | 65 ++++++++++++++++++------------
> 1 file changed, 39 insertions(+), 26 deletions(-)
>
> diff --git a/www/manager6/qemu/ProcessorEdit.js b/www/manager6/qemu/ProcessorEdit.js
> index bc17e152..d555b2d8 100644
> --- a/www/manager6/qemu/ProcessorEdit.js
> +++ b/www/manager6/qemu/ProcessorEdit.js
> @@ -5,28 +5,18 @@ Ext.define('PVE.qemu.ProcessorInputPanel', {
>
> insideWizard: false,
>
> - controller: {
> - xclass: 'Ext.app.ViewController',
> -
> - updateCores: function() {
> - var me = this.getView();
> - var sockets = me.down('field[name=sockets]').getValue();
> - var cores = me.down('field[name=cores]').getValue();
> - me.down('field[name=totalcores]').setValue(sockets*cores);
> - var vcpus = me.down('field[name=vcpus]');
> - vcpus.setMaxValue(sockets*cores);
> - vcpus.setEmptyText(sockets*cores);
> - vcpus.validate();
> + viewModel: {
> + data: {
> + socketCount: 1,
> + coreCount: 1,
> },
> + formulas: {
> + totalCoreCount: get => get('socketCount') * get('coreCount'),
> + },
> + },
>
> - control: {
> - 'field[name=sockets]': {
> - change: 'updateCores'
> - },
> - 'field[name=cores]': {
> - change: 'updateCores'
> - }
> - }
> + controller: {
> + xclass: 'Ext.app.ViewController',
> },
>
> onGetValues: function(values) {
> @@ -76,6 +66,16 @@ Ext.define('PVE.qemu.ProcessorInputPanel', {
> return values;
> },
>
> + setValues: function(values) {
> + let me = this;
> +
> + // set the original value here, else 'reset' clears the field
> + let totalCoreDisplay = me.lookupReference('totalcores');
> + totalCoreDisplay.originalValue = values.cores * values.sockets;
> +
> + me.callParent([values]);
> + },
> +
> cpu: {},
>
> column1: [
> @@ -86,7 +86,10 @@ Ext.define('PVE.qemu.ProcessorInputPanel', {
> maxValue: 4,
> value: '1',
> fieldLabel: gettext('Sockets'),
> - allowBlank: false
> + allowBlank: false,
> + bind: {
> + value: '{socketCount}',
> + },
> },
> {
> xtype: 'proxmoxintegerfield',
> @@ -95,8 +98,11 @@ Ext.define('PVE.qemu.ProcessorInputPanel', {
> maxValue: 128,
> value: '1',
> fieldLabel: gettext('Cores'),
> - allowBlank: false
> - }
> + allowBlank: false,
> + bind: {
> + value: '{coreCount}',
> + },
> + },
> ],
>
> column2: [
> @@ -109,8 +115,11 @@ Ext.define('PVE.qemu.ProcessorInputPanel', {
> xtype: 'displayfield',
> fieldLabel: gettext('Total cores'),
> name: 'totalcores',
> - value: '1'
> - }
> + reference: 'totalcores',
> + bind: {
> + value: '{totalCoreCount}',
> + },
> + },
> ],
>
> advancedColumn1: [
> @@ -123,7 +132,11 @@ Ext.define('PVE.qemu.ProcessorInputPanel', {
> fieldLabel: gettext('VCPUs'),
> deleteEmpty: true,
> allowBlank: true,
> - emptyText: '1'
> + emptyText: '1',
> + bind: {
> + emptyText: '{totalCoreCount}',
> + maxValue: '{totalCoreCount}',
> + },
> },
> {
> xtype: 'numberfield',
>
More information about the pve-devel
mailing list