Files
dss.web/client/app/directives/waveform/waveform.directive.js
2016-09-16 22:05:45 +01:00

51 lines
2.1 KiB
JavaScript

'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) {
}
};
});