hedera-web/web/js/hedera/login.js

103 lines
1.7 KiB
JavaScript
Executable File

Vn.includeCss ('js/hedera/login.css');
Vn.resource ('js/hedera/login.xml');
Vn.define (function () {
Vn.Login = new Class
({
Extends: Htk.Widget,
Properties:
{
conn:
{
type: Db.Conn
,set: function (x)
{
this.link ({_conn: x}, {'loading-changed': this._onConnLoadChange});
}
,get: function ()
{
return this._conn;
}
}
}
,initialize: function (props)
{
this.builderInit ('js/hedera/login.xml');
var self = this;
this.$('form').onsubmit = function ()
{
self._onSubmit ();
return false;
};
this.parent (props);
}
,_onConnLoadChange: function (conn, isLoading)
{
this._disableUi (isLoading);
}
,_disableUi: function (disabled)
{
if (disabled)
this.$('spinner').start ();
else
this.$('spinner').stop ();
this.$('user').disabled = disabled;
this.$('pass').disabled = disabled;
this.$('submit').disabled = disabled;
}
,show: function ()
{
document.body.appendChild (this.node);
if (Vn.Cookie.check ('vn_user'))
this.$('user').value = Vn.Cookie.get ('vn_user');
this._focusUserInput ();
}
,hide: function ()
{
Vn.Node.remove (this.node);
}
,_focusUserInput: function ()
{
var userEntry = this.$('user');
userEntry.focus ();
userEntry.select ();
}
,_onSubmit: function ()
{
this._conn.open (
this.$('user').value,
this.$('pass').value,
this.$('remember').value,
this._onConnOpen.bind (this)
);
}
,_onConnOpen: function (conn, success, error)
{
this.$('pass').value = '';
if (success)
this.signalEmit ('login');
else
if (error instanceof Vn.Error && error.domain === 'Auth')
Htk.Toast.showError (_('Invalid login'));
this._focusUserInput ();
}
});
});