https://ameliashotgunsports.com/wp-content/plugins/trx_addons/components/shortcodes/skills/skills.js
1/** 2 * Shortcode Skills 3 * 4 * @package WordPress 5 * @subpackage ThemeREX Addons 6 * @since v1.2 7 */ 8 9/* global jQuery:false */ 10/* global TRX_ADDONS_STORAGE:false */ 11 12(function() { 13 14 "use strict"; 15 16 jQuery(document).on('action.init_hidden_elements', trx_addons_sc_skills_init); 17 jQuery(document).on('action.scroll_trx_addons', trx_addons_sc_skills_init); 18 jQuery(document).on('action.resize_trx_addons', trx_addons_sc_skills_resize); 19 20 // Skills init 21 function trx_addons_sc_skills_init(e, container) { 22 23 if (container === undefined) container = jQuery('body'); 24 25 var scrollPosition = jQuery(window).scrollTop() + jQuery(window).height(); 26 27 container.find('.sc_skills_item:not(.inited)').each(function () { 28 var skillsItem = jQuery(this); 29 // If item now invisible 30 if (jQuery(this).parents('div:hidden,article:hidden').length > 0) { 31 return; 32 } 33 var scrollSkills = skillsItem.offset().top; 34 if (scrollPosition > scrollSkills) { 35 var init_ok = true; 36 var skills = skillsItem.parents('.sc_skills').eq(0); 37 var type = skills.data('type'); 38 var total = (type=='pie' && skills.hasClass('sc_skills_compact_on')) 39 ? skillsItem.find('.sc_skills_data .pie') 40 : skillsItem.find('.sc_skills_total').eq(0); 41 var start = parseFloat(total.data('start')); 42 var stop = parseFloat(total.data('stop')); 43 var maximum = parseInt(total.data('max'), 10); 44 var startPercent = Math.round(start/maximum*100); 45 var stopPercent = Math.round(stop/maximum*100); 46 var ed = total.data('ed'); 47 var speed = parseInt(total.data('speed'), 10); 48 var step = start!=parseInt(start, 10) || stop!=parseInt(stop, 10) 49 ? parseFloat(total.data('step')) 50 : parseInt(total.data('step'), 10); 51 var duration = parseInt(total.data('duration'), 10); 52 if (isNaN(duration)) duration = Math.ceil(maximum/step)*speed; 53 54 if (type == 'bar') { 55 var dir = skills.data('dir'); 56 var count = skillsItem.find('.sc_skills_count').eq(0); 57 if (dir=='horizontal') 58 count.css('width', startPercent + '%').animate({ width: stopPercent + '%' }, duration); 59 else if (dir=='vertical') 60 count.css('height', startPercent + '%').animate({ height: stopPercent + '%' }, duration); 61 trx_addons_sc_skills_animate_counter(start, stop, speed, step, ed, total); 62 63 } else if (type == 'counter') { 64 trx_addons_sc_skills_animate_counter(start, stop, speed, step, ed, total); 65 66 } else if (type == 'pie') { 67 if (window.Chart) { 68 var steps = parseInt(total.data('steps'), 10); 69 var bg_color = total.data('bg_color'); 70 var border_color = total.data('border_color'); 71 var cutout = parseInt(total.data('cutout'), 10); 72 var easing = total.data('easing'); 73 var options = { 74 segmentShowStroke: border_color!='', 75 segmentStrokeColor: border_color, 76 segmentStrokeWidth: border_color!='' ? 1 : 0, 77 percentageInnerCutout: cutout, 78 animation: skillsItem.parents('.vc_row[data-vc-full-width="true"]').length==0, 79 animationSteps: steps, 80 animationEasing: easing, 81 animateRotate: true, 82 animateScale: skillsItem.parents('.vc_row[data-vc-full-width="true"]').length==0, 83 }; 84 var pieData = []; 85 total.each(function() { 86 var color = jQuery(this).data('color'); 87 var stop = parseInt(jQuery(this).data('stop'), 10); 88 var stopPercent = Math.round(stop/maximum*100); 89 pieData.push({ 90 value: stopPercent, 91 color: color 92 }); 93 }); 94 if (total.length == 1) { 95 trx_addons_sc_skills_animate_counter(start, stop, Math.round(1500/steps), step, ed, total); 96 pieData.push({ 97 value: 100-stopPercent, 98 color: bg_color 99 }); 100 } 101 var canvas = skillsItem.find('canvas'); 102 canvas 103 .data('pie-data', pieData) 104 .data('pie-options', options) 105 .attr({width: skillsItem.width(), height: skillsItem.width()}) 106 .css({width: skillsItem.width(), height: skillsItem.height()}); 107 new Chart(canvas.get(0).getContext("2d")).Doughnut(pieData, options); 108 } else 109 init_ok = false; 110 } 111 if (init_ok) skillsItem.addClass('inited'); 112 } 113 }); 114 } 115 116 // Skills counter animation 117 function trx_addons_sc_skills_animate_counter(start, stop, speed, step, ed, total) { 118 start = Math.min(stop, start + step); 119 // Example of format output number: leave 2 decimals and separate it with ',' and use dot '.' as thousands delimiter 120 //total.text(Number(start).formatMoney(2, ',', '.')+ed); 121 total.text(start+ed);
122 if (start < stop) { 123 setTimeout(function () { 124 trx_addons_sc_skills_animate_counter(start, stop, speed, step, ed, total); 125 }, speed); 126 } 127 } 128 129 // Resize Pie Skills 130 function trx_addons_sc_skills_resize() { 131 jQuery('.sc_skills_pie canvas').each(function () { 132 var canvas = jQuery(this); 133 // If item now invisible 134 if (canvas.parents('div:hidden,article:hidden').length > 0) { 135 return; 136 } 137 var skillsItem = canvas.parent(); 138 if (skillsItem.width() != canvas.width()) { 139 var data = canvas.data('pie-data'); 140 var opt = canvas.data('pie-options'); 141 if (data === undefined || opt === undefined) return; 142 canvas.empty() 143 .attr({width: skillsItem.width(), height: skillsItem.width()}) 144 .css({width: skillsItem.width(), height: skillsItem.height()}); 145 opt.animation = false; 146 new Chart(canvas.get(0).getContext("2d")).Doughnut(data, opt); 147 } 148 }); 149 } 150 151})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.