Files
old-wiaas-legacy/api-wiaas/client/js/components/documents/documents-link.directive.js
2018-06-11 11:09:35 +02:00

121 lines
4.5 KiB
JavaScript

(function () {
global.dashModule
.controller('documentsLinkCtrl', ['$scope', '$http', '$', '$translate', 'utilsService', documentsLinkController])
.directive('documentsLink', [documentsLinkDirective]);
function documentsLinkDirective() {
return {
restrict: 'E',
templateUrl: 'documents/html/documentsLinkTemplate'
};
}
function documentsLinkController($scope, $http, $, $translate, utilsService) {
$scope.getDocumentsAndPackages = getDocumentsAndPackages;
$scope.selectPackage = selectPackage;
$scope.getPackageClass = getPackageClass;
$scope.documentDragStart = documentDragStart;
$scope.documentDragStop = documentDragStop;
$scope.documentDropped = documentDropped;
$scope.updatePackageDocuments = updatePackageDocuments;
$scope.documents = [];
$scope.packages = [];
$scope.selectedPackage = {};
function getDocumentsAndPackages() {
$http({
method: 'POST',
url: 'documents/api/getDocumentsAndPackages'
}).then(setDocumentsAndPackages, utilsService.onHttpError);
}
function setDocumentsAndPackages(response) {
if (response.data && response.data.documents && response.data.packages) {
$scope.documents = response.data.documents;
$scope.packages = response.data.packages;
$scope.documents.forEach(hideLinkedDocuments);
$scope.selectedPackage = response.data.packages[0] || {};
}
}
function hideLinkedDocuments(curentDocument) {
let isDocumentInArray = false;
if ($scope.selectedPackage.documents) {
isDocumentInArray = $scope.selectedPackage.documents.find((doc) => {
return doc.idDocument === curentDocument.idDocument;
});
}
curentDocument.isNotLinked = isDocumentInArray ? curentDocument.isNotLinked = false : curentDocument.isNotLinked = true;
}
function selectPackage(selected) {
$scope.selectedPackage = selected;
$scope.documents.forEach(hideLinkedDocuments);
}
function getPackageClass(curent) {
return curent === $scope.selectedPackage ? 'selected-package' : '';
}
function documentDragStart(event, ui, selector) {
$('#'+selector).css({
overflow: 'visible',
});
}
function documentDragStop(event, ui, selector) {
$('#'+ selector).css({
'overflow': 'auto'
});
}
function documentDropped(event, ui, dropContainer) {
const dropToSelector = $(ui.helper).attr('drop-to');
const idDocument = $(ui.helper).attr('id-document');
if(dropContainer !== dropToSelector){
return;
}
if (dropToSelector === 'linked-documents') {
const dragedDocument = $scope.documents.find((doc) => {
return doc.idDocument === idDocument;
});
$scope.selectedPackage.documents.push(dragedDocument);
$scope.documents.forEach(hideLinkedDocuments);
} else if(dropToSelector === 'all-documents') {
const dragedDocumentIndex = $scope.selectedPackage.documents.findIndex((doc) => {
return doc.idDocument === idDocument;
});
$scope.selectedPackage.documents.splice(dragedDocumentIndex, 1);
$scope.documents.forEach(hideLinkedDocuments);
}
}
function updatePackageDocuments() {
const params = $.param({
idPackage: $scope.selectedPackage.idPackage,
documents: JSON.stringify($scope.selectedPackage.documents)
});
$http({
method: 'POST',
url: 'documents/api/updatePackageDocuments',
data: params
}).then(updateMessage, utilsService.onHttpError);
}
function updateMessage(response) {
if (typeof response.data.messages !== 'undefined') {
response.data.messages.forEach((messageObj) => {
let translatedMessage = $translate.instant('documents.messages.' + messageObj.message);
utilsService.displayMessage(messageObj.code, translatedMessage);
});
}
}
}
})();