X-Git-Url: http://git.roojs.org/?p=app.Builder.js;a=blobdiff_plain;f=resources%2FEditors%2FEditor.Roo.LayoutDialog.js;h=01f0b99138a401bef76d4a3f2115512d857ae6eb;hp=257a2de0cfb027274827ff7dcd0f068d4c589d69;hb=eb273e344fee23acbc333c4acc42a71ccee3f177;hpb=5d4ee542a17c3b884c973548f5202c6bc3c581b4 diff --git a/resources/Editors/Editor.Roo.LayoutDialog.js b/resources/Editors/Editor.Roo.LayoutDialog.js index 257a2de0c..01f0b9913 100644 --- a/resources/Editors/Editor.Roo.LayoutDialog.js +++ b/resources/Editors/Editor.Roo.LayoutDialog.js @@ -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" ], @@ -40,7 +41,18 @@ Editor.Roo.LayoutDialog = new Roo.XComponent({ ], - fields : [ 'active', 'dataIndex', 'type','title', 'width', 'ftype', 'display_field' ], + fields : [ + 'active', + 'dataIndex', + 'type', + 'title', + 'width', + 'ftype', + 'display_field', + 'relates_to_table', + 'relates_to_col', + 'relates_to_schema' + ], id : 'dataindex', xns : Roo.data, xtype : 'SimpleStore' @@ -63,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", @@ -229,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(); + } } } @@ -311,6 +342,7 @@ Editor.Roo.LayoutDialog = new Roo.XComponent({ '|xns' : 'Roo.data', data : [ [ 'ComboBox', "ComboBox"], + [ 'ComboBoxArray', "ComboBoxArray"] [ 'TextField' , "TextField"], [ 'NumberField', "NumberField"], [ 'TextArea', "TextArea"], @@ -368,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', @@ -447,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) { @@ -489,48 +527,93 @@ 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 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){ + for (var kk in r.relates_to_schema) { + var rr = r.relates_to_schema[kk]; + + rt = r.relates_to_table; + rc = r.relates_to_col; + + 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 : false, - relates_to_col : false, - 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); - for(var j = 0, j = fields.length; j++){ + } + + 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]); } } - /* - 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); + }); this.schema = data; @@ -560,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 = '
{' + combofields_name +'}
'; // 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 = '
{' + rec.data.display_field +'}
'; // SET WHEN USED el.items = [ @@ -610,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'", }, { @@ -626,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 = '
{' + rec.data.display_field +'}
'; // 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); });