112 lines
3.5 KiB
JavaScript
112 lines
3.5 KiB
JavaScript
|
'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;
|
||
|
};
|
||
|
|
||
|
}]
|
||
|
});
|