roojs-ui.js
[roojs1] / Roo / form / ComboBoxArray.js
index 8655cd9..eeef951 100644 (file)
@@ -7,7 +7,7 @@
 
 /**
  * @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.
  *
@@ -82,7 +82,8 @@ Roo.extend(Roo.form.ComboBoxArray, Roo.form.TextField,
     items  : false,
     // private - the hidden field el.
     hiddenEl : false,
-    
+    // private - the filed el..
+    el : false,
     
     //validateValue : function() { return true; }, // all values are ok!
     //onAddClick: function() { },
@@ -101,6 +102,11 @@ Roo.extend(Roo.form.ComboBoxArray, Roo.form.TextField,
         this.combo = Roo.factory(this.combo, Roo.form);
         this.combo.onRender(ct, position);
         
+        // assigned so form know we need to do this..
+        this.store          = this.combo.store;
+        this.valueField     = this.combo.valueField;
+        this.displayField   = this.combo.displayField ;
+        
         
         this.combo.wrap.addClass('x-cbarray-grp');
         
@@ -170,13 +176,15 @@ Roo.extend(Roo.form.ComboBoxArray, Roo.form.TextField,
     {
         // returns hidden if it's set..
         if (!this.rendered) {return ''};
-        return  this.hiddenListName;
+        return  this.hiddenName ? this.hiddenName : this.name;
         
     },
     
     
     onResize: function(w, h){
         
+        return;
+        // not sure if this is needed..
         this.combo.onResize(w,h);
         
         if(typeof w != 'number'){
@@ -259,15 +267,49 @@ Roo.extend(Roo.form.ComboBoxArray, Roo.form.TextField,
     },
     setValue: function(v) // not a valid action - must use addItems..
     {
-        if (typeof(v) != 'object') {
-            return;
+         
+        
+        if (this.store.isLocal) {
+            // 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.valueField + ',' + k);
+                var li = this.store.query(this.valueField, k);
+                if (!li.length) {
+                    return;
+                }
+                add = {};
+                add[this.valueField] = k;
+                add[this.displayField] = li.item(0).data[this.displayField];
+                
+                this.addItem(add);
+            }, this) 
+            
+                
+            
         }
-        var _this = this;
-        Roo.each(v, function(l) {
-            _this.addItem(l);
-        });
+        
         
     },
+    setFromData: function(v)
+    {
+        // this recieves an object, if setValues is called.
+        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);
+        }
+      
+        
+    },
+    
+    
     validateValue : function(value){
         return Roo.form.ComboBoxArray.superclass.validateValue.call(this, this.getValue());