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.