Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 

98 rader
1.9 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. ], function(
  8. client,
  9. events,
  10. tpl,
  11. templateEvent,
  12. styles
  13. ) {
  14. return {
  15. tpl: tpl,
  16. list: [],
  17. container: '.right',
  18. postRender: function() {
  19. this.onEvent('onRezone', this.onRezone.bind(this));
  20. this.onEvent('onObtainEvent', this.onObtainEvent.bind(this));
  21. this.onEvent('onUpdateEvent', this.onUpdateEvent.bind(this));
  22. this.onEvent('onCompleteEvent', this.onCompleteEvent.bind(this));
  23. },
  24. onRezone: function() {
  25. this.list = [];
  26. this.el.find('.list').empty();
  27. },
  28. onObtainEvent: function(event) {
  29. var container = this.el.find('.list');
  30. var html = templateEvent
  31. .replace('$NAME$', event.name)
  32. .replace('$DESCRIPTION$', event.description);
  33. var el = $(html).appendTo(container);
  34. if (event.isReady)
  35. el.addClass('ready');
  36. /*if (event.active)
  37. el.addClass('active');
  38. else if (!event.isReady)
  39. el.addClass('disabled');*/
  40. this.list.push({
  41. id: event.id,
  42. el: el,
  43. event: event
  44. });
  45. var event = container.find('.event');
  46. event
  47. .sort(function(a, b) {
  48. a = $(a).hasClass('active') ? 1 : 0;
  49. b = $(b).hasClass('active') ? 1 : 0;
  50. return b - a;
  51. })
  52. .appendTo(container);
  53. },
  54. onUpdateEvent: function(event) {
  55. var e = this.list.find(function(l) {
  56. return (l.id == event.id);
  57. });
  58. e.event.isReady = event.isReady;
  59. e.el.find('.description').html(event.description);
  60. e.el.removeClass('ready');
  61. if (event.isReady) {
  62. e.el.removeClass('disabled');
  63. e.el.addClass('ready');
  64. }
  65. },
  66. onCompleteEvent: function(id) {
  67. var e = this.list.find(function(l) {
  68. return (l.id == id);
  69. });
  70. if (!e)
  71. return;
  72. e.el.remove();
  73. this.list.spliceWhere(function(l) {
  74. return (l.id == id);
  75. });
  76. }
  77. }
  78. });