Convert lodah-es and d3 to named imports for renderer

This commit is contained in:
Bryan Housel
2017-09-25 14:35:33 -04:00
parent d53e473474
commit d906ca6b10
5 changed files with 88 additions and 59 deletions
+13 -10
View File
@@ -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;
});
+9 -6
View File
@@ -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;
+15 -9
View File
@@ -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
View File
@@ -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();
+8 -7
View File
@@ -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) ||