1 <h1 class=
"d-flex justify-content-between">
3 <my-global-icon iconName=
"cloud-download" aria-hidden=
"true"></my-global-icon>
4 <ng-container i18n
>My imports
</ng-container>
7 <a routerLink=
"/my-library/video-channel-syncs" class=
"button-link">
8 <my-global-icon iconName=
"repeat" aria-hidden=
"true"></my-global-icon>
9 <ng-container i18n
>My synchronizations
</ng-container>
13 <div class=
"mb-4 d-flex justify-content-between">
14 <my-advanced-input-filter (search)=
"onSearch($event)"></my-advanced-input-filter>
18 [value]=
"videoImports" [lazy]=
"true" [paginator]=
"totalRecords > 0" [totalRecords]=
"totalRecords" [rows]=
"rowsPerPage" [first]=
"pagination.start"
19 [rowsPerPageOptions]=
"rowsPerPageOptions" [sortField]=
"sort.field" [sortOrder]=
"sort.order" (onLazyLoad)=
"loadLazy($event)" [lazyLoadOnInit]=
"false" dataKey=
"id"
20 [showCurrentPageReport]=
"true" i18n-currentPageReportTemplate
21 currentPageReportTemplate=
"Showing {{'{first}'}} to {{'{last}'}} of {{'{totalRecords}'}} imports"
22 [expandedRowKeys]=
"expandedRows"
24 <ng-template pTemplate=
"header">
26 <th style=
"width: 40px;"></th>
27 <th style=
"width: 200px">Action
</th>
28 <th style=
"width: 45%" i18n
>Target
</th>
29 <th style=
"width: 55%" i18n
>Video
</th>
30 <th style=
"width: 150px" i18n
>State
</th>
31 <th style=
"width: 150px" i18n
pSortableColumn=
"createdAt">Created
<p-sortIcon field=
"createdAt"></p-sortIcon></th>
35 <ng-template pTemplate=
"body" let-expanded=
"expanded" let-videoImport
>
37 <td class=
"expand-cell" [pRowToggler]=
"videoImport">
38 <my-table-expander-icon *
ngIf=
"videoImport.error" [expanded]=
"expanded"></my-table-expander-icon>
41 <td class=
"action-cell">
42 <my-button *
ngIf=
"isVideoImportPending(videoImport)" i18n-label
label=
"Cancel" icon=
"no" (click)=
"cancelImport(videoImport)"></my-button>
43 <my-delete-button *
ngIf=
"isVideoImportFailed(videoImport) || isVideoImportCancelled(videoImport) || !videoImport.video" (click)=
"deleteImport(videoImport)"></my-delete-button>
44 <my-edit-button *
ngIf=
"isVideoImportSuccess(videoImport) && videoImport.video" [routerLink]=
"getEditVideoUrl(videoImport.video)"></my-edit-button>
48 <a *
ngIf=
"videoImport.targetUrl; else torrent" [href]=
"videoImport.targetUrl" target=
"_blank" rel=
"noopener noreferrer">{{ videoImport.targetUrl }}
</a>
49 <ng-template #torrent
>
50 <span [title]=
"videoImport.torrentName || videoImport.magnetUri">{{ videoImport.torrentName || videoImport.magnetUri }}
</span>
55 <ng-container *
ngIf=
"isVideoImportPending(videoImport)">{{ videoImport.video?.name }}
</ng-container>
56 <ng-container *
ngIf=
"isVideoImportSuccess(videoImport) && videoImport.video">
57 <a [href]=
"getVideoUrl(videoImport.video)" target=
"_blank" rel=
"noopener noreferrer">{{ videoImport.video?.name }}
</a>
59 <ng-container *
ngIf=
"isVideoImportSuccess(videoImport) && !videoImport.video" i18n
>This video was deleted
</ng-container>
60 <ng-container *
ngIf=
"isVideoImportFailed(videoImport)"></ng-container>
64 <span class=
"pt-badge" [ngClass]=
"getVideoImportStateClass(videoImport.state.id)">
65 {{ videoImport.state.label }}
69 <td>{{ videoImport.createdAt | date: 'short' }}
</td>
73 <ng-template pTemplate=
"rowexpansion" let-videoImport
>
74 <tr class=
"video-import-error" *
ngIf=
"videoImport.error">
76 <pre>{{ videoImport.error }}
</pre>