preview.js 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. require(['jquery', 'domReady!'], function ($j) {
  2. 'use strict';
  3. /**
  4. * Apply styles
  5. * @param {String} styles
  6. * @param {Object} element
  7. */
  8. function applyStyle(styles, element) {
  9. element.css({
  10. 'font-weight': 'normal', 'font-style': 'normal', 'text-decoration': 'none'
  11. });
  12. $j.each(styles, function (index, style) {
  13. switch (style) {
  14. case 'nostyle':
  15. element.css({
  16. 'font-weight': 'normal', 'font-style': 'normal', 'text-decoration': 'none'
  17. });
  18. break;
  19. case 'bold':
  20. element.css('font-weight', 'bold');
  21. break;
  22. case 'italic':
  23. element.css('font-style', 'italic');
  24. break;
  25. case 'underline':
  26. element.css('text-decoration', 'underline');
  27. break;
  28. }
  29. });
  30. }
  31. /**
  32. * Filter styles
  33. * @param {String} id
  34. * @param {String} value
  35. */
  36. function updateStyle(id, value) {
  37. var link = $j('#' + 'connector_configuration_dynamic_content_style_link-preview'),
  38. name = $j('#' + 'connector_configuration_dynamic_content_style_name-preview'),
  39. doc = $j('#' + 'connector_configuration_dynamic_content_style_doc-preview'),
  40. price = $j('#' + 'connector_configuration_dynamic_content_style_price-preview'),
  41. coupon = $j('#' + 'connector_configuration_dynamic_content_style_coupon-preview');
  42. switch (id) {
  43. case 'connector_configuration_dynamic_content_style_font_color':
  44. name.css('color', value);
  45. break;
  46. case 'connector_configuration_dynamic_content_style_font_size':
  47. name.css('font-size', value);
  48. break;
  49. case 'connector_configuration_dynamic_content_style_font_style':
  50. applyStyle(value, name);
  51. break;
  52. case 'connector_configuration_dynamic_content_style_price_color':
  53. price.css('color', value);
  54. break;
  55. case 'connector_configuration_dynamic_content_style_price_font_size':
  56. price.css('font-size', value);
  57. break;
  58. case 'connector_configuration_dynamic_content_style_price_font_style':
  59. applyStyle(value, price);
  60. break;
  61. case 'connector_configuration_dynamic_content_style_product_link_color':
  62. link.css('color', value);
  63. break;
  64. case 'connector_configuration_dynamic_content_style_product_link_font_size':
  65. link.css('font-size', value);
  66. break;
  67. case 'connector_configuration_dynamic_content_style_product_link_style':
  68. applyStyle(value, link);
  69. break;
  70. case 'connector_configuration_dynamic_content_style_font':
  71. doc.css('font-family', value);
  72. break;
  73. case 'connector_configuration_dynamic_content_style_color':
  74. doc.css('background-color', value);
  75. break;
  76. case 'connector_configuration_dynamic_content_style_coupon_font_color':
  77. coupon.css('color', value);
  78. break;
  79. case 'connector_configuration_dynamic_content_style_coupon_font_size':
  80. coupon.css('font-size', value);
  81. break;
  82. case 'connector_configuration_dynamic_content_style_coupon_font_picker':
  83. coupon.css('font-family', value);
  84. break;
  85. case 'connector_configuration_dynamic_content_style_coupon_background_color':
  86. coupon.css('background-color', value);
  87. break;
  88. case 'connector_configuration_dynamic_content_style_coupon_font_style':
  89. applyStyle(value, coupon);
  90. break;
  91. }
  92. }
  93. /**
  94. * Initial function
  95. */
  96. function init() {
  97. var s = $j('#ddg-edc-preview'),
  98. pos = s.position(),
  99. elementsA = [
  100. $j('#connector_configuration_dynamic_content_style_font_color'),
  101. $j('#connector_configuration_dynamic_content_style_font_size'),
  102. $j('#connector_configuration_dynamic_content_style_price_color'),
  103. $j('#connector_configuration_dynamic_content_style_price_font_size'),
  104. $j('#connector_configuration_dynamic_content_style_product_link_color'),
  105. $j('#connector_configuration_dynamic_content_style_product_link_font_size'),
  106. $j('#connector_configuration_dynamic_content_style_font'),
  107. $j('#connector_configuration_dynamic_content_style_color'),
  108. $j('#connector_configuration_dynamic_content_style_coupon_font_color'),
  109. $j('#connector_configuration_dynamic_content_style_coupon_font_size'),
  110. $j('#connector_configuration_dynamic_content_style_coupon_font_picker'),
  111. $j('#connector_configuration_dynamic_content_style_coupon_background_color')
  112. ],
  113. elementsB = [
  114. $j('#connector_configuration_dynamic_content_style_font_style'),
  115. $j('#connector_configuration_dynamic_content_style_price_font_style'),
  116. $j('#connector_configuration_dynamic_content_style_product_link_style'),
  117. $j('#connector_configuration_dynamic_content_style_coupon_font_style')
  118. ];
  119. $j(window).scroll(function () {
  120. var windowpos = $j(window).scrollTop();
  121. if (windowpos >= pos.top &&
  122. windowpos <
  123. $j('#connector_configuration_dynamic_content_style_coupon_font_style').position().top - 350) {
  124. s.attr('style', ''); //kill absolute positioning
  125. s.css({
  126. position: 'fixed', top: '80px', left: $j(document).innerWidth() - 250
  127. });
  128. } else if (windowpos >=
  129. $j('#connector_configuration_dynamic_content_style_coupon_font_style').position().top - 350) {
  130. s.css({
  131. position: 'absolute',
  132. top:
  133. $j('#connector_configuration_dynamic_content_style_coupon_font_style').position().top - 350 + 'px',
  134. left: $j(document).innerWidth() - 250
  135. });
  136. } else {
  137. s.css({
  138. position: 'absolute',
  139. top: pos.top + 'px',
  140. left: $j(document).innerWidth() - 250
  141. });
  142. }
  143. });
  144. $j(window).resize(function () {
  145. $j('#ddg-edc-preview').css({
  146. left: $j(document).innerWidth() - 250
  147. });
  148. });
  149. $j.each(elementsA, function (index, element) {
  150. var id = element.attr('id'),
  151. value = element.val();
  152. updateStyle(id, value);
  153. $j(element).on('change keyup blur input', function () {
  154. id = element.attr('id');
  155. value = element.val();
  156. updateStyle(id, value);
  157. });
  158. });
  159. $j.each(elementsB, function (index, element) {
  160. var id = element.attr('id'),
  161. value = element.val();
  162. updateStyle(id, value);
  163. $j(element).on('change', function () {
  164. id = element.attr('id');
  165. value = element.val();
  166. updateStyle(id, value);
  167. });
  168. });
  169. }
  170. //initialise
  171. init();
  172. });