Skip to content

Commit c36bf92

Browse files
committed
change osmEntity.key() from a static method to a instance method
1 parent 6cedac6 commit c36bf92

11 files changed

Lines changed: 39 additions & 39 deletions

File tree

modules/core/history.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,7 @@ export function coreHistory(context) {
457457
Object.keys(i.graph.entities).forEach(function(id) {
458458
var entity = i.graph.entities[id];
459459
if (entity) {
460-
var key = osmEntity.key(entity);
460+
var key = entity.key();
461461
allEntities[key] = entity;
462462
modified.push(key);
463463
} else {
@@ -523,8 +523,9 @@ export function coreHistory(context) {
523523
if (h.version === 2 || h.version === 3) {
524524
var allEntities = {};
525525

526-
h.entities.forEach(function(entity) {
527-
allEntities[osmEntity.key(entity)] = osmEntity(entity);
526+
h.entities.forEach(function(rawEntity) {
527+
const entity = osmEntity(rawEntity);
528+
allEntities[entity.key()] = entity;
528529
});
529530

530531
if (h.version === 3) {

modules/osm/entity.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,6 @@ export function osmEntity(attrs) {
2020
}
2121

2222

23-
// A function suitable for use as the second argument to d3.selection#data().
24-
osmEntity.key = function(entity) {
25-
return entity.id + 'v' + (entity.v || 0);
26-
};
27-
28-
2923
osmEntity.prototype = {
3024

3125
/** @type {Tags} */
@@ -89,6 +83,12 @@ osmEntity.prototype = {
8983
},
9084

9185

86+
/** A function suitable for use as the second argument to d3.selection#data() */
87+
key() {
88+
return this.id + 'v' + (this.v || 0);
89+
},
90+
91+
9292
isNew: function() {
9393
var osmId = osmIdManager.toOSM(this.id);
9494
return osmId.length === 0 || osmId[0] === '-';

modules/renderer/features.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { dispatch as d3_dispatch } from 'd3-dispatch';
22

33
import { prefs } from '../core/preferences';
4-
import { osmEntity } from '../osm';
54
import { osmLanduseTags, osmLifecyclePrefixes } from '../osm/tags.js';
65
import { utilRebind } from '../util/rebind';
76
import { utilArrayGroupBy, utilArrayUnion, utilQsString, utilStringQs } from '../util';
@@ -394,7 +393,7 @@ export function rendererFeatures(context) {
394393

395394

396395
features.clearEntity = function(entity) {
397-
delete _cache[osmEntity.key(entity)];
396+
delete _cache[entity.key()];
398397
for (const key in _cache) {
399398
if (_cache[key].parents) {
400399
for (const parent of _cache[key].parents) {
@@ -427,7 +426,7 @@ export function rendererFeatures(context) {
427426
if (geometry === 'vertex' ||
428427
(geometry === 'relation' && !relationShouldBeChecked(entity))) return {};
429428

430-
var ent = osmEntity.key(entity);
429+
var ent = entity.key();
431430
if (!_cache[ent]) {
432431
_cache[ent] = {};
433432
}
@@ -456,7 +455,7 @@ export function rendererFeatures(context) {
456455
// IMPORTANT:
457456
// For this to work, getMatches must be called on relations before ways.
458457
//
459-
var pkey = osmEntity.key(parents[0]);
458+
var pkey = parents[0].key();
460459
if (_cache[pkey] && _cache[pkey].matches) {
461460
matches = Object.assign({}, _cache[pkey].matches); // shallow copy
462461
continue;
@@ -480,7 +479,7 @@ export function rendererFeatures(context) {
480479
features.getParents = function(entity, resolver, geometry) {
481480
if (geometry === 'point') return [];
482481

483-
const ent = osmEntity.key(entity);
482+
const ent = entity.key();
484483
if (!_cache[ent]) {
485484
_cache[ent] = {};
486485
}

modules/svg/areas.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import { deepEqual } from 'fast-equals';
22
import { bisector as d3_bisector } from 'd3-array';
3-
4-
import { osmEntity } from '../osm';
53
import { svgPath, svgSegmentWay } from './helpers';
64
import { svgTagClasses } from './tag_classes';
75
import { svgTagPattern } from './tag_pattern';
6+
import { osmEntity } from '../osm';
87

98
export function svgAreas(projection, context) {
109

@@ -118,7 +117,7 @@ export function svgAreas(projection, context) {
118117

119118
var clipPaths = context.surface().selectAll('defs').selectAll('.clipPath-osm')
120119
.filter(filter)
121-
.data(data.clip, osmEntity.key);
120+
.data(data.clip, d => d.key());
122121

123122
clipPaths.exit()
124123
.remove();
@@ -152,7 +151,10 @@ export function svgAreas(projection, context) {
152151
var paths = areagroup
153152
.selectAll('path')
154153
.filter(filter)
155-
.data(function(layer) { return data[layer]; }, osmEntity.key);
154+
.data(
155+
layer => data[layer],
156+
d => d instanceof osmEntity ? d.key() : d,
157+
);
156158

157159
paths.exit()
158160
.remove();

modules/svg/labels.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
geoScaleToZoom, geoVecInterp, geoVecLength
1010
} from '../geo';
1111
import { presetManager } from '../presets';
12-
import { osmEntity, osmIsInterestingTag } from '../osm';
12+
import { osmIsInterestingTag } from '../osm';
1313
import { utilDetect } from '../util/detect';
1414
import { utilArrayDifference, utilArrayUniq, utilDisplayName, utilDisplayNameForPath, utilEntitySelector } from '../util';
1515

@@ -90,7 +90,7 @@ export function svgLabels(projection, context) {
9090
function drawLinePaths(selection, labels, filter, classes) {
9191
var paths = selection.selectAll('path:not(.debug)')
9292
.filter(d => filter(d.entity))
93-
.data(labels, d => osmEntity.key(d.entity));
93+
.data(labels, d => d.entity.key());
9494

9595
// exit
9696
paths.exit()
@@ -110,7 +110,7 @@ export function svgLabels(projection, context) {
110110
function drawLineLabels(selection, labels, filter, classes) {
111111
var texts = selection.selectAll('text.' + classes)
112112
.filter(d => filter(d.entity))
113-
.data(labels, d => osmEntity.key(d.entity));
113+
.data(labels, d => d.entity.key());
114114

115115
// exit
116116
texts.exit()
@@ -127,7 +127,7 @@ export function svgLabels(projection, context) {
127127
// update
128128
selection.selectAll('text.' + classes).selectAll('.textpath')
129129
.filter(d => filter(d.entity))
130-
.data(labels, d => osmEntity.key(d.entity))
130+
.data(labels, d => d.entity.key())
131131
.attr('startOffset', '50%')
132132
.attr('xlink:href', function(d) { return '#ideditor-labelpath-' + d.entity.id; })
133133
.text(d => d.name);
@@ -140,7 +140,7 @@ export function svgLabels(projection, context) {
140140
}
141141
var texts = selection.selectAll('text.' + classes)
142142
.filter(d => filter(d.entity))
143-
.data(labels, d => osmEntity.key(d.entity));
143+
.data(labels, d => d.entity.key());
144144

145145
// exit
146146
texts.exit()
@@ -171,7 +171,7 @@ export function svgLabels(projection, context) {
171171
function drawAreaIcons(selection, labels, filter, classes) {
172172
var icons = selection.selectAll('use.' + classes)
173173
.filter(d => filter(d.entity))
174-
.data(labels, d => osmEntity.key(d.entity));
174+
.data(labels, d => d.entity.key());
175175

176176
// exit
177177
icons.exit()

modules/svg/lines.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ import {
66
} from './helpers';
77
import { svgTagClasses } from './tag_classes';
88

9-
import { osmEntity } from '../osm';
109
import { utilArrayFlatten, utilArrayGroupBy } from '../util';
1110
import { utilDetect } from '../util/detect';
11+
import { osmEntity } from '../osm';
1212

1313
/** @param {{ [key: string ]: string }} tags */
1414
function onewayArrowColour(tags) {
@@ -136,7 +136,7 @@ export function svgLines(projection, context) {
136136
var lines = selection
137137
.selectAll('path')
138138
.filter(filter)
139-
.data(getPathData(isSelected), osmEntity.key);
139+
.data(getPathData(isSelected), d => d instanceof osmEntity ? d.key() : d);
140140

141141
lines.exit()
142142
.remove();

modules/svg/points.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { clamp } from 'es-toolkit/compat';
33
import { select as d3_select } from 'd3';
44

55
import { geoScaleToZoom } from '../geo';
6-
import { osmEntity } from '../osm';
76
import { svgPointTransform } from './helpers';
87
import { svgTagClasses } from './tag_classes';
98
import { presetManager } from '../presets';
@@ -38,9 +37,10 @@ export function svgPoints(projection, context) {
3837
// Avoid exit/enter if we're just moving stuff around.
3938
// The node will get a new version but we only need to run the update selection.
4039
function fastEntityKey(d) {
40+
if (typeof d === 'number') return d;
4141
const mode = context.mode();
4242
const isMoving = mode && /^(add|draw|drag|move|rotate)/.test(mode.id);
43-
return isMoving ? d.id : osmEntity.key(d);
43+
return isMoving ? d.id : d.key();
4444
}
4545

4646

modules/svg/vertices.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { select as d3_select } from 'd3-selection';
33

44
import { presetManager } from '../presets';
55
import { geoScaleToZoom } from '../geo';
6-
import { osmEntity } from '../osm';
76
import { svgPassiveVertex, svgPointTransform } from './helpers';
87
import { svgTagClasses } from './tag_classes';
98

@@ -31,9 +30,10 @@ export function svgVertices(projection, context) {
3130
// Avoid exit/enter if we're just moving stuff around.
3231
// The node will get a new version but we only need to run the update selection.
3332
function fastEntityKey(d) {
33+
if (typeof d === 'number') return d;
3434
var mode = context.mode();
3535
var isMoving = mode && /^(add|draw|drag|move|rotate)/.test(mode.id);
36-
return isMoving ? d.id : osmEntity.key(d);
36+
return isMoving ? d.id : d.key();
3737
}
3838

3939

@@ -182,7 +182,7 @@ export function svgVertices(projection, context) {
182182
.merge(dgroups);
183183

184184
var viewfields = dgroups.selectAll('.viewfield')
185-
.data(getDirections, function key(d) { return osmEntity.key(d); });
185+
.data(getDirections, d => d.key(d));
186186

187187
// exit
188188
viewfields.exit()

modules/ui/sections/raw_member_editor.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import { actionDeleteMember } from '../../actions/delete_member';
1010
import { actionMoveMember } from '../../actions/move_member';
1111
import { modeBrowse } from '../../modes/browse';
1212
import { modeSelect } from '../../modes/select';
13-
import { osmEntity } from '../../osm';
1413
import { getRelationColor } from '../../osm/tags';
1514
import { svgIcon } from '../../svg/icon';
1615
import { services } from '../../services';
@@ -150,8 +149,8 @@ export function uiSectionRawMemberEditor(context) {
150149

151150
var items = list.selectAll('li')
152151
.data(memberships, function(d) {
153-
return osmEntity.key(d.relation) + ',' + d.index + ',' +
154-
(d.member ? osmEntity.key(d.member) : 'incomplete');
152+
return d.relation.key() + ',' + d.index + ',' +
153+
(d.member ? d.member.key() : 'incomplete');
155154
});
156155

157156
items.exit()

modules/ui/sections/raw_membership_editor.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { actionChangeMember } from '../../actions/change_member';
99
import { actionDeleteMembers } from '../../actions/delete_members';
1010

1111
import { modeSelect } from '../../modes/select';
12-
import { osmEntity, osmRelation } from '../../osm';
12+
import { osmRelation } from '../../osm';
1313
import { getRelationColor, isColorValid } from '../../osm/tags';
1414
import { services } from '../../services';
1515
import { svgIcon } from '../../svg/icon';
@@ -82,7 +82,7 @@ export function uiSectionRawMembershipEditor(context) {
8282
membership = {
8383
relation: relation,
8484
members: [],
85-
hash: osmEntity.key(relation)
85+
hash: relation.key()
8686
};
8787
for (index = 0; index < relation.members.length; index++) {
8888
member = relation.members[index];
@@ -99,7 +99,7 @@ export function uiSectionRawMembershipEditor(context) {
9999
membership = {
100100
relation: relation,
101101
members: [],
102-
hash: osmEntity.key(relation)
102+
hash: relation.key()
103103
};
104104
}
105105
}

0 commit comments

Comments
 (0)