From 3d10a00284584f78abb0fdae9ae18d68c6c54559 Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Thu, 17 Jan 2013 10:16:39 -0500 Subject: [PATCH 1/3] Higher-contrast shared vertices --- css/map.css | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/css/map.css b/css/map.css index 11ba62976..b2929f149 100644 --- a/css/map.css +++ b/css/map.css @@ -65,9 +65,12 @@ g.vertex circle.stroke { fill:#333; } -g.vertex.shared circle { +g.vertex.shared circle.fill { fill:#aff; } +g.vertex.shared circle.stroke { + fill:#044; +} g.vertex.hover circle.fill { -webkit-transform:scale(1.5, 1.5); From cdbe3d616807f59162254af7ca60f00e9dfcfc15 Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Thu, 17 Jan 2013 10:44:12 -0500 Subject: [PATCH 2/3] Fix removal of elements on undo. Fixes #410 --- js/id/renderer/map.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/js/id/renderer/map.js b/js/id/renderer/map.js index 9bb695747..c0defee3f 100644 --- a/js/id/renderer/map.js +++ b/js/id/renderer/map.js @@ -62,12 +62,15 @@ iD.Map = function() { all = graph.intersects(extent); filter = d3.functor(true); } else { - var only = {}; + var only = {}, + filterOnly = {}; for (var j = 0; j < difference.length; j++) { - var id = difference[j]; - var entity = graph.fetch(id); + var id = difference[j], + entity = graph.fetch(id); + // Even if the entity is false (deleted), it needs to be + // removed from the surface + only[id] = entity; if (entity && entity.intersects(extent, graph)) { - only[id] = entity; if (only[id].type === 'node') { var parents = graph.parentWays(only[id]); for (var k = 0; k < parents.length; k++) { @@ -79,7 +82,7 @@ iD.Map = function() { } } } - all = _.values(only); + all = _.compact(_.values(only)); filter = function(d) { return d.midpoint ? d.way in only : d.id in only; }; } From b8d9741959ecdf7fb3fe6267cbbccd3fdba477f8 Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Thu, 17 Jan 2013 10:48:42 -0500 Subject: [PATCH 3/3] Only update inspector tag list when necessary --- js/id/modes/select.js | 5 +++-- js/id/ui/inspector.js | 26 +++++++++++++++----------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/js/id/modes/select.js b/js/id/modes/select.js index c85172a4a..d091fdc57 100644 --- a/js/id/modes/select.js +++ b/js/id/modes/select.js @@ -87,11 +87,12 @@ iD.modes.Select = function (entity) { // Exit mode if selected entity gets undone mode.history.on('change.entity-undone', function() { + var old = entity; entity = mode.history.graph().entity(entity.id); if (!entity) { mode.controller.enter(iD.modes.Browse()); - } else { - d3.select('.inspector-wrap').datum(entity).call(inspector); + } else if(!_.isEqual(entity.tags, old.tags)) { + inspector.tags(entity.tags); } }); diff --git a/js/id/ui/inspector.js b/js/id/ui/inspector.js index dcae12d55..a1aed91ec 100644 --- a/js/id/ui/inspector.js +++ b/js/id/ui/inspector.js @@ -99,7 +99,8 @@ iD.ui.inspector = function() { tags = [{key: '', value: ''}]; } - var li = tagList.selectAll('li') + var li = tagList.html('') + .selectAll('li') .data(tags, function(d) { return d.key; }); li.exit().remove(); @@ -154,7 +155,6 @@ iD.ui.inspector = function() { if (en.on_node) types.push('point'); if (en.on_way) types.push('line'); en.types = types; - console.log(en); iD.ui.modal() .select('.content') .datum(en) @@ -256,15 +256,19 @@ iD.ui.inspector = function() { event.close(entity); } - inspector.tags = function () { - var tags = {}; - tagList.selectAll('li').each(function() { - var row = d3.select(this), - key = row.selectAll('.key').property('value'), - value = row.selectAll('.value').property('value'); - if (key !== '') tags[key] = value; - }); - return tags; + inspector.tags = function (tags) { + if (!arguments.length) { + var tags = {}; + tagList.selectAll('li').each(function() { + var row = d3.select(this), + key = row.selectAll('.key').property('value'), + value = row.selectAll('.value').property('value'); + if (key !== '') tags[key] = value; + }); + return tags; + } else { + drawTags(tags); + } }; return d3.rebind(inspector, event, 'on');