File: app.js

package info (click to toggle)
mongrel2 1.12.0-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 5,976 kB
  • sloc: ansic: 39,083; python: 2,833; sql: 1,555; sh: 467; makefile: 360; asm: 189; yacc: 145; php: 73; awk: 28; sed: 5
file content (106 lines) | stat: -rw-r--r-- 2,515 bytes parent folder | download | duplicates (5)
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

function escapeHTML( html ) {
    var trans = {
        '&': '&',
        '<': '&lt;',
        '>': '&gt;',
        '"': '&quot;',
        "'": '&#x27;'
    };
    return (html + '').replace(/[&<>\"\']/g, function(c) { return trans[c]; });
}

function setUsers(users) {
    // ignored for now
}

function addUser(user) {
    // ignored for now
}

function removeUser(user) {
    // ignored for now
}

function handlekeys(field, state, e)
{
    var keycode;

    if (window.event) {
        keycode = window.event.keyCode;
    } else if (e) {
        keycode = e.which;
    } else {
        return true;
    }

    if (keycode == 13) {
       state.handle('SEND');
       return false;
    } else {
       return true;
    }
}

function addMessage(text) {
    var div = document.createElement("div");
    div.innerHTML = text;
    var cl = document.getElementById("chatlog");
    cl.appendChild(div);
    div.scrollIntoView();
}

state = new FSM({
    start: function(fsm, event) {
        var user = prompt('What is your nick?', 'lamenick');
        fsm.messages = {};
        fsm.trans('connecting');
        Chat.init(user, fsm);
    },

    connecting: {
        CONNECT: function(fsm, event) {
            addMessage('<em>Connected to Mongrel2.org chat demo.</em>');
            Chat.socket.send({'type': 'join', 'user': Chat.user});
            fsm.trans('connected');
        },
    },


    connected: {
        MSG: function(fsm, event) {
            addMessage('<b>[ ' + escapeHTML(event.user) + ' ]</b> ' + escapeHTML(event.msg));
        },

        JOIN: function(fsm, event) {
            if(event.user) {
                addMessage('<em><b>' + escapeHTML(event.user) + '</b> joined chat.</em>');
                addUser(event.user);
            }
        },

        DISCONNECT: function(fsm, event) {
            if(event.user) {
                addMessage('<em><b>' + escapeHTML(event.user) + '</b> left chat.</em>');
                removeUser(event.user);
            }
        },

        USERLIST: function(fsm, event) {
                addMessage('<em><b>MEMBERS: </b><em>' + escapeHTML(event.users) + '</em>');
        },

        CLOSE: function(fsm, event) {
            addMessage('<em>Well, looks like Mongrel2 crashed or your internet did.</em>');
            fsm.trans('connecting');
        },

        SEND: function(fsm, event) {
            var input = document.getElementById("msginput");
            Chat.send(input.value);
            input.value = '';
        }
    }

});