mirror of
https://github.com/FoggedLens/iD.git
synced 2026-03-12 22:26:07 +00:00
Faster Feature List (fixes #1604)
This commit is contained in:
@@ -47,7 +47,7 @@ iD.Map = function(context) {
|
||||
var dataLayer = supersurface.append('div')
|
||||
.attr('class', 'layer-layer layer-data');
|
||||
|
||||
surface = dataLayer.append('svg')
|
||||
map.surface = surface = dataLayer.append('svg')
|
||||
.on('mousedown.zoom', function() {
|
||||
if (d3.event.button == 2) {
|
||||
d3.event.stopPropagation();
|
||||
@@ -88,7 +88,6 @@ iD.Map = function(context) {
|
||||
});
|
||||
|
||||
map.size(selection.size());
|
||||
map.surface = surface;
|
||||
|
||||
labels.supersurface(supersurface);
|
||||
mouse = iD.util.fastMouse(supersurface.node());
|
||||
|
||||
@@ -35,8 +35,6 @@ iD.ui.FeatureList = function(context) {
|
||||
var list = listWrap.append('div')
|
||||
.attr('class', 'feature-list fillL cf');
|
||||
|
||||
drawList();
|
||||
|
||||
context.history()
|
||||
.on('change.feature-list', drawList);
|
||||
|
||||
@@ -50,40 +48,38 @@ iD.ui.FeatureList = function(context) {
|
||||
}
|
||||
|
||||
function features() {
|
||||
var result = [],
|
||||
var entities = {},
|
||||
result = [],
|
||||
graph = context.graph(),
|
||||
q = search.property('value').toLowerCase();
|
||||
|
||||
if (!context.map().editable()) {
|
||||
return result;
|
||||
}
|
||||
function addEntity(entity) {
|
||||
if (entity.id in entities || result.length > 200)
|
||||
return;
|
||||
|
||||
var entities = context.intersects(context.extent());
|
||||
for (var i = 0; i < entities.length; i++) {
|
||||
var entity = entities[i];
|
||||
entities[entity.id] = true;
|
||||
|
||||
if (entity.geometry(graph) === 'vertex')
|
||||
continue;
|
||||
|
||||
if (context.surface().selectAll(iD.util.entityOrMemberSelector([entity.id], graph)).empty())
|
||||
continue;
|
||||
|
||||
var preset = context.presets().match(entity, context.graph()),
|
||||
var preset = context.presets().match(entity, graph),
|
||||
name = iD.util.displayName(entity) || '';
|
||||
|
||||
if (q && name.toLowerCase().indexOf(q) === -1 &&
|
||||
preset.name().toLowerCase().indexOf(q) === -1)
|
||||
continue;
|
||||
if (!q || name.toLowerCase().indexOf(q) >= 0 ||
|
||||
preset.name().toLowerCase().indexOf(q) >= 0) {
|
||||
result.push({
|
||||
entity: entity,
|
||||
geometry: context.geometry(entity.id),
|
||||
preset: preset,
|
||||
name: name
|
||||
});
|
||||
}
|
||||
|
||||
result.push({
|
||||
entity: entity,
|
||||
geometry: context.geometry(entity.id),
|
||||
preset: preset,
|
||||
name: name
|
||||
graph.parentRelations(entity).forEach(function(parent) {
|
||||
addEntity(parent);
|
||||
});
|
||||
}
|
||||
|
||||
if (result.length > 200)
|
||||
break;
|
||||
var visible = context.surface().selectAll('.point, .line, .area')[0];
|
||||
for (var i = 0; i < visible.length && result.length <= 200; i++) {
|
||||
addEntity(visible[i].__data__);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
Reference in New Issue
Block a user