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

@@ -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);
}
})
};
});
}
}