diff --git a/data/presets.yaml b/data/presets.yaml index 094732cd6..27e6a124d 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -472,6 +472,8 @@ en: lanes: # 'lanes=*' label: Lanes + # lanes field placeholder + placeholder: '1, 2, 3...' layer: # 'layer=*' label: Layer diff --git a/data/presets/fields.json b/data/presets/fields.json index 31377a3b2..203c632a5 100644 --- a/data/presets/fields.json +++ b/data/presets/fields.json @@ -647,8 +647,9 @@ }, "lanes": { "key": "lanes", - "type": "lanes", - "label": "Lanes" + "type": "number", + "label": "Lanes", + "placeholder": "1, 2, 3..." }, "layer": { "key": "layer", diff --git a/data/presets/fields/lanes.json b/data/presets/fields/lanes.json index 2f074ec28..8b4a10628 100644 --- a/data/presets/fields/lanes.json +++ b/data/presets/fields/lanes.json @@ -1,5 +1,6 @@ { "key": "lanes", - "type": "lanes", - "label": "Lanes" + "type": "number", + "label": "Lanes", + "placeholder":"1, 2, 3..." } diff --git a/dist/locales/en.json b/dist/locales/en.json index 457f4af9a..e6ecfcfb0 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -1046,7 +1046,8 @@ "label": "Type" }, "lanes": { - "label": "Lanes" + "label": "Lanes", + "placeholder": "1, 2, 3..." }, "layer": { "label": "Layer" diff --git a/js/lib/id/ui/preset.js b/js/lib/id/ui/preset.js index 5d3ff168b..40e3e8fb2 100644 --- a/js/lib/id/ui/preset.js +++ b/js/lib/id/ui/preset.js @@ -1238,6 +1238,51 @@ return d3.rebind(localized, dispatch, 'on'); } + function lanes(field, context) { + var dispatch = d3.dispatch('change'), + wayID, + laneData; + + function lanes(selection) { + // if form field is hidden or has detached from dom, clean up. + if (!d3.select('.inspector-wrap.inspector-hidden').empty() || !selection.node().parentNode) { + selection.call(lanes.off); + return; + } + + laneData = context.entity(wayID).lanes(); + + var wrap = selection.selectAll('.preset-input-wrap') + .data([0]); + + var enter = wrap.enter() + .append('div') + .attr('class', 'preset-input-wrap'); + + enter + .append('div') + .attr('class', 'lane-count') + .append('span'); + + selection.selectAll('.lane-count') + .text(laneData.tagged.lanes.count || laneData.defaults.lanes.count); + + } + + + lanes.entity = function(_) { + if (!wayID || wayID !== _.id) { + wayID = _.id; + } + }; + + lanes.tags = function() {}; + lanes.focus = function() {}; + lanes.off = function() {}; + + return d3.rebind(lanes, dispatch, 'on'); + } + function maxspeed(field, context) { var dispatch = d3.dispatch('change'), entity, @@ -1851,6 +1896,7 @@ exports.email = url; exports.tel = url; exports.localized = localized; + exports.lanes = lanes; exports.maxspeed = maxspeed; exports.radio = radio; exports.restrictions = restrictions; diff --git a/modules/ui/core/preset.js b/modules/ui/core/preset.js index 92f738ec8..cbda008c3 100644 --- a/modules/ui/core/preset.js +++ b/modules/ui/core/preset.js @@ -88,10 +88,6 @@ export function preset(context) { fields.push(UIField(context.presets().field('restrictions'), entity, true)); } - if (entity.lanes(context.graph())) { - fields.push(UIField(context.presets().field('lanes'), entity, true)); - } - context.presets().universal().forEach(function(field) { if (preset.fields.indexOf(field) < 0) { fields.push(UIField(field, entity));