From 8ebee03ff9c7a82ba7f370c4860804c95af4951b Mon Sep 17 00:00:00 2001 From: Alan Knowles Date: Fri, 17 Apr 2015 17:26:59 +0800 Subject: [PATCH] resources/Editors/Editor.Roo.grid.Grid.bjs resources/Editors/Editor.Roo.grid.Grid.js --- resources/Editors/Editor.Roo.grid.Grid.bjs | 2 +- resources/Editors/Editor.Roo.grid.Grid.js | 62 +++++++++++++++++++++- 2 files changed, 62 insertions(+), 2 deletions(-) diff --git a/resources/Editors/Editor.Roo.grid.Grid.bjs b/resources/Editors/Editor.Roo.grid.Grid.bjs index 6e5649197..53fb68aec 100644 --- a/resources/Editors/Editor.Roo.grid.Grid.bjs +++ b/resources/Editors/Editor.Roo.grid.Grid.bjs @@ -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", diff --git a/resources/Editors/Editor.Roo.grid.Grid.js b/resources/Editors/Editor.Roo.grid.Grid.js index fb45ba83a..54e39813a 100644 --- a/resources/Editors/Editor.Roo.grid.Grid.js +++ b/resources/Editors/Editor.Roo.grid.Grid.js @@ -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' + } ] }, { -- 2.39.2