123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. /**
  2. *
  3. * @authors Eric Hsiao
  4. *
  5. */
  6. var couponItem = function (_index, _status) {
  7. //private menbers
  8. var $container;
  9. var itemIndex;
  10. var status = { "id": 1, "lp": 1, "gp": 10, "issoldout": false, "isredeemed": false, "isnomoney": false, "canuse": false, "video": '' }
  11. //template
  12. var couponTemplate =
  13. `<div class="coupon__item">
  14. <div class="coupon__item__content">
  15. <div class="coupon__item__btn"></div>
  16. <div class="coupon__item__lp"></div>
  17. <div class="coupon__item__gp"></div>
  18. </div>
  19. <div class="coupon__item__overlayer"></div>
  20. </div>`;
  21. /***********************************/
  22. //private methods
  23. function init() {
  24. // $container = _container;
  25. itemIndex = _index;
  26. $container = $(couponTemplate).appendTo($('.game__store__coupon'));
  27. status = $.extend(status, _status);
  28. updateCoupon();
  29. $container.click(function (e) {
  30. e.preventDefault();
  31. doClick();
  32. });
  33. }
  34. function updateCoupon() {
  35. $container.find('.coupon__item__lp').text(status.lp);
  36. $container.find('.coupon__item__gp').text(status.gp);
  37. //////////////////////////////////////
  38. if (status.video != '') {
  39. $container.addClass('coupon__item__video');
  40. }
  41. if (status.lock) {
  42. $container.find('.coupon__item__btn').addClass('lock');
  43. } else {
  44. $container.find('.coupon__item__btn').removeClass('lock');
  45. }
  46. if (status.issoldout) {
  47. $container.addClass('sellout');
  48. } else {
  49. $container.removeClass('sellout');
  50. }
  51. if (status.isredeemed) {
  52. $container.find('.coupon__item__btn').addClass('used');
  53. } else {
  54. $container.find('.coupon__item__btn').removeClass('used');
  55. }
  56. }
  57. function doClick() {
  58. console.log('點選 ' + status.gp + '吉點 交換 LINE Point : ' + status.lp + '點');
  59. if (status.issoldout) {
  60. storePage.showPopout('<p>獎項已兌換完畢</p>');
  61. } else if (status.lock) {
  62. // alert('未解鎖');
  63. $('.video__popout').show();
  64. TweenMax.set('.video__popout', { autoAlpha: 0 });
  65. TweenMax.to('.video__popout', 0.5, { autoAlpha: 1 });
  66. // $('.video__content').html('<iframe width="640" height="360" src="https://www.youtube.com/embed/' + status.video + '" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>');
  67. console.log('VIDEO = ' + status.video);
  68. player.loadVideoById(status.video);
  69. player.stopVideo(0);
  70. videoCallback = function () {
  71. TweenMax.to('.video__popout', 0.5, { autoAlpha: 0 });
  72. status.lock = false;
  73. console.log('SET cookie');
  74. $.cookie('luckydraw.isVideoUnlock', true);
  75. console.log('luckydraw.isVideoUnlock = ' + $.cookie('luckydraw.isVideoUnlock'));
  76. updateCoupon();
  77. setTimeout(function () {
  78. doClick();
  79. }, 300);
  80. }
  81. } else if (status.isredeemed) {
  82. storePage.showPopout('<p>本週已兌換</p>');
  83. } else if (status.isnomoney) {
  84. storePage.showPopout('<p>很抱歉,兌換吉點餘額不足。</p>');
  85. } else {
  86. $('.game__popout__content .content').hide();
  87. $('.game__popout__submit').show();
  88. $('.game__popout__submit__text').text(status.gp);
  89. $('.game__popout .content__lp .lp').text(status.lp);
  90. $('.game__popout .content__lp').show();
  91. TweenMax.set('.game__popout__submit', { y: 50 });
  92. TweenMax.to('.game__popout__submit', 0.5, { y: 0, ease: Back.easeOut.config(1.7) });
  93. $('.game__popout').show();
  94. TweenMax.set('.game__popout', { autoAlpha: 0 });
  95. TweenMax.to('.game__popout', 0.5, { autoAlpha: 1 });
  96. /*storePage.showPopout(null,function () {
  97. //使用Coupon
  98. main.useCoupon(status.id,-status.gp, function () {
  99. status.isredeemed = true;
  100. updateCoupon();
  101. });
  102. });*/
  103. storePage.useCoupon(status.id,-status.gp, function () {
  104. status.isredeemed = true;
  105. updateCoupon();
  106. });
  107. }
  108. }
  109. //constructor
  110. {
  111. $(document).ready(function () {
  112. init();
  113. });
  114. }
  115. //public
  116. return {
  117. // videoComplete:function () {
  118. // console.log('videoComplete : ' + status.gp);
  119. // }
  120. };
  121. };