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

186 lines
6.9 KiB
JavaScript

(function () {
global.dashModule
.directive('linkProcess', linkProcessDirective)
.controller('linkProcessCtrl', ['$scope', '$http', '$', '$timeout', '$translate', 'utilsService', linkProcessCtrl]);
function linkProcessDirective() {
return {
restrict: 'E',
templateUrl: 'processes/html/linkProcessTemplate'
};
}
function linkProcessCtrl($scope, $http, $, $timeout, $translate, utilsService) {
$scope.packages = {};
$scope.getPackages = getPackages;
$scope.isPackageSelected = isPackageSelected;
$scope.getCountries = getCountries;
$scope.isCountrySelected = isCountrySelected;
$scope.getProcesses = getProcesses;
$scope.processDragStart = processDragStart;
$scope.processDragStop = processDragStop;
$scope.prcessDrop = prcessDrop;
$scope.linkProcesses = linkProcesses;
$scope.isNewStepFormVisible = isNewStepFormVisible;
$scope.enableAddNewProcess = enableAddNewProcess;
$scope.showProcessInfo = showProcessInfo;
$scope.isVisibleToCustomer = isVisibleToCustomer;
$scope.addingNewStep = false;
$scope.processes = [];
$scope.selectedProcesses = [];
$scope.selectedSteps = {
steps: [],
processName: ''
};
function isVisibleToCustomer(stepVisibleInfo) {
return stepVisibleInfo === '1' ? 'glyphicon-eye-open' : 'glyphicon-eye-close';
}
function processDragStart(event, ui) {
const containerSelector = $(ui.helper).hasClass('available-process') ? '#available-processes' : '#selected-processes';
const dropSelector = containerSelector === '#selected-processes' ? '#available-processes' : '#selected-processes';
$(containerSelector).css({
height: 'auto',
overflow: 'visible',
});
$(dropSelector).css({
border: '2px dashed #000',
background: 'rgba(223, 240, 216, 0.5)'
});
}
function processDragStop(event, ui) {
const containerSelector = $(ui.helper).hasClass('available-process') ? '#available-processes' : '#selected-processes';
const dropSelector = containerSelector === '#selected-processes' ? '#available-processes' : '#selected-processes';
$(containerSelector).css({
height: '360px',
'overflow-y': 'scroll',
'overflow-x': 'hidden',
});
$(dropSelector).css({
border: '2px solid #000',
background: 'none'
});
}
function prcessDrop(event, ui) {
const processKey = $(ui.helper).attr('process-key');
if ($(ui.helper).hasClass('available-process')) {
$scope.selectedProcesses.push($scope.processes[processKey]);
$scope.processes.splice(processKey, 1);
$scope.selectedProcesses.sort(utilsService.sortByAttributeName('processName'));
} else {
$scope.processes.push($scope.selectedProcesses[processKey]);
$scope.selectedProcesses.splice(processKey, 1);
$scope.processes.sort(utilsService.sortByAttributeName('processName'));
}
}
function linkProcesses() {
const params = $.param({
idPackage: $scope.selectedPackageId,
selectedProcesses: JSON.stringify($scope.selectedProcesses)
});
$http({
method: 'POST',
url: 'processes/api/linkProcessesToPackage',
data: params
}).then(showUpdateMessage, utilsService.onHttpError);
}
function showUpdateMessage(response) {
if (typeof response.data.messages !== 'undefined') {
response.data.messages.forEach((messageObj) => {
let translatedMessage = $translate.instant('processes.messages.' + messageObj.message);
utilsService.displayMessage(messageObj.code, translatedMessage);
});
}
}
function getPackages() {
const params = $.param({
idCountry: $scope.selectedCountryId
});
$http({
method: 'POST',
url: 'processes/api/getPackagesAndProcesses',
data: params
}).then(setPackages, utilsService.onHttpError);
}
function getProcesses() {
if ($scope.selectedPackageId) {
const params = $.param({
idPackage: $scope.selectedPackageId
});
$http({
method: 'POST',
url: 'processes/api/getProcesses',
data: params
}).then(setProcesses, utilsService.onHttpError);
}
}
function setProcesses(response) {
if (typeof response.data.processes !== 'undefined' && typeof response.data.steps !== 'undefined') {
$scope.steps = response.data.steps;
$scope.selectedProcesses = [];
$scope.processes = [];
response.data.processes.forEach(process => {
if (process.isSelected === '1') {
$scope.selectedProcesses.push(process);
} else {
$scope.processes.push(process);
}
});
}
}
function setPackages(response) {
if (response.data.length) {
$scope.packages = {};
response.data.forEach(packageItem => {
$scope.packages[packageItem.idPackage] = packageItem.packageName;
});
}
}
function isPackageSelected() {
return typeof $scope.selectedPackageId !== 'undefined' && $scope.selectedPackageId !== null;
}
function getCountries() {
$http({
method: 'GET',
url: 'countries/api/getAllCountries'
}).then(setCountries, utilsService.onHttpError);
}
function setCountries(response) {
$scope.countries = response.data;
}
function isCountrySelected() {
return typeof $scope.selectedCountryId !== 'undefined' && $scope.selectedCountryId !== 0;
}
function isNewStepFormVisible() {
return $scope.addingNewStep;
}
function enableAddNewProcess() {
$scope.addingNewStep = !$scope.addingNewStep;
}
function showProcessInfo(process) {
$('#info-placeholder').hide();
$scope.selectedSteps.processName = process.processName;
$scope.selectedSteps.steps = $scope.steps[process.idProcess];
}
}
})();