refactor translations mapping

This commit is contained in:
FrancescoMolinaro
2024-01-11 11:23:53 +01:00
parent a370b14763
commit 75fb52731a
8 changed files with 57 additions and 43 deletions

View File

@@ -8,7 +8,10 @@
<div *ngFor="let key of notifyMessageKeys">
<div class="row mb-4">
<div class="font-weight-bold col">{{ key + '.notify-detail-modal' | translate}}</div>
<div class="col text-right">{{ notifyMessage[key] | translate }}</div>
<div class="col text-right">{{
('notify-detail-modal.' + notifyMessage[key] | translate) !== ('notify-detail-modal.' + notifyMessage[key]) ?
('notify-detail-modal.' + notifyMessage[key] | translate) :
notifyMessage[key]}}</div>
</div>
</div>
</div>

View File

@@ -25,7 +25,7 @@
<div>{{ message.activityStreamType }}</div>
</td>
<td>
<div>{{ message.queueStatusLabel | translate}}</div>
<div>{{ 'notify-detail-modal.' + message.queueStatusLabel | translate }}</div>
</td>
<td>
<div class="d-flex flex-column">

View File

@@ -13,7 +13,7 @@ import { ActivatedRoute } from '@angular/router';
import { RouterStub } from '../../../shared/testing/router.stub';
import { TranslateModule } from '@ngx-translate/core';
import { of as observableOf, of } from 'rxjs';
import { AdminNotifyMessage, QueueStatusMap } from '../models/admin-notify-message.model';
import { AdminNotifyMessage } from '../models/admin-notify-message.model';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { AdminNotifyDetailModalComponent } from '../admin-notify-detail-modal/admin-notify-detail-modal.component';
import { SearchConfigurationService } from '../../../core/shared/search/search-configuration.service';
@@ -75,13 +75,6 @@ export const mockAdminNotifyMessages = [
'relatedItem': 'test coar demo'
}
] as unknown as AdminNotifyMessage[];
export const mockUnformattedAdminNotifyMessages = mockAdminNotifyMessages.map(
message => ({
...message,
queueStatusLabel: Object.keys(QueueStatusMap)[Object.values(QueueStatusMap).indexOf(message.queueStatusLabel as unknown as QueueStatusMap)]
})
) as unknown as AdminNotifyMessage[];
describe('AdminNotifySearchResultComponent', () => {
let component: AdminNotifySearchResultComponent;
let fixture: ComponentFixture<AdminNotifySearchResultComponent>;

View File

@@ -2,7 +2,7 @@ import { Component, Inject, OnDestroy, OnInit } from '@angular/core';
import { AdminNotifySearchResult } from '../models/admin-notify-message-search-result.model';
import { ViewMode } from '../../../core/shared/view-mode.model';
import { Context } from '../../../core/shared/context.model';
import { AdminNotifyMessage, QueueStatusMap } from '../models/admin-notify-message.model';
import { AdminNotifyMessage } from '../models/admin-notify-message.model';
import {
tabulatableObjectsComponent
} from '../../../shared/object-collection/shared/tabulatable-objects/tabulatable-objects.decorator';
@@ -32,7 +32,7 @@ import { DatePipe } from '@angular/common';
})
export class AdminNotifySearchResultComponent extends TabulatableResultListElementsComponent<PaginatedList<AdminNotifySearchResult>, AdminNotifySearchResult> implements OnInit, OnDestroy{
public messagesSubject$: BehaviorSubject<AdminNotifyMessage[]> = new BehaviorSubject([]);
public reprocessStatus = QueueStatusMap.QUEUE_STATUS_QUEUED_FOR_RETRY;
public reprocessStatus = 'QUEUE_STATUS_QUEUED_FOR_RETRY';
//we check on one type of config to render specific table headers
public isInbound: boolean;

View File

@@ -6,16 +6,6 @@ import { DSpaceObject } from '../../../core/shared/dspace-object.model';
import { GenericConstructor } from '../../../core/shared/generic-constructor';
import { ListableObject } from '../../../shared/object-collection/shared/listable-object.model';
import { Observable } from 'rxjs';
export enum QueueStatusMap {
QUEUE_STATUS_PROCESSED = 'notify-queue-status.processed',
QUEUE_STATUS_FAILED = 'notify-queue-status.processed',
QUEUE_STATUS_UNMAPPED_ACTION = 'notify-queue-status.unmapped_action',
QUEUE_STATUS_QUEUED_FOR_RETRY = 'notify-queue-status.queue_retry',
QUEUE_STATUS_PROCESSING = 'notify-queue-status.processing',
QUEUE_STATUS_QUEUED = 'notify-queue-status.queued',
QUEUE_STATUS_UNTRUSTED = 'notify-queue-status.untrusted',
}
/**
* A message that includes admin notify info
*/

View File

@@ -14,9 +14,7 @@ import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.u
import { RemoteData } from '../../../core/data/remote-data';
import { RequestEntryState } from '../../../core/data/request-entry-state.model';
import {
mockAdminNotifyMessages,
mockUnformattedAdminNotifyMessages
} from '../admin-notify-search-result/admin-notify-search-result.component.spec';
mockAdminNotifyMessages} from '../admin-notify-search-result/admin-notify-search-result.component.spec';
import { take } from 'rxjs/operators';
import { deepClone } from 'fast-json-patch';
import { AdminNotifyMessage } from '../models/admin-notify-message.model';
@@ -54,7 +52,7 @@ describe('AdminNotifyMessagesService test', () => {
}
beforeEach(() => {
mockMessages = deepClone(mockUnformattedAdminNotifyMessages);
mockMessages = deepClone(mockAdminNotifyMessages);
objectCache = {} as ObjectCacheService;
notificationsService = {} as NotificationsService;
responseCacheEntry = new RequestEntry();
@@ -96,11 +94,6 @@ describe('AdminNotifyMessagesService test', () => {
expect(service).toBeDefined();
});
it('should format message labels', () => {
const formattedMessage = service.formatMessageLabels(mockMessages[0]);
expect(formattedMessage).toEqual(mockAdminNotifyMessages[0]);
});
it('should get details for messages', (done) => {
service.getDetailedMessages(mockMessages).pipe(take(1)).subscribe((detailedMessages) => {
expect(detailedMessages[0].ldnService).toEqual(testLdnServiceName);

View File

@@ -8,7 +8,7 @@ import {HALEndpointService} from '../../../core/shared/hal-endpoint.service';
import {NotificationsService} from '../../../shared/notifications/notifications.service';
import { BehaviorSubject, from, Observable, of, scan } from 'rxjs';
import { ADMIN_NOTIFY_MESSAGE } from '../models/admin-notify-message.resource-type';
import { AdminNotifyMessage, QueueStatusMap } from '../models/admin-notify-message.model';
import { AdminNotifyMessage } from '../models/admin-notify-message.model';
import { map, mergeMap, switchMap, tap } from 'rxjs/operators';
import { getAllSucceededRemoteDataPayload, getFirstCompletedRemoteData } from '../../../core/shared/operators';
import { LdnServicesService } from '../../admin-ldn-services/ldn-services-data/ldn-services-data.service';
@@ -41,21 +41,13 @@ export class AdminNotifyMessagesService extends IdentifiableDataService<AdminNot
super('messages', requestService, rdbService, objectCache, halService);
}
/**
* Map labels to readable info for user
* @param message the message to which map the labels
*/
public formatMessageLabels(message: AdminNotifyMessage): AdminNotifyMessage {
message.queueStatusLabel = QueueStatusMap[message.queueStatusLabel];
return message;
}
/**
* Add detailed information to each message
* @param messages the messages to which add detailded info
*/
public getDetailedMessages(messages: AdminNotifyMessage[]): Observable<AdminNotifyMessage[]> {
return from(messages.map(message => this.formatMessageLabels(message))).pipe(
return from(messages).pipe(
mergeMap(message =>
message.target || message.origin ? this.ldnServicesService.findById((message.target || message.origin).toString()).pipe(
getAllSucceededRemoteDataPayload(),
@@ -88,7 +80,6 @@ export class AdminNotifyMessagesService extends IdentifiableDataService<AdminNot
getFirstCompletedRemoteData(),
getAllSucceededRemoteDataPayload(),
).pipe(
map(reprocessedMessage => this.formatMessageLabels(reprocessedMessage)),
mergeMap((newMessage) => messageSubject.pipe(
map(messages => {
const messageToUpdate = messages.find(currentMessage => currentMessage.id === message.id);

View File

@@ -3519,7 +3519,51 @@
"search.filters.filter.coar_notify_type.placeholder": "COAR notify type",
"search.filters.filter.notification_type.placeholder": "Notification type",
"search.filters.filter.notification_type.placeholder": "Notification",
"search.filters.coar_notify_type.coar-notify:ReviewAction": "Review action",
"notify-detail-modal.coar-notify:ReviewAction": "Review action",
"search.filters.coar_notify_type.coar-notify:EndorsementAction": "Endorsement action",
"notify-detail-modal.coar-notify:EndorsementAction": "Endorsement action",
"search.filters.coar_notify_type.coar-notify:IngestAction": "Ingest action",
"notify-detail-modal.coar-notify:IngestAction": "Ingest action",
"search.filters.coar_notify_type.coar-notify:RelationshipAction": "Relationship action",
"notify-detail-modal.coar-notify:RelationshipAction": "Relationship action",
"search.filters.queue_status.QUEUE_STATUS_QUEUED": "Queued",
"notify-detail-modal.QUEUE_STATUS_QUEUED": "Queued",
"search.filters.queue_status.QUEUE_STATUS_QUEUED_FOR_RETRY": "Queued for retry",
"notify-detail-modal.QUEUE_STATUS_QUEUED_FOR_RETRY": "Queued for retry",
"search.filters.queue_status.QUEUE_STATUS_PROCESSING": "Processing",
"notify-detail-modal.QUEUE_STATUS_PROCESSING": "Processing",
"search.filters.queue_status.QUEUE_STATUS_PROCESSED": "Processed",
"notify-detail-modal.QUEUE_STATUS_PROCESSED": "Processed",
"search.filters.queue_status.QUEUE_STATUS_FAILED": "Failed",
"notify-detail-modal.QUEUE_STATUS_FAILED": "Failed",
"search.filters.queue_status.QUEUE_STATUS_UNTRUSTED": "Untrusted",
"notify-detail-modal.QUEUE_STATUS_UNTRUSTED": "Untrusted",
"search.filters.queue_status.QUEUE_STATUS_UNMAPPED_ACTION": "Unmapped Action",
"notify-detail-modal.QUEUE_STATUS_UNMAPPED_ACTION": "Unmapped Action",
"sorting.queue_last_start_time.DESC": "Last started queue Descending",