From 3bf3ecf5600f8ba5b6d43d5385b703b7376f7e78 Mon Sep 17 00:00:00 2001 From: Quincy Morgan Date: Wed, 31 Jul 2019 16:18:10 -0400 Subject: [PATCH] Populate the default preset list with the `presets` parameter values, if any (close #6703) --- modules/core/context.js | 9 +++------ modules/presets/index.js | 24 ++++++++++++++++++++---- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/modules/core/context.js b/modules/core/context.js index 19084c691..7ea33cff8 100644 --- a/modules/core/context.js +++ b/modules/core/context.js @@ -569,15 +569,12 @@ export function coreContext() { osmSetVertexTags(presets.vertexTags()); }); } else { - var isVisible; + var addablePresetIDs; if (presetsParameter) { // assume list of allowed preset IDs - var visiblePresetIDs = new Set(presetsParameter.split(',')); - isVisible = function(presetID) { - return visiblePresetIDs.has(presetID); - }; + addablePresetIDs = presetsParameter.split(','); } - presets.init(isVisible); + presets.init(addablePresetIDs); osmSetAreaKeys(presets.areaKeys()); osmSetPointTags(presets.pointTags()); osmSetVertexTags(presets.vertexTags()); diff --git a/modules/presets/index.js b/modules/presets/index.js index a7c94b6fb..315002e55 100644 --- a/modules/presets/index.js +++ b/modules/presets/index.js @@ -26,6 +26,8 @@ export function presetIndex(context) { var _fields = {}; var _universal = []; var _favorites, _recents; + // presets that the user can add + var _addablePresetIDs; // Index of presets by (geometry, tag key). var _index = { @@ -220,8 +222,14 @@ export function presetIndex(context) { }); } - if (d.defaults) { - var getItem = (all.item).bind(all); + var getItem = (all.item).bind(all); + if (_addablePresetIDs) { + ['area', 'line', 'point', 'vertex', 'relation'].forEach(function(geometry) { + _defaults[geometry] = presetCollection(_addablePresetIDs.map(getItem).filter(function(preset) { + return preset.geometry.indexOf(geometry) !== -1; + })); + }); + } else if (d.defaults) { _defaults = { area: presetCollection(d.defaults.area.map(getItem)), line: presetCollection(d.defaults.line.map(getItem)), @@ -245,15 +253,23 @@ export function presetIndex(context) { return all; }; - all.init = function(shouldShow) { + all.init = function(addablePresetIDs) { all.collection = []; _favorites = null; _recents = null; + _addablePresetIDs = addablePresetIDs; _fields = {}; _universal = []; _index = { point: {}, vertex: {}, line: {}, area: {}, relation: {} }; - return all.build(data.presets, shouldShow || true); + var show = true; + if (addablePresetIDs) { + show = function(presetID) { + return addablePresetIDs.indexOf(presetID) !== -1; + }; + } + + return all.build(data.presets, show); };