From c8dc155a274b22523dfe0c4f77888c8c160da406 Mon Sep 17 00:00:00 2001 From: Quincy Morgan Date: Mon, 4 Mar 2019 14:08:55 -0500 Subject: [PATCH] Add expansion of multigeometry features within categories --- modules/ui/search_add.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/modules/ui/search_add.js b/modules/ui/search_add.js index 258f50cd6..1cf0bc396 100644 --- a/modules/ui/search_add.js +++ b/modules/ui/search_add.js @@ -28,9 +28,11 @@ export function uiSearchAdd(context) { var presets; var search = d3_select(null), popover = d3_select(null), list = d3_select(null); + var shownGeometry = ['point', 'line', 'area']; + function searchAdd(selection) { - presets = context.presets().matchAnyGeometry(['point', 'line', 'area']); + presets = context.presets().matchAnyGeometry(shownGeometry); var searchWrap = selection .append('div') @@ -194,7 +196,7 @@ export function uiSearchAdd(context) { return CategoryItem(preset); } else if (preset.visible()) { var supportedGeometry = preset.geometry.filter(function(geometry) { - return ['point', 'line', 'area'].indexOf(geometry) !== -1; + return shownGeometry.indexOf(geometry) !== -1; }).sort(); if (supportedGeometry.length === 1) { return AddablePresetItem(preset, supportedGeometry[0]); @@ -325,7 +327,7 @@ export function uiSearchAdd(context) { if (shouldExpand) { var subitems = item.subitems(); var selector = '#' + itemSelection.node().id + ' + *'; - item.subsection = d3_selectAll('.search-add .popover .list').insert('div', selector) + item.subsection = d3_select(itemSelection.node().parentElement).insert('div', selector) .attr('class', 'subsection'); var subitemsEnter = item.subsection.selectAll('.list-item') .data(subitems) @@ -347,9 +349,9 @@ export function uiSearchAdd(context) { chooseExpandable(item, d3_select(selection.node().closest('.list-item'))); }; item.subitems = function() { - return preset.members.collection.map(function(preset) { + return preset.members.matchAnyGeometry(shownGeometry).collection.map(function(preset) { var supportedGeometry = preset.geometry.filter(function(geometry) { - return ['point', 'line', 'area'].indexOf(geometry) !== -1; + return shownGeometry.indexOf(geometry) !== -1; }).sort(); if (supportedGeometry.length === 1) { return AddablePresetItem(preset, supportedGeometry[0]);