parent
05a68408fb
commit
b003a62c1c
|
@ -15,5 +15,10 @@
|
||||||
<small class="tx-gray-700">
|
<small class="tx-gray-700">
|
||||||
{{getSourceDisplayName(sourceInfo)}}
|
{{getSourceDisplayName(sourceInfo)}}
|
||||||
</small>
|
</small>
|
||||||
|
<ng-container *ngIf="sourceInfo?.searchHighlights?.length > 0">
|
||||||
|
<br/>
|
||||||
|
<small class="tx-gray-700"><strong>Also: </strong><span [innerHTML]="sourceInfo?.searchHighlights.join(', ') | safeHtml:'html'"></span></small>
|
||||||
|
</ng-container>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -23,6 +23,9 @@ export class LighthouseSourceSearchResult {
|
||||||
_score: number;
|
_score: number;
|
||||||
_source: LighthouseBrandListDisplayItem;
|
_source: LighthouseBrandListDisplayItem;
|
||||||
sort: string[];
|
sort: string[];
|
||||||
|
highlight?: {
|
||||||
|
aliases?: string[];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class LighthouseSourceSearchAggregation {
|
export class LighthouseSourceSearchAggregation {
|
||||||
|
|
|
@ -24,6 +24,7 @@ export const sourceConnectWindowTimeout = 24*5000 //wait 2 minutes (5 * 24 = 120
|
||||||
export class SourceListItem {
|
export class SourceListItem {
|
||||||
source?: Source
|
source?: Source
|
||||||
brand: LighthouseBrandListDisplayItem | PatientAccessBrand
|
brand: LighthouseBrandListDisplayItem | PatientAccessBrand
|
||||||
|
searchHighlights?: string[]
|
||||||
}
|
}
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
@ -165,7 +166,10 @@ export class MedicalSourcesComponent implements OnInit {
|
||||||
this.resultLimits.totalItems = wrapper.hits.total.value;
|
this.resultLimits.totalItems = wrapper.hits.total.value;
|
||||||
|
|
||||||
this.availableLighthouseBrandList = this.availableLighthouseBrandList.concat(wrapper.hits.hits.map((result) => {
|
this.availableLighthouseBrandList = this.availableLighthouseBrandList.concat(wrapper.hits.hits.map((result) => {
|
||||||
return {brand: result._source}
|
return {
|
||||||
|
brand: result._source,
|
||||||
|
searchHighlights: result?.highlight?.aliases || []
|
||||||
|
}
|
||||||
}))
|
}))
|
||||||
|
|
||||||
//check if scroll is complete.
|
//check if scroll is complete.
|
||||||
|
|
|
@ -9,6 +9,7 @@ import { DatasetLatestEntryPipe } from './dataset-latest-entry.pipe';
|
||||||
import { HumanNamePipe } from './human-name.pipe';
|
import { HumanNamePipe } from './human-name.pipe';
|
||||||
import { ReferenceUriPipe } from './reference-uri.pipe';
|
import { ReferenceUriPipe } from './reference-uri.pipe';
|
||||||
import { FastenDisplayModelPipe } from './fasten-display-model.pipe';
|
import { FastenDisplayModelPipe } from './fasten-display-model.pipe';
|
||||||
|
import { SafeHtmlPipe } from './safe-html.pipe';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [
|
declarations: [
|
||||||
|
@ -20,6 +21,7 @@ import { FastenDisplayModelPipe } from './fasten-display-model.pipe';
|
||||||
HumanNamePipe,
|
HumanNamePipe,
|
||||||
ReferenceUriPipe,
|
ReferenceUriPipe,
|
||||||
FastenDisplayModelPipe,
|
FastenDisplayModelPipe,
|
||||||
|
SafeHtmlPipe,
|
||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
|
|
||||||
|
@ -31,7 +33,8 @@ import { FastenDisplayModelPipe } from './fasten-display-model.pipe';
|
||||||
DatasetLatestEntryPipe,
|
DatasetLatestEntryPipe,
|
||||||
HumanNamePipe,
|
HumanNamePipe,
|
||||||
ReferenceUriPipe,
|
ReferenceUriPipe,
|
||||||
FastenDisplayModelPipe
|
FastenDisplayModelPipe,
|
||||||
|
SafeHtmlPipe
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
export class PipesModule {}
|
export class PipesModule {}
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
import { SafeHtmlPipe } from './safe-html.pipe';
|
||||||
|
import {DomSanitizer} from '@angular/platform-browser';
|
||||||
|
|
||||||
|
// describe('SafeHtmlPipe', () => {
|
||||||
|
// it('create an instance', () => {
|
||||||
|
// const pipe = new SafeHtmlPipe(new DomSanitizer());
|
||||||
|
// expect(pipe).toBeTruthy();
|
||||||
|
// });
|
||||||
|
// });
|
|
@ -0,0 +1,21 @@
|
||||||
|
import { Pipe, PipeTransform } from '@angular/core';
|
||||||
|
import {DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl} from '@angular/platform-browser';
|
||||||
|
|
||||||
|
@Pipe({
|
||||||
|
name: 'safeHtml'
|
||||||
|
})
|
||||||
|
export class SafeHtmlPipe implements PipeTransform {
|
||||||
|
constructor(private sanitized: DomSanitizer) {}
|
||||||
|
|
||||||
|
transform(value: any, type: string): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {
|
||||||
|
switch (type) {
|
||||||
|
case 'html': return this.sanitized.bypassSecurityTrustHtml(value);
|
||||||
|
case 'style': return this.sanitized.bypassSecurityTrustStyle(value);
|
||||||
|
case 'script': return this.sanitized.bypassSecurityTrustScript(value);
|
||||||
|
case 'url': return this.sanitized.bypassSecurityTrustUrl(value);
|
||||||
|
case 'resourceUrl': return this.sanitized.bypassSecurityTrustResourceUrl(value);
|
||||||
|
default: throw new Error(`Invalid safe type specified: ${type}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue