On 24.01.22 16:32, Thomas Lamprecht wrote:
> On 21.01.22 15:51, Aaron Lauterer wrote:
>> +        success: function(response, opts) {
>> +            let data = response.result.data;
>> +
>> +            let classes = new Set();
>> +            for (const match of 
>> data.matchAll(/^device\s[0-9]*\sosd\.[0-9]*\sclass\s(.*)$/gim)) {
>> +                classes.add(match[1]);
>> +            }
>> +            for (const v of ['hdd', 'ssd', 'nvme']) {
>> +                classes.delete(v);
>> +            }
>> +            for (const v of classes) {
>> +                deviceClasses.push([v, v]);
>> +            }
>> +            
>> me.down('field[name=crush-device-class]').setComboItems(deviceClasses);
> 
> Something like the following would be a bit more concise while also only 
> changing
> the field if required, I did not test this at all besides verifying that 
> eslint
> eats it though ^^
> 
> success: function({ result: { data } }) {
>     let classes = 
> data.matchAll(/^device\s[0-9]*\sosd\.[0-9]*\sclass\s(.*)$/gim)
>         .filter(v => !['hdd', 'ssd', 'nvme'].includes(v))
>         .map(v => [v, v]);

Oh, forget to filter repeated clases here, so that would actually be something 
along
the lines of:

let classes = [...new Set(
    data.matchAll(/^device\s[0-9]*\sosd\.[0-9]*\sclass\s(.*)$/gim)
        .filter(v => !['hdd', 'ssd', 'nvme'].includes(v))
)].map(v => [v, v]);

> 
>     if (classes.length) {
>         let kvField = 
> me.down('field[name=crush-device-class]').setComboItems(classes);
>         classes.unshift(kvField.comboItems);
> 
>         kvField.setComboItems(classes);
>     }
> },



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

Reply via email to