chat.jade 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. aside.chat(
  2. ng-controller="ChatController",
  3. ng-if="!anonymous"
  4. )
  5. .messages(
  6. infinite-scroll="loadMoreMessages()"
  7. infinite-scroll-disabled="chat.loading || chat.atEnd"
  8. infinite-scroll-initialize="ui.chatOpen"
  9. infinite-scroll-upwards="true"
  10. update-scroll-bottom-on="updateScrollPosition"
  11. )
  12. .infinite-scroll-inner
  13. .loading(ng-show="chat.loading")
  14. i.fa.fa-fw.fa-spin.fa-refresh
  15. |   Loading...
  16. .no-messages.text-center.small(ng-show='!chat.loading && chat.messages.length == 0')
  17. | No messages
  18. .first-message.text-center(ng-show='!chat.loading && chat.messages.length == 0')
  19. | Send your first message
  20. br
  21. i.fa.fa-arrow-down
  22. ul.list-unstyled(
  23. ng-click="resetUnreadMessages()"
  24. )
  25. li.message(
  26. ng-repeat="message in chat.messages"
  27. ng-controller="ChatMessageController"
  28. ng-class="{'self': message.user.id == user.id }"
  29. )
  30. div.date(ng-if="$index == 0 || (message.timestamp - chat.messages[$index - 1].timestamp) > 5 * 60 * 1000")
  31. {{ message.timestamp | formatDate:'h:mm a' }} {{ message.timestamp | relativeDate }}
  32. span.avatar
  33. img(ng-src="{{message.user.gravatar_url}}?d=mm&s=50")
  34. div.message-wrapper
  35. .name(ng-if="message.user.id != user.id") {{ message.user.first_name }}
  36. .message(
  37. ng-style="{\
  38. 'border-color': 'hsl({{ hue(message.user) }}, 70%, 70%)',\
  39. 'background-color': 'hsl({{ hue(message.user) }}, 60%, 97%)'\
  40. }"
  41. )
  42. .arrow(ng-style="{'border-color': 'hsl({{ hue(message.user) }}, 70%, 70%)'}")
  43. p(
  44. mathjax,
  45. ng-repeat="content in message.contents track by $index"
  46. ) {{ content }}
  47. .new-message
  48. textarea(
  49. placeholder="Your message...",
  50. on-enter="sendMessage()",
  51. ng-model="newMessageContent",
  52. ng-click="resetUnreadMessages()"
  53. )