hedera-web/js/hedera/login.js

113 lines
2.1 KiB
JavaScript

require('./login.css');
var Tpl = require('./login.xml');
module.exports = new Class({
Extends: Htk.Component,
Properties:
{
conn:
{
type: Db.Connection
,set: function(x) {
this.link({_conn: x}, {'loading-changed': this._onConnLoadChange});
}
,get: function() {
return this._conn;
}
}
}
,initialize: function(props) {
this.parent(props);
this.builderInitString(Tpl);
this.$('social-bar').conn = this._conn;
var self = this;
this.$('form').onsubmit = function() {
self._onSubmit();
return false;
};
}
,_onConnLoadChange: function(conn, isLoading) {
if (isLoading)
this.$('spinner').start();
else
this.$('spinner').stop();
}
,show: function() {
document.body.appendChild(this.node);
var lastUser = localStorage.getItem('hederaLastUser');
if (lastUser)
this.$('user').value = lastUser;
this._focusUserInput();
}
,_onSubmit: function() {
this._conn.open(
this.$('user').value,
this.$('pass').value,
this.$('remember').checked,
this._onConnOpen.bind(this)
);
this._disableUi(true);
}
,_onConnOpen: function(conn, success, error) {
this.$('pass').value = '';
this._disableUi(false);
if (success) {
var user = this.$('user').value;
if (user)
localStorage.setItem('hederaLastUser', user);
this.signalEmit('login');
} else {
this._focusUserInput();
throw error;
}
}
,hide: function() {
Vn.Node.remove(this.node);
}
,_focusUserInput: function() {
var userEntry = this.$('user');
userEntry.focus();
userEntry.select();
}
,_disableUi: function(disabled) {
this.$('user').disabled = disabled;
this.$('pass').disabled = disabled;
this.$('submit').disabled = disabled;
}
,onPasswordLost: function() {
var user = this.$('user').value;
if (!user)
Htk.Toast.showError(_('Please write your user name'));
else
this._conn.send('core/recover-password', {recoverUser: user},
this._onPasswordRecovered.bind(this));
}
,_onPasswordRecovered: function(json, error) {
if (error)
throw error;
Htk.Toast.showMessage(_('A mail has been sent wich you can recover your password'));
}
});