mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-17 15:03:07 +00:00
fix lint, fix aggregate count, add translations
This commit is contained in:
@@ -8,7 +8,7 @@
|
|||||||
<a ngbNavLink>{{'admin-notify-dashboard.metrics' | translate}}</a>
|
<a ngbNavLink>{{'admin-notify-dashboard.metrics' | translate}}</a>
|
||||||
<ng-template ngbNavContent>
|
<ng-template ngbNavContent>
|
||||||
<div id="metrics">
|
<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>
|
</div>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</li>
|
</li>
|
||||||
|
@@ -1,20 +1,20 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { SearchService } from "../../core/shared/search/search.service";
|
import { SearchService } from '../../core/shared/search/search.service';
|
||||||
import { environment } from "../../../environments/environment";
|
import { environment } from '../../../environments/environment';
|
||||||
import { PaginatedSearchOptions } from "../../shared/search/models/paginated-search-options.model";
|
import { PaginatedSearchOptions } from '../../shared/search/models/paginated-search-options.model';
|
||||||
import { PaginationComponentOptions } from "../../shared/pagination/pagination-component-options.model";
|
import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model';
|
||||||
import {
|
import {
|
||||||
listableObjectComponent
|
listableObjectComponent
|
||||||
} from "../../shared/object-collection/shared/listable-object/listable-object.decorator";
|
} from '../../shared/object-collection/shared/listable-object/listable-object.decorator';
|
||||||
import { ViewMode } from "../../core/shared/view-mode.model";
|
import { ViewMode } from '../../core/shared/view-mode.model';
|
||||||
import { Context } from "../../core/shared/context.model";
|
import { Context } from '../../core/shared/context.model';
|
||||||
import { AdminNotifySearchResult } from "./models/admin-notify-message-search-result.model";
|
import { AdminNotifySearchResult } from './models/admin-notify-message-search-result.model';
|
||||||
import { forkJoin, Observable } from "rxjs";
|
import { forkJoin, Observable } from 'rxjs';
|
||||||
import { getFirstCompletedRemoteData } from "../../core/shared/operators";
|
import { getFirstCompletedRemoteData } from '../../core/shared/operators';
|
||||||
import { map } from "rxjs/operators";
|
import { map } from 'rxjs/operators';
|
||||||
import { SearchObjects } from "../../shared/search/models/search-objects.model";
|
import { SearchObjects } from '../../shared/search/models/search-objects.model';
|
||||||
import { AdminNotifyMetricsBox, AdminNotifyMetricsRow } from "./admin-notify-metrics/admin-notify-metrics.model";
|
import { AdminNotifyMetricsBox, AdminNotifyMetricsRow } from './admin-notify-metrics/admin-notify-metrics.model';
|
||||||
import { DSpaceObject } from "../../core/shared/dspace-object.model";
|
import { DSpaceObject } from '../../core/shared/dspace-object.model';
|
||||||
|
|
||||||
|
|
||||||
@listableObjectComponent(AdminNotifySearchResult, ViewMode.GridElement, Context.AdminSearch)
|
@listableObjectComponent(AdminNotifySearchResult, ViewMode.GridElement, Context.AdminSearch)
|
||||||
@@ -25,7 +25,7 @@ import { DSpaceObject } from "../../core/shared/dspace-object.model";
|
|||||||
})
|
})
|
||||||
export class AdminNotifyDashboardComponent implements OnInit{
|
export class AdminNotifyDashboardComponent implements OnInit{
|
||||||
|
|
||||||
public notifyMetricsRows$: Observable<AdminNotifyMetricsRow[]>
|
public notifyMetricsRows$: Observable<AdminNotifyMetricsRow[]>;
|
||||||
|
|
||||||
private metricsConfig = environment.notifyMetrics;
|
private metricsConfig = environment.notifyMetrics;
|
||||||
private singleResultOptions = Object.assign(new PaginationComponentOptions(), {
|
private singleResultOptions = Object.assign(new PaginationComponentOptions(), {
|
||||||
@@ -52,7 +52,7 @@ export class AdminNotifyDashboardComponent implements OnInit{
|
|||||||
)
|
)
|
||||||
).pipe(
|
).pipe(
|
||||||
map(metricBoxes => this.mapUpdatedBoxesToMetricsRows(metricBoxes))
|
map(metricBoxes => this.mapUpdatedBoxesToMetricsRows(metricBoxes))
|
||||||
)
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -61,30 +61,47 @@ export class AdminNotifyDashboardComponent implements OnInit{
|
|||||||
* @param searchObject The object to map
|
* @param searchObject The object to map
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
private mapSearchObjectsToMetricsBox(searchObject: SearchObjects<DSpaceObject>) : AdminNotifyMetricsBox {
|
private mapSearchObjectsToMetricsBox(searchObject: SearchObjects<DSpaceObject>): AdminNotifyMetricsBox {
|
||||||
const objectConfig = searchObject.configuration;
|
|
||||||
const count = searchObject.pageInfo.totalElements;
|
const count = searchObject.pageInfo.totalElements;
|
||||||
|
const objectConfig = searchObject.configuration;
|
||||||
const metricsBoxes = [].concat(...this.metricsConfig.map((config) => config.boxes));
|
const metricsBoxes = [].concat(...this.metricsConfig.map((config) => config.boxes));
|
||||||
|
|
||||||
return {
|
return {
|
||||||
...metricsBoxes.find(box => box.config === objectConfig),
|
...metricsBoxes.find(box => box.config === objectConfig),
|
||||||
count
|
count
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function to map updated boxes with count to each row of the configuration
|
* 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
|
||||||
*/
|
*/
|
||||||
private mapUpdatedBoxesToMetricsRows(boxes: AdminNotifyMetricsBox[]) : AdminNotifyMetricsRow[] {
|
private mapUpdatedBoxesToMetricsRows(boxesWithCount: AdminNotifyMetricsBox[]): AdminNotifyMetricsRow[] {
|
||||||
return this.metricsConfig.map(row => {
|
return this.metricsConfig.map(row => {
|
||||||
return {
|
return {
|
||||||
...row,
|
...row,
|
||||||
boxes: row.boxes.map(box => boxes.find(boxWithCount => boxWithCount.config === box.config))
|
boxes: row.boxes.map(rowBox => {
|
||||||
.filter(box => !!box)
|
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);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
};
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
<p>admin-notify-logs works!</p>
|
|
||||||
|
@@ -3,7 +3,8 @@ export interface AdminNotifyMetricsBox {
|
|||||||
textColor?: string;
|
textColor?: string;
|
||||||
title: string;
|
title: string;
|
||||||
config: string;
|
config: string;
|
||||||
count?: number
|
count?: number;
|
||||||
|
isRowAggregateCount?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface AdminNotifyMetricsRow {
|
export interface AdminNotifyMetricsRow {
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
import { AdminNotifyMessage } from "./admin-notify-message.model";
|
import { AdminNotifyMessage } from './admin-notify-message.model';
|
||||||
import { searchResultFor } from "../../../shared/search/search-result-element-decorator";
|
import { searchResultFor } from '../../../shared/search/search-result-element-decorator';
|
||||||
import { SearchResult } from "../../../shared/search/models/search-result.model";
|
import { SearchResult } from '../../../shared/search/models/search-result.model';
|
||||||
|
|
||||||
|
|
||||||
@searchResultFor(AdminNotifyMessage)
|
@searchResultFor(AdminNotifyMessage)
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
import { deserialize, inheritSerialization } from 'cerialize';
|
import { deserialize, inheritSerialization } from 'cerialize';
|
||||||
import { typedObject } from "../../../core/cache/builders/build-decorators";
|
import { typedObject } from '../../../core/cache/builders/build-decorators';
|
||||||
import { ADMIN_NOTIFY_MESSAGE } from "./admin-notify-message.resource-type";
|
import { ADMIN_NOTIFY_MESSAGE } from './admin-notify-message.resource-type';
|
||||||
import { excludeFromEquals } from "../../../core/utilities/equals.decorators";
|
import { excludeFromEquals } from '../../../core/utilities/equals.decorators';
|
||||||
import { DSpaceObject } from "../../../core/shared/dspace-object.model";
|
import { DSpaceObject } from '../../../core/shared/dspace-object.model';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A message that includes admin notify info
|
* A message that includes admin notify info
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
import { ResourceType } from "../../../core/shared/resource-type";
|
import { ResourceType } from '../../../core/shared/resource-type';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The resource type for AdminNotifyMessage
|
* The resource type for AdminNotifyMessage
|
||||||
|
@@ -197,7 +197,7 @@ import {
|
|||||||
import { SubmissionCoarNotifyConfig } from '../submission/sections/section-coar-notify/submission-coar-notify.config';
|
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 { NotifyRequestsStatus } from '../item-page/simple/notify-requests-status/notify-requests-status.model';
|
||||||
import { NotifyRequestsStatusDataService } from './data/notify-services-status-data.service';
|
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';
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import { Component, Input } from '@angular/core';
|
import { Component, Input } from '@angular/core';
|
||||||
import {
|
import {
|
||||||
AdminNotifyMetricsBox
|
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({
|
@Component({
|
||||||
selector: 'ds-notification-box',
|
selector: 'ds-notification-box',
|
||||||
|
@@ -3449,6 +3449,26 @@
|
|||||||
|
|
||||||
"admin-notify-dashboard.logs": "Notify logs",
|
"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",
|
"admin.notify.dashboard.breadcrumbs": "Dashboard",
|
||||||
|
|
||||||
"orgunit.listelement.badge": "Organizational Unit",
|
"orgunit.listelement.badge": "Organizational Unit",
|
||||||
|
@@ -25,7 +25,7 @@ import { FilterVocabularyConfig } from './filter-vocabulary-config';
|
|||||||
import { DiscoverySortConfig } from './discovery-sort.config';
|
import { DiscoverySortConfig } from './discovery-sort.config';
|
||||||
import {
|
import {
|
||||||
AdminNotifyMetricsRow
|
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 {
|
interface AppConfig extends Config {
|
||||||
ui: UIServerConfig;
|
ui: UIServerConfig;
|
||||||
|
@@ -25,7 +25,7 @@ import { FilterVocabularyConfig } from './filter-vocabulary-config';
|
|||||||
import { DiscoverySortConfig } from './discovery-sort.config';
|
import { DiscoverySortConfig } from './discovery-sort.config';
|
||||||
import {
|
import {
|
||||||
AdminNotifyMetricsRow
|
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 {
|
export class DefaultAppConfig implements AppConfig {
|
||||||
production = false;
|
production = false;
|
||||||
@@ -449,66 +449,68 @@ export class DefaultAppConfig implements AppConfig {
|
|||||||
|
|
||||||
notifyMetrics: AdminNotifyMetricsRow[] = [
|
notifyMetrics: AdminNotifyMetricsRow[] = [
|
||||||
{
|
{
|
||||||
title: 'Number of received LDN',
|
title: 'admin-notify-dashboard.received-ldn',
|
||||||
boxes: [
|
boxes: [
|
||||||
{
|
{
|
||||||
color: '#B8DAFF',
|
color: '#B8DAFF',
|
||||||
title: 'Accepted',
|
title: 'admin-notify-dashboard.accepted',
|
||||||
config: 'NOTIFY.incoming.accepted'
|
config: 'NOTIFY.incoming.accepted'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
color: '#D4EDDA',
|
color: '#D4EDDA',
|
||||||
title: 'Processed LDN',
|
title: 'admin-notify-dashboard.processed',
|
||||||
config: 'NOTIFY.incoming.processed'
|
config: 'NOTIFY.incoming.processed'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
color: '#FDBBC7',
|
color: '#FDBBC7',
|
||||||
title: 'Failure',
|
title: 'admin-notify-dashboard.failure',
|
||||||
config: 'NOTIFY.incoming.failure'
|
config: 'NOTIFY.incoming.failure'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
color: '#FDBBC7',
|
color: '#FDBBC7',
|
||||||
title: 'Untrusted',
|
title: 'admin-notify-dashboard.untrusted',
|
||||||
config: 'NOTIFY.incoming.untrusted'
|
config: 'NOTIFY.incoming.untrusted'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
color: '#43515F',
|
color: '#43515F',
|
||||||
title: 'Involved items',
|
title: 'admin-notify-dashboard.involved-items',
|
||||||
textColor: '#fff',
|
textColor: '#fff',
|
||||||
config: ''
|
config: '',
|
||||||
|
isRowAggregateCount: true
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Number of generated LDN',
|
title: 'admin-notify-dashboard.generated-ldn',
|
||||||
boxes: [
|
boxes: [
|
||||||
{
|
{
|
||||||
color: '#D4EDDA',
|
color: '#D4EDDA',
|
||||||
title: 'Delivered',
|
title: 'admin-notify-dashboard.delivered',
|
||||||
config: 'NOTIFY.outgoing.delivered'
|
config: 'NOTIFY.outgoing.delivered'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
color: '#B8DAFF',
|
color: '#B8DAFF',
|
||||||
title: 'Queued',
|
title: 'admin-notify-dashboard.queued',
|
||||||
config: 'NOTIFY.outgoing.queued'
|
config: 'NOTIFY.outgoing.queued'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
color: '#FDEEBB',
|
color: '#FDEEBB',
|
||||||
title: 'Queued for retry',
|
title: 'admin-notify-dashboard.queued-for-retry',
|
||||||
config: 'NOTIFY.outgoing.queued_for_retry'
|
config: 'NOTIFY.outgoing.queued_for_retry'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
color: '#FDBBC7',
|
color: '#FDBBC7',
|
||||||
title: 'Failure',
|
title: 'admin-notify-dashboard.failure',
|
||||||
config: 'NOTIFY.outgoing.failure'
|
config: 'NOTIFY.outgoing.failure'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
color: '#43515F',
|
color: '#43515F',
|
||||||
title: 'Involved items',
|
title: 'admin-notify-dashboard.involved-items',
|
||||||
textColor: '#fff',
|
textColor: '#fff',
|
||||||
config: ''
|
config: '',
|
||||||
|
isRowAggregateCount: true
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
];
|
||||||
}
|
}
|
||||||
|
@@ -321,64 +321,66 @@ export const environment: BuildConfig = {
|
|||||||
|
|
||||||
notifyMetrics: [
|
notifyMetrics: [
|
||||||
{
|
{
|
||||||
title: 'Number of received LDN',
|
title: 'admin-notify-dashboard.received-ldn',
|
||||||
boxes: [
|
boxes: [
|
||||||
{
|
{
|
||||||
color: '#B8DAFF',
|
color: '#B8DAFF',
|
||||||
title: 'Accepted',
|
title: 'admin-notify-dashboard.accepted',
|
||||||
config: 'NOTIFY.incoming.accepted'
|
config: 'NOTIFY.incoming.accepted'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
color: '#D4EDDA',
|
color: '#D4EDDA',
|
||||||
title: 'Processed LDN',
|
title: 'admin-notify-dashboard.processed',
|
||||||
config: 'NOTIFY.incoming.processed'
|
config: 'NOTIFY.incoming.processed'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
color: '#FDBBC7',
|
color: '#FDBBC7',
|
||||||
title: 'Failure',
|
title: 'admin-notify-dashboard.failure',
|
||||||
config: 'NOTIFY.incoming.failure'
|
config: 'NOTIFY.incoming.failure'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
color: '#FDBBC7',
|
color: '#FDBBC7',
|
||||||
title: 'Untrusted',
|
title: 'admin-notify-dashboard.untrusted',
|
||||||
config: 'NOTIFY.incoming.untrusted'
|
config: 'NOTIFY.incoming.untrusted'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
color: '#43515F',
|
color: '#43515F',
|
||||||
title: 'Incoming LDM messages',
|
title: 'admin-notify-dashboard.involved-items',
|
||||||
textColor: '#fff',
|
textColor: '#fff',
|
||||||
config: ''
|
config: '',
|
||||||
|
isRowAggregateCount: true
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Number of generated LDN',
|
title: 'admin-notify-dashboard.generated-ldn',
|
||||||
boxes: [
|
boxes: [
|
||||||
{
|
{
|
||||||
color: '#D4EDDA',
|
color: '#D4EDDA',
|
||||||
title: 'Delivered',
|
title: 'admin-notify-dashboard.delivered',
|
||||||
config: 'NOTIFY.outgoing.delivered'
|
config: 'NOTIFY.outgoing.delivered'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
color: '#B8DAFF',
|
color: '#B8DAFF',
|
||||||
title: 'Queued',
|
title: 'admin-notify-dashboard.queued',
|
||||||
config: 'NOTIFY.outgoing.queued'
|
config: 'NOTIFY.outgoing.queued'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
color: '#FDEEBB',
|
color: '#FDEEBB',
|
||||||
title: 'Queued for retry',
|
title: 'admin-notify-dashboard.queued-for-retry',
|
||||||
config: 'NOTIFY.outgoing.queued_for_retry'
|
config: 'NOTIFY.outgoing.queued_for_retry'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
color: '#FDBBC7',
|
color: '#FDBBC7',
|
||||||
title: 'Failure',
|
title: 'admin-notify-dashboard.failure',
|
||||||
config: 'NOTIFY.outgoing.failure'
|
config: 'NOTIFY.outgoing.failure'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
color: '#43515F',
|
color: '#43515F',
|
||||||
title: 'Outgoing LDM messages',
|
title: 'admin-notify-dashboard.involved-items',
|
||||||
textColor: '#fff',
|
textColor: '#fff',
|
||||||
config: ''
|
config: '',
|
||||||
|
isRowAggregateCount: true
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user