1 @if (executingTasks.length > 0) {
3 class="notification-section-heading"
8 @for (task of executingTasks; track task.begin_time) {
9 <div class="notification-wrapper">
10 <div class="notification-item task-item">
11 <cd-icon type="infoCircle"></cd-icon>
13 <div class="notification-content">
14 <div class="notification-title">
15 {{ task.description }}
20 [value]="task.progress || 0"
26 <div class="task-row">
27 <span class="notification-timestamp">
28 {{ task.begin_time | relativeDate }}
31 <span class="task-progress">
32 {{ task.progress || 0 }} %
38 <div class="notification-divider"></div>
44 #notificationItemTemplate
45 let-notification="notification"
47 <div class="notification-wrapper">
48 <div class="notification-item">
50 id="notification-icon"
51 [type]="notificationIconMap[notification.type] || notificationIconMap['default']">
54 <div class="notification-content">
55 <div class="notification-timestamp">
56 {{ notification.timestamp | relativeDate }}
58 <div class="notification-title">
59 {{ notification.title }}
62 class="notification-message"
63 [innerHTML]="notification.message | sanitizeHtml">
70 class="notification-close"
71 (click)="removeNotification(notification, $event)">
72 <cd-icon type="destroy"></cd-icon>
77 <div class="notification-divider"></div>
82 @if (todayNotifications.length > 0) {
84 class="notification-section-heading"
89 @for (notification of todayNotifications; track notification.timestamp; let last = $last) {
91 *ngTemplateOutlet="notificationItemTemplate;
92 context: { notification: notification, last: last }">
97 @if (previousNotifications.length > 0) {
99 class="notification-section-heading"
104 @for (notification of previousNotifications; track notification.timestamp; let last = $last) {
106 *ngTemplateOutlet="notificationItemTemplate;
107 context: { notification: notification, last: last }">
112 @if (todayNotifications.length === 0 && previousNotifications.length === 0) {
113 <div class="notification-empty">
114 <div i18n>No notifications</div>