Файл: sys/static/js/ds-player.js
Строк: 155
<?php
var AudioPlayer = new Audio();
var AudioCurrentHash = "";
var AudioCurrentUniquie = "";
window.pageTitle = document.title;
function setPlayerSeeked(e) {
if (!AudioPlayer.currentTime) {
return ;
}
var event = event || window.event;
var position = event.offsetX * 100 / $(e).width();
var seek = AudioPlayer.duration / 100 * position;
AudioPlayer.currentTime = seek;
}
function getTimeString(sec)
{
if (!sec) return '0:00';
sec = Math.floor(sec);
var m = Math.floor(sec / 60);
sec -= (m * 60);
if (sec < 10) sec = '0' + sec;
var strtime = m + ':' + sec;
return strtime;
}
function AudioPlayerPause() {
$('.dpl').removeClass('ds-playing');
document.title = window.pageTitle;
}
function AudioPlayerStop() {
$('.dpl-progress-bar').css('width', '0%');
$('.dpl-progress-loaded').css('width', '0%');
$('.dpl').removeClass('ds-playing');
$('.dpl-time').text('0:00');
document.title = window.pageTitle;
}
jQuery(function($) {
// Play audio in click Progess bar
$(document).on('click', '.dpl-progress', function() {
var parent = $(this).parents('.dpl');
if (!parent.hasClass('ds-playing')) {
$(parent).find('.dpl-toggle').click();
}
});
// Toggle Player
$(document).on('click', '.dpl-toggle', function() {
var parent = $(this).parents('.dpl');
var hash = parent.attr('data-hash');
var uniquie = parent.attr('data-uniquie');
var src = parent.attr('data-src');
if (hash != AudioCurrentHash) {
AudioPlayerStop();
AudioPlayer.src = src;
AudioPlayer.play();
if (AudioCurrentHash == "") {
var currentPlay = getCookie('playerData');
if (currentPlay) {
var data = JSON.parse(currentPlay);
if (hash == data.hash) {
AudioPlayer.currentTime = data.currentTime;
}
}
}
AudioCurrentHash = hash;
AudioCurrentUniquie = uniquie;
parent.addClass('player-preload');
document.title = parent.attr('data-title');
$('.dpl[data-god="1"]').attr({
'data-hash': hash,
}).find('.dpl-title').text(parent.attr('data-title'));
$(".dpl").clone().appendTo(".player-playlist");
}
else if (!AudioPlayer.paused) {
AudioPlayer.pause();
} else {
AudioPlayer.play();
}
});
// Change volume player
$(document).on('click', '.dpl-volume', function(e) {
var event = event || window.event;
var X = event.offsetX;
var width = $(this).width();
var volume = X * 100 / width;
if (volume >= 95) {
volume = 100;
}
if (volume <= 5) {
volume = 0;
}
AudioPlayer.volume = (volume / 100);
$('.dpl-volume-bar').css('width', volume + '%');
});
// Progress Bar and Timing
AudioPlayer.addEventListener('timeupdate', function () {
var players = $(document).find('.dpl[data-hash="' + AudioCurrentHash + '"]');
players.each(function(i, p) {
if (!$(p).hasClass('ds-playing')) {
$(p).addClass('ds-playing')
}
})
setCookie('playerData', JSON.stringify({
hash: AudioCurrentHash,
currentTime: AudioPlayer.currentTime,
}), 1);
// Time string playing
var curtime = getTimeString(AudioPlayer.currentTime);
$('.dpl[data-hash="' + AudioCurrentHash + '"] .dpl-time').text(curtime);
// Progress Playing audio
var progress = 100 * AudioPlayer.currentTime / AudioPlayer.duration;
$('.dpl[data-hash="' + AudioCurrentHash + '"] .dpl-progress-bar').css('width', progress + '%');
// Buffer Loaded
if (AudioPlayer.buffered.length) {
var buffered = 100 * AudioPlayer.buffered.end(0) / AudioPlayer.duration;
$('.dpl[data-hash="' + AudioCurrentHash + '"] .dpl-progress-loaded').css('width', buffered + '%');
}
});
// Playing Player
AudioPlayer.addEventListener('playing', function () {
var parent = $('.dpl[data-hash="' + AudioCurrentHash + '"]');
var hash = parent.attr('data-hash');
parent.addClass('ds-playing').removeClass('player-preload');
});
// Pause Player
AudioPlayer.addEventListener('pause', function () {
AudioPlayerPause();
});
// Ended audio
AudioPlayer.addEventListener('ended', function () {
AudioPlayerStop();
var is_current = false;
$(document).find('.dpl').each(function(index, elem) {
var hash = $(elem).attr('data-hash');
var uniquie = $(elem).attr('data-uniquie');
if (is_current) {
$('.dpl[data-uniquie="' + uniquie + '"]').find('.dpl-toggle').click();
is_current = false;
}
else if (uniquie == AudioCurrentUniquie) {
is_current = true;
}
});
});
});
?>