Signed-off-by: Stefan Hanreich <s.hanre...@proxmox.com> --- www/manager6/sdn/SubnetEdit.js | 51 +++++++++++++++++++++++++--------- 1 file changed, 38 insertions(+), 13 deletions(-)
diff --git a/www/manager6/sdn/SubnetEdit.js b/www/manager6/sdn/SubnetEdit.js index 4fe16ab92..8851b013a 100644 --- a/www/manager6/sdn/SubnetEdit.js +++ b/www/manager6/sdn/SubnetEdit.js @@ -67,25 +67,37 @@ Ext.define('PVE.sdn.SubnetDhcpRangePanel', { me.initField(); }, + // since value is an array of objects we need to override isEquals here + isEqual: function(value1, value2) { + return JSON.stringify(value1) === JSON.stringify(value2); + }, + getValue: function() { let me = this; let store = me.lookup('grid').getStore(); - let data = []; + let value = []; store.getData() - .each((item) => - data.push(`start-address=${item.data['start-address']},end-address=${item.data['end-address']}`), - ); + .each((item) => { + // needs a deep copy otherwise we run in to ExtJS reference + // shenaningans + value.push({ + 'start-address': item.data['start-address'], + 'end-address': item.data['end-address'], + }); + }); - return data; + return value; }, getSubmitData: function() { let me = this; let data = {}; - let value = me.getValue(); + + let value = me.getValue() + .map((item) => `start-address=${item['start-address']},end-address=${item['end-address']}`); if (value.length) { data[me.getName()] = value; @@ -97,7 +109,19 @@ Ext.define('PVE.sdn.SubnetDhcpRangePanel', { setValue: function(dhcpRanges) { let me = this; let store = me.lookup('grid').getStore(); - store.setData(dhcpRanges); + + let data = []; + + dhcpRanges.forEach((item) => { + // needs a deep copy otherwise we run in to ExtJS reference + // shenaningans + data.push({ + 'start-address': item['start-address'], + 'end-address': item['end-address'], + }); + }); + + store.setData(data); }, getErrors: function() { @@ -113,6 +137,8 @@ Ext.define('PVE.sdn.SubnetDhcpRangePanel', { addRange: function() { let me = this; me.lookup('grid').getStore().add({}); + + me.getView().checkChange(); }, removeRange: function(field) { @@ -120,6 +146,8 @@ Ext.define('PVE.sdn.SubnetDhcpRangePanel', { let record = field.getWidgetRecord(); me.lookup('grid').getStore().remove(record); + + me.getView().checkChange(); }, onValueChange: function(field, value) { @@ -129,6 +157,8 @@ Ext.define('PVE.sdn.SubnetDhcpRangePanel', { record.set(column.dataIndex, value); record.commit(); + + me.getView().checkChange(); }, control: { @@ -249,12 +279,7 @@ Ext.define('PVE.sdn.SubnetEdit', { if (!me.isCreate) { me.load({ success: function(response, options) { - let values = response.result.data; - ipanel.setValues(values); - - if (values['dhcp-range']) { - dhcpPanel.setValue(values['dhcp-range']); - } + me.setValues(response.result.data); }, }); } -- 2.39.2 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel