Extract iD.svg.LineString

This commit is contained in:
John Firebaugh
2013-01-17 09:57:22 -08:00
parent 9f1506af5e
commit e24b22b518
6 changed files with 30 additions and 20 deletions
+16
View File
@@ -9,5 +9,21 @@ iD.svg = {
return function (entity) {
return 'translate(' + projection(entity.loc) + ')';
};
},
LineString: function (projection) {
var cache = {};
return function (entity) {
if (cache[entity.id] !== undefined) {
return cache[entity.id];
}
if (entity.nodes.length === 0) {
return (cache[entity.id] = '');
}
return (cache[entity.id] =
'M' + entity.nodes.map(function (n) { return projection(n.loc); }).join('L'));
}
}
};
+1 -11
View File
@@ -38,17 +38,7 @@ iD.svg.Areas = function(projection) {
areas.sort(areastack);
var lineStrings = {};
function lineString(entity) {
if (lineStrings[entity.id] !== undefined) {
return lineStrings[entity.id];
}
var nodes = _.pluck(entity.nodes, 'loc');
if (nodes.length === 0) return (lineStrings[entity.id] = '');
else return (lineStrings[entity.id] =
'M' + nodes.map(projection).join('L'));
}
var lineString = iD.svg.LineString(projection);
function drawPaths(group, areas, filter, classes) {
var paths = group.selectAll('path')
+1 -9
View File
@@ -73,15 +73,7 @@ iD.svg.Lines = function(projection) {
lines.sort(waystack);
function lineString(entity) {
if (lineStrings[entity.id] !== undefined) {
return lineStrings[entity.id];
}
var nodes = _.pluck(entity.nodes, 'loc');
if (nodes.length === 0) return (lineStrings[entity.id] = '');
else return (lineStrings[entity.id] =
'M' + nodes.map(projection).join('L'));
}
var lineString = iD.svg.LineString(projection);
var casing = surface.select('.layer-casing'),
stroke = surface.select('.layer-stroke'),
+1
View File
@@ -151,6 +151,7 @@
<script src="spec/renderer/hash.js"></script>
<script src="spec/renderer/map.js"></script>
<script src="spec/svg.js"></script>
<script src="spec/svg/areas.js"></script>
<script src="spec/svg/points.js"></script>
<script src="spec/svg/vertices.js"></script>
+1
View File
@@ -60,6 +60,7 @@
<script src="spec/renderer/hash.js"></script>
<script src="spec/renderer/map.js"></script>
<script src="spec/svg.js"></script>
<script src="spec/svg/areas.js"></script>
<script src="spec/svg/points.js"></script>
<script src="spec/svg/vertices.js"></script>
+10
View File
@@ -0,0 +1,10 @@
describe("iD.svg.LineString", function () {
it("returns an SVG path description for the entity's nodes", function () {
var a = iD.Node({loc: [0, 0]}),
b = iD.Node({loc: [2, 3]}),
way = iD.Way({nodes: [a, b]}),
projection = Object;
expect(iD.svg.LineString(projection)(way)).to.equal("M0,0L2,3");
});
});