user-state-label.js 2.4 KB

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