]>
Commit | Line | Data |
---|---|---|
1 | <div myInfiniteScroller (nearOfBottom)="onNearOfBottom()" class="search-result"> | |
2 | <div class="results-header"> | |
3 | <div class="first-line"> | |
4 | <div class="results-counter" *ngIf="pagination.totalItems"> | |
5 | <span class="me-1" i18n>{{ pagination.totalItems | myNumberFormatter }} {pagination.totalItems, plural, =1 {result} other {results}}</span> | |
6 | ||
7 | <span class="me-1" i18n *ngIf="advancedSearch.searchTarget === 'local'">on this instance</span> | |
8 | <span class="me-1" i18n *ngIf="advancedSearch.searchTarget === 'search-index'">on the vidiverse</span> | |
9 | ||
10 | <span *ngIf="currentSearch" i18n>for <span class="search-value">{{ currentSearch }}</span></span> | |
11 | </div> | |
12 | ||
13 | <div | |
14 | class="results-filter-button ms-auto" (click)="isSearchFilterCollapsed = !isSearchFilterCollapsed" role="button" | |
15 | [attr.aria-expanded]="!isSearchFilterCollapsed" aria-controls="collapseBasic" | |
16 | > | |
17 | <span class="icon icon-filter"></span> | |
18 | <ng-container i18n> | |
19 | Filters | |
20 | <span *ngIf="numberOfFilters() > 0" class="pt-badge badge-secondary">{{ numberOfFilters() }}</span> | |
21 | </ng-container> | |
22 | </div> | |
23 | </div> | |
24 | ||
25 | <div class="results-filter collapse-transition" [ngbCollapse]="isSearchFilterCollapsed"> | |
26 | <my-search-filters [advancedSearch]="advancedSearch" (filtered)="onFiltered()"></my-search-filters> | |
27 | ||
28 | <div *ngIf="error" class="alert alert-danger">{{ error }}</div> | |
29 | </div> | |
30 | </div> | |
31 | ||
32 | <div i18n *ngIf="pagination.totalItems === 0 && results.length === 0" class="no-results"> | |
33 | No results found | |
34 | </div> | |
35 | ||
36 | <ng-container *ngFor="let result of results"> | |
37 | <div *ngIf="isVideoChannel(result)" class="entry video-channel"> | |
38 | ||
39 | <my-actor-avatar [actor]="result" actorType="channel" [internalHref]="getInternalChannelUrl(result)" [href]="getExternalChannelUrl(result)" size="120"></my-actor-avatar> | |
40 | ||
41 | <div class="video-channel-info"> | |
42 | <a *ngIf="!isExternalChannelUrl()" [routerLink]="getInternalChannelUrl(result)" class="video-channel-names"> | |
43 | <ng-container *ngTemplateOutlet="aContent"></ng-container> | |
44 | </a> | |
45 | ||
46 | <a *ngIf="isExternalChannelUrl()" [href]="getExternalChannelUrl(result)" target="_blank" class="video-channel-names"> | |
47 | <ng-container *ngTemplateOutlet="aContent"></ng-container> | |
48 | </a> | |
49 | ||
50 | <ng-template #aContent> | |
51 | <div class="video-channel-display-name">{{ result.displayName }}</div> | |
52 | <div class="video-channel-name">{{ result.nameWithHost }}</div> | |
53 | </ng-template> | |
54 | ||
55 | <div i18n class="video-channel-followers">{{ result.followersCount }} subscribers</div> | |
56 | </div> | |
57 | ||
58 | <my-subscribe-button *ngIf="!hideActions()" [videoChannels]="[result]"></my-subscribe-button> | |
59 | </div> | |
60 | ||
61 | <div *ngIf="isVideo(result)" class="entry video"> | |
62 | <my-video-miniature | |
63 | [video]="result" [user]="userMiniature" [displayAsRow]="true" [displayVideoActions]="!hideActions()" | |
64 | [displayOptions]="videoDisplayOptions" [videoLinkType]="getLinkType()" | |
65 | (videoBlocked)="removeVideoFromArray(result)" (videoRemoved)="removeVideoFromArray(result)" | |
66 | ></my-video-miniature> | |
67 | </div> | |
68 | ||
69 | <div *ngIf="isPlaylist(result)" class="entry video-playlist"> | |
70 | <my-video-playlist-miniature | |
71 | [playlist]="result" [displayAsRow]="true" [displayChannel]="true" | |
72 | [linkType]="getLinkType()" | |
73 | ></my-video-playlist-miniature> | |
74 | </div> | |
75 | </ng-container> | |
76 | ||
77 | </div> |