diff --git a/src/lib/components/Search.svelte b/src/lib/components/Search.svelte index 3b0cf32..91c3fb4 100644 --- a/src/lib/components/Search.svelte +++ b/src/lib/components/Search.svelte @@ -6,7 +6,7 @@ const dispatch = createEventDispatcher(); - export type Facet = { + type Facet = { identifier: string; title: string; isMulti?: boolean; @@ -20,6 +20,7 @@ export let facetsConfig: Array = []; export let data; + export let dataDefault = {}; let sort = { value: 'stars_desc' }; export let searchableFields: Array = []; export let sortableFields: Array = []; @@ -49,8 +50,10 @@ ), searchableFields }; - - const searcher = itemsjs(data, configurations as Configuration); + const searcher = itemsjs( + data.map((line) => ({ ...dataDefault, ...line })), + configurations as Configuration + ); export function search() { const results = searcher.search({ @@ -62,9 +65,9 @@ let filterValue; const facetValue = facet.value; if (Array.isArray(facetValue)) { - filterValue = facetValue.map((value) => value.value); + filterValue = facetValue.map((value) => revertDefaultValue(value.value)); } else { - filterValue = [facetValue.value]; + filterValue = [revertDefaultValue(facetValue.value)]; } return { ...object, @@ -86,10 +89,22 @@ } $: query, facets, sort, search(); + + function defaultEmpty(values: Array, defaultValue = 'Unclassified'): Array { + return values.map((value) => value || defaultValue); + } + function revertDefaultValue(value: string, defaultValue = 'Unclassified'): string { + return value === defaultValue ? '' : value; + } {#each facets as facet (facet.identifier)} - {/each}