From d4832e2e95f279845e67a384039055628178be4b Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Fri, 7 Dec 2012 14:21:22 -0500 Subject: [PATCH] Add closing segment of drawn areas (fixes #217) --- js/id/modes/add_area.js | 2 ++ js/id/modes/draw_area.js | 6 +++--- test/spec/actions/add_way_node.js | 16 +++++++++++++++- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/js/id/modes/add_area.js b/js/id/modes/add_area.js index cdee57082..9a0989198 100644 --- a/js/id/modes/add_area.js +++ b/js/id/modes/add_area.js @@ -23,6 +23,7 @@ iD.modes.AddArea = function() { history.perform( iD.actions.AddWay(way), iD.actions.AddWayNode(way.id, datum.id), + iD.actions.AddWayNode(way.id, datum.id), 'started an area'); } else { @@ -32,6 +33,7 @@ iD.modes.AddArea = function() { iD.actions.AddWay(way), iD.actions.AddNode(node), iD.actions.AddWayNode(way.id, node.id), + iD.actions.AddWayNode(way.id, node.id), 'started an area'); } diff --git a/js/id/modes/draw_area.js b/js/id/modes/draw_area.js index c52000538..0d3fa7c9d 100644 --- a/js/id/modes/draw_area.js +++ b/js/id/modes/draw_area.js @@ -19,7 +19,7 @@ iD.modes.DrawArea = function(wayId) { history.perform( iD.actions.AddNode(node), - iD.actions.AddWayNode(way.id, node.id)); + iD.actions.AddWayNode(way.id, node.id, -1)); map.surface.on('mousemove.drawarea', function() { history.replace(iD.actions.Move(node.id, map.mouseCoordinates())); @@ -31,7 +31,7 @@ iD.modes.DrawArea = function(wayId) { if (datum.id === tailId) { history.replace( iD.actions.DeleteNode(node.id), - iD.actions.AddWayNode(way.id, tailId), + iD.actions.AddWayNode(way.id, tailId, -1), 'added to an area'); controller.enter(iD.modes.Select(way)); @@ -40,7 +40,7 @@ iD.modes.DrawArea = function(wayId) { // connect the way to an existing node history.replace( iD.actions.DeleteNode(node.id), - iD.actions.AddWayNode(way.id, datum.id), + iD.actions.AddWayNode(way.id, datum.id, -1), 'added to an area'); controller.enter(iD.modes.DrawArea(wayId)); diff --git a/test/spec/actions/add_way_node.js b/test/spec/actions/add_way_node.js index aaed97ecc..5c774e5e4 100644 --- a/test/spec/actions/add_way_node.js +++ b/test/spec/actions/add_way_node.js @@ -6,10 +6,24 @@ describe("iD.actions.AddWayNode", function () { expect(graph.entity(way.id).nodes).to.eql(["n1"]); }); - it("adds a node to a way at the specified index", function () { + it("adds a node to a way at index 0", function () { + var way = iD.Way({nodes: ["n1", "n3"]}), + node = iD.Node({id: "n2"}), + graph = iD.actions.AddWayNode(way.id, node.id, 0)(iD.Graph([way, node])); + expect(graph.entity(way.id).nodes).to.eql(["n2", "n1", "n3"]); + }); + + it("adds a node to a way at a positive index", function () { var way = iD.Way({nodes: ["n1", "n3"]}), node = iD.Node({id: "n2"}), graph = iD.actions.AddWayNode(way.id, node.id, 1)(iD.Graph([way, node])); expect(graph.entity(way.id).nodes).to.eql(["n1", "n2", "n3"]); }); + + it("adds a node to a way at a negative index", function () { + var way = iD.Way({nodes: ["n1", "n3"]}), + node = iD.Node({id: "n2"}), + graph = iD.actions.AddWayNode(way.id, node.id, -1)(iD.Graph([way, node])); + expect(graph.entity(way.id).nodes).to.eql(["n1", "n2", "n3"]); + }); });