diff --git a/app/scripts/controllers/venues.js b/app/scripts/controllers/venues.js index 7f847bc..fdbe234 100644 --- a/app/scripts/controllers/venues.js +++ b/app/scripts/controllers/venues.js @@ -16,11 +16,13 @@ 'use strict'; angular.module('barteguidenMarkedsWebApp') - .controller('VenuesCtrl', function ($scope, Venue, $modal, $window, $location) { + .controller('VenuesCtrl', function ($scope, Venue, notify, $modal, $window, $location) { $scope.orderProperty = 'name'; $scope.reverse = false; + $scope.numberToMerge = 0; + $scope.order = function(orderProperty){ $scope.reverse = ($scope.orderProperty === orderProperty) ? !$scope.reverse : false; $scope.orderProperty = orderProperty; @@ -38,6 +40,14 @@ angular.module('barteguidenMarkedsWebApp') $location.path('/venue/' + id); }; + $scope.toggleToMerge = function(venue) { + if(venue.selectedForMerge) { + $scope.numberToMerge += 1; + }else{ + $scope.numberToMerge -= 1; + } + } + $scope.open = function (id) { var scope = $scope.$new(true); scope.params = {elementType: 'Stedet'}; @@ -64,4 +74,53 @@ angular.module('barteguidenMarkedsWebApp') $scope.$dismiss('cancel'); }; + $scope.okMergeVenues = function () { + $scope.$close($scope.representativeVenue); + } + + $scope.openModalMergeVenues = function () { + var scope = $scope.$new(true); + var selectedVenues = $scope.venues.filter(function(venue) {return venue.selectedForMerge}); + scope.selectedVenues = selectedVenues; + var modalInstance = $modal.open({ + scope: scope, + templateUrl: 'views/venuemergemodal.html', + controller: 'VenuesCtrl', + size: 'lg' + }); + modalInstance.result.then(function (representativeVenue) { + selectedVenues.splice(selectedVenues.indexOf(representativeVenue), 1); + selectedVenues.forEach((venue) => { + if(representativeVenue.aliases.indexOf(venue.name) == -1){ + representativeVenue.aliases.push(venue.name); + } + venue.aliases.forEach((otherAlias) => { + if(representativeVenue.aliases.indexOf(otherAlias) == -1){ + representativeVenue.aliases.push(otherAlias); + } + }); + Venue.delete({id: venue._id}); + var index; + if((index = $scope.venues.indexOf(venue)) >=0){ + $scope.venues.splice($scope.venues.indexOf(venue), 1); + } + }); + + representativeVenue.selectedForMerge = false; + $scope.numberToMerge = 0; + + var venueObject = new Venue(representativeVenue); + + venueObject.$update({id: representativeVenue._id}, function() { + notify({message: 'Stedene er slått sammen!', classes: 'alert-success'}); + }, function () { + notify({message: 'Noe gikk galt!', classes: 'alert-danger'}); + }); + }); + } + + $scope.setRepresentative = function (venue) { + $scope.representativeVenue = venue; + } + }); diff --git a/app/views/venuemergemodal.html b/app/views/venuemergemodal.html new file mode 100644 index 0000000..886aed2 --- /dev/null +++ b/app/views/venuemergemodal.html @@ -0,0 +1,54 @@ + + + +