aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src/app/+my-library/my-video-channel-syncs/my-video-channel-syncs.component.html
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/app/+my-library/my-video-channel-syncs/my-video-channel-syncs.component.html')
-rw-r--r--client/src/app/+my-library/my-video-channel-syncs/my-video-channel-syncs.component.html83
1 files changed, 83 insertions, 0 deletions
diff --git a/client/src/app/+my-library/my-video-channel-syncs/my-video-channel-syncs.component.html b/client/src/app/+my-library/my-video-channel-syncs/my-video-channel-syncs.component.html
new file mode 100644
index 000000000..5141607b1
--- /dev/null
+++ b/client/src/app/+my-library/my-video-channel-syncs/my-video-channel-syncs.component.html
@@ -0,0 +1,83 @@
1<div *ngIf="error" class="alert alert-danger">{{ error }}</div>
2
3<h1>
4 <my-global-icon iconName="refresh" aria-hidden="true"></my-global-icon>
5 <ng-container i18n>My synchronizations</ng-container>
6</h1>
7
8<div *ngIf="!syncEnabled()">
9 <p class="muted" i18n>⚠️ The instance doesn't allow channel synchronization</p>
10</div>
11
12<p-table
13 *ngIf="syncEnabled()" [value]="channelSyncs" [lazy]="true"
14 [paginator]="totalRecords > 0" [totalRecords]="totalRecords" [rows]="rowsPerPage" [rowsPerPageOptions]="rowsPerPageOptions"
15 [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)" dataKey="id"
16 [showCurrentPageReport]="true" i18n-currentPageReportTemplate
17 currentPageReportTemplate="Showing {{'{first}'}} to {{'{last}'}} of {{'{totalRecords}'}} synchronizations"
18 [expandedRowKeys]="expandedRows"
19>
20 <ng-template pTemplate="caption">
21 <div class="caption">
22 <div class="left-buttons">
23 <a class="add-sync" routerLink="{{ getSyncCreateLink() }}">
24 <my-global-icon iconName="add" aria-hidden="true"></my-global-icon>
25 <ng-container i18n>Add synchronization</ng-container>
26 </a>
27 </div>
28 </div>
29 </ng-template>
30
31 <ng-template pTemplate="header">
32 <tr>
33 <th style="width: 10%"><my-global-icon iconName="columns"></my-global-icon></th>
34 <th style="width: 25%" i18n pSortableColumn="externalChannelUrl">External Channel <p-sortIcon field="externalChannelUrl"></p-sortIcon></th>
35 <th style="width: 25%" i18n pSortableColumn="videoChannel">Channel <p-sortIcon field="videoChannel"></p-sortIcon></th>
36 <th style="width: 10%" i18n pSortableColumn="state">State <p-sortIcon field="state"></p-sortIcon></th>
37 <th style="width: 10%" i18n pSortableColumn="createdAt">Created <p-sortIcon field="createdAt"></p-sortIcon></th>
38 <th style="width: 10%" i18n pSortableColumn="lastSyncAt">Last synchronization at <p-sortIcon field="lastSyncAt"></p-sortIcon></th>
39 </tr>
40 </ng-template>
41
42 <ng-template pTemplate="body" let-expanded="expanded" let-videoChannelSync>
43 <tr>
44 <td class="action-cell">
45 <my-action-dropdown
46 container="body"
47 [actions]="videoChannelSyncActions" [entry]="videoChannelSync"
48 ></my-action-dropdown>
49 </td>
50
51 <td>
52 <a [href]="videoChannelSync.externalChannelUrl" target="_blank" rel="noopener noreferrer">{{ videoChannelSync.externalChannelUrl }}</a>
53 </td>
54
55 <td>
56 <div class="actor">
57 <my-actor-avatar
58 class="channel"
59 [actor]="videoChannelSync.channel" actorType="channel"
60 [internalHref]="[ '/c', videoChannelSync.channel.name ]"
61 size="25"
62 ></my-actor-avatar>
63
64 <div class="actor-info">
65 <a [routerLink]="[ '/c', videoChannelSync.channel.name ]" class="actor-names" i18n-title title="Channel page">
66 <div class="actor-display-name">{{ videoChannelSync.channel.displayName }}</div>
67 <div class="actor-name">{{ videoChannelSync.channel.name }}</div>
68 </a>
69 </div>
70 </div>
71 </td>
72
73 <td>
74 <span [ngClass]="getSyncStateClass(videoChannelSync.state.id)">
75 {{ videoChannelSync.state.label }}
76 </span>
77 </td>
78
79 <td>{{ videoChannelSync.createdAt | date: 'short' }}</td>
80 <td>{{ videoChannelSync.lastSyncAt | date: 'short' }}</td>
81 </tr>
82 </ng-template>
83</p-table>