2017-07-16 23:15:42 +08:00
|
|
|
<div #photoContainer class="photo-container" (mouseover)="mouseOver()" (mouseout)="mouseOut()">
|
2018-11-23 02:12:10 +08:00
|
|
|
|
|
|
|
|
2019-07-20 06:29:16 +08:00
|
|
|
<img alt="{{gridMedia.media.name}}" #img [src]="thumbnail.Src | fixOrientation:gridMedia.Orientation | async"
|
2018-11-02 17:40:09 +08:00
|
|
|
*ngIf="thumbnail.Available">
|
2016-06-17 17:25:15 +08:00
|
|
|
|
2018-05-04 07:17:08 +08:00
|
|
|
<app-gallery-grid-photo-loading
|
2017-07-18 05:11:35 +08:00
|
|
|
[error]="thumbnail.Error"
|
2017-07-16 02:23:02 +08:00
|
|
|
[animate]="thumbnail.loading"
|
|
|
|
*ngIf="!thumbnail.Available">
|
2018-05-04 07:17:08 +08:00
|
|
|
</app-gallery-grid-photo-loading>
|
2016-06-17 06:05:31 +08:00
|
|
|
|
2018-11-24 05:28:14 +08:00
|
|
|
|
2019-07-20 06:29:16 +08:00
|
|
|
<div *ngIf="gridMedia.isVideo()" class="video-indicator"
|
2018-11-24 05:28:14 +08:00
|
|
|
[style.marginTop.px]="-container.nativeElement.offsetHeight"
|
|
|
|
[style.marginLeft.px]="container.nativeElement.offsetWidth">
|
2019-07-20 06:29:16 +08:00
|
|
|
{{gridMedia.Video.metadata.duration | duration}} <span class="oi oi-video"></span></div>
|
2018-11-24 05:28:14 +08:00
|
|
|
|
|
|
|
|
2017-07-16 02:23:02 +08:00
|
|
|
<!--Info box -->
|
2019-07-20 06:29:16 +08:00
|
|
|
<div class="info"
|
|
|
|
*ngIf="infoBarVisible"
|
2018-05-08 03:42:32 +08:00
|
|
|
[style.width.px]="container.nativeElement.offsetWidth">
|
2018-12-06 20:50:55 +08:00
|
|
|
<div class="photo-name">{{Title}}</div>
|
2016-05-16 00:52:07 +08:00
|
|
|
|
2019-07-20 06:29:16 +08:00
|
|
|
<div class="photo-position" *ngIf="gridMedia.hasPositionData()">
|
2018-05-14 04:59:57 +08:00
|
|
|
<span class="oi oi-map-marker"></span>
|
2017-07-16 02:23:02 +08:00
|
|
|
<ng-template [ngIf]="getPositionText()">
|
|
|
|
<a [routerLink]="['/search', getPositionText(), {type:SearchTypes[SearchTypes.position]}]"
|
|
|
|
*ngIf="searchEnabled">
|
|
|
|
{{getPositionText()}}
|
|
|
|
</a>
|
|
|
|
<span *ngIf="!searchEnabled">{{getPositionText()}}</span>
|
|
|
|
</ng-template>
|
|
|
|
</div>
|
2016-05-16 00:52:07 +08:00
|
|
|
|
2019-01-14 03:18:18 +08:00
|
|
|
<div class="photo-keywords" *ngIf="keywords">
|
|
|
|
<ng-template ngFor let-keyword [ngForOf]="keywords" let-last="last">
|
2017-07-16 02:23:02 +08:00
|
|
|
<a *ngIf="searchEnabled"
|
2019-01-14 03:18:18 +08:00
|
|
|
[routerLink]="['/search', keyword.value, {type: SearchTypes[keyword.type]}]" [ngSwitch]="keyword.type">
|
|
|
|
<ng-template [ngSwitchCase]="SearchTypes.keyword">#</ng-template><!--
|
|
|
|
--><ng-template [ngSwitchCase]="SearchTypes.person"><span class="oi oi-person"></span></ng-template><!--
|
|
|
|
-->{{keyword.value}}</a>
|
|
|
|
<span *ngIf="!searchEnabled" [ngSwitch]="keyword.type">
|
|
|
|
<ng-template [ngSwitchCase]="SearchTypes.keyword">#</ng-template><!--
|
|
|
|
--><ng-template [ngSwitchCase]="SearchTypes.person"><span class="oi oi-person"></span></ng-template><!--
|
|
|
|
-->{{keyword.value}}</span>
|
2019-07-20 06:29:16 +08:00
|
|
|
<ng-template [ngIf]="!last">, </ng-template>
|
2017-07-16 02:23:02 +08:00
|
|
|
</ng-template>
|
2016-05-16 00:52:07 +08:00
|
|
|
|
|
|
|
</div>
|
2017-07-16 02:23:02 +08:00
|
|
|
</div>
|
2017-06-11 04:32:56 +08:00
|
|
|
</div>
|