fix lint, fix aggregate count, add translations

This commit is contained in:
FrancescoMolinaro
2023-12-29 12:23:45 +01:00
parent fec6550cba
commit 01a41570d6
13 changed files with 110 additions and 69 deletions

View File

@@ -8,7 +8,7 @@
<a ngbNavLink>{{'admin-notify-dashboard.metrics' | translate}}</a>
<ng-template ngbNavContent>
<div id="metrics">
<ds-admin-notify-metrics [boxesConfig]="notifyMetricsRows$ | async"></ds-admin-notify-metrics>
<ds-admin-notify-metrics *ngIf="(notifyMetricsRows$ | async)?.length" [boxesConfig]="notifyMetricsRows$ | async"></ds-admin-notify-metrics>
</div>
</ng-template>
</li>

View File

@@ -1,20 +1,20 @@
import { Component, OnInit } from '@angular/core';
import { SearchService } from "../../core/shared/search/search.service";
import { environment } from "../../../environments/environment";
import { PaginatedSearchOptions } from "../../shared/search/models/paginated-search-options.model";
import { PaginationComponentOptions } from "../../shared/pagination/pagination-component-options.model";
import { SearchService } from '../../core/shared/search/search.service';
import { environment } from '../../../environments/environment';
import { PaginatedSearchOptions } from '../../shared/search/models/paginated-search-options.model';
import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model';
import {
listableObjectComponent
} from "../../shared/object-collection/shared/listable-object/listable-object.decorator";
import { ViewMode } from "../../core/shared/view-mode.model";
import { Context } from "../../core/shared/context.model";
import { AdminNotifySearchResult } from "./models/admin-notify-message-search-result.model";
import { forkJoin, Observable } from "rxjs";
import { getFirstCompletedRemoteData } from "../../core/shared/operators";
import { map } from "rxjs/operators";
import { SearchObjects } from "../../shared/search/models/search-objects.model";
import { AdminNotifyMetricsBox, AdminNotifyMetricsRow } from "./admin-notify-metrics/admin-notify-metrics.model";
import { DSpaceObject } from "../../core/shared/dspace-object.model";
} from '../../shared/object-collection/shared/listable-object/listable-object.decorator';
import { ViewMode } from '../../core/shared/view-mode.model';
import { Context } from '../../core/shared/context.model';
import { AdminNotifySearchResult } from './models/admin-notify-message-search-result.model';
import { forkJoin, Observable } from 'rxjs';
import { getFirstCompletedRemoteData } from '../../core/shared/operators';
import { map } from 'rxjs/operators';
import { SearchObjects } from '../../shared/search/models/search-objects.model';
import { AdminNotifyMetricsBox, AdminNotifyMetricsRow } from './admin-notify-metrics/admin-notify-metrics.model';
import { DSpaceObject } from '../../core/shared/dspace-object.model';
@listableObjectComponent(AdminNotifySearchResult, ViewMode.GridElement, Context.AdminSearch)
@@ -25,7 +25,7 @@ import { DSpaceObject } from "../../core/shared/dspace-object.model";
})
export class AdminNotifyDashboardComponent implements OnInit{
public notifyMetricsRows$: Observable<AdminNotifyMetricsRow[]>
public notifyMetricsRows$: Observable<AdminNotifyMetricsRow[]>;
private metricsConfig = environment.notifyMetrics;
private singleResultOptions = Object.assign(new PaginationComponentOptions(), {
@@ -52,7 +52,7 @@ export class AdminNotifyDashboardComponent implements OnInit{
)
).pipe(
map(metricBoxes => this.mapUpdatedBoxesToMetricsRows(metricBoxes))
)
);
}
/**
@@ -61,30 +61,47 @@ export class AdminNotifyDashboardComponent implements OnInit{
* @param searchObject The object to map
* @private
*/
private mapSearchObjectsToMetricsBox(searchObject: SearchObjects<DSpaceObject>) : AdminNotifyMetricsBox {
const objectConfig = searchObject.configuration;
private mapSearchObjectsToMetricsBox(searchObject: SearchObjects<DSpaceObject>): AdminNotifyMetricsBox {
const count = searchObject.pageInfo.totalElements;
const objectConfig = searchObject.configuration;
const metricsBoxes = [].concat(...this.metricsConfig.map((config) => config.boxes));
return {
...metricsBoxes.find(box => box.config === objectConfig),
count
}
};
}
/**
* Function to map updated boxes with count to each row of the configuration
*
* @param boxes The object to map
* @param boxesWithCount The object to map
* @private
*/
private mapUpdatedBoxesToMetricsRows(boxes: AdminNotifyMetricsBox[]) : AdminNotifyMetricsRow[] {
private mapUpdatedBoxesToMetricsRows(boxesWithCount: AdminNotifyMetricsBox[]): AdminNotifyMetricsRow[] {
return this.metricsConfig.map(row => {
return {
...row,
boxes: row.boxes.map(box => boxes.find(boxWithCount => boxWithCount.config === box.config))
.filter(box => !!box)
boxes: row.boxes.map(rowBox => {
if (rowBox.isRowAggregateCount) {
const currentRowBoxesWithCount = row.boxes.filter(box => !box.isRowAggregateCount)
.map(notAggregateBox => {
return {
...notAggregateBox,
count: boxesWithCount.find(boxWithCount => boxWithCount.config === notAggregateBox.config)?.count
}
})
return {
...rowBox,
count: currentRowBoxesWithCount.map(box => box.count).reduce((accumulator, currentValue) => {
return accumulator + currentValue;
},0)
};
} else {
return boxesWithCount.find(boxWithCount => boxWithCount.config === rowBox.config);
}
})
};
});
}
}

View File

@@ -1 +0,0 @@
<p>admin-notify-logs works!</p>

View File

@@ -3,7 +3,8 @@ export interface AdminNotifyMetricsBox {
textColor?: string;
title: string;
config: string;
count?: number
count?: number;
isRowAggregateCount?: boolean;
}
export interface AdminNotifyMetricsRow {

View File

@@ -1,6 +1,6 @@
import { AdminNotifyMessage } from "./admin-notify-message.model";
import { searchResultFor } from "../../../shared/search/search-result-element-decorator";
import { SearchResult } from "../../../shared/search/models/search-result.model";
import { AdminNotifyMessage } from './admin-notify-message.model';
import { searchResultFor } from '../../../shared/search/search-result-element-decorator';
import { SearchResult } from '../../../shared/search/models/search-result.model';
@searchResultFor(AdminNotifyMessage)

View File

@@ -1,8 +1,8 @@
import { deserialize, inheritSerialization } from 'cerialize';
import { typedObject } from "../../../core/cache/builders/build-decorators";
import { ADMIN_NOTIFY_MESSAGE } from "./admin-notify-message.resource-type";
import { excludeFromEquals } from "../../../core/utilities/equals.decorators";
import { DSpaceObject } from "../../../core/shared/dspace-object.model";
import { typedObject } from '../../../core/cache/builders/build-decorators';
import { ADMIN_NOTIFY_MESSAGE } from './admin-notify-message.resource-type';
import { excludeFromEquals } from '../../../core/utilities/equals.decorators';
import { DSpaceObject } from '../../../core/shared/dspace-object.model';
/**
* A message that includes admin notify info

View File

@@ -1,4 +1,4 @@
import { ResourceType } from "../../../core/shared/resource-type";
import { ResourceType } from '../../../core/shared/resource-type';
/**
* The resource type for AdminNotifyMessage

View File

@@ -197,7 +197,7 @@ import {
import { SubmissionCoarNotifyConfig } from '../submission/sections/section-coar-notify/submission-coar-notify.config';
import { NotifyRequestsStatus } from '../item-page/simple/notify-requests-status/notify-requests-status.model';
import { NotifyRequestsStatusDataService } from './data/notify-services-status-data.service';
import { AdminNotifyMessage } from "../admin/admin-notify-dashboard/models/admin-notify-message.model";
import { AdminNotifyMessage } from '../admin/admin-notify-dashboard/models/admin-notify-message.model';
/**

View File

@@ -1,7 +1,7 @@
import { Component, Input } from '@angular/core';
import {
AdminNotifyMetricsBox
} from "../../admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.model";
} from '../../admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.model';
@Component({
selector: 'ds-notification-box',

View File

@@ -3449,6 +3449,26 @@
"admin-notify-dashboard.logs": "Notify logs",
"admin-notify-dashboard.received-ldn": "Number of received LDN",
"admin-notify-dashboard.generated-ldn": "Number of generated LDN",
"admin-notify-dashboard.accepted": "Accepted",
"admin-notify-dashboard.processed": "Processed LDN",
"admin-notify-dashboard.failure": "Failure",
"admin-notify-dashboard.untrusted": "Untrusted",
"admin-notify-dashboard.delivered": "Delivered",
"admin-notify-dashboard.queued": "Queued",
"admin-notify-dashboard.queued-for-retry": "Queued for retry",
"admin-notify-dashboard.involved-items": "Involved items",
"admin.notify.dashboard.breadcrumbs": "Dashboard",
"orgunit.listelement.badge": "Organizational Unit",

View File

@@ -25,7 +25,7 @@ import { FilterVocabularyConfig } from './filter-vocabulary-config';
import { DiscoverySortConfig } from './discovery-sort.config';
import {
AdminNotifyMetricsRow
} from "../app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.model";
} from '../app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.model';
interface AppConfig extends Config {
ui: UIServerConfig;

View File

@@ -25,7 +25,7 @@ import { FilterVocabularyConfig } from './filter-vocabulary-config';
import { DiscoverySortConfig } from './discovery-sort.config';
import {
AdminNotifyMetricsRow
} from "../app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.model";
} from '../app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.model';
export class DefaultAppConfig implements AppConfig {
production = false;
@@ -449,66 +449,68 @@ export class DefaultAppConfig implements AppConfig {
notifyMetrics: AdminNotifyMetricsRow[] = [
{
title: 'Number of received LDN',
title: 'admin-notify-dashboard.received-ldn',
boxes: [
{
color: '#B8DAFF',
title: 'Accepted',
title: 'admin-notify-dashboard.accepted',
config: 'NOTIFY.incoming.accepted'
},
{
color: '#D4EDDA',
title: 'Processed LDN',
title: 'admin-notify-dashboard.processed',
config: 'NOTIFY.incoming.processed'
},
{
color: '#FDBBC7',
title: 'Failure',
title: 'admin-notify-dashboard.failure',
config: 'NOTIFY.incoming.failure'
},
{
color: '#FDBBC7',
title: 'Untrusted',
title: 'admin-notify-dashboard.untrusted',
config: 'NOTIFY.incoming.untrusted'
},
{
color: '#43515F',
title: 'Involved items',
title: 'admin-notify-dashboard.involved-items',
textColor: '#fff',
config: ''
config: '',
isRowAggregateCount: true
},
]
},
{
title: 'Number of generated LDN',
title: 'admin-notify-dashboard.generated-ldn',
boxes: [
{
color: '#D4EDDA',
title: 'Delivered',
title: 'admin-notify-dashboard.delivered',
config: 'NOTIFY.outgoing.delivered'
},
{
color: '#B8DAFF',
title: 'Queued',
title: 'admin-notify-dashboard.queued',
config: 'NOTIFY.outgoing.queued'
},
{
color: '#FDEEBB',
title: 'Queued for retry',
title: 'admin-notify-dashboard.queued-for-retry',
config: 'NOTIFY.outgoing.queued_for_retry'
},
{
color: '#FDBBC7',
title: 'Failure',
title: 'admin-notify-dashboard.failure',
config: 'NOTIFY.outgoing.failure'
},
{
color: '#43515F',
title: 'Involved items',
title: 'admin-notify-dashboard.involved-items',
textColor: '#fff',
config: ''
config: '',
isRowAggregateCount: true
},
]
}
]
];
}

View File

@@ -321,64 +321,66 @@ export const environment: BuildConfig = {
notifyMetrics: [
{
title: 'Number of received LDN',
title: 'admin-notify-dashboard.received-ldn',
boxes: [
{
color: '#B8DAFF',
title: 'Accepted',
title: 'admin-notify-dashboard.accepted',
config: 'NOTIFY.incoming.accepted'
},
{
color: '#D4EDDA',
title: 'Processed LDN',
title: 'admin-notify-dashboard.processed',
config: 'NOTIFY.incoming.processed'
},
{
color: '#FDBBC7',
title: 'Failure',
title: 'admin-notify-dashboard.failure',
config: 'NOTIFY.incoming.failure'
},
{
color: '#FDBBC7',
title: 'Untrusted',
title: 'admin-notify-dashboard.untrusted',
config: 'NOTIFY.incoming.untrusted'
},
{
color: '#43515F',
title: 'Incoming LDM messages',
title: 'admin-notify-dashboard.involved-items',
textColor: '#fff',
config: ''
config: '',
isRowAggregateCount: true
},
]
},
{
title: 'Number of generated LDN',
title: 'admin-notify-dashboard.generated-ldn',
boxes: [
{
color: '#D4EDDA',
title: 'Delivered',
title: 'admin-notify-dashboard.delivered',
config: 'NOTIFY.outgoing.delivered'
},
{
color: '#B8DAFF',
title: 'Queued',
title: 'admin-notify-dashboard.queued',
config: 'NOTIFY.outgoing.queued'
},
{
color: '#FDEEBB',
title: 'Queued for retry',
title: 'admin-notify-dashboard.queued-for-retry',
config: 'NOTIFY.outgoing.queued_for_retry'
},
{
color: '#FDBBC7',
title: 'Failure',
title: 'admin-notify-dashboard.failure',
config: 'NOTIFY.outgoing.failure'
},
{
color: '#43515F',
title: 'Outgoing LDM messages',
title: 'admin-notify-dashboard.involved-items',
textColor: '#fff',
config: ''
config: '',
isRowAggregateCount: true
},
]
}