user-state-label.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import Ember from 'ember';
  2. export default Ember.Component.extend({
  3. tagName: 'span',
  4. classNames: 'user-state',
  5. classNameBindings: [
  6. 'user.state.is_banned:user-banned',
  7. 'user.state.is_hidden:user-hidden',
  8. 'user.state.is_online_hidden:user-online',
  9. 'user.state.is_offline_hidden:user-offline',
  10. 'user.state.is_online:user-online',
  11. 'user.state.is_offline:user-offline'
  12. ],
  13. attributeBindings: ['title'],
  14. title: function() {
  15. if (this.get('user.state.is_banned')) {
  16. if (this.get('user.state.banned_until')) {
  17. return interpolate(gettext('%(username)s\'s is banned until %(ban_expires)s.'), {
  18. 'username': this.get('user.username'),
  19. 'ban_expires': moment(this.get('user.state.banned_until')).format('LL, LT')
  20. }, true);
  21. } else {
  22. return interpolate(gettext('%(username)s\'s is banned.'), {
  23. 'username': this.get('user.username')
  24. }, true);
  25. }
  26. } else if (this.get('user.state.is_hidden')) {
  27. return interpolate(gettext('%(username)s\'s activity is hidden.'), {
  28. 'username': this.get('user.username')
  29. }, true);
  30. } else if (this.get('user.state.is_online_hidden')) {
  31. return interpolate(gettext('%(username)s is online and hidden.'), {
  32. 'username': this.get('user.username')
  33. }, true);
  34. } else if (this.get('user.state.is_offline_hidden')) {
  35. return interpolate(gettext('%(username)s was last seen hidden %(last_click)s.'), {
  36. 'username': this.get('user.username'),
  37. 'last_click': this.get('lastClick').fromNow()
  38. }, true);
  39. } else if (this.get('user.state.is_online')) {
  40. return interpolate(gettext('%(username)s is online.'), {
  41. 'username': this.get('user.username')
  42. }, true);
  43. } else if (this.get('user.state.is_offline')) {
  44. return interpolate(gettext('%(username)s was last seen %(last_click)s.'), {
  45. 'username': this.get('user.username'),
  46. 'last_click': this.get('lastClick').fromNow()
  47. }, true);
  48. }
  49. }.property(
  50. 'user.state.is_banned',
  51. 'user.state.is_hidden',
  52. 'user.state.is_online_hidden',
  53. 'user.state.is_offline_hidden',
  54. 'user.state.is_online',
  55. 'user.state.is_offline',
  56. 'user.state.banned_until',
  57. 'lastClick'
  58. ),
  59. lastClick: function() {
  60. return moment(this.get('user.state.last_click'));
  61. }.property('user.state.last_click', 'clock.tick')
  62. });