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.

220 lines
9.3 KiB

'use strict';
angular
.module('sloDialectsAdmin')
.component('new', {
templateUrl: 'components/new/new.template.html',
controller: ['$http', '$routeParams', 'dialectSelect', '$location', '$scope', '$timeout', 'Config', function NewController($http, $routeParams, dialectSelect, $location, $scope, $timeout, Config) {
var vm = this;
vm.id = parseInt($routeParams.id);
vm.selectItems = dialectSelect;
vm.uploadFile = uploadFile;
vm.createNewAnalysisItem = createNewAnalysisItem;
vm.deleteAnalysisItem = deleteAnalysisItem;
vm.save = save;
vm.go = go;
vm.cancel = cancel;
vm.deleteAudio = deleteAudio;
var audioPath;
vm.analysisPlaceholders = [
'Naglas', 'Dolgi samoglasniki', 'Kratki naglašeni samoglasniki', 'Nenaglašeni samoglasniki', 'Soglasniki', 'Oblikoslovni pojavi', 'Leksika'
];
if(vm.id && vm.id > 0){
getAllDialectData(vm.id);
}
function uploadFile(event){
//document.getElementById('audio').classList.remove('hidden');
//console.log(document.getElementById('selected'));
document.getElementById('selected').classList.remove('hidden');
document.getElementById('selected').innerText = document.getElementById('audio').value;
var file = event.target.files[0];
vm.fileFormData = new FormData();
vm.fileFormData.append('file',file);
file = null;
/*
vm.dialectData.audioFile = file;
vm.dialectData.audio = file.name;
var files = document.getElementById('audio').files[0];
*/
};
function getAllDialectData(id){
getDialectData(id);
getAnalysisData(id);
}
function getDialectData(id){
$http.get('../api/dialects/'+id).then(function (result) {
vm.dialectData = result.data;
audioPath = Config.APP_PATH + vm.dialectData.audio;
if(vm.dialectData.audio){
var audio = document.createElement('AUDIO')
audio.id = 'audioID';
audio.controls = true;
audio.currentTime = 0;
document.getElementById('putAudio').appendChild(audio);
document.getElementById('audioID').src = audioPath;
}
}, function (error) {
console.log('Error getting dialects');
});
}
function getAnalysisData(id){
$http.get('../api/dialects/'+id+'/analysis/').then(function (result) {
vm.analysisData = prepareAnalysisData(result.data);
}, function (error) {
console.log('Error getting analysis');
});
}
function prepareAnalysisData(analysis) {
var _analysisData = [];
analysis.forEach(function (a) {
_analysisData[a.section] = _analysisData[a.section] || [];
_analysisData[a.section].push({
id: a.id,
section: a.section,
maintext: a.maintext,
examples: a.examples
});
});
return _analysisData;
}
function createNewAnalysisItem(dialect_id, section_id){
return $http.post('../api/dialects/'+dialect_id+'/analysis', {"section_id": section_id}).then(function(result){
// add also to view model
vm.analysisData = vm.analysisData || [];
vm.analysisData[section_id] = vm.analysisData[section_id] || [];
vm.analysisData[section_id].push({
id: result.data.id,
section: section_id,
maintext: '',
examples: ''
});
console.log('Successfuly created new analysis item.', result);
}, function(error){
console.log('Error creating new analysis item.', error);
});
}
function deleteAnalysisItem(dialect_id, analysis_id){
if(confirm('Ali ste prepričani, da želite izbrisati ta vnos? ' + dialect_id + ' ' + analysis_id)){
$http.delete('../api/dialects/'+dialect_id+'/analysis/'+analysis_id).then(function(response){
// remove from view model
for(var i in vm.analysisData){
vm.analysisData[i] = _.filter(vm.analysisData[i], function(e){
return e.id != analysis_id;
});
}
console.log('Deleted analysis item with id', analysis_id + '. Response: ', response);
}, function(err){
console.log('Error deleting item ', analysis_id+':', err);
});
}
}
function deleteAudio(delete_id, audio) {
if(confirm('Ali ste prepričani, da želite izbrisati ta posnetek? ' + audio)){
if(delete_id && delete_id > 0){
document.getElementById('putAudio').removeChild(document.getElementById('putAudio').firstChild);
//console.log(delete_id);
var promise1 = $http.delete('../api/dialects/' + delete_id + '/audio', {
}).then(function(response){
getAllDialectData(delete_id);
//location.reload();
console.log('Datoteka je izbrisana.');
}, function(error){
alert('Prišlo je do napake pri brisanju.');
console.log('Error', error);
});
}
}
}
function save(dialect_id, goBack){
if(dialect_id && dialect_id > 0){
var promise1 = $http.put('../api/dialects/'+dialect_id, {
analysisData: vm.analysisData,
dialectData: vm.dialectData
}).then(function(response){
//alert('Narečje je bilo uspešno shranjeno.');
}, function(error){
alert('Prišlo je do napake pri shranjevanju.');
console.log('Error', error);
});
if(vm.fileFormData){
if(document.getElementById('putAudio').firstChild){
document.getElementById('putAudio').removeChild(document.getElementById('putAudio').firstChild);
}
var promise2 = $http({
method: 'POST',
url: '../api/dialects/'+vm.id+'/files',
data: vm.fileFormData,
headers: {'Content-Type': undefined, 'Process-Data': false},
}).then(function(response){
//console.log(response);
if(!goBack){
location.reload();
//console.log(response);
}
console.log('File uploaded.');
}, function(error){
console.log('Error uploading file:', error);
});
if(goBack){
Promise.all([promise1, promise2]).then(function() {
go('/');
});
} else {
Promise.all([promise1, promise2]).then(function() {
go('edit/'+vm.id);
});
}
} else {
if(goBack){
Promise.all([promise1]).then(function() {
go('/');
});
} else {
go('edit/'+vm.id);
}
}
} else {
console.log('Dialect missing, cannot save.');
}
}
function go(path){
$location.path(path);
$timeout(function() {
$scope.$apply();
}, 0);
}
function cancel(path){
if(confirm("Nov vnos se ne bo shranil, ali želite nadaljevati?")) {
$http.delete('../api/dialects/'+vm.id).then(function(result){
go(path);
}, function(error){
console.log('Error deleting entry:', error);
});
}
}
}]
});