storing select_options permanent when send with rows

This commit is contained in:
Ralf Becker 2016-04-04 18:36:33 +00:00
parent 501c8318eb
commit d890f4f1a2

View File

@ -442,9 +442,11 @@ var et2_selectbox = (function(){ "use strict"; return et2_inputWidget.extend(
/**
* Set value
*
* @param _value
* @param {string|number} _value
* @param {boolean} _dont_try_set_options true: if _value is not in options, use "" instead of calling set_select_options
* (which would go into an infinit loop)
*/
set_value: function(_value)
set_value: function(_value, _dont_try_set_options)
{
if (typeof _value == "number") _value = ""+_value; // convert to string for consitent matching
if(typeof _value == "string" && (this.options.multiple || this.options.expand_multiple_rows) && _value.match(this._is_multiple_regexp) !== null)
@ -498,11 +500,16 @@ var et2_selectbox = (function(){ "use strict"; return et2_inputWidget.extend(
{
if(this.options.select_options[_value] ||
this.options.select_options.filter &&
this.options.select_options.filter(function(value) {return value == _value;}))
this.options.select_options.filter(function(value) {return value == _value;}) &&
!_dont_try_set_options)
{
// Options not set yet? Do that now, which will try again.
return this.set_select_options(this.options.select_options);
}
else if (_dont_try_set_options)
{
this.value = "";
}
else if (jQuery.isEmptyObject(this.options.select_options))
{
this.egw().debug("warn", "Can't set value to '%s', widget has no options set",_value, this);
@ -737,9 +744,10 @@ var et2_selectbox = (function(){ "use strict"; return et2_inputWidget.extend(
this._appendOptionElement(key, _options[key]);
}
}
this.options.select_options = _options;
// Sometimes value gets set before options
if(this.value || this.options.empty_label) this.set_value(this.value);
if(this.value || this.options.empty_label) this.set_value(this.value, true); // true = dont try to set_options, to avoid an infinit recursion
},
getValue: function() {
@ -1125,7 +1133,7 @@ jQuery.extend(et2_selectbox, //(function(){ "use strict"; return
var parent = widget._parent;
while(parent && !in_nextmatch)
{
in_nextmatch =(parent && parent._type && parent._type === 'nextmatch')
in_nextmatch = parent && parent._type && parent._type === 'nextmatch';
parent = parent._parent;
}
}