From eb273e344fee23acbc333c4acc42a71ccee3f177 Mon Sep 17 00:00:00 2001 From: Edward Date: Wed, 6 May 2015 19:03:38 +0800 Subject: [PATCH] resources/Editors/Editor.Roo.LayoutDialog.bjs resources/Editors/Editor.Roo.LayoutDialog.js --- resources/Editors/Editor.Roo.LayoutDialog.bjs | 2 +- resources/Editors/Editor.Roo.LayoutDialog.js | 31 ++++++++++--------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/resources/Editors/Editor.Roo.LayoutDialog.bjs b/resources/Editors/Editor.Roo.LayoutDialog.bjs index 5fe04e734..db66e8a7c 100644 --- a/resources/Editors/Editor.Roo.LayoutDialog.bjs +++ b/resources/Editors/Editor.Roo.LayoutDialog.bjs @@ -25,7 +25,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\n var fields = _this.grid.dataSource.reader.recordType.prototype.fields;\n \n \n var d = [];\n\n for (var k in data) { \n var r = data[k];\n var has_s = typeof(r.relates_to_schema) != 'undefined';\n \n Roo.log(r.Type);\n var field_type = 'TextField';\n \n if (r.Type == 'text'){\n field_type = 'TextArea';\n }\n \n if(r.Type == 'date' || r.Type == 'datetime'){\n field_type = 'DateField';\n }\n \n var regex = /(.*?)\\((.*?)\\)/;\n \n if(regex.test(r.Type)){\n var type_match = regex.exec(r.Type);\n \n if(type_match[1] == 'int'){\n field_type = 'NumberField';\n \n if(type_match[2] * 1 < 11){\n field_type = 'CheckBox';\n }\n }\n } \n \n var rt = '', rc = '', rs = [];\n \n if(has_s){\n for (var kk in r.relates_to_schema) { \n var rr = r.relates_to_schema[kk];\n \n rt = r.relates_to_table;\n rc = r.relates_to_col;\n \n rs.push([rr.Field]);\n \n }\n \n field_type = 'ComboBox';\n }\n \n if(r.Field == 'id'){ // usually 'id' is hidden on the form\n field_type = 'Hidden';\n }\n \n \n \n var o = {\n active : !has_s,\n dataIndex : r.Field,\n type : r.Type,\n title : r.Field,\n width : 200,\n ftype : field_type,\n display_field : rc, //r.Field + '_display_name',\n relates_to_table : rt,\n relates_to_col : rc,\n relates_to_schema : rs\n };\n \n d.push(o);\n \n }\n\n var ar = [];\n \n Roo.each(d, function(dd){\n\n var a = [];\n \n for(var j = 0; j < fields.length; j++){\n var f = fields.items[j];\n \n if(dd.hasOwnProperty(f.name)){\n a.push(dd[f.name]);\n }\n }\n \n ar.push(a);\n });\n \n this.schema = data;\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 var formHeight = 50;\n \n var jreader = {};\n var formElements = [];\n this.grid.dataSource.each(function(rec) {\n if (!rec.data.active) {\n return;\n }\n \n var el = {\n fieldLabel : rec.data.title,\n name : rec.data.dataIndex,\n width : rec.data.width,\n '|xns' : 'Roo.form',\n xtype : rec.data.ftype\n }\n if (el.xtype == 'DateField') {\n el.format = 'Y-m-d';\n el.useIso = true;\n el.width = 100;\n }\n \n if (el.xtype == 'TextArea') {\n el.height = 100;\n }\n \n if (el.xtype == 'Hidden') {\n delete el.fieldLabel;\n delete el.width;\n }\n \n if (el.xtype == 'ComboBox') {\n \n\n el.queryParam = 'query[' + rec.data.display_field + ']';// SET WHEN USED\n \n el.hiddenName = rec.data.dataIndex // SET WHEN USED eg. project_id\n el.name = rec.data.dataIndex + '_' + rec.data.display_field; // SET WHEN USED eg. project_id_name\n \n el.displayField = rec.data.display_field // SET WHEN USED eg. project_id\n el.valueField = rec.data.relates_to_col \n \n el.tpl = '
{' + rec.data.display_field +'}
'; // SET WHEN USED\n \n \n el.items = [\n {\n \n '*prop' : 'store',\n 'xtype' : 'Store',\n '|xns' : 'Roo.data',\n 'remoteSort' : true,\n '|sortInfo' : '{ direction : \\'ASC\\', field: \\'id\\' }',\n listeners : {\n '|beforeload' : 'function (_self, o)' +\n \"{\\n\" +\n \" o.params = o.params || {};\\n\" +\n \" // set more here\\n\" +\n \"}\\n\"\n },\n items : [\n {\n '*prop' : 'proxy',\n 'xtype' : 'HttpProxy',\n 'method' : 'GET',\n '|xns' : 'Roo.data',\n '|url' : \"baseURL + '/Roo/\" + rec.data.relates_to_table + \".php'\",\n },\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 }\n ];\n \n }\n \n if (el.xtype == 'ComboBox') {\n \n\n el.queryParam = 'query[' + rec.data.display_field + ']';// SET WHEN USED\n \n el.hiddenName = rec.data.dataIndex // SET WHEN USED eg. project_id\n el.name = rec.data.dataIndex + '_' + rec.data.display_field; // SET WHEN USED eg. project_id_name\n \n el.displayField = rec.data.display_field // SET WHEN USED eg. project_id\n el.valueField = rec.data.relates_to_col \n \n el.tpl = '
{' + rec.data.display_field +'}
'; // SET WHEN USED\n \n \n el.items = [\n {\n \n '*prop' : 'store',\n 'xtype' : 'Store',\n '|xns' : 'Roo.data',\n 'remoteSort' : true,\n '|sortInfo' : '{ direction : \\'ASC\\', field: \\'id\\' }',\n listeners : {\n '|beforeload' : 'function (_self, o)' +\n \"{\\n\" +\n \" o.params = o.params || {};\\n\" +\n \" // set more here\\n\" +\n \"}\\n\"\n },\n items : [\n {\n '*prop' : 'proxy',\n 'xtype' : 'HttpProxy',\n 'method' : 'GET',\n '|xns' : 'Roo.data',\n '|url' : \"baseURL + '/Roo/\" + rec.data.relates_to_table + \".php'\",\n },\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 }\n ];\n \n }\n \n if (el.xtype == 'HtmlEditor') {\n el.height = 250,\n el.resizable = 's',\n el.items = [\n {\n '* prop' : 'toolbars[]',\n '|xns' : 'Roo.form.HtmlEditor',\n 'xtype' : 'ToolbarContext'\n },\n {\n '* prop' : 'toolbars[]',\n '|xns' : 'Roo.form.HtmlEditor',\n 'xtype' : 'ToolbarStandard'\n\n }\n ]\n }\n \n formElements.push(el);\n \n formHeight += rec.data.ftype == 'TextArea' ? 100 : ((rec.data.ftype == 'HtmlEditor') ? 250 : 30);\n \n \n });\n \n \n \n \n \n \n var frmCfg = \n {\n '|xns' : 'Roo.form',\n xtype : \"Form\",\n listeners : {\n \"|actioncomplete\" : \"function(_self,action)\\n\"+\n \"{\\n\"+\n \" if (action.type == 'setdata') {\\n\"+\n \" //this.load({ method: 'GET', params: { '_id' : _this.data.id }});\\n\"+\n \" return;\\n\"+\n \" }\\n\"+\n \" if (action.type == 'load') {\\n\"+\n \" return;\\n\"+\n \" }\\n\"+\n \" if (action.type =='submit') {\\n\"+\n \" \\n\"+\n \" _this.dialog.hide();\\n\"+\n \" \\n\"+\n \" if (_this.callback) {\\n\"+\n \" _this.callback.call(_this, action.result.data);\\n\"+\n \" }\\n\"+\n \" _this.form.reset();\\n\"+\n \" return;\\n\"+\n \" }\\n\"+\n \"}\\n\",\n \n \"|rendered\" : \"function (form)\\n\"+\n \"{\\n\"+\n \" _this.form= form;\\n\"+\n \"}\\n\"\n },\n method : \"POST\",\n style : \"margin:10px;\",\n \"|url\" : \"baseURL + '/Roo/\" + this.table + \"'\",\n items : formElements\n };\n \n\n alert(\"IPC:OUT:\" + JSON.stringify({\n \"closable\": false,\n \"collapsible\": false,\n \"height\": formHeight,\n \"resizable\": false,\n \"title\": \"Edit / Create \" + this.table,\n \"width\": 400,\n \"modal\" : true,\n \"xtype\": \"LayoutDialog\",\n \"|xns\": \"Roo\",\n \"items\": [\n {\n \"|xns\": \"Roo\",\n \"xtype\": \"LayoutRegion\",\n \"*prop\": \"center\"\n },\n {\n \"region\": \"center\",\n \"xtype\": \"ContentPanel\",\n \"|xns\": \"Roo\",\n \"items\": [\n frmCfg\n ]\n },\n \n {\n \"listeners\": {\n \"click\": \"function (_self, e)\\n{\\n _this.dialog.hide();\\n}\"\n },\n \"*prop\": \"buttons[]\",\n \"text\": \"Cancel\",\n \"xtype\": \"Button\",\n \"|xns\": \"Roo\"\n },\n {\n \"listeners\": {\n \"click\": \"function (_self, e)\\n{\\n // do some checks?\\n \\n \\n _this.dialog.el.mask(\\\"Saving\\\");\\n _this.form.doAction(\\\"submit\\\");\\n\\n}\"\n },\n \"*prop\": \"buttons[]\",\n \"text\": \"Save\",\n \"xtype\": \"Button\",\n \"|xns\": \"Roo\"\n }\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 var formHeight = 50;\n \n var jreader = {};\n var formElements = [];\n this.grid.dataSource.each(function(rec) {\n if (!rec.data.active) {\n return;\n }\n \n var el = {\n fieldLabel : rec.data.title,\n name : rec.data.dataIndex,\n width : rec.data.width,\n '|xns' : 'Roo.form',\n xtype : rec.data.ftype\n }\n if (el.xtype == 'DateField') {\n el.format = 'Y-m-d';\n el.useIso = true;\n el.width = 100;\n }\n \n if (el.xtype == 'TextArea') {\n el.height = 100;\n }\n \n if (el.xtype == 'Hidden') {\n delete el.fieldLabel;\n delete el.width;\n }\n \n if (el.xtype == 'ComboBox') {\n \n\n el.queryParam = 'query[' + rec.data.display_field + ']';// SET WHEN USED\n \n el.hiddenName = rec.data.dataIndex // SET WHEN USED eg. project_id\n el.name = rec.data.dataIndex + '_' + rec.data.display_field; // SET WHEN USED eg. project_id_name\n \n el.displayField = rec.data.display_field // SET WHEN USED eg. project_id\n el.valueField = rec.data.relates_to_col \n \n el.tpl = '
{' + rec.data.display_field +'}
'; // SET WHEN USED\n \n \n el.items = [\n {\n \n '*prop' : 'store',\n 'xtype' : 'Store',\n '|xns' : 'Roo.data',\n 'remoteSort' : true,\n '|sortInfo' : '{ direction : \\'ASC\\', field: \\'id\\' }',\n listeners : {\n '|beforeload' : 'function (_self, o)' +\n \"{\\n\" +\n \" o.params = o.params || {};\\n\" +\n \" // set more here\\n\" +\n \"}\\n\"\n },\n items : [\n {\n '*prop' : 'proxy',\n 'xtype' : 'HttpProxy',\n 'method' : 'GET',\n '|xns' : 'Roo.data',\n '|url' : \"baseURL + '/Roo/\" + rec.data.relates_to_table + \".php'\",\n },\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 }\n ];\n \n }\n \n if (el.xtype == 'ComboBoxArray') {\n \n el.hiddenName = rec.data.dataIndex;\n el.name = rec.data.dataIndex + '_' + rec.data.display_field;\n \n el.items = [\n {\n '*prop' : 'store',\n 'xtype' : 'Store',\n '|xns' : 'Roo.data',\n 'remoteSort' : true,\n '|sortInfo' : '{ direction : \\'ASC\\', field: \\'id\\' }',\n listeners : {\n '|beforeload' : 'function (_self, o)' +\n \"{\\n\" +\n \" o.params = o.params || {};\\n\" +\n \" // set more here\\n\" +\n \"}\\n\"\n },\n items : [\n {\n '*prop' : 'proxy',\n 'xtype' : 'HttpProxy',\n 'method' : 'GET',\n '|xns' : 'Roo.data',\n '|url' : \"baseURL + '/Roo/\" + rec.data.relates_to_table + \".php'\",\n },\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 }\n ];\n \n el.queryParam = 'query[' + rec.data.display_field + ']';// SET WHEN USED\n \n el.hiddenName = rec.data.dataIndex // SET WHEN USED eg. project_id\n el.name = rec.data.dataIndex + '_' + rec.data.display_field; // SET WHEN USED eg. project_id_name\n \n el.displayField = rec.data.display_field // SET WHEN USED eg. project_id\n el.valueField = rec.data.relates_to_col \n \n el.tpl = '
{' + rec.data.display_field +'}
'; // SET WHEN USED\n \n \n \n \n }\n \n if (el.xtype == 'HtmlEditor') {\n el.height = 250,\n el.resizable = 's',\n el.items = [\n {\n '* prop' : 'toolbars[]',\n '|xns' : 'Roo.form.HtmlEditor',\n 'xtype' : 'ToolbarContext'\n },\n {\n '* prop' : 'toolbars[]',\n '|xns' : 'Roo.form.HtmlEditor',\n 'xtype' : 'ToolbarStandard'\n\n }\n ]\n }\n \n formElements.push(el);\n \n formHeight += rec.data.ftype == 'TextArea' ? 100 : ((rec.data.ftype == 'HtmlEditor') ? 250 : 30);\n \n \n });\n \n \n \n \n \n \n var frmCfg = \n {\n '|xns' : 'Roo.form',\n xtype : \"Form\",\n listeners : {\n \"|actioncomplete\" : \"function(_self,action)\\n\"+\n \"{\\n\"+\n \" if (action.type == 'setdata') {\\n\"+\n \" //this.load({ method: 'GET', params: { '_id' : _this.data.id }});\\n\"+\n \" return;\\n\"+\n \" }\\n\"+\n \" if (action.type == 'load') {\\n\"+\n \" return;\\n\"+\n \" }\\n\"+\n \" if (action.type =='submit') {\\n\"+\n \" \\n\"+\n \" _this.dialog.hide();\\n\"+\n \" \\n\"+\n \" if (_this.callback) {\\n\"+\n \" _this.callback.call(_this, action.result.data);\\n\"+\n \" }\\n\"+\n \" _this.form.reset();\\n\"+\n \" return;\\n\"+\n \" }\\n\"+\n \"}\\n\",\n \n \"|rendered\" : \"function (form)\\n\"+\n \"{\\n\"+\n \" _this.form= form;\\n\"+\n \"}\\n\"\n },\n method : \"POST\",\n style : \"margin:10px;\",\n \"|url\" : \"baseURL + '/Roo/\" + this.table + \"'\",\n items : formElements\n };\n \n\n alert(\"IPC:OUT:\" + JSON.stringify({\n \"closable\": false,\n \"collapsible\": false,\n \"height\": formHeight,\n \"resizable\": false,\n \"title\": \"Edit / Create \" + this.table,\n \"width\": 400,\n \"modal\" : true,\n \"xtype\": \"LayoutDialog\",\n \"|xns\": \"Roo\",\n \"items\": [\n {\n \"|xns\": \"Roo\",\n \"xtype\": \"LayoutRegion\",\n \"*prop\": \"center\"\n },\n {\n \"region\": \"center\",\n \"xtype\": \"ContentPanel\",\n \"|xns\": \"Roo\",\n \"items\": [\n frmCfg\n ]\n },\n \n {\n \"listeners\": {\n \"click\": \"function (_self, e)\\n{\\n _this.dialog.hide();\\n}\"\n },\n \"*prop\": \"buttons[]\",\n \"text\": \"Cancel\",\n \"xtype\": \"Button\",\n \"|xns\": \"Roo\"\n },\n {\n \"listeners\": {\n \"click\": \"function (_self, e)\\n{\\n // do some checks?\\n \\n \\n _this.dialog.el.mask(\\\"Saving\\\");\\n _this.form.doAction(\\\"submit\\\");\\n\\n}\"\n },\n \"*prop\": \"buttons[]\",\n \"text\": \"Save\",\n \"xtype\": \"Button\",\n \"|xns\": \"Roo\"\n }\n ]\n \n \n \n }, null, 4));\n\n}", "fitToframe" : true, "background" : false, "region" : "center", diff --git a/resources/Editors/Editor.Roo.LayoutDialog.js b/resources/Editors/Editor.Roo.LayoutDialog.js index b691dc59a..01f0b9913 100644 --- a/resources/Editors/Editor.Roo.LayoutDialog.js +++ b/resources/Editors/Editor.Roo.LayoutDialog.js @@ -716,23 +716,13 @@ Editor.Roo.LayoutDialog = new Roo.XComponent({ } - if (el.xtype == 'ComboBox') { + if (el.xtype == 'ComboBoxArray') { - - 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.hiddenName = rec.data.dataIndex; + el.name = rec.data.dataIndex + '_' + rec.data.display_field; - el.tpl = '
{' + rec.data.display_field +'}
'; // SET WHEN USED - - - el.items = [ + el.items = [ { - '*prop' : 'store', 'xtype' : 'Store', '|xns' : 'Roo.data', @@ -767,6 +757,19 @@ 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 = '
{' + rec.data.display_field +'}
'; // SET WHEN USED + + + } -- 2.39.2