templates/Recommendations/_profile_recommendations.html.twig line 1

Open in your IDE?
  1. <div id="recommendationsDebug">
  2.     {#<div id="queryData" style="display: none;"></div><a href="javascript:void(0);" id="showQueryBtn">Показать запрос</a>#}
  3.     <div id="profileViewsData">
  4.         <h6 style="color: #1ea471">Просмотры анкет на сайте</h6>
  5.         {% include "Recommendations/_profile_recommendations_debug_profile_data_table.html.twig" with {'viewed_profiles': profile_recommendations_debug_views()} %}
  6.     </div>
  7.     <div id="favouritesData">
  8.         <h6 style="color: #0d5aa7">Избранные</h6>
  9.         {% include "Recommendations/_profile_recommendations_debug_profile_data_table.html.twig" with {'viewed_profiles': profile_recommendations_debug_favourites()} %}
  10.     </div>
  11.     {% include "Recommendations/_profile_recommendations_debug_coeffs_data_table.html.twig" %}
  12.     <h6 style="color: #bd2130">Коэффициенты</h6>
  13.     <div id="coeffsData"></div>
  14.     {% include "Recommendations/_profile_recommendations_debug_viewed_profiles_data_table.html.twig" %}
  15.     <h6 style="color: #856404">Просмотренные рекомендации</h6>
  16.     <div id="viewedRecommendationsData"></div>
  17. </div>
  18. <h4 id="profileRecommendationsTitle" style="display: none;">Рекомендуемые</h4>
  19. <div id="profileRecommendationsContainer"></div>
  20. <div id="profileRecommendationTemplate" style="display: none;">
  21.     <p><a href="" class="name-link"></a></p>
  22.     <img class="img" src="" width="100"/>
  23. </div>
  24. <a href="javascript:void(0);" id="profileRecommendationsShowMore" style="display: none;">Показать еще рекомендации</a>
  25. <script src="{{ asset('ajax.js', 'js_script') }}"></script>
  26. <script src="{{ asset('local-storage.js', 'js_script') }}"></script>
  27. <script src="{{ asset('recommendations.js', 'js_script') }}"></script>
  28. <script type="text/javascript">
  29.     document.addEventListener('DOMContentLoaded', function() {
  30.         var showMorePressCount = 0;
  31.         var btnShowMore = document.querySelector('#profileRecommendationsShowMore');
  32.         btnShowMore.addEventListener('click', function() {
  33.             if(showMorePressCount < 5)
  34.                 fetchRecommendations();
  35.             if(++showMorePressCount >= 5)
  36.                 btnShowMore.style.display = 'none';
  37.         });
  38.         // document.querySelector('#showQueryBtn').addEventListener('click', function() {
  39.         //     document.querySelector('#queryData').style.display = 'block';
  40.         // });
  41.         function fetchRecommendations() {
  42.             {% set route = app.request.get('_route') %}
  43.             {% set gender = route == 'profile_list.list_by_gender' or route == 'profile_list.list_by_gender._pagination'
  44.                 ? app.request.get('gender')|gender_value_by_uri
  45.                 : gender_female()
  46.             %}
  47.             let url = '{{ path('recommendations.get', {city:app.request.get('city').uriIdentity, count: recommendations_count|default(5), imageSize: '357x500', exclude: (excludeRecommendationProfileIds is iterable ? excludeRecommendationProfileIds : [])|join(','), gender: gender }) }}';
  48.             let filter = JSON.parse('{{ recommendationSpec ? recommendationSpec.spec.toEsQueryObject|json_encode|raw : {}|json_encode|raw }}');
  49.             profileRecommendations.loadRecommendations(url, filter, function(response) {
  50.                 // console.log(response.profiles);
  51.                 var template = document.querySelector('#profileRecommendationTemplate');
  52.                 var container = document.querySelector('#profileRecommendationsContainer');
  53.                 var title = document.querySelector('#profileRecommendationsTitle');
  54.                 var profileViewsDataContainer = document.querySelector('#profileViewsData');
  55.                 if (!response.profiles.length) {
  56.                     btnShowMore.style.display = 'none';
  57.                     title.style.display = 'none';
  58.                     return;
  59.                 }
  60.                 title.style.display = '';
  61.                 btnShowMore.style.display = '';
  62.                 container.innerHTML = '';
  63.                 response.profiles.map(function(profile) {
  64.                     var node = template.cloneNode(true);
  65.                     node.style.display = 'block';
  66.                     node.querySelector('.name-link').setAttribute('href', profile.url);
  67.                     node.querySelector('.name-link').innerText = '(score: ' + (response.scores ? response.scores[profile.id] : '') + ', id: ' + profile.id + ') ' + profile.name;
  68.                     node.querySelector('.img').setAttribute('src', profile.image)
  69.                     container.appendChild(node);
  70.                 });
  71.                 createCoeffsTable(document.querySelector('#coeffsData'), response.coeffs_debug);
  72.                 createViewedRecommendationsTable(document.querySelector('#viewedRecommendationsData'), response.viewed_recommendations_debug);
  73.                 // document.querySelector('#queryData').innerHTML = response.query_debug;
  74.                 profileViewsDataContainer.innerHTML = response.viewed_profiles_debug;
  75.             });
  76.         }
  77.         {% if initialViewedRecommendationProfileIds is defined and initialViewedRecommendationProfileIds is iterable %}
  78.             {% for profileId in initialViewedRecommendationProfileIds %}
  79.                 profileRecommendations.addViewedProfile({{ profileId }});
  80.             {% endfor %}
  81.         {% endif %}
  82.         fetchRecommendations();
  83.     });
  84. </script>