mirror of
https://github.com/fergalmoran/dss.web.git
synced 2026-02-16 13:11:33 +00:00
51 lines
2.1 KiB
JavaScript
Executable File
51 lines
2.1 KiB
JavaScript
Executable File
'use strict';
|
|
|
|
angular.module('dssWebApp')
|
|
.directive('dssWaveform', function (AudioService, PLAYSTATES, AUDIO_EVENTS) {
|
|
return {
|
|
templateUrl: 'app/directives/waveform/waveform.html',
|
|
restrict: 'EA',
|
|
link: function (scope, elem, attrs) {
|
|
elem.ready(function () {
|
|
var scrubBar = $('.scrubbar', elem);
|
|
scope.maxWidth = $('.scrubbar', elem).outerWidth(false);
|
|
|
|
$('.scrub-prog-img').width($('.scrub-bg').width());
|
|
$('.scrub-bg').bind('widthChange', function () {
|
|
console.log("WidthChange");
|
|
$('.scrub-prog-img').width($('.scrub-bg').width());
|
|
});
|
|
|
|
scrubBar.mousemove(function (e) {
|
|
$('.scrubBox-hover', scrubBar).css({
|
|
'left': (e.clientX - scrubBar.offset().left)
|
|
});
|
|
});
|
|
|
|
scope.$on(AUDIO_EVENTS.audioProgress, function (event, duration, position) {
|
|
if (scope.playState == PLAYSTATES.playing) {
|
|
scope.elapsed = position / 1000;
|
|
scope.playPos = (position / duration) * scope.maxWidth;
|
|
if (!scope.$$phase) {
|
|
scope.$apply();
|
|
}
|
|
}
|
|
});
|
|
scope.$on(AUDIO_EVENTS.audioFinished, function (id) {
|
|
scope.playState = PLAYSTATES.stopped;
|
|
});
|
|
scope.setPosition = function (event) {
|
|
console.log("AudioPlayer: setPosition", event);
|
|
if (scope.playState != PLAYSTATES.stopped) {
|
|
var newPosition = ((event.pageX - (scrubBar.offset().left)) / (scope.maxWidth) * 100);
|
|
AudioService.setPosition(newPosition);
|
|
}
|
|
};
|
|
});
|
|
},
|
|
controller: function ($scope) {
|
|
|
|
}
|
|
};
|
|
});
|