resources/Editors/Editor.Roo.LayoutDialog.bjs
[app.Builder.js] / resources / Editors / Editor.Roo.LayoutDialog.js
index 53fef61..01f0b99 100644 (file)
@@ -9,15 +9,16 @@ Editor.Roo.LayoutDialog = new Roo.XComponent({
  _strings : {
   'b021df6aac4654c454f46c77646e745f' :"Label",
   '793548e77e782c209a78ed67f255b5e2' :"Display Field",
+  '040076bde7f6b3387448e32b66c2eee0' :"To BJS",
   '4ce58cbe362a5d7b156992a496d55bf3' :"Database Column",
   '189efd19c4153526994a6d7ea5f6f068' :"Field Type",
   '2f616612593df62aeed112de4f03110e' :"Edit a Grid",
   '0ccc2bf3fb98387c23b6ca5500244d6e' :"Use ",
   'c671c787b49f50a3ace9fdc5bd597825' :"core_enum",
-  'dc30ec20708ef7b0f641ef78b7880a15' :"DEBUG",
   '32954654ac8fe66a1d09be19001de2d4' :"Width",
   'a1fa27779242b4902f7ae3bdd5c6d508' :"Type",
-  '6e7376dca68a2386a8737944196ab491' :"Create / Edit Grid"
+  '6e7376dca68a2386a8737944196ab491' :"Create / Edit Grid",
+  'f541774a08fc687f6e2016c77a6ebca5' :"Load Data"
  },
 
   part     :  ["Editors", "LayoutDialog" ],
@@ -74,13 +75,12 @@ Editor.Roo.LayoutDialog = new Roo.XComponent({
       },
       {
        '|xns' : 'Roo.Toolbar',
-       text : _this._strings['dc30ec20708ef7b0f641ef78b7880a15'],
+       text : _this._strings['f541774a08fc687f6e2016c77a6ebca5'],
        xns : Roo.Toolbar,
        xtype : 'Button',
        listeners : {
         click : function (_self, e)
          {
-             Roo.log(_this.ftype_combo);
              var data = {    
                  "manage_scale_id": {
                      "Field": "manage_scale_id",
@@ -240,9 +240,29 @@ Editor.Roo.LayoutDialog = new Roo.XComponent({
                  }
              };
              
-             Roo.log('debuging...');
+             Roo.log('Loading Data...');
              _this.panel.loadData(data);
          
+         }
+       }
+      },
+      {
+       '|xns' : 'Roo.Toolbar',
+       xns : Roo.Toolbar,
+       xtype : 'Separator'
+      },
+      {
+       '|xns' : 'Roo.Toolbar',
+       text : _this._strings['040076bde7f6b3387448e32b66c2eee0'],
+       xns : Roo.Toolbar,
+       xtype : 'Button',
+       listeners : {
+        click : function (_self, e)
+         {
+             
+             Roo.log('Converting to BJS...');
+             _this.panel.toBJS();
+         
          }
        }
       }
@@ -322,6 +342,7 @@ Editor.Roo.LayoutDialog = new Roo.XComponent({
           '|xns' : 'Roo.data',
           data : [ 
               [ 'ComboBox', "ComboBox"],
+              [ 'ComboBoxArray', "ComboBoxArray"] 
               [ 'TextField' , "TextField"],
               [ 'NumberField', "NumberField"],
               [ 'TextArea', "TextArea"],
@@ -379,27 +400,22 @@ Editor.Roo.LayoutDialog = new Roo.XComponent({
          store : {
           '|xns' : 'Roo.data',
           data : [ 
-              [ 'ComboBox', "ComboBox"],
-              [ 'Text' , "TextField"],
-              [ 'Number', "NumberField"],
-              [ 'TextArea', "TextArea"],
-              [ 'Html', "HtmlEntry"]
-              
+              ['id']
           ],
-          fields : [  'ftype', 'fname'],
+          fields : [  'dfield'],
           xns : Roo.data,
           xtype : 'SimpleStore'
          },
          '|xns' : 'Roo.form',
          allowBlank : false,
-         displayField : 'fname',
+         displayField : 'dfield',
          editable : false,
          hiddenName : 'status',
          listWidth : 200,
          mode : 'local',
          name : 'display_field',
          triggerAction : 'all',
-         valueField : 'ftype',
+         valueField : 'dfield',
          width : 150,
          xns : Roo.form,
          xtype : 'ComboBox',
@@ -458,6 +474,17 @@ Editor.Roo.LayoutDialog = new Roo.XComponent({
       }
     ],
     listeners : {
+     beforeedit : function (e)
+      {
+          Roo.log('before edit!!!');
+          Roo.log(e);
+          
+          if(e.field != 'display_field'){
+              return;
+          }
+          
+          _this.grid.colModel.getCellEditor(e.column, e.row).field.store.loadData(e.record.data.relates_to_schema);
+      },
      cellclick : function (_self, rowIndex, columnIndex, e)
       {
       
@@ -500,14 +527,39 @@ Editor.Roo.LayoutDialog = new Roo.XComponent({
    
        var fields = _this.grid.dataSource.reader.recordType.prototype.fields;
        
-       var ar = [];
+       
+       var d = [];
+   
        for (var k in data) { 
            var r = data[k];
            var has_s = typeof(r.relates_to_schema) != 'undefined';
            
-           var rt = '',
-           var rc = '',
-           var rs = [],
+           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){
                for (var kk in r.relates_to_schema) {         
@@ -519,56 +571,50 @@ 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 : 100,
-               ftype : 'TextField',
-               display_field : r.Field + '_display_name',
-               relates_to_table : '',
-               relates_to_col : '',
-               relates_to_schema : []
+               width : 200,
+               ftype : field_type,
+               display_field : rc, //r.Field + '_display_name',
+               relates_to_table : rt,
+               relates_to_col : rc,
+               relates_to_schema : rs
            };
            
-           var d = [];
+           d.push(o);
+           
+       }
+   
+       var ar = [];
+       
+       Roo.each(d, function(dd){
+   
+           var a = [];
            
            for(var j = 0; j < fields.length; j++){
                var f = fields.items[j];
                
-               if(o.hasOwnProperty(f.name)){
-                   d.push(o[f.name]);
+               if(dd.hasOwnProperty(f.name)){
+                   a.push(dd[f.name]);
                }
            }
            
-           if (has_s) {
-               
-           }
-           
-           
-           
-           ar.push(d);
-           
-           /*
-           ar.push([ !has_s , r.Field, r.Type,  r.Field, 100 , 'TextField', r.Field + '_display_name'] );
-           if (!has_s) {
-               continue;
-           }
-           
-           for (var kk in r.relates_to_schema) {         
-               var rr = r.relates_to_schema[kk];
-               if (rr.Field == r.relates_to_col) {
-                   continue;
-               }
-               ar.push([ false, r.Field + '_'+ rr.Field, rr.Type,  rr.Field, 100] );
-           }
-           */
-       }
+           ar.push(a);
+       });
        
-       Roo.log(ar);
        this.schema = data;
        
        //alert("IPC:TEST:" + JSON.stringify(ar));
@@ -597,33 +643,37 @@ Editor.Roo.LayoutDialog = new Roo.XComponent({
            var el = {
                fieldLabel : rec.data.title,
                name : rec.data.dataIndex,
-               width : 200, //row.type == 'string' ? 200 : 75,
+               width : rec.data.width,
                '|xns' : 'Roo.form',
                xtype : rec.data.ftype
            }
-            if (xtype == 'DateField') {
+            if (el.xtype == 'DateField') {
                el.format = 'Y-m-d';
                el.useIso = true;
                el.width = 100;
            }
            
-           if (xtype == 'TextArea') {
+           if (el.xtype == 'TextArea') {
                el.height = 100;
            }
            
-           if (xtype == 'Hidden') {
+           if (el.xtype == 'Hidden') {
                delete el.fieldLabel;
                delete el.width;
            }
-           if (xtype == 'Combobox') {
+           
+           if (el.xtype == 'ComboBox') {
            
    
-               el.queryParam  = 'query[' + combofields_name + ']';// SET WHEN USED
+               el.queryParam  = 'query[' + rec.data.display_field + ']';// SET WHEN USED
                
                el.hiddenName = rec.data.dataIndex // SET WHEN USED eg. project_id
-               el.displayField = combofields_name; // SET WHEN USED eg. project_id
-               el.name  = old.name + '_' + combofields_name; // SET WHEN USED eg. project_id_name
-               el.tpl = '<div class="x-grid-cell-text x-btn button"><b>{' + combofields_name +'}</b> </div>'; // SET WHEN USED
+               el.name  = rec.data.dataIndex + '_' + rec.data.display_field; // SET WHEN USED eg. project_id_name
+               
+               el.displayField = rec.data.display_field // SET WHEN USED eg. project_id
+               el.valueField = rec.data.relates_to_col 
+               
+               el.tpl = '<div class="x-grid-cell-text x-btn button"><b>{' + rec.data.display_field +'}</b> </div>'; // SET WHEN USED
              
            
               el.items = [
@@ -647,7 +697,51 @@ Editor.Roo.LayoutDialog = new Roo.XComponent({
                                'xtype' : 'HttpProxy',
                                'method' : 'GET',
                                '|xns' : 'Roo.data',
-                               '|url' : "baseURL + '/Roo/" + reftable + ".php'",
+                               '|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 == 'ComboBoxArray') {
+           
+               el.hiddenName = rec.data.dataIndex;
+               el.name = rec.data.dataIndex + '_' + rec.data.display_field;
+               
+               el.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'",
                            },
                            
                            {
@@ -663,13 +757,43 @@ Editor.Roo.LayoutDialog = new Roo.XComponent({
                        ]
                    }
                ];
+               
+               el.queryParam  = 'query[' + rec.data.display_field + ']';// SET WHEN USED
+               
+               el.hiddenName = rec.data.dataIndex // SET WHEN USED eg. project_id
+               el.name  = rec.data.dataIndex + '_' + rec.data.display_field; // SET WHEN USED eg. project_id_name
+               
+               el.displayField = rec.data.display_field // SET WHEN USED eg. project_id
+               el.valueField = rec.data.relates_to_col 
+               
+               el.tpl = '<div class="x-grid-cell-text x-btn button"><b>{' + rec.data.display_field +'}</b> </div>'; // SET WHEN USED
+             
+           
+              
            
            }
            
+           if (el.xtype == 'HtmlEditor') {
+               el.height = 250,
+               el.resizable = 's',
+               el.items = [
+                   {
+                       '* prop' : 'toolbars[]',
+                       '|xns' : 'Roo.form.HtmlEditor',
+                       'xtype' : 'ToolbarContext'
+                   },
+                   {
+                       '* prop' : 'toolbars[]',
+                       '|xns' : 'Roo.form.HtmlEditor',
+                       'xtype' : 'ToolbarStandard'
+   
+                  }
+               ]
+           }
            
            formElements.push(el);
            
-           formHeight += rec.data.ftype == 'TextArea' ? 100 : 30;
+           formHeight += rec.data.ftype == 'TextArea' ? 100 : ((rec.data.ftype == 'HtmlEditor') ? 250 : 30);
            
            
        });