{% block element_animatedcounter %}
{% if 'c108ACNumberOfCounter' in element.config|keys and element.config.c108ACNumberOfCounter.value is null %}
<div class="c108acnocounter c108-alert-frontend">
<span>{{ 'animatedcounter.element.nocounterselected'|trans }}</span>
</div>
{% else %}
<div class="cms-element-animatedcounter" style="height: 100%; width: 100%">
{% block element_image_inner %}
{% if element.config.c108ACStyle.value is null %}
<div class="c108acnocounter c108-alert-frontend">
<span>{{ 'animatedcounter.element.nodesignselected'|trans }}</span>
</div>
{% endif %}
{% if element.config.c108ACStyle.value == 'stylecolorpalette' and element.config.c108ACColorpalette.value is null %}
<div class="c108acnocounter c108-alert-frontend">
<span>{{ 'animatedcounter.element.nocolorpaletteselected'|trans }}</span>
</div>
{% endif %}
{% if 'c108ACNumberOfCounter' not in element.config|keys or (element.config.c108ACNumberOfCounter.value|number_format >= 1) %}
<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 %}">
<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 %}>
<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>
<span class="c108aclabel" {% if element.config.c108ACStyle.value == 'stylecustom' %} style="color:{{ element.config.c108ACCustomCounter1LabelTxtCol.value }};" {% endif %}>{{ element.config.c108ACLabel1.value }}</span>
</div>
{% endif %}
{% if 'c108ACNumberOfCounter' not in element.config|keys or (element.config.c108ACNumberOfCounter.value|number_format >= 2) %}
<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 %}>
<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>
<span class="c108aclabel" {% if element.config.c108ACStyle.value == 'stylecustom' %} style="color:{{ element.config.c108ACCustomCounter2LabelTxtCol.value }};" {% endif %}>{{ element.config.c108ACLabel2.value }}</span>
</div>
{% endif %}
{% if 'c108ACNumberOfCounter' not in element.config|keys or (element.config.c108ACNumberOfCounter.value|number_format >= 3) %}
<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 %}>
<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>
<span class="c108aclabel" {% if element.config.c108ACStyle.value == 'stylecustom' %} style="color:{{ element.config.c108ACCustomCounter3LabelTxtCol.value }};" {% endif %}>{{ element.config.c108ACLabel3.value }}</span>
</div>
{% endif %}
{% if 'c108ACNumberOfCounter' not in element.config|keys or (element.config.c108ACNumberOfCounter.value|number_format >= 4) %}
<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 %}>
<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>
<span class="c108aclabel" {% if element.config.c108ACStyle.value == 'stylecustom' %} style="color:{{ element.config.c108ACCustomCounter4LabelTxtCol.value }};" {% endif %}>{{ element.config.c108ACLabel4.value }}</span>
</div>
{% endif %}
</div>
{% endblock %}
</div>
<script>
function startAnimatedCounter(elementid, result, speed, startvalue) {
var maxTime = speed;
var interval = Math.floor(maxTime / result);
var element = document.getElementById(elementid);
var current = startvalue - 1;
// check if start value greater than or same as result value
// if yes, set start value to zero
if(startvalue >= result || startvalue < 1){
current = 0;
}
var counter = setInterval(function() {
current += 1;
element.innerHTML = current;
if (current == result) {
clearInterval(counter);
}
}, interval);
}
window.addEventListener("load", (event) => {
idX = "c108acwrapper-{{ id }}";
createObserver(idX);
idX="";
}, false);
function createObserver(idY) {
boxElement = document.getElementById(idY);
let observer;
observer = new IntersectionObserver(handleIntersect);
observer.observe(boxElement);
}
function handleIntersect(entries, observer) {
entries.forEach((entry) => {
if (entry.isIntersecting) {
var C108ACSpeed = entry.target.classList.item(1).replace("c108acspeed-", "");
var c108AccounterId = entry.target.id.replace("c108acwrapper-", "");
var c108ACCounterFirstValueElement = document.getElementById("c108accounter-"+ c108AccounterId +"-1");
var c108ACCounterSecondValueElement = document.getElementById("c108accounter-"+ c108AccounterId +"-2");
var c108ACCounterThirdValueElement = document.getElementById("c108accounter-"+ c108AccounterId +"-3");
var c108ACCounterFourthValueElement = document.getElementById("c108accounter-"+ c108AccounterId +"-4");
var c108ACCounter01StartValue = 0;
var c108ACCounter02StartValue = 0;
var c108ACCounter03StartValue = 0;
var c108ACCounter04StartValue = 0;
var c108ACCounterFirstValue = c108ACCounterFirstValueElement.innerHTML;
if(c108ACCounterFirstValueElement.getAttribute("data-start-value")){
c108ACCounter01StartValue = parseInt(c108ACCounterFirstValueElement.getAttribute("data-start-value"));
}
startAnimatedCounter("c108accounter-"+ c108AccounterId +"-1", c108ACCounterFirstValue, C108ACSpeed, c108ACCounter01StartValue);
if(c108ACCounterSecondValueElement){
var c108ACCounterSecondValue = c108ACCounterSecondValueElement.innerHTML;
if(c108ACCounterSecondValueElement.getAttribute("data-start-value")){
c108ACCounter02StartValue = parseInt(c108ACCounterSecondValueElement.getAttribute("data-start-value"));
}
startAnimatedCounter("c108accounter-"+ c108AccounterId +"-2", c108ACCounterSecondValue, C108ACSpeed, c108ACCounter02StartValue);
}
if(c108ACCounterThirdValueElement){
var c108ACCounterThirdValue = c108ACCounterThirdValueElement.innerHTML;
if(c108ACCounterThirdValueElement.getAttribute("data-start-value")){
c108ACCounter03StartValue = parseInt(c108ACCounterThirdValueElement.getAttribute("data-start-value"));
}
startAnimatedCounter("c108accounter-"+ c108AccounterId +"-3", c108ACCounterThirdValue, C108ACSpeed, c108ACCounter03StartValue);
}
if(c108ACCounterFourthValueElement){
var c108ACCounterFourthValue = c108ACCounterFourthValueElement.innerHTML;
if(c108ACCounterFourthValueElement.getAttribute("data-start-value")){
c108ACCounter04StartValue = parseInt(c108ACCounterFourthValueElement.getAttribute("data-start-value"));
}
startAnimatedCounter("c108accounter-"+ c108AccounterId +"-4", c108ACCounterFourthValue, C108ACSpeed, c108ACCounter04StartValue);
}
observer.unobserve(entry.target);
}
})
}
</script>
{% endif %}
{% endblock %}