Merge remote-tracking branch 'origin/develop' into angular-16-irish-monitor

This commit is contained in:
Konstantinos Triantafyllou 2023-11-09 14:35:10 +02:00
commit a773cd8d1d
9 changed files with 155 additions and 78 deletions

View File

@ -19,7 +19,7 @@
<li *ngFor="let result of results">
<result-preview [properties]="properties" [showOrganizations]="true"
[showSubjects]="true" [result]="getResultPreview(result)" [promoteWebsiteURL]="true"
[isCard]="true" deposit="true">
[isCard]="true" deposit="true" [isMobile]="isMobile">
</result-preview>
</li>
</ul>

View File

@ -19,6 +19,7 @@ export class SearchResultsInDepositComponent {
@Input() status: number;
@Input() type: string;
@Input() properties:EnvProperties;
@Input() isMobile: boolean = false;
public urlParam: string;

View File

@ -1,5 +1,5 @@
import {HostedByCollectedFrom, Project, RelationResult} from "../../utils/result-preview/result-preview";
import {Context, Measure, Metric, Reference} from "../../utils/entities/resultLandingInfo";
import {Context, Measure, Metric, MetricPerDatasource, Reference} from "../../utils/entities/resultLandingInfo";
import {Injectable} from '@angular/core';
import {properties} from "../../../../environments/environment";
import {StringUtils} from "../../utils/string-utils.class";
@ -878,19 +878,43 @@ export class ParsingFunctions {
if (elements && elements.length) {
let bip: Metric[] = [];
let counts: Metric[] = [];
let countsPerDatasource: MetricPerDatasource[] = [];
let measure: Measure = {};
let datasourcePosition: Map<string, number> = new Map<string, number>();
let views: number = 0;
let downloads: number = 0;
elements.forEach(element => {
if (element.id == 'views') {
counts.push({name: 'views', icon: 'visibility', value: element.count, order: 0});
measure.views = element.count;
views += element.count;
let datasourceId = element.datasource;
if(datasourceId) {
if(datasourcePosition.has(element.datasource)) {
countsPerDatasource[datasourcePosition.get(element.datasource)].views = element.count;
} else {
datasourcePosition.set(element.datasource, countsPerDatasource.length);
countsPerDatasource.push({"datasourceId": element.datasource, "views": element.count, "downloads": 0})
}
}
// measure.views = element.count;
}
if (element.id == 'downloads') {
counts.push({name: 'downloads', icon: 'download', value: element.count, order: 1});
measure.downloads = element.count;
downloads += element.count;
let datasourceId = element.datasource;
if(datasourceId) {
if(datasourcePosition.has(element.datasource)) {
countsPerDatasource[datasourcePosition.get(element.datasource)].downloads = element.count;
} else {
datasourcePosition.set(element.datasource, countsPerDatasource.length);
countsPerDatasource.push({"datasourceId": element.datasource, "views": 0, "downloads": element.count})
}
}
// measure.downloads = element.count;
}
if (element.id == 'influence_alt' || element.id == 'citation_count') {
bip.push({name: 'citations', icon: 'cite', value: element.score, order: 2});
measure.citations = element.score;
// measure.citations = element.score;
}
if (element.id == 'popularity') {
let metric: Metric = {name: 'popularity', icon: 'fire', value: null, order: 3};
@ -905,7 +929,7 @@ export class ParsingFunctions {
} else {
metric.value = 'Average';
}
measure.popularity = metric.value;
// measure.popularity = metric.value;
bip.push(metric);
}
if (element.id == 'influence') {
@ -921,7 +945,7 @@ export class ParsingFunctions {
} else {
metric.value = 'Average';
}
measure.influence = metric.value;
// measure.influence = metric.value;
bip.push(metric);
}
if (element.id == 'impulse') {
@ -937,10 +961,21 @@ export class ParsingFunctions {
} else {
metric.value = 'Average';
}
measure.impulse = metric.value;
// measure.impulse = metric.value;
bip.push(metric);
}
});
if(views > 0) {
counts.push({name: 'views', icon: 'visibility', value: views, order: 0});
}
if(downloads > 0) {
counts.push({name: 'downloads', icon: 'download', value: downloads, order: 1});
}
if(countsPerDatasource && countsPerDatasource.length > 0) {
measure.countsPerDatasource = countsPerDatasource;
}
measure.bip = bip.sort((a, b) => a.order - b.order);
measure.counts = counts.sort((a, b) => a.order - b.order);
return measure;

View File

@ -1240,6 +1240,24 @@
</div>
</ng-container>
</div>
<div *ngIf="resultLandingInfo.measure.countsPerDatasource" class="uk-margin-medium-top uk-width-auto">
<table class="uk-table uk-table-striped">
<thead>
<tr>
<th class="uk-width-expand uk-width-1-2@xl">Data source</th>
<th class="uk-width-auto uk-text-center">Views</th>
<th class="uk-width-auto uk-text-center">Downloads</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let datasource of resultLandingInfo.measure.countsPerDatasource">
<td class="uk-text-truncate"><a [routerLink]="properties.searchLinkToDataProvider.split('?')[0]" [queryParams]="{'datasourceId': datasource.datasourceId}">{{datasource.datasourceId}}</a></td>
<td class="uk-text-center">{{datasource.views}}</td>
<td class="uk-text-center">{{datasource.downloads}}</td>
</tr>
</tbody>
</table>
</div>
<div class="uk-text-center uk-margin-large-top">
<span class="uk-text-meta">Powered by</span>
<a href='https://usagecounts.openaire.eu/' target='_blank' class="uk-link-reset">

View File

@ -23,7 +23,7 @@
<div class = "uk-position-relative">
<div class = "uk-width-1-1">
<result-preview [properties]="properties" [showOrcid]="false" [showOrganizations]="true"
[showSubjects]="true" [result]="result" [promoteWebsiteURL]="true"
[showSubjects]="true" [result]="result"
[isCard]="false">
</result-preview>
</div>

View File

@ -10,7 +10,7 @@
<ul class="uk-margin-top uk-list uk-margin search-results ">
<li *ngFor="let result of results">
<result-preview [properties]="properties" [showOrganizations]="true"
[showSubjects]="true" [result]="getResultPreview(result)" [promoteWebsiteURL]="true"
[showSubjects]="true" [result]="getResultPreview(result)"
[isCard]="true">
</result-preview>
</li>

View File

@ -345,7 +345,8 @@
[status]="searchUtils.status"
[type]="entityType"
[zenodoInformation]="zenodoInformation"
[properties]=properties>
[properties]=properties
[isMobile]="mobile">
</deposit-result>
<orcid-result *ngIf="usedBy == 'orcid'"
[results]="results"

View File

@ -30,20 +30,28 @@ export interface Context {
}
export interface Measure {
/** @deprecated*/
downloads?: string;
/** @deprecated*/
views?: string;
/** @deprecated*/
influence?: string;
/** @deprecated*/
popularity?: string;
/** @deprecated*/
citations?: string;
/** @deprecated*/
impulse?: string;
// /** @deprecated*/
// downloads?: string;
// /** @deprecated*/
// views?: string;
// /** @deprecated*/
// influence?: string;
// /** @deprecated*/
// popularity?: string;
// /** @deprecated*/
// citations?: string;
// /** @deprecated*/
// impulse?: string;
bip?: Metric[]
counts?: Metric[]
countsPerDatasource?: MetricPerDatasource[];
}
export interface MetricPerDatasource {
datasourceId: string,
// datasourceName: string,
views: number,
downloads: number
}
export interface Metric {

View File

@ -20,51 +20,65 @@
<div class="uk-margin-small-bottom">
<!-- Title -->
<div class="uk-grid">
<div class="multi-line-ellipsis lines-3 uk-width-expand">
<h2 class="uk-margin-remove uk-text-break uk-inline-block uk-h6">
<a *ngIf="!externalUrl && result.id" (click)="onClick()" [queryParams]="addEoscPrevInParams(createParam())"
[routerLink]="url" class="uk-link uk-text-decoration-none uk-width-expand" [class.uk-disabled]="result.id == '-1'">
<div *ngIf="(result.title) || result.acronym">
<span *ngIf="result.acronym">
{{result.acronym}}
<div [ngClass]="result.websiteURL && promoteWebsiteURL && !isMobile ? 'uk-flex uk-flex-between uk-width-1-1' : 'uk-width-expand'">
<div *ngIf="result.websiteURL && promoteWebsiteURL" class="uk-flex uk-flex-right"
[ngClass]="isMobile ? 'uk-width-1-1 uk-margin-small-bottom' : 'uk-flex-last uk-margin-left uk-width-auto'">
<span>
<a href="{{result.websiteURL}}" target="_blank" type="submit"
class="uk-float-right uk-margin-small-left uk-display-inline-block uk-text-uppercase uk-button uk-button-text">
<span class="uk-flex uk-flex-middle">
<icon name="file_upload" type="outlined" [flex]="true" class="uk-margin-small-right"></icon>
<span>Go to repository</span>
</span>
</a>
</span>
</div>
<div class="multi-line-ellipsis lines-3 uk-width-expand">
<h2 class="uk-margin-remove uk-text-break uk-inline-block uk-h6">
<a *ngIf="!externalUrl && result.id" (click)="onClick()" [queryParams]="addEoscPrevInParams(createParam())"
[routerLink]="url" class="uk-link uk-text-decoration-none uk-width-expand" [class.uk-disabled]="result.id == '-1'">
<div *ngIf="(result.title) || result.acronym">
<span *ngIf="result.acronym">
{{result.acronym}}
</span>
<span *ngIf="result.acronym && (result.title)"> (</span>
<span *ngIf="result.title" [innerHTML]="result.title"></span>
<span *ngIf="result.acronym && result.title">)</span>
</div>
<div *ngIf="!result.title && !result.acronym">
[no title available]
</div>
</a>
<a *ngIf="externalUrl && result.id" (click)="onClick()"
target="_blank" [href]="externalUrl+result.id"
class="custom-external uk-link uk-text-decoration-none uk-width-expand">
<span *ngIf="(result.title) || result.acronym">
<span *ngIf="result.acronym">
{{result.acronym}}
</span>
<span *ngIf="result.acronym && (result.title)"> (</span>
<span *ngIf="result.title" [innerHTML]="result.title"></span>
<span *ngIf="result.acronym && result.title">)</span>
</span>
<span *ngIf="result.acronym && (result.title)"> (</span>
<span *ngIf="result.title" [innerHTML]="result.title"></span>
<span *ngIf="result.acronym && result.title">)</span>
</div>
<div *ngIf="!result.title && !result.acronym">
[no title available]
</div>
</a>
<a *ngIf="externalUrl && result.id" (click)="onClick()"
target="_blank" [href]="externalUrl+result.id"
class="custom-external uk-link uk-text-decoration-none uk-width-expand">
<span *ngIf="(result.title) || result.acronym">
<span *ngIf="result.acronym">
{{result.acronym}}
<span *ngIf="!result.title && !result.acronym">
[no title available]
</span>
<span *ngIf="result.acronym && (result.title)"> (</span>
<span *ngIf="result.title" [innerHTML]="result.title"></span>
<span *ngIf="result.acronym && result.title">)</span>
</span>
<span *ngIf="!result.title && !result.acronym">
[no title available]
</span>
</a>
<div *ngIf="!result.id" class="uk-width-expand">
<div *ngIf="(result.title) || result.acronym">
<span *ngIf="result.acronym">
{{result.acronym}}
</span>
<span *ngIf="result.acronym && (result.title)"> (</span>
<span *ngIf="result.title" [innerHTML]="result.title"></span>
<span *ngIf="result.acronym && result.title">)</span>
</a>
<div *ngIf="!result.id" class="uk-width-expand">
<div *ngIf="(result.title) || result.acronym">
<span *ngIf="result.acronym">
{{result.acronym}}
</span>
<span *ngIf="result.acronym && (result.title)"> (</span>
<span *ngIf="result.title" [innerHTML]="result.title"></span>
<span *ngIf="result.acronym && result.title">)</span>
</div>
<div *ngIf="!result.title && !result.acronym">
[no title available]
</div>
</div>
<div *ngIf="!result.title && !result.acronym">
[no title available]
</div>
</div>
</h2>
</h2>
</div>
</div>
<div *ngIf="result.hostedBy_collectedFrom && result.hostedBy_collectedFrom.length > 0" class="uk-hidden@m uk-width-auto">
<div class="uk-margin-small-bottom uk-flex uk-flex-middle"
@ -158,17 +172,17 @@
</div>
</div>
<!-- 5th section(deposit only) -->
<div>
<span *ngIf="result.websiteURL && promoteWebsiteURL" class="uk-flex uk-flex-right uk-margin-small-top">
<a href="{{result.websiteURL}}" target="_blank" type="submit"
class="uk-float-right uk-margin-small-left uk-display-inline-block uk-text-uppercase uk-button uk-button-text">
<span class="uk-flex uk-flex-middle">
<icon name="file_upload" type="outlined" [flex]="true" class="uk-margin-small-right"></icon>
<span>Go to repository</span>
</span>
</a>
</span>
</div>
<!-- <div>-->
<!-- <span *ngIf="result.websiteURL && promoteWebsiteURL" class="uk-flex uk-flex-right uk-margin-small-top">-->
<!-- <a href="{{result.websiteURL}}" target="_blank" type="submit"-->
<!-- class="uk-float-right uk-margin-small-left uk-display-inline-block uk-text-uppercase uk-button uk-button-text">-->
<!-- <span class="uk-flex uk-flex-middle">-->
<!-- <icon name="file_upload" type="outlined" [flex]="true" class="uk-margin-small-right"></icon>-->
<!-- <span>Go to repository</span>-->
<!-- </span>-->
<!-- </a>-->
<!-- </span>-->
<!-- </div>-->
</div>
</div>
<div *ngIf="(result.hostedBy_collectedFrom || hasActions || result.measure?.bip.length || result.measure?.counts.length) && !isDeletedByInferenceModal"