@@ -110,7 +110,7 @@ <h1 class="page-title">Source: views/Browsers/OntologyBrowser.vue</h1>
110110 <v-autocomplete
111111 v-model="search"
112112 :color="color"
113- :items="flattenedTree "
113+ :items="uniqueSearchItems "
114114 :label="`Search ${selectedOntology}s`"
115115 clearable
116116 hide-details
@@ -154,8 +154,8 @@ <h1 class="page-title">Source: views/Browsers/OntologyBrowser.vue</h1>
154154 :class="[
155155 'chip-mimic mr-2',
156156 item.isTarget
157- ? ' bg-primary text-white font-weight-bold elevation-2'
158- : ' text-grey-darken-2 border-grey' ,
157+ ? ` bg-${color} text-white font-weight-bold elevation-2 border-0`
158+ : ` text-${color} border-${color}` ,
159159 ]"
160160 >
161161 {{ item.name }}
@@ -236,6 +236,16 @@ <h1 class="page-title">Source: views/Browsers/OntologyBrowser.vue</h1>
236236 };
237237 },
238238 computed: {
239+ ...mapState("editor", ["colors"]),
240+ // We do NOT map activeTerms/openedTerms directly to avoid undefined errors
241+ ...mapState("ontologyBrowser", [
242+ "tree",
243+ "records",
244+ "loadingData",
245+ "flattenedTree",
246+ "pagination",
247+ "selectedTerm",
248+ ]),
239249 selectedOntology() {
240250 return this.$route.params.id;
241251 },
@@ -245,7 +255,6 @@ <h1 class="page-title">Source: views/Browsers/OntologyBrowser.vue</h1>
245255 color() {
246256 return this.colors[this.selectedOntology];
247257 },
248-
249258 term() {
250259 const qTerm = this.$route.query["term"];
251260 if (!qTerm) return null;
@@ -254,18 +263,6 @@ <h1 class="page-title">Source: views/Browsers/OntologyBrowser.vue</h1>
254263 node.name.toLowerCase() === decodeURIComponent(qTerm).toLowerCase(),
255264 );
256265 },
257-
258- ...mapState("editor", ["colors"]),
259- // We do NOT map activeTerms/openedTerms directly to avoid undefined errors
260- ...mapState("ontologyBrowser", [
261- "tree",
262- "records",
263- "loadingData",
264- "flattenedTree",
265- "pagination",
266- "selectedTerm",
267- ]),
268-
269266 // Manual State mapping with Safety Checks
270267 activeTerms() {
271268 return this.$store.state.ontologyBrowser.activeTerms || [];
@@ -327,6 +324,25 @@ <h1 class="page-title">Source: views/Browsers/OntologyBrowser.vue</h1>
327324 traverse(sourceTree);
328325 return result;
329326 },
327+
328+ /**
329+ * UNIQUE SEARCH ITEMS
330+ * Filters the flattenedTree to ensure each term ID appears only once
331+ * in the Autocomplete dropdown.
332+ */
333+ uniqueSearchItems() {
334+ const items = this.flattenedTree || [];
335+ const seen = new Set();
336+
337+ return items.filter((item) => {
338+ const id = item.identifier;
339+ if (seen.has(id)) {
340+ return false; // Duplicate found, skip it
341+ }
342+ seen.add(id);
343+ return true; // New item, keep it
344+ });
345+ },
330346 },
331347 watch: {
332348 // URL Term Watcher
0 commit comments