[pve-devel] [PATCH manager v2 5/5] ui: ha: add ha rules components and menu entry
Michael Köppl
m.koeppl at proxmox.com
Tue Jul 1 16:38:01 CEST 2025
On 6/20/25 16:31, Daniel Kral wrote:
> +
> + me.columns.unshift(
> + {
> + header: gettext('State'),
> + xtype: 'actioncolumn',
> + width: 25,
> + align: 'center',
> + dataIndex: 'state',
> + items: [
> + {
> + isActionDisabled: (table, rowIndex, colIndex, item, { data }) =>
> + data.state !== 'contradictory',
> + handler: (table, rowIndex, colIndex, item, event, { data }) => {
> + Ext.create('PVE.ha.RuleErrorsModal', {
> + autoShow: true,
> + errors: data.errors ?? {},
> + });
Even though not super important to this series, I think you could avoid
defining a new modal here by doing something like this:
let listItems = Object.entries(data.errors ?? {})
.flatMap(([opt, messages]) => messages.map(message =>
`<li>${Ext.htmlEncode(`${opt}: ${message}`)}</li>`))
.join('');
Ext.Msg.show({
title: gettext("Rule errors"),
icon: Ext.Msg.WARNING,
msg: `<div>
<p>${gettext('The HA rule has the following errors:')}</p>
<ul style="list-style-position: inside; padding-left: 0;">
${listItems}
</ul>
</div>`,
});
Just a suggestion, of course. If you plan to keep the RuleErrorsModal,
the padding made it seem a bit off compared to other dialogs throughout
the manager.
> + },
> + getTip: (value) => {
> + switch (value) {
> + case 'contradictory':
> + return gettext('Errors');
> + case 'disabled':
> + return gettext('Disabled');
> + default:
> + return gettext('Enabled');
> + }
> + },
> + getClass: (value) => {
> + let iconName = 'check';
> +
> + if (value === 'contradictory') {
> + iconName = 'exclamation-triangle';
> + } else if (value === 'disabled') {
> + iconName = 'minus';
> + }
> +
> + return `fa fa-${iconName}`;
> + },
> + },
> + ],
> + },
> + {
> + header: gettext('Rule'),
> + width: 200,
> + dataIndex: 'rule',
> + },
> + );
> +
> + me.columns.push({
> + header: gettext('Comment'),
> + flex: 1,
> + renderer: Ext.String.htmlEncode,
> + dataIndex: 'comment',
> + });
> +
> + me.callParent();
> + },
> +});
> +
More information about the pve-devel
mailing list