mirror of
https://github.com/FoggedLens/iD.git
synced 2026-05-25 09:34:04 +02:00
Convert lodah-es and d3 to named imports for renderer
This commit is contained in:
@@ -1,15 +1,18 @@
|
||||
import * as d3 from 'd3';
|
||||
import _ from 'lodash';
|
||||
import { data } from '../../data/index';
|
||||
import { geoExtent, geoMetersToOffset, geoOffsetToMeters} from '../geo/index';
|
||||
import _find from 'lodash-es/find';
|
||||
|
||||
import { dispatch as d3_dispatch } from 'd3-dispatch';
|
||||
import { select as d3_select } from 'd3-selection';
|
||||
|
||||
import { data } from '../../data';
|
||||
import { geoExtent, geoMetersToOffset, geoOffsetToMeters} from '../geo';
|
||||
import { rendererBackgroundSource } from './background_source';
|
||||
import { rendererTileLayer } from './tile_layer';
|
||||
import { utilQsString, utilStringQs } from '../util/index';
|
||||
import { utilQsString, utilStringQs } from '../util';
|
||||
import { utilRebind } from '../util/rebind';
|
||||
|
||||
|
||||
export function rendererBackground(context) {
|
||||
var dispatch = d3.dispatch('change'),
|
||||
var dispatch = d3_dispatch('change'),
|
||||
baseLayer = rendererTileLayer(context).projection(context.projection),
|
||||
overlayLayers = [],
|
||||
backgroundSources;
|
||||
@@ -35,7 +38,7 @@ export function rendererBackground(context) {
|
||||
.insert('div', '.layer-data')
|
||||
.attr('class', 'layer layer-overlay')
|
||||
.merge(overlays)
|
||||
.each(function(layer) { d3.select(this).call(layer); });
|
||||
.each(function(layer) { d3_select(this).call(layer); });
|
||||
}
|
||||
|
||||
|
||||
@@ -161,7 +164,7 @@ export function rendererBackground(context) {
|
||||
|
||||
|
||||
background.findSource = function(id) {
|
||||
return _.find(backgroundSources, function(d) {
|
||||
return _find(backgroundSources, function(d) {
|
||||
return d.id && d.id === id;
|
||||
});
|
||||
};
|
||||
@@ -263,7 +266,7 @@ export function rendererBackground(context) {
|
||||
|
||||
// Decide which background layer to display
|
||||
if (!requested && extent) {
|
||||
best = _.find(this.sources(extent), function(s) { return s.best(); });
|
||||
best = _find(this.sources(extent), function(s) { return s.best(); });
|
||||
}
|
||||
if (requested && requested.indexOf('custom:') === 0) {
|
||||
template = requested.replace(/^custom:/, '');
|
||||
@@ -279,7 +282,7 @@ export function rendererBackground(context) {
|
||||
);
|
||||
}
|
||||
|
||||
var locator = _.find(backgroundSources, function(d) {
|
||||
var locator = _find(backgroundSources, function(d) {
|
||||
return d.overlay && d.default;
|
||||
});
|
||||
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
import * as d3 from 'd3';
|
||||
import _ from 'lodash';
|
||||
import _clone from 'lodash-es/clone';
|
||||
import _some from 'lodash-es/some';
|
||||
|
||||
import { geoArea as d3_geoArea } from 'd3-geo';
|
||||
|
||||
import { t } from '../util/locale';
|
||||
import { geoExtent, geoPolygonIntersectsPolygon } from '../geo/index';
|
||||
import { geoExtent, geoPolygonIntersectsPolygon } from '../geo';
|
||||
import { jsonpRequest } from '../util/jsonp_request';
|
||||
|
||||
|
||||
@@ -25,7 +28,7 @@ function vintageRange(vintage) {
|
||||
|
||||
|
||||
export function rendererBackgroundSource(data) {
|
||||
var source = _.clone(data),
|
||||
var source = _clone(data),
|
||||
offset = [0, 0],
|
||||
name = source.name,
|
||||
description = source.description,
|
||||
@@ -69,7 +72,7 @@ export function rendererBackgroundSource(data) {
|
||||
|
||||
source.area = function() {
|
||||
if (!data.polygon) return Number.MAX_VALUE; // worldwide
|
||||
var area = d3.geoArea({ type: 'MultiPolygon', coordinates: [ data.polygon ] });
|
||||
var area = d3_geoArea({ type: 'MultiPolygon', coordinates: [ data.polygon ] });
|
||||
return isNaN(area) ? 0 : area;
|
||||
};
|
||||
|
||||
@@ -182,7 +185,7 @@ rendererBackgroundSource.Bing = function(data, dispatch) {
|
||||
bing.copyrightNotices = function(zoom, extent) {
|
||||
zoom = Math.min(zoom, 21);
|
||||
return providers.filter(function(provider) {
|
||||
return _.some(provider.areas, function(area) {
|
||||
return _some(provider.areas, function(area) {
|
||||
return extent.intersects(area.extent) &&
|
||||
area.zoom[0] <= zoom &&
|
||||
area.zoom[1] >= zoom;
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
import * as d3 from 'd3';
|
||||
import _ from 'lodash';
|
||||
import { osmEntity } from '../osm/index';
|
||||
import _clone from 'lodash-es/clone';
|
||||
import _groupBy from 'lodash-es/groupBy';
|
||||
import _reduce from 'lodash-es/reduce';
|
||||
import _some from 'lodash-es/some';
|
||||
import _union from 'lodash-es/union';
|
||||
|
||||
import { dispatch as d3_dispatch } from 'd3-dispatch';
|
||||
|
||||
import { osmEntity } from '../osm';
|
||||
import { utilRebind } from '../util/rebind';
|
||||
|
||||
|
||||
@@ -48,7 +54,7 @@ export function rendererFeatures(context) {
|
||||
'obliterated': true
|
||||
};
|
||||
|
||||
var dispatch = d3.dispatch('change', 'redraw'),
|
||||
var dispatch = d3_dispatch('change', 'redraw'),
|
||||
_cullFactor = 1,
|
||||
_cache = {},
|
||||
_features = {},
|
||||
@@ -250,7 +256,7 @@ export function rendererFeatures(context) {
|
||||
|
||||
features.gatherStats = function(d, resolver, dimensions) {
|
||||
var needsRedraw = false,
|
||||
type = _.groupBy(d, function(ent) { return ent.type; }),
|
||||
type = _groupBy(d, function(ent) { return ent.type; }),
|
||||
entities = [].concat(type.relation || [], type.way || [], type.node || []),
|
||||
currHidden, geometry, matches, i, j;
|
||||
|
||||
@@ -340,7 +346,7 @@ export function rendererFeatures(context) {
|
||||
if (parents.length === 1 && parents[0].isMultipolygon()) {
|
||||
var pkey = osmEntity.key(parents[0]);
|
||||
if (_cache[pkey] && _cache[pkey].matches) {
|
||||
matches = _.clone(_cache[pkey].matches);
|
||||
matches = _clone(_cache[pkey].matches);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@@ -421,11 +427,11 @@ export function rendererFeatures(context) {
|
||||
}
|
||||
|
||||
// gather ways connected to child nodes..
|
||||
connections = _.reduce(childNodes, function(result, e) {
|
||||
return resolver.isShared(e) ? _.union(result, resolver.parentWays(e)) : result;
|
||||
connections = _reduce(childNodes, function(result, e) {
|
||||
return resolver.isShared(e) ? _union(result, resolver.parentWays(e)) : result;
|
||||
}, connections);
|
||||
|
||||
return connections.length ? _.some(connections, function(e) {
|
||||
return connections.length ? _some(connections, function(e) {
|
||||
return features.isHidden(e, resolver, e.geometry(resolver));
|
||||
}) : false;
|
||||
};
|
||||
|
||||
+43
-27
@@ -1,5 +1,21 @@
|
||||
import * as d3 from 'd3';
|
||||
import _ from 'lodash';
|
||||
import _compact from 'lodash-es/compact';
|
||||
import _map from 'lodash-es/map';
|
||||
import _values from 'lodash-es/values';
|
||||
|
||||
import { set as d3_set } from 'd3-collection';
|
||||
import { dispatch as d3_dispatch } from 'd3-dispatch';
|
||||
import { interpolate as d3_interpolate } from 'd3-interpolate';
|
||||
|
||||
import {
|
||||
event as d3_event,
|
||||
select as d3_select
|
||||
} from 'd3-selection';
|
||||
|
||||
import {
|
||||
zoom as d3_zoom,
|
||||
zoomIdentity as d3_zoomIdentity
|
||||
} from 'd3-zoom';
|
||||
|
||||
import { t } from '../util/locale';
|
||||
import { geoExtent } from '../geo';
|
||||
|
||||
@@ -35,7 +51,7 @@ import { utilGetDimensions } from '../util/dimensions';
|
||||
export function rendererMap(context) {
|
||||
|
||||
var dimensions = [1, 1],
|
||||
dispatch = d3.dispatch('move', 'drawn'),
|
||||
dispatch = d3_dispatch('move', 'drawn'),
|
||||
projection = context.projection,
|
||||
curtainProjection = context.curtainProjection,
|
||||
dblclickEnabled = true,
|
||||
@@ -51,19 +67,19 @@ export function rendererMap(context) {
|
||||
drawAreas = svgAreas(projection, context),
|
||||
drawMidpoints = svgMidpoints(projection, context),
|
||||
drawLabels = svgLabels(projection, context),
|
||||
supersurface = d3.select(null),
|
||||
wrapper = d3.select(null),
|
||||
surface = d3.select(null),
|
||||
supersurface = d3_select(null),
|
||||
wrapper = d3_select(null),
|
||||
surface = d3_select(null),
|
||||
mouse,
|
||||
mousemove;
|
||||
|
||||
var zoom = d3.zoom()
|
||||
var zoom = d3_zoom()
|
||||
.scaleExtent([ztok(2), ztok(24)])
|
||||
.interpolate(d3.interpolate)
|
||||
.interpolate(d3_interpolate)
|
||||
.filter(zoomEventFilter)
|
||||
.on('zoom', zoomPan);
|
||||
|
||||
var _selection = d3.select(null);
|
||||
var _selection = d3_select(null);
|
||||
var isRedrawScheduled = false;
|
||||
var pendingRedrawCall;
|
||||
|
||||
@@ -150,19 +166,19 @@ export function rendererMap(context) {
|
||||
surface
|
||||
.call(drawLabels.observe)
|
||||
.on('mousedown.zoom', function() {
|
||||
if (d3.event.button === 2) {
|
||||
d3.event.stopPropagation();
|
||||
if (d3_event.button === 2) {
|
||||
d3_event.stopPropagation();
|
||||
}
|
||||
}, true)
|
||||
.on('mouseup.zoom', function() {
|
||||
if (resetTransform()) immediateRedraw();
|
||||
})
|
||||
.on('mousemove.map', function() {
|
||||
mousemove = d3.event;
|
||||
mousemove = d3_event;
|
||||
})
|
||||
.on('mouseover.vertices', function() {
|
||||
if (map.editable() && !transformed) {
|
||||
var hover = d3.event.target.__data__;
|
||||
var hover = d3_event.target.__data__;
|
||||
surface.selectAll('.data-layer-osm')
|
||||
.call(drawVertices.drawHover, context.graph(), hover, map.extent(), map.zoom());
|
||||
dispatch.call('drawn', this, {full: false});
|
||||
@@ -170,7 +186,7 @@ export function rendererMap(context) {
|
||||
})
|
||||
.on('mouseout.vertices', function() {
|
||||
if (map.editable() && !transformed) {
|
||||
var hover = d3.event.relatedTarget && d3.event.relatedTarget.__data__;
|
||||
var hover = d3_event.relatedTarget && d3_event.relatedTarget.__data__;
|
||||
surface.selectAll('.data-layer-osm')
|
||||
.call(drawVertices.drawHover, context.graph(), hover, map.extent(), map.zoom());
|
||||
dispatch.call('drawn', this, {full: false});
|
||||
@@ -204,7 +220,7 @@ export function rendererMap(context) {
|
||||
// This can happen if a previous `mousedown` occurred without a `mouseup`.
|
||||
// If we detect this, dispatch `mouseup` to complete the orphaned gesture,
|
||||
// so that d3-zoom won't stop propagation of new `mousedown` events.
|
||||
if (d3.event.type === 'mousedown') {
|
||||
if (d3_event.type === 'mousedown') {
|
||||
var hasOrphan = false;
|
||||
var listeners = window.__on;
|
||||
for (var i = 0; i < listeners.length; i++) {
|
||||
@@ -228,7 +244,7 @@ export function rendererMap(context) {
|
||||
}
|
||||
}
|
||||
|
||||
return d3.event.button !== 2; // ignore right clicks
|
||||
return d3_event.button !== 2; // ignore right clicks
|
||||
}
|
||||
|
||||
|
||||
@@ -253,7 +269,7 @@ export function rendererMap(context) {
|
||||
|
||||
if (difference) {
|
||||
var complete = difference.complete(map.extent());
|
||||
data = _.compact(_.values(complete));
|
||||
data = _compact(_values(complete));
|
||||
filter = function(d) { return d.id in complete; };
|
||||
features.clear(data);
|
||||
|
||||
@@ -266,7 +282,7 @@ export function rendererMap(context) {
|
||||
|
||||
if (extent) {
|
||||
data = context.intersects(map.extent().intersection(extent));
|
||||
var set = d3.set(_.map(data, 'id'));
|
||||
var set = d3_set(_map(data, 'id'));
|
||||
filter = function(d) { return set.has(d.id); };
|
||||
|
||||
} else {
|
||||
@@ -299,14 +315,14 @@ export function rendererMap(context) {
|
||||
|
||||
function dblClick() {
|
||||
if (!dblclickEnabled) {
|
||||
d3.event.preventDefault();
|
||||
d3.event.stopImmediatePropagation();
|
||||
d3_event.preventDefault();
|
||||
d3_event.stopImmediatePropagation();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function zoomPan(manualEvent) {
|
||||
var event = (manualEvent || d3.event),
|
||||
var event = (manualEvent || d3_event),
|
||||
source = event.sourceEvent,
|
||||
eventTransform = event.transform;
|
||||
|
||||
@@ -334,7 +350,7 @@ export function rendererMap(context) {
|
||||
x2 = p0[0] - p1[0] * k2,
|
||||
y2 = p0[1] - p1[1] * k2;
|
||||
|
||||
eventTransform = d3.zoomIdentity.translate(x2,y2).scale(k2);
|
||||
eventTransform = d3_zoomIdentity.translate(x2,y2).scale(k2);
|
||||
_selection.node().__zoom = eventTransform;
|
||||
}
|
||||
|
||||
@@ -444,7 +460,7 @@ export function rendererMap(context) {
|
||||
|
||||
|
||||
map.mouse = function() {
|
||||
var event = mousemove || d3.event;
|
||||
var event = mousemove || d3_event;
|
||||
if (event) {
|
||||
var s;
|
||||
while ((s = event.sourceEvent)) { event = s; }
|
||||
@@ -484,7 +500,7 @@ export function rendererMap(context) {
|
||||
.transition()
|
||||
.duration(duration)
|
||||
.on('start', function() { map.startEase(); })
|
||||
.call(zoom.transform, d3.zoomIdentity.translate(t2.x, t2.y).scale(t2.k));
|
||||
.call(zoom.transform, d3_zoomIdentity.translate(t2.x, t2.y).scale(t2.k));
|
||||
} else {
|
||||
projection.transform(t2);
|
||||
transformStart = t2;
|
||||
@@ -517,7 +533,7 @@ export function rendererMap(context) {
|
||||
.transition()
|
||||
.duration(duration)
|
||||
.on('start', function() { map.startEase(); })
|
||||
.call(zoom.transform, d3.zoomIdentity.translate(t[0], t[1]).scale(k2));
|
||||
.call(zoom.transform, d3_zoomIdentity.translate(t[0], t[1]).scale(k2));
|
||||
} else {
|
||||
projection.translate(t);
|
||||
transformStart = projection.transform();
|
||||
@@ -547,7 +563,7 @@ export function rendererMap(context) {
|
||||
.transition()
|
||||
.duration(duration)
|
||||
.on('start', function() { map.startEase(); })
|
||||
.call(zoom.transform, d3.zoomIdentity.translate(t[0], t[1]).scale(k));
|
||||
.call(zoom.transform, d3_zoomIdentity.translate(t[0], t[1]).scale(k));
|
||||
} else {
|
||||
projection.translate(t);
|
||||
transformStart = projection.transform();
|
||||
@@ -570,7 +586,7 @@ export function rendererMap(context) {
|
||||
.transition()
|
||||
.duration(duration)
|
||||
.on('start', function() { map.startEase(); })
|
||||
.call(zoom.transform, d3.zoomIdentity.translate(t[0], t[1]).scale(k));
|
||||
.call(zoom.transform, d3_zoomIdentity.translate(t[0], t[1]).scale(k));
|
||||
} else {
|
||||
projection.translate(t);
|
||||
transformStart = projection.transform();
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
import * as d3 from 'd3';
|
||||
import { select as d3_select } from 'd3-selection';
|
||||
import { t } from '../util/locale';
|
||||
import { d3geoTile } from '../lib/d3.geo.tile';
|
||||
|
||||
import { d3geoTile as d3_geoTile } from '../lib/d3.geo.tile';
|
||||
import { geoEuclideanDistance } from '../geo';
|
||||
import { utilPrefixCSSProperty } from '../util';
|
||||
|
||||
|
||||
export function rendererTileLayer(context) {
|
||||
var tileSize = 256,
|
||||
geotile = d3geoTile(),
|
||||
geotile = d3_geoTile(),
|
||||
projection,
|
||||
cache = {},
|
||||
tileOrigin,
|
||||
@@ -136,7 +137,7 @@ export function rendererTileLayer(context) {
|
||||
|
||||
function load(d) {
|
||||
cache[d[3]] = true;
|
||||
d3.select(this)
|
||||
d3_select(this)
|
||||
.on('error', null)
|
||||
.on('load', null)
|
||||
.classed('tile-loaded', true);
|
||||
@@ -145,7 +146,7 @@ export function rendererTileLayer(context) {
|
||||
|
||||
function error(d) {
|
||||
cache[d[3]] = false;
|
||||
d3.select(this)
|
||||
d3_select(this)
|
||||
.on('error', null)
|
||||
.on('load', null)
|
||||
.remove();
|
||||
@@ -200,7 +201,7 @@ export function rendererTileLayer(context) {
|
||||
.classed('tile-removing', true)
|
||||
.classed('tile-center', false)
|
||||
.each(function() {
|
||||
var tile = d3.select(this);
|
||||
var tile = d3_select(this);
|
||||
window.setTimeout(function() {
|
||||
if (tile.classed('tile-removing')) {
|
||||
tile.remove();
|
||||
@@ -253,7 +254,7 @@ export function rendererTileLayer(context) {
|
||||
debug
|
||||
.selectAll('.tile-label-debug-vintage')
|
||||
.each(function(d) {
|
||||
var span = d3.select(this);
|
||||
var span = d3_select(this);
|
||||
var center = context.projection.invert(tileCenter(d));
|
||||
source.getMetadata(center, d, function(err, result) {
|
||||
span.text((result && result.vintage && result.vintage.range) ||
|
||||
|
||||
Reference in New Issue
Block a user