Skip to content

Commit 0a6f650

Browse files
authored
Merge pull request #46 from Srujithchaithanya1/fix/hadelDeletedInstances
Fix/hadleDeletedInstances
2 parents 74c5434 + f642352 commit 0a6f650

5 files changed

Lines changed: 80 additions & 6 deletions

File tree

projects/pathway-browser/src/app/viewport/search/search.component.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -487,7 +487,9 @@ export namespace Search {
487487
isDisease: boolean;
488488
hasEHLD?: boolean;
489489
hasReferenceEntity: boolean;
490-
disease: boolean
490+
disease: boolean;
491+
deleted: boolean;
492+
date: number;
491493
}
492494

493495
export interface EntryResult {

projects/website-angular/src/app/search/search.component.html

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -281,9 +281,33 @@ <h2>{{ group.typeName }} ({{ group.entriesCount }})</h2>
281281
@for (entry of group.entries; track entry.dbId) {
282282
<div class="search-entry">
283283
<div class="entry-header">
284-
<a class="entry-name" [routerLink]="getDetailLink(entry)" [innerHTML]="entry.name"></a>
285-
<span class="entry-id">{{ entry.stId }}</span>
284+
@if (entry.deleted) {
285+
<mat-icon class="deleted-icon">delete</mat-icon>
286+
<span class="deleted" [innerHTML]="entry.stId"></span>
287+
@if (entry.replacementStIds?.length) {
288+
289+
<a
290+
[routerLink]="['/content/detail', entry.replacementStIds[0]]"
291+
title="Go to replacement">
292+
{{ entry.replacementStIds[0] }}
293+
</a>
294+
}
295+
296+
} @else {
297+
<a class="entry-name"
298+
[routerLink]="getDetailLink(entry)"
299+
[innerHTML]="entry.name">
300+
</a>
301+
<span class="entry-id">{{ entry.stId }}</span>
302+
}
303+
286304
</div>
305+
@if (entry.deleted && entry.date) {
306+
<div class="deleted-date">
307+
<b>Deleted on</b>
308+
{{ entry.date | date:'MMM d, y, h:mm:ss a' }}
309+
</div>
310+
}
287311
@if (entry.species?.length) {
288312
<div class="entry-species">
289313
@for (sp of entry.species; track sp; let last = $last) {

projects/website-angular/src/app/search/search.component.scss

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,20 @@ $border-radius: 8px;
7373
align-items: flex-start;
7474
}
7575

76+
.deleted {
77+
text-decoration: line-through;
78+
color: #555;
79+
}
80+
81+
.deleted-icon {
82+
display: flex;
83+
align-items: center;
84+
justify-content: center;
85+
font-size: 20px;
86+
color: var(--error);
87+
}
88+
89+
7690
// Facet sidebar
7791
.facet-sidebar {
7892
width: 260px;

projects/website-angular/src/app/search/search.component.ts

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,13 @@ import {
1515
SearchFilters,
1616
FacetCount,
1717
} from '../../services/search.service';
18+
import { DatePipe } from '@angular/common';
19+
import { MatIcon } from "@angular/material/icon";
1820

1921
@Component({
2022
selector: 'app-search',
2123
standalone: true,
22-
imports: [PageLayoutComponent, TileComponent, RouterLink, SearchBarComponent, FormsModule],
24+
imports: [PageLayoutComponent, TileComponent, RouterLink, SearchBarComponent, FormsModule, DatePipe, MatIcon],
2325
templateUrl: './search.component.html',
2426
styleUrl: './search.component.scss',
2527
})
@@ -199,7 +201,26 @@ export class SearchComponent implements OnInit, OnDestroy, AfterViewInit {
199201
this.hasNoResults = false;
200202
} else {
201203
// Successful API response - check if we have results
202-
this.results = results as SearchResult;
204+
const res = results as SearchResult;
205+
const hasNonDeleted = res.results?.some(group =>
206+
group.entries.some(e => !e.deleted)
207+
);
208+
res.results = res.results?.map(group => {
209+
const entries = hasNonDeleted
210+
? group.entries.filter(e => !e.deleted)
211+
: group.entries;
212+
213+
return {
214+
...group,
215+
entries,
216+
entriesCount: entries.length
217+
};
218+
}).filter(group => group.entries.length > 0) || [];
219+
res.numberOfMatches = res.results.reduce(
220+
(sum, g) => sum + g.entries.length,
221+
0
222+
);
223+
this.results = res;
203224
this.facets = facets;
204225
this.totalPages = this.totalPages = Math.max(
205226
...(results.results || []).map(group =>
@@ -238,7 +259,7 @@ export class SearchComponent implements OnInit, OnDestroy, AfterViewInit {
238259

239260
get allEntries(): SearchEntry[] {
240261
if (!this.results?.results) return [];
241-
return this.results.results.flatMap(g => g.entries);
262+
return this.results.results.flatMap(g => this.filterDeletedEntries(g.entries));
242263
}
243264

244265
toggleFacet(category: string, value: string): void {
@@ -277,6 +298,17 @@ export class SearchComponent implements OnInit, OnDestroy, AfterViewInit {
277298
this.advancedMode = !this.advancedMode;
278299
}
279300

301+
private filterDeletedEntries(entries: SearchEntry[]): SearchEntry[] {
302+
if (!entries?.length) return [];
303+
304+
const nonDeleted = entries.filter(e => !e.deleted);
305+
if (nonDeleted.length > 0) {
306+
return nonDeleted;
307+
}
308+
309+
return entries;
310+
}
311+
280312
private updateQueryParams(params: Record<string, string | string[] | null>): void {
281313
this.router.navigate([], {
282314
relativeTo: this.route,

projects/website-angular/src/services/search.service.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ export interface SearchEntry {
1616
referenceIdentifier: string;
1717
databaseName: string;
1818
referenceURL: string;
19+
deleted: boolean;
20+
date: number;
1921
}
2022

2123
export interface ResultGroup {

0 commit comments

Comments
 (0)