1 <div *
ngIf=
"error" class=
"alert alert-danger">{{ error }}
</div>
4 <my-global-icon iconName=
"refresh" aria-hidden=
"true"></my-global-icon>
5 <ng-container i18n
>My synchronizations
</ng-container>
8 <div *
ngIf=
"!syncEnabled()">
9 <p class=
"muted" i18n
>⚠️ The instance doesn't allow channel synchronization
</p>
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"
20 <ng-template pTemplate=
"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>
31 <ng-template pTemplate=
"header">
33 <th style=
"width: 10%"></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>
43 <ng-template pTemplate=
"body" let-expanded=
"expanded" let-videoChannelSync
>
45 <td class=
"action-cell">
48 [actions]=
"videoChannelSyncActions" [entry]=
"videoChannelSync"
49 ></my-action-dropdown>
53 <a [href]=
"videoChannelSync.externalChannelUrl" target=
"_blank" rel=
"noopener noreferrer">{{ videoChannelSync.externalChannelUrl }}
</a>
60 [actor]=
"videoChannelSync.channel" actorType=
"channel"
61 [internalHref]=
"[ '/c', videoChannelSync.channel.name ]"
65 <div class=
"actor-info">
66 <a [routerLink]=
"[ '/c', videoChannelSync.channel.name ]" class=
"actor-names" i18n-title
title=
"Channel page">
67 <div class=
"actor-display-name">{{ videoChannelSync.channel.displayName }}
</div>
68 <div class=
"actor-name">{{ videoChannelSync.channel.name }}
</div>
75 <span [ngClass]=
"getSyncStateClass(videoChannelSync.state.id)">
76 {{ videoChannelSync.state.label }}
80 <td>{{ videoChannelSync.createdAt | date: 'short' }}
</td>
81 <td>{{ videoChannelSync.lastSyncAt | date: 'short' }}
</td>
84 <a i18n
routerLink=
"/my-library/video-imports" [queryParams]=
"{ search: 'videoChannelSyncId:' + videoChannelSync.id }" class=
"peertube-button-link grey-button">