resources/Editors/Editor.Roo.grid.Grid.bjs
authorAlan Knowles <alan@roojs.com>
Fri, 17 Apr 2015 09:26:59 +0000 (17:26 +0800)
committerAlan Knowles <alan@roojs.com>
Fri, 17 Apr 2015 09:26:59 +0000 (17:26 +0800)
resources/Editors/Editor.Roo.grid.Grid.js

resources/Editors/Editor.Roo.grid.Grid.bjs
resources/Editors/Editor.Roo.grid.Grid.js

index 6e56491..53fb68a 100644 (file)
@@ -21,7 +21,7 @@
     "|activate" : "function() {\n    _this.panel = this;\n    if (_this.grid) {\n        _this.grid.footer.onClick('first');\n    }\n}"
    },
    "| function loadData" : "function(data) { \n\n     alert(\"IPC:TEST:\" + JSON.stringify(data,null,4));\n    var ar = [];\n    for (var k in data) { \n        var r = data[k];\n        var has_s = typeof(r.relates_to_schema) != 'undefined'\n        ar.push([ !has_s , r.Field, r.Type,  r.Field, 100] );\n        if (!has_s) {\n            continue;\n        }\n        for (var kk in r.relates_to_schema) {         \n            var rr = r.relates_to_schema[kk];\n            if (rr.Field == r.relates_to_col) {\n                continue;\n            }\n            ar.push([ false, r.Field + '_'+ rr.Field, rr.Type,  rr.Field, 100] );\n        }\n    }\n    \n    alert(\"IPC:TEST:\" + JSON.stringify(ar));\n    this.grid.dataSource.loadData(ar);\n}",
-   "| function toBJS" : "function() { \n\n// convert the selected cells into a BJS data ready to send back to the UI..\n   \n    this.table = \"XXX\";\n    this.firstTxtCol = \"XXX\";\n   \n   \n    var jreader = {};\n    var     colmodel = [];\n\n    alert(\"IPC:OUT:\" + JSON.stringify({\n        '|xns' : 'Roo',\n        xtype : \"GridPanel\",\n        \"title\": this.table,\n        \"fitToframe\": true,\n        \"fitContainer\": true,\n        \"tableName\": this.table,\n        \"background\": true,\n        \"region\" : 'center',\n        \"listeners\": {\n            \"|activate\": \"function() {\\n    _this.panel = this;\\n    if (_this.grid) {\\n        _this.grid.footer.onClick('first');\\n    }\\n}\"\n        },\n        \"items\": [\n            {\n                \"*prop\": \"grid\",\n                \"xtype\": \"Grid\",\n                \"autoExpandColumn\": this.firstTxtCol,\n                \"loadMask\": true,\n                \"listeners\": {\n                    \"|render\": \"function() \\n\" +\n                        \"{\\n\" +\n                        \"    _this.grid = this; \\n\" +\n                        \"    //_this.dialog = Pman.Dialog.FILL_IN\\n\" +\n                        \"    if (_this.panel.active) {\\n\" +\n                        \"       this.footer.onClick('first');\\n\" +\n                        \"    }\\n\" +\n                        \"}\",\n                    \"|rowdblclick\": \"function (_self, rowIndex, e)\\n\" + \n                        \"{\\n\" + \n                        \"    if (!_this.dialog) return;\\n\" + \n                        \"    _this.dialog.show( this.getDataSource().getAt(rowIndex).data, function() {\\n\" + \n                        \"        _this.grid.footer.onClick('first');\\n\" + \n                        \"    }); \\n\" + \n                        \"}\\n\"\n                },\n                \"|xns\": \"Roo.grid\",\n\n                \"items\": [\n                    {\n                        \"*prop\": \"dataSource\",\n                        \"xtype\": \"Store\",\n                         remoteSort : true,\n                        '|sortInfo' : \"{ field : '\" + this.firstTxtCol  +  \"', direction: 'ASC' }\", \n                        \"|xns\": \"Roo.data\",\n                        \"items\": [\n                            \n                            {\n                                \"*prop\": \"proxy\",\n                                \"xtype\": \"HttpProxy\",\n                                \"method\": \"GET\",\n                                \"|url\": \"baseURL + '/Roo/\" + this.table + \".php'\",\n                                \"|xns\": \"Roo.data\"\n                            },\n                            jreader\n                        ]\n                    },\n                    {\n                        \"*prop\": \"footer\",\n                        \"xtype\": \"PagingToolbar\",\n                        \"pageSize\": 25,\n                        \"displayInfo\": true,\n                        \"displayMsg\": \"Displaying \" + this.table + \"{0} - {1} of {2}\",\n                        \"emptyMsg\": \"No \" + this.table + \" found\",\n                        \"|xns\": \"Roo\"\n                    },\n                    {\n                        \"*prop\": \"toolbar\",\n                        \"xtype\": \"Toolbar\",\n                        \"|xns\": \"Roo\",\n                        \"items\": [\n                            {\n                                \"text\": \"Add\",\n                                \"xtype\": \"Button\",\n                                \"cls\": \"x-btn-text-icon\",\n                                \"|icon\": \"Roo.rootURL + 'images/default/dd/drop-add.gif'\",\n                                \"listeners\": {\n                                    \"|click\": \"function()\\n\"+\n                                        \"{\\n\"+\n                                        \"    if (!_this.dialog) return;\\n\" +\n                                        \"    _this.dialog.show( { id : 0 } , function() {\\n\"+\n                                        \"        _this.grid.footer.onClick('first');\\n\"+\n                                        \"   }); \\n\"+\n                                        \"}\\n\"\n                                },\n                                \"|xns\": \"Roo.Toolbar\"\n                            },\n                             // fill ????\n                            {\n                                \"text\": \"Delete\",\n                                \"cls\": \"x-btn-text-icon\",\n                                \"|icon\": \"rootURL + '/Pman/templates/images/trash.gif'\",\n                                \"xtype\": \"Button\",\n                                \"listeners\": {\n                                    \"|click\": \"function()\\n\"+\n                                        \"{\\n\"+\n                                        \"     Pman.genericDelete(_this, '\" + this.table + \"'); \\n\"+\n                                        \"}\\n\"+\n                                        \"        \"\n                                },\n                                \"|xns\": \"Roo.Toolbar\"\n                            }\n                        ]\n                    }, // end toolbar\n                ].concat( colmodel)\n            }\n        ]\n        \n        \n    }, null, 4));\n\n}",
+   "| function toBJS" : "function() { \n\n// convert the selected cells into a BJS data ready to send back to the UI..\n   \n    this.table = \"XXX\";\n    this.firstTxtCol = \"XXX\";\n   \n   \n    var map = {\n        'date' : 'date',\n        'datetime' : 'date',\n        'timestamp with time zone' : 'date',\n        'timestamp without time zone' : 'date',\n        'time' : 'string', //bogus\n        'int' : 'int',\n        'integer' : 'int',\n        'bigint' : 'int',\n        'double' : 'float',\n        'tinyint' : 'int',\n        'smallint' : 'int',\n        'decimal' : 'float',\n        'float' : 'float',\n        'numeric' : 'float',\n        'char' : 'string',\n        'character' : 'string',\n        'character varying' : 'string',\n        'varchar' : 'string',\n        'text' : 'string',\n        'longtext' : 'string',\n        'tinytext' : 'string',\n        'mediumtext' : 'string',\n        'enum' : 'string',\n        'timestamp' : 'number',\n        'blob' : 'text',\n        'bytea' : 'text',\n        'boolean' : 'int',\n        'text[]' : 'string',\n        \n    }\n    var jreader = {};\n    var     colmodel = [];\n    this.grid.dataStore.each(function(rec) {\n        if (!rec.data.active) {\n            return;\n        }\n        \n        \n        \n        colmodel.push({\n            \"xtype\": \"ColumnModel\",\n            \"header\": rec.data.title,\n            \"width\":  row.data.width * 1,\n            \"dataIndex\": row.Field,\n            \"|renderer\": !row.Type.match(/date/i) ? \n                    \"function(v) { return String.format('{0}', v); }\" :\n                    \"function(v) { return String.format('{0}', v ? v.format('d/M/Y') : ''); }\" , // special for date\n            \"|xns\": \"Roo.grid\",\n            \"*prop\": \"colModel[]\"\n        });\n    });\n    \n    \n    \n\n    alert(\"IPC:OUT:\" + JSON.stringify({\n        '|xns' : 'Roo',\n        xtype : \"GridPanel\",\n        \"title\": this.table,\n        \"fitToframe\": true,\n        \"fitContainer\": true,\n        \"tableName\": this.table,\n        \"background\": true,\n        \"region\" : 'center',\n        \"listeners\": {\n            \"|activate\": \"function() {\\n    _this.panel = this;\\n    if (_this.grid) {\\n        _this.grid.footer.onClick('first');\\n    }\\n}\"\n        },\n        \"items\": [\n            {\n                \"*prop\": \"grid\",\n                \"xtype\": \"Grid\",\n                \"autoExpandColumn\": this.firstTxtCol,\n                \"loadMask\": true,\n                \"listeners\": {\n                    \"|render\": \"function() \\n\" +\n                        \"{\\n\" +\n                        \"    _this.grid = this; \\n\" +\n                        \"    //_this.dialog = Pman.Dialog.FILL_IN\\n\" +\n                        \"    if (_this.panel.active) {\\n\" +\n                        \"       this.footer.onClick('first');\\n\" +\n                        \"    }\\n\" +\n                        \"}\",\n                    \"|rowdblclick\": \"function (_self, rowIndex, e)\\n\" + \n                        \"{\\n\" + \n                        \"    if (!_this.dialog) return;\\n\" + \n                        \"    _this.dialog.show( this.getDataSource().getAt(rowIndex).data, function() {\\n\" + \n                        \"        _this.grid.footer.onClick('first');\\n\" + \n                        \"    }); \\n\" + \n                        \"}\\n\"\n                },\n                \"|xns\": \"Roo.grid\",\n\n                \"items\": [\n                    {\n                        \"*prop\": \"dataSource\",\n                        \"xtype\": \"Store\",\n                         remoteSort : true,\n                        '|sortInfo' : \"{ field : '\" + this.firstTxtCol  +  \"', direction: 'ASC' }\", \n                        \"|xns\": \"Roo.data\",\n                        \"items\": [\n                            \n                            {\n                                \"*prop\": \"proxy\",\n                                \"xtype\": \"HttpProxy\",\n                                \"method\": \"GET\",\n                                \"|url\": \"baseURL + '/Roo/\" + this.table + \".php'\",\n                                \"|xns\": \"Roo.data\"\n                            },\n                            {\n                                '*prop' : 'reader',\n                                'xtype' : 'JsonReader',\n                                '|xns' : 'Roo.data',\n                                'id' : 'id',\n                                'root' : 'data',\n                                'totalProperty' : 'total'\n                            }\n                        ]\n                    },\n                    {\n                        \"*prop\": \"footer\",\n                        \"xtype\": \"PagingToolbar\",\n                        \"pageSize\": 25,\n                        \"displayInfo\": true,\n                        \"displayMsg\": \"Displaying \" + this.table + \"{0} - {1} of {2}\",\n                        \"emptyMsg\": \"No \" + this.table + \" found\",\n                        \"|xns\": \"Roo\"\n                    },\n                    {\n                        \"*prop\": \"toolbar\",\n                        \"xtype\": \"Toolbar\",\n                        \"|xns\": \"Roo\",\n                        \"items\": [\n                            {\n                                \"text\": \"Add\",\n                                \"xtype\": \"Button\",\n                                \"cls\": \"x-btn-text-icon\",\n                                \"|icon\": \"Roo.rootURL + 'images/default/dd/drop-add.gif'\",\n                                \"listeners\": {\n                                    \"|click\": \"function()\\n\"+\n                                        \"{\\n\"+\n                                        \"    if (!_this.dialog) return;\\n\" +\n                                        \"    _this.dialog.show( { id : 0 } , function() {\\n\"+\n                                        \"        _this.grid.footer.onClick('first');\\n\"+\n                                        \"   }); \\n\"+\n                                        \"}\\n\"\n                                },\n                                \"|xns\": \"Roo.Toolbar\"\n                            },\n                             // fill ????\n                            {\n                                \"text\": \"Delete\",\n                                \"cls\": \"x-btn-text-icon\",\n                                \"|icon\": \"rootURL + '/Pman/templates/images/trash.gif'\",\n                                \"xtype\": \"Button\",\n                                \"listeners\": {\n                                    \"|click\": \"function()\\n\"+\n                                        \"{\\n\"+\n                                        \"     Pman.genericDelete(_this, '\" + this.table + \"'); \\n\"+\n                                        \"}\\n\"+\n                                        \"        \"\n                                },\n                                \"|xns\": \"Roo.Toolbar\"\n                            }\n                        ]\n                    }, // end toolbar\n                ].concat( colmodel)\n            }\n        ]\n        \n        \n    }, null, 4));\n\n}",
    "fitToframe" : true,
    "background" : false,
    "region" : "center",
index fb45ba8..54e3981 100644 (file)
@@ -223,8 +223,61 @@ Editor.Roo.grid.Grid = new Roo.XComponent({
        this.firstTxtCol = "XXX";
       
       
+       var map = {
+           'date' : 'date',
+           'datetime' : 'date',
+           'timestamp with time zone' : 'date',
+           'timestamp without time zone' : 'date',
+           'time' : 'string', //bogus
+           'int' : 'int',
+           'integer' : 'int',
+           'bigint' : 'int',
+           'double' : 'float',
+           'tinyint' : 'int',
+           'smallint' : 'int',
+           'decimal' : 'float',
+           'float' : 'float',
+           'numeric' : 'float',
+           'char' : 'string',
+           'character' : 'string',
+           'character varying' : 'string',
+           'varchar' : 'string',
+           'text' : 'string',
+           'longtext' : 'string',
+           'tinytext' : 'string',
+           'mediumtext' : 'string',
+           'enum' : 'string',
+           'timestamp' : 'number',
+           'blob' : 'text',
+           'bytea' : 'text',
+           'boolean' : 'int',
+           'text[]' : 'string',
+           
+       }
        var jreader = {};
        var     colmodel = [];
+       this.grid.dataStore.each(function(rec) {
+           if (!rec.data.active) {
+               return;
+           }
+           
+           
+           
+           colmodel.push({
+               "xtype": "ColumnModel",
+               "header": rec.data.title,
+               "width":  row.data.width * 1,
+               "dataIndex": row.Field,
+               "|renderer": !row.Type.match(/date/i) ? 
+                       "function(v) { return String.format('{0}', v); }" :
+                       "function(v) { return String.format('{0}', v ? v.format('d/M/Y') : ''); }" , // special for date
+               "|xns": "Roo.grid",
+               "*prop": "colModel[]"
+           });
+       });
+       
+       
+       
    
        alert("IPC:OUT:" + JSON.stringify({
            '|xns' : 'Roo',
@@ -279,7 +332,14 @@ Editor.Roo.grid.Grid = new Roo.XComponent({
                                    "|url": "baseURL + '/Roo/" + this.table + ".php'",
                                    "|xns": "Roo.data"
                                },
-                               jreader
+                               {
+                                   '*prop' : 'reader',
+                                   'xtype' : 'JsonReader',
+                                   '|xns' : 'Roo.data',
+                                   'id' : 'id',
+                                   'root' : 'data',
+                                   'totalProperty' : 'total'
+                               }
                            ]
                        },
                        {