]>
Commit | Line | Data |
---|---|---|
1 | <h1> | |
2 | <span class="text-nowrap me-2"> | |
3 | <my-global-icon iconName="channel" aria-hidden="true"></my-global-icon> | |
4 | <ng-container i18n>My channels</ng-container> | |
5 | <span *ngIf="totalItems" class="pt-badge badge-secondary">{{ totalItems }}</span> | |
6 | </span> | |
7 | ||
8 | <div> | |
9 | <a routerLink="/my-library/video-channel-syncs" class="button-link"> | |
10 | <my-global-icon iconName="repeat" aria-hidden="true"></my-global-icon> | |
11 | <ng-container i18n>My synchronizations</ng-container> | |
12 | </a> | |
13 | </div> | |
14 | </h1> | |
15 | ||
16 | <my-channels-setup-message [hideLink]="true"></my-channels-setup-message> | |
17 | ||
18 | <div class="video-channels-header d-flex justify-content-between gap-2"> | |
19 | <my-advanced-input-filter (search)="onSearch($event)"></my-advanced-input-filter> | |
20 | ||
21 | <a class="create-button" routerLink="/manage/create"> | |
22 | <my-global-icon iconName="add" aria-hidden="true"></my-global-icon> | |
23 | <ng-container i18n>Create video channel</ng-container> | |
24 | </a> | |
25 | </div> | |
26 | ||
27 | <div class="no-results" i18n *ngIf="totalItems === 0">No channel found.</div> | |
28 | ||
29 | <div class="video-channels" myInfiniteScroller (nearOfBottom)="onNearOfBottom()" [dataObservable]="onChannelDataSubject.asObservable()"> | |
30 | <div *ngFor="let videoChannel of videoChannels; let i = index" class="video-channel"> | |
31 | <my-actor-avatar [actor]="videoChannel" actorType="channel" [internalHref]="[ '/c', videoChannel.nameWithHost ]" size="80"></my-actor-avatar> | |
32 | ||
33 | <div class="video-channel-info"> | |
34 | <a [routerLink]="[ '/c', videoChannel.nameWithHost ]" class="video-channel-names" i18n-title title="Channel page"> | |
35 | <div class="video-channel-display-name">{{ videoChannel.displayName }}</div> | |
36 | <div class="video-channel-name">{{ videoChannel.nameWithHost }}</div> | |
37 | </a> | |
38 | ||
39 | <a | |
40 | i18n class="video-channel-followers" | |
41 | [routerLink]="[ '/my-library', 'followers' ]" [queryParams]="{ search: 'channel:' + videoChannel.name }" | |
42 | > | |
43 | {videoChannel.followersCount, plural, =0 {No subscribers} =1 {1 subscriber} other {{{ videoChannel.followersCount }} subscribers}} | |
44 | </a> | |
45 | ||
46 | <div class="d-flex"> | |
47 | <span i18n>{videoChannel.videosCount, plural, =0 {No videos} =1 {1 video} other {{{ videoChannel.videosCount }} videos}}</span> | |
48 | <span class="mx-1">ยท</span> | |
49 | <span i18n>{videoChannel.totalViews, plural, =0 {No views} =1 {1 view} other {{{ videoChannel.totalViews | myNumberFormatter }} views}}</span> | |
50 | </div> | |
51 | ||
52 | <div class="video-channel-buttons"> | |
53 | <my-edit-button label [routerLink]="[ '/manage/update', videoChannel.nameWithHost ]"></my-edit-button> | |
54 | <my-delete-button label (click)="deleteVideoChannel(videoChannel)"></my-delete-button> | |
55 | </div> | |
56 | ||
57 | <div *ngIf="!isInSmallView" class="w-100 d-flex justify-content-end chart-container"> | |
58 | <div myDeferLoading> | |
59 | <ng-template> | |
60 | <p-chart | |
61 | *ngIf="chartOptions && videoChannelsChartData && videoChannelsChartData[i]" | |
62 | width="40vw" height="100px" | |
63 | type="line" [data]="videoChannelsChartData[i]" [options]="chartOptions" | |
64 | ></p-chart> | |
65 | </ng-template> | |
66 | </div> | |
67 | </div> | |
68 | </div> | |
69 | </div> | |
70 | </div> |