You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

112 lines
3.5 KiB

'use strict';
angular
.module('sloDialectsApp')
.component('dialectComponent', {
templateUrl: 'components/dialect/dialect.template.html',
bindings: {
resolve: '<',
close: '&',
dismiss: '&',
modalInstance: '<'
},
controller: ['$scope', '$rootScope', 'Config', function dialectController($scope, $rootScope, Config) {
var vm = this;
vm.$onInit = function () {
// injected resolve
vm.dialectData = vm.resolve.dialectData;
vm.dialectData.audio = Config.APP_PATH + vm.dialectData.audio;
vm.analysisData = prepareAnalysisData(vm.resolve.analysisData);
// prepare print view
$rootScope.printData = $rootScope.printData || {};
$rootScope.printData.dialectData = vm.dialectData;
$rootScope.printData.analysisData = vm.analysisData;
// injected modal result
vm.modalInstance.result.then(function(){
if(vm.wavesurfer){
vm.wavesurfer.destroy(); // close button clicked (success)
}
}, function(){
if(vm.wavesurfer){
vm.wavesurfer.destroy(); // ESC key or backdrop click (fail)
}
});
};
function prepareAnalysisData(analysis){
var _analysisData = [];
analysis.forEach(function(a){
_analysisData[a.section] = _analysisData[a.section] || [];
_analysisData[a.section].push({
maintext: a.maintext,
examples: a.examples
});
});
return _analysisData;
}
vm.ok = function(){
vm.close();
}
// wafesurfer //
var activeUrl = null;
vm.paused = true;
$scope.$on('wavesurferInit', function (e, wavesurfer) {
vm.wavesurfer = vm.wavesurfer || wavesurfer;
/*
wavesurfer.on('loading', function (percents) {
document.getElementById('progress').value = percents;
$scope.$apply();
});
wavesurfer.on('ready', function (percents) {
document.getElementById('progress').style.display = 'none';
$scope.$apply();
});
*/
vm.wavesurfer.on('play', function () {
vm.paused = false;
});
vm.wavesurfer.on('pause', function () {
vm.paused = true;
});
vm.wavesurfer.on('finish', function () {
vm.paused = true;
vm.wavesurfer.seekTo(0);
$scope.$apply();
});
});
vm.play = function (url) {
if (!vm.wavesurfer) {
return;
}
activeUrl = url;
vm.wavesurfer.once('ready', function () {
vm.wavesurfer.play();
$scope.$apply();
});
vm.wavesurfer.load(activeUrl);
};
vm.isPlaying = function (url) {
return url == activeUrl;
};
}]
});