forked from verdnatura/hedera-web
103 lines
2.0 KiB
JavaScript
103 lines
2.0 KiB
JavaScript
|
|
Hedera.Queries = new Class
|
|
({
|
|
Extends: Hedera.Form
|
|
|
|
,activate: function ()
|
|
{
|
|
this.$('result-index').value = 0;
|
|
}
|
|
|
|
,clean: function ()
|
|
{
|
|
if (this._grid)
|
|
{
|
|
this.$('grid-holder').removeChild (this._grid.node);
|
|
this._grid.unref ();
|
|
this._grid = null;
|
|
}
|
|
}
|
|
|
|
,_onExecuteClick: function ()
|
|
{
|
|
this.clean ();
|
|
|
|
var model = new Db.Model ({
|
|
conn: this.conn,
|
|
query: this.$('sql').value,
|
|
resultIndex: this.$('result-index').value,
|
|
updatable: this.$('updatable').value
|
|
});
|
|
model.on ('status-changed', this._onModelChange, this);
|
|
}
|
|
|
|
,_onCleanClick: function ()
|
|
{
|
|
this.clean ();
|
|
}
|
|
|
|
,_onModelChange: function (model, status)
|
|
{
|
|
if (status !== Db.Model.Status.LOADING)
|
|
{
|
|
model.disconnect ('status-changed', this._onModelChange, this);
|
|
model.unref ();
|
|
}
|
|
|
|
if (status !== Db.Model.Status.READY)
|
|
return;
|
|
|
|
Htk.Toast.showMessage (_('Query executed!'));
|
|
|
|
var gridHolder = this.$('grid-holder');
|
|
|
|
if (gridHolder.firstChild)
|
|
gridHolder.removeChilds (gridHolder.firstChild);
|
|
|
|
var grid = new Htk.Grid ();
|
|
|
|
var columns = model.columns;
|
|
|
|
for (var i = 0; i < columns.length; i++)
|
|
{
|
|
var c = columns[i];
|
|
|
|
switch (c.type)
|
|
{
|
|
case Db.Conn.Type.BOOLEAN:
|
|
var column = new Htk.ColumnCheck ();
|
|
break;
|
|
case Db.Conn.Type.INTEGER:
|
|
var column = new Htk.ColumnSpin ();
|
|
break;
|
|
case Db.Conn.Type.DOUBLE:
|
|
var column = new Htk.ColumnSpin ({digits: 2});
|
|
break;
|
|
case Db.Conn.Type.DATE:
|
|
var column = new Htk.ColumnDate ({format: '%a, %e %b %Y'});
|
|
break;
|
|
case Db.Conn.Type.DATE_TIME:
|
|
var column = new Htk.ColumnDate ({format: '%a, %e %b %Y, %T'});
|
|
break;
|
|
case Db.Conn.Type.STRING:
|
|
default:
|
|
var column = new Htk.ColumnText ();
|
|
}
|
|
|
|
column.setProperties ({
|
|
title: c.name,
|
|
editable: this.$('updatable').value,
|
|
columnIndex: i
|
|
});
|
|
|
|
grid.appendColumn (column);
|
|
}
|
|
|
|
grid.model = model;
|
|
gridHolder.appendChild (grid.node);
|
|
this._grid = grid;
|
|
|
|
}
|
|
});
|
|
|