pve-manager/www/manager6/form/KVComboBox.js
Dominik Csapak f2782813cd ext6migrate: fix model behaviour for KVComboBox
we used an empty value for the Key-Value ComboBox for defaults.
With extjs6, if the idProperty of a model is empty, they generate
a name for it, which breaks our logic for submitting
(currently we checked if this is empty, and send a delete command
to our api)
instead, we use the value 'default' and check for it when we submit

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2016-02-29 15:27:15 +01:00

51 lines
1.3 KiB
JavaScript

/* Key-Value ComboBox
*
* config properties:
* comboItems: an array of Key - Value pairs
* deleteEmpty: if set to true (default), an empty value received from the
* comboBox will reset the property to its default value
*/
Ext.define('PVE.form.KVComboBox', {
extend: 'Ext.form.field.ComboBox',
alias: 'widget.pveKVComboBox',
deleteEmpty: true,
comboItems: undefined,
displayField: 'value',
valueField: 'key',
queryMode: 'local',
// overide framework function to implement deleteEmpty behaviour
getSubmitData: function() {
var me = this,
data = null,
val;
if (!me.disabled && me.submitValue) {
val = me.getSubmitValue();
if (val !== null && val !== '' && val !== '__default__') {
data = {};
data[me.getName()] = val;
} else if (me.deleteEmpty) {
data = {};
data['delete'] = me.getName();
}
}
return data;
},
initComponent: function() {
var me = this;
me.store = Ext.create('Ext.data.ArrayStore', {
model: 'KeyValue',
data : me.comboItems,
});
if (me.initialConfig.editable === undefined) {
me.editable = false;
}
me.callParent();
}
});