0
1
Fork 0
hedera-web-mindshore/js/db/form.js

86 lines
1.3 KiB
JavaScript

var Iterator = require ('./iterator');
var Model = require ('./model');
module.exports = new Class
({
Extends: Iterator
,Tag: 'db-form'
,Properties:
{
model:
{
type: Model
,set: function (x)
{
this.link ({_model: x},
{
'status-changed': this.onModelChange
,'row-updated': this.onRowUpdate
});
}
,get: function ()
{
return this._model;
}
},
/**
* The row where the form positioned, has -1 if the row is unselected.
*/
row:
{
type: Number
,set: function (x)
{
if (!this._model || this._model.numRows <= x || x < -1)
x = -1;
if (x == this._row)
return;
this._row = x;
this._rowChanged ();
this.changed ();
}
,get: function ()
{
return this._row;
}
}
}
,initialize: function (props)
{
Object.assign (this, {
_lastRow: 0
,_lastReady: false
});
this.parent (props);
}
,onModelChange: function ()
{
var ready = this._model && this._model.ready;
if (ready != this._lastReady)
{
if (this._row != -1)
this._lastRow = this._row;
this._lastReady = ready;
this.emit ('status-changed');
if (this._row == -1)
this.row = this._lastRow;
if (ready)
this.emit ('ready');
}
}
,onRowUpdate: function (model, row)
{
if (row == this._row)
this.changed ();
}
});