PageRenderTime 52ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/assets/js/views/message.js

https://github.com/predominant/subway
JavaScript | 71 lines | 61 code | 6 blank | 4 comment | 7 complexity | fab9dd80c03ed893e5d67a9f48c75776 MD5 | raw file
  1. var MessageView = Backbone.View.extend({
  2. initialize: function() {
  3. this.render();
  4. },
  5. className: 'message-box',
  6. render: function() {
  7. var nick = this.model.get('sender') || this.model.collection.channel.get('name');
  8. var html;
  9. if (_.include(['join', 'part', 'nick', 'topic', 'quit'], this.model.get('type')))
  10. html = this.setText(this.model.get('type'));
  11. // This handles whether to output a message or an action
  12. else if (this.model.get('text') && this.model.get('text').substr(1, 6) === 'ACTION') {
  13. html = ich.action({
  14. user: nick,
  15. content: this.model.get('text').substr(8),
  16. renderedTime: utils.formatDate(Date.now())
  17. }, true);
  18. html = this.model.parse(html);
  19. } else {
  20. html = ich.message({
  21. user: nick,
  22. type: this.model.get('type'),
  23. content: this.model.get('text'),
  24. renderedTime: utils.formatDate(Date.now())
  25. }, true);
  26. html = this.model.parse(html);
  27. }
  28. $(this.el).html(html);
  29. return this;
  30. },
  31. // Set output text for status messages
  32. setText: function(type) {
  33. var html = '';
  34. switch (type) {
  35. case 'join':
  36. case 'part':
  37. html = ich.join_part({
  38. type: type,
  39. nick: this.model.get('nick'),
  40. action: type === 'join' ? 'joined' : 'left'
  41. });
  42. break;
  43. case 'quit':
  44. html = ich.join_part({
  45. type: 'part',
  46. nick: this.model.get('nick'),
  47. action: 'left',
  48. reason: this.model.get('reason') !== 'undefined' ? '('+this.model.get('reason')+')' : '(leaving)'
  49. //Message resolving to undefined will include again later
  50. //message: '(' + this.model.get('message') + ')'
  51. });
  52. break;
  53. case 'nick':
  54. html = ich.nick({
  55. oldNick: this.model.get('oldNick'),
  56. newNick: this.model.get('newNick')
  57. });
  58. break;
  59. case 'topic':
  60. html = '<span class="topic_img"></span><b>' + this.model.get('nick') + '</b> has changed the topic to <i>' + this.model.get('topic') + '</i>';
  61. break;
  62. }
  63. return html;
  64. }
  65. });