scripts_js_file.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. package template
  2. var VarScriptsJsFile = []byte(`(function(window, $) {
  3. var frontend = function(window, $) {
  4. var ShopProductsLightGalleryLastImage = '';
  5. // Private
  6. function ShopProductsInitLightGallery() {
  7. $('#product_thumbnails').lightGallery({
  8. pager: false,
  9. showThumbByDefault: false,
  10. toogleThumb: false,
  11. controls: false,
  12. download: false
  13. });
  14. $('#product_image img').css('cursor', 'pointer').click(function() {
  15. $($('#product_thumbnails a.thumbnail').get($(this).data('index'))).click();
  16. });
  17. $('#product_thumbnails a.thumbnail').each(function() {
  18. $(this).mouseover(function() {
  19. if($(this).data('hover') != ShopProductsLightGalleryLastImage) {
  20. ShopProductsLightGalleryLastImage = $(this).data('hover');
  21. $('#product_image img').attr('src', $(this).data('hover'));
  22. $('#product_image img').data('index', $(this).data('index'));
  23. }
  24. });
  25. });
  26. };
  27. function ShopBasketBlockObject(object) {
  28. if(object && !$(object).hasClass('click-blocked')) {
  29. $(object).addClass('click-blocked');
  30. }
  31. };
  32. function ShopBasketUnBlockObject(object) {
  33. if(object && $(object).hasClass('click-blocked')) {
  34. $(object).removeClass('click-blocked');
  35. }
  36. };
  37. function ShopBasketObjectIsNotBlocked(object) {
  38. if(!object) {
  39. return false;
  40. }
  41. return !$(object).hasClass('click-blocked');
  42. };
  43. function ShopBasketSetNavBtnProductsCount(value) {
  44. $('#basket-nav-btn .badge').html(value);
  45. };
  46. function ShopBasketAjaxCommand(cmd, product_id, success, fail, always) {
  47. $.ajax({
  48. type: "GET",
  49. dataType: 'json',
  50. url: '/shop/basket/' + cmd + '/' + product_id + '/'
  51. }).done(function(data) {
  52. if(success) { success(data); }
  53. }).fail(function(xhr, status, error) {
  54. if(fail) { fail(xhr, status, error); }
  55. }).always(function() {
  56. if(always) { always(); }
  57. });
  58. };
  59. function ShopBasketAjaxGetCount(success, fail, always) {
  60. $.ajax({
  61. type: "GET",
  62. dataType: 'json',
  63. url: '/shop/basket/info/'
  64. }).done(function(data) {
  65. if(success && data && data.total_count) { success(data.total_count); }
  66. }).fail(function(xhr, status, error) {
  67. if(fail) { fail(xhr, status, error); }
  68. }).always(function() {
  69. if(always) { always(); }
  70. });
  71. };
  72. function ShopBasketAjaxUpdateCount() {
  73. ShopBasketAjaxGetCount(function(count) {
  74. ShopBasketSetNavBtnProductsCount(count);
  75. });
  76. };
  77. function Initialize() {
  78. // Check if jQuery was loaded
  79. if(typeof $ == 'function') {
  80. ShopProductsInitLightGallery();
  81. ShopBasketAjaxUpdateCount();
  82. } else {
  83. console.log('Error: jQuery is not loaded!');
  84. }
  85. };
  86. // Initialize
  87. if(window.addEventListener) {
  88. // W3C standard
  89. window.addEventListener('load', Initialize, false);
  90. } else if(window.attachEvent) {
  91. // Microsoft
  92. window.attachEvent('onload', Initialize);
  93. };
  94. // Public
  95. return {
  96. ShopBasketOpen: function(object) {
  97. if(ShopBasketObjectIsNotBlocked(object)) {
  98. ShopBasketBlockObject(object);
  99. // ShopBasketSetNavBtnProductsCount(0);
  100. // console.log('ShopOpenBasket', object);
  101. ShopBasketUnBlockObject(object);
  102. }
  103. return false;
  104. },
  105. ShopBasketProductPlus: function(object, product_id) {
  106. if(ShopBasketObjectIsNotBlocked(object)) {
  107. ShopBasketBlockObject(object);
  108. ShopBasketAjaxCommand('plus', product_id, function(data) {
  109. // console.log('success', data, product_id);
  110. }, function(xhr, status, error) {
  111. // console.log('fail', xhr, status, error, product_id);
  112. }, function() {
  113. ShopBasketAjaxUpdateCount();
  114. ShopBasketUnBlockObject(object);
  115. });
  116. }
  117. return false;
  118. },
  119. ShopBasketProductMinus: function(object, product_id) {
  120. if(ShopBasketObjectIsNotBlocked(object)) {
  121. ShopBasketBlockObject(object);
  122. ShopBasketAjaxCommand('minus', product_id, function(data) {
  123. // console.log('success', data, product_id);
  124. }, function(xhr, status, error) {
  125. // console.log('fail', xhr, status, error, product_id);
  126. }, function() {
  127. ShopBasketAjaxUpdateCount();
  128. ShopBasketUnBlockObject(object);
  129. });
  130. }
  131. return false;
  132. },
  133. ShopBasketProductRemove: function(object, product_id) {
  134. if(ShopBasketObjectIsNotBlocked(object)) {
  135. ShopBasketBlockObject(object);
  136. ShopBasketAjaxCommand('remove', product_id, function(data) {
  137. // console.log('success', data, product_id);
  138. }, function(xhr, status, error) {
  139. // console.log('fail', xhr, status, error, product_id);
  140. }, function() {
  141. ShopBasketAjaxUpdateCount();
  142. ShopBasketUnBlockObject(object);
  143. });
  144. }
  145. return false;
  146. },
  147. };
  148. }(window, $);
  149. window.frontend = frontend;
  150. }(window, jQuery));`)