1// @todo fix deprecated getCurrentTime function 2document.addEventListener("DOMContentLoaded", function () { 3 (function ($) { 4 window.ssp_player = []; 5 6 var sspUpdateDuration = []; 7 8 $('div.ssp-player-large').each(function () { 9 10 var large_player = $(this); 11 var player_instance_number = large_player.data('player-instance-number'); 12 //const player_waveform_colour = large_player.data('player-waveform-colour'); 13 var player_waveform_progress_colour = large_player.data('player-waveform-progress-colour'); 14 var source_file = large_player.data('source-file'); 15 sspUpdateDuration[player_instance_number] = ''; 16 17 // Create Player 18 window.ssp_player[player_instance_number] = WaveSurfer.create({ 19 container: '#waveform' + player_instance_number, 20 waveColor: '#444', 21 progressColor: player_waveform_progress_colour, 22 barWidth: 3, 23 barHeight: 15, 24 height: 8, 25 hideScrollbar: true, 26 skipLength: 30, 27 backend: 'MediaElement' 28 }); 29 30 //Set player track 31 window.ssp_player[player_instance_number].track = source_file; 32 33 /** 34 * Setting and drawing the peaks seems to be required for the 'load on play' functionality to work 35 */ 36 //Set peaks 37 window.ssp_player[player_instance_number].backend.peaks = [0.0218, 0.0183, 0.0165, 0.0198, 0.2137, 0.2888, 0.2313, 0.15, 0.2542, 0.2538, 0.2358, 0.1195, 0.1591, 0.2599, 0.2742, 0.1447, 0.2328, 0.1878, 0.1988, 0.1645, 0.1218, 0.2005, 0.2828, 0.2051, 0.1664, 0.1181, 0.1621, 0.2966, 0.189, 0.246, 0.2445, 0.1621, 0.1618, 0.189, 0.2354, 0.1561, 0.1638, 0.2799, 0.0923, 0.1659, 0.1675, 0.1268, 0.0984, 0.0997, 0.1248, 0.1495, 0.1431, 0.1236, 0.1755, 0.1183, 0.1349, 0.1018, 0.1109, 0.1833, 0.1813, 0.1422, 0.0961, 0.1191, 0.0791, 0.0631, 0.0315, 0.0157, 0.0166, 0.0108]; 38 39 //Draw peaks 40 window.ssp_player[player_instance_number].drawBuffer(); 41 42 //Variable to check if the track is loaded 43 window.ssp_player[player_instance_number].loaded = false; 44 45 // @todo Track Player errors 46 47 // On Media Ready 48 window.ssp_player[player_instance_number].on('ready', function (e) { 49 if (!window.ssp_player[player_instance_number].loaded) { 50 window.ssp_player[player_instance_number].loaded = true; 51 window.ssp_player[player_instance_number].play(); 52 } 53 $('#ssp_player_id_' + player_instance_number + ' #sspTotalDuration').text(window.ssp_player[player_instance_number].getDuration().toString().toFormattedDuration()); 54 $('#ssp_player_id_' + player_instance_number + ' #sspPlayedDuration').text(window.ssp_player[player_instance_number].getCurrentTime().toString().toFormattedDuration()); 55 }); 56 57 // On Media Played 58 window.ssp_player[player_instance_number].on('play', function (e) { 59 if (!window.ssp_player[player_instance_number].loaded) { 60 window.ssp_player[player_instance_number].load(window.ssp_player[player_instance_number].track, window.ssp_player[player_instance_number].backend.peaks); 61 } 62 // @todo Track Podcast Specific Play 63 $('#ssp_player_id_' + player_instance_number + ' #ssp-play-pause .ssp-icon').removeClass().addClass('ssp-icon ssp-icon-pause_icon'); 64 $('#ssp_player_id_' + player_instance_number + ' #sspPlayedDuration').text(window.ssp_player[player_instance_number].getCurrentTime().toString().toFormattedDuration()); 65 sspUpdateDuration[player_instance_number] = setInterval(function () { 66 $('#ssp_player_id_' + player_instance_number + ' #sspPlayedDuration').text(window.ssp_player[player_instance_number].getCurrentTime().toString().toFormattedDuration()); 67 }, 100); 68 }); 69 70 // On Media Paused 71 window.ssp_player[player_instance_number].on('pause', function (e) { 72 // @todo Track Podcast Specific Pause 73 $('#ssp_player_id_' + player_instance_number + ' #ssp-play-pause .ssp-icon').removeClass().addClass('ssp-icon ssp-icon-play_icon'); 74 clearInterval(sspUpdateDuration[player_instance_number]); 75 }); 76 77 // On Media Finished 78 window.ssp_player[player_instance_number].on('finish', function (e) { 79 $('#ssp_player_id_' + player_instance_number + ' #ssp-play-pause .ssp-icon').removeClass().addClass('ssp-icon ssp-icon-play_icon'); 80 // @todo Track Podcast Specific Finish 81 }); 82 83 // On Play/Pause button clicked 84 $('#ssp_player_id_' + player_instance_number + ' #ssp-play-pause').on('click', function (e) { 85 window.ssp_player[player_instance_number].playPause(); 86 }); 87 88 // On Back 30 seconds clicked 89 $('#ssp_player_id_' + player_instance_number + ' #ssp-back-thirty').on('click', function (e) { 90 // @todo Track Podcast Specific Back 30 91 window.ssp_player[player_instance_number].skipBackward(); 92 }); 93 94 // On clicking the playback speed button 95 $('#ssp_player_id_' + player_instance_number + ' #ssp_playback_speed' + player_instance_number).on('click', function (e) { 96 switch ($(e.currentTarget).parent().find('[data-ssp-playback-rate]').attr('data-ssp-playback-rate')) { 97 case "1": 98 $(e.currentTarget).parent().find('[data-ssp-playback-rate]').attr('data-ssp-playback-rate', '1.5'); 99 $(e.currentTarget).parent().find('[data-ssp-playback-rate]').text('1.5X'); 100 window.ssp_player[player_instance_number].setPlaybackRate(1.5); 101 break; 102 case "1.5": 103 $(e.currentTarget).parent().find('[data-ssp-playback-rate]').attr('data-ssp-playback-rate', '2'); 104 $(e.currentTarget).parent().find('[data-ssp-playback-rate]').text('2X'); 105 window.ssp_player[player_instance_number].setPlaybackRate(2); 106 break; 107 case "2": 108 $(e.currentTarget).parent().find('[data-ssp-playback-rate]').attr('data-ssp-playback-rate', '1'); 109 $(e.currentTarget).parent().find('[data-ssp-playback-rate]').text('1X'); 110 window.ssp_player[player_instance_number].setPlaybackRate(1); 111 default: 112 break; 113 } 114 }); 115 116 }); 117 118 }(jQuery)) 119});
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.