PageSourceSearch

https://tonypolecastro.com/wp-content/themes/tpc-child/assets/js/custom.js?ver=1790691939

js tonypolecastro.com collected 2026-10-04 07:47:38 UTC 9,512 bytes, 242 lines download raw bytes

1/* This is your custom Javascript */
2(function ($) {
3  'use strict';
4
5  window.Custom_Changes = {
6    init: function () {
7      this.three_slider_tab();
8      this.my_courses_tab_count();
9      this.handle_user_stats_update();
10    },
11
12    my_courses_tab_count: function () {
13      $('.bb-courses-directory ').on('click', '#courses-my-courses', function () {
14        var selector = $(this);
15        selector.find('span.count').remove();
16        selector.find('div.count').remove();
17        var data = {
18          action: 'recount_my_courses_items',
19        };
20        jQuery.post(ajaxurl, data, function (response) {
21          selector.find('a').append('<div class="count">' + response + '</div>');
22        });
23      });
24    },
25
26    three_slider_tab: function () {
27      console.log('three slider tab init');
28
29      // NOTE: I hate this hardcoded approach but with the structure of the page, it's inevitable. This can be refactored in the future when learndash/topic.php and exercise/details.php is refactored and improved
30      // Exercise Player 1
31      let $learnPlayer = $('#0video_warmup_vid1 iframe');
32      let $playPlayer = $('#0video_slow_vid1 iframe');
33      let $explanationPlayer = $('#0video_explanation_vid1 iframe');
34      let $scalePlayer = $('#0video_scale_vid1 iframe');
35      let $backingPlayer = $('#0video_backing_track_vid1 iframe');
36
37      // Exercise Player 2
38      let $learnPlayer2 = $('#1video_warmup_vid1 iframe');
39      let $playPlayer2 = $('#1video_slow_vid1 iframe');
40      let $explanationPlayer2 = $('#1video_explanation_vid1 iframe');
41      let $scalePlayer2 = $('#1video_scale_vid1 iframe');
42      let $backingPlayer2 = $('#1video_backing_track_vid1 iframe');
43
44      // Define Player 1's
45      let learnPlayerJs = $learnPlayer.length != 0 ? new playerjs.Player($learnPlayer[0]) : null;
46      let playPlayerJs = $playPlayer.length != 0 ? new playerjs.Player($playPlayer[0]) : null;
47      let explanationPlayerJs = $explanationPlayer.length != 0 ? new playerjs.Player($explanationPlayer[0]) : null;
48      let scalePlayerJs = $scalePlayer.length != 0 ? new playerjs.Player($scalePlayer[0]) : null;
49      let backingPlayerJs = $backingPlayer.length != 0 ? new playerjs.Player($backingPlayer[0]) : null;
50
51      // Define Player 2's
52      let learnPlayerJs2 = $learnPlayer2.length != 0 ? new playerjs.Player($learnPlayer2[0]) : null;
53      let playPlayerJs2 = $playPlayer2.length != 0 ? new playerjs.Player($playPlayer2[0]) : null;
54      let explanationPlayerJs2 = $explanationPlayer2.length != 0 ? new playerjs.Player($explanationPlayer2[0]) : null;
55      let scalePlayerJs2 = $scalePlayer2.length != 0 ? new playerjs.Player($scalePlayer2[0]) : null;
56      let backingPlayerJs2 = $backingPlayer2.length != 0 ? new playerjs.Player($backingPlayer2[0]) : null;
57
58      // Init's Player 1's
59      let learnPlayerInit = false;
60      let playPlayerInit = false;
61      let explanationPlayerInit = false;
62      let scalePlayerInit = false;
63      let backingPlayerInit = false;
64
65      // Init's Player 2's
66      let learnPlayerInit2 = false;
67      let playPlayerInit2 = false;
68      let explanationPlayerInit2 = false;
69      let scalePlayerInit2 = false;
70      let backingPlayerInit2 = false;
71
72      // Ready Player1
73      if (learnPlayerJs) {
74        learnPlayerJs.on('ready', () => {
75          console.log('Learn Player Ready');
76          learnPlayerInit = true;
77        });
78        playPlayerJs.on('ready', () => {
79          console.log('Play Player ready');
80          playPlayerInit = true;
81        });
82      }
83      if (explanationPlayerJs) {
84        explanationPlayerJs.on('ready', () => {
85          console.log('Explanation Player Ready');
86          explanationPlayerInit = true;
87        });
88        scalePlayerJs.on('ready', () => {
89          console.log('Scale Player Ready');
90          scalePlayerInit = true;
91        });
92        backingPlayerJs.on('ready', () => {
93          console.log('Backing Player Ready');
94          backingPlayerInit = true;
95        });
96      }
97      // Ready Player2
98      if (learnPlayerJs2) {
99        learnPlayerJs2.on('ready', () => {
100          console.log('Learn Player2 Ready');
101          learnPlayerInit2 = true;
102        });
103        playPlayerJs2.on('ready', () => {
104          console.log('Play Player2 ready');
105          playPlayerInit2 = true;
106        });
107      }
108      if (explanationPlayerJs2) {
109        explanationPlayerJs2.on('ready', () => {
110          console.log('Explanation Player2 Ready');
111          explanationPlayerInit2 = true;
112        });
113        scalePlayerJs2.on('ready', () => {
114          console.log('Scale Player2 Ready');
115          scalePlayerInit2 = true;
116        });
117        backingPlayerJs2.on('ready', () => {
118          console.log('Backing Player2 Ready');
119          backingPlayerInit2 = true;
120        });
121      }
122
123      // When you click the tab link, start the associated video and pause the other videos.
124      jQuery('.video_slider li a:not(".tab-link,.backing-link,.video-link,.fav-link,.edit-save,.edit-cancle,.remove_like,.add_like")').click(function (e) {
125        e.preventDefault();
126        var $anchor = jQuery(this);
127        $anchor.closest('ul').find('>li').removeClass('active');
128        $anchor.parent().addClass('active');
129
130        var $video_players_wrapper = $anchor.parents('.excercise_video');
131        var video_type = $anchor.data('video-type');
132
133        let playerOneVideos = false;
134        let playerTwoVideos = false;
135        if ($video_players_wrapper.hasClass('video-set-0')) {
136          playerOneVideos = true;
137        } else if ($video_players_wrapper.hasClass('video-set-1')) {
138          playerTwoVideos = true;
139        }
140
141        if (video_type === 'warmup') {
142          console.log('play pause');
143          playPlayerJs.pause();
144          playPlayerInit2 ? playPlayerJs2.pause() : null;
145          learnPlayerJs.pause();
146          learnPlayerInit2 ? learnPlayerJs2.pause() : null;
147          if (playerOneVideos) {
148            learnPlayerJs.play();
149          } else if (playerTwoVideos) {
150            learnPlayerJs2.play();
151          }
152        } else if (video_type === 'slow') {
153          console.log('learn video pause');
154          learnPlayerJs.pause();
155          learnPlayerInit2 ? learnPlayerJs2.pause() : null;
156          playPlayerJs.pause();
157          playPlayerInit2 ? playPlayerJs2.pause() : null;
158          if (playerOneVideos) {
159            playPlayerJs.play();
160          } else if (playerTwoVideos) {
161            playPlayerJs2.play();
162          }
163        } else if (video_type === 'backing_track') {
164          console.log('explanataion and scale video pause');
165          explanationPlayerJs.pause();
166          explanationPlayerInit2 ? explanationPlayerJs2.pause() : null;
167          scalePlayerJs.pause();
168          scalePlayerInit2 ? scalePlayerJs2.pause() : null;
169          backingPlayerJs.pause();
170          backingPlayerInit2 ? backingPlayerJs2.pause() : null;
171
172          if (playerOneVideos) {
173            backingPlayerJs.play();
174          } else if (playerTwoVideos) {
175            backingPlayerJs2.play();
176          }
177        } else if (video_type === 'scale') {
178          console.log('explan and backing pause');
179          explanationPlayerJs.pause();
180          explanationPlayerInit2 ? explanationPlayerJs2.pause() : null;
181          backingPlayerJs.pause();
182          backingPlayerInit2 ? backingPlayerJs2.pause() : null;
183          scalePlayerJs.pause();
184          scalePlayerInit2 ? scalePlayerJs2.pause() : null;
185
186          if (playerOneVideos) {
187            scalePlayerJs.play();
188          } else if (playerTwoVideos) {
189            scalePlayerJs2.play();
190          }
191        } else if (video_type === 'explanation') {
192          console.log('scale and backing pause');
193          scalePlayerJs.pause();
194          scalePlayerInit2 ? scalePlayerJs2.pause() : null;
195          backingPlayerJs.pause();
196          backingPlayerInit2 ? backingPlayerJs2.pause() : null;
197          explanationPlayerJs.pause();
198          explanationPlayerInit2 ? explanationPlayerJs2.pause() : null;
199          if (playerOneVideos) {
200            explanationPlayerJs.play();
201          } else if (playerTwoVideos) {
202            explanationPlayerJs2.play();
203          }
204        }
205
206        // Hide Video
207        $video_players_wrapper.find('.video_player:visible').hide();
208
209        // Show Video
210        $video_players_wrapper.find($anchor.attr('href')).show();
211      });
212    },
213
214    handle_user_stats_update: function () {
215      $(document).on('tpcUserStatsUpdated', function (event) {
216        var total_days = event.detail.stats.total_days_online;
217        var consecutive_days = event.detail.stats.days_in_row;
218        var consecutive_weeks = event.detail.stats.weeks_in_row;
219        var longest_streak = event.detail.stats.longest_streak;
220
221        if (typeof total_days !== 'undefined') {
222          $('#tpc-user-stat-total-days').html(total_days);
223        }
224        if (typeof consecutive_days !== 'undefined') {
225          $('#tpc-user-stat-consecutive-days').html(consecutive_days);
226        }
227        if (typeof consecutive_weeks !== 'undefined') {
228          $('#tpc-user-stat-consecutive-weeks').html(consecutive_weeks);
229        }
230        if (typeof longest_streak !== 'undefined') {
231          $('#tpc-user-stat-longest-streak').html(longest_streak);
232        }
233        // Add the checkmark for today's day in the calendar.
234        $('.fc-day-today .fc-daygrid-day-events').addClass('fc-h-event');
235      });
236    },
237  };
238
239  $(document).on('ready', function () {
240    Custom_Changes.init();
241  });
242})(jQuery);

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.