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