]>
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 var first_iteration
= true;
128 Ext
.Array
.each(selected
, function(record
) {
129 if (!first_iteration
) {
132 first_iteration
= false;
134 nodes
+= record
.data
.node
;
135 if (record
.data
.priority
) {
136 nodes
+= ':' + record
.data
.priority
;
140 // nodefield change listener calls us again, which results in a
141 // endless recursion, suspend the event temporary to avoid this
142 nodefield
.suspendEvent('change');
143 nodefield
.setValue(nodes
);
144 nodefield
.resumeEvent('change');
149 xtype
: me
.isCreate
? 'textfield' : 'displayfield',
151 value
: me
.groupId
|| '',
161 xtype
: 'proxmoxcheckbox',
164 fieldLabel
: 'restricted',
167 xtype
: 'proxmoxcheckbox',
170 fieldLabel
: 'nofailback',
178 fieldLabel
: gettext('Comment'),
187 Ext
.define('PVE.ha.GroupEdit', {
188 extend
: 'Proxmox.window.Edit',
192 initComponent: function() {
195 me
.isCreate
= !me
.groupId
;
198 me
.url
= '/api2/extjs/cluster/ha/groups';
201 me
.url
= '/api2/extjs/cluster/ha/groups/' + me
.groupId
;
205 var ipanel
= Ext
.create('PVE.ha.GroupInputPanel', {
206 isCreate
: me
.isCreate
,
211 subject
: gettext('HA Group'),
219 success: function(response
, options
) {
220 var values
= response
.result
.data
;
222 ipanel
.setValues(values
);