userMessageBlockView.coffee 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. define [
  2. "libs/underscore"
  3. "libs/backbone"
  4. "views/timeMessageBlockView"
  5. "moment"
  6. "https://c328740.ssl.cf1.rackcdn.com/mathjax/latest/MathJax.js?config=TeX-AMS_HTML"
  7. ], (_, Backbone, TimeMessageBlockView, moment) ->
  8. mathjaxConfig =
  9. "HTML-CSS": { availableFonts: ["TeX"] },
  10. TeX:
  11. equationNumbers: { autoNumber: "AMS" },
  12. useLabelIDs: false
  13. tex2jax:
  14. inlineMath: [ ['$','$'], ["\\(","\\)"] ],
  15. displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
  16. processEscapes: true
  17. MathJax.Hub.Config(mathjaxConfig);
  18. UserMessageBlockView = Backbone.View.extend
  19. initialize: () ->
  20. @template = _.template($("#messageBlockTemplate").html())
  21. @user = @options.user
  22. @timeMessageBlock = new TimeMessageBlockView()
  23. @render()
  24. render: () ->
  25. @setElement $(@template(
  26. first_name: @user.get("first_name")
  27. last_name: @user.get("last_name")
  28. gravatar_url: @user.get("gravatar_url")
  29. ))
  30. @$(".timeArea").html(@timeMessageBlock.$el)
  31. getTime: ->
  32. return @timeMessageBlock.timestamp
  33. appendMessage: (message) ->
  34. el = @buildHtml(message)
  35. @$(".messages").append(el)
  36. @_renderMathJax(el)
  37. @timeMessageBlock.setTimeOnce message.get("timestamp")
  38. prependMessage: (message) ->
  39. el = @buildHtml(message)
  40. @$(".messages").prepend(el)
  41. @_renderMathJax(el)
  42. @timeMessageBlock.setTime message.get("timestamp")
  43. buildHtml : (message)->
  44. time = moment(message.get("timestamp")).format("dddd, MMMM Do YYYY, h:mm:ss a")
  45. el = $("<div class='message' title='#{time}'>")
  46. el.text(message.get("content"))
  47. return el
  48. _renderMathJax: (element)->
  49. if element?
  50. MathJax.Hub.Queue(["Typeset", MathJax.Hub, element.get(0)])