Add priority-search to the searchable element

This commit is contained in:
Pieter Vander Vennet 2022-07-15 01:10:10 +02:00
parent c916d5fe66
commit 07973e37a6
14 changed files with 5349 additions and 244 deletions

View file

@ -14,6 +14,7 @@ import List from "../../UI/Base/List";
import {MappingConfigJson, QuestionableTagRenderingConfigJson} from "./Json/QuestionableTagRenderingConfigJson";
import {FixedUiElement} from "../../UI/Base/FixedUiElement";
import {Paragraph} from "../../UI/Base/Paragraph";
import UserDetails from "../../Logic/Osm/OsmConnection";
export interface Mapping {
readonly if: TagsFilter,
@ -23,7 +24,8 @@ export interface Mapping {
readonly iconClass: string | "small" | "medium" | "large" | "small-height" | "medium-height" | "large-height",
readonly hideInAnswer: boolean | TagsFilter
readonly addExtraTags: Tag[],
readonly searchTerms?: Record<string, string[]>
readonly searchTerms?: Record<string, string[]>,
readonly priorityIf?: TagsFilter
}
/***
@ -287,6 +289,11 @@ export default class TagRenderingConfig {
}
}
/**
* const tr = TagRenderingConfig.ExtractMapping({if: "a=b", then: "x", priorityIf: "_country=be"}, 0, "test","test", false,true)
* tr.if // => new Tag("a","b")
* tr.priorityIf // => new Tag("_country","be")
*/
public static ExtractMapping(mapping: MappingConfigJson, i: number, translationKey: string,
context: string,
multiAnswer?: boolean, isQuestionable?: boolean, commonSize: string = "small") {
@ -337,6 +344,7 @@ export default class TagRenderingConfig {
iconClass = mapping.icon["class"] ?? iconClass
}
}
const prioritySearch = mapping.priorityIf !== undefined ? TagUtils.Tag(mapping.priorityIf) : undefined;
const mp = <Mapping>{
if: TagUtils.Tag(mapping.if, `${ctx}.if`),
ifnot: (mapping.ifnot !== undefined ? TagUtils.Tag(mapping.ifnot, `${ctx}.ifnot`) : undefined),
@ -345,7 +353,8 @@ export default class TagRenderingConfig {
icon,
iconClass,
addExtraTags,
searchTerms: mapping.searchTerms
searchTerms: mapping.searchTerms,
priorityIf: prioritySearch
};
if (isQuestionable) {
if (hideInAnswer !== true && mp.if !== undefined && !mp.if.isUsableAsAnswer()) {