Merge branch 'new-theme' of code-repo.d4science.org:MaDgIK/openaire-library into new-theme

This commit is contained in:
Konstantinos Triantafyllou 2022-05-04 17:17:56 +03:00
commit 4aabb739bf
14 changed files with 435 additions and 740 deletions

View File

@ -107,11 +107,6 @@
<span *ngIf="!dataProviderInfo.compatibility.id">
{{dataProviderInfo.compatibility.info}}
</span>
<!-- <a *ngIf="dataProviderInfo.compatibility.name && dataProviderInfo.compatibility.id"-->
<!-- [queryParams]="{datasourceId: dataProviderInfo.compatibility.id}" routerLinkActive="router-link-active"-->
<!-- [routerLink]="properties.searchLinkToDataProvider.split('?')[0]">-->
<!-- {{dataProviderInfo.compatibility.info}} {{dataProviderInfo.compatibility.name}}-->
<!-- </a>-->
<span *ngIf="dataProviderInfo.compatibility.name && !dataProviderInfo.compatibility.id">
{{dataProviderInfo.compatibility.name}}
</span>
@ -137,32 +132,32 @@
<my-tabs (selectedActiveTab)="onSelectActiveTab($event)" [offsetForSticky]="offset" [(isSticky)]="stickyHeader">
<my-tab [tabTitle]="'Summary'" [tabId]="'summary'" [active]="true"></my-tab>
<my-tab *ngIf="fetchProjects.searchUtils.totalResults > 0"
[tabTitle]="'Projects'" [tabNumber]="fetchProjects.searchUtils.totalResults"
[tabTitle]="openaireEntities.PROJECTS" [tabNumber]="fetchProjects.searchUtils.totalResults"
[tabId]="'projects'">
</my-tab>
<my-tab *ngIf="fetchDataproviders.searchUtils.totalResults > 0"
[tabTitle]="'Content Providers'" [tabNumber]="fetchDataproviders.searchUtils.totalResults"
[tabTitle]="openaireEntities.DATASOURCES" [tabNumber]="fetchDataproviders.searchUtils.totalResults"
[tabId]="'datasources'">
</my-tab>
<my-tab *ngIf="fetchPublications.searchUtils.totalResults > 0"
[tabTitle]="'Publications'" [tabNumber]="fetchPublications.searchUtils.totalResults"
[tabTitle]="openaireEntities.PUBLICATIONS" [tabNumber]="fetchPublications.searchUtils.totalResults"
[tabId]="'publications'">
</my-tab>
<my-tab *ngIf="fetchDatasets.searchUtils.totalResults > 0"
[tabTitle]="'Research Data'" [tabNumber]="fetchDatasets.searchUtils.totalResults"
[tabTitle]="openaireEntities.DATASETS" [tabNumber]="fetchDatasets.searchUtils.totalResults"
[tabId]="'datasets'">
</my-tab>
<my-tab *ngIf="fetchSoftware.searchUtils.totalResults > 0"
[tabTitle]="'Software'" [tabNumber]="fetchSoftware.searchUtils.totalResults"
[tabTitle]="openaireEntities.SOFTWARE" [tabNumber]="fetchSoftware.searchUtils.totalResults"
[tabId]="'software'">
</my-tab>
<my-tab *ngIf="fetchOrps.searchUtils.totalResults > 0"
[tabTitle]="'Other Research'" [tabNumber]="fetchOrps.searchUtils.totalResults"
[tabTitle]="openaireEntities.OTHER" [tabNumber]="fetchOrps.searchUtils.totalResults"
[tabId]="'other'">
</my-tab>
<my-tab *ngIf="(fetchPublications.searchUtils.totalResults > 0 || fetchDatasets.searchUtils.totalResults > 0
|| fetchSoftware.searchUtils.totalResults > 0 || fetchOrps.searchUtils.totalResults > 0)"
[tabTitle]="'Related Content Providers'" [tabId]="'relatedDatasources'">
[tabTitle]="'Related '+openaireEntities.DATASOURCES" [tabId]="'relatedDatasources'">
</my-tab>
<my-tab *ngIf="(fetchPublications.searchUtils.totalResults > 0 || fetchDatasets.searchUtils.totalResults > 0
|| fetchSoftware.searchUtils.totalResults > 0 || fetchOrps.searchUtils.totalResults > 0)"
@ -229,23 +224,9 @@
class="uk-margin-medium-bottom uk-margin-bottom">
<div class="uk-height-max-medium uk-overflow-auto">
<div class="uk-text-meta uk-margin-small-bottom">Subjects </div>
<!-- <span *ngFor="let subject of dataProviderInfo.subjects.slice(0, showNumSubjects) let i=index">-->
<!-- <span>{{subject}}</span>-->
<!-- <span *ngIf="(i < dataProviderInfo.subjects.length-1)">, </span>-->
<!-- </span>-->
<!-- <span *ngIf="showNumSubjects == thresholdSubjects && dataProviderInfo.organizations.length > thresholdSubjects"> ... </span>-->
<span>{{dataProviderInfo.subjects.slice(0, lessBtnSubjects ? dataProviderInfo.subjects.length : thresholdSubjects).join(", ")}}</span>
<span *ngIf="dataProviderInfo.subjects.length > thresholdSubjects && !lessBtnSubjects"> ... </span>
</div>
<!-- <div *ngIf="showNumSubjects == thresholdSubjects && dataProviderInfo.organizations.length > thresholdSubjects"-->
<!-- class="uk-width-1-1 uk-text-right">-->
<!-- <a (click)="showNumSubjects = dataProviderInfo.subjects.length;">-->
<!-- View all {{dataProviderInfo.subjects.length | number}} subjects-->
<!-- </a>-->
<!-- </div>-->
<!-- <div *ngIf="showNumSubjects > thresholdSubjects" class="uk-width-1-1 uk-text-right">-->
<!-- <a (click)="showNumSubjects = thresholdSubjects;">View less subjects</a>-->
<!-- </div>-->
<div *ngIf="dataProviderInfo.subjects.length > thresholdSubjects && !lessBtnSubjects"
class="uk-width-1-1 uk-text-right">
<a (click)="viewAllSubjectsClick();">
@ -285,33 +266,11 @@
<span *ngIf="i < dataProviderInfo.provenance.size-1">, </span>
</span>
</div>
<!-- <span *ngIf="dataProviderInfo.r3DataId" class="uk-display-inline-block">-->
<!-- <span class="uk-text-meta">Detailed information @ </span>-->
<!-- <a target="_blank" href="{{properties.r3DataURL+dataProviderInfo.r3DataId}}">-->
<!-- re3data.org-->
<!-- <span class="custom-external custom-icon space"></span>-->
<!-- </a>-->
<!-- </span>-->
</div>
<!-- Organizations -->
<!-- <div class="uk-text-muted uk-text-small">Organizations</div>-->
<!-- <div class="uk-height-max-medium uk-overflow-auto">-->
<div *ngIf="dataProviderInfo.organizations && dataProviderInfo.organizations.length > 0"
class="uk-margin-medium-bottom">
<!-- <div class="uk-height-max-medium uk-overflow-auto">-->
<div class="uk-text-meta uk-margin-small-bottom">{{openaireEntities.ORGANIZATIONS}}</div>
<ng-container *ngTemplateOutlet="organizations_template; context: { threshold: lessBtnOrganizations ? dataProviderInfo.organizations.length : thresholdOrganizations }"></ng-container>
<!-- <span *ngIf="showNumOrganizations == thresholdOrganizations && dataProviderInfo.organizations.length > thresholdOrganizations"> ... </span>-->
<!-- </div>-->
<!-- <div *ngIf="showNumOrganizations == thresholdOrganizations && dataProviderInfo.organizations.length > thresholdOrganizations"-->
<!-- class="uk-width-1-1 uk-text-right">-->
<!-- <a (click)="showNumOrganizations = dataProviderInfo.organizations.length;">-->
<!-- View all {{dataProviderInfo.organizations.length | number}} organizations-->
<!-- </a>-->
<!-- </div>-->
<!-- <div *ngIf="showNumOrganizations > thresholdOrganizations" class="uk-width-1-1 uk-text-right">-->
<!-- <a (click)="showNumOrganizations = thresholdOrganizations;">View less organizations</a>-->
<!-- </div>-->
<div *ngIf="dataProviderInfo.organizations.length > thresholdOrganizations && !lessBtnOrganizations"
class="uk-width-1-1 uk-text-right">
@ -423,6 +382,9 @@
</div>
</ng-container>
</div>
<div class="uk-text-xsmall uk-hidden@m"><ng-container *ngTemplateOutlet="graph_and_feedback_template"></ng-container></div>
<helper *ngIf="pageContents && pageContents['bottom'] && pageContents['bottom'].length > 0"
[texts]="pageContents['bottom']"></helper>
</div>
</div>
</div>

View File

@ -163,7 +163,8 @@ export class DataProviderComponent {
this.updateUrl(this.properties.domain + this.properties.baseLink + this._router.url);
this.seoService.createLinkForCanonicalURL(this.properties.domain +this.properties.baseLink + this._router.url);
this.subscriptions.push(this.route.queryParams.subscribe(data => {
this.updateTitle("Content provider");
this.stickyHeader = false;
this.updateTitle(this.openaireEntities.DATASOURCE);
this.updateDescription("");
this.datasourceId = data['datasourceId'];
if (this.datasourceId && StringUtils.isOpenAIREID(this.datasourceId)) {
@ -284,7 +285,7 @@ export class DataProviderComponent {
},
err => {
//console.log(err);
this.handleError("Error getting content provider for id: " + this.datasourceId, err);
this.handleError("Error getting "+this.openaireEntities.DATASOURCE+" for id: " + this.datasourceId, err);
if (err.status == 404) {
this._router.navigate(['/error'], {
queryParams: {
@ -313,7 +314,7 @@ export class DataProviderComponent {
err => {
//console.log(err);
this.aggregationStatusIsInitialized = true;
this.handleError("Error getting content provider aggregation status for id: " + this.datasourceId, err);
this.handleError("Error getting "+this.openaireEntities.DATASOURCE+" aggregation status for id: " + this.datasourceId, err);
}
));
}
@ -594,7 +595,7 @@ export class DataProviderComponent {
this.searchRelatedDatasources(1, 0);
this.relatedDatasourcesModal.cancelButton = false;
this.relatedDatasourcesModal.okButton = false;
this.relatedDatasourcesModal.alertTitle = "Related content providers of";
this.relatedDatasourcesModal.alertTitle = "Related "+this.openaireEntities.DATASOURCES+" of";
this.relatedDatasourcesModal.open();
}
@ -617,7 +618,7 @@ export class DataProviderComponent {
public openOrganizationsModal() {
this.organizationsModal.cancelButton = false;
this.organizationsModal.okButton = false;
this.organizationsModal.alertTitle = "Organizations";
this.organizationsModal.alertTitle = this.openaireEntities.ORGANIZATIONS;
this.organizationsModal.open();
}
@ -646,7 +647,7 @@ export class DataProviderComponent {
}
private handleError(message: string, error) {
console.error("Content Provider Landing Page: " + message, error);
console.error(this.openaireEntities.DATASOURCE+" Landing Page: " + message, error);
}
private getEntityName(entityType: string, plural: boolean, full: boolean): string {

View File

@ -9,17 +9,19 @@ import {StringUtils} from '../../utils/string-utils.class';
import {RouterHelper} from '../../utils/routerHelper.class';
import {EnvProperties} from '../../utils/properties/env-properties';
import {AlertModal} from "../../utils/modal/alert";
import {OpenaireEntities} from '../../utils/properties/searchFields';
@Component({
selector: 'projectsInModal',
template: `
<div *ngIf="fetchProjects.funders.length > 1" class="uk-margin-bottom">
<div class="uk-margin-small-bottom uk-text-muted">Filter by Funder:</div>
<div *ngIf="fetchProjects.funders.length > 1" class="uk-margin-medium-bottom">
<div class="uk-margin-small-bottom uk-text-meta">Filter by Funder:</div>
<ul class="uk-list uk-list-divider uk-margin-remove">
<li *ngFor="let filter of fetchProjects.filters ">
<label *ngFor="let value of filter.values" class="uk-animation-fade uk-margin-small-right">
<input [(ngModel)]="value.selected" type="checkbox"
(ngModelChange)="filterChange(value.selected)"/>
(ngModelChange)="filterChange(value.selected)"
class="uk-checkbox"/>
<span class="uk-text-bold"> {{value.name}}</span>
</label>
</li>
@ -28,21 +30,21 @@ import {AlertModal} from "../../utils/modal/alert";
<errorMessages [status]="[fetchProjects.searchUtils.status]" [type]="'projects'"
tab_error_class=true></errorMessages>
<div *ngIf="fetchProjects.searchUtils.status == errorCodes.DONE">
<no-load-paging *ngIf="fetchProjects.searchUtils.totalResults > size" [type]="'projects'"
(pageChange)="pageChange($event)"
[page]="page" [pageSize]="size"
[totalResults]="fetchProjects.searchUtils.totalResults">
</no-load-paging>
<results-and-pages *ngIf="fetchProjects.searchUtils.totalResults > size" [type]="openaireEntities.PROJECTS"
[page]="page" [pageSize]="size"
[totalResults]="fetchProjects.searchUtils.totalResults">
</results-and-pages>
<search-result [results]="fetchProjects.results"
[status]="fetchProjects.searchUtils.status"
[type]="'project'"
[showLoading]="true" [properties]="properties">
</search-result>
<no-load-paging *ngIf="fetchProjects.searchUtils.totalResults > size" [type]="'projects'"
(pageChange)="pageChange($event)"
[page]="page" [pageSize]="size"
[totalResults]="fetchProjects.searchUtils.totalResults">
</no-load-paging>
<paging-no-load *ngIf="fetchProjects.searchUtils.totalResults > size"
(pageChange)="pageChange($event)"
[currentPage]="page"
[size]="size"
[totalResults]="fetchProjects.searchUtils.totalResults">
</paging-no-load>
</div>
`
})
@ -60,6 +62,8 @@ export class ProjectsInModalComponent {
private filterQuery: string = "";
public openaireEntities = OpenaireEntities;
constructor(private route: ActivatedRoute,
private _searchProjectsService: SearchProjectsService) {
}

View File

@ -1,389 +1,303 @@
<div id="tm-main" class="landing uk-section uk-padding-remove-top tm-middle">
<div *ngIf="!showFeedback" class="uk-grid">
<div class="tm-main uk-width-1-1@s uk-width-1-1@m uk-width-1-1@l uk-row-first ">
<div class="uk-container uk-container-large uk-margin-medium-top organization">
<div *ngIf="warningMessage.length > 0" class="uk-alert uk-alert-warning uk-margin-large-top"
role="alert">{{warningMessage}}</div>
<div *ngIf="errorMessage.length > 0" class="uk-alert uk-alert-danger uk-margin-large-top"
role="alert">{{errorMessage}}</div>
<div [style.display]="showLoading ? 'inline' : 'none'"
class="uk-animation-fade uk-margin-large-top uk-width-1-1" role="alert"><span
class="loading-gif uk-align-center"></span></div>
<helper *ngIf="pageContents && pageContents['top'] && pageContents['top'].length > 0"
[texts]="pageContents['top']"></helper>
<div *ngIf="organizationInfo != null" class="uk-grid uk-margin-remove">
<div class="uk-width-2-3@m uk-width-1-1@s uk-padding uk-padding-remove-left uk-padding-remove-vertical uk-margin-bottom">
<schema2jsonld *ngIf="organizationInfo" [data]=organizationInfo
[URL]="properties.domain + properties.baseLink+this.properties.searchLinkToOrganization+organizationInfo.relcanId"
type="organization"></schema2jsonld>
<landing-header [properties]="properties" [title]="organizationInfo.title.name"
titleClass="uk-margin-remove-bottom"
[subTitle]="(organizationInfo.name
&& organizationInfo.title.name !== organizationInfo.name)?organizationInfo.name:null"
[entityType]="'organization'"></landing-header>
<div *ngIf="organizationInfo.deletedByInferenceIds">
<a (click)="openDeletedByInference()">View all {{organizationInfo.deletedByInferenceIds.length}}
versions</a>
<div id="tm-main" class="landing uk-section uk-padding-remove tm-middle">
<div class="tm-main">
<!-- TODO: Error messages -->
<div></div>
<div *ngIf="organizationInfo" class="organization">
<div *ngIf="!showFeedback" class="uk-grid" uk-grid>
<!-- left column -->
<div class="landing-left-sidebar-width landing-left-sidebar-border landing-background-light-color">
<div class="uk-flex uk-flex-column uk-flex-right landing-sidebar-height uk-sticky"
uk-sticky="bottom: true" [attr.offset]="offset">
<div class="uk-margin-large-bottom uk-align-center">
<div class="uk-text-meta">Actions</div>
<ul class="uk-list">
<!-- Share -->
<li class="uk-text-center">
<a (click)="openAddThisModal()" [title]="'Share this organization in your social networks'"
[attr.uk-tooltip]="'pos: right; cls: uk-active landing-action-tooltip landing-action-tooltip-portal uk-text-small uk-padding-small'">
<span class="uk-icon-button uk-icon landing-action-button landing-action-button-portal">
<icon name="share" visuallyHidden="share"></icon>
</span>
</a>
</li>
<!-- Download content lists -->
<li class="uk-text-center"
[title]="'Download content lists'"
[attr.uk-tooltip]="'pos: right; cls: uk-active landing-action-tooltip landing-action-tooltip-portal uk-text-small uk-padding-small'">
<a class="uk-link-text uk-text-bold uk-text-uppercase" (click)="openDownloadReportModal()">
<span class="uk-icon-button uk-icon landing-action-button landing-action-button-portal">
<icon name="download" visuallyHidden="download"></icon>
</span>
</a>
</li>
<!-- Download project lists -->
<li class="uk-text-center"
[title]="'Download project lists'"
[attr.uk-tooltip]="'pos: right; cls: uk-active landing-action-tooltip landing-action-tooltip-portal uk-text-small uk-padding-small'">
<a class="uk-link-text uk-text-bold uk-text-uppercase" (click)="openDownloadFunderReportModal()">
<span class="uk-icon-button uk-icon landing-action-button landing-action-button-portal">
<icon name="download" visuallyHidden="download"></icon>
</span>
</a>
</li>
</ul>
</div>
<ul class="uk-list basic-info">
<!-- Web Page -->
<li *ngIf="organizationInfo.title && organizationInfo.title.url">
<span class="uk-text-muted">Web page: </span>
<a [href]="organizationInfo.title.url" target="_blank">
<span>{{organizationInfo.title.url}}</span>
<span class="custom-external custom-icon space"></span>
</a>
</li>
<!-- Country -->
<li *ngIf="organizationInfo.country && !organizationInfo.country.toLowerCase().includes('unknown')">
<span class="uk-text-muted">Country: </span>{{organizationInfo.country}}
</li>
</ul>
</div>
<div class="uk-width-1-3@m uk-width-1-1@s uk-padding-remove">
<ul class="user-actions uk-list uk-card uk-card-default uk-padding">
<!-- Share -->
<li>
<addThis></addThis>
</li>
<li>
<a class="uk-link-text uk-text-bold uk-text-uppercase" (click)="openDownloadReportModal()">
<span class="uk-icon-button uk-button-primary uk-icon">
<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"
data-svg="download"><polyline fill="none" stroke="#000"
points="14,10 9.5,14.5 5,10"></polyline><rect x="3" y="17"
width="13"
height="1"></rect><line
fill="none" stroke="#000" x1="9.5" y1="13.91" x2="9.5" y2="3"></line>
</svg>
</span>
<span class="uk-margin-small-left">Download content lists</span>
</a>
</li>
<li *ngIf="fetchProjects && fetchProjects.funders && fetchProjects.funders.length > 0">
<a class="uk-link-text uk-text-bold uk-text-uppercase" (click)="openDownloadFunderReportModal()">
<span class="uk-icon-button uk-button-primary uk-icon">
<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"
data-svg="download"><polyline fill="none" stroke="#000"
points="14,10 9.5,14.5 5,10"></polyline><rect x="3" y="17"
width="13"
height="1"></rect><line
fill="none" stroke="#000" x1="9.5" y1="13.91" x2="9.5" y2="3"></line>
</svg>
</span>
<span class="uk-margin-small-left">Download project lists</span>
</a>
</li>
</ul>
</div>
<div class="uk-padding-remove-left uk-width-1-1 uk-margin-large-top">
<!-- <ng-template #loadingBlock>-->
<!-- <div *ngIf="!tabsAreInitialized" class="uk-animation-fade uk-margin-top uk-width-1-1" role="alert">-->
<!-- <span class="loading-gif uk-align-center"></span>-->
<!-- </div>-->
<!-- </ng-template>-->
<!-- *ngIf="numberOfTabs > 0; else loadingBlock"-->
<div class="main-tabs-div">
<!--Tab Templates-->
<ng-template #projects_tab>
<div class="uk-grid uk-margin-remove">
<div class="uk-width-expand uk-padding">
<projectsInModal [fetchProjects]="fetchProjects"
[organizationId]="organizationId"
[properties]=properties>
</projectsInModal>
</div>
<!--<div class="uk-width-1-3@m uk-width-1-1 right-column uk-padding-remove"></div>-->
</div>
</ng-template>
<ng-template #data_providers_tab>
<div class="uk-grid uk-margin-remove">
<div class="uk-width-expand uk-padding">
<search-tab [fetch]="fetchDataproviders" resultType="dataprovider"
[params]="getParamsForSearchLink()"
[searchLinkToAdvancedPage]="properties.searchLinkToAdvancedDataProviders"
[properties]="properties">
</search-tab>
</div>
<!--<div class="uk-width-1-3@m uk-width-1-1 right-column uk-padding-remove"></div>-->
</div>
</ng-template>
<ng-template #publications_tab>
<div class="uk-grid uk-margin-remove">
<div class="uk-width-expand uk-padding">
<search-tab [fetch]="fetchPublications" resultType="publication"
[params]="getParamsForSearchLink('publications')"
[searchLinkToAdvancedPage]="properties.searchLinkToAdvancedResults"
[properties]="properties">
</search-tab>
</div>
<!--<div class="uk-width-1-3@m uk-width-1-1 right-column uk-padding-remove"></div>-->
</div>
</ng-template>
<ng-template #datasets_tab>
<div class="uk-grid uk-margin-remove">
<div class="uk-width-expand uk-padding">
<search-tab [fetch]="fetchDatasets" resultType="dataset"
[params]="getParamsForSearchLink('datasets')"
[searchLinkToAdvancedPage]="properties.searchLinkToAdvancedResults"
[properties]="properties">
</search-tab>
</div>
<!--<div class="uk-width-1-3@m uk-width-1-1 right-column uk-padding-remove"></div>-->
</div>
</ng-template>
<ng-template #software_tab>
<div class="uk-grid uk-margin-remove">
<div class="uk-width-expand uk-padding">
<search-tab [fetch]="fetchSoftware" resultType="software"
[params]="getParamsForSearchLink('software')"
[searchLinkToAdvancedPage]="properties.searchLinkToAdvancedResults"
[properties]="properties">
</search-tab>
</div>
<!--<div class="uk-width-1-3@m uk-width-1-1 right-column uk-padding-remove"></div>-->
</div>
</ng-template>
<ng-template #other_tab>
<div class="uk-grid uk-margin-remove">
<div class="uk-width-expand uk-padding">
<search-tab [fetch]="fetchOrps" resultType="other"
[params]="getParamsForSearchLink('other')"
[searchLinkToAdvancedPage]="properties.searchLinkToAdvancedResults"
[properties]="properties">
</search-tab>
</div>
<!--<div class="uk-width-1-3@m uk-width-1-1 right-column uk-padding-remove"></div>-->
</div>
</ng-template>
<!-- [class]="numberOfTabs > 2 ? 'uk-visible@m' : ''"-->
<my-tabs (selectedActiveTab)="onSelectActiveTab($event)">
<my-tab
[tabNumber]="fetchProjects.searchUtils.totalResults"
[tabTitle]="'Funding / Projects'"
[tabId]="'projects'" class="uk-active">
<ng-container *ngTemplateOutlet="projects_tab;"></ng-container>
</my-tab>
<!-- [class]="(firstTab === 'dataProviders')?'uk-active':''"-->
<my-tab *ngIf="fetchDataproviders && fetchDataproviders.searchUtils.totalResults > 0"
[tabNumber]="fetchDataproviders.searchUtils.totalResults"
[tabTitle]="'Content Providers'"
[tabId]="'dataProviders'">
<ng-container *ngTemplateOutlet="data_providers_tab;"></ng-container>
</my-tab>
<!-- [class]="(firstTab === 'publications')?'uk-active':''"-->
<my-tab *ngIf="fetchPublications && fetchPublications.searchUtils.totalResults > 0"
[tabNumber]="fetchPublications.searchUtils.totalResults"
[tabTitle]="'Publications'"
[tabId]="'publications'">
<ng-container *ngTemplateOutlet="publications_tab;"></ng-container>
</my-tab>
<!-- [class]="(firstTab === 'datasets')?'uk-active':''"-->
<my-tab *ngIf="fetchDatasets && fetchDatasets.searchUtils.totalResults > 0"
[tabNumber]="fetchDatasets.searchUtils.totalResults"
[tabTitle]="'Research Data'"
[tabId]="'datasets'">
<ng-container *ngTemplateOutlet="datasets_tab;"></ng-container>
</my-tab>
<!-- [class]="(firstTab === 'software')?'uk-active':''"-->
<my-tab *ngIf="fetchSoftware && fetchSoftware.searchUtils.totalResults > 0"
[tabNumber]="fetchSoftware.searchUtils.totalResults"
[tabTitle]="'Software'"
[tabId]="'software'">
<ng-container *ngTemplateOutlet="software_tab;"></ng-container>
</my-tab>
<!-- [class]="(firstTab === 'other')?'uk-active':''"-->
<my-tab *ngIf="fetchOrps && fetchOrps.searchUtils.totalResults > 0"
[tabNumber]="fetchOrps.searchUtils.totalResults"
[tabTitle]="'Other Research'"
[tabId]="'other'">
<ng-container *ngTemplateOutlet="other_tab;"></ng-container>
</my-tab>
</my-tabs>
<!-- *ngIf="numberOfTabs > 2" class="uk-hidden@m"-->
<my-small-tabs
(selectedActiveTab)="onSelectActiveTab($event)">
<!-- *ngIf="fetchProjects && fetchProjects.searchUtils.totalResults > 0"-->
<!-- [class]="(firstTab === 'projects')?'uk-active':''"-->
<my-tab
[tabNumber]="fetchProjects.searchUtils.totalResults"
[tabTitle]="'Funding / Projects'"
[tabId]="'projects'" class="uk-active">
<ng-container *ngTemplateOutlet="projects_tab;"></ng-container>
</my-tab>
<!-- [class]="(firstTab === 'dataProviders')?'uk-active':''"-->
<my-tab *ngIf="fetchDataproviders && fetchDataproviders.searchUtils.totalResults > 0"
[tabNumber]="fetchDataproviders.searchUtils.totalResults"
[tabTitle]="'Content Providers'"
[tabId]="'dataProviders'">
<ng-container *ngTemplateOutlet="data_providers_tab;"></ng-container>
</my-tab>
<!-- [class]="(firstTab === 'publications')?'uk-active':''"-->
<my-tab *ngIf="fetchPublications && fetchPublications.searchUtils.totalResults > 0"
[tabNumber]="fetchPublications.searchUtils.totalResults"
[tabTitle]="'Publications'"
[tabId]="'publications'">
<ng-container *ngTemplateOutlet="publications_tab;"></ng-container>
</my-tab>
<!-- [class]="(firstTab === 'datasets')?'uk-active':''"-->
<my-tab *ngIf="fetchDatasets && fetchDatasets.searchUtils.totalResults > 0"
[tabNumber]="fetchDatasets.searchUtils.totalResults"
[tabTitle]="'Research Data'"
[tabId]="'datasets'">
<ng-container *ngTemplateOutlet="datasets_tab;"></ng-container>
</my-tab>
<!-- [class]="(firstTab === 'software')?'uk-active':''"-->
<my-tab *ngIf="fetchSoftware && fetchSoftware.searchUtils.totalResults > 0"
[tabNumber]="fetchSoftware.searchUtils.totalResults"
[tabTitle]="'Software'"
[tabId]="'software'">
<ng-container *ngTemplateOutlet="software_tab;"></ng-container>
</my-tab>
<!-- [class]="(firstTab === 'other')?'uk-active':''"-->
<my-tab *ngIf="fetchOrps && fetchOrps.searchUtils.totalResults > 0"
[tabNumber]="fetchOrps.searchUtils.totalResults"
[tabTitle]="'Other Research'"
[tabId]="'other'">
<ng-container *ngTemplateOutlet="other_tab;"></ng-container>
</my-tab>
</my-small-tabs>
</div>
<div class="uk-margin-small-top uk-flex">
</div>
<!-- center/right column -->
<div *ngIf="organizationInfo" class="uk-width-expand uk-padding-remove uk-margin-large-left uk-margin-large-right landing-background-default-color">
<!-- Graph and feedback -->
<ng-template #graph_and_feedback_template>
<div class="uk-flex uk-margin-small-top uk-margin-small-bottom">
<!-- Last Index Info-->
<div class="uk-width-2-3@m uk-width-1-2">
<img src="assets/common-assets/graph.svg" style="opacity: 0.4; width:20px; height:22px" loading="lazy"
alt="graph">
<span class="uk-margin-small-left uk-text-baseline uk-text-muted">Powered by <a href="https://graph.openaire.eu" class="graph-color">OpenAIRE Research Graph</a></span>
<span *ngIf="indexUpdateDate" class="uk-text-baseline uk-text-muted">
<div class="uk-width-2-3@m uk-width-1-2 graph">
<icon name="graph" customClass="uk-text-primary"></icon>
<span class="uk-margin-small-left uk-text-baseline uk-text-meta">
Powered by <a href="https://graph.openaire.eu" target="_blank" class="uk-text-primary">OpenAIRE Research Graph</a>
</span>
<span *ngIf="indexUpdateDate" class="uk-text-baseline uk-text-meta">
. Last update of records in OpenAIRE: {{indexUpdateDate | date: 'MMM dd, yyyy'}}
</span>
</div>
<!--Feedback-->
<div *ngIf="properties.reCaptchaSiteKey" class="uk-width-expand uk-text-right">
<span class="uk-text-muted">Any information missing or wrong?</span>
<a (click)="showFeedback = true; scroll()" class="portal-link space">Report an Issue</a>
<span class="uk-text-meta uk-text-xsmall">Anything wrong?</span>
<a (click)="showFeedback = true; scroll()" class="uk-text-xsmall"> Report an Issue</a>
</div>
</div>
</ng-template>
<div #graph_and_feedback id="graph_and_feedback" class="uk-text-xsmall uk-visible@m" uk-sticky="bottom: true;" [attr.offset]="graph_offset">
<ng-container *ngTemplateOutlet="graph_and_feedback_template"></ng-container>
</div>
</div>
</div>
<helper *ngIf="pageContents && pageContents['bottom'] && pageContents['bottom'].length > 0"
[texts]="pageContents['bottom']"></helper>
</div>
</div>
<feedback *ngIf="organizationInfo && properties.reCaptchaSiteKey" [organizationInfo]="organizationInfo"
[properties]="properties" [entityType]="'organization'" [fields]="feedbackFields"
[(showForm)]="showFeedback"></feedback>
<!-- Main content -->
<div class="uk-margin-medium-top">
<!-- Schema -->
<schema2jsonld *ngIf="organizationInfo" [data]=organizationInfo
[URL]="properties.domain + properties.baseLink+this.properties.searchLinkToOrganization+organizationInfo.relcanId"
type="organization">
</schema2jsonld>
<!-- Helper -->
<helper *ngIf="pageContents && pageContents['top'] && pageContents['top'].length > 0"
[texts]="pageContents['top']"></helper>
<!-- Versions -->
<span *ngIf="organizationInfo.deletedByInferenceIds" class="uk-text-primary uk-flex uk-flex-middle">
<icon flex="true" ratio="0.8" name="auto_awesome_motion"></icon>
<a (click)="openDeletedByInference()" class="uk-text-primary uk-text-small uk-margin-small-left">
View all {{organizationInfo.deletedByInferenceIds.length}} versions
</a>
</span>
<!-- Landing header -->
<landing-header [properties]="properties" [title]="organizationInfo.title.name"
[subTitle]="(organizationInfo.name
&& organizationInfo.title.name !== organizationInfo.name)?organizationInfo.name:null"
[entityType]="'organization'">
</landing-header>
<!-- Basic info -->
<div class="uk-text-small">
<!-- Web Page -->
<div *ngIf="organizationInfo.title && organizationInfo.title.url" class="uk-margin-small-bottom">
<span class="uk-text-meta">Web page: </span>
<a [href]="organizationInfo.title.url" target="_blank" class="uk-button uk-button-text uk-text-lowercase uk-text-normal custom-external">
{{organizationInfo.title.url}}
</a>
</div>
<!-- Country -->
<div *ngIf="organizationInfo.country && !organizationInfo.country.toLowerCase().includes('unknown')">
<span class="uk-text-meta">Country: </span>{{organizationInfo.country}}
</div>
</div>
</div>
<!-- Tabs section -->
<div id="main-tabs-div" uk-sticky="bottom: true; media: @m" [attr.offset]="offset" cls-active="active">
<div class="uk-padding uk-padding-remove-horizontal uk-padding-remove-bottom">
<showTitle *ngIf="stickyHeader" [titleName]="organizationInfo.title.name" classNames="uk-margin-remove-bottom" class="uk-visible@m"></showTitle>
<my-tabs (selectedActiveTab)="onSelectActiveTab($event)" [offsetForSticky]="offset" [(isSticky)]="stickyHeader">
<my-tab [active]="true" [tabTitle]="'Funding / Projects'" [tabId]="'projects'"
[tabNumber]="fetchProjects.searchUtils.totalResults > 0 ? fetchProjects.searchUtils.totalResults : ''">
</my-tab>
<my-tab *ngIf="fetchDataproviders && fetchDataproviders.searchUtils.totalResults > 0"
[tabTitle]="'Content Providers'" [tabId]="'dataProviders'"
[tabNumber]="fetchDataproviders.searchUtils.totalResults">
</my-tab>
<my-tab *ngIf="fetchPublications && fetchPublications.searchUtils.totalResults > 0"
[tabNumber]="fetchPublications.searchUtils.totalResults"
[tabTitle]="'Publications'" [tabId]="'publications'">
</my-tab>
<my-tab *ngIf="fetchDatasets && fetchDatasets.searchUtils.totalResults > 0"
[tabNumber]="fetchDatasets.searchUtils.totalResults"
[tabTitle]="'Research Data'" [tabId]="'datasets'">
</my-tab>
<my-tab *ngIf="fetchSoftware && fetchSoftware.searchUtils.totalResults > 0"
[tabNumber]="fetchSoftware.searchUtils.totalResults"
[tabTitle]="'Software'" [tabId]="'software'">
</my-tab>
<my-tab *ngIf="fetchOrps && fetchOrps.searchUtils.totalResults > 0"
[tabNumber]="fetchOrps.searchUtils.totalResults"
[tabTitle]="'Other Research'" [tabId]="'other'">
</my-tab>
</my-tabs>
</div>
</div>
<!-- Tabs content section -->
<div id="landing-sections" class="uk-text-small">
<div id="projects" class="landing-section landing-section-height-auto uk-padding uk-padding-remove-horizontal">
<projectsInModal [fetchProjects]="fetchProjects"
[organizationId]="organizationId" [properties]=properties>
</projectsInModal>
</div>
<div *ngIf="fetchDataproviders && fetchDataproviders.searchUtils.totalResults > 0"
id="dataProviders" class="landing-section uk-padding uk-padding-remove-horizontal">
<search-tab [fetch]="fetchDataproviders" resultType="dataprovider"
[params]="getParamsForSearchLink()"
[searchLinkToAdvancedPage]="properties.searchLinkToAdvancedDataProviders"
[properties]="properties">
</search-tab>
</div>
<div *ngIf="fetchPublications && fetchPublications.searchUtils.totalResults > 0"
id="publications" class="landing-section uk-padding uk-padding-remove-horizontal">
<search-tab [fetch]="fetchPublications" resultType="publication"
[params]="getParamsForSearchLink('publications')"
[searchLinkToAdvancedPage]="properties.searchLinkToAdvancedResults"
[properties]="properties">
</search-tab>
</div>
<div *ngIf="fetchDatasets && fetchDatasets.searchUtils.totalResults > 0"
id="datasets" class="landing-section uk-padding uk-padding-remove-horizontal">
<search-tab [fetch]="fetchDatasets" resultType="dataset"
[params]="getParamsForSearchLink('datasets')"
[searchLinkToAdvancedPage]="properties.searchLinkToAdvancedResults"
[properties]="properties">
</search-tab>
</div>
<div *ngIf="fetchSoftware && fetchSoftware.searchUtils.totalResults > 0"
id="software" class="landing-section uk-padding uk-padding-remove-horizontal">
<search-tab [fetch]="fetchSoftware" resultType="software"
[params]="getParamsForSearchLink('software')"
[searchLinkToAdvancedPage]="properties.searchLinkToAdvancedResults"
[properties]="properties">
</search-tab>
</div>
<div *ngIf="fetchOrps && fetchOrps.searchUtils.totalResults > 0"
id="other" class="landing-section uk-padding uk-padding-remove-horizontal">
<search-tab [fetch]="fetchOrps" resultType="other"
[params]="getParamsForSearchLink('other')"
[searchLinkToAdvancedPage]="properties.searchLinkToAdvancedResults"
[properties]="properties">
</search-tab>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Feedback -->
<feedback *ngIf="organizationInfo && properties.reCaptchaSiteKey" [organizationInfo]="organizationInfo"
[properties]="properties" [entityType]="'organization'" [fields]="feedbackFields"
[(showForm)]="showFeedback">
</feedback>
</div>
<!-- MODALS -->
<!-- Other versions -->
<modal-alert *ngIf="organizationInfo && organizationInfo.deletedByInferenceIds"
#AlertModalDeletedByInference classBody="uk-width-xxlarge uk-padding-remove-right">
<landing-header [properties]="properties" [title]="organizationInfo.title.name"
[subTitle]="(organizationInfo.name && organizationInfo.title.name !== organizationInfo.name)?organizationInfo.name:null"
titleClass="title-grey-background"
[entityType]="'organization'"></landing-header>
<div class="uk-margin-medium-top uk-margin-medium-right">
<organizationsDeletedByInference *ngIf="deleteByInferenceOpened"
[id]="organizationInfo.objIdentifier"
[ids]="organizationInfo.deletedByInferenceIds"
[modal]="AlertModalDeletedByInference"
[type]="'organizations'">
</organizationsDeletedByInference>
</div>
<modal-alert #AlertModalDeletedByInference *ngIf="organizationInfo && organizationInfo.deletedByInferenceIds" large="true">
<organizationsDeletedByInference *ngIf="deleteByInferenceOpened"
[id]="organizationInfo.objIdentifier"
[ids]="organizationInfo.deletedByInferenceIds"
[modal]="AlertModalDeletedByInference"
[type]="'organizations'">
</organizationsDeletedByInference>
</modal-alert>
<!-- Download report -->
<modal-alert #downloadReportModal [classTitle]="'landing-modal-header uk-padding-small'"
[classBody]="'uk-padding-remove landing-modal'">
<div class="uk-padding">
<div class="uk-animation-slide-top-small">
<ul *ngIf="total > 0" class="uk-margin-remove-bottom uk-list">
<li [attr.uk-tooltip]="total > 0 ? 'cls: uk-invisible' : 'cls: uk-active'"
title="No report available">
<a [class]="total > 0 ? 'clickable' : 'uk-disabled uk-link-muted'"
(click)="downloadFile(getCSVAffiliated('results'), 'results' + '-report')">
<span uk-icon="download"></span>
<span class="uk-text-capitalize uk-margin-small-left">all research outcomes (CSV)</span>
</a>
</li>
<li [attr.uk-tooltip]="fetchPublications.searchUtils.totalResults > 0 ? 'cls: uk-invisible' : 'cls: uk-active'"
title="No report available">
<a [class]="fetchPublications.searchUtils.totalResults > 0 ? 'clickable' : 'uk-disabled uk-link-muted'"
(click)="downloadFile(getCSVAffiliated('publications'), 'publications' + '-report')">
<span uk-icon="download"></span>
<span class="uk-text-capitalize uk-margin-small-left">publications (CSV)</span>
</a>
</li>
<li [attr.uk-tooltip]="fetchDatasets.searchUtils.totalResults > 0 ? 'cls: uk-invisible' : 'cls: uk-active'"
title="No report available">
<a [class]="fetchDatasets.searchUtils.totalResults > 0 ? 'clickable' : 'uk-disabled uk-link-muted'"
(click)="downloadFile(getCSVAffiliated('datasets'), 'datasets' + '-report')">
<span uk-icon="download"></span>
<span class="uk-text-capitalize uk-margin-small-left">research data (CSV)</span>
</a>
</li>
<li [attr.uk-tooltip]="fetchSoftware.searchUtils.totalResults > 0 ? 'cls: uk-invisible' : 'cls: uk-active'"
title="No report available">
<a [class]="fetchSoftware.searchUtils.totalResults > 0 ? 'clickable' : 'uk-disabled uk-link-muted'"
(click)="downloadFile(getCSVAffiliated('software'), 'software' + '-report')">
<span uk-icon="download"></span>
<span class="uk-text-capitalize uk-margin-small-left">software (CSV)</span>
</a>
</li>
<li [attr.uk-tooltip]="fetchOrps.searchUtils.totalResults > 0 ? 'cls: uk-invisible' : 'cls: uk-active'"
title="No report available">
<a [class]="fetchOrps.searchUtils.totalResults > 0 ? 'clickable' : 'uk-disabled uk-link-muted'"
(click)="downloadFile(getCSVAffiliated('other'), 'other' + '-report')">
<span uk-icon="download"></span>
<span class="uk-text-capitalize uk-margin-small-left">other research products (CSV)</span>
</a>
</li>
</ul>
<div *ngIf="total == 0"
class="uk-text-muted">
No reports available
</div>
</div>
</div>
<!-- Share -->
<modal-alert #addThisModal classBody="uk-flex uk-flex-center uk-flex-middle">
<addThis></addThis>
</modal-alert>
<!-- Download Funder report -->
<modal-alert #downloadFunderReportModal [classTitle]="'landing-modal-header uk-padding-small'"
[classBody]="'uk-padding-remove landing-modal'">
<div *ngIf="fetchProjects.funders && fetchProjects.funders.length > 0" class="uk-padding">
<div class="uk-animation-slide-top-small">
<div>
<mat-form-field class="matSelectionFormField uk-width-1-1">
<mat-label>Select a funder to download report</mat-label>
<mat-select [(value)]="funder"
[disableOptionCentering]="true"
class="matSelection" panelClass="matSelectionPanel">
<mat-option *ngFor="let element of fetchProjects.funders"
[value]="element">{{element.name}}
</mat-option>
</mat-select>
</mat-form-field>
</div>
<div *ngIf="funder && funder != ''"
class="uk-animation-slide-top-small uk-margin-top">
<ul class="uk-margin-remove-bottom uk-list">
<li>
<a class="clickable"
(click)="downloadFile(getFunderProjects(), funder.name + '-projects-report')">
<span uk-icon="download"></span>
<span class="uk-text-capitalize uk-margin-small-left">projects (CSV)</span>
</a>
</li>
<li *ngFor="let contentType of contentTypes">
<a class="clickable"
(click)="confirmOpenApplyAll(contentType[0])">
<span uk-icon="download"></span>
<span class="uk-text-capitalize uk-margin-small-left">{{contentType[1]}} (CSV)</span>
</a>
</li>
</ul>
</div>
</div>
</div>
<!-- Download content lists -->
<modal-alert #downloadReportModal>
<div class="uk-padding-small uk-margin-small-left uk-margin-small-right">
<div class="uk-padding-small uk-padding-remove-vertical">
<div class="uk-animation-slide-top-small">
<ul class="uk-list uk-margin-remove-bottom" *ngIf="total > 0">
<li [attr.uk-tooltip]="total > 0 ? 'cls: uk-invisible' : 'cls: uk-active'"
title="No report available">
<div class="uk-flex uk-flex-middle uk-button uk-button-link uk-text-normal"
[class]="total > 0 ? '' : 'uk-disabled uk-text-muted'"
(click)="downloadFile(getCSVAffiliated('results'), 'results' + '-report')">
<icon name="download" flex="true" class="uk-margin-small-right"></icon>
all research outcomes (CSV)
</div>
</li>
<li [attr.uk-tooltip]="fetchPublications.searchUtils.totalResults > 0 ? 'cls: uk-invisible' : 'cls: uk-active'"
title="No report available">
<div class="uk-flex uk-flex-middle uk-button uk-button-link uk-text-normal"
[class]="fetchPublications.searchUtils.totalResults > 0 ? '' : 'uk-disabled uk-text-muted'"
(click)="downloadFile(getCSVAffiliated('publications'), 'publications' + '-report')">
<icon name="download" flex="true" class="uk-margin-small-right"></icon>
publications (CSV)
</div>
</li>
<li [attr.uk-tooltip]="fetchDatasets.searchUtils.totalResults > 0 ? 'cls: uk-invisible' : 'cls: uk-active'"
title="No report available">
<div class="uk-flex uk-flex-middle uk-button uk-button-link uk-text-normal"
[class]="fetchDatasets.searchUtils.totalResults > 0 ? '' : 'uk-disabled uk-text-muted'"
(click)="downloadFile(getCSVAffiliated('datasets'), 'datasets' + '-report')">
<icon name="download" flex="true" class="uk-margin-small-right"></icon>
research data (CSV)
</div>
</li>
<li [attr.uk-tooltip]="fetchSoftware.searchUtils.totalResults > 0 ? 'cls: uk-invisible' : 'cls: uk-active'"
title="No report available">
<div class="uk-flex uk-flex-middle uk-button uk-button-link uk-text-normal"
[class]="fetchSoftware.searchUtils.totalResults > 0 ? '' : 'uk-disabled uk-text-muted'"
(click)="downloadFile(getCSVAffiliated('software'), 'software' + '-report')">
<icon name="download" flex="true" class="uk-margin-small-right"></icon>
software (CSV)
</div>
</li>
<li [attr.uk-tooltip]="fetchOrps.searchUtils.totalResults > 0 ? 'cls: uk-invisible' : 'cls: uk-active'"
title="No report available">
<div class="uk-flex uk-flex-middle uk-button uk-button-link uk-text-normal"
[class]="fetchOrps.searchUtils.totalResults > 0 ? '' : 'uk-disabled uk-text-muted'"
(click)="downloadFile(getCSVAffiliated('other'), 'other' + '-report')">
<icon name="download" flex="true" class="uk-margin-small-right"></icon>
other research products (CSV)
</div>
</li>
</ul>
<div *ngIf="total == 0" class="uk-text-muted">
No reports available
</div>
</div>
</div>
</div>
</modal-alert>
<!-- Download project lists -->
<modal-alert #downloadFunderReportModal>
<div class="uk-padding-small uk-margin-small-left uk-margin-small-right">
<div class="uk-padding-small uk-padding-remove-vertical" *ngIf="fetchProjects.funders && fetchProjects.funders.length > 0">
<div input type="select" placeholder="Select a funder to download report" inputClass="flat x-small"
[options]="fetchProjects.funders" [(value)]="funder"></div>
<div class="uk-animation-slide-top-small uk-margin-medium-top" *ngIf="funder && funder != ''">
<ul class="uk-list uk-margin-remove-bottom">
<li>
<div class="uk-flex uk-flex-middle uk-button uk-button-link uk-text-normal"
(click)="downloadFile(getFunderProjects(), funder.name + '-projects-report')">
<icon name="download" flex="true" class="uk-margin-small-right"></icon>
projects (CSV)
</div>
</li>
<li *ngFor="let contentType of contentTypes">
<div class="uk-flex uk-flex-middle uk-button uk-button-link uk-text-normal"
(click)="confirmOpenApplyAll(contentType[0])">
<icon name="download" flex="true" class="uk-margin-small-right"></icon>
{{contentType[1]}} (CSV)
</div>
</li>
</ul>
</div>
</div>
</div>
</modal-alert>
<modal-loading></modal-loading>
<modal-alert #AlertModalApplyAll (alertOutput)="confirmCloseApplyAll()"></modal-alert>
<modal-alert #AlertModalCsvError></modal-alert>
<modal-loading></modal-loading>

View File

@ -67,6 +67,7 @@ export class OrganizationComponent {
@ViewChild('downloadReportModal') downloadReportModal;
@ViewChild('downloadFunderReportModal') downloadFunderReportModal;
@ViewChild('addThisModal') addThisModal;
@ViewChild(ModalLoading) loading: ModalLoading;
// Alert box when CSV: Project Publications for a funder is requested
@ -91,6 +92,12 @@ export class OrganizationComponent {
public funder: any = "";
private funderId: string;
private funderCount: number;
public offset: number;
public stickyHeader: boolean = false;
public graph_offset: number = 0;
@ViewChild("graph_and_feedback") graph_and_feedback;
subscriptions = [];
innerReportSubscriptions = [];
properties: EnvProperties;
@ -103,6 +110,7 @@ export class OrganizationComponent {
public deleteByInferenceOpened: boolean = false;
constructor(private element: ElementRef,
private _organizationService: OrganizationService,
private _piwikService: PiwikService,
@ -161,11 +169,20 @@ export class OrganizationComponent {
}
this.csvParamsTail = '" and relorganizationid exact "' + this.organizationId + '" ))';
}));
this.downloadURLAPI = this.properties.csvAPIURL;
//this.csvAffiliatedPublications = this.downloadURLAPI + "?format=csv&type=publications&fq=(((oaftype exact result) and (resulttypeid exact publication)) and (relorganizationid exact \"" + this.organizationId + "\"))";
this.csvProjectParamsHead = 'format=csv&type=projects&fq=((funder exact "';
//this.csvPublicationParamsHead = 'format=csv-special&type=publications&page=0&query=((((oaftype exact result) and (resulttypeid exact publication)) and (funderid exact ';
this.offset = Number.parseInt(getComputedStyle(document.documentElement).getPropertyValue('--navbar-height'));
}
ngAfterContentChecked() {
if(this.graph_and_feedback && window) {
this.graph_offset = this.calcGraphOffset();
}
}
calcGraphOffset() {
return window.innerHeight-this.graph_and_feedback.nativeElement.offsetHeight;
}
private getPageContents() {
@ -325,6 +342,7 @@ export class OrganizationComponent {
}
this.fetchProjects.getResultsForOrganizations(this.organizationId, "", 1, this.searchNumber, refineFields, this.properties);
// console.log(this.fetchProjects);
this.showLoading = false;
}
},
@ -631,6 +649,13 @@ export class OrganizationComponent {
this.downloadFunderReportModal.cancel();
}
public openAddThisModal() {
this.addThisModal.cancelButton = false;
this.addThisModal.okButton = false;
this.addThisModal.alertTitle = "Share this organization in your social networks";
this.addThisModal.open();
}
public getParamsForSearchLink(type: string = "") {
if(type) {
return this.routerHelper.createQueryParams(['f0', 'fv0', 'type', 'qf', 'sortBy'], ['relorganizationid', this.organizationId, type, 'false', 'resultdateofacceptance,descending']);

View File

@ -27,6 +27,11 @@ import {FeedbackModule} from "../feedback/feedback.module";
import {MatSelectModule} from "@angular/material/select";
import {TabsModule} from "../../utils/tabs/tabs.module";
import {SearchTabModule} from "../../utils/tabs/contents/search-tab.module";
import {LoadingModule} from '../../utils/loading/loading.module';
import {IconsModule} from '../../utils/icons/icons.module';
import {InputModule} from '../../sharedComponents/input/input.module';
import {IconsService} from '../../utils/icons/icons.service';
import {graph} from "../../utils/icons/icons";
@NgModule({
@ -45,7 +50,7 @@ import {SearchTabModule} from "../../utils/tabs/contents/search-tab.module";
Schema2jsonldModule, SEOServiceModule, HelperModule,
OrganizationsDeletedByInferenceModule, LandingHeaderModule, FeedbackModule,
MatSelectModule,
TabsModule, SearchTabModule
TabsModule, SearchTabModule, LoadingModule, IconsModule, InputModule
],
declarations: [
OrganizationComponent,
@ -56,4 +61,7 @@ import {SearchTabModule} from "../../utils/tabs/contents/search-tab.module";
]
})
export class OrganizationModule {
constructor(private iconsService: IconsService) {
this.iconsService.registerIcons([graph]);
}
}

View File

@ -15,7 +15,6 @@
<div class="landing-left-sidebar-width landing-left-sidebar-border landing-background-light-color">
<div class="uk-flex uk-flex-column uk-flex-between uk-flex-center landing-sidebar-height uk-sticky"
uk-sticky="bottom: true" [attr.offset]="offset">
<!-- [class.uk-hidden]="!hasAltMetrics && !metricsCalculated"-->
<div class="uk-align-center uk-text-center uk-margin-medium-top uk-flex uk-flex-column uk-flex-between">
<ng-container *ngIf="projectInfo && hasMetrics">
<metrics [pageViews]="pageViews"
@ -128,17 +127,18 @@
<div class="uk-margin-bottom">
<ng-container *ngIf="projectInfo.openAccessMandatePublications != undefined && projectInfo.openAccessMandatePublications && projectInfo.openAccessMandateDatasets != undefined && projectInfo.openAccessMandateDatasets">
<span class="uk-label uk-label-success uk-text-truncate"
title="Open Access mandate for Publications and Research Data">Open Access mandate for Publications and Research Data
title="Open Access mandate for {{openaireEntities.PUBLICATIONS}} and {{openaireEntities.DATASETS}}">
Open Access mandate for {{openaireEntities.PUBLICATIONS}} and {{openaireEntities.DATASETS}}
</span>&#160;
</ng-container>
<ng-container *ngIf="projectInfo.openAccessMandatePublications != undefined && projectInfo.openAccessMandatePublications && (projectInfo.openAccessMandateDatasets == undefined || !projectInfo.openAccessMandateDatasets)">
<span class="uk-label uk-label-success uk-text-truncate" title="Open Access mandate for Publications">
Open Access mandate for Publications
<span class="uk-label uk-label-success uk-text-truncate" title="Open Access mandate for {{openaireEntities.PUBLICATIONS}}">
Open Access mandate for {{openaireEntities.PUBLICATIONS}}
</span>&#160;
</ng-container>
<ng-container *ngIf="projectInfo.openAccessMandateDatasets != undefined && projectInfo.openAccessMandateDatasets && (projectInfo.openAccessMandatePublications == undefined || !projectInfo.openAccessMandatePublications)">
<span class="uk-label uk-label-success uk-text-truncate" title="Open Access mandate for Research Data">
Open Access mandate for Research Data
<span class="uk-label uk-label-success uk-text-truncate" title="Open Access mandate for {{openaireEntities.DATASETS}}">
Open Access mandate for {{openaireEntities.DATASETS}}
</span>&#160;
</ng-container>
<ng-container *ngIf="projectInfo.funding && projectInfo.funding.funderName">
@ -221,13 +221,12 @@
<span
*ngIf="projectInfo.openAccessMandatePublications != undefined && !projectInfo.openAccessMandatePublications"
class="uk-margin-right">
<span class="uk-text-meta">Publications: </span>
<!-- <span *ngIf="projectInfo.openAccessMandatePublications">Yes</span>-->
<span class="uk-text-meta">{{openaireEntities.PUBLICATIONS}}: </span>
<span>No</span>
</span>
<span
*ngIf="projectInfo.openAccessMandateDatasets != undefined && !projectInfo.openAccessMandateDatasets">
<span class="uk-text-meta">Research Data: </span>
<span class="uk-text-meta">{{openaireEntities.DATASETS}}: </span>
<span>No</span>
</span>
</div>
@ -243,16 +242,16 @@
<my-tabs (selectedActiveTab)="onSelectActiveTab($event)" [offsetForSticky]="offset" [(isSticky)]="stickyHeader">
<my-tab tabTitle="Summary" [tabId]="'summary'" [active]="true"></my-tab>
<my-tab *ngIf="fetchPublications.searchUtils.totalResults > 0"
[tabTitle]="'Publications'" [tabNumber]="fetchPublications.searchUtils.totalResults"
[tabTitle]="openaireEntities.PUBLICATIONS" [tabNumber]="fetchPublications.searchUtils.totalResults"
[tabId]="'publications'"></my-tab>
<my-tab *ngIf="fetchDatasets.searchUtils.totalResults > 0"
[tabTitle]="'Research Data'" [tabNumber]="fetchDatasets.searchUtils.totalResults"
[tabTitle]="openaireEntities.DATASETS" [tabNumber]="fetchDatasets.searchUtils.totalResults"
[tabId]="'datasets'"></my-tab>
<my-tab *ngIf="fetchSoftware.searchUtils.totalResults > 0"
[tabTitle]="'Software'" [tabNumber]="fetchSoftware.searchUtils.totalResults"
[tabTitle]="openaireEntities.SOFTWARE" [tabNumber]="fetchSoftware.searchUtils.totalResults"
[tabId]="'software'"></my-tab>
<my-tab *ngIf="fetchOrps.searchUtils.totalResults > 0"
[tabTitle]="'Other Research'" [tabNumber]="fetchOrps.searchUtils.totalResults"
[tabTitle]="openaireEntities.OTHER" [tabNumber]="fetchOrps.searchUtils.totalResults"
[tabId]="'other'"></my-tab>
<my-tab [tabTitle]="'Dmps'" [tabNumber]="fetchDmps.searchUtils.totalResults > 0 ? fetchDmps.searchUtils.totalResults : ''" [tabId]="'dmps'"></my-tab>
<my-tab *ngIf="(fetchPublications.searchUtils.totalResults > 0 || fetchDatasets.searchUtils.totalResults > 0
@ -271,24 +270,6 @@
</div>
</div>
<div *ngIf="hasPrimaryInfo" class="uk-width-expand uk-padding uk-inline">
<!-- <div class="uk-text-meta uk-margin-small-bottom">Description</div>-->
<!-- <div class="uk-text-justify uk-height-max-medium uk-overflow-auto">-->
<!-- <span>{{projectInfo.description.substring(0, showNumDescription)}}</span>-->
<!-- <span *ngIf="showNumDescription == thresholdDescription &&-->
<!-- projectInfo.description.length > thresholdDescription">...</span>-->
<!-- </div>-->
<!-- <div *ngIf="showNumDescription == thresholdDescription &&-->
<!-- projectInfo.description.length > thresholdDescription" class="uk-text-right">-->
<!-- <a (click)="showNumDescription = projectInfo.description.length;">-->
<!-- Read more-->
<!-- </a>-->
<!-- </div>-->
<!-- <div *ngIf="projectInfo.description && showNumDescription > thresholdDescription"-->
<!-- class="uk-text-right">-->
<!-- <a (click)="showNumDescription = thresholdDescription;">-->
<!-- Read less-->
<!-- </a>-->
<!-- </div>-->
<!-- Description -->
<div *ngIf="projectInfo.description && projectInfo.description.length > 0"
class="uk-margin-medium-bottom">
@ -309,41 +290,6 @@
<div class="uk-text-meta uk-margin-small-bottom">Partners</div>
<div class="uk-margin-medium-bottom">
<ng-container *ngTemplateOutlet="organizations_template; context: { threshold: lessBtnOrganizations ? projectInfo.organizations.length : thresholdOrganizations }"></ng-container>
<!-- <div class="uk-height-max-medium uk-overflow-auto">-->
<!-- <span-->
<!-- *ngFor="let organization of projectInfo.organizations.slice(0, (viewAllOrganizations && lessBtnOrganizations) ? projectInfo.organizations.length : thresholdOrganizations) let i=index"-->
<!-- [attr.uk-tooltip]="organization.acronym && organization.name ? 'pos:right; delay:10' : 'cls: uk-invisible'"-->
<!-- [title]="organization.name">-->
<!-- <a *ngIf="organization.id" class="uk-link-text"-->
<!-- [queryParams]="{organizationId: organization.id}" routerLinkActive="router-link-active"-->
<!-- [routerLink]="properties.searchLinkToOrganization.split('?')[0]">-->
<!-- {{(organization.acronym) ? organization.acronym : ''}}-->
<!-- {{(!organization.acronym && organization.name) ? organization.name : ''}}-->
<!-- </a>-->
<!-- <span *ngIf="!organization.id">-->
<!-- <span *ngIf="organization.acronym">{{organization.acronym}}</span>-->
<!-- <span *ngIf="!organization.acronym && organization.name">{{organization.name}}</span>-->
<!-- </span>-->
<!-- <span *ngIf="(i < projectInfo.organizations.length-1)">, </span>-->
<!-- </span>-->
<!-- <span-->
<!-- *ngIf="!lessBtnOrganizations && projectInfo.organizations.length > thresholdOrganizations"> ... </span>-->
<!-- </div>-->
<!-- <div-->
<!-- *ngIf="showNumOrganizations == thresholdOrganizations && projectInfo.organizations.length > thresholdOrganizations"-->
<!-- class="uk-width-1-1 uk-text-right uk-margin-small-top">-->
<!-- <a (click)="showNumOrganizations = projectInfo.organizations.length;">-->
<!-- View all {{projectInfo.organizations.length | number}} organizations-->
<!-- </a>-->
<!-- </div>-->
<!-- <div *ngIf="showNumOrganizations > thresholdOrganizations"-->
<!-- class="uk-width-1-1 uk-text-right uk-margin-small-top">-->
<!-- <a (click)="showNumOrganizations = thresholdOrganizations;">View less organizations</a>-->
<!-- </div>-->
<div *ngIf="projectInfo.organizations.length > thresholdOrganizations && !lessBtnOrganizations"
class="uk-text-center">
<a (click)="viewAllOrganizationsClick();">
@ -458,19 +404,11 @@
</div>
</div>
</ng-container>
<!-- <ng-container *ngIf="resultLandingInfo.references && resultLandingInfo.references.length > 0">-->
<!-- <div id="references" class="landing-section uk-padding uk-padding-remove-horizontal">-->
<!-- </div>-->
<!-- </ng-container>-->
</div>
<div class="uk-text-xsmall uk-hidden@m"><ng-container *ngTemplateOutlet="graph_and_feedback_template"></ng-container></div>
<helper *ngIf="pageContents && pageContents['bottom'] && pageContents['bottom'].length > 0"
[texts]="pageContents['bottom']"></helper>
</div>
</div>
@ -478,55 +416,6 @@
</div>
</div>
<!--<div id="tm-main" class="landing uk-section uk-padding-remove-top tm-middle">-->
<!-- <div *ngIf="!showFeedback" uk-grid>-->
<!-- <div class="tm-main uk-width-1-1@s uk-width-1-1@m uk-width-1-1@l uk-row-first ">-->
<!-- <div id="project" class="uk-container uk-container-large uk-margin-medium-top project">-->
<!-- <div *ngIf="projectInfo != null">-->
<!-- <div class="main-tabs-div">-->
<!-- <my-tabs (selectedActiveTab)="onSelectActiveTab($event)">-->
<!-- <my-tab-->
<!-- [tabTitle]="'Publications'" [tabNumber]="fetchPublications.searchUtils.totalResults"-->
<!-- [tabId]="'publications'">-->
<!-- <ng-container *ngTemplateOutlet="publications_tab;"></ng-container>-->
<!-- </my-tab>-->
<!-- <my-tab-->
<!-- [tabTitle]="'Research Data'" [tabNumber]="fetchDatasets.searchUtils.totalResults"-->
<!-- [tabId]="'datasets'">-->
<!-- <ng-container *ngTemplateOutlet="datasets_tab;"></ng-container>-->
<!-- </my-tab>-->
<!-- <my-tab-->
<!-- [tabTitle]="'Software'" [tabNumber]="fetchSoftware.searchUtils.totalResults"-->
<!-- [tabId]="'software'">-->
<!-- <ng-container *ngTemplateOutlet="software_tab;"></ng-container>-->
<!-- </my-tab>-->
<!-- <my-tab-->
<!-- [tabTitle]="'Other Research'" [tabNumber]="fetchOrps.searchUtils.totalResults"-->
<!-- [tabId]="'other'">-->
<!-- <ng-container *ngTemplateOutlet="other_tab;"></ng-container>-->
<!-- </my-tab>-->
<!-- <my-tab-->
<!-- [tabTitle]="'Dmps'" [tabNumber]="fetchDmps.searchUtils.totalResults"-->
<!-- [tabId]="'dmps'">-->
<!-- <ng-container *ngTemplateOutlet="dmps_tab;"></ng-container>-->
<!-- </my-tab>-->
<!-- <my-tab *ngIf="(fetchPublications.searchUtils.totalResults > 0 || fetchDatasets.searchUtils.totalResults > 0-->
<!-- || fetchSoftware.searchUtils.totalResults > 0 || fetchOrps.searchUtils.totalResults > 0)"-->
<!-- [tabTitle]="'Statistics'" customClass="statistics" [tabId]="'statistics'">-->
<!-- <ng-container *ngTemplateOutlet="statistics_tab;"></ng-container>-->
<!-- </my-tab>-->
<!-- </my-tabs>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!--</div>-->
<feedback *ngIf="projectInfo && properties.reCaptchaSiteKey" [projectInfo]="projectInfo"
[properties]="properties" [entityType]="'project'" [title]="projectName" [fields]="feedbackFields"
[(showForm)]="showFeedback"></feedback>
@ -557,12 +446,6 @@
For further information contact us at
<u><a [href]="'mailto:'+properties.helpdeskEmail" class="uk-link-text">{{properties.helpdeskEmail}}</a></u>
</div>
<!-- <div *ngIf="embed_research_results_type" class="uk-animation-slide-top-small">-->
<!-- <ng-container *ngTemplateOutlet="embed_research_results_box;-->
<!-- context: { dynamic_content: getDynamicContent(embed_research_results_type) }">-->
<!-- </ng-container>-->
<!-- </div>-->
</div>
</div>
</modal-alert>
@ -570,56 +453,6 @@
<modal-alert *ngIf="projectInfo" #downloadReportModal>
<div class="uk-padding-small uk-margin-small-left uk-margin-small-right">
<div class="uk-padding-small uk-padding-remove-vertical">
<!-- *ngIf="projectInfo.funding &&-->
<!-- (fetchPublications.searchUtils.totalResults > 0 ||-->
<!-- fetchDatasets.searchUtils.totalResults > 0 ||-->
<!-- fetchSoftware.searchUtils.totalResults > 0 ||-->
<!-- fetchOrps.searchUtils.totalResults > 0)"-->
<!-- <mat-form-field-->
<!-- class="matSelectionFormField uk-width-1-1">-->
<!-- <mat-label>Select content type report to download</mat-label>-->
<!-- <mat-select [(value)]="download_research_results_type"-->
<!-- [disableOptionCentering]="true"-->
<!-- panelClass="entitiesSelectionPanel"-->
<!-- class="matSelection">-->
<!-- &lt;!&ndash; <mat-option value="">Select content type</mat-option>&ndash;&gt;-->
<!-- <mat-option value="results"-->
<!-- [disabled]="!projectInfo.funding ||-->
<!-- (fetchPublications.searchUtils.totalResults == 0 &&-->
<!-- fetchDatasets.searchUtils.totalResults == 0 &&-->
<!-- fetchSoftware.searchUtils.totalResults == 0 &&-->
<!-- fetchOrps.searchUtils.totalResults == 0)"-->
<!-- [attr.uk-tooltip]="(fetchPublications.searchUtils.totalResults == 0 || fetchPublications.searchUtils.status != errorCodes.DONE) ? 'cls: uk-active' : 'cls: uk-invisible'"-->
<!-- title="No report available">-->
<!-- All research outcomes-->
<!-- </mat-option>-->
<!-- <mat-option value="publications"-->
<!-- [disabled]="!projectInfo.funding || fetchPublications.searchUtils.totalResults == 0 || fetchPublications.searchUtils.status != errorCodes.DONE"-->
<!-- [attr.uk-tooltip]="(fetchPublications.searchUtils.totalResults == 0 || fetchPublications.searchUtils.status != errorCodes.DONE) ? 'cls: uk-active' : 'cls: uk-invisible'"-->
<!-- title="No report available">-->
<!-- Publications-->
<!-- </mat-option>-->
<!-- <mat-option value="datasets"-->
<!-- [disabled]="!projectInfo.funding || fetchDatasets.searchUtils.totalResults == 0 || fetchDatasets.searchUtils.status != errorCodes.DONE"-->
<!-- [attr.uk-tooltip]="(fetchDatasets.searchUtils.totalResults == 0 || fetchDatasets.searchUtils.status != errorCodes.DONE) ? 'cls: uk-active' : 'cls: uk-invisible'"-->
<!-- title="No report available">-->
<!-- Research data-->
<!-- </mat-option>-->
<!-- <mat-option value="software"-->
<!-- [disabled]="!projectInfo.funding || fetchSoftware.searchUtils.totalResults == 0 || fetchSoftware.searchUtils.status != errorCodes.DONE"-->
<!-- [attr.uk-tooltip]="(fetchSoftware.searchUtils.totalResults == 0 || fetchSoftware.searchUtils.status != errorCodes.DONE) ? 'cls: uk-active' : 'cls: uk-invisible'"-->
<!-- title="No report available">-->
<!-- Software-->
<!-- </mat-option>-->
<!-- <mat-option value="other"-->
<!-- [disabled]="!projectInfo.funding || fetchOrps.searchUtils.totalResults == 0 || fetchOrps.searchUtils.status != errorCodes.DONE"-->
<!-- [attr.uk-tooltip]="(fetchOrps.searchUtils.totalResults == 0 || fetchOrps.searchUtils.status != errorCodes.DONE) ? 'cls: uk-active' : 'cls: uk-invisible'"-->
<!-- title="No report available">-->
<!-- Other research products-->
<!-- </mat-option>-->
<!-- </mat-select>-->
<!-- </mat-form-field>-->
<div input type="select" placeholder="Select content type report to download" inputClass="flat x-small"
[options]="resultTypesForDownloading" [(value)]="download_research_results_type" (click)="buildResultTypesForDownloading()"></div>
<div *ngIf="download_research_results_type" class="uk-animation-slide-top-small uk-margin-medium-top">
@ -642,36 +475,6 @@
</div>
</modal-alert>
<ng-template #embed_research_results_box
let-dynamic_content="dynamic_content">
<ul class="uk-list uk-margin-remove-bottom">
<li>
<div id="dynamic_content_id1">
<pre class="box-content uk-padding-remove-bottom uk-margin-remove-bottom"><code
id="clipboard">{{dynamic_content}}</code></pre>
<div class="uk-grid uk-margin-small-top">
<a
class="clipboard_btn uk-padding-remove-left uk-margin-small-left uk-text-right uk-width-1-1"
data-clipboard-target="#clipboard" title="Copy to clipboard">
<button class="uk-button uk-button-small uk-button-secondary uk-icon">
<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" icon="copy" ratio="1">
<rect fill="none" stroke="#000" x="3.5" y="2.5" width="12" height="16"></rect>
<polyline fill="none" stroke="#000" points="5 0.5 17.5 0.5 17.5 17"></polyline>
</svg>
<span class="uk-margin-small-left">COPY</span>
</button>
</a>
</div>
<div class="uk-text-small uk-margin-small-top">
For further information contact us at
<u><a [href]="'mailto:'+properties.helpdeskEmail" class="uk-link-text">{{properties.helpdeskEmail}}</a></u>
</div>
</div>
</li>
</ul>
</ng-template>
<ng-template #download_research_results_box
let-type="type" let-fileName_type="fileName_type" let-csvParams="csvParams">
<ul class="uk-list uk-margin-remove-bottom">

View File

@ -1,4 +1,4 @@
import {ChangeDetectorRef, Component, Input, ViewChild} from '@angular/core';
import {Component, Input, ViewChild} from '@angular/core';
import {ActivatedRoute, Router} from '@angular/router';
import {Meta, Title} from '@angular/platform-browser';
@ -112,7 +112,7 @@ export class ProjectComponent {
public showFeedback: boolean;
public feedbackFields: string [] = [
'Title', 'Funding Information', 'Duration',
'Organizations', 'Other'];
OpenaireEntities.ORGANIZATIONS, 'Other'];
@ViewChild(ModalLoading) loading: ModalLoading;
// Alert box when something is wrong with CSV requests
@ -186,6 +186,7 @@ export class ProjectComponent {
this.subscriptions.push(this.route.queryParams.subscribe(params => {
this.stickyHeader = false;
this.metricsClicked = false;
this.statsClicked = false;
this.fetchPublications = new FetchResearchResults(this._searchResearchResultsService);

View File

@ -15,7 +15,6 @@
<div class="landing-left-sidebar-width landing-left-sidebar-border landing-background-light-color">
<div class="uk-flex uk-flex-column uk-flex-between uk-flex-center landing-sidebar-height uk-sticky"
uk-sticky="bottom: true" [attr.offset]="offset">
<!-- [class.uk-hidden]="!hasAltMetrics && !metricsCalculated"-->
<div class="uk-align-center uk-text-center uk-margin-medium-top uk-flex uk-flex-column uk-flex-between">
<ng-container *ngIf="resultLandingInfo && (hasAltMetrics || hasMetrics)">
<metrics *ngIf="hasMetrics" class="uk-margin-bottom"
@ -67,22 +66,6 @@
<orcid-work [resultId]="id" [resultTitle]="resultLandingInfo.title" [resultLandingInfo]="resultLandingInfo"
[pids]="pidsArrayString" [pageType]="'landing'">
</orcid-work>
<!-- <li *ngIf="properties.b2noteAPIURL" class="uk-text-center" [attr.uk-tooltip]="'title: add annotation; pos: right; cls: uk-active landing-action-tooltip landing-action-tooltip-primary'">-->
<!-- <a *ngIf="isLoggedIn && pid" (click)="annotation.toggleAnnotation($event)">-->
<!-- <span class="uk-icon-button uk-icon landing-action-button landing-action-button-primary">-->
<!-- <img src="assets/common-assets/b2note.png" loading="lazy" alt="b2note" style="width:34px; height:21px">-->
<!-- </span>-->
<!-- </a>-->
<!-- <span *ngIf="!pid || !isLoggedIn" class="uk-text-muted half-opacity"-->
<!-- [title]="!pid?'Annotations are available only for resources with a PID (persistent identifier) like DOI, handle, PMID':-->
<!-- 'Annotations are available only for logged in users'"-->
<!-- [attr.uk-tooltip]="'pos: right; cls: uk-active landing-action-tooltip landing-action-tooltip-primary'">-->
<!-- <span class="uk-icon-button uk-icon landing-action-button landing-action-button-primary uk-disabled">-->
<!-- <img src="assets/common-assets/b2note.png" loading="lazy" alt="b2note" style="width:34px;-->
<!-- height:21px">-->
<!-- </span>-->
<!-- </span>-->
<!-- </li>-->
</ul>
</div>
</div>
@ -278,7 +261,7 @@
</ng-container>
<ng-container *ngIf="resultLandingInfo.relatedResults?.length > 0">
<div id="all_related" class="landing-section uk-padding uk-padding-remove-horizontal">
<ng-container *ngTemplateOutlet="relation_in_tab; context: { researchResults: filteredRelatedResults, header: '', relatedClassFilters: resultLandingInfo.relatedClassFilters}"></ng-container>
<ng-container *ngTemplateOutlet="relation_in_tab; context: { researchResults: filteredRelatedResults, header: ''}"></ng-container>
</div>
</ng-container>
<ng-container *ngIf="resultLandingInfo.bioentities && bioentitiesNum> 0">
@ -382,16 +365,12 @@
&& (properties.environment == 'beta' || properties.environment == 'development') && (!viewAll || viewAll=='egiNotebook')">
<a class="uk-link-text uk-text-bold custom-external"
target="_blank" [href]="properties.egiNotebookLink">
<!-- <span class="uk-icon-button uk-icon">-->
<img src="assets/common-assets/eosc-logo.png"
loading="lazy" alt="eosc_logo" style="width:27px; height:27px">
<!-- </span>-->
<span class="uk-margin-small-left uk-text-uppercase"><u>EOSC SERVICE: EGI NOTEBOOK</u></span>
</a>
</div>
<!-- <hr *ngIf="resultLandingInfo.showEgiNotebookButton && properties.adminToolsPortalType == 'explore'-->
<!-- && (properties.environment == 'beta' || properties.environment == 'development')">-->
<div *ngIf="resultLandingInfo.sdg && resultLandingInfo.sdg.length > 0 && (!viewAll || viewAll=='sdg')">
<div *ngIf="resultLandingInfo.sdg && resultLandingInfo.sdg.length > 0 && (!viewAll || viewAll=='sdg')">
<sdg [subjects]="resultLandingInfo.sdg" (viewAllClicked)="viewAll=$event"></sdg>
</div>
<div *ngIf="resultLandingInfo.fos && resultLandingInfo.fos.length > 0 && (!viewAll || viewAll=='fos')">
@ -401,25 +380,15 @@
<div *ngIf="resultLandingInfo.fundedByProjects && resultLandingInfo.fundedByProjects.length > 0 && (!viewAll || viewAll=='fundedBy')">
<fundedBy [fundedByProjects]="resultLandingInfo.fundedByProjects" (viewAllClicked)="viewAll=$event"></fundedBy>
</div>
<!-- <hr *ngIf="resultLandingInfo.fundedByProjects && resultLandingInfo.fundedByProjects.length > 0">-->
<!-- Communities -->
<div *ngIf="resultLandingInfo.contexts && resultLandingInfo.contexts.length > 0 && !noCommunities && (!viewAll || viewAll=='relatedTo')">
<relatedTo [contexts]="resultLandingInfo.contexts" [viewAll]="viewAll=='relatedTo'"
(viewAllClicked)="viewAll=$event" (noCommunities)="noCommunities = true"></relatedTo>
</div>
<!-- <hr *ngIf="resultLandingInfo.contexts && resultLandingInfo.contexts.length > 0"-->
<!-- Download From -->
<div *ngIf="resultLandingInfo.hostedBy_collectedFrom && resultLandingInfo.hostedBy_collectedFrom.length > 0 && (!viewAll || viewAll=='availableOn')">
<!-- <div class="uk-inline">-->
<!-- <button class="uk-button uk-button-default" type="button">Click</button>-->
<!-- <div uk-dropdown="mode: click">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.</div>-->
<!-- </div>-->
<!-- <div class="uk-button uk-button-default button-drop uk-width-1-1">Select a source...</div>-->
<availableOn [availableOn]="resultLandingInfo.hostedBy_collectedFrom" (viewAllClicked)="viewAll=$event"></availableOn>
</div>
<!-- style="border: 1px solid red">-->
<!-- <div *ngFor="let item of fakeArray.slice(0, 50); let i=index">test3.{{i}}</div>-->
</div>
</ng-template>
</ng-container>
@ -434,33 +403,26 @@
<!-- Other versions -->
<modal-alert *ngIf="resultLandingInfo && resultLandingInfo.deletedByInferenceIds"
#AlertModalDeletedByInference large="true">
<!-- <landing-header [properties]="properties" [title]="resultLandingInfo.title" [modal]="AlertModalDeletedByInference"-->
<!-- [subTitle]="resultLandingInfo.subtitle" [authorLimit]="10" [showAllAuthors]="false"-->
<!-- titleClass="title-grey-background"-->
<!-- [entityType]="getTypeName()" [authors]="resultLandingInfo.authors" [types]="resultLandingInfo.types"-->
<!-- [year]="resultLandingInfo.date" [embargoEndDate]="resultLandingInfo.embargoEndDate"-->
<!-- [isTitleH1]="false">-->
<!-- </landing-header>-->
<deletedByInference *ngIf="type == 'publication' && deleteByInferenceOpened"
[id]="resultLandingInfo.record['result']['header']['dri:objIdentifier']"
[ids]="resultLandingInfo.deletedByInferenceIds"
[modal]="AlertModalDeletedByInference"
[resultType]="type" [type]="'publications'"></deletedByInference>
[resultType]="type" [type]="openaireEntities.PUBLICATIONS"></deletedByInference>
<deletedByInference *ngIf="type == 'dataset' && deleteByInferenceOpened"
[id]="resultLandingInfo.record['result']['header']['dri:objIdentifier']"
[ids]="resultLandingInfo.deletedByInferenceIds"
[modal]="AlertModalDeletedByInference"
[resultType]="'dataset'" [type]="'research data'"></deletedByInference>
[resultType]="'dataset'" [type]="openaireEntities.DATASETS"></deletedByInference>
<deletedByInference *ngIf="type == 'software' && deleteByInferenceOpened"
[id]="resultLandingInfo.record['result']['header']['dri:objIdentifier']"
[ids]="resultLandingInfo.deletedByInferenceIds"
[modal]="AlertModalDeletedByInference"
[resultType]="type" [type]="'software'"></deletedByInference>
[resultType]="type" [type]="openaireEntities.SOFTWARE"></deletedByInference>
<deletedByInference *ngIf="type == 'orp' && deleteByInferenceOpened"
[id]="resultLandingInfo.record['result']['header']['dri:objIdentifier']"
[ids]="resultLandingInfo.deletedByInferenceIds"
[modal]="AlertModalDeletedByInference"
[resultType]="'other'" [type]="'other research products'"></deletedByInference>
[resultType]="'other'" [type]="openaireEntities.OTHER"></deletedByInference>
</modal-alert>
<modal-alert *ngIf="resultLandingInfo" #citeModal>
<citeThis *ngIf="citeThisClicked" [result]="resultLandingInfo" [id]="id"
@ -488,21 +450,16 @@
</ul>
</ng-template>
<ng-template #relation_in_tab let-researchResults="researchResults" let-header="header" let-relatedClassFilters="relatedClassFilters">
<ng-template #relation_in_tab let-researchResults="researchResults" let-header="header">
<div
*ngIf="researchResults && researchResults.length > 0"
class="uk-margin-bottom">
<h6 *ngIf="header">{{header}}</h6>
<mat-form-field *ngIf="relatedClassFilters?.size > 1" class="matSelectionFormField">
<mat-label>Filter by relation:</mat-label>
<mat-select [(ngModel)]="relatedClassSelected" (ngModelChange)="relatedClassChanged()"
[disableOptionCentering]="true"
panelClass="matSelectionPanel"
class="uk-text-bold matSelection">
<mat-option [value]="">All relations</mat-option>
<mat-option *ngFor="let relatedClass of relatedClassFilters" [value]="relatedClass">{{relatedClass}}</mat-option>
</mat-select>
</mat-form-field>
<div *ngIf="relatedClassFilters?.length > 1" class="uk-margin-medium-bottom"
input type="select" placeholder="Filter by relation" inputClass="flat x-small"
[options]="relatedClassFilters" [(value)]="relatedClassSelected"
(valueChange)="relatedClassChanged()"></div>
<results-and-pages
[type]="openaireEntities.RESULTS"
[page]="relatedPage" [pageSize]="pageSize"

View File

@ -24,6 +24,7 @@ import {ParsingFunctions} from "../landing-utils/parsingFunctions.class";
import {ConnectHelper} from "../../connect/connectHelper";
import {UserManagementService} from "../../services/user-management.service";
import {OpenaireEntities} from "../../utils/properties/searchFields";
import {Option} from "../../sharedComponents/input/input.component";
declare var UIkit;
@ -119,6 +120,7 @@ export class ResultLandingComponent {
@ViewChild("annotation") annotation: AnnotationComponent;
public contextsWithLink: any;
public relatedClassFilters: Option[]=[{"label": "All relations", "value": ""}];
public relatedClassSelected: string = "";
public filteredRelatedResults: RelationResult[];
@ -165,6 +167,7 @@ export class ResultLandingComponent {
this.updateUrl(this.properties.domain +this.properties.baseLink + this._router.url);
this.seoService.createLinkForCanonicalURL(this.properties.domain +this.properties.baseLink + this._router.url);
this.subscriptions.push(this.route.queryParams.subscribe(data => {
this.stickyHeader = false;
if (data['articleId']) {
this.id = data['articleId'];
this.initMetaAndLinks("publication");
@ -231,34 +234,34 @@ export class ResultLandingComponent {
private initMetaAndLinks(type: string) {
if (type == "publication") {
this.type = "publication";
this.updateTitle("Publication");
this.updateTitle(this.openaireEntities.PUBLICATION);
this.linkToLandingPage = this.properties.searchLinkToPublication;
this.linkToSearchPage = this.properties.searchLinkToPublications;
this.title = "Publication";
this.title = this.openaireEntities.PUBLICATION;
} else if (type == "dataset") {
this.updateTitle("Dataset");
this.updateTitle(this.openaireEntities.DATASET);
this.type = "dataset";
this.linkToLandingPage = this.properties.searchLinkToDataset;
this.linkToSearchPage = this.properties.searchLinkToDatasets;
this.title = "Research Data";
this.title = this.openaireEntities.DATASET;
} else if (type == "software") {
this.updateTitle("Software");
this.updateTitle(this.openaireEntities.SOFTWARE_SINGULAR);
this.type = "software";
this.linkToLandingPage = this.properties.searchLinkToSoftwareLanding;
this.linkToSearchPage = this.properties.searchLinkToSoftware;
this.title = "Software";
this.title = this.openaireEntities.SOFTWARE_SINGULAR;
} else if (type == "orp") {
this.type = "orp";
this.updateTitle("Other Research Product");
this.updateTitle(this.openaireEntities.OTHER_SINGULAR);
this.linkToLandingPage = this.properties.searchLinkToOrp;
this.linkToSearchPage = this.properties.searchLinkToOrps;
this.title = "Other Research Product";
this.title = this.openaireEntities.OTHER_SINGULAR;
} else if (type == "result") {
this.type = "result";
this.updateTitle("Research Result");
this.updateTitle(this.openaireEntities.RESULT);
this.linkToLandingPage = this.properties.searchLinkToResult;
this.linkToSearchPage = this.properties.searchLinkToResults;
this.title = "Research Result";
this.title = this.openaireEntities.RESULT;
}
}
@ -297,11 +300,13 @@ export class ResultLandingComponent {
public getTypeName(): string {
if (this.type === "dataset") {
return "research data";
return this.openaireEntities.DATASET;
} else if (this.type === "orp" || this.type === "other") {
return "research product";
} else {
return this.type;
return this.openaireEntities.OTHER_SINGULAR;
} else if(this.type === "publication") {
return this.openaireEntities.PUBLICATION;
} else if(this.type === "software") {
return this.openaireEntities.SOFTWARE_SINGULAR;
}
}
@ -456,6 +461,14 @@ export class ResultLandingComponent {
this.enermapsId = ParsingFunctions.getEnermapsConceptId(this.resultLandingInfo.contexts);
}
if(this.resultLandingInfo.relatedClassFilters.size > 1) {
for (let relClass of this.resultLandingInfo.relatedClassFilters) {
this.relatedClassFilters.push({"label": relClass, "value": relClass});
}
} else {
this.relatedClassFilters.pop();
}
this.relatedClassSelected = "";
this.filteredRelatedResults = this.resultLandingInfo.relatedResults;
@ -471,12 +484,14 @@ export class ResultLandingComponent {
}else if(err.name == "TimeoutError"){
this.errorMessage = 'An error occurred please try again later';
}else{
if (this.type == "publication" || this.type == "software") {
this.errorMessage = 'No ' + this.type + ' found';
if (this.type == "publication") {
this.errorMessage = "No "+ this.openaireEntities.PUBLICATIONS +" found";
} else if (this.type == "software") {
this.errorMessage = 'No ' + this.openaireEntities.SOFTWARE + ' found';
} else if (this.type == "dataset") {
this.errorMessage += "No research data found";
this.errorMessage += "No "+this.openaireEntities.DATASETS+" found";
} else if (this.type == "orp") {
this.errorMessage += "No research product found";
this.errorMessage += "No "+this.openaireEntities.OTHER+" found";
}
this.seoService.createLinkForCanonicalURL(this.properties.domain+ properties.baseLink + this.linkToSearchPage);
}
@ -610,15 +625,15 @@ export class ResultLandingComponent {
private handleError(message: string, error) {
if (this.type == "publication") {
console.error("Publication Landing Page: " + message, error);
console.error(this.openaireEntities.PUBLICATION+" Landing Page: " + message, error);
} else if (this.type == "dataset") {
console.error("Research Data Landing Page: " + message, error);
console.error(this.openaireEntities.DATASET+" Landing Page: " + message, error);
} else if (this.type == "software") {
console.error("Software Landing Page: " + message, error);
console.error(this.openaireEntities.SOFTWARE_SINGULAR+" Landing Page: " + message, error);
} else if (this.type == "orp") {
console.error("Other Research Product Landing Page: " + message, error);
console.error(this.openaireEntities.OTHER_SINGULAR+" Landing Page: " + message, error);
} else {
console.error("Landing Page: " + message, error);
console.error(this.openaireEntities.RESULT+" Landing Page: " + message, error);
}
}
@ -844,7 +859,7 @@ export class ResultLandingComponent {
public openOrganizationsModal() {
this.organizationsModal.cancelButton = false;
this.organizationsModal.okButton = false;
this.organizationsModal.alertTitle = "Related Organizations";
this.organizationsModal.alertTitle = "Related "+this.openaireEntities.ORGANIZATIONS;
this.organizationsModal.open();
}
}

View File

@ -34,6 +34,7 @@ import {MatSelectModule} from "@angular/material/select";
import {IconsModule} from "../../utils/icons/icons.module";
import {IconsService} from "../../utils/icons/icons.service";
import {graph, link, quotes} from "../../utils/icons/icons";
import {InputModule} from "../../sharedComponents/input/input.module";
@NgModule({
imports: [
@ -42,7 +43,7 @@ import {graph, link, quotes} from "../../utils/icons/icons";
MetricsModule, AltMetricsModule, Schema2jsonldModule, SEOServiceModule,
DeletedByInferenceModule, ShowAuthorsModule, HelperModule, ResultLandingUtilsModule, AlertModalModule,
AnnotationModule, LandingHeaderModule, NoLoadPaging, ResultPreviewModule, FeedbackModule, TabsModule, LoadingModule,
OrcidModule, MatFormFieldModule, MatSelectModule, IconsModule
OrcidModule, MatFormFieldModule, MatSelectModule, IconsModule, InputModule
],
declarations: [
ResultLandingComponent

View File

@ -10,6 +10,7 @@ import {LoginErrorCodes} from "../login/utils/guardHelper.class";
import {ExternalIDV3_0, WorkV3_0} from "./orcidWork";
import {EnvProperties} from "../utils/properties/env-properties";
import {UserManagementService} from "../services/user-management.service";
import {OpenaireEntities} from "../utils/properties/searchFields";
declare var UIkit: any;
@ -263,9 +264,9 @@ declare var UIkit: any;
<modal-alert #propagationModal (alertOutput)="confirmedPropagation()">
<div>
This research outcome is the result of <span class="uk-text-bold"> merged research outcomes in OpenAIRE</span>.
This {{openaireEntities.RESULT}} is the result of <span class="uk-text-bold"> merged {{openaireEntities.RESULTS}} in OpenAIRE</span>.
<br><br>
You have already added <span class="uk-text-bold">{{this.putCodes?.length}} works</span> in your ORCID record related to the merged research outcome.
You have already added <span class="uk-text-bold">{{this.putCodes?.length}} works</span> in your ORCID record related to the merged {{openaireEntities.RESULT}}.
<div *ngIf="currentAction == 'delete'">
If you continue with delete action, <span class="uk-text-bold">all these works will be deleted</span>.
</div>
@ -327,6 +328,7 @@ export class OrcidWorkComponent {
public hoverDelete: boolean = false;
public properties: EnvProperties = properties;
public openaireEntities = OpenaireEntities;
constructor(private route: ActivatedRoute,
private _router: Router,

View File

@ -93,7 +93,7 @@
{{result.funderShortname}}
</span>
<span *ngIf="result.code" [class.uk-margin-left]="result.funderShortname">
<span class="uk-text-meta">Project Code: </span>
<span class="uk-text-meta">{{openaireEntities.PROJECT}} Code: </span>
{{result.code}}
</span>
<!-- Currently not parsed -->
@ -126,19 +126,19 @@
<span
*ngIf="result.openAccessMandatePublications && (!result.openAccessMandateDatasets)"
class="uk-label uk-label-success uk-text-truncate"
title="Open Access mandate for Publications">
Open Access mandate for Publications
title="Open Access mandate for {{openaireEntities.PUBLICATIONS}}">
Open Access mandate for {{openaireEntities.PUBLICATIONS}}
</span>{{' '}}
<span
*ngIf="result.openAccessMandateDatasets != undefined && result.openAccessMandateDatasets && (result.openAccessMandatePublications == undefined || !result.openAccessMandatePublications)"
class="uk-label uk-label-success uk-text-truncate " title="Open Access mandate for Research Data">
Open Access mandate for Research Data
class="uk-label uk-label-success uk-text-truncate " title="Open Access mandate for {{openaireEntities.DATASETS}}">
Open Access mandate for {{openaireEntities.DATASETS}}
</span>{{' '}}
<span
*ngIf="result.openAccessMandatePublications != undefined && result.openAccessMandatePublications && result.openAccessMandateDatasets != undefined && result.openAccessMandateDatasets"
class="uk-label uk-label-success uk-text-truncate"
title="Open Access mandate for Publications and Research Data">
Open Access mandate for Publications and Research Data
title="Open Access mandate for {{openaireEntities.PUBLICATIONS}} and {{openaireEntities.DATASETS}}">
Open Access mandate for {{openaireEntities.PUBLICATIONS}} and {{openaireEntities.DATASETS}}
</span>{{' '}}
<span *ngIf="result.languages && result.languages.length > 0">
<span

View File

@ -6,6 +6,7 @@ import {AlertModal} from "../modal/alert";
import {properties} from "../../../../environments/environment";
import {Session} from "../../login/utils/helper.class";
import {Identifier} from "../string-utils.class";
import {OpenaireEntities} from "../properties/searchFields";
@Component({
selector: 'result-preview',
@ -14,6 +15,7 @@ import {Identifier} from "../string-utils.class";
export class ResultPreviewComponent implements OnInit, OnChanges {
@Input() result: ResultPreview;
@Input() properties: EnvProperties;
public openaireEntities = OpenaireEntities;
@Input() showSubjects: boolean = true;
@Input() showOrganizations: boolean = true;
@Input() modal: AlertModal = null;