PageSourceSearch

https://ameliashotgunsports.com/wp-content/plugins/trx_addons/components/shortcodes/skills/skills.js

js ameliashotgunsports.com collected 2026-10-04 06:22:09 UTC 5,604 bytes, 151 lines download raw bytes

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.