diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.component.html b/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.component.html index 4b432adb38..e366fbc909 100644 --- a/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.component.html +++ b/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.component.html @@ -8,7 +8,7 @@ {{'admin-notify-dashboard.metrics' | translate}}
- +
diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.component.ts b/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.component.ts index 56f5091969..abaf9f05b5 100644 --- a/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.component.ts +++ b/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.component.ts @@ -1,47 +1,35 @@ -import { Component, Inject, OnInit } from '@angular/core'; -import { SearchConfigurationService } from "../../core/shared/search/search-configuration.service"; +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 { SEARCH_CONFIG_SERVICE } from "../../my-dspace-page/my-dspace-page.component"; import { PaginationComponentOptions } from "../../shared/pagination/pagination-component-options.model"; -import { SearchFilterConfig } from "../../shared/search/models/search-filter-config.model"; +import { concatAll, concatWith, flatMap, forkJoin, from, mergeAll, switchMap } from "rxjs"; +import { concat, delay } from "rxjs/operators"; +import { getFirstSucceededRemoteData } from "../../core/shared/operators"; @Component({ selector: 'ds-admin-notify-dashboard', templateUrl: './admin-notify-dashboard.component.html', styleUrls: ['./admin-notify-dashboard.component.scss'], - providers: [ - { - provide: SEARCH_CONFIG_SERVICE, - useClass: SearchConfigurationService - } - ] }) export class AdminNotifyDashboardComponent implements OnInit{ - mockFilterConfig : SearchFilterConfig = Object.assign(new SearchFilterConfig(), { - type: { - value: "discovery-filter" - }, - pageSize: 10, - name: "author", - filterType: "text", - _links: { - self: { - href: "https://dspace-coar.4science.cloud/server/api/discover/facets/author" - } - } - }); - mockPaginatedSearchOptions = new PaginatedSearchOptions({ - pagination: Object.assign(new PaginationComponentOptions(), { id: 'page-id', currentPage: 1, pageSize: 20 }), - configuration: '', + metricsConfig = environment.notifyMetrics; + private singleResultOptions = Object.assign(new PaginationComponentOptions(), { + id: 'single-result-options', + pageSize: 1 }); - - constructor(private searchService: SearchService, - @Inject(SEARCH_CONFIG_SERVICE) public searchConfigService: SearchConfigurationService, - ) {} + constructor(private searchService: SearchService) {} ngOnInit() { - this.searchService.getFacetValuesFor(this.mockFilterConfig, 1, this.mockPaginatedSearchOptions).subscribe(c => console.log(c)) + const discoveryConfigurations = this.metricsConfig + .map(row => row.boxes) + .map(boxes => boxes.map(box => box.config).filter(config => !!config)); + const mergedConfigurations = discoveryConfigurations[0].concat(discoveryConfigurations[1]); + const searchConfigurations = mergedConfigurations + .map(config => Object.assign(new PaginatedSearchOptions({}), + { configuration: config, pagination: this.singleResultOptions } + )); + // TODO: check for search completion before executing next one } } diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.component.ts b/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.component.ts index bea0f654ec..57f834f872 100644 --- a/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.component.ts +++ b/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.component.ts @@ -1,6 +1,5 @@ -import { Component } from '@angular/core'; +import { Component, Input } from '@angular/core'; import { AdminNotifyMetricsRow } from './admin-notify-metrics.model'; -import { AdminNotifyMetricsRowsConfig } from './admin-notify-metrics.config'; @Component({ selector: 'ds-admin-notify-metrics', @@ -9,5 +8,6 @@ import { AdminNotifyMetricsRowsConfig } from './admin-notify-metrics.config'; }) export class AdminNotifyMetricsComponent { - boxesConfig: AdminNotifyMetricsRow[] = AdminNotifyMetricsRowsConfig; + @Input() + boxesConfig: AdminNotifyMetricsRow[]; } diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.config.ts b/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.config.ts deleted file mode 100644 index 6406f91d0b..0000000000 --- a/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.config.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { AdminNotifyMetricsRow } from './admin-notify-metrics.model'; - -export const AdminNotifyMetricsRowsConfig: AdminNotifyMetricsRow[] = [ - { - title: 'Number of received LDN', - boxes: [ - { - color: '#B8DAFF', - title: 'Accepted', - }, - { - color: '#D4EDDA', - title: 'Processed LDN', - }, - { - color: '#FDBBC7', - title: 'Failure', - }, - { - color: '#FDBBC7', - title: 'Untrusted', - }, - { - color: '#43515F', - title: 'Incoming LDM messages', - textColor: '#fff' - }, - ] - }, - { - title: 'Number of generated LDN', - boxes: [ - { - color: '#D4EDDA', - title: 'Delivered', - }, - { - color: '#B8DAFF', - title: 'Queued', - }, - { - color: '#FDEEBB', - title: 'Queued for retry', - }, - { - color: '#FDBBC7', - title: 'Failure', - }, - { - color: '#43515F', - title: 'Outgoing LDM messages', - textColor: '#fff' - }, - ] - } -]; diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.model.ts b/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.model.ts index 6fb673575c..ab0f9cfa91 100644 --- a/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.model.ts +++ b/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.model.ts @@ -2,6 +2,7 @@ export interface AdminNotifyMetricsBox { color: string; textColor?: string; title: string; + config: string; count?: number } diff --git a/src/config/app-config.interface.ts b/src/config/app-config.interface.ts index e610257dbf..e3f2b40db4 100644 --- a/src/config/app-config.interface.ts +++ b/src/config/app-config.interface.ts @@ -23,6 +23,9 @@ import { HomeConfig } from './homepage-config.interface'; import { MarkdownConfig } from './markdown-config.interface'; 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"; interface AppConfig extends Config { ui: UIServerConfig; @@ -50,6 +53,7 @@ interface AppConfig extends Config { markdown: MarkdownConfig; vocabularies: FilterVocabularyConfig[]; comcolSelectionSort: DiscoverySortConfig; + notifyMetrics: AdminNotifyMetricsRow[]; } /** diff --git a/src/config/default-app-config.ts b/src/config/default-app-config.ts index 6150e1ad02..22f9d8322d 100644 --- a/src/config/default-app-config.ts +++ b/src/config/default-app-config.ts @@ -23,6 +23,9 @@ import { HomeConfig } from './homepage-config.interface'; import { MarkdownConfig } from './markdown-config.interface'; 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"; export class DefaultAppConfig implements AppConfig { production = false; @@ -443,4 +446,69 @@ export class DefaultAppConfig implements AppConfig { sortField:'dc.title', sortDirection:'ASC', }; + + notifyMetrics: AdminNotifyMetricsRow[] = [ + { + title: 'Number of received LDN', + boxes: [ + { + color: '#B8DAFF', + title: 'Accepted', + config: 'NOTIFY.incoming.accepted' + }, + { + color: '#D4EDDA', + title: 'Processed LDN', + config: 'NOTIFY.incoming.processed' + }, + { + color: '#FDBBC7', + title: 'Failure', + config: 'NOTIFY.incoming.failure' + }, + { + color: '#FDBBC7', + title: 'Untrusted', + config: 'NOTIFY.incoming.untrusted' + }, + { + color: '#43515F', + title: 'Involved items', + textColor: '#fff', + config: '' + }, + ] + }, + { + title: 'Number of generated LDN', + boxes: [ + { + color: '#D4EDDA', + title: 'Delivered', + config: 'NOTIFY.outgoing.delivered' + }, + { + color: '#B8DAFF', + title: 'Queued', + config: 'NOTIFY.outgoing.queued' + }, + { + color: '#FDEEBB', + title: 'Queued for retry', + config: 'NOTIFY.outgoing.queued_for_retry' + }, + { + color: '#FDBBC7', + title: 'Failure', + config: 'NOTIFY.outgoing.failure' + }, + { + color: '#43515F', + title: 'Involved items', + textColor: '#fff', + config: '' + }, + ] + } + ] } diff --git a/src/environments/environment.test.ts b/src/environments/environment.test.ts index 806a45fbd5..8858e95a2a 100644 --- a/src/environments/environment.test.ts +++ b/src/environments/environment.test.ts @@ -317,5 +317,70 @@ export const environment: BuildConfig = { vocabulary: 'srsc', enabled: true } + ], + + notifyMetrics: [ + { + title: 'Number of received LDN', + boxes: [ + { + color: '#B8DAFF', + title: 'Accepted', + config: 'NOTIFY.incoming.accepted' + }, + { + color: '#D4EDDA', + title: 'Processed LDN', + config: 'NOTIFY.incoming.processed' + }, + { + color: '#FDBBC7', + title: 'Failure', + config: 'NOTIFY.incoming.failure' + }, + { + color: '#FDBBC7', + title: 'Untrusted', + config: 'NOTIFY.incoming.untrusted' + }, + { + color: '#43515F', + title: 'Incoming LDM messages', + textColor: '#fff', + config: '' + }, + ] + }, + { + title: 'Number of generated LDN', + boxes: [ + { + color: '#D4EDDA', + title: 'Delivered', + config: 'NOTIFY.outgoing.delivered' + }, + { + color: '#B8DAFF', + title: 'Queued', + config: 'NOTIFY.outgoing.queued' + }, + { + color: '#FDEEBB', + title: 'Queued for retry', + config: 'NOTIFY.outgoing.queued_for_retry' + }, + { + color: '#FDBBC7', + title: 'Failure', + config: 'NOTIFY.outgoing.failure' + }, + { + color: '#43515F', + title: 'Outgoing LDM messages', + textColor: '#fff', + config: '' + }, + ] + } ] };