Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 

130 linhas
2.7 KiB

  1. define([
  2. 'js/system/client',
  3. 'js/system/events',
  4. 'html!ui/templates/events/template',
  5. 'html!ui/templates/events/templateEvent',
  6. 'css!ui/templates/events/styles',
  7. 'js/config'
  8. ], function (
  9. client,
  10. events,
  11. tpl,
  12. templateEvent,
  13. styles,
  14. config
  15. ) {
  16. return {
  17. tpl: tpl,
  18. list: [],
  19. container: '.right',
  20. postRender: function () {
  21. if (isMobile) {
  22. this.el.on('click', this.toggleButtons.bind(this));
  23. this.find('.btnCollapse').on('click', this.toggleButtons.bind(this));
  24. }
  25. this.onEvent('clearUis', this.clear.bind(this));
  26. this.onEvent('onObtainEvent', this.onObtainEvent.bind(this));
  27. this.onEvent('onRemoveEvent', this.onRemoveEvent.bind(this));
  28. this.onEvent('onUpdateEvent', this.onUpdateEvent.bind(this));
  29. this.onEvent('onCompleteEvent', this.onCompleteEvent.bind(this));
  30. this.onEvent('onToggleEventsVisibility', this.onToggleEventsVisibility.bind(this));
  31. this.onToggleEventsVisibility(config.showEvents);
  32. },
  33. clear: function () {
  34. this.list = [];
  35. this.el.find('.list').empty();
  36. },
  37. onRemoveEvent: function (id) {
  38. let l = this.list.spliceFirstWhere(f => f.id === id);
  39. if (l)
  40. l.el.remove();
  41. },
  42. onObtainEvent: function (eventObj) {
  43. let exists = this.list.find(function (l) {
  44. return (l.id === eventObj.id);
  45. });
  46. if (exists) {
  47. exists.el.find('.name').html(eventObj.name);
  48. exists.el.find('.description').html(eventObj.description);
  49. return;
  50. }
  51. let container = this.el.find('.list');
  52. let html = templateEvent
  53. .replace('$NAME$', eventObj.name)
  54. .replace('$DESCRIPTION$', eventObj.description);
  55. let el = $(html).appendTo(container);
  56. if (eventObj.isReady)
  57. el.addClass('ready');
  58. this.list.push({
  59. id: eventObj.id,
  60. el: el,
  61. event: eventObj
  62. });
  63. let eventEl = container.find('.event');
  64. eventEl.toArray().forEach(c => {
  65. let childEl = $(c);
  66. if (childEl.hasClass('active'))
  67. childEl.prependTo(container);
  68. });
  69. },
  70. onUpdateEvent: function (eventObj) {
  71. let e = this.list.find(function (l) {
  72. return (l.id === eventObj.id);
  73. });
  74. e.event.isReady = eventObj.isReady;
  75. e.el.find('.description').html(eventObj.description);
  76. e.el.removeClass('ready');
  77. if (eventObj.isReady) {
  78. e.el.removeClass('disabled');
  79. e.el.addClass('ready');
  80. }
  81. },
  82. onCompleteEvent: function (id) {
  83. let e = this.list.find(function (l) {
  84. return (l.id === id);
  85. });
  86. if (!e)
  87. return;
  88. e.el.remove();
  89. this.list.spliceWhere(function (l) {
  90. return (l.id === id);
  91. });
  92. },
  93. toggleButtons: function (e) {
  94. this.el.toggleClass('active');
  95. e.stopPropagation();
  96. },
  97. onToggleEventsVisibility: function (active) {
  98. if (active)
  99. this.show();
  100. else
  101. this.hide();
  102. }
  103. };
  104. });