53 lines
1.9 KiB
TypeScript
53 lines
1.9 KiB
TypeScript
import {Component, EventEmitter, Input, Output} from "@angular/core";
|
|
import {RouterHelper} from "../../utils/routerHelper.class";
|
|
import {properties} from "../../../../environments/environment";
|
|
|
|
@Component({
|
|
selector: 'fos',
|
|
template: `
|
|
<div class="uk-margin-small-bottom uk-flex uk-flex-between">
|
|
<span *ngIf="viewAll && !lessBtn" class="clickable uk-h6 uk-flex uk-flex-middle" (click)="viewLessClick()">
|
|
<icon class="uk-margin-small-right" name="arrow_back" flex="true" ratio="1.2"></icon>
|
|
{{title}}
|
|
</span>
|
|
<span *ngIf="!viewAll || lessBtn" class="uk-text-light-grey">{{title}}</span>
|
|
<a *ngIf="viewAll && lessBtn" (click)="viewAll = !viewAll; lessBtn=false;">View less</a>
|
|
<a *ngIf="subjects && subjects.length > threshold && !viewAll"
|
|
(click)="viewAllClick();">View more</a>
|
|
</div>
|
|
<div class="uk-margin-small-top">
|
|
<div *ngFor="let subject of subjects.slice(0, viewAll?subjects.length:threshold); let i=index" class="uk-text-truncate">
|
|
<a [routerLink]="properties.searchLinkToAdvancedResults"
|
|
[queryParams]="routerHelper.createQueryParams(['f0', 'fv0', 'size'], ['fos', subject, '50'])">
|
|
{{subject}}
|
|
</a>
|
|
</div>
|
|
</div>
|
|
`
|
|
})
|
|
|
|
export class FosComponent {
|
|
@Input() subjects: string[];
|
|
@Input() viewAll: boolean = false;
|
|
@Output() viewAllClicked = new EventEmitter();
|
|
public lessBtn: boolean = false;
|
|
public threshold: number = 2;
|
|
public routerHelper: RouterHelper = new RouterHelper();
|
|
public properties = properties;
|
|
public title: string = "Fields of Science (FOS)";
|
|
|
|
public viewAllClick() {
|
|
if(this.subjects.length <= this.threshold*2) {
|
|
this.viewAll = true;
|
|
this.lessBtn = true;
|
|
} else {
|
|
this.viewAll = true;
|
|
this.viewAllClicked.emit('fos');
|
|
}
|
|
}
|
|
|
|
public viewLessClick() {
|
|
this.viewAll = false;
|
|
this.viewAllClicked.emit("");
|
|
}
|
|
} |