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 @@
+
+
+
+
+
+
diff --git a/app/views/venues.html b/app/views/venues.html
index 13a8648..78d8bee 100644
--- a/app/views/venues.html
+++ b/app/views/venues.html
@@ -17,14 +17,21 @@
Steder