[pve-devel] [PATCH manager v2 2/4] spice: Add enhancements form component

Aaron Lauterer a.lauterer at proxmox.com
Wed Sep 18 16:08:50 CEST 2019



On 9/18/19 12:11 PM, Dominik Csapak wrote:
> On 9/17/19 11:35 AM, Aaron Lauterer wrote:
>> Signed-off-by: Aaron Lauterer <a.lauterer at proxmox.com>
>> ---
>>   www/manager6/Makefile                         |  1 +
>>   www/manager6/form/SpiceEnhancementSelector.js | 72 +++++++++++++++++++
>>   2 files changed, 73 insertions(+)
>>   create mode 100644 www/manager6/form/SpiceEnhancementSelector.js
>>
>> diff --git a/www/manager6/Makefile b/www/manager6/Makefile
>> index 82e25c79..aa460c3b 100644
>> --- a/www/manager6/Makefile
>> +++ b/www/manager6/Makefile
>> @@ -66,6 +66,7 @@ JSSRC=                                      \
>>       form/CalendarEvent.js                \
>>       form/CephPoolSelector.js            \
>>       form/PermPathSelector.js            \
>> +    form/SpiceEnhancementSelector.js        \
>>       dc/Tasks.js                    \
>>       dc/Log.js                    \
>>       panel/StatusPanel.js                \
>> diff --git a/www/manager6/form/SpiceEnhancementSelector.js 
>> b/www/manager6/form/SpiceEnhancementSelector.js
>> new file mode 100644
>> index 00000000..cbafd502
>> --- /dev/null
>> +++ b/www/manager6/form/SpiceEnhancementSelector.js
>> @@ -0,0 +1,72 @@
>> +Ext.define('PVE.form.SpiceEnhancementSelector', {
>> +    extend: 'Proxmox.panel.InputPanel',
>> +    alias: 'widget.pveSpiceEnhancementSelector',
>> +    insideWizard: false,
>> +
>> +    initComponent: function() {
>> +    var me = this;
>> +        me.items = [
>> +        {
>> +        xtype: 'displayfield',
>> +        value: gettext('Spice enhancements') + ':',
>> +        hidden: !me.insideWizard
>> +        },
>> +        {
>> +        xtype: 'proxmoxcheckbox',
>> +        itemId: 'foldersharing',
>> +        name: 'foldersharing',
>> +        submitValue: false,
>> +        fieldLabel: gettext('Folder sharing'),
>> +        uncheckedValue: 0,
>> +        },
>> +        {
>> +        xtype: 'proxmoxKVComboBox',
>> +        itemId: 'videostreaming',
>> +        name: 'videostreaming',
>> +        submitValue: false,
>> +        value: 'off',
>> +        fieldLabel: gettext('Video streaming'),
>> +        comboItems: [
>> +            ['off', 'off'],
>> +            ['all', 'all'],
>> +            ['filter', 'filter'],
>> +        ],
>> +        },
>> +    ];
>> +
> 
> like stefan already mentioned, i would also like to see the items 
> declared directly on the class isntead of in the initcomponent
> 
> if (as i guess) you had problems with the '!me.insideWizard',
> look at our 'cbind' mixin and what it can do
> 
> may result in a little more intial work on your side, but
> should result in cleaner code

Thanks for the hint with cbind!
> 
>> +    me.callParent();
>> +    },
>> +
>> +    // handle submitted values manually to work in the VM create 
>> wizard as well.
>> +    // without submitValue = false the fields would be added to the 
>> config
>> +    onGetValues: function() {
>> +    var me = this;
>> +    if (me.disabled) {
>> +        return;
>> +    }
>> +
>> +    var values = {};
>> +    var foldersharing = me.down('field[name=foldersharing]').getValue();
>> +    var videostreaming = 
>> me.down('field[name=videostreaming]').getValue();
> 
> i am very certain that if you defined items with an 'itemId' you can do
> me.getComponent('itemId-of-component') which is a bit nicer and should 
> be much faster
> 

As discussed in person this is unfortunately not possible because there 
is another container component in in which the item items are and 
getComponent only goes one level deep.

As this is only called when collecting the values on a submit or similar 
actions like opening the summary tab in the VM creation wizard the 
performance impact is negligible.

>> +
>> +    if (videostreaming !== "off") {
>> +        values.videostreaming = videostreaming;
>> +    }
>> +    if (foldersharing) {
>> +        values.foldersharing = 1;
>> +    }
>> +    if (Ext.Object.isEmpty(values)) {
>> +        return { 'delete': 'spice_enhancements' };
>> +    }
>> +    var enhancements = PVE.Parser.printPropertyString(values);
>> +    return { spice_enhancements: enhancements };
>> +    },
>> +
>> +    setValues: function(values) {
>> +    if (values.spice_enhancements) {
>> +        var enhancements = 
>> PVE.Parser.parsePropertyString(values.spice_enhancements);
>> +        enhancements['foldersharing'] = 
>> PVE.Parser.parseBoolean(enhancements['foldersharing'], 0);
>> +        this.callParent([enhancements]);
>> +    }
>> +    },
>> +});
>>
> 
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel at pve.proxmox.com
> https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
> 




More information about the pve-devel mailing list