]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/ha/GroupEdit.js
1 Ext
.define('PVE.ha.GroupInputPanel', {
2 extend
: 'Proxmox.panel.InputPanel',
3 onlineHelp
: 'ha_manager_groups',
7 onGetValues: function(values
) {
11 values
.type
= 'group';
17 initComponent: function() {
20 let update_nodefield
, update_node_selection
;
22 let sm
= Ext
.create('Ext.selection.CheckboxModel', {
25 selectionchange: function(model
, selected
) {
26 update_nodefield(selected
);
31 let store
= Ext
.create('Ext.data.Store', {
32 fields
: ['node', 'mem', 'cpu', 'priority'],
33 data
: PVE
.data
.ResourceStore
.getNodes(), // use already cached data to avoid an API call
36 reader
: { type
: 'json' },
46 var nodegrid
= Ext
.createWidget('grid', {
53 header
: gettext('Node'),
58 header
: gettext('Memory usage') + " %",
59 renderer
: PVE
.Utils
.render_mem_usage_percent
,
65 header
: gettext('CPU usage'),
66 renderer
: Proxmox
.Utils
.render_cpu
,
73 xtype
: 'widgetcolumn',
74 dataIndex
: 'priority',
78 xtype
: 'proxmoxintegerfield',
83 change: function(numberfield
, value
, old_value
) {
84 let record
= numberfield
.getWidgetRecord();
85 record
.set('priority', value
);
86 update_nodefield(sm
.getSelection());
95 let nodefield
= Ext
.create('Ext.form.field.Hidden', {
99 change: function(field
, value
) {
100 update_node_selection(value
);
103 isValid: function() {
104 let value
= this.getValue();
105 return value
&& value
.length
!== 0;
109 update_node_selection = function(string
) {
110 sm
.deselectAll(true);
112 string
.split(',').forEach(function(e
, idx
, array
) {
113 let [node
, priority
] = e
.split(':');
114 store
.each(function(record
) {
115 if (record
.get('node') === node
) {
116 sm
.select(record
, true);
117 record
.set('priority', priority
);
122 nodegrid
.reconfigure(store
);
125 update_nodefield = function(selected
) {
127 .map(({ data
}) => data
.node
+ (data
.priority
? `:${data.priority}` : ''))
130 // nodefield change listener calls us again, which results in a
131 // endless recursion, suspend the event temporary to avoid this
132 nodefield
.suspendEvent('change');
133 nodefield
.setValue(nodes
);
134 nodefield
.resumeEvent('change');
139 xtype
: me
.isCreate
? 'textfield' : 'displayfield',
141 value
: me
.groupId
|| '',
151 xtype
: 'proxmoxcheckbox',
154 fieldLabel
: 'restricted',
157 xtype
: 'proxmoxcheckbox',
160 fieldLabel
: 'nofailback',
168 fieldLabel
: gettext('Comment'),
177 Ext
.define('PVE.ha.GroupEdit', {
178 extend
: 'Proxmox.window.Edit',
182 initComponent: function() {
185 me
.isCreate
= !me
.groupId
;
188 me
.url
= '/api2/extjs/cluster/ha/groups';
191 me
.url
= '/api2/extjs/cluster/ha/groups/' + me
.groupId
;
195 var ipanel
= Ext
.create('PVE.ha.GroupInputPanel', {
196 isCreate
: me
.isCreate
,
201 subject
: gettext('HA Group'),
209 success: function(response
, options
) {
210 var values
= response
.result
.data
;
212 ipanel
.setValues(values
);