Skip to content
This repository was archived by the owner on Sep 20, 2019. It is now read-only.

Commit ffcfa2f

Browse files
committed
Merge pull request #174 from elesdoar/master
Solve my wrong PR
2 parents deb86ef + 71ddaf4 commit ffcfa2f

17 files changed

+261
-59
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ Thumbs.db
66
# Project
77
# ===========
88
dist/ui-leaflet.pre.js
9+
dist/coverage/
910
js/angular-leaflet-directive-webpage.ngmin.js
1011

1112
# Related ecosystem

.npmignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,5 @@ test
4242
Gruntfile.js
4343
package.json
4444
bower.json
45+
46+
dist/coverage/

bower.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
"*.md",
6565
"Gruntfile.js",
6666
"package.json",
67-
"bower.json"
67+
"bower.json",
68+
"dist/coverage/"
6869
]
6970
}

dist/ui-leaflet.js

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*!
2-
* ui-leaflet 1.0.0 2015-10-30
2+
* ui-leaflet 1.0.0 2015-11-03
33
* ui-leaflet - An AngularJS directive to easily interact with Leaflet maps
44
* git: https://github.com/angular-ui/ui-leaflet
55
*/
@@ -2298,7 +2298,6 @@ angular.module('ui-leaflet').service('leafletMarkersHelpers', ["$rootScope", "$t
22982298
errorHeader = leafletHelpers.errorHeader,
22992299
$log = leafletLogger;
23002300

2301-
23022301
var _string = function (marker) {
23032302
//this exists since JSON.stringify barfs on cyclic
23042303
var retStr = '';
@@ -2708,6 +2707,27 @@ angular.module('ui-leaflet').service('leafletMarkersHelpers', ["$rootScope", "$t
27082707
marker.setLatLng([markerData.lat, markerData.lng]);
27092708
}
27102709
};
2710+
2711+
var _getLayerModels = function (models, layerName){
2712+
if (!isDefined(models))
2713+
return;
2714+
if (layerName)
2715+
return models[layerName];
2716+
return models;
2717+
};
2718+
2719+
var _getModelFromModels = function (models, id, layerName){
2720+
if(!isDefined(models))
2721+
return;
2722+
if(!id){
2723+
$log.error(errorHeader + 'marker id missing in getMarker');
2724+
return;
2725+
}
2726+
if(layerName)
2727+
return models[layerName][id];
2728+
2729+
return models[id];
2730+
};
27112731
return {
27122732
resetMarkerGroup: _resetMarkerGroup,
27132733

@@ -2811,7 +2831,9 @@ angular.module('ui-leaflet').service('leafletMarkersHelpers', ["$rootScope", "$t
28112831
} , isDeepWatch);
28122832
},
28132833
string: _string,
2814-
log: _log
2834+
log: _log,
2835+
getModelFromModels : _getModelFromModels,
2836+
getLayerModels : _getLayerModels
28152837
};
28162838
}]);
28172839

@@ -4397,6 +4419,8 @@ angular.module('ui-leaflet').directive('markers',
43974419
addMarkerToGroup = leafletMarkersHelpers.addMarkerToGroup,
43984420
createMarker = leafletMarkersHelpers.createMarker,
43994421
deleteMarker = leafletMarkersHelpers.deleteMarker,
4422+
getModelFromModels = leafletMarkersHelpers.getModelFromModels,
4423+
getLayerModels = leafletMarkersHelpers.getLayerModels,
44004424
$it = leafletIterators,
44014425
_markersWatchOptions = leafletHelpers.watchOptions,
44024426
maybeWatch = leafletWatchHelpers.maybeWatch,
@@ -4524,7 +4548,7 @@ angular.module('ui-leaflet').directive('markers',
45244548
leafletMarkerEvents.bindEvents(mapId, marker, pathToMarker, model, leafletScope, layerName);
45254549
}
45264550
else {
4527-
var oldModel = isDefined(oldModel)? oldModels[newName] : undefined;
4551+
var oldModel = getModelFromModels(oldModels, newName, maybeLayerName);
45284552
updateMarker(model, oldModel, maybeLMarker, pathToMarker, leafletScope, layers, map);
45294553
}
45304554
}
@@ -4615,8 +4639,8 @@ angular.module('ui-leaflet').directive('markers',
46154639
var _clean = function(models, oldModels){
46164640
if(isNested) {
46174641
$it.each(models, function(markerToMaybeDel, layerName) {
4618-
var oldModel = isDefined(oldModel)? oldModels[layerName] : undefined;
4619-
_destroy(markerToMaybeDel, oldModel, leafletMarkers[layerName], map, layers);
4642+
var oldLayerModels = getLayerModels(oldModels, layerName);
4643+
_destroy(markerToMaybeDel, oldLayerModels, leafletMarkers[layerName], map, layers);
46204644
});
46214645
return;
46224646
}
@@ -4628,8 +4652,9 @@ angular.module('ui-leaflet').directive('markers',
46284652
var skips = null;
46294653
if(isNested) {
46304654
$it.each(models, function(markersToAdd, layerName) {
4631-
var oldModel = isDefined(oldModel)? oldModels[layerName] : undefined;
4632-
skips = _getNewModelsToSkipp(models[layerName], oldModel, leafletMarkers[layerName]);
4655+
var oldLayerModels = getLayerModels(oldModels, layerName);
4656+
var newlayerModels = getLayerModels(models, layerName);
4657+
skips = _getNewModelsToSkipp(newlayerModels, oldLayerModels, leafletMarkers[layerName]);
46334658
_addMarkers(attrs.id, markersToAdd, oldModels, map, layers, leafletMarkers, leafletScope,
46344659
watchOptions, layerName, skips);
46354660
});

dist/ui-leaflet.min.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/ui-leaflet.min.no-header.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/ui-leaflet_dev_mapped.js

Lines changed: 33 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/ui-leaflet_dev_mapped.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
<!DOCTYPE html>
2+
<html ng-app="demoapp">
3+
<head>
4+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
5+
<script src="../bower_components/angular/angular.min.js"></script>
6+
<script src="../bower_components/leaflet/dist/leaflet.js"></script>
7+
<script src="../bower_components/angular-simple-logger/dist/angular-simple-logger.js"></script>
8+
<script src="../dist/ui-leaflet_dev_mapped.js"></script>
9+
<link rel="stylesheet" href="../bower_components/leaflet/dist/leaflet.css"/>
10+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
11+
<script>
12+
var app = angular.module('demoapp', ['ui-leaflet']);
13+
app.controller('MixedMOverlaysMarkersNestedNoWatchController', function ($scope, leafletData, $timeout, leafletLogger) {
14+
leafletLogger.currentLevel = leafletLogger.LEVELS.debug;
15+
var _clonedMarkers;
16+
$timeout(function () {
17+
//should do nothing (not watched) and only see one destroy
18+
_clonedMarkers = angular.copy($scope.markers);
19+
},1000);
20+
$timeout(function () {
21+
leafletData.getDirectiveControls().then(function (controls) {
22+
//move all markers by a few decimal points
23+
for (var markerName in _clonedMarkers) {
24+
var marker = _clonedMarkers[markerName];
25+
marker.lat += .05;
26+
}
27+
//force manual update
28+
controls.markers.create(_clonedMarkers ,$scope.markers);
29+
$scope.markers = _clonedMarkers;
30+
});
31+
}, 4000);
32+
angular.extend($scope, {
33+
markersWatchOptions: {
34+
doWatch: false,
35+
isDeep: false,
36+
individual: {
37+
doWatch: false,
38+
isDeep: false
39+
}
40+
},
41+
center: {
42+
lat: 42.20133,
43+
lng: 2.19110,
44+
zoom: 11
45+
},
46+
47+
markers: {
48+
m1: {
49+
lat: 42.20133,
50+
lng: 2.19110,
51+
message: "I'm a car"
52+
},
53+
m2: {
54+
lat: 42.21133,
55+
lng: 2.18110,
56+
message: "I'm a car"
57+
}
58+
}
59+
});
60+
});
61+
</script>
62+
</head>
63+
<body ng-controller="MixedMOverlaysMarkersNestedNoWatchController">
64+
<leaflet
65+
lf-center="center"
66+
markers="markers"
67+
markers-watch-options="markersWatchOptions"
68+
height="480px" width="100%">
69+
</leaflet>
70+
<h1>Overlays with nested markers no watchers example</h1>
71+
</body>
72+
</html>

examples/0605-mixed-overlays-markers-nested-no-watch-example.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010
<meta name="viewport" content="width=device-width, initial-scale=1.0">
1111
<script>
1212
var app = angular.module("demoapp", ['ui-leaflet']);
13-
app.controller('MixedMOverlaysMarkersNestedNoWatchController', function ($scope, leafletData, $timeout) {
13+
app.controller('MixedMOverlaysMarkersNestedNoWatchController', function ($scope, leafletData, $timeout, leafletLogger) {
14+
leafletLogger.currentLevel = leafletLogger.LEVELS.debug;
1415
var _clonedMarkers;
1516
$timeout(function () {
1617
//should do nothing (not watched) and only see one destroy
17-
_clonedMarkers = angular.extend({},$scope.markers);
18-
$scope.markers = {};
18+
_clonedMarkers = angular.copy($scope.markers);
1919
},1000);
2020
$timeout(function () {
2121
leafletData.getDirectiveControls().then(function (controls) {
@@ -28,8 +28,8 @@
2828
}
2929
}
3030
//force manual update
31+
controls.markers.create(_clonedMarkers ,$scope.markers);
3132
$scope.markers = _clonedMarkers;
32-
controls.markers.create($scope.markers);
3333
});
3434
}, 4000);
3535
angular.extend($scope, {

0 commit comments

Comments
 (0)