From af3c307b17880ce849a3444f6bd98f5e9a1c00ca Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 10 Nov 2014 22:47:07 -0500 Subject: [PATCH] cache invalidation and naming things --- js/id/id.js | 1 + js/id/renderer/features.js | 22 +++++++++++++++------- js/id/renderer/map.js | 2 +- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/js/id/id.js b/js/id/id.js index 20c2795e0..e21d83119 100644 --- a/js/id/id.js +++ b/js/id/id.js @@ -97,6 +97,7 @@ window.iD = function () { context.flush = function() { connection.flush(); + features.reset(); history.reset(); return context; }; diff --git a/js/id/renderer/features.js b/js/id/renderer/features.js index 41f066ed3..7fe20b809 100644 --- a/js/id/renderer/features.js +++ b/js/id/renderer/features.js @@ -267,16 +267,20 @@ iD.Features = function(context) { return _stats; }; - features.reset = function(d) { + features.clear = function(d) { for (var i = 0, imax = d.length; i !== imax; i++) { - features.resetEntity(d[i]); + features.clearEntity(d[i]); } }; - features.resetEntity = function(entity) { + features.clearEntity = function(entity) { delete _cache[iD.Entity.key(entity)]; }; + features.reset = function() { + _cache = {}; + }; + features.match = function(d) { for (var i = 0, imax = d.length; i !== imax; i++) { features.matchEntity(d[i]); @@ -309,6 +313,8 @@ iD.Features = function(context) { features.isHiddenFeature = function(entity, resolver) { var matches = features.matchEntity(entity, resolver); + if (!entity.version) return false; + for (var i = 0, imax = _hidden.length; i !== imax; i++) { if (matches[_hidden[i]]) { return true; } } @@ -319,9 +325,9 @@ iD.Features = function(context) { var geometry = geom || entity.geometry(resolver), parents; - if (geometry === 'point') { - return false; - } else if (geometry === 'vertex') { + if (!entity.version || geometry === 'point') { return false; } + + if (geometry === 'vertex') { parents = resolver.parentWays(entity); } else { // 'line', 'area', 'relation' parents = resolver.parentRelations(entity); @@ -359,9 +365,11 @@ iD.Features = function(context) { }; features.isHidden = function(entity, resolver) { + var geometry; + if (!entity.version) return false; - var geometry = entity.geometry(resolver); + geometry = entity.geometry(resolver); if (geometry === 'vertex') return features.isHiddenChild(entity, resolver, geometry); if (geometry === 'point') return features.isHiddenFeature(entity, resolver); diff --git a/js/id/renderer/map.js b/js/id/renderer/map.js index f862703af..d5826faf5 100644 --- a/js/id/renderer/map.js +++ b/js/id/renderer/map.js @@ -104,7 +104,7 @@ iD.Map = function(context) { var complete = difference.complete(map.extent()); data = _.compact(_.values(complete)); filter = function(d) { return d.id in complete; }; - features.reset(data); + features.clear(data); } else { // force a full redraw if gatherStats detects that a feature