import ngModule from '../module'; class Controller { constructor($scope, $http, vnApp, $translate) { this.$scope = $scope; this.$http = $http; this.vnApp = vnApp; this.$translate = $translate; this.params = {parentFk: 1}; this.icons = [{icon: 'delete', tooltip: 'Delete', callback: this.onDelete}]; this.newNode = { name: '' }; } onCreate(parent) { if (parent instanceof Object) this.newNode.parentFk = parent.id; this.selectedNode = {parent}; this.$scope.createNode.show(); } onDelete(item, parent, index) { this.selectedNode = {id: item.id, parent, index}; this.$scope.deleteNode.show(); } onDrop(item, dragged, dropped) { if (dropped.scope.item) { const droppedItem = dropped.scope.item; const draggedItem = dragged.scope.item; if (droppedItem.childs) droppedItem.childs.push(Object.assign({}, draggedItem)); dragged.element.remove(); this.$scope.$apply(); } } onCreateDialogOpen() { this.newNode.name = ''; } onCreateResponse(response) { if (response == 'ACCEPT') { try { if (!this.newNode.name) throw new Error(`Name can't be empty`); this.$http.post(`/worker/api/Departments/nodeAdd`, this.newNode).then(response => { if (response.data) { let parent = this.selectedNode.parent; if ((parent instanceof Object) && !(parent instanceof Array)) { const childs = parent.childs; childs.push(response.data); } else if ((parent instanceof Object) && (parent instanceof Array)) parent.push(response.data); } }); } catch (e) { this.vnApp.showError(this.$translate.instant(e.message)); return false; } } return true; } onRemoveResponse(response) { if (response === 'ACCEPT') { const path = `/worker/api/Departments/nodeDelete`; this.$http.post(path, {parentFk: this.selectedNode.id}).then(() => { let parent = this.selectedNode.parent; if ((parent instanceof Object) && !(parent instanceof Array)) { const childs = parent.childs; childs.splice(this.selectedNode.index, 1); } else if ((parent instanceof Object) && (parent instanceof Array)) parent.splice(this.selectedNode.index, 1); }); } } } Controller.$inject = ['$scope', '$http', 'vnApp', '$translate']; ngModule.component('vnWorkerDepartment', { template: require('./index.html'), controller: Controller });