/bitrix/modules/conversion/admin/helpers/scale.php

https://gitlab.com/Rad1calDreamer/honey · PHP · 156 lines · 130 code · 26 blank · 0 comment · 2 complexity · d906120956129a9baf2003891fdb9520 MD5 · raw file

  1. <?php
  2. namespace Bitrix\Conversion\AdminHelpers;
  3. use Bitrix\Main\Web\Json;
  4. use Bitrix\Main\Localization\Loc;
  5. Loc::loadMessages(__FILE__);
  6. function renderFilter(array $filter)
  7. {
  8. ?>
  9. <div class="adm-detail-toolbar">
  10. <div class="adm-detail-toolbar-right">
  11. <span class="adm-profit-filter"><?=Loc::getMessage('CONVERSION_FILTER_PERIOD')?>:</span>
  12. <div class="adm-input-wrap adm-input-wrap-calendar">
  13. <input id="bitrix-conversion-from" class="adm-input adm-input-calendar" type="text" name="from" value="<?=$filter['from']?>">
  14. <span class="adm-calendar-icon" title="<?=Loc::getMessage("admin_lib_calend_title")?>" onclick="BX.calendar({node:this, field:'from', form: '', bTime: 'false', bHideTime: false});"></span>
  15. </div>
  16. <div class="adm-input-wrap adm-input-wrap-calendar">
  17. <input id="bitrix-conversion-to" class="adm-input adm-input-calendar" type="text" name="to" value="<?=$filter['to']?>">
  18. <span class="adm-calendar-icon" title="<?=Loc::getMessage("admin_lib_calend_title")?>" onclick="BX.calendar({node:this, field:'to', form: '', bTime: 'false', bHideTime: false});"></span>
  19. </div>
  20. <span class="adm-btn" onclick="
  21. window.location.href = '?<?=http_build_query(array_diff_key($filter, array('from' => 1, 'to' => 1)))?>'
  22. + '&from=' + BX('bitrix-conversion-from').value
  23. + '&to=' + BX('bitrix-conversion-to' ).value
  24. "><?=Loc::getMessage('CONVERSION_FILTER_APPLY')?></span>
  25. </div>
  26. </div>
  27. <?
  28. }
  29. function renderMenu($id, $items)
  30. {
  31. ?>
  32. <script>
  33. BX('<?=$id?>').onclick = function()
  34. {
  35. this.blur();
  36. BX.adminShowMenu(this,
  37. <?
  38. $json = array();
  39. foreach ($items as $name => $params)
  40. {
  41. $json []= array(
  42. 'TEXT' => $name,
  43. 'ONCLICK' => "window.location.href = '?".http_build_query($params)."'",
  44. );
  45. }
  46. echo Json::encode($json);
  47. ?>
  48. , {active_class: 'adm-btn-save-active'});
  49. return false;
  50. };
  51. </script>
  52. <?
  53. }
  54. function renderSite($siteName, array $siteMenu)
  55. {
  56. ?>
  57. <div class="adm-profit-title">
  58. <?=Loc::getMessage('CONVERSION_SITE')?>:
  59. <span id="bitrix-conversion-site" class="adm-profit-title-name"><?=$siteName?></span>
  60. <span class="adm-profit-title-name-select"></span>
  61. <?renderMenu('bitrix-conversion-site', $siteMenu)?>
  62. </div>
  63. <?
  64. }
  65. function renderScale(array $param)
  66. {
  67. ?>
  68. <div class="adm-profit-scale-block">
  69. <?renderSite($param['SITE_NAME'], $param['SITE_MENU'])?>
  70. <br>
  71. <div class="adm-profit-scale">
  72. <div class="adm-profit-scale-part adm-profit-scale-part-1">
  73. <div class="adm-profit-scale-edge"></div>
  74. <div class="adm-profit-scale-inner"></div>
  75. <div class="adm-profit-scale-title"><?=Loc::getMessage('CONVERSION_SCALE_BAD')?></div>
  76. </div>
  77. <div class="adm-profit-scale-part adm-profit-scale-part-2">
  78. <div class="adm-profit-scale-inner"></div>
  79. <div class="adm-profit-scale-title"><?=Loc::getMessage('CONVERSION_SCALE_PASSABLE')?></div>
  80. </div>
  81. <div class="adm-profit-scale-part adm-profit-scale-part-3">
  82. <div class="adm-profit-scale-inner"></div>
  83. <div class="adm-profit-scale-title"><?=Loc::getMessage('CONVERSION_SCALE_OK')?></div>
  84. </div>
  85. <div class="adm-profit-scale-part adm-profit-scale-part-4">
  86. <div class="adm-profit-scale-inner"></div>
  87. <div class="adm-profit-scale-title"><?=Loc::getMessage('CONVERSION_SCALE_GOOD')?></div>
  88. </div>
  89. <div class="adm-profit-scale-part adm-profit-scale-part-5">
  90. <div class="adm-profit-scale-edge"></div>
  91. <div class="adm-profit-scale-inner"></div>
  92. <div class="adm-profit-scale-title"><?=Loc::getMessage('CONVERSION_SCALE_EXCELLENT')?></div>
  93. </div>
  94. <div class="adm-profit-scale-shadow"></div>
  95. <div class="adm-profit-scale-separation">
  96. <div class="adm-profit-scale-num-l">0%</div>
  97. <div class="adm-profit-scale-num-r"><?=end($param['SCALE'])?>%</div>
  98. <div class="adm-profit-scale-separation-inner">
  99. <?
  100. $conversion = $param['CONVERSION'];
  101. $shift = 100;
  102. $min = 0;
  103. foreach ($param['SCALE'] as $i => $max)
  104. {
  105. if ($conversion == $max)
  106. {
  107. $shift = ($i + 1) * 20;
  108. break;
  109. }
  110. elseif ($conversion < $max)
  111. {
  112. $shift = ($i * 20) + (($conversion - $min) * 20 / ($max - $min)); // TODO simplify
  113. break;
  114. }
  115. $min = $max;
  116. }
  117. ?>
  118. <div id="conversion-scale-shift" class="adm-profit-scale-value" style="left: <?=$shift?>%">
  119. <div id="conversion-scale-conversion" class="adm-profit-scale-value-num"><?=number_format($conversion, 2)?>%</div>
  120. </div>
  121. </div>
  122. </div>
  123. </div>
  124. </div>
  125. <div class="adm-description">
  126. <span class="adm-description-title"><?=Loc::getMessage('CONVERSION_DESCRIPTION_TITLE')?></span>
  127. <span class="adm-clarification"><?=Loc::getMessage('CONVERSION_DESCRIPTION')?></span>
  128. </div>
  129. <?
  130. }