'bigint' : 'int',
'tinyint' : 'int',
'smallint' : 'int',
- 'timestamp' : 'number',
+ 'timestamp' : 'date', // for postgres... it's a date!??
'double' : 'float',
'decimal' : 'float',
- var colmodel = []
+ var colmodel = [];
Roo.each(cfg.cols, function(cc) {
colmodel.push( _t['Roo.grid.ColumnModel'](cc) );
- })
+ });
var dataSource = _t['Roo.data.Store'](cfg);
dataSource['*prop'] = 'dataSource';
"|rowdblclick": "function (_self, rowIndex, e)\n" +
"{\n" +
" if (!_this.dialog) return;\n" +
- " _this.dialog.show( this.getDataSource().getAt(rowIndex), function() {\n" +
+ " _this.dialog.show( this.getDataSource().getAt(rowIndex).data, function() {\n" +
" _this.grid.footer.onClick('first');\n" +
" }); \n" +
"}\n"
"|xns": "Roo.Toolbar"
}
]
- }, // end toolbar
+ } // end toolbar
].concat( colmodel)
};
},
if (!desc.length) {
desc = rcfg.column;
}
-
+ if (rcfg.title && rcfg.title.length) {
+ desc = rcfg.title;
+ }
return {
"xtype": "ColumnModel",
'.builderCfg' : Roo.encode(rcfg),
- "header": rcfg.desc.length ? rcfg.desc : desc,
+ "header": desc,
"width": ty == 'string' ? 200 : 75,
"dataIndex": rcfg.column,
"|renderer": ty != 'date' ?
// simple version to start with..
var _t = this;
- var frmCfg = _t['Roo.form.Form'](cfg, old);
+ var frmCfg = _t['Roo.form.Form'](rcfg, old);
// loop through the cols..
// we need a 'display column' for each of these.
- var formHeight = (frmCfg.items.length * 40) + 40; // work out from number of form ites..
+ var formHeight = (frmCfg.items.length * 25) + 100; // work out from number of form ites..
return {
xtype : 'LayoutDialog',
- "|xns": "Roo.grid",
+ "|xns": "Roo",
'.builderCfg' : Roo.encode(rcfg),
closable : false,
collapsible: false,
modal : true,
height : formHeight,
- resizable: false,
+ resizable: true,
title: "Edit / Create " + rcfg.table,
- width: 400,
+ width: 500,
items : [
var fcombo = function(cn) {
var cret = '';
- Roo.each(rcfg.cols_ux, function(n) {
+
+ Roo.each(rcfg.cols_ex, function(n) {
+
+ Roo.log(
+ ['match' , n , 'to', cn, n.substring(0,cn.length) ].join(' ')
+ );
if (n.substring(0,cn.length) == cn) {
cret = n;
- return true;
+ return false;
}
- return false;
+ return true;
});
+ Roo.log("RETURN: " + cret);
return cret;
}
}
if (ty == 'int' ) {
cc.display = fcombo(cc.column);
- if (cc.length) {
- formElements.push( _t['Roo.form.ComboBox'](cc, {}));
+ if (cc.deps && cc.display.length) {
+ formElements.push( _t['Roo.form.ComboBox'](cc, {}));
return;
}
formElements.push( _t['Roo.form.NumberField'](cc, {}));
items : formElements
};
- }
- 'Roo.form.TextField' : function(cc, old)
+ },
+ 'Roo.form.TextField' : function(rcfg, old)
{
+ var desc = rcfg.columnshort;
+ if (desc.substring(0, rcfg.table.length+1) == rcfg.table+'_') {
+ desc = desc.substring(rcfg.table.length+1);
+ }
+ desc = desc.replace(/_id$/, '');
+ if (!desc.length) {
+ desc = rcfg.column;
+ }
+ if (rcfg.title && rcfg.title.length) {
+ desc = rcfg.title;
+ }
+
+ return {
+ xtype : 'TextField',
+ '|xns' : 'Roo.form',
+ fieldLabel : desc,
+ name : rcfg.column,
+ width : 300
+ };
- }
+ },
+ 'Roo.form.NumberField' : function(rcfg, old)
+ {
+ var desc = rcfg.columnshort;
+ if (desc.substring(0, rcfg.table.length+1) == rcfg.table+'_') {
+ desc = desc.substring(rcfg.table.length+1);
+ }
+ desc = desc.replace(/_id$/, '');
+
+ if (!desc.length) {
+ desc = rcfg.column;
+ }
+ if (rcfg.title && rcfg.title.length) {
+ desc = rcfg.title;
+ }
+ return {
+ xtype : 'NumberField',
+ '|xns' : 'Roo.form',
+ fieldLabel : desc,
+ name : rcfg.column,
+ width : 100,
+ align : 'right'
+ };
+
+ },
+
+ 'Roo.form.DateField' : function(rcfg, old)
+ {
+ var desc = rcfg.columnshort;
+ if (desc.substring(0, rcfg.table.length+1) == rcfg.table+'_') {
+ desc = desc.substring(rcfg.table.length+1);
+ }
+ desc = desc.replace(/_id$/, '');
+
+ if (!desc.length) {
+ desc = rcfg.column;
+ }
+ if (rcfg.title && rcfg.title.length) {
+ desc = rcfg.title;
+ }
+ return {
+ xtype : 'NumberField',
+ '|xns' : 'Roo.form',
+ fieldLabel : desc,
+ name : rcfg.column,
+ width : 100,
+ format : 'Y-m-d'
+ };
+
+ },
+ 'Roo.form.ComboBox' : function(in_rcfg, old)
+ {
+ /*
+ * We need:
+ * localtable:
+ * the column
+ * table name.
+ * remote table:
+ * table name
+ * column 'it maps to'
+ * title column
+ *
+ *
+ *
+ */
+ var rcfg = in_rcfg;
+ var table , desc, display, idcol, hiddenName, name;
+
+ // rcfg can be one of two things: (from a form)
+ // or direct..
+ if (rcfg.cols) {
+ display = rcfg.cols_ex[0];
+
+
+ table = rcfg.table;
+
+ var ix = rcfg.cols[0].columnshort == display ? 0 : 1;
+
+ idcol = rcfg.cols[ ix ? 0 : 1 ].columnshort;
+
+ desc = rcfg.cols[ix].title;
+ if (!desc.length) {
+ desc = rcfg.cols[ix].column;
+ if (desc.substring(0, table.length+1) == table+'_') {
+ desc = desc.substring(table.length+1);
+ }
+ desc = desc.replace(/_id$/, '');
+ if (!desc.length) {
+ desc = rcfg.cols[0].column;
+ }
+ }
+ combofields = [
+ { name : idcol, type : 'int' },
+ display
+ ];
+ hiddenName = idcol;
+ name = display;
+
+ } else {
+
+
+
+ desc = rcfg.columnshort;
+ if (desc.substring(0, rcfg.table.length+1) == rcfg.table+'_') {
+ desc = desc.substring(rcfg.table.length+1);
+ }
+ desc = desc.replace(/_id$/, '');
+
+ if (!desc.length) {
+ desc = rcfg.column;
+ }
+ if (rcfg.title && rcfg.title.length) {
+ desc = rcfg.title;
+ }
+ // set the display column (from the remote table)
+ display = rcfg.display;
+ Roo.each(rcfg.deps, function(dn) {
+ if (dn.column == rcfg.display) {
+ display = dn.columnshort;
+ }
+
+ });
+
+ table = rcfg.deps[0].table;
+ idcol = rcfg.maps_to;
+ hiddenName = rcfg.column;
+ name = rcfg.column + '_' + display;
+
+ }
+ // a reader...( basic as we do meta queries to get the real one..)
+ var combofields = [
+ { name : idcol , type : 'int' },
+ display
+ ];
+
+
+ return {
+ '|xns' : 'Roo.form',
+ xtype: 'ComboBox',
+
+ allowBlank : false,
+ editable : false,
+ emptyText : 'Select ' + table,
+ forceSelection : true,
+ listWidth : 400,
+ loadingText: 'Searching...',
+ minChars : 2,
+ pageSize : 20,
+ qtip: 'Select ' + table,
+ selectOnFocus: true,
+ triggerAction : 'all',
+ typeAhead: true,
+
+ width: 300,
+
+ tpl : '<div class="x-grid-cell-text x-btn button"><b>{'+ display + '}</b> </div>',
+ queryParam : 'query['+display+']',
+ fieldLabel : desc,
+
+ // from remote..
+ valueField : idcol,
+ displayField : display,
+
+ // from our table..
+ hiddenName : hiddenName,
+ name : name,
+
+ items : [
+ {
+ '*prop' : 'store',
+ '|xns' : 'Roo.data',
+ '|sortInfo' : '{ direction : \'ASC\', field: \'' + display +'\' }',
+ xtype : 'Store',
+
+ remoteSort : true,
+
+ 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/" + table + ".php'"
+ },
+
+ {
+ '*prop' : 'reader',
+ 'xtype' : 'JsonReader',
+ '|xns' : 'Roo.data',
+ 'id' : idcol,
+ 'root' : 'data',
+ 'totalProperty' : 'total',
+ '|fields' : JSON.stringify(combofields)
+
+ }
+ ]
+ }
+ ]
+ };
+
+ }
}
\ No newline at end of file