-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
123 lines (98 loc) · 2.68 KB
/
index.js
File metadata and controls
123 lines (98 loc) · 2.68 KB
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
var Chat = require('./lib/chat');
var store = require('store');
var chat = new Chat();
chat.on('online', function () {
$('#loginButton').button('reset');
$('#loginDialog').modal('hide');
$('#status').text('online');
});
chat.on('offline', function () {
$('#loginButton').button('reset');
$('#loginDialog').modal();
$('#status').text('offline');
});
chat.on('message', function (msg) {
$(document.createElement('p'))
.text(msg.from + ': ' + msg.text)
.appendTo('#chat');
});
chat.on('users', function () {
$('#roster').empty();
for (var name in chat.users) {
$(document.createElement('li'))
.attr('id', 'user_' + name)
.attr('class', 'list-group-item')
.text(name)
.appendTo('#roster');
}
});
function updateTask(task) {
var item = $('#task_' + task.id);
if (!item.length) {
item = $(document.createElement('li'))
.attr('id', 'task_' + task.id)
.attr('class', 'list-group-item')
.appendTo('#tasks');
} else {
item.empty();
}
item.text(task.title);
var statusList = $(document.createElement('ul')).appendTo(item);
task.statuses.forEach(function (status) {
$(document.createElement('li'))
.text(status.for + ' ' + status.type + ' ' + status.value)
.appendTo(statusList);
});
}
chat.on('tasks', function () {
var tasks = $('#tasks');
tasks.empty();
for (var id in chat.tasks) {
updateTask(chat.tasks[id]);
}
});
chat.on('task:updated', function (id) {
updateTask(chat.tasks[id]);
});
chat.on('task:deleted', function (id) {
$('#task_' + id).remove();
});
$('#message').submit(function (e) {
var input = $('#messageInput');
var text = input.val().trim();
if (text != '') {
chat.sendMessage(text);
input.val('');
}
e.preventDefault();
});
function login() {
$('#loginButton').button('loading');
var user = {
username: $('#username').val(),
password: $('#password').val(),
server: $('#server').val(),
wsURL: $('#wsURL').val()
}
var remember = $('#remember').prop('checked');
if (remember) {
store.set('user', user);
}
chat.connect(user);
}
function logout() {
store.remove('user');
chat.disconnect();
}
$('#loginButton').on('click', login);
$('#logoutButton').on('click', logout);
$('#loginDialog').modal();
var user = store.get('user');
if (user) {
$('#username').val(user.username);
$('#password').val(user.password);
$('#server').val(user.server);
$('#wsURL').val(user.wsURL);
$('#remember').prop('checked', true);
login();
}