I have this part of code that works great for me. It is creating two circle progress bars and animating them depending on the given percentage values.
There are two functions timer_0 and timer_1 that are almost the same except the indices. How can I create a loop and invoke these functions by their suffixes. Any help will be appreciated.
Html part
<div class="row">
<div class="col-sm-3">
<div class="progress progress-radial">
<svg width="160" height="160" viewBox="0 0 160 160" data-progress-value="95">
<circle class="progress-meter" cx="80" cy="80" r="78" fill="none" stroke-width="4" />
<circle style="stroke-dasharray: 490.088; stroke-dashoffset: 50.000;" stroke='red' class="progress-value" cx="80" cy="80" r="78" fill="none" stroke-width="4" />
</svg>
<div class="progress-body">
<div class="progress-data-value">
60%
</div>
<div class="progress-title">
Skill
</div>
</div>
</div>
</div>
<div class="col-sm-3">
<div class="progress progress-radial">
<svg width="160" height="160" viewBox="0 0 160 160" data-progress-value="95">
<circle class="progress-meter" cx="80" cy="80" r="78" fill="none" stroke-width="4" />
<circle style="stroke-dasharray: 490.088; stroke-dashoffset: 50.000;" stroke='red' class="progress-value" cx="80" cy="80" r="78" fill="none" stroke-width="4" />
</svg>
<div class="progress-body">
<div class="progress-data-value">
20%
</div>
<div class="progress-title">
Skill
</div>
</div>
</div>
</div>
</div>
Javascript part
jQuery(document).ready(function() {
jQuery('circle.progress-value').each(function(){
progress_circle_set = 100 - parseInt( jQuery(this).parent().parent().find('.progress-data-value').text() );
jQuery(this).attr('data-progress-set', Math.round(progress_circle_set * 490 / 100));
});
timer_0();
function timer_0() {
progress_circle_set = jQuery('.progress-value').eq(0).attr('data-progress-set');
if ( jQuery('.progress-value').eq(0).attr('data-progress-current' ) ) {
progress_circle_current = jQuery('.progress-value').eq(0).attr('data-progress-current' );
} else {
progress_circle_current = 490;
}
progress_circle_current--;
jQuery('.progress-value').eq(0).attr('data-progress-current', progress_circle_current );
if ( progress_circle_current != progress_circle_set ) {
jQuery('circle.progress-value').eq(0).css('stroke-dashoffset', progress_circle_current );
} else {
return;
}
setTimeout(timer_0, 10);
}
timer_1();
function timer_1() {
progress_circle_set = jQuery('.progress-value').eq(1).attr('data-progress-set');
if ( jQuery('.progress-value').eq(1).attr('data-progress-current' ) ) {
progress_circle_current = jQuery('.progress-value').eq(1).attr('data-progress-current' );
} else {
progress_circle_current = 490;
}
progress_circle_current--;
jQuery('.progress-value').eq(1).attr('data-progress-current', progress_circle_current );
if ( progress_circle_current != progress_circle_set ) {
jQuery('circle.progress-value').eq(1).css('stroke-dashoffset', progress_circle_current );
} else {
return;
}
setTimeout(timer_1, 10);
}
});