resources/Editors/Editor.Roo.LayoutDialog.bjs
[app.Builder.js] / resources / Editors / Editor.Roo.LayoutDialog.js
index 5f900d9..b02dbb7 100644 (file)
@@ -342,6 +342,7 @@ Editor.Roo.LayoutDialog = new Roo.XComponent({
           '|xns' : 'Roo.data',
           data : [ 
               [ 'ComboBox', "ComboBox"],
+              [ 'ComboBoxArray', "ComboBoxArray"],
               [ 'TextField' , "TextField"],
               [ 'NumberField', "NumberField"],
               [ 'TextArea', "TextArea"],
@@ -526,13 +527,37 @@ Editor.Roo.LayoutDialog = new Roo.XComponent({
    
        var fields = _this.grid.dataSource.reader.recordType.prototype.fields;
        
-       
        var d = [];
    
        for (var k in data) { 
            var r = data[k];
            var has_s = typeof(r.relates_to_schema) != 'undefined';
            
+           Roo.log(r.Type);
+           var field_type = 'TextField';
+           
+           if (r.Type == 'text'){
+               field_type = 'TextArea';
+           }
+           
+           if(r.Type == 'date' || r.Type == 'datetime'){
+               field_type = 'DateField';
+           }
+               
+           var regex = /(.*?)\((.*?)\)/;
+           
+           if(regex.test(r.Type)){
+               var type_match = regex.exec(r.Type);
+               
+               if(type_match[1] == 'int'){
+                   field_type = 'NumberField';
+                       
+                   if(type_match[2] * 1  < 11){
+                       field_type = 'Checkbox';
+                   }
+               }
+           } 
+           
            var rt = '', rc = '', rs = [];
            
            if(has_s){
@@ -545,15 +570,23 @@ Editor.Roo.LayoutDialog = new Roo.XComponent({
                    rs.push([rr.Field]);
                    
                }
+               
+               field_type = 'ComboBox';
            }
            
+           if(r.Field == 'id'){ // usually 'id' is hidden on the form
+               field_type = 'Hidden';
+           }
+           
+           
+           
            var o = {
                active : !has_s,
                dataIndex : r.Field,
                type : r.Type,
                title : r.Field,
                width : 200,
-               ftype : 'TextField',
+               ftype : field_type,
                display_field : rc, //r.Field + '_display_name',
                relates_to_table : rt,
                relates_to_col : rc,
@@ -627,9 +660,18 @@ Editor.Roo.LayoutDialog = new Roo.XComponent({
                delete el.fieldLabel;
                delete el.width;
            }
+           
            if (el.xtype == 'ComboBox') {
            
-   
+               el.alwaysQuery = true;
+               el.triggerAction = 'all';
+               el.forceSelection = true;
+               el.selectOnFocus = true;
+               el.minChars = 2;
+               el.editable = true;
+               el.emptyText = 'Select a value';
+               
+               
                el.queryParam  = 'query[' + rec.data.display_field + ']';// SET WHEN USED
                
                el.hiddenName = rec.data.dataIndex // SET WHEN USED eg. project_id
@@ -681,6 +723,66 @@ Editor.Roo.LayoutDialog = new Roo.XComponent({
            
            }
            
+           if (el.xtype == 'ComboBoxArray') {
+           
+               el.hiddenName = rec.data.dataIndex;
+               el.name = rec.data.dataIndex + '_' + rec.data.display_field;
+               
+               el.items = [
+                   {
+                       'alwaysQuery' : true,
+                       'triggerAction' : 'all',
+                       'forceSelection': true,
+                       'selectOnFocus' : true,
+                       'minChars' :2,
+                       'editable' : true,
+                       'emptyText' : 'Select a value',
+                       'displayField' : rec.data.display_field,
+                       'valueField' : rec.data.relates_to_col,
+                       'xtype' : 'ComboBox',
+                       '$ xns' : 'Roo.form',
+                       '* prop' : 'combo',
+                       'queryParam' : 'query[' + rec.data.display_field + ']',
+                       'tpl' : '<div class="x-grid-cell-text x-btn button"><b>{' + rec.data.display_field +'}</b> </div>',
+                       
+                       items : [
+                           {
+                               '*prop' : 'store',
+                               'xtype' : 'Store',
+                               '|xns' : 'Roo.data',
+                               'remoteSort' : true,
+                               '|sortInfo' : '{ direction : \'ASC\', field: \'id\' }',
+                               listeners : {
+                                   '|beforeload' : 'function (_self, o)' +
+                                   "{\n" +
+                                   "    o.params = o.params || {};\n" +
+                                   "    // set more here\n" +
+                                   "}\n"
+                               },
+                               items : [
+                                   {
+                                       '*prop' : 'proxy',
+                                       'xtype' : 'HttpProxy',
+                                       'method' : 'GET',
+                                       '|xns' : 'Roo.data',
+                                       '|url' : "baseURL + '/Roo/" + rec.data.relates_to_table + ".php'",
+                                   },
+                                   {
+                                       '*prop' : 'reader',
+                                       'xtype' : 'JsonReader',
+                                       '|xns' : 'Roo.data',
+                                       'id' : 'id',
+                                       'root' : 'data',
+                                       'totalProperty' : 'total'
+                                   }
+                               
+                               ]
+                           }
+                       ]
+                   }
+               ];
+           }
+           
            if (el.xtype == 'HtmlEditor') {
                el.height = 250,
                el.resizable = 's',