var Model = require ('./model'); module.exports = new Class ({ Implements: Vn.Lot ,Properties: { /** * The model associated to this form. */ model: { type: Model }, /** * The row where the form positioned, has -1 if the row is unselected. */ row: { type: Number }, /** * The number of rows in the form. */ numRows: { type: Number }, /** * The current row parameters. */ params: { type: Object ,set: function (x) { this.assign (x); } ,get: function () { var params = {}; var keys = this.keys (); for (var i = 0; i < keys.length; i++) { var key = keys[i]; params[key] = this.get (key); } return params; } }, /** * Checks if the form data is ready. */ ready: { type: Boolean } } ,_model: null ,_row: -1 ,refresh: function () { if (this._model) this._model.refresh (); } /** * Get the index of the column from its name. * * @param {String} columnName The column name * @return {integer} The column index or -1 if column not exists */ ,getColumnIndex: function (columnName) { if (this._model) return this._model.getColumnIndex (columnName); return -1; } ,insertRow: function () { if (this._model) this.row = this._model.insertRow (); } ,performOperations: function () { if (this._model) this._model.performOperations (); } /** * Removes the current row. */ ,deleteRow: function () { if (this._row >= 0) this._model.deleteRow (this._row); } /** * Gets a value from the form. * * @param {String} columnName The column name * @return {Object} The value */ ,get: function (columnName) { if (this._model) return this._model.get (this._row, columnName); return undefined; } /** * Sets a value on the form. * * @param {String} columnName The column name * @param {Object} value The new value */ ,set: function (columnName, value) { return this._model.set (this._row, columnName, value); } /** * Gets a value from the form using the column index. * * @param {String} columnName The column index * @return {Object} The value */ ,getByIndex: function (column) { return this._model.getByIndex (this._row, column); } /** * Sets a value on the form using the column index. * * @param {String} columnName The column index * @param {Object} value The new value */ ,setByIndex: function (column, value) { return this._model.setByIndex (this._row, column, value); } ,keys: function () { if (this._model && this._model.ready) return Object.keys (this._model.columnMap); return []; } ,getParams: function () { var params = {}; var keys = this.keys (); for (var i = 0; i < keys.length; i++) { var key = keys[i]; params[key] = this.get (key); } return params; } });