diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.module.ts b/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.module.ts index c75ab053c7..e111ad005f 100644 --- a/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.module.ts +++ b/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.module.ts @@ -28,7 +28,7 @@ const ENTRY_COMPONENTS = [ SharedModule, AdminNotifyDashboardRoutingModule, SearchModule, - SearchPageModule, + SearchPageModule ], providers: [ AdminNotifyMessagesService, diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-detail-modal/admin-notify-detail-modal.component.html b/src/app/admin/admin-notify-dashboard/admin-notify-detail-modal/admin-notify-detail-modal.component.html index 4f4e3d85c1..de74fbba9e 100644 --- a/src/app/admin/admin-notify-dashboard/admin-notify-detail-modal/admin-notify-detail-modal.component.html +++ b/src/app/admin/admin-notify-dashboard/admin-notify-detail-modal/admin-notify-detail-modal.component.html @@ -11,4 +11,12 @@
{{'notify-detail-modal.' + notifyMessage[key] | translate: {default: notifyMessage[key] ?? "n/a" } }}
+ +
+ +
+ +

 
diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-detail-modal/admin-notify-detail-modal.component.ts b/src/app/admin/admin-notify-dashboard/admin-notify-detail-modal/admin-notify-detail-modal.component.ts
index ae9ad34c8a..6ac187fab9 100644
--- a/src/app/admin/admin-notify-dashboard/admin-notify-detail-modal/admin-notify-detail-modal.component.ts
+++ b/src/app/admin/admin-notify-dashboard/admin-notify-detail-modal/admin-notify-detail-modal.component.ts
@@ -3,10 +3,14 @@ import { AdminNotifyMessage } from '../models/admin-notify-message.model';
 import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
 import { TranslateService } from '@ngx-translate/core';
 import { MissingTranslationHelper } from '../../../shared/translate/missing-translation.helper';
+import { fadeIn } from '../../../shared/animations/fade';
 
 @Component({
   selector: 'ds-admin-notify-detail-modal',
   templateUrl: './admin-notify-detail-modal.component.html',
+  animations: [
+    fadeIn
+  ]
 })
 export class AdminNotifyDetailModalComponent {
   @Input() notifyMessage: AdminNotifyMessage;
@@ -18,6 +22,8 @@ export class AdminNotifyDetailModalComponent {
   @Output()
   response = new EventEmitter();
 
+  public isCoarMessageVisible = false;
+
 
   constructor(protected activeModal: NgbActiveModal,
               public translationsService: TranslateService) {
@@ -32,4 +38,8 @@ export class AdminNotifyDetailModalComponent {
     this.activeModal.close();
     this.response.emit(true);
   }
+
+  toggleCoarMessage() {
+    this.isCoarMessageVisible = !this.isCoarMessageVisible;
+  }
 }
diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-search-result/admin-notify-search-result.component.scss b/src/app/admin/admin-notify-dashboard/admin-notify-search-result/admin-notify-search-result.component.scss
deleted file mode 100644
index 290f66fa6f..0000000000
--- a/src/app/admin/admin-notify-dashboard/admin-notify-search-result/admin-notify-search-result.component.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-.table-responsive {
-  th, td {
-    padding: 0.5rem !important;
-  }
-}
diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-search-result/admin-notify-search-result.component.ts b/src/app/admin/admin-notify-dashboard/admin-notify-search-result/admin-notify-search-result.component.ts
index 59fb4ca4e0..a813599745 100644
--- a/src/app/admin/admin-notify-dashboard/admin-notify-search-result/admin-notify-search-result.component.ts
+++ b/src/app/admin/admin-notify-dashboard/admin-notify-search-result/admin-notify-search-result.component.ts
@@ -22,7 +22,6 @@ import { DatePipe } from '@angular/common';
 @Component({
   selector: 'ds-admin-notify-search-result',
   templateUrl: './admin-notify-search-result.component.html',
-  styleUrls: ['./admin-notify-search-result.component.scss'],
   providers: [
     {
       provide: SEARCH_CONFIG_SERVICE,
@@ -50,6 +49,26 @@ export class AdminNotifySearchResultComponent extends TabulatableResultListEleme
 
   private dateTypeKeys: string[] = ['queueLastStartTime', 'queueTimeout'];
 
+  /**
+   * Keys to be not shown in detail
+   * @private
+   */
+  private hiddenKeys: string[] = [
+    'target',
+    'object',
+    'context',
+    'origin',
+    '_links',
+    'metadata',
+    'thumbnail',
+    'item',
+    'accessStatus',
+    'queueStatus',
+    'notificationId',
+    'notificationType',
+    'message'
+  ];
+
   /**
    * The format for the date values
    * @private
@@ -83,27 +102,19 @@ export class AdminNotifySearchResultComponent extends TabulatableResultListEleme
    * Open modal for details visualization
    * @param message the message to be displayed
    */
-  openDetailModal(message: AdminNotifyMessage) {
+  openDetailModal(notifyMessage: AdminNotifyMessage) {
     const modalRef = this.modalService.open(AdminNotifyDetailModalComponent);
-    const messageToOpen = {...message};
-    // we delete not necessary or not readable keys
-    delete messageToOpen.target;
-    delete messageToOpen.object;
-    delete messageToOpen.context;
-    delete messageToOpen.origin;
-    delete messageToOpen._links;
-    delete messageToOpen.metadata;
-    delete messageToOpen.thumbnail;
-    delete messageToOpen.item;
-    delete messageToOpen.accessStatus;
-    delete messageToOpen.queueStatus;
+    const messageToOpen = {...notifyMessage};
+    // we exclude not necessary or not readable keys
+    const messageKeys = Object.keys(messageToOpen).filter(key => !this.hiddenKeys.includes(key));
 
-    const messageKeys = Object.keys(messageToOpen);
     messageKeys.forEach(key => {
       if (this.dateTypeKeys.includes(key)) {
         messageToOpen[key] = this.datePipe.transform(messageToOpen[key], this.dateFormat);
       }
     });
+    // format COAR message for technical visualization
+    messageToOpen.message = JSON.stringify(JSON.parse(notifyMessage.message), null, 2);
 
     modalRef.componentInstance.notifyMessage = messageToOpen;
     modalRef.componentInstance.notifyMessageKeys = messageKeys;
diff --git a/src/app/admin/admin-notify-dashboard/models/admin-notify-message.model.ts b/src/app/admin/admin-notify-dashboard/models/admin-notify-message.model.ts
index 72fe58eacb..4e81dd3f2d 100644
--- a/src/app/admin/admin-notify-dashboard/models/admin-notify-message.model.ts
+++ b/src/app/admin/admin-notify-dashboard/models/admin-notify-message.model.ts
@@ -68,6 +68,12 @@ export class AdminNotifyMessage extends DSpaceObject {
   @autoserialize
   context: string;
 
+  /**
+   * The related COAR message
+   */
+  @autoserialize
+  message: string;
+
   /**
    * The attempts of the queue
    */
diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5
index d9f4df20cb..8121bbb971 100644
--- a/src/assets/i18n/en.json5
+++ b/src/assets/i18n/en.json5
@@ -3499,6 +3499,28 @@
 
   "search.filters.filter.activity_stream_type.label": "Search activity stream type",
 
+  "search.filters.applied.f.queue_status": "Queue Status",
+
+  "search.filters.queue_status.1,authority": "Queued",
+
+  "search.filters.queue_status.2,authority": "Processing",
+
+  "search.filters.queue_status.3,authority": "Processed",
+
+  "search.filters.queue_status.4,authority": "Failed",
+
+  "search.filters.queue_status.5,authority": "Untrusted",
+
+  "search.filters.queue_status.6,authority": "Unmapped Action",
+
+  "search.filters.queue_status.7,authority": "Queued for retry",
+
+  "search.filters.applied.f.activity_stream_type": "Activity stream type",
+
+  "search.filters.applied.f.coar_notify_type": "COAR Notify type",
+
+  "search.filters.applied.f.notification_type": "Notification type",
+
   "search.filters.filter.coar_notify_type.label": "Search COAR Notify type",
 
   "search.filters.filter.notification_type.label": "Search notification type",
@@ -3525,18 +3547,26 @@
 
   "search.filters.coar_notify_type.coar-notify:ReviewAction": "Review action",
 
+  "search.filters.coar_notify_type.coar-notify:ReviewAction,authority": "Review action",
+
   "notify-detail-modal.coar-notify:ReviewAction": "Review action",
 
   "search.filters.coar_notify_type.coar-notify:EndorsementAction": "Endorsement action",
 
+  "search.filters.coar_notify_type.coar-notify:EndorsementAction,authority": "Endorsement action",
+
   "notify-detail-modal.coar-notify:EndorsementAction": "Endorsement action",
 
   "search.filters.coar_notify_type.coar-notify:IngestAction": "Ingest action",
 
+  "search.filters.coar_notify_type.coar-notify:IngestAction,authority": "Ingest action",
+
   "notify-detail-modal.coar-notify:IngestAction": "Ingest action",
 
   "search.filters.coar_notify_type.coar-notify:RelationshipAction": "Relationship action",
 
+  "search.filters.coar_notify_type.coar-notify:RelationshipAction,authority": "Relationship action",
+
   "notify-detail-modal.coar-notify:RelationshipAction": "Relationship action",
 
   "search.filters.queue_status.QUEUE_STATUS_QUEUED": "Queued",
@@ -3603,6 +3633,8 @@
 
   "notify-message-modal.title": "Message Detail",
 
+  "notify-message-modal.show-more": "Show more",
+
   "notify-message-result.timestamp": "Timestamp",
 
   "notify-message-result.repositoryItem": "Repository Item",