/**
* @class Roo.form.ComboBoxArray
- * @extends Roo.form.ComboBox
+ * @extends Roo.form.TextField
* A facebook style adder... for lists of email / people / countries etc...
* pick multiple items from a combo box, and shows each one.
*
*/
name : false,
/**
- * @cfg {String} name The hidden name of the field, often contains an comma seperated list of names
+ * @cfg {String} hiddenName The hidden name of the field, often contains an comma seperated list of names
*/
hiddenName : false,
items : false,
// private - the hidden field el.
hiddenEl : false,
-
+ // private - the filed el..
el : false,
//validateValue : function() { return true; }, // all values are ok!
return;
// not sure if this is needed..
- this.combo.onResize(w,h);
+ //this.combo.onResize(w,h);
if(typeof w != 'number'){
// we do not handle it!?!?
addItem: function(rec)
{
- var idField = this.combo.valueField;
+ var valueField = this.combo.valueField;
var displayField = this.combo.displayField;
- if (this.items.indexOfKey(rec[idField]) > -1) {
+ if (this.items.indexOfKey(rec[valueField]) > -1) {
//console.log("GOT " + rec.data.id);
return;
}
var x = new Roo.form.ComboBoxArray.Item({
//id : rec[this.idField],
data : rec,
- nameField : displayField ,
+ displayField : displayField ,
tipField : displayField ,
cb : this
});
// use the
- this.items.add(rec[idField],x);
+ this.items.add(rec[valueField],x);
// add it before the element..
this.updateHiddenEl();
x.render(this.outerWrap, this.wrap.dom);
reset : function()
{
- Roo.form.ComboBoxArray.superclass.reset.call(this);
+ //Roo.form.ComboBoxArray.superclass.reset.call(this);
this.items.each(function(f) {
f.remove();
});
+ this.el.dom.value = '';
if (this.hiddenEl) {
this.hiddenEl.dom.value = '';
}
setValue: function(v) // not a valid action - must use addItems..
{
+ this.reset();
+
+
- if (this.store.isLocal) {
+ if (this.store.isLocal) && (typeof(v) == 'string')) {
// then we can use the store to find the values..
// comma seperated at present.. this needs to allow JSON based encoding..
this.hiddenEl.value = v;
var v_ar = [];
Roo.each(v.split(','), function(k) {
- Roo.log("CHECK " + this.store.valueField + ',' + k);
- var li = this.store.query(this.store.valueField, k);
+ Roo.log("CHECK " + this.valueField + ',' + k);
+ var li = this.store.query(this.valueField, k);
if (!li.length) {
return;
}
add = {};
- add[this.store.valueField] = k;
- add[this.store.displayField] = li.item(0).data[this.store.displayField];
+ add[this.valueField] = k;
+ add[this.displayField] = li.item(0).data[this.displayField];
this.addItem(add);
}, this)
},
setFromData: function(v)
{
- Roo.log(v);
+ // this recieves an object, if setValues is called.
+ this.reset();
+ this.el.dom.value = v[this.displayField];
+ this.hiddenEl.dom.value = v[this.valueField];
+ if (typeof(v[this.valueField]) != 'string' || !v[this.valueField].length) {
+ return;
+ }
+ var keys = v[this.valueField].split(',');
+ var display = v[this.displayField].split(',');
+ for (var i = 0 ; i < keys.length; i++) {
+
+ add = {};
+ add[this.valueField] = keys[i];
+ add[this.displayField] = display[i];
+ this.addItem(add);
+ }
},
Roo.extend(Roo.form.ComboBoxArray.Item, Roo.BoxComponent, {
data : {},
cb: false,
- nameField : false,
+ displayField : false,
tipField : false,
this.el.child('div').dom.innerHTML = this.cb.renderer ?
this.cb.renderer(this.data) :
- String.format('{0}',this.data[this.nameField]);
+ String.format('{0}',this.data[this.displayField]);
this.el.child('div').dom.setAttribute('qtip',