You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

72 lines
1.2 KiB

  1. define([
  2. 'js/system/events',
  3. 'html!ui/templates/announcements/template',
  4. 'css!ui/templates/announcements/styles',
  5. 'html!ui/templates/announcements/templateLine'
  6. ], function (
  7. events,
  8. template,
  9. styles,
  10. templateLine
  11. ) {
  12. return {
  13. tpl: template,
  14. message: null,
  15. maxTtl: 160,
  16. postRender: function () {
  17. this.onEvent('onGetAnnouncement', this.onGetAnnouncement.bind(this));
  18. },
  19. onGetAnnouncement: function (e) {
  20. if (isMobile) {
  21. if (['press g to', 'press u to'].some(f => e.msg.toLowerCase().indexOf(f) > -1))
  22. return;
  23. }
  24. this.clearMessage();
  25. let container = this.find('.list');
  26. let html = templateLine
  27. .replace('$MSG$', e.msg);
  28. let el = $(html)
  29. .appendTo(container);
  30. if (e.type)
  31. el.addClass(e.type);
  32. if (e.zIndex)
  33. el.css('z-index', e.zIndex);
  34. if (e.top)
  35. el.css('margin-top', e.top);
  36. this.message = {
  37. ttl: e.ttl ?? this.maxTtl,
  38. el: el
  39. };
  40. },
  41. update: function () {
  42. let message = this.message;
  43. if (!message)
  44. return;
  45. message.ttl--;
  46. if (message.ttl <= 0)
  47. this.clearMessage();
  48. },
  49. clearMessage: function () {
  50. let message = this.message;
  51. if (!message)
  52. return;
  53. this.message = null;
  54. message.el.remove();
  55. }
  56. };
  57. });