var Model = require('./model'); module.exports = new Class({ 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 }, /** * Checks if the form data is ready. */ ready: { type: Boolean }, /** * The row object. */ $: { type: Object } } ,_model: null ,_row: -1 ,async refresh() { if (this._model) await this._model.refresh(); } /** * Emits the 'change' signal on the form. */ ,iterChanged() { this.emit('change'); } /** * 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(columnName) { if (this._model) return this._model.getColumnIndex(columnName); return -1; } ,insertRow() { if (this._model) this.row = this._model.insertRow(); } ,async performOperations() { if (this._model) await this._model.performOperations(); } /** * Removes the current row. */ ,async deleteRow() { if (this._row >= 0) await this._model.deleteRow(this._row); } /** * Gets the row as object. * * @return {Object} The row */ ,getObject() { return this._model.getObject(this._row); } /** * Sets a value on the form. * * @param {String} columnName The column name */ ,get(columnName) { if (!this._model) return undefined; return this._model.get(this._row, columnName); } /** * Sets a value on the form. * * @param {String} columnName The column name * @param {Object} value The new value */ ,async set(columnName, value) { return await 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(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(column, value) { return this._model.setByIndex(this._row, column, value); } });