/
message-view.js
73 lines (61 loc) · 2.42 KB
/
message-view.js
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
// Generated by CoffeeScript 1.6.3
(function() {
var LANGUAGES, MessageView;
LANGUAGES = ['de', 'en', 'es', 'fr', 'it', 'ja', 'ko', 'zh'];
MessageView = (function() {
function MessageView(id, onLanguageChange) {
this.onLanguageChange = onLanguageChange;
this.$container = $('#' + id);
this.selectedLanguage = 'en';
}
MessageView.prototype._createMessage = function(message) {
return $("<div class=\"chat-element\"><span class=\"chat-sender\">" + message.sender + " </span><span class=\"chat-message\">" + message.text + "</span></div>");
};
MessageView.prototype._createLanguageButton = function(language) {
var $languageButton, viewRef;
$languageButton = $("<li class=\"language-button\">" + language + "</li>");
if (language === this.selectedLanguage) {
$languageButton.addClass('is-selected');
}
viewRef = this;
return $languageButton.click(function() {
if (language !== viewRef.selectedLanguage) {
$('.language-button.is-selected').removeClass('.is-selected');
$(this).addClass('is-selected');
viewRef.selectedLanguage = language;
return viewRef.onLanguageChange(language);
}
});
};
MessageView.prototype._fillChat = function() {
var messagePromises, viewRef;
viewRef = this;
messagePromises = Message.all().map(function(message) {
return new Promise(function(resolve, reject) {
return Message.translate(message, viewRef.selectedLanguage, resolve);
});
});
return Promise.all(messagePromises);
};
MessageView.prototype._fillLanguageSelector = function() {
var $languageSelector;
$languageSelector = $('<div class="language-selector"></div>');
return $languageSelector.append(LANGUAGES.map(this._createLanguageButton, this));
};
MessageView.prototype.refresh = function() {
var viewRef;
viewRef = this;
return this._fillChat().then(function(results) {
var $chat;
$chat = $('<div class="chat-window"></div>').append(results.map(viewRef._createMessage));
viewRef.$container.empty().append(viewRef._fillLanguageSelector()).append($chat);
return $chat.scrollTop(999999);
});
};
MessageView.prototype.start = function() {
return this.refresh();
};
return MessageView;
})();
window.MessageView = MessageView;
}).call(this);