cache invalidation and naming things

This commit is contained in:
Bryan Housel
2014-11-10 22:47:07 -05:00
parent c6ca68ce80
commit af3c307b17
3 changed files with 17 additions and 8 deletions
+1
View File
@@ -97,6 +97,7 @@ window.iD = function () {
context.flush = function() {
connection.flush();
features.reset();
history.reset();
return context;
};
+15 -7
View File
@@ -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);
+1 -1
View File
@@ -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