vendor/store.shopware.com/c108animatedcounter/src/Resources/views/storefront/element/cms-element-animatedcounter.html.twig line 1

Open in your IDE?
  1. {% block element_animatedcounter %}
  2.     {% if 'c108ACNumberOfCounter' in element.config|keys and element.config.c108ACNumberOfCounter.value is null %}
  3.         <div class="c108acnocounter c108-alert-frontend">
  4.             <span>{{ 'animatedcounter.element.nocounterselected'|trans }}</span>
  5.         </div>
  6.     {% else %}
  7.         <div class="cms-element-animatedcounter" style="height: 100%; width: 100%">
  8.             {% block element_image_inner %}
  9.                 {% if element.config.c108ACStyle.value is null %}
  10.                     <div class="c108acnocounter c108-alert-frontend">
  11.                         <span>{{ 'animatedcounter.element.nodesignselected'|trans }}</span>
  12.                     </div>
  13.                 {% endif %}
  14.                 {% if element.config.c108ACStyle.value == 'stylecolorpalette' and element.config.c108ACColorpalette.value is null %}
  15.                     <div class="c108acnocounter c108-alert-frontend">
  16.                         <span>{{ 'animatedcounter.element.nocolorpaletteselected'|trans }}</span>
  17.                     </div>
  18.                 {% endif %}
  19.                 {% if 'c108ACNumberOfCounter' not in element.config|keys or (element.config.c108ACNumberOfCounter.value|number_format >= 1) %}
  20.                     <div id="c108acwrapper-{{ id }}" class="c108acwrapper c108acspeed-{{ element.config.c108ACSpeed.value }} c108ac-{{ element.config.c108ACStyle.value }} {% if element.config.c108ACStyle.value == 'stylecolorpalette' %}c108ac-{{ element.config.c108ACColorpalette.value }}{% endif %}">
  21.                         <div class="c108acitem" {% if element.config.c108ACStyle.value == 'stylecustom' %} style="background-color:{{ element.config.c108ACCustomCounter1BgCol.value }}; border: 2px solid {{ element.config.c108ACCustomCounter1BorderCol.value }}; padding:30px 10px;" {% endif %}>
  22.                             <span id="c108accounter-{{ id }}-1" class="c108accounter" {% if element.config.c108ACDifferentStartValues.value %}data-start-value="{{ element.config.c108ACCounter1Startvalue.value }}"{% endif %} {% if element.config.c108ACStyle.value == 'stylecustom' %} style="color:{{ element.config.c108ACCustomCounter1CounterTxtCol.value }};" {% endif %}>{{ element.config.c108ACCounter1.value }}</span>
  23.                             <span class="c108aclabel" {% if element.config.c108ACStyle.value == 'stylecustom' %} style="color:{{ element.config.c108ACCustomCounter1LabelTxtCol.value }};" {% endif %}>{{ element.config.c108ACLabel1.value }}</span>
  24.                         </div>
  25.                     {% endif %}
  26.                     {% if 'c108ACNumberOfCounter' not in element.config|keys or (element.config.c108ACNumberOfCounter.value|number_format >= 2) %}
  27.                         <div class="c108acitem" {% if element.config.c108ACStyle.value == 'stylecustom' %} style="background-color:{{ element.config.c108ACCustomCounter2BgCol.value }}; border: 2px solid {{ element.config.c108ACCustomCounter2BorderCol.value }}; padding:30px 10px;" {% endif %}>
  28.                             <span id="c108accounter-{{ id }}-2" class="c108accounter" {% if element.config.c108ACDifferentStartValues.value %}data-start-value="{{ element.config.c108ACCounter2Startvalue.value }}"{% endif %} {% if element.config.c108ACStyle.value == 'stylecustom' %} style="color:{{ element.config.c108ACCustomCounter2CounterTxtCol.value }};" {% endif %}>{{ element.config.c108ACCounter2.value }}</span>
  29.                             <span class="c108aclabel" {% if element.config.c108ACStyle.value == 'stylecustom' %} style="color:{{ element.config.c108ACCustomCounter2LabelTxtCol.value }};" {% endif %}>{{ element.config.c108ACLabel2.value }}</span>
  30.                         </div>
  31.                     {% endif %}
  32.                     {% if 'c108ACNumberOfCounter' not in element.config|keys or (element.config.c108ACNumberOfCounter.value|number_format >= 3) %}
  33.                         <div class="c108acitem" {% if element.config.c108ACStyle.value == 'stylecustom' %} style="background-color:{{ element.config.c108ACCustomCounter3BgCol.value }}; border: 2px solid {{ element.config.c108ACCustomCounter3BorderCol.value }}; padding:30px 10px;" {% endif %}>
  34.                             <span id="c108accounter-{{ id }}-3" class="c108accounter" {% if element.config.c108ACDifferentStartValues.value %}data-start-value="{{ element.config.c108ACCounter3Startvalue.value }}"{% endif %} {% if element.config.c108ACStyle.value == 'stylecustom' %} style="color:{{ element.config.c108ACCustomCounter3CounterTxtCol.value }};" {% endif %}>{{ element.config.c108ACCounter3.value }}</span>
  35.                             <span class="c108aclabel" {% if element.config.c108ACStyle.value == 'stylecustom' %} style="color:{{ element.config.c108ACCustomCounter3LabelTxtCol.value }};" {% endif %}>{{ element.config.c108ACLabel3.value }}</span>
  36.                         </div>
  37.                     {% endif %}
  38.                     {% if 'c108ACNumberOfCounter' not in element.config|keys or (element.config.c108ACNumberOfCounter.value|number_format >= 4) %}
  39.                         <div class="c108acitem" {% if element.config.c108ACStyle.value == 'stylecustom' %} style="background-color:{{ element.config.c108ACCustomCounter4BgCol.value }}; border: 2px solid {{ element.config.c108ACCustomCounter4BorderCol.value }}; padding:30px 10px;" {% endif %}>
  40.                             <span id="c108accounter-{{ id }}-4" class="c108accounter" {% if element.config.c108ACDifferentStartValues.value %}data-start-value="{{ element.config.c108ACCounter4Startvalue.value }}"{% endif %} {% if element.config.c108ACStyle.value == 'stylecustom' %} style="color:{{ element.config.c108ACCustomCounter4CounterTxtCol.value }};" {% endif %}>{{ element.config.c108ACCounter4.value }}</span>
  41.                             <span class="c108aclabel" {% if element.config.c108ACStyle.value == 'stylecustom' %} style="color:{{ element.config.c108ACCustomCounter4LabelTxtCol.value }};" {% endif %}>{{ element.config.c108ACLabel4.value }}</span>
  42.                         </div>
  43.                     {% endif %}
  44.                 </div>
  45.             {% endblock %}
  46.         </div>
  47. <script>
  48.   function startAnimatedCounter(elementid, result, speed, startvalue) {
  49.       var maxTime = speed;
  50.       var interval = Math.floor(maxTime / result);
  51.       var element = document.getElementById(elementid);
  52.       var current = startvalue - 1;
  53.       // check if start value greater than or same as result value
  54.       // if yes, set start value to zero
  55.       if(startvalue >= result || startvalue < 1){
  56.             current = 0;
  57.       }
  58.       var counter = setInterval(function() {
  59.             current += 1;
  60.             element.innerHTML = current;
  61.             if (current == result) {
  62.                 clearInterval(counter);
  63.             }
  64.         }, interval);
  65.     }
  66.     window.addEventListener("load", (event) => {
  67.       idX = "c108acwrapper-{{ id }}";
  68.       createObserver(idX);
  69.       idX="";
  70.     }, false);
  71.     function createObserver(idY) {
  72.       boxElement = document.getElementById(idY);
  73.       let observer;
  74.       observer = new IntersectionObserver(handleIntersect);
  75.       observer.observe(boxElement);
  76.     }
  77.     function handleIntersect(entries, observer) {
  78.       entries.forEach((entry) => {
  79.         if (entry.isIntersecting) {
  80.           var C108ACSpeed = entry.target.classList.item(1).replace("c108acspeed-", "");
  81.           var c108AccounterId = entry.target.id.replace("c108acwrapper-", "");
  82.           var c108ACCounterFirstValueElement = document.getElementById("c108accounter-"+ c108AccounterId +"-1");
  83.           var c108ACCounterSecondValueElement = document.getElementById("c108accounter-"+ c108AccounterId +"-2");
  84.           var c108ACCounterThirdValueElement = document.getElementById("c108accounter-"+ c108AccounterId +"-3");
  85.           var c108ACCounterFourthValueElement = document.getElementById("c108accounter-"+ c108AccounterId +"-4");
  86.           var c108ACCounter01StartValue = 0;
  87.           var c108ACCounter02StartValue = 0;
  88.           var c108ACCounter03StartValue = 0;
  89.           var c108ACCounter04StartValue = 0;
  90.           var c108ACCounterFirstValue = c108ACCounterFirstValueElement.innerHTML;
  91.           
  92.           if(c108ACCounterFirstValueElement.getAttribute("data-start-value")){
  93.             c108ACCounter01StartValue = parseInt(c108ACCounterFirstValueElement.getAttribute("data-start-value"));
  94.           }
  95.           startAnimatedCounter("c108accounter-"+ c108AccounterId +"-1", c108ACCounterFirstValue, C108ACSpeed, c108ACCounter01StartValue);
  96.           if(c108ACCounterSecondValueElement){
  97.             var c108ACCounterSecondValue = c108ACCounterSecondValueElement.innerHTML;
  98.             if(c108ACCounterSecondValueElement.getAttribute("data-start-value")){
  99.               c108ACCounter02StartValue = parseInt(c108ACCounterSecondValueElement.getAttribute("data-start-value"));
  100.             }
  101.             startAnimatedCounter("c108accounter-"+ c108AccounterId +"-2", c108ACCounterSecondValue, C108ACSpeed, c108ACCounter02StartValue);
  102.           }
  103.           if(c108ACCounterThirdValueElement){
  104.             var c108ACCounterThirdValue = c108ACCounterThirdValueElement.innerHTML;
  105.             if(c108ACCounterThirdValueElement.getAttribute("data-start-value")){
  106.               c108ACCounter03StartValue = parseInt(c108ACCounterThirdValueElement.getAttribute("data-start-value"));
  107.             }
  108.             startAnimatedCounter("c108accounter-"+ c108AccounterId +"-3", c108ACCounterThirdValue, C108ACSpeed, c108ACCounter03StartValue);
  109.           }
  110.           if(c108ACCounterFourthValueElement){
  111.             var c108ACCounterFourthValue = c108ACCounterFourthValueElement.innerHTML;
  112.             if(c108ACCounterFourthValueElement.getAttribute("data-start-value")){
  113.               c108ACCounter04StartValue = parseInt(c108ACCounterFourthValueElement.getAttribute("data-start-value"));
  114.             }
  115.             startAnimatedCounter("c108accounter-"+ c108AccounterId +"-4", c108ACCounterFourthValue, C108ACSpeed, c108ACCounter04StartValue);
  116.           }
  117.           observer.unobserve(entry.target);
  118.         }
  119.       })
  120.   }
  121. </script>
  122.   {% endif %}
  123. {% endblock %}