_strings : {
'b021df6aac4654c454f46c77646e745f' :"Label",
'793548e77e782c209a78ed67f255b5e2' :"Display Field",
+ '040076bde7f6b3387448e32b66c2eee0' :"To BJS",
'4ce58cbe362a5d7b156992a496d55bf3' :"Database Column",
'189efd19c4153526994a6d7ea5f6f068' :"Field Type",
'2f616612593df62aeed112de4f03110e' :"Edit a Grid",
'c671c787b49f50a3ace9fdc5bd597825' :"core_enum",
'32954654ac8fe66a1d09be19001de2d4' :"Width",
'a1fa27779242b4902f7ae3bdd5c6d508' :"Type",
- '6e7376dca68a2386a8737944196ab491' :"Create / Edit Grid"
+ '6e7376dca68a2386a8737944196ab491' :"Create / Edit Grid",
+ 'f541774a08fc687f6e2016c77a6ebca5' :"Load Data"
},
part : ["Editors", "LayoutDialog" ],
],
- fields : [ 'active', 'dataIndex', 'type','title', 'width' ],
+ 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'
text : _this._strings['2f616612593df62aeed112de4f03110e'],
xns : Roo.Toolbar,
xtype : 'TextItem'
+ },
+ {
+ '|xns' : 'Roo.Toolbar',
+ xns : Roo.Toolbar,
+ xtype : 'Fill'
+ },
+ {
+ '|xns' : 'Roo.Toolbar',
+ text : _this._strings['f541774a08fc687f6e2016c77a6ebca5'],
+ xns : Roo.Toolbar,
+ xtype : 'Button',
+ listeners : {
+ click : function (_self, e)
+ {
+ var data = {
+ "manage_scale_id": {
+ "Field": "manage_scale_id",
+ "Type": "int(11)",
+ "Null": "NO",
+ "Key": null,
+ "Default": "0",
+ "Extra": null,
+ "relates_to_table": "core_enum",
+ "relates_to_col": "id",
+ "relates_to_schema": {
+ "id": {
+ "Field": "id",
+ "Type": "int(11)",
+ "Null": "NO",
+ "Key": "PRI",
+ "Default": null,
+ "Extra": "auto_increment"
+ },
+ "etype": {
+ "Field": "etype",
+ "Type": "varchar(32)",
+ "Null": "NO",
+ "Key": null,
+ "Default": null,
+ "Extra": null
+ },
+ "name": {
+ "Field": "name",
+ "Type": "varchar(255)",
+ "Null": "NO",
+ "Key": null,
+ "Default": null,
+ "Extra": null
+ },
+ "active": {
+ "Field": "active",
+ "Type": "int(2)",
+ "Null": "NO",
+ "Key": null,
+ "Default": "1",
+ "Extra": null
+ },
+ "seqid": {
+ "Field": "seqid",
+ "Type": "int(11)",
+ "Null": "NO",
+ "Key": "MUL",
+ "Default": "0",
+ "Extra": null
+ },
+ "seqmax": {
+ "Field": "seqmax",
+ "Type": "int(11)",
+ "Null": "NO",
+ "Key": null,
+ "Default": "0",
+ "Extra": null
+ },
+ "display_name": {
+ "Field": "display_name",
+ "Type": "text",
+ "Null": "NO",
+ "Key": null,
+ "Default": null,
+ "Extra": null
+ },
+ "is_system_enum": {
+ "Field": "is_system_enum",
+ "Type": "int(2)",
+ "Null": "NO",
+ "Key": null,
+ "Default": "0",
+ "Extra": null
+ }
+ }
+ },
+ "person_type": {
+ "Field": "person_type",
+ "Type": "text",
+ "Null": "NO",
+ "Key": null,
+ "Default": null,
+ "Extra": null
+ },
+ "employer_name": {
+ "Field": "employer_name",
+ "Type": "text",
+ "Null": "NO",
+ "Key": null,
+ "Default": null,
+ "Extra": null
+ },
+ "birth_date": {
+ "Field": "birth_date",
+ "Type": "date",
+ "Null": "NO",
+ "Key": null,
+ "Default": "0000-00-00",
+ "Extra": null
+ },
+ "employ_start_date": {
+ "Field": "employ_start_date",
+ "Type": "date",
+ "Null": "NO",
+ "Key": null,
+ "Default": "0000-00-00",
+ "Extra": null
+ },
+ "employ_end_date": {
+ "Field": "employ_end_date",
+ "Type": "date",
+ "Null": "NO",
+ "Key": null,
+ "Default": "0000-00-00",
+ "Extra": null
+ },
+ "hide_same_employer": {
+ "Field": "hide_same_employer",
+ "Type": "int(4)",
+ "Null": "NO",
+ "Key": null,
+ "Default": "0",
+ "Extra": null
+ },
+ "salary_currency": {
+ "Field": "salary_currency",
+ "Type": "varchar(256)",
+ "Null": "NO",
+ "Key": null,
+ "Default": null,
+ "Extra": null
+ },
+ "quota_currency": {
+ "Field": "quota_currency",
+ "Type": "varchar(256)",
+ "Null": "NO",
+ "Key": null,
+ "Default": null,
+ "Extra": null
+ },
+ "created_dt": {
+ "Field": "created_dt",
+ "Type": "datetime",
+ "Null": "NO",
+ "Key": null,
+ "Default": "0000-00-00 00:00:00",
+ "Extra": null
+ },
+ "updated_dt": {
+ "Field": "updated_dt",
+ "Type": "datetime",
+ "Null": "NO",
+ "Key": null,
+ "Default": "0000-00-00 00:00:00",
+ "Extra": null
+ }
+ };
+
+ 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();
+
+ }
+ }
}
]
dataIndex : 'title',
header : _this._strings['b021df6aac4654c454f46c77646e745f'],
renderer : function(v) { return String.format('{0}', v); },
- width : 75,
+ width : 120,
xns : Roo.grid,
xtype : 'ColumnModel',
items : [
'|xns' : 'Roo.data',
data : [
[ 'ComboBox', "ComboBox"],
- [ 'Text' , "TextField"],
- [ 'Number', "NumberField"],
+ [ 'TextField' , "TextField"],
+ [ 'NumberField', "NumberField"],
[ 'TextArea', "TextArea"],
- [ 'Html', "HtmlEntry"]
-
+ [ 'HtmlEditor', "HtmlEditor"],
+ [ 'Hidden', "Hidden"],
+ [ 'DateField', "DateField"],
+ [ 'Checkbox', "Checkbox"]
+ // checkbox?
],
fields : [ 'ftype', 'fname'],
xns : Roo.data,
hiddenName : 'status',
listWidth : 200,
mode : 'local',
- name : 'status',
+ name : 'ftype',
triggerAction : 'all',
valueField : 'ftype',
width : 150,
dataIndex : 'ftype',
header : _this._strings['189efd19c4153526994a6d7ea5f6f068'],
renderer : function(v) { return String.format('{0}', v); },
- width : 75,
+ width : 120,
xns : Roo.grid,
xtype : 'ColumnModel',
items : [
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 : 'status',
+ name : 'display_field',
triggerAction : 'all',
- valueField : 'ftype',
+ valueField : 'dfield',
width : 150,
xns : Roo.form,
xtype : 'ComboBox',
},
'|xns' : 'Roo.grid',
- dataIndex : 'ftype',
+ dataIndex : 'display_field',
header : _this._strings['793548e77e782c209a78ed67f255b5e2'],
renderer : function(v) { return String.format('{0}', v); },
- width : 75,
+ width : 150,
xns : Roo.grid,
xtype : 'ColumnModel',
items : [
}
],
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)
{
fitToframe : true,
loadData : function(data) {
- alert("IPC:TEST:" + JSON.stringify(data,null,4));
- var ar = [];
+ //alert("IPC:TEST:" + JSON.stringify(data,null,4));
+
+ var fields = _this.grid.dataSource.reader.recordType.prototype.fields;
+
+
+ var d = [];
+
for (var k in data) {
var r = data[k];
- var has_s = typeof(r.relates_to_schema) != 'undefined'
- ar.push([ !has_s , r.Field, r.Type, r.Field, 100] );
- if (!has_s) {
- continue;
+ var has_s = typeof(r.relates_to_schema) != 'undefined';
+
+ var field_type = 'TextField';
+
+ var regex = /(.*?)\((.*?)\)/;
+
+ if(regex.test(r.Type)){
+ var type_match = regex.exec(r.Type);
+
+ switch type_match[1] {
+ case 'varchar' :
+ break;
+ case 'int' :
+
+ field_type = 'NumberField';
+
+ if(type_match[2] * 1 < 11){
+ field_type = 'CheckBox';
+ }
+
+ }
+
+ } esle {
+ switch r.Type {
+ case 'text' :
+ field_type = 'TextArea';
+ break;
+ case 'date' :
+ case 'datetime':
+ field_type = 'DateField';
+ }
+
}
- for (var kk in r.relates_to_schema) {
- var rr = r.relates_to_schema[kk];
- if (rr.Field == r.relates_to_col) {
- continue;
+
+ 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]);
+
}
- ar.push([ false, r.Field + '_'+ rr.Field, rr.Type, rr.Field, 100] );
+
+ field_type = 'ComboBox';
}
+
+
+
+ var o = {
+ active : !has_s,
+ dataIndex : r.Field,
+ type : r.Type,
+ title : r.Field,
+ width : 200,
+ ftype : 'TextField',
+ display_field : rc, //r.Field + '_display_name',
+ relates_to_table : rt,
+ relates_to_col : rc,
+ relates_to_schema : rs
+ };
+
+ 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(dd.hasOwnProperty(f.name)){
+ a.push(dd[f.name]);
+ }
+ }
+
+ ar.push(a);
+ });
+
+ this.schema = data;
- alert("IPC:TEST:" + JSON.stringify(ar));
+ //alert("IPC:TEST:" + JSON.stringify(ar));
this.grid.dataSource.loadData(ar);
},
region : 'center',
toBJS : function() {
// convert the selected cells into a BJS data ready to send back to the UI..
-
+
this.table = "XXX";
this.firstTxtCol = "XXX";
+ var formHeight = 50;
var jreader = {};
- var colmodel = [];
+ var formElements = [];
this.grid.dataSource.each(function(rec) {
if (!rec.data.active) {
return;
}
+ var el = {
+ fieldLabel : rec.data.title,
+ name : rec.data.dataIndex,
+ width : rec.data.width,
+ '|xns' : 'Roo.form',
+ xtype : rec.data.ftype
+ }
+ if (el.xtype == 'DateField') {
+ el.format = 'Y-m-d';
+ el.useIso = true;
+ el.width = 100;
+ }
+
+ if (el.xtype == 'TextArea') {
+ el.height = 100;
+ }
+
+ if (el.xtype == 'Hidden') {
+ delete el.fieldLabel;
+ delete el.width;
+ }
+ if (el.xtype == 'ComboBox') {
+
+
+ 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
+
+
+ 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'",
+ },
+
+ {
+ '*prop' : 'reader',
+ 'xtype' : 'JsonReader',
+ '|xns' : 'Roo.data',
+ 'id' : 'id',
+ 'root' : 'data',
+ 'totalProperty' : 'total'
+
+
+ }
+ ]
+ }
+ ];
+
+ }
+
+ 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 : ((rec.data.ftype == 'HtmlEditor') ? 250 : 30);
- colmodel.push({
- "xtype": "ColumnModel",
- "header": rec.data.title,
- "width": rec.data.width * 1,
- "dataIndex": rec.data.dataIndex,
- "|renderer": !rec.data.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": "cm[]"
- });
});
+
+
+
+ var frmCfg =
+ {
+ '|xns' : 'Roo.form',
+ xtype : "Form",
+ listeners : {
+ "|actioncomplete" : "function(_self,action)\n"+
+ "{\n"+
+ " if (action.type == 'setdata') {\n"+
+ " //this.load({ method: 'GET', params: { '_id' : _this.data.id }});\n"+
+ " return;\n"+
+ " }\n"+
+ " if (action.type == 'load') {\n"+
+ " return;\n"+
+ " }\n"+
+ " if (action.type =='submit') {\n"+
+ " \n"+
+ " _this.dialog.hide();\n"+
+ " \n"+
+ " if (_this.callback) {\n"+
+ " _this.callback.call(_this, action.result.data);\n"+
+ " }\n"+
+ " _this.form.reset();\n"+
+ " return;\n"+
+ " }\n"+
+ "}\n",
+
+ "|rendered" : "function (form)\n"+
+ "{\n"+
+ " _this.form= form;\n"+
+ "}\n"
+ },
+ method : "POST",
+ style : "margin:10px;",
+ "|url" : "baseURL + '/Roo/" + this.table + "'",
+ items : formElements
+ };
+
alert("IPC:OUT:" + JSON.stringify({
- '|xns' : 'Roo',
- xtype : "GridPanel",
- "title": this.table,
- "fitToframe": true,
- "fitContainer": true,
- "tableName": this.table,
- "background": true,
- "region" : 'center',
- "listeners": {
- "|activate": "function() {\n _this.panel = this;\n if (_this.grid) {\n _this.grid.footer.onClick('first');\n }\n}"
- },
- "items": [
- {
- "*prop": "grid",
- "xtype": "Grid",
- "autoExpandColumn": this.firstTxtCol,
- "loadMask": true,
- "listeners": {
- "|render": "function() \n" +
- "{\n" +
- " _this.grid = this; \n" +
- " //_this.dialog = Pman.Dialog.FILL_IN\n" +
- " if (_this.panel.active) {\n" +
- " this.footer.onClick('first');\n" +
- " }\n" +
- "}",
- "|rowdblclick": "function (_self, rowIndex, e)\n" +
- "{\n" +
- " if (!_this.dialog) return;\n" +
- " _this.dialog.show( this.getDataSource().getAt(rowIndex).data, function() {\n" +
- " _this.grid.footer.onClick('first');\n" +
- " }); \n" +
- "}\n"
+ "closable": false,
+ "collapsible": false,
+ "height": formHeight,
+ "resizable": false,
+ "title": "Edit / Create " + this.table,
+ "width": 400,
+ "modal" : true,
+ "xtype": "LayoutDialog",
+ "|xns": "Roo",
+ "items": [
+ {
+ "|xns": "Roo",
+ "xtype": "LayoutRegion",
+ "*prop": "center"
},
- "|xns": "Roo.grid",
-
- "items": [
- {
- "*prop": "dataSource",
- "xtype": "Store",
- remoteSort : true,
- '|sortInfo' : "{ field : '" + this.firstTxtCol + "', direction: 'ASC' }",
- "|xns": "Roo.data",
- "items": [
-
- {
- "*prop": "proxy",
- "xtype": "HttpProxy",
- "method": "GET",
- "|url": "baseURL + '/Roo/" + this.table + ".php'",
- "|xns": "Roo.data"
- },
- {
- '*prop' : 'reader',
- 'xtype' : 'JsonReader',
- '|xns' : 'Roo.data',
- 'id' : 'id',
- 'root' : 'data',
- 'totalProperty' : 'total'
- }
- ]
+ {
+ "region": "center",
+ "xtype": "ContentPanel",
+ "|xns": "Roo",
+ "items": [
+ frmCfg
+ ]
+ },
+
+ {
+ "listeners": {
+ "click": "function (_self, e)\n{\n _this.dialog.hide();\n}"
},
- {
- "*prop": "footer",
- "xtype": "PagingToolbar",
- "pageSize": 25,
- "displayInfo": true,
- "displayMsg": "Displaying " + this.table + "{0} - {1} of {2}",
- "emptyMsg": "No " + this.table + " found",
- "|xns": "Roo"
+ "*prop": "buttons[]",
+ "text": "Cancel",
+ "xtype": "Button",
+ "|xns": "Roo"
+ },
+ {
+ "listeners": {
+ "click": "function (_self, e)\n{\n // do some checks?\n \n \n _this.dialog.el.mask(\"Saving\");\n _this.form.doAction(\"submit\");\n\n}"
},
- {
- "*prop": "toolbar",
- "xtype": "Toolbar",
- "|xns": "Roo",
- "items": [
- {
- "text": "Add",
- "xtype": "Button",
- "cls": "x-btn-text-icon",
- "|icon": "Roo.rootURL + 'images/default/dd/drop-add.gif'",
- "listeners": {
- "|click": "function()\n"+
- "{\n"+
- " if (!_this.dialog) return;\n" +
- " _this.dialog.show( { id : 0 } , function() {\n"+
- " _this.grid.footer.onClick('first');\n"+
- " }); \n"+
- "}\n"
- },
- "|xns": "Roo.Toolbar"
- },
- // fill ????
- {
- "text": "Delete",
- "cls": "x-btn-text-icon",
- "|icon": "rootURL + '/Pman/templates/images/trash.gif'",
- "xtype": "Button",
- "listeners": {
- "|click": "function()\n"+
- "{\n"+
- " Pman.genericDelete(_this, '" + this.table + "'); \n"+
- "}\n"+
- " "
- },
- "|xns": "Roo.Toolbar"
- }
- ]
- }, // end toolbar
- ].concat( colmodel)
- }
- ]
+ "*prop": "buttons[]",
+ "text": "Save",
+ "xtype": "Button",
+ "|xns": "Roo"
+ }
+ ]
+
}, null, 4));