Roo/form/ComboBoxArray.js
[roojs1] / Roo / form / ComboBoxArray.js
index 7673e21..745b49b 100644 (file)
@@ -49,12 +49,9 @@ Roo.form.ComboBoxArray = function(config)
    
     
 }
- Roo.extend(Roo.form.Hidden, Roo.form.TextField, {
-   
-
 
-});
-Roo.extend(Roo.form.ComboBoxArray, Roo.form.TextField
+Roo.extend(Roo.form.ComboBoxArray, Roo.form.TextField,
 { 
     /**
      * @cfg {Roo.form.Combo} combo The combo box that is wrapped
@@ -86,7 +83,7 @@ Roo.extend(Roo.form.ComboBoxArray, Roo.form.TextField
     // private - the hidden field el.
     hiddenEl : false,
     
-    boxWidth : 200, // use to set the box around the entry..
+    el : false,
     
     //validateValue : function() { return true; }, // all values are ok!
     //onAddClick: function() { },
@@ -95,7 +92,7 @@ Roo.extend(Roo.form.ComboBoxArray, Roo.form.TextField
     {
         
         // create the standard hidden element
-        Roo.form.ComboBoxArray.superclass.onRender.call(this, ct, position);
+        //Roo.form.ComboBoxArray.superclass.onRender.call(this, ct, position);
         
         
         // give fake names to child combo;
@@ -105,6 +102,9 @@ 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.combo.wrap.addClass('x-cbarray-grp');
         
@@ -116,6 +116,9 @@ Roo.extend(Roo.form.ComboBoxArray, Roo.form.TextField
              
         this.hiddenEl = this.combo.wrap.createChild({
             tag: 'input',  type:'hidden' , name: this.hiddenName, value : ''
+        });
+        this.el = this.combo.wrap.createChild({
+            tag: 'input',  type:'hidden' , name: this.name, value : ''
         });
          //   this.el.dom.removeAttribute("name");
         
@@ -123,12 +126,12 @@ Roo.extend(Roo.form.ComboBoxArray, Roo.form.TextField
         this.outerWrap = this.combo.wrap;
         this.wrap = cbwrap;
         
-        this.outerWrap.setWidth(this.boxWidth);
+        this.outerWrap.setWidth(this.width);
         this.outerWrap.dom.removeChild(this.el.dom);
         
         this.wrap.dom.appendChild(this.el.dom);
-        this.outerWrap.dom.removeChild(this.trigger.dom);
-        this.combo.wrap.dom.appendChild(this.trigger.dom);
+        this.outerWrap.dom.removeChild(this.combo.trigger.dom);
+        this.combo.wrap.dom.appendChild(this.combo.trigger.dom);
         
         this.combo.trigger.setStyle('position','relative');
         this.combo.trigger.setStyle('left', '0px');
@@ -171,13 +174,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'){
@@ -204,7 +209,9 @@ Roo.extend(Roo.form.ComboBoxArray, Roo.form.TextField
     
     addItem: function(rec)
     {
-        if (this.items.indexOfKey(rec[this.idField]) > -1) {
+        var idField = this.combo.valueField;
+        var displayField = this.combo.displayField;
+        if (this.items.indexOfKey(rec[idField]) > -1) {
             //console.log("GOT " + rec.data.id);
             return;
         }
@@ -212,12 +219,12 @@ Roo.extend(Roo.form.ComboBoxArray, Roo.form.TextField
         var x = new Roo.form.ComboBoxArray.Item({
             //id : rec[this.idField],
             data : rec,
-            nameField : this.nameField,
-            tipField : this.tipField,
+            nameField : displayField ,
+            tipField : displayField ,
             cb : this
         });
         // use the 
-        this.items.add(rec[this.idField],x);
+        this.items.add(rec[idField],x);
         // add it before the element..
         this.updateHiddenEl();
         x.render(this.outerWrap, this.wrap.dom);
@@ -232,6 +239,7 @@ Roo.extend(Roo.form.ComboBoxArray, Roo.form.TextField
         }
         var ar = [];
         var idField = this.combo.valueField;
+        
         this.items.each(function(f) {
             ar.push(f.data[idField]);
            
@@ -257,9 +265,11 @@ Roo.extend(Roo.form.ComboBoxArray, Roo.form.TextField
     },
     setValue: function(v) // not a valid action - must use addItems..
     {
-        if (typeof(v) != 'object') {
-            return;
-        }
+         
+        Roo.log(v);
+        Roo.log(this.hiddenEl.dom.value);
+        Roo.log(this.el.dom.value);
+        
         var _this = this;
         Roo.each(v, function(l) {
             _this.addItem(l);
@@ -294,25 +304,46 @@ Roo.form.ComboBoxArray.Item = function(config) {
 Roo.extend(Roo.form.ComboBoxArray.Item, Roo.BoxComponent, {
     data : {},
     cb: false,
-    defaultAutoCreate : {tag: 'div', cls: 'x-cbarray-item', cn : [ 
+    nameField : false,
+    tipField : false,
+    
+    
+    defaultAutoCreate : {
+        tag: 'div',
+        cls: 'x-cbarray-item',
+        cn : [ 
             { tag: 'div' },
-            { tag: 'img', width:16, height : 16, src : Roo.BLANK_IMAGE_URL , align: 'center' }
+            {
+                tag: 'img',
+                width:16,
+                height : 16,
+                src : Roo.BLANK_IMAGE_URL ,
+                align: 'center'
+            }
         ]
         
     },
     
  
-    onRender : function(ct, position){
+    onRender : function(ct, position)
+    {
         Roo.form.Field.superclass.onRender.call(this, ct, position);
+        
         if(!this.el){
             var cfg = this.getAutoCreate();
             this.el = ct.createChild(cfg, position);
         }
+        
         this.el.child('img').dom.setAttribute('src', Roo.BLANK_IMAGE_URL);
         
         this.el.child('div').dom.innerHTML = this.cb.renderer ? 
-            this.cb.renderer(this.data) : String.format('{0}',this.data[this.nameField]);
-        this.el.child('div').dom.setAttribute('qtip', String.format('{0}',this.data[this.tipField]));
+            this.cb.renderer(this.data) :
+            String.format('{0}',this.data[this.nameField]);
+        
+            
+        this.el.child('div').dom.setAttribute('qtip',
+                        String.format('{0}',this.data[this.tipField])
+        );
         
         this.el.child('img').on('click', this.remove, this);