summaryrefslogtreecommitdiff
path: root/js/codeq/login.js
blob: 9c715475b7df1c217ed9ee5fc66473bf4ed27421 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/**
 * Created by robert on 9/17/15.
 */

(function(){
    var jqNavBarRight = $('.nav.navbar-nav.navbar-right'),
        jqNavigationHomeBtn = $('#navigation-home'),
        jqAAILoginBtn = $('#aai_login_button'),
        jqSignupBtn = $('#signup_button'),
        jqSubmitLoginBtn = $("#submit");

    //the loginCallbackFunction is used here and in the AAI login as well
    codeq.loginCallbackFunction = function (data) {
        $('#disabled').css('display', 'none');
        $('#disabled').css('cursor', '');
        if (data.code !== 0) throw new Error('Login failed, code: ' + data.code + ', message: ' + data.message);

        //nav signed in...
        $('#signed-in-title').html(data.name||$('#username').val());
        //merge with profile page
        $('#profileUsername').html($('#username').val());
        $('#profileName').html(data.name||'undefined');
        $('#profileJoined').html(new Date(data.joined).toLocaleString());
        $('#profileLastLogin').html(new Date(data["last-login"]).toLocaleString());

        //merge these settings into the already existing default settings
        var sett = data.settings;
        $.extend(codeq.settings, sett);
        if('gui_lang' in sett && sett['gui_lang'] in codeq.supportedLangs){
            codeq.setLang(sett['gui_lang']);
            $("#gui_lang_select").val(sett['gui_lang']);
        }
        $('#robot_address_input').val(codeq.settings['robot_address'] || '');
        if('gui_layout' in sett && ($.inArray(sett['gui_layout'], codeq.supportedLayouts) >= 0) ){
            codeq.setLayout(sett['gui_layout']);
            $("#gui_layout_select").val(sett['gui_layout']);
        }

        codeq.globalStateMachine.transition('language');
        //codeq.activateState('language');
    };

    var loginFun = function(){
            $('#disabled').css('display', '');
            $('#disabled').css('cursor', 'wait');
            codeq.comms.connect()
                .then(function () {
                    return codeq.comms.login($('#username').val(), $('#password').val());
                })
                .then(codeq.loginCallbackFunction)
                .fail(function (reason) {
                    $('#disabled').css('display', 'none');
                    $('#disabled').css('cursor', '');
                    codeq.log.error('Login failed: ' + reason, reason);
                    alert('Login request failed: ' + reason);
                    $('#disabled').css('display', 'none');
                })
                .done();
        },
        formInputs = $('#username, #password');

    codeq.globalStateMachine.register('login',{
        'enter': function(){
            jqNavigationHomeBtn.off('click');//remove the click listener of this element here
            jqNavBarRight.css('display','none');//hide settings etc.
            $('#signed-in-title').html('');

            //setup the signup button
            jqSignupBtn.on('click', function(e){
                codeq.globalStateMachine.transition('signup');
                e.preventDefault();
            });
            //setup the AAI login btn
            jqAAILoginBtn.on('click',function(e){
                codeq.globalStateMachine.transition('aailogin');
                e.preventDefault();
            });

            jqSubmitLoginBtn.on('click', loginFun);
            formInputs.on('keyup', function (ev) {
                if ((ev.keyCode || ev.which) == 13) {
                    jqSubmitLoginBtn.trigger('click');
                }
            });
            //$('#modalLogIn').modal();
            $("#screen_login").css('display', '');
            $('#disabled').css('display', 'none');
        },
        'exit' : function(){
            //remove the listener from the buttons specific to this page
            jqSubmitLoginBtn.off('click', loginFun);
            formInputs.off('keyup');
            jqSignupBtn.off('click');
            jqAAILoginBtn.off('click');

            $("#screen_login").css('display', 'none');
            $("#password").val('');
            //re-enable the click listener
            jqNavigationHomeBtn.on('click', function(e){
                codeq.globalStateMachine.transition('language');
                e.preventDefault();
            });
            jqNavBarRight.css('display','');
        }
    });
})();