Merge remote-tracking branch 'origin/develop' into new-search

This commit is contained in:
Konstantinos Triantafyllou 2025-09-22 16:43:02 +03:00
commit 140e651dd0
19 changed files with 1419 additions and 1263 deletions

@ -1 +1 @@
Subproject commit 107f0d3a80fd5d642b59dfdf988432b160ac8267
Subproject commit 830bd90ab6ef4851ed58517eb97ecfa29a83b31a

View File

@ -12,91 +12,102 @@ import {CriteriaUtils} from "../content-providers/criteria-utils";
import {CommunityInfo} from "../../openaireLibrary/connect/community/communityInfo";
import {ActivatedRoute, Router} from "@angular/router";
import {Title} from "@angular/platform-browser";
import {OpenaireEntities} from "../../openaireLibrary/utils/properties/searchFields";
@Component({
selector: 'advanced-criteria',
template: `
<div page-content>
<div inner>
<div class="uk-section-xsmall uk-margin-top" uk-grid>
<select-sub-community (subCommunityChangedEmitter)="subCommunityChanged()"></select-sub-community>
</div>
<div *ngIf="loading" class="uk-position-center">
<loading></loading>
</div>
<ng-container *ngIf="!loading">
<ng-container *ngIf="!this.communityService.selectedSubCommunity && previewSubCommunitiesCriteria.length > 0">
<ul class="uk-subnav uk-subnav-pill" uk-margin uk-switcher>
<li class="uk-active"><a href="#">Set for community <span *ngIf="selectionCriteria?.criteria?.length > 0"
>({{ selectionCriteria?.criteria?.length }})</span> </a></li>
<li><a href="#">Set for subcommunities <span *ngIf="previewSubCommunitiesCriteria.length > 0"
>({{ previewSubCommunitiesCriteria.length }})</span></a></li>
</ul>
</ng-container>
<div
[class.uk-switcher]="!this.communityService.selectedSubCommunity && previewSubCommunitiesCriteria.length > 0">
<div class="uk-text-center uk-padding">
<div *ngIf="selectionCriteria" actions>
<div class="uk-flex uk-flex-right@m uk-flex-center">
<button *ngIf="selectionCriteria.criteria.length === 0" (click)="openCriteria()"
class="uk-button uk-button-default uk-flex uk-flex-middle">
<icon name="add" [flex]="true"></icon>
<span class="uk-margin-small-left">Add Criteria</span>
</button>
<button *ngIf="selectionCriteria.criteria.length > 0" (click)="openCriteria()"
class="uk-button uk-button-default uk-flex uk-flex-middle">
<icon name="edit" [flex]="true"></icon>
<span class="uk-margin-small-left">Edit Criteria</span>
</button>
</div>
</div>
<div *ngIf="selectionCriteria?.criteria?.length > 0" class="uk-margin-small-bottom">
<div class="uk-text-meta uk-margin-small-bottom">Criteria</div>
<div [innerHTML]="criteriaUtils.getFiltersAsText(selectionCriteria.criteria,false)"></div>
</div>
<div *ngIf="selectionCriteria?.criteria?.length === 0" class="">
<h5 class="uk-margin-small-bottom">No criteria yet</h5>
<i class="uk-display-block">
Add multiple constraints in AND to define a criterion: results that satisfy at least one of the
criteria will be included in your community.
</i>
</div>
</div>
<div *ngIf="!this.communityService.selectedSubCommunity"
class="uk-grid uk-grid-large uk-child-width-1-1 uk-child-width-1-2@m uk-margin-top uk-margin-bottom"
uk-height-match="target: .uk-card-body; row: false;" uk-grid>
<div *ngFor="let subcommunity of previewSubCommunitiesCriteria" class="uk-padding-xsmall">
<div class="uk-card uk-card-default">
<div class="uk-card-body">
<a (click)="navigateToSub(subcommunity.subCommunityId)"
class="uk-margin-small-right uk-margin-small-bottom uk-button uk-button-primary uk-button-small">
{{ communityService.getCommunityLabel(subcommunity.subCommunityId) }}</a>
<div class="uk-text-meta uk-margin-small-bottom">Criteria</div>
<div
[innerHTML]="criteriaUtils.getFiltersAsText(subcommunity.selectionCriteria.criteria,false)"></div>
<div page-content>
<div actions>
<div class="uk-section-xsmall uk-margin-top">
<div class="uk-flex uk-flex-middle uk-grid" uk-grid>
<div class="uk-width-1-2@m uk-width-1-1">
<select-sub-community
(subCommunityChangedEmitter)="subCommunityChanged()"></select-sub-community>
</div>
<div class="uk-width-expand@m uk-width-1-1">
<div class="uk-grid uk-flex-middle uk-flex-right" uk-grid>
<div *ngIf="selectionCriteria">
<button *ngIf="selectionCriteria.criteria.length === 0" (click)="openCriteria()"
class="uk-button uk-button-default uk-flex uk-flex-middle">
<icon name="add" [flex]="true"></icon>
<span class="uk-margin-small-left">Add Criteria</span>
</button>
<button *ngIf="selectionCriteria.criteria.length > 0" (click)="openCriteria()"
class="uk-button uk-button-default uk-flex uk-flex-middle">
<icon name="edit" [flex]="true"></icon>
<span class="uk-margin-small-left">Edit Criteria</span>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</ng-container>
<div inner>
<div *ngIf="loading" class="uk-position-center">
<loading></loading>
</div>
<ng-container *ngIf="!loading">
<ng-container *ngIf="!this.communityService.selectedSubCommunity && previewSubCommunitiesCriteria.length > 0">
<ul class="uk-subnav uk-subnav-pill uk-margin-top" uk-margin uk-switcher>
<li class="uk-active"><a href="#">Set for community <span
*ngIf="selectionCriteria?.criteria?.length > 0"
>({{ selectionCriteria?.criteria?.length }})</span> </a></li>
<li><a href="#">Set for subcommunities <span *ngIf="previewSubCommunitiesCriteria.length > 0"
>({{ previewSubCommunitiesCriteria.length }})</span></a></li>
</ul>
</ng-container>
<div [class.uk-switcher]="!this.communityService.selectedSubCommunity && previewSubCommunitiesCriteria.length > 0">
<div class="uk-text-center uk-padding">
<div *ngIf="selectionCriteria?.criteria?.length > 0" class="uk-margin-small-bottom">
<div class="uk-text-meta uk-margin-small-bottom">Criteria</div>
<div [innerHTML]="criteriaUtils.getFiltersAsText(selectionCriteria.criteria,false)"></div>
</div>
<div *ngIf="selectionCriteria?.criteria?.length === 0" class="">
<h5 class="uk-margin-small-bottom">No criteria yet</h5>
<i class="uk-display-block">
Add multiple constraints in AND to define a criterion: results that satisfy at least
one of the
criteria will be included in your community.
</i>
</div>
</div>
<div *ngIf="!this.communityService.selectedSubCommunity"
class="uk-grid uk-grid-large uk-child-width-1-1 uk-child-width-1-2@m uk-margin-medium-top uk-margin-bottom"
uk-height-match="target: .uk-card-body; row: false;" uk-grid>
<div *ngFor="let subcommunity of previewSubCommunitiesCriteria">
<div class="uk-card uk-card-default">
<div class="uk-card-body">
<a (click)="navigateToSub(subcommunity.subCommunityId)"
class="uk-margin-small-right uk-margin-small-bottom uk-button uk-button-primary uk-button-small">
{{ communityService.getCommunityLabel(subcommunity.subCommunityId) }}</a>
<div class="uk-text-meta uk-margin-small-bottom">Criteria</div>
<div
[innerHTML]="criteriaUtils.getFiltersAsText(subcommunity.selectionCriteria.criteria,false)"></div>
</div>
</div>
</div>
</div>
</div>
</ng-container>
</div>
</div>
<fs-modal #filtersModal (okEmitter)="saveCriteria()" (cancelEmitter)="criteria.reset()"
[okButtonDisabled]="!criteria || criteria.disabled">
<div *ngIf="selectionCriteria" class="uk-container uk-container-large">
<criteria #criteria [height]="filtersModal.bodyHeight" [entityType]="'criterion'"
[entityTypePlural]="'criteria'" [selectionCriteria]="selectionCriteria">
<div no-criteria>
<h5 class="uk-margin-small-bottom">No Criteria yet</h5>
<i class="uk-display-block">
Add multiple constraints in AND to define a criterion: results that satisfy at least one of the criteria
will be included in your community.
</i>
</div>
</criteria>
</div>
<div *ngIf="selectionCriteria" class="uk-container uk-container-large">
<criteria #criteria [height]="filtersModal.bodyHeight" [entityType]="'criterion'"
[entityTypePlural]="'criteria'" [selectionCriteria]="selectionCriteria">
<div no-criteria>
<h5 class="uk-margin-small-bottom">No Criteria yet</h5>
<i class="uk-display-block">
Add multiple constraints in AND to define a criterion: results that satisfy at least one
of the criteria
will be included in your community.
</i>
</div>
</criteria>
</div>
</fs-modal>
`
})
@ -192,4 +203,6 @@ export class AdvancedCriteriaComponent implements OnInit, OnDestroy {
});
this.subCommunityChanged();
}
protected readonly openAIREEntities = OpenaireEntities;
}

View File

@ -8,11 +8,12 @@ import {CriteriaModule} from "../content-providers/criteria/criteria.module";
import {IconsModule} from "../../openaireLibrary/utils/icons/icons.module";
import {LoadingModule} from "../../openaireLibrary/utils/loading/loading.module";
import {SelectSubCommunityModule} from "../content-config/subcommunity-selection/subcommunity-selection.module";
import {SearchInputModule} from "../../openaireLibrary/sharedComponents/search-input/search-input.module";
@NgModule({
imports: [CommonModule, RouterModule.forChild([
{path: '', component: AdvancedCriteriaComponent,}
]), PageContentModule, FullScreenModalModule, CriteriaModule, IconsModule, LoadingModule, SelectSubCommunityModule],
]), PageContentModule, FullScreenModalModule, CriteriaModule, IconsModule, LoadingModule, SelectSubCommunityModule, SearchInputModule],
declarations: [AdvancedCriteriaComponent],
exports: [AdvancedCriteriaComponent]
})

View File

@ -17,7 +17,7 @@ declare var UIkit;
</div>
<div inner>
<div>
<div class="uk-alert uk-alert-warning uk-margin-top ">
<div class="uk-alert uk-alert-warning uk-margin-top">
<div class="uk-text-large">Use only after connect deployment. And only if there are css updates!</div>
Press the following button to update the timestamp in the saved layouts and recreate the css files.
</div>
@ -26,8 +26,6 @@ declare var UIkit;
</div>
<div class="uk-margin-medium-top">
<div>Purge ICM cache for all communities</div>
<button (click)="purgeBrowserCache()" class="uk-button uk-button-danger uk-margin-top"
[class.uk-disabled]="savingChanges || !properties.deleteBrowserCacheUrl"> Purge Browser Cache</button>
<hr>
@ -83,7 +81,7 @@ export class ConnectAdminCustomizationComponent implements OnInit {
this.savingChanges = true;
let connectCssIsSaved = false;
let defaultCssIsSaved = false;
this.subscriptions.push(this.customizationService.getLayouts(properties, ).subscribe(async layouts => {
this.subscriptions.push(this.customizationService.getLayouts(properties).subscribe(async layouts => {
this.totalLayouts = layouts ? layouts.length : 0;
for(let layout of layouts){

View File

@ -7,16 +7,14 @@ import {ActivatedRoute, Router} from "@angular/router";
selector: 'select-sub-community',
template: `
<ng-container *ngIf=" subCommunities">
<div
[class]="(!this.communityService.selectedSubCommunityId()?'':'uk-background-primary dark') + ' uk-padding-small uk-card-default uk-card uk-width-large'">
<div [class]="(!this.communityService.selectedSubCommunityId()?'':'uk-background-primary dark') + ' uk-padding-small uk-card-default uk-card uk-width-large'">
<div [class.uk-light]="this.communityService.selectedSubCommunityId()">Configuration for
<span >{{this.communityService.selectedSubCommunityId() ? ' subcommunity: ' :' community'}}</span>
<!-- <b class="uk-text-large">{{this.communityService.selectedSubCommunityId() ?-->
<!-- (this.communityService.selectedSubCommunity?this.communityService.selectedSubCommunity['category'] + ' | '+ this.communityService.selectedSubCommunity['label']:this.communityService.selectedSubCommunity?.label) : ' all content'}}</b>-->
</div>
<div *ngIf="!readonly" input type="select" [value]="this.communityService.selectedSubCommunityId()" [options]="subCommunities"
<div input type="select" [value]="this.communityService.selectedSubCommunityId()" [disabled]="readonly" [options]="subCommunities"
(valueChange)="subCommunityChanged($event)"></div>
</div>
@ -31,7 +29,7 @@ export class SelectSubCommunityComponent {
subCommunities = null
control
constructor(private communityService: CommunityService, private route: ActivatedRoute, private router: Router) {
constructor(protected communityService: CommunityService, private route: ActivatedRoute, private router: Router) {
}
ngOnInit() {
@ -69,4 +67,4 @@ export class SelectSubCommunityComponent {
}
}
}

View File

@ -1,81 +1,97 @@
<div class="uk-flex uk-flex-center">
<select-sub-community [readonly]="true"></select-sub-community>
</div>
<div class="uk-section uk-flex uk-flex-center uk-flex uk-flex-middle">
<div class="uk-width-auto uk-margin-right">
<a uk-icon="icon: info; ratio: 1.3"></a>
<div *ngIf="community" class="uk-dropdown uk-padding-small uk-width-medium" uk-dropdown="mode: hover"
[innerHTML]="infoMessage">
</div>
</div>
<div search-input class="uk-width-xlarge@l uk-width-large" [searchControl]="filterForm.get('keyword')" searchInputClass="outer"
[placeholder]="'Search ' + openAIREEntities.DATASOURCES" [disabled]="loading"></div>
</div>
<div class="uk-section uk-section-small uk-position-relative">
<div *ngIf="openaireSearchUtils.status == errorCodes.LOADING" class="uk-position-center">
<loading></loading>
</div>
<div *ngIf="openaireSearchUtils.status !== errorCodes.LOADING">
<div *ngIf="openaireSearchUtils.totalResults == 0"
class="uk-card uk-card-default uk-padding-large uk-text-center uk-margin-bottom">
<div class="uk-text-bold">No <span class="uk-text-lowercase">{{openAIREEntities.DATASOURCES}}</span> found</div>
<div class="uk-margin-small-top" [innerHTML]="infoMessage"></div>
</div>
<ng-container *ngIf="openaireSearchUtils.totalResults > 0">
<no-load-paging [type]="openaireContentProviders.length === 1?openAIREEntities.DATASOURCE:openAIREEntities.DATASOURCES"
[page]="openaireSearchUtils.page" [pageSize]="resultsPerPage" (pageChange)="goTo($event.value)"
[totalResults]="openaireSearchUtils.totalResults">
</no-load-paging>
<div class="uk-grid uk-child-width-1-1 uk-margin-top uk-margin-bottom" uk-grid>
<div *ngFor="let result of openaireContentProviders">
<div class="uk-card uk-card-default">
<div class="uk-card-body">
<result-preview [properties]="properties" [showOrganizations]="true"
[showSubjects]="true" [result]="getResultPreview(result)"
[externalUrl]="contentProviderUrl">
</result-preview>
</div>
<div class="uk-card-footer uk-padding-remove-vertical">
<div class="uk-grid uk-grid-small uk-flex-nowrap uk-grid-divider uk-flex-right" uk-grid>
<div *ngIf="!getCommunityContentProvider(result)">
<div class="uk-padding-small uk-padding-remove-horizontal">
<a class="uk-button uk-button-link uk-flex uk-flex-middle">
<icon name="add" [flex]="true"></icon>
<span class="uk-margin-small-left">
Add
</span>
</a>
<div uk-dropdown="mode:click">
<ul class="uk-nav uk-dropdown-nav">
<li class="uk-nav-header uk-margin-left">Add</li>
<li><a (click)="addContentProvider(result,true, false)"> as content source</a></li>
<li ><a (click)="addContentProvider(result,false, true)">as suggestion for deposit</a></li>
<li ><a (click)="addContentProvider(result,true, true)"> both</a></li>
</ul>
</div>
</div>
</div>
<div *ngIf="getCommunityContentProvider(result)">
<div class="uk-padding-small uk-padding-remove-horizontal">
<a (click)="removeContentProvider(result)"
class="uk-button uk-button-link uk-flex uk-flex-middle">
<icon name="remove" [flex]="true"></icon>
<span class="uk-margin-small-left">Remove</span>
</a>
</div>
</div>
</div>
</div>
</div>
<div class="uk-section-xsmall uk-margin-top">
<div class="uk-flex uk-flex-middle uk-grid" uk-grid>
<div class="uk-width-1-2@m uk-width-1-1">
<select-sub-community [readonly]="true"></select-sub-community>
</div>
</div>
<div class="uk-margin-small-top">
<no-load-paging [type]="openaireContentProviders.length === 1?openAIREEntities.DATASOURCE:openAIREEntities.DATASOURCES"
<div class="uk-width-expand@m uk-width-1-1">
<div class="uk-grid uk-flex-middle uk-flex-right@m uk-flex-center" uk-grid>
<div class="uk-width-auto uk-margin-right">
<a uk-icon="icon: info; ratio: 1.3"></a>
<div *ngIf="community" class="uk-dropdown uk-padding-small uk-width-medium"
uk-dropdown="mode: hover"
[innerHTML]="infoMessage">
</div>
</div>
<div search-input class="uk-width-xlarge@xl uk-width-large" [searchControl]="filterForm.get('keyword')"
searchInputClass="outer"
[placeholder]="'Search ' + openAIREEntities.DATASOURCES" [disabled]="loading"></div>
</div>
</div>
</div>
<div class="uk-section uk-section-small uk-position-relative">
<div *ngIf="openaireSearchUtils.status == errorCodes.LOADING" class="uk-position-center">
<loading></loading>
</div>
<div *ngIf="openaireSearchUtils.status !== errorCodes.LOADING">
<div *ngIf="openaireSearchUtils.totalResults == 0"
class="uk-card uk-card-default uk-padding-large uk-text-center uk-margin-bottom">
<div class="uk-text-bold">No <span class="uk-text-lowercase">{{ openAIREEntities.DATASOURCES }}</span>
found
</div>
<div class="uk-margin-small-top" [innerHTML]="infoMessage"></div>
</div>
<ng-container *ngIf="openaireSearchUtils.totalResults > 0">
<no-load-paging
[type]="openaireContentProviders.length === 1?openAIREEntities.DATASOURCE:openAIREEntities.DATASOURCES"
[page]="openaireSearchUtils.page" [pageSize]="resultsPerPage" (pageChange)="goTo($event.value)"
[totalResults]="openaireSearchUtils.totalResults">
</no-load-paging>
</div>
</ng-container>
</div>
</div>
</no-load-paging>
<div class="uk-grid uk-child-width-1-1 uk-margin-top uk-margin-bottom" uk-grid>
<div *ngFor="let result of openaireContentProviders">
<div class="uk-card uk-card-default">
<div class="uk-card-body">
<result-preview [properties]="properties" [showOrganizations]="true"
[showSubjects]="true" [result]="getResultPreview(result)"
[externalUrl]="contentProviderUrl">
</result-preview>
</div>
<div class="uk-card-footer uk-padding-remove-vertical">
<div class="uk-grid uk-grid-small uk-flex-nowrap uk-grid-divider uk-flex-right" uk-grid>
<div *ngIf="!getCommunityContentProvider(result)">
<div class="uk-padding-small uk-padding-remove-horizontal">
<a class="uk-button uk-button-link uk-flex uk-flex-middle">
<icon name="add" [flex]="true"></icon>
<span class="uk-margin-small-left">
Add
</span>
</a>
<div uk-dropdown="mode:click">
<ul class="uk-nav uk-dropdown-nav">
<li class="uk-nav-header uk-margin-left">Add</li>
<li><a (click)="addContentProvider(result,true, false)"> as content
source</a></li>
<li><a (click)="addContentProvider(result,false, true)">as
suggestion
for deposit</a></li>
<li><a (click)="addContentProvider(result,true, true)"> both</a>
</li>
</ul>
</div>
</div>
</div>
<div *ngIf="getCommunityContentProvider(result)">
<div class="uk-padding-small uk-padding-remove-horizontal">
<a (click)="removeContentProvider(result)"
class="uk-button uk-button-link uk-flex uk-flex-middle">
<icon name="remove" [flex]="true"></icon>
<span class="uk-margin-small-left">Remove</span>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="uk-margin-small-top">
<no-load-paging
[type]="openaireContentProviders.length === 1?openAIREEntities.DATASOURCE:openAIREEntities.DATASOURCES"
[page]="openaireSearchUtils.page" [pageSize]="resultsPerPage"
(pageChange)="goTo($event.value)"
[totalResults]="openaireSearchUtils.totalResults">
</no-load-paging>
</div>
</ng-container>
</div>
</div>

View File

@ -1,226 +1,246 @@
<div page-content>
<div actions>
<div class="uk-section-xsmall uk-margin-top">
<div class="uk-flex uk-flex-middle uk-grid" uk-grid>
<select-sub-community (subCommunityChangedEmitter)="subCommunityChanged()"></select-sub-community>
<div search-input [expandable]="true" [searchControl]="filterForm.get('keyword')" searchInputClass="outer"
[placeholder]="'Search ' + openAIREEntities.DATASOURCES" [disabled]="loading"
class="uk-width-1-3@xl uk-width-2-5@l uk-width-1-2@m uk-width-1-1"></div>
<div>
<button class="uk-button uk-button-default uk-flex uk-flex-middle" (click)="addNew()"
[attr.uk-tooltip]="'<div><div class=\'uk-margin-bottom uk-text-bold\'> Search and add more <span class=\'uk-text-lowercase\'>' + openAIREEntities.DATASOURCES + '<span></span></div><div>The research results collected from the <span class=\'uk-text-lowercase\'>' + openAIREEntities.DATASOURCES + '</span> specified here will be automatically linked to your community dashboard.</div></div>'"
[disabled]="loading" [class.uk-disabled]="loading">
<icon name="add" [flex]="true"></icon>
<span class="uk-margin-small-left uk-text-bold uk-text-uppercase">New {{openAIREEntities.DATASOURCE}}</span>
</button>
</div>
</div>
</div>
</div>
<div inner>
<div class="uk-section uk-section-small uk-position-relative" style="min-height: 60vh">
<div *ngIf="loading" class="uk-position-center">
<loading></loading>
</div>
<div *ngIf="!loading">
<validate-page-enabled pageRoute="/search/find/dataproviders"></validate-page-enabled>
<validate-page-enabled pageRoute="/participate/deposit/suggested"></validate-page-enabled>
<ng-container *ngIf="!this.communityService.selectedSubCommunity && subCommunitiesContentProviders.length > 0">
<ul class="uk-subnav uk-subnav-pill" uk-margin uk-switcher>
<li class="uk-active"><a href="#">Set for community <span *ngIf="communityContentProviders.length > 0"
>({{communityContentProviders.length}})</span> </a></li>
<li><a href="#">Set for subcommunities <span *ngIf="subCommunitiesContentProviders.length > 0"
>({{subCommunitiesContentProviders.length}})</span></a></li>
</ul>
</ng-container>
<div [class.uk-switcher]="!this.communityService.selectedSubCommunity && subCommunitiesContentProviders.length > 0">
<div>
<div *ngIf="previewCommunityContentProviders.length == 0"
class="uk-card uk-card-default uk-padding-large uk-text-center uk-margin-bottom uk-text-bold">
<div>No <span class="uk-text-lowercase">{{openAIREEntities.DATASOURCES}} </span>
<span *ngIf="communityContentProviders.length == 0; else: notFound">for {{community.shortTitle}}
<span
*ngIf="communityService.selectedSubCommunityId() && this.communityService.selectedSubCommunity">{{' | ' + this.communityService.selectedSubCommunity['category'] + '| ' + this.communityService.selectedSubCommunity?.label}}</span></span>
<ng-template #notFound>found</ng-template>
</div>
</div>
<div *ngIf="previewCommunityContentProviders.length > 0">
<no-load-paging
[type]="previewCommunityContentProviders.length === 1?openAIREEntities.DATASOURCE:openAIREEntities.DATASOURCES"
(pageChange)="updatePage($event)"
[page]="page" [pageSize]="resultsPerPage"
[totalResults]="previewCommunityContentProviders.length">
</no-load-paging>
<div class="uk-grid uk-grid-large uk-child-width-1-1 uk-child-width-1-2@m uk-margin-top uk-margin-bottom"
uk-height-match="target: .uk-card-body; row: false;" uk-grid>
<div *ngFor="let item of currentPage; let i=index">
<div class="uk-card uk-card-default">
<div class="uk-card-body">
<h6 class="uk-margin-bottom">
<a *ngIf="item.openaireId"
target="_blank" class="custom-external uk-link-text"
[href]="contentProviderUrl+item.openaireId">
<span *ngIf="item.officialname">{{item.officialname}}</span>
<span *ngIf="!item.officialname && item.name">{{item.name}}</span>
<span *ngIf="!item.officialname && !item.name">[no title available]</span>
</a>
<span *ngIf="!item.openaireId">
<span *ngIf="item.officialname">{{item.officialname}}</span>
<span *ngIf="!item.officialname && item.name">{{item.name}}</span>
<span *ngIf="!item.officialname && !item.name">[no title available]</span>
</span>
</h6>
<div *ngIf="item.enabled"
class="uk-label uk-text-primary uk-margin-small-right uk-padding-xsmall ">Content source
</div>
<div *ngIf="item.deposit" class="uk-label uk-label-success uk-padding-xsmall">Suggested for
deposit
</div>
<div *ngIf="item.deposit && item.message" class=" uk-text-small uk-margin-top">
<div class="uk-text-muted uk-text-xsmall">Deposit info:</div>
<div [innerHTML]="item.message"></div>
</div>
<div *ngIf="item.selectioncriteria?.criteria?.length > 0"
class="uk-margin-small-bottom uk-margin-small-top uk-text-small">
<div class="uk-text-meta uk-margin-small-bottom">Filters</div>
<div [innerHTML]="criteriaUtils.getFiltersAsText(item.selectioncriteria.criteria)"></div>
<div *ngIf="item.selectioncriteria.criteria.length > 3" class="uk-margin-small-top">
<a class="uk-link view-more-less-link" (click)="openCriteria(item)">View
all {{item.selectioncriteria.criteria.length}} filters</a>
<div actions>
<div class="uk-section-xsmall uk-margin-top">
<div class="uk-flex uk-flex-middle uk-grid" uk-grid>
<div class="uk-width-1-2@m uk-width-1-1">
<select-sub-community (subCommunityChangedEmitter)="subCommunityChanged()"></select-sub-community>
</div>
<div class="uk-width-expand@m uk-width-1-1">
<div class="uk-grid uk-flex-middle uk-flex-right" uk-grid>
<div search-input [expandable]="true" [searchControl]="filterForm.get('keyword')"
searchInputClass="outer"
[placeholder]="'Search ' + openAIREEntities.DATASOURCES" [disabled]="loading"
class="uk-width-large@l uk-width-expand@m uk-width-1-1"></div>
<div>
<button class="uk-button uk-button-default uk-flex uk-flex-middle" (click)="addNew()"
[attr.uk-tooltip]="'<div><div class=\'uk-margin-bottom uk-text-bold\'> Search and add more <span class=\'uk-text-lowercase\'>' + openAIREEntities.DATASOURCES + '<span></span></div><div>The research results collected from the <span class=\'uk-text-lowercase\'>' + openAIREEntities.DATASOURCES + '</span> specified here will be automatically linked to your community dashboard.</div></div>'"
[disabled]="loading" [class.uk-disabled]="loading">
<icon name="add" [flex]="true"></icon>
<span class="uk-margin-small-left uk-text-bold uk-text-uppercase">Add</span>
</button>
</div>
</div>
</div>
<div class="uk-card-footer uk-padding-remove-vertical">
<div class="uk-grid uk-grid-small uk-flex-nowrap uk-grid-divider uk-flex-right" uk-grid>
<div>
</div>
</div>
</div>
</div>
<div inner>
<div class="uk-section uk-section-small uk-position-relative" style="min-height: 60vh">
<div *ngIf="loading" class="uk-position-center">
<loading></loading>
</div>
<div *ngIf="!loading">
<validate-page-enabled pageRoute="/search/find/dataproviders"></validate-page-enabled>
<validate-page-enabled pageRoute="/participate/deposit/suggested"></validate-page-enabled>
<ng-container
*ngIf="!this.communityService.selectedSubCommunity && subCommunitiesContentProviders.length > 0">
<ul class="uk-subnav uk-subnav-pill uk-margin-top" uk-switcher>
<li class="uk-active"><a href="#">Set for community <span
*ngIf="communityContentProviders.length > 0"
>({{ communityContentProviders.length }})</span> </a></li>
<li><a href="#">Set for subcommunities <span *ngIf="subCommunitiesContentProviders.length > 0"
>({{ subCommunitiesContentProviders.length }})</span></a></li>
</ul>
</ng-container>
<div [class.uk-switcher]="!this.communityService.selectedSubCommunity && subCommunitiesContentProviders.length > 0">
<div>
<div *ngIf="previewCommunityContentProviders.length == 0"
class="uk-card uk-card-default uk-padding-large uk-text-center uk-margin-bottom uk-text-bold">
<div>No <span class="uk-text-lowercase">{{ openAIREEntities.DATASOURCES }} </span>
<span *ngIf="communityContentProviders.length == 0; else: notFound">for {{ community.shortTitle }}
<span
*ngIf="communityService.selectedSubCommunityId() && this.communityService.selectedSubCommunity">{{ ' | ' + this.communityService.selectedSubCommunity['category'] + '| ' + this.communityService.selectedSubCommunity?.label }}</span></span>
<ng-template #notFound>found</ng-template>
</div>
</div>
<div>
<div class="uk-padding-small uk-padding-remove-horizontal">
<a (click)="openCriteria(item)" class="uk-button uk-button-link uk-flex uk-flex-middle">
<icon name="edit" [flex]="true"></icon>
<!--<span *ngIf="item.selectioncriteria?.criteria?.length > 0" class="uk-margin-small-left"
uk-tooltip="<div>Edit filters to limit research results.<br>Results which satisfy any of the selected filters will be included in your community.</div>">
Edit filters
</span>
<span *ngIf="!(item.selectioncriteria?.criteria?.length > 0)" class="uk-margin-small-left"
uk-tooltip="<div>Add filter to limit research results.<br>Results which satisfy any of the selected filters will be included in your community.</div>">
Add filters
</span>-->
<span class="uk-margin-small-left"
uk-tooltip="<div>Select datasource as content source and/or suggest for deposit. Add filters to limit research results.<br>Results which satisfy any of the selected filters will be included in your community.</div>">
<div *ngIf="previewCommunityContentProviders.length > 0">
<no-load-paging
[type]="previewCommunityContentProviders.length === 1?openAIREEntities.DATASOURCE:openAIREEntities.DATASOURCES"
(pageChange)="updatePage($event)"
[page]="page" [pageSize]="resultsPerPage"
[totalResults]="previewCommunityContentProviders.length">
</no-load-paging>
<div class="uk-grid uk-grid-large uk-child-width-1-1 uk-child-width-1-2@m uk-margin-top uk-margin-bottom"
uk-height-match="target: .uk-card-body; row: false;" uk-grid>
<div *ngFor="let item of currentPage; let i=index">
<div class="uk-card uk-card-default">
<div class="uk-card-body">
<h6 class="uk-margin-bottom">
<a *ngIf="item.openaireId"
target="_blank" class="custom-external uk-link-text"
[href]="contentProviderUrl+item.openaireId">
<span *ngIf="item.officialname">{{ item.officialname }}</span>
<span *ngIf="!item.officialname && item.name">{{ item.name }}</span>
<span *ngIf="!item.officialname && !item.name">[no title available]</span>
</a>
<span *ngIf="!item.openaireId">
<span *ngIf="item.officialname">{{ item.officialname }}</span>
<span *ngIf="!item.officialname && item.name">{{ item.name }}</span>
<span *ngIf="!item.officialname && !item.name">[no title available]</span>
</span>
</h6>
<div *ngIf="item.enabled"
class="uk-label uk-text-primary uk-margin-small-right uk-padding-xsmall ">
Content source
</div>
<div *ngIf="item.deposit"
class="uk-label uk-label-success uk-padding-xsmall">Suggested for
deposit
</div>
<div *ngIf="item.deposit && item.message"
class=" uk-text-small uk-margin-top">
<div class="uk-text-muted uk-text-xsmall">Deposit info:</div>
<div [innerHTML]="item.message"></div>
</div>
<div *ngIf="item.selectioncriteria?.criteria?.length > 0"
class="uk-margin-small-bottom uk-margin-small-top uk-text-small">
<div class="uk-text-meta uk-margin-small-bottom">Filters</div>
<div [innerHTML]="criteriaUtils.getFiltersAsText(item.selectioncriteria.criteria)"></div>
<div *ngIf="item.selectioncriteria.criteria.length > 3"
class="uk-margin-small-top">
<a class="uk-link view-more-less-link" (click)="openCriteria(item)">View
all {{ item.selectioncriteria.criteria.length }} filters</a>
</div>
</div>
</div>
<div class="uk-card-footer uk-padding-remove-vertical">
<div class="uk-grid uk-grid-small uk-flex-nowrap uk-grid-divider uk-flex-right"
uk-grid>
<div>
</div>
<div>
<div class="uk-padding-small uk-padding-remove-horizontal">
<a (click)="openCriteria(item)"
class="uk-button uk-button-link uk-flex uk-flex-middle">
<icon name="edit" [flex]="true"></icon>
<!--<span *ngIf="item.selectioncriteria?.criteria?.length > 0" class="uk-margin-small-left"
uk-tooltip="<div>Edit filters to limit research results.<br>Results which satisfy any of the selected filters will be included in your community.</div>">
Edit filters
</span>
<span *ngIf="!(item.selectioncriteria?.criteria?.length > 0)" class="uk-margin-small-left"
uk-tooltip="<div>Add filter to limit research results.<br>Results which satisfy any of the selected filters will be included in your community.</div>">
Add filters
</span>-->
<span class="uk-margin-small-left"
uk-tooltip="<div>Select datasource as content source and/or suggest for deposit. Add filters to limit research results.<br>Results which satisfy any of the selected filters will be included in your community.</div>">
Edit Options
</span>
</a>
</div>
</a>
</div>
</div>
<div>
<div class="uk-padding-small uk-padding-remove-horizontal">
<a (click)="removeContentProvider(item)"
class="uk-button uk-button-link uk-flex uk-flex-middle">
<icon name="remove" [flex]="true"></icon>
<span class="uk-margin-small-left">Remove</span>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="uk-margin-small-top">
<paging-no-load [currentPage]="page"
[totalResults]="previewCommunityContentProviders.length"
[size]="resultsPerPage"
(pageChange)="updatePage($event)"
customClasses="uk-flex-right@m uk-flex-center">
</paging-no-load>
</div>
</div>
<div>
<div class="uk-padding-small uk-padding-remove-horizontal">
<a (click)="removeContentProvider(item)"
class="uk-button uk-button-link uk-flex uk-flex-middle">
<icon name="remove" [flex]="true"></icon>
<span class="uk-margin-small-left">Remove</span>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="uk-margin-small-top">
<paging-no-load [currentPage]="page"
[totalResults]="previewCommunityContentProviders.length" [size]="resultsPerPage"
(pageChange)="updatePage($event)" customClasses="uk-flex-right@m uk-flex-center">
</paging-no-load>
</div>
</div>
</div>
<!-- in all content config : show subcommunities in preview mode-->
<div *ngIf="!this.communityService.selectedSubCommunity" class="uk-grid uk-grid-large uk-child-width-1-1 uk-child-width-1-2@m uk-margin-top uk-margin-bottom"
uk-height-match="target: .uk-card-body; row: false;" uk-grid>
<div *ngFor="let item of previewSubCommunityContentProviders; let i=index">
<div class="uk-card uk-card-default">
<div class="uk-card-body">
<h6 class="uk-margin-bottom">
<a *ngIf="item.openaireId"
target="_blank" class="custom-external uk-link-text"
[href]="contentProviderUrl+item.openaireId">
<span *ngIf="item.officialname">{{item.officialname}}</span>
<span *ngIf="!item.officialname && item.name">{{item.name}}</span>
<span *ngIf="!item.officialname && !item.name">[no title available]</span>
</a>
<span *ngIf="!item.openaireId">
<span *ngIf="item.officialname">{{item.officialname}}</span>
<span *ngIf="!item.officialname && item.name">{{item.name}}</span>
<!-- in all content config : show subcommunities in preview mode-->
<div *ngIf="!this.communityService.selectedSubCommunity"
class="uk-grid uk-grid-large uk-child-width-1-1 uk-child-width-1-2@m uk-margin-top uk-margin-bottom"
uk-height-match="target: .uk-card-body; row: false;" uk-grid>
<div *ngFor="let item of previewSubCommunityContentProviders; let i=index">
<div class="uk-card uk-card-default">
<div class="uk-card-body">
<h6 class="uk-margin-bottom">
<a *ngIf="item.openaireId"
target="_blank" class="custom-external uk-link-text"
[href]="contentProviderUrl+item.openaireId">
<span *ngIf="item.officialname">{{ item.officialname }}</span>
<span *ngIf="!item.officialname && item.name">{{ item.name }}</span>
<span *ngIf="!item.officialname && !item.name">[no title available]</span>
</a>
<span *ngIf="!item.openaireId">
<span *ngIf="item.officialname">{{ item.officialname }}</span>
<span *ngIf="!item.officialname && item.name">{{ item.name }}</span>
<span *ngIf="!item.officialname && !item.name">[no title available]</span>
</span>
</h6>
<!-- [routerLink]="'./'" [relativeTo]="this._router" [queryParams] = "{subCommunity: item.communityId}" [queryParamsHandling]="''"-->
<a (click)="navigateToSub(item.communityId)"
class="uk-margin-small-right uk-margin-small-bottom uk-button uk-button-primary uk-button-small">
{{communityService.getCommunityLabel(item.communityId)}}</a>
<div *ngIf="item.enabled" class="uk-label uk-text-primary uk-margin-small-right uk-padding-xsmall ">
Content source
</h6>
<!-- [routerLink]="'./'" [relativeTo]="this._router" [queryParams] = "{subCommunity: item.communityId}" [queryParamsHandling]="''"-->
<a (click)="navigateToSub(item.communityId)"
class="uk-margin-small-right uk-margin-small-bottom uk-button uk-button-primary uk-button-small">
{{ communityService.getCommunityLabel(item.communityId) }}</a>
<div *ngIf="item.enabled"
class="uk-label uk-text-primary uk-margin-small-right uk-padding-xsmall ">
Content source
</div>
<div *ngIf="item.deposit" class="uk-label uk-label-success uk-padding-xsmall">
Suggested for deposit
</div>
<div *ngIf="item.deposit && item.message" class=" uk-text-small uk-margin-top">
<div class="uk-text-muted uk-text-xsmall">Deposit info:</div>
<div [innerHTML]="item.message"></div>
</div>
<div *ngIf="item.selectioncriteria?.criteria?.length > 0"
class="uk-margin-small-bottom uk-margin-small-top uk-text-small">
<div class="uk-text-meta uk-margin-small-bottom">Filters</div>
<div [innerHTML]="criteriaUtils.getFiltersAsText(item.selectioncriteria.criteria)"></div>
<div *ngIf="item.selectioncriteria.criteria.length > 3"
class="uk-margin-small-top">
<a class="uk-link view-more-less-link" (click)="openCriteria(item)">View
all {{ item.selectioncriteria.criteria.length }} filters</a>
</div>
</div>
</div>
<!-- <div class="uk-card-footer uk-padding-remove-vertical">-->
<!-- <div class="uk-grid uk-grid-small uk-flex-nowrap uk-grid-divider uk-flex-right" uk-grid>-->
<!-- <div>-->
<!-- </div>-->
<!-- <div>-->
<!-- <div class="uk-padding-small uk-padding-remove-horizontal">-->
<!-- <a (click)="openCriteria(item)" class="uk-button uk-button-link uk-flex uk-flex-middle">-->
<!-- <icon name="edit" [flex]="true"></icon>-->
<!-- &lt;!&ndash;<span *ngIf="item.selectioncriteria?.criteria?.length > 0" class="uk-margin-small-left"-->
<!-- uk-tooltip="<div>Edit filters to limit research results.<br>Results which satisfy any of the selected filters will be included in your community.</div>">-->
<!-- Edit filters-->
<!-- </span>-->
<!-- <span *ngIf="!(item.selectioncriteria?.criteria?.length > 0)" class="uk-margin-small-left"-->
<!-- uk-tooltip="<div>Add filter to limit research results.<br>Results which satisfy any of the selected filters will be included in your community.</div>">-->
<!-- Add filters-->
<!-- </span>&ndash;&gt;-->
<!-- <span class="uk-margin-small-left"-->
<!-- uk-tooltip="<div>Select datasource as content source and/or suggest for deposit. Add filters to limit research results.<br>Results which satisfy any of the selected filters will be included in your community.</div>">-->
<!-- Edit Options-->
<!-- </span>-->
<!-- </a>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div>-->
<!-- <div class="uk-padding-small uk-padding-remove-horizontal">-->
<!-- <a (click)="removeContentProvider(item)"-->
<!-- class="uk-button uk-button-link uk-flex uk-flex-middle">-->
<!-- <icon name="remove" [flex]="true"></icon>-->
<!-- <span class="uk-margin-small-left">Remove</span>-->
<!-- </a>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
</div>
</div>
</div>
</div>
<div *ngIf="item.deposit" class="uk-label uk-label-success uk-padding-xsmall">Suggested for deposit
</div>
<div *ngIf="item.deposit && item.message" class=" uk-text-small uk-margin-top">
<div class="uk-text-muted uk-text-xsmall">Deposit info:</div>
<div [innerHTML]="item.message"></div>
</div>
<div *ngIf="item.selectioncriteria?.criteria?.length > 0"
class="uk-margin-small-bottom uk-margin-small-top uk-text-small">
<div class="uk-text-meta uk-margin-small-bottom">Filters</div>
<div [innerHTML]="criteriaUtils.getFiltersAsText(item.selectioncriteria.criteria)"></div>
<div *ngIf="item.selectioncriteria.criteria.length > 3" class="uk-margin-small-top">
<a class="uk-link view-more-less-link" (click)="openCriteria(item)">View
all {{item.selectioncriteria.criteria.length}} filters</a>
</div>
</div>
</div>
<!-- <div class="uk-card-footer uk-padding-remove-vertical">-->
<!-- <div class="uk-grid uk-grid-small uk-flex-nowrap uk-grid-divider uk-flex-right" uk-grid>-->
<!-- <div>-->
<!-- </div>-->
<!-- <div>-->
<!-- <div class="uk-padding-small uk-padding-remove-horizontal">-->
<!-- <a (click)="openCriteria(item)" class="uk-button uk-button-link uk-flex uk-flex-middle">-->
<!-- <icon name="edit" [flex]="true"></icon>-->
<!-- &lt;!&ndash;<span *ngIf="item.selectioncriteria?.criteria?.length > 0" class="uk-margin-small-left"-->
<!-- uk-tooltip="<div>Edit filters to limit research results.<br>Results which satisfy any of the selected filters will be included in your community.</div>">-->
<!-- Edit filters-->
<!-- </span>-->
<!-- <span *ngIf="!(item.selectioncriteria?.criteria?.length > 0)" class="uk-margin-small-left"-->
<!-- uk-tooltip="<div>Add filter to limit research results.<br>Results which satisfy any of the selected filters will be included in your community.</div>">-->
<!-- Add filters-->
<!-- </span>&ndash;&gt;-->
<!-- <span class="uk-margin-small-left"-->
<!-- uk-tooltip="<div>Select datasource as content source and/or suggest for deposit. Add filters to limit research results.<br>Results which satisfy any of the selected filters will be included in your community.</div>">-->
<!-- Edit Options-->
<!-- </span>-->
<!-- </a>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div>-->
<!-- <div class="uk-padding-small uk-padding-remove-horizontal">-->
<!-- <a (click)="removeContentProvider(item)"-->
<!-- class="uk-button uk-button-link uk-flex uk-flex-middle">-->
<!-- <icon name="remove" [flex]="true"></icon>-->
<!-- <span class="uk-margin-small-left">Remove</span>-->
<!-- </a>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<modal-alert #deleteModal [overflowBody]="false" (alertOutput)="confirmedDeleteContentProvider()"
classTitle="uk-background-primary uk-light"></modal-alert>

View File

@ -55,7 +55,7 @@ export class RemoveContentProvidersComponent implements OnInit {
constructor(private route: ActivatedRoute, private _router: Router,
private _fb: UntypedFormBuilder,
private communityService: CommunityService,
protected communityService: CommunityService,
private _manageCommunityContentProvidersService: ManageCommunityContentProvidersService,
private _searchCommunityContentProvidersService: SearchCommunityDataprovidersService,
private _clearCacheService: ClearCacheService) {

View File

@ -9,7 +9,7 @@ declare var UIkit;
selector: 'background-upload',
template: `
<input #file id="photo" type="file" class="uk-hidden" (change)="fileChangeEvent($event)"/>
<div *ngIf="!background.imageFile"
<div *ngIf="!background.imageFile" [attr.uk-tooltip]="'Please upload a JPG or PNG image under ' + maxsize / (1000 * 1024) + 'MB.'"
class=" upload uk-text-center uk-height-small uk-flex uk-flex-middle uk-flex-center uk-text-uppercase">
<span uk-icon="icon: cloud-upload"></span>
<div uk-form-custom>
@ -55,7 +55,7 @@ export class BackgroundUploadComponent implements OnInit {
@Input() light:boolean; //fonts mode
public file: File;
// public photo: string | ArrayBuffer;
private maxsize: number = 2000 * 1024;
public maxsize: number = 2 * 1000 * 1024;
properties;
private subscriptions: any[] = [];
@ -109,7 +109,7 @@ export class BackgroundUploadComponent implements OnInit {
});
this.removePhoto();
} else if (this.file.size > this.maxsize) {
UIkit.notification('File exceeds size\'s limit (' + this.maxsize / 1024 + 'KB)! ', {
UIkit.notification('File exceeds size\'s limit (' + this.maxsize / (1000 * 1024) + 'MB)! ', {
status: 'danger',
timeout: 6000,
pos: 'bottom-right'
@ -136,7 +136,7 @@ export class BackgroundUploadComponent implements OnInit {
}, error => {
if (error.error.message) {
UIkit.notification('The maximum size of an image is 1MB, please check if your file exceeds this limit.', {
UIkit.notification('The maximum size of an image is ' + this.maxsize / (1000 * 1024) + 'MB, please check if your file exceeds this limit.', {
status: 'danger',
timeout: 6000,
pos: 'bottom-right'

View File

@ -1,155 +1,183 @@
<ng-template #selected_filters_pills>
<h1>
<div class="uk-slider filters-slider" uk-slider="finite: true">
<div [class.uk-invisible]="list.children.length === 0" class="uk-position-relative">
<div class="uk-slider-container">
<ul #list class="uk-slider-items uk-grid uk-grid-small uk-margin-small-right uk-flex-nowrap">
<li *ngIf="selectedFunder">
<h1>
<div class="uk-slider filters-slider" uk-slider="finite: true">
<div [class.uk-invisible]="list.children.length === 0" class="uk-position-relative">
<div class="uk-slider-container">
<ul #list class="uk-slider-items uk-grid uk-grid-small uk-margin-small-right uk-flex-nowrap">
<li *ngIf="selectedFunder">
<span class="uk-label uk-label-primary uk-flex uk-flex-middle">
<span class="uk-margin-small-right uk-width-expand uk-text-truncate">
{{selectedFunder.name}}
{{ selectedFunder.name }}
</span>
<button class="uk-close uk-icon" [class.uk-disabled]="disabled" [disabled]="disabled" (click)="removeFilter(null, funders)">
<button class="uk-close uk-icon" [class.uk-disabled]="disabled" [disabled]="disabled"
(click)="removeFilter(null, funders)">
<icon name="close" flex="true" ratio="0.7"></icon>
</button>
</span>
</li>
</ul>
</li>
</ul>
</div>
<a class="uk-position-center-left uk-blur-background" uk-slider-item="previous"><span
uk-icon="chevron-left"></span></a>
<a class="uk-position-center-right uk-blur-background" uk-slider-item="next"><span
uk-icon="chevron-right"></span></a>
</div>
</div>
<a class="uk-position-center-left uk-blur-background" uk-slider-item="previous"><span uk-icon="chevron-left"></span></a>
<a class="uk-position-center-right uk-blur-background" uk-slider-item="next"><span uk-icon="chevron-right"></span></a>
</div>
</div>
</h1>
</h1>
</ng-template>
<ng-template #filters_column>
<!-- [class.filterLoading]="disabled"-->
<div >
<div class="uk-flex uk-flex-middle">
<h4 class="uk-margin-right uk-margin-remove-bottom">Filters</h4>
<a *ngIf="selectedFunderId" (click)="clearFilters()"
class="uk-text-small" [class.uk-disabled]="disabled" [class.uk-link-muted]="disabled">
Clear All
</a>
</div>
<!-- <div *ngIf="openaireSearchUtils.refineStatus == errorCodes.LOADING"-->
<!-- class="uk-margin-top" role="alert">-->
<!-- <loading></loading>-->
<!-- </div>-->
<div *ngIf="openaireSearchUtils.refineStatus != errorCodes.LOADING && openaireSearchUtils.refineStatus != errorCodes.DONE && openaireProjects.length > 0"
class="uk-margin-top uk-text-meta">
<span *ngIf="openaireSearchUtils.refineStatus == errorCodes.NONE">No filters available</span>
<span *ngIf="openaireSearchUtils.refineStatus != errorCodes.NONE" class="uk-text-warning">Filters temporarily unavailable. Please try again later.</span>
</div>
<ul class="uk-list uk-list-xlarge">
<li *ngIf="funders && funders.values && funders.values.length > 0">
<search-filter [showMoreInline]="true"
[filter]="funders" [showResultCount]="true"
[actionRoute]="false" (onFilterChange)="funderChanged(funders)"
[isDisabled]="disabled">
</search-filter>
</li>
</ul>
</div>
</ng-template>
<div class="uk-flex uk-flex-center">
<select-sub-community [readonly]="true"></select-sub-community>
</div>
<div class="uk-section uk-flex uk-flex-center uk-flex uk-flex-middle">
<div class="uk-width-auto uk-margin-right">
<a uk-icon="icon: info; ratio: 1.3"></a>
<div *ngIf="community" class="uk-dropdown uk-padding-small uk-width-medium" uk-dropdown="mode: hover"
[innerHTML]="infoMessage">
</div>
</div>
<div search-input class="uk-width-xlarge@l uk-width-large" [searchControl]="filterForm.get('keyword')" searchInputClass="outer"
[placeholder]="'Search '+openaireEntities.PROJECTS" [disabled]="loading"></div>
</div>
<div class="uk-section uk-section-small uk-position-relative">
<div class="uk-grid" uk-grid>
<div *ngIf="openaireSearchUtils.status != errorCodes.NONE" class="uk-width-1-4@m search-filters uk-visible@m">
<ng-container *ngTemplateOutlet="filters_column; context: {}"></ng-container>
</div>
<div class="uk-width-expand@m uk-with-1-1@s">
<div *ngIf="selectedFunderId && openaireSearchUtils.status !== errorCodes.LOADING">
<ng-container *ngTemplateOutlet="selected_filters_pills;"></ng-container>
</div>
<div>
<div *ngIf="openaireSearchUtils.status == errorCodes.LOADING" class="uk-position-center">
<loading></loading>
<!-- [class.filterLoading]="disabled"-->
<div>
<div class="uk-flex uk-flex-middle">
<h4 class="uk-margin-right uk-margin-remove-bottom">Filters</h4>
<a *ngIf="selectedFunderId" (click)="clearFilters()"
class="uk-text-small" [class.uk-disabled]="disabled" [class.uk-link-muted]="disabled">
Clear All
</a>
</div>
<div *ngIf="openaireSearchUtils.status !== errorCodes.LOADING">
<div *ngIf="openaireSearchUtils.totalResults == 0"
class="uk-card uk-card-default uk-padding-large uk-text-center uk-margin-bottom">
<div class="uk-text-bold">No {{openaireEntities.PROJECTS | lowercase}} found</div>
<div class="uk-margin-small-top" [innerHTML]="infoMessage"></div>
</div>
<ng-container *ngIf="openaireSearchUtils.totalResults > 0">
<div>
<label>
<input id="checkAll" type="checkbox" (click)="selectAll()" class="uk-checkbox" title="Select all"
[ngModel]="selectedIndexes.length == openaireProjects.length"/>
</label>
<button *ngIf="selectedIndexes.length > 0" class="uk-button uk-button-link uk-margin-xsmall-left" [class.uk-disabled]="selectedIndexes.length == 0"
[disabled]="selectedIndexes.length == 0" (click)="addAll()" >
Add ({{selectedIndexes.length}})
</button>
<hr class="uk-margin-remove-top">
<!-- <div *ngIf="openaireSearchUtils.refineStatus == errorCodes.LOADING"-->
<!-- class="uk-margin-top" role="alert">-->
<!-- <loading></loading>-->
<!-- </div>-->
<div *ngIf="openaireSearchUtils.refineStatus != errorCodes.LOADING && openaireSearchUtils.refineStatus != errorCodes.DONE && openaireProjects.length > 0"
class="uk-margin-top uk-text-meta">
<span *ngIf="openaireSearchUtils.refineStatus == errorCodes.NONE">No filters available</span>
<span *ngIf="openaireSearchUtils.refineStatus != errorCodes.NONE" class="uk-text-warning">Filters temporarily unavailable. Please try again later.</span>
</div>
<ul class="uk-list uk-list-xlarge">
<li *ngIf="funders && funders.values && funders.values.length > 0">
<search-filter [showMoreInline]="true"
[filter]="funders" [showResultCount]="true"
[actionRoute]="false" (onFilterChange)="funderChanged(funders)"
[isDisabled]="disabled">
</search-filter>
</li>
</ul>
</div>
</ng-template>
<div class="uk-section-xsmall uk-margin-top">
<div class="uk-flex uk-flex-middle uk-grid" uk-grid>
<div class="uk-width-1-2@m uk-width-1-1">
<select-sub-community [readonly]="true"></select-sub-community>
</div>
<div class="uk-width-expand@m uk-width-1-1">
<div class="uk-grid uk-flex-middle uk-flex-right@l uk-flex-center" uk-grid>
<div class="uk-width-auto uk-margin-right">
<a uk-icon="icon: info; ratio: 1.3"></a>
<div *ngIf="community" class="uk-dropdown uk-padding-small uk-width-medium"
uk-dropdown="mode: hover" [innerHTML]="infoMessage">
</div>
</div>
<div search-input class="uk-width-xlarge@xl uk-width-large" [searchControl]="filterForm.get('keyword')"
searchInputClass="outer"
[placeholder]="'Search '+openaireEntities.PROJECTS" [disabled]="loading"></div>
</div>
<no-load-paging [type]="openaireEntities.PROJECTS"
[page]="openaireSearchUtils.page" [pageSize]="resultsPerPage" (pageChange)="goTo($event.value, false)"
[totalResults]="openaireSearchUtils.totalResults">
</no-load-paging>
<div class="uk-grid uk-child-width-1-1 uk-margin-medium-top uk-margin-bottom" uk-grid>
<div *ngFor="let result of openaireProjects; let i = index">
<div class="uk-card uk-card-default">
<div class="uk-card-body">
<result-preview [properties]="properties" [showOrganizations]="true"
[showSubjects]="true" [result]="getResultPreview(result)"
[externalUrl]="projectUrl" [hasLink]="false">
</result-preview>
</div>
<div class="uk-card-footer uk-padding-remove-vertical">
<div class="uk-grid uk-grid-small uk-flex-nowrap uk-grid-divider uk-flex-right" uk-grid>
<div class="uk-flex uk-flex-middle">
<input [id]="result.id" class="uk-checkbox" type="checkbox" title="Select"
value="{{selectedIndexes.indexOf(i) != -1}}" [ngModel]="selectedIndexes.indexOf(i)!=-1" (click)="toggleSelected(i)">
</div>
<div *ngIf="!result['isPart']">
<div class="uk-padding-small uk-padding-remove-horizontal">
<a (click)="addProject(result)" class="uk-button uk-button-link uk-flex uk-flex-middle">
<icon name="add" [flex]="true"></icon>
<span class="uk-margin-small-left">
</div>
</div>
</div>
<div class="uk-section uk-section-small uk-position-relative">
<div class="uk-grid" uk-grid>
<div *ngIf="openaireSearchUtils.status != errorCodes.NONE"
class="uk-width-1-4@m search-filters uk-visible@m">
<ng-container *ngTemplateOutlet="filters_column; context: {}"></ng-container>
</div>
<div class="uk-width-expand@m uk-with-1-1@s">
<div *ngIf="selectedFunderId && openaireSearchUtils.status !== errorCodes.LOADING">
<ng-container *ngTemplateOutlet="selected_filters_pills;"></ng-container>
</div>
<div>
<div *ngIf="openaireSearchUtils.status == errorCodes.LOADING" class="uk-position-center">
<loading></loading>
</div>
<div *ngIf="openaireSearchUtils.status !== errorCodes.LOADING">
<div *ngIf="openaireSearchUtils.totalResults == 0"
class="uk-card uk-card-default uk-padding-large uk-text-center uk-margin-bottom">
<div class="uk-text-bold">No {{ openaireEntities.PROJECTS | lowercase }} found</div>
<div class="uk-margin-small-top" [innerHTML]="infoMessage"></div>
</div>
<ng-container *ngIf="openaireSearchUtils.totalResults > 0">
<no-load-paging [type]="openaireEntities.PROJECTS | lowercase"
[page]="openaireSearchUtils.page" [pageSize]="resultsPerPage"
(pageChange)="goTo($event.value, false)"
[totalResults]="openaireSearchUtils.totalResults">
<div class="uk-width-auto">
<a class="uk-link-reset">
<icon name="more_vert" [flex]="true" [ratio]="1.2"></icon>
</a>
<div class="uk-dropdown uk-padding-small" [class.uk-open]="selectedIndexes.length > 0" uk-dropdown="mode: click">
<div class="uk-flex uk-flex-middle">
<label>
<input id="checkAll" type="checkbox" (click)="selectAll()"
class="uk-checkbox"
title="Select all"
[ngModel]="selectedIndexes.length == openaireProjects.length"/>
</label>
<button class="uk-button uk-button-link uk-text-nowrap uk-margin-xsmall-left"
[class.uk-disabled]="selectedIndexes.length == 0"
[disabled]="selectedIndexes.length == 0"
(click)="addAll()">
Add ({{ selectedIndexes.length }})
</button>
</div>
</div>
</div>
</no-load-paging>
<div class="uk-grid uk-child-width-1-1 uk-margin-medium-top uk-margin-bottom" uk-grid>
<div *ngFor="let result of openaireProjects; let i = index">
<div class="uk-card uk-card-default">
<div class="uk-card-body">
<result-preview [properties]="properties" [showOrganizations]="true"
[showSubjects]="true"
[result]="getResultPreview(result)"
[externalUrl]="projectUrl" [hasLink]="false">
</result-preview>
</div>
<div class="uk-card-footer uk-padding-remove-vertical">
<div class="uk-grid uk-grid-small uk-flex-nowrap uk-grid-divider uk-flex-right"
uk-grid>
<div class="uk-flex uk-flex-middle">
<input [id]="result.id" class="uk-checkbox" type="checkbox"
title="Select"
value="{{selectedIndexes.indexOf(i) != -1}}"
[ngModel]="selectedIndexes.indexOf(i)!=-1"
(click)="toggleSelected(i)">
</div>
<div *ngIf="!result['isPart']">
<div class="uk-padding-small uk-padding-remove-horizontal">
<a (click)="addProject(result)"
class="uk-button uk-button-link uk-flex uk-flex-middle">
<icon name="add" [flex]="true"></icon>
<span class="uk-margin-small-left">
Add
</span>
</a>
</a>
</div>
</div>
<div *ngIf="result['isPart']">
<div class="uk-padding-small uk-padding-remove-horizontal">
<a (click)="removeProject(result)"
class="uk-button uk-button-link uk-flex uk-flex-middle">
<icon name="remove" [flex]="true"></icon>
<span class="uk-margin-small-left">Remove</span>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div *ngIf="result['isPart']">
<div class="uk-padding-small uk-padding-remove-horizontal">
<a (click)="removeProject(result)"
class="uk-button uk-button-link uk-flex uk-flex-middle">
<icon name="remove" [flex]="true"></icon>
<span class="uk-margin-small-left">Remove</span>
</a>
<div class="uk-margin-small-top">
<no-load-paging [type]="openaireEntities.PROJECTS"
[page]="openaireSearchUtils.page" [pageSize]="resultsPerPage"
(pageChange)="goTo($event.value, false)"
[totalResults]="openaireSearchUtils.totalResults">
</no-load-paging>
</div>
</div>
</div>
</div>
</ng-container>
</div>
</div>
</div>
<div class="uk-margin-small-top">
<no-load-paging [type]="openaireEntities.PROJECTS"
[page]="openaireSearchUtils.page" [pageSize]="resultsPerPage" (pageChange)="goTo($event.value, false)"
[totalResults]="openaireSearchUtils.totalResults">
</no-load-paging>
</div>
</ng-container>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -1,277 +1,302 @@
<div page-content>
<div actions>
<div class="uk-section-xsmall uk-margin-top">
<div class="uk-flex uk-flex-middle">
<select-sub-community (subCommunityChangedEmitter)="subCommunityChanged()"></select-sub-community>
<div class="uk-width-expand@m uk-width-1-1 uk-grid uk-flex-middle uk-flex-right@m uk-flex-center uk-margin-remove-left" uk-grid>
<div search-input [expandable]="true" [searchControl]="filterForm.get('keyword')" searchInputClass="outer"
placeholder="Search project" [disabled]="loading"
class="uk-width-1-3@xl uk-width-2-5@l uk-width-1-2@m uk-width-1-1"></div>
<div>
<button class="uk-button uk-button-default uk-flex uk-flex-middle"
(click)="addNew()"
[attr.uk-tooltip]="('cls: uk-active; ') +
<div actions>
<div class="uk-section-xsmall uk-margin-top">
<div class="uk-flex uk-flex-middle uk-grid" uk-grid>
<div class="uk-width-1-2@m uk-width-1-1">
<select-sub-community (subCommunityChangedEmitter)="subCommunityChanged()"></select-sub-community>
</div>
<div class="uk-width-expand@m uk-width-1-1">
<div class="uk-grid uk-flex-middle uk-flex-right" uk-grid>
<div search-input [expandable]="true" [searchControl]="filterForm.get('keyword')"
searchInputClass="outer"
placeholder="Search project" [disabled]="loading"
class="uk-width-large@l uk-width-expand@m uk-width-1-1"></div>
<div>
<button class="uk-button uk-button-default uk-flex uk-flex-middle"
(click)="addNew()"
[attr.uk-tooltip]="('cls: uk-active; ') +
'title: <div class=\'uk-margin-bottom uk-text-bold\'> Search and add more '+openaireEntiites.PROJECTS+'</div>' +
'<div>The research results linked to the <span class=\'uk-text-lowercase\'>'+openaireEntiites.PROJECTS +
'</span> specified here will be automatically linked to your <span class=\'uk-text-lowercase\'>'+openaireEntiites.COMMUNITY+'</span> dashboard.</div>'"
[disabled]="loading" [class.uk-disabled]="loading">
<icon name="add" [flex]="true"></icon>
<span class="uk-margin-small-left">New {{openaireEntiites.PROJECT}}</span>
</button>
</div>
</div>
</div>
</div>
</div>
<div inner>
<div *ngIf="communitySearchUtils.totalResults > 0">
<label>
<input id="checkAll" type="checkbox" (click)="selectAll()" class="uk-checkbox" title="Select all"
[ngModel]="selectedIndexes.length == previewCommunityProjects.length"/>
</label>
<button *ngIf="selectedIndexes.length > 0" class="uk-button uk-button-link uk-margin-xsmall-left" [class.uk-disabled]="selectedIndexes.length == 0"
[disabled]="selectedIndexes.length == 0" (click)="promtToRemoveProjects()" >
Remove ({{selectedIndexes.length}})
</button>
<hr class="uk-margin-remove-top">
</div>
<div class="uk-grid uk-flex-middle uk-margin-medium-top" uk-grid>
<div *ngIf="allFunderOptions.length > 0">
<dropdown-filter #dropdownFilter dropdownClass="uk-width-medium uk-padding-small"
name="Filter by Funder" [count]="filterForm.get('funder').value?1:null">
<h6 class="uk-margin-remove-bottom" title="Filter by Funder">Funder</h6>
<ul class="uk-list uk-margin-remove-bottom">
<li *ngFor="let option of previewFunderOptions">
<a class="uk-link-text" >
<label (click)="select(option, $event, dropdownFilter)" class="uk-flex uk-flex-middle">
<input class="uk-checkbox"
type="checkbox" [checked]="isSelected(option.value.id)">
<span class="uk-margin-small-left">{{option.label}}</span>
</label>
</a>
</li>
</ul>
</dropdown-filter>
</div>
<div>
<div input inputClass="flat x-small" placeholder="Sort by"
[disabled]="previewCommunityProjects.length == 0"
[formInput]="filterForm.get('sort')"
type="select" [options]="sortOptions"
class="uk-width-small">
</div>
</div>
<!-- </div>-->
</div>
<div class="uk-section uk-section-small uk-position-relative uk-padding-remove-top" style="min-height: 60vh">
<div *ngIf="loading" class="uk-position-center">
<loading></loading>
</div>
<validate-page-enabled pageRoute="/search/find/projects"></validate-page-enabled>
<ng-container *ngIf="!this.communityService.selectedSubCommunity && previewSubCommunityProjects.length > 0">
<ul class="uk-subnav uk-subnav-pill" uk-margin uk-switcher>
<li class="uk-active"><a href="#">Set for community <span *ngIf="this.communitySearchUtils.totalResults > 0"
>({{communitySearchUtils.totalResults}})</span> </a></li>
<li><a href="#">Set for subcommunities <span *ngIf="previewSubCommunityProjects.length > 0"
>({{previewSubCommunityProjects.length}})</span></a></li>
</ul>
</ng-container>
<div [class.uk-switcher]="!this.communityService.selectedSubCommunity && previewSubCommunityProjects.length > 0">
<div *ngIf="!loading">
<div class="uk-margin-medium-bottom">
<div *ngIf="previewCommunityProjects.length == 0"
class="uk-card uk-card-default uk-padding-large uk-text-center uk-margin-bottom uk-text-bold">
<div>No {{openaireEntiites.PROJECTS | lowercase}}
<span *ngIf="communitySearchUtils.totalResults == 0; else: notFound">for {{community.shortTitle}}</span>
<span
*ngIf="communityService.selectedSubCommunityId() && this.communityService.selectedSubCommunity">{{' | ' + this.communityService.selectedSubCommunity['category'] + '| ' + this.communityService.selectedSubCommunity?.label}}</span>
<ng-template #notFound>found</ng-template>
</div>
</div>
<div class="">
<results-and-pages [type]="openaireEntiites.PROJECTS | lowercase" [page]="communitySearchUtils.page" [pageSize]="resultsPerPage"
[totalResults]="communitySearchUtils.totalResults"></results-and-pages>
</div>
<div class="uk-width-expand@l uk-width-1-1 uk-flex uk-flex-right@m uk-flex-center uk-margin-xsmall-bottom">
<paging-no-load *ngIf="communitySearchUtils.totalResults> 0" [currentPage]="communitySearchUtils.page"
(pageChange)="updatePage($event)" [size]="resultsPerPage"
[totalResults]="communitySearchUtils.totalResults" customClasses="uk-flex-right">
</paging-no-load>
</div>
<div *ngIf="previewCommunityProjects.length > 0"
class="uk-grid uk-grid-large uk-child-width-1-1 uk-child-width-1-2@m uk-margin-bottom" uk-grid uk-height-match="target: .uk-card-body">
<div *ngFor="let item of previewCommunityProjects; let i=index">
<div class="uk-card uk-card-default">
<div class="uk-card-body">
<h6 class="uk-margin-bottom">
<a *ngIf="(item.openaireId || (item.grantId && item.funder)) && (!item['availableSince'] || !lastDBLoadDate || item['availableSince']<lastDBLoadDate)"
target="_blank" class="custom-external uk-link-text"
[href]="projectUrl+'?' + ((item.openaireId) ? 'projectId='+item.openaireId : 'grantId='+item.grantId+'&funder='+item.funder)">
<span *ngIf="item.name">{{item.name}}</span>
<span *ngIf="item.name && item.acronym"> (</span><span *ngIf="item.acronym">{{item.acronym}}</span><span *ngIf="item.name && item.acronym">)</span>
<span *ngIf="!item.name && !item.acronym">[no title available]</span>
</a>
<span *ngIf="(!item.openaireId && !(item.grantId && item.funder) || (item['availableSince'] && lastDBLoadDate && item['availableSince'] >= lastDBLoadDate))">
<span *ngIf="item.name">{{item.name}}</span>
<span *ngIf="item.name && item.acronym"> (</span><span *ngIf="item.acronym">{{item.acronym}}</span><span *ngIf="item.name && item.acronym">)</span>
<span *ngIf="!item.name && !item.acronym">[no title available]</span>
</span>
</h6>
<div class="uk-grid uk-child-width-1-2@l uk-text-small">
<div *ngIf="item.grantId">
<span class="uk-text-meta">Grant ID: </span>
<span>{{item.grantId}}</span>
</div>
<div *ngIf="item.funder">
<span class="uk-text-meta">Funder: </span>
<span>{{item.funder}}</span>
</div>
</div>
</div>
<div class="uk-card-footer uk-padding-remove-vertical">
<div class="uk-grid uk-grid-small uk-flex-nowrap uk-grid-divider uk-flex-right" uk-grid>
<div class="uk-flex uk-flex-middle">
<input [id]="item.id" class="uk-checkbox" type="checkbox" title="Select"
value="{{selectedIndexes.indexOf(i) != -1}}" [ngModel]="selectedIndexes.indexOf(i)!=-1" (click)="toggleSelected(i)">
</div>
<div>
<div class="uk-padding-small uk-padding-remove-horizontal">
<button class="uk-button uk-button-link uk-flex uk-flex-middle"
(click)="removeProject(item)">
<icon name="remove" [flex]="true"></icon>
<span class="uk-margin-xsmall-left">Remove</span>
</button>
[disabled]="loading" [class.uk-disabled]="loading">
<icon name="add" [flex]="true"></icon>
<span class="uk-margin-small-left">Add</span>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="uk-margin-small-top">
<paging-no-load [currentPage]="page"
[totalResults]="communitySearchUtils.totalResults" [size]="resultsPerPage"
(pageChange)="updatePage($event)" customClasses="uk-flex-right@m uk-flex-center">
</paging-no-load>
</div>
</div>
<div inner>
<div class="uk-grid uk-flex-middle uk-margin-medium-top" uk-grid>
<div *ngIf="allFunderOptions.length > 0">
<dropdown-filter #dropdownFilter dropdownClass="uk-width-medium uk-padding-small"
name="Filter by Funder" [count]="filterForm.get('funder').value?1:null">
<h6 class="uk-margin-remove-bottom" title="Filter by Funder">Funder</h6>
<ul class="uk-list uk-margin-remove-bottom">
<li *ngFor="let option of previewFunderOptions">
<a class="uk-link-text">
<label (click)="select(option, $event, dropdownFilter)" class="uk-flex uk-flex-middle">
<input class="uk-checkbox"
type="checkbox" [checked]="isSelected(option.value.id)">
<span class="uk-margin-small-left">{{ option.label }}</span>
</label>
</a>
</li>
</ul>
</dropdown-filter>
</div>
</div>
</div>
<!-- in all content config : show subcommunities in preview mode-->
<div *ngIf="!this.communityService.selectedSubCommunity">
<div class="">
<results-and-pages [type]="openaireEntiites.PROJECTS | lowercase" [page]="1" [pageSize]="resultsPerPage"
[totalResults]="previewSubCommunityProjects.length"></results-and-pages>
</div>
<div class="uk-grid uk-grid-large uk-child-width-1-1 uk-child-width-1-2@m uk-margin-top uk-margin-bottom"
uk-height-match="target: .uk-card-body; row: false;" uk-grid>
<div *ngFor="let item of previewSubCommunityProjects; let i=index">
<div class="uk-card uk-card-default">
<div class="uk-card-body">
<h6 class="uk-margin-bottom">
<a *ngIf="(item.openaireId || (item.grantId && item.funder)) && (!item['availableSince'] || !lastDBLoadDate || item['availableSince']<lastDBLoadDate)"
target="_blank" class="custom-external uk-link-text"
[href]="projectUrl+'?' + ((item.openaireId) ? 'projectId='+item.openaireId : 'grantId='+item.grantId+'&funder='+item.funder)">
<span *ngIf="item.name">{{item.name}}</span>
<span *ngIf="item.name && item.acronym"> (</span><span *ngIf="item.acronym">{{item.acronym}}</span><span *ngIf="item.name && item.acronym">)</span>
<span *ngIf="!item.name && !item.acronym">[no title available]</span>
</a>
<span *ngIf="(!item.openaireId && !(item.grantId && item.funder) || (item['availableSince'] && lastDBLoadDate && item['availableSince'] >= lastDBLoadDate))">
<span *ngIf="item.name">{{item.name}}</span>
<span *ngIf="item.name && item.acronym"> (</span><span *ngIf="item.acronym">{{item.acronym}}</span><span *ngIf="item.name && item.acronym">)</span>
<div>
<div input inputClass="flat x-small" placeholder="Sort by"
[disabled]="previewCommunityProjects.length == 0"
[formInput]="filterForm.get('sort')"
type="select" [options]="sortOptions"
class="uk-width-small">
</div>
</div>
<!-- </div>-->
</div>
<div class="uk-section uk-section-small uk-position-relative" style="min-height: 60vh">
<div *ngIf="loading" class="uk-position-center">
<loading></loading>
</div>
<validate-page-enabled pageRoute="/search/find/projects"></validate-page-enabled>
<ng-container *ngIf="!this.communityService.selectedSubCommunity && previewSubCommunityProjects.length > 0">
<ul class="uk-subnav uk-subnav-pill uk-margin-top" uk-switcher>
<li class="uk-active"><a href="#">Set for community <span
*ngIf="this.communitySearchUtils.totalResults > 0"
>({{ communitySearchUtils.totalResults }})</span> </a></li>
<li><a href="#">Set for subcommunities <span *ngIf="previewSubCommunityProjects.length > 0"
>({{ previewSubCommunityProjects.length }})</span></a></li>
</ul>
</ng-container>
<div [class.uk-switcher]="!this.communityService.selectedSubCommunity && previewSubCommunityProjects.length > 0">
<div *ngIf="!loading">
<div class="uk-margin-medium-bottom">
<div *ngIf="previewCommunityProjects.length == 0"
class="uk-card uk-card-default uk-padding-large uk-text-center uk-margin-bottom uk-text-bold">
<div>No {{ openaireEntiites.PROJECTS | lowercase }}
<span *ngIf="communitySearchUtils.totalResults == 0; else: notFound">for {{ community.shortTitle }}</span>
<span
*ngIf="communityService.selectedSubCommunityId() && this.communityService.selectedSubCommunity">{{ ' | ' + this.communityService.selectedSubCommunity['category'] + '| ' + this.communityService.selectedSubCommunity?.label }}</span>
<ng-template #notFound>found</ng-template>
</div>
</div>
<ng-container *ngIf="communitySearchUtils.totalResults > 0">
<no-load-paging [type]="openaireEntities.PROJECTS | lowercase"
[page]="communitySearchUtils.page" [pageSize]="resultsPerPage"
(pageChange)="updatePage($event.value)"
[totalResults]="communitySearchUtils.totalResults">
<div class="uk-width-auto">
<a class="uk-link-reset">
<icon name="more_vert" [flex]="true" [ratio]="1.2"></icon>
</a>
<div class="uk-dropdown uk-padding-small" [class.uk-open]="selectedIndexes.length > 0" uk-dropdown="mode: click">
<div class="uk-flex uk-flex-middle">
<label>
<input id="checkAll" type="checkbox" (click)="selectAll()"
class="uk-checkbox"
title="Select all"
[ngModel]="selectedIndexes.length == previewCommunityProjects.length"/>
</label>
<button class="uk-button uk-button-link uk-text-nowrap uk-margin-xsmall-left"
[class.uk-disabled]="selectedIndexes.length == 0"
[disabled]="selectedIndexes.length == 0"
(click)="promtToRemoveProjects()">
Remove ({{ selectedIndexes.length }})
</button>
</div>
</div>
</div>
</no-load-paging>
</ng-container>
<div *ngIf="previewCommunityProjects.length > 0"
class="uk-grid uk-grid-large uk-child-width-1-1 uk-child-width-1-2@m uk-margin-bottom"
uk-grid uk-height-match="target: .uk-card-body">
<div *ngFor="let item of previewCommunityProjects; let i=index">
<div class="uk-card uk-card-default">
<div class="uk-card-body">
<h6 class="uk-margin-bottom">
<a *ngIf="(item.openaireId || (item.grantId && item.funder)) && (!item['availableSince'] || !lastDBLoadDate || item['availableSince']<lastDBLoadDate)"
target="_blank" class="custom-external uk-link-text"
[href]="projectUrl+'?' + ((item.openaireId) ? 'projectId='+item.openaireId : 'grantId='+item.grantId+'&funder='+item.funder)">
<span *ngIf="item.name">{{ item.name }}</span>
<span *ngIf="item.name && item.acronym"> (</span><span
*ngIf="item.acronym">{{ item.acronym }}</span><span
*ngIf="item.name && item.acronym">)</span>
<span *ngIf="!item.name && !item.acronym">[no title available]</span>
</a>
<span *ngIf="(!item.openaireId && !(item.grantId && item.funder) || (item['availableSince'] && lastDBLoadDate && item['availableSince'] >= lastDBLoadDate))">
<span *ngIf="item.name">{{ item.name }}</span>
<span *ngIf="item.name && item.acronym"> (</span><span
*ngIf="item.acronym">{{ item.acronym }}</span><span
*ngIf="item.name && item.acronym">)</span>
<span *ngIf="!item.name && !item.acronym">[no title available]</span>
</span>
</h6>
<a (click)="navigateToSub(item.communityId)"
class="uk-margin-small-right uk-margin-small-bottom uk-button uk-button-primary uk-button-small">
{{communityService.getCommunityLabel(item.communityId)}}</a>
<div class="uk-grid uk-child-width-1-2@l uk-text-small">
<div *ngIf="item.grantId">
<span class="uk-text-meta">Grant ID: </span>
<span>{{item.grantId}}</span>
</div>
<div *ngIf="item.funder">
<span class="uk-text-meta">Funder: </span>
<span>{{item.funder}}</span>
</div>
</h6>
<div class="uk-grid uk-child-width-1-2@l uk-text-small">
<div *ngIf="item.grantId">
<span class="uk-text-meta">Grant ID: </span>
<span>{{ item.grantId }}</span>
</div>
<div *ngIf="item.funder">
<span class="uk-text-meta">Funder: </span>
<span>{{ item.funder }}</span>
</div>
</div>
</div>
<div class="uk-card-footer uk-padding-remove-vertical">
<div class="uk-grid uk-grid-small uk-flex-nowrap uk-grid-divider uk-flex-right"
uk-grid>
<div class="uk-flex uk-flex-middle">
<input [id]="item.id" class="uk-checkbox" type="checkbox" title="Select"
value="{{selectedIndexes.indexOf(i) != -1}}"
[ngModel]="selectedIndexes.indexOf(i)!=-1"
(click)="toggleSelected(i)">
</div>
<div>
<div class="uk-padding-small uk-padding-remove-horizontal">
<button class="uk-button uk-button-link uk-flex uk-flex-middle"
(click)="removeProject(item)">
<icon name="remove" [flex]="true"></icon>
<span class="uk-margin-xsmall-left">Remove</span>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="uk-margin-small-top">
<paging-no-load [currentPage]="page"
[totalResults]="communitySearchUtils.totalResults" [size]="resultsPerPage"
(pageChange)="updatePage($event)"
customClasses="uk-flex-right@m uk-flex-center">
</paging-no-load>
</div>
</div>
</div>
<!-- in all content config : show subcommunities in preview mode-->
<div *ngIf="!this.communityService.selectedSubCommunity">
<div class="">
<results-and-pages [type]="openaireEntiites.PROJECTS | lowercase" [page]="1"
[pageSize]="resultsPerPage"
[totalResults]="previewSubCommunityProjects.length"></results-and-pages>
</div>
<div class="uk-grid uk-grid-large uk-child-width-1-1 uk-child-width-1-2@m uk-margin-top uk-margin-bottom"
uk-height-match="target: .uk-card-body; row: false;" uk-grid>
<div *ngFor="let item of previewSubCommunityProjects; let i=index">
<div class="uk-card uk-card-default">
<div class="uk-card-body">
<h6 class="uk-margin-bottom">
<a *ngIf="(item.openaireId || (item.grantId && item.funder)) && (!item['availableSince'] || !lastDBLoadDate || item['availableSince']<lastDBLoadDate)"
target="_blank" class="custom-external uk-link-text"
[href]="projectUrl+'?' + ((item.openaireId) ? 'projectId='+item.openaireId : 'grantId='+item.grantId+'&funder='+item.funder)">
<span *ngIf="item.name">{{ item.name }}</span>
<span *ngIf="item.name && item.acronym"> (</span><span
*ngIf="item.acronym">{{ item.acronym }}</span><span
*ngIf="item.name && item.acronym">)</span>
<span *ngIf="!item.name && !item.acronym">[no title available]</span>
</a>
<span *ngIf="(!item.openaireId && !(item.grantId && item.funder) || (item['availableSince'] && lastDBLoadDate && item['availableSince'] >= lastDBLoadDate))">
<span *ngIf="item.name">{{ item.name }}</span>
<span *ngIf="item.name && item.acronym"> (</span><span
*ngIf="item.acronym">{{ item.acronym }}</span><span
*ngIf="item.name && item.acronym">)</span>
<span *ngIf="!item.name && !item.acronym">[no title available]</span>
</span>
</h6>
<a (click)="navigateToSub(item.communityId)"
class="uk-margin-small-right uk-margin-small-bottom uk-button uk-button-primary uk-button-small">
{{ communityService.getCommunityLabel(item.communityId) }}</a>
<div class="uk-grid uk-child-width-1-2@l uk-text-small">
<div *ngIf="item.grantId">
<span class="uk-text-meta">Grant ID: </span>
<span>{{ item.grantId }}</span>
</div>
<div *ngIf="item.funder">
<span class="uk-text-meta">Funder: </span>
<span>{{ item.funder }}</span>
</div>
</div>
</div>
<!-- <div class="uk-card-body">-->
<!-- <h6 class="uk-margin-bottom">-->
<!-- <a *ngIf="item.openaireId"-->
<!-- target="_blank" class="custom-external uk-link-text"-->
<!-- [href]="contentProviderUrl+item.openaireId">-->
<!-- <span *ngIf="item.officialname">{{item.officialname}}</span>-->
<!-- <span *ngIf="!item.officialname && item.name">{{item.name}}</span>-->
<!-- <span *ngIf="!item.officialname && !item.name">[no title available]</span>-->
<!-- </a>-->
<!-- <span *ngIf="!item.openaireId">-->
<!-- <span *ngIf="item.officialname">{{item.officialname}}</span>-->
<!-- <span *ngIf="!item.officialname && item.name">{{item.name}}</span>-->
<!-- <span *ngIf="!item.officialname && !item.name">[no title available]</span>-->
<!-- </span>-->
<!-- </h6>-->
<!-- &lt;!&ndash; [routerLink]="'./'" [relativeTo]="this._router" [queryParams] = "{subCommunity: item.communityId}" [queryParamsHandling]="''"&ndash;&gt;-->
<!-- <a (click)="navigateToSub(item.communityId)"-->
<!-- class="uk-margin-small-right uk-margin-small-bottom uk-button uk-button-primary uk-button-small">-->
<!-- {{communityService.getCommunityLabel(item.communityId)}}</a>-->
<!-- <div *ngIf="item.enabled" class="uk-label uk-text-primary uk-margin-small-right uk-padding-xsmall ">-->
<!-- Content source-->
<!-- </div>-->
<!-- <div *ngIf="item.deposit" class="uk-label uk-label-success uk-padding-xsmall">Suggested for deposit-->
<!-- </div>-->
<!-- <div *ngIf="item.deposit && item.message" class=" uk-text-small uk-margin-top">-->
<!-- <div class="uk-text-muted uk-text-xsmall">Deposit info:</div>-->
<!-- <div [innerHTML]="item.message"></div>-->
<!-- </div>-->
<!-- -->
<!-- </div>-->
<!-- <div class="uk-card-footer uk-padding-remove-vertical">-->
<!-- <div class="uk-grid uk-grid-small uk-flex-nowrap uk-grid-divider uk-flex-right" uk-grid>-->
<!-- <div>-->
<!-- </div>-->
<!-- <div>-->
<!-- <div class="uk-padding-small uk-padding-remove-horizontal">-->
<!-- <a (click)="openCriteria(item)" class="uk-button uk-button-link uk-flex uk-flex-middle">-->
<!-- <icon name="edit" [flex]="true"></icon>-->
<!-- &lt;!&ndash;<span *ngIf="item.selectioncriteria?.criteria?.length > 0" class="uk-margin-small-left"-->
<!-- uk-tooltip="<div>Edit filters to limit research results.<br>Results which satisfy any of the selected filters will be included in your community.</div>">-->
<!-- Edit filters-->
<!-- </span>-->
<!-- <span *ngIf="!(item.selectioncriteria?.criteria?.length > 0)" class="uk-margin-small-left"-->
<!-- uk-tooltip="<div>Add filter to limit research results.<br>Results which satisfy any of the selected filters will be included in your community.</div>">-->
<!-- Add filters-->
<!-- </span>&ndash;&gt;-->
<!-- <span class="uk-margin-small-left"-->
<!-- uk-tooltip="<div>Select datasource as content source and/or suggest for deposit. Add filters to limit research results.<br>Results which satisfy any of the selected filters will be included in your community.</div>">-->
<!-- Edit Options-->
<!-- </span>-->
<!-- </a>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div>-->
<!-- <div class="uk-padding-small uk-padding-remove-horizontal">-->
<!-- <a (click)="removeContentProvider(item)"-->
<!-- class="uk-button uk-button-link uk-flex uk-flex-middle">-->
<!-- <icon name="remove" [flex]="true"></icon>-->
<!-- <span class="uk-margin-small-left">Remove</span>-->
<!-- </a>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
</div>
</div>
</div>
</div>
</div>
<!-- <div class="uk-card-body">-->
<!-- <h6 class="uk-margin-bottom">-->
<!-- <a *ngIf="item.openaireId"-->
<!-- target="_blank" class="custom-external uk-link-text"-->
<!-- [href]="contentProviderUrl+item.openaireId">-->
<!-- <span *ngIf="item.officialname">{{item.officialname}}</span>-->
<!-- <span *ngIf="!item.officialname && item.name">{{item.name}}</span>-->
<!-- <span *ngIf="!item.officialname && !item.name">[no title available]</span>-->
<!-- </a>-->
<!-- <span *ngIf="!item.openaireId">-->
<!-- <span *ngIf="item.officialname">{{item.officialname}}</span>-->
<!-- <span *ngIf="!item.officialname && item.name">{{item.name}}</span>-->
<!-- <span *ngIf="!item.officialname && !item.name">[no title available]</span>-->
<!-- </span>-->
<!-- </h6>-->
<!-- &lt;!&ndash; [routerLink]="'./'" [relativeTo]="this._router" [queryParams] = "{subCommunity: item.communityId}" [queryParamsHandling]="''"&ndash;&gt;-->
<!-- <a (click)="navigateToSub(item.communityId)"-->
<!-- class="uk-margin-small-right uk-margin-small-bottom uk-button uk-button-primary uk-button-small">-->
<!-- {{communityService.getCommunityLabel(item.communityId)}}</a>-->
<!-- <div *ngIf="item.enabled" class="uk-label uk-text-primary uk-margin-small-right uk-padding-xsmall ">-->
<!-- Content source-->
<!-- </div>-->
<!-- <div *ngIf="item.deposit" class="uk-label uk-label-success uk-padding-xsmall">Suggested for deposit-->
<!-- </div>-->
<!-- <div *ngIf="item.deposit && item.message" class=" uk-text-small uk-margin-top">-->
<!-- <div class="uk-text-muted uk-text-xsmall">Deposit info:</div>-->
<!-- <div [innerHTML]="item.message"></div>-->
<!-- </div>-->
<!-- -->
<!-- </div>-->
<!-- <div class="uk-card-footer uk-padding-remove-vertical">-->
<!-- <div class="uk-grid uk-grid-small uk-flex-nowrap uk-grid-divider uk-flex-right" uk-grid>-->
<!-- <div>-->
<!-- </div>-->
<!-- <div>-->
<!-- <div class="uk-padding-small uk-padding-remove-horizontal">-->
<!-- <a (click)="openCriteria(item)" class="uk-button uk-button-link uk-flex uk-flex-middle">-->
<!-- <icon name="edit" [flex]="true"></icon>-->
<!-- &lt;!&ndash;<span *ngIf="item.selectioncriteria?.criteria?.length > 0" class="uk-margin-small-left"-->
<!-- uk-tooltip="<div>Edit filters to limit research results.<br>Results which satisfy any of the selected filters will be included in your community.</div>">-->
<!-- Edit filters-->
<!-- </span>-->
<!-- <span *ngIf="!(item.selectioncriteria?.criteria?.length > 0)" class="uk-margin-small-left"-->
<!-- uk-tooltip="<div>Add filter to limit research results.<br>Results which satisfy any of the selected filters will be included in your community.</div>">-->
<!-- Add filters-->
<!-- </span>&ndash;&gt;-->
<!-- <span class="uk-margin-small-left"-->
<!-- uk-tooltip="<div>Select datasource as content source and/or suggest for deposit. Add filters to limit research results.<br>Results which satisfy any of the selected filters will be included in your community.</div>">-->
<!-- Edit Options-->
<!-- </span>-->
<!-- </a>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div>-->
<!-- <div class="uk-padding-small uk-padding-remove-horizontal">-->
<!-- <a (click)="removeContentProvider(item)"-->
<!-- class="uk-button uk-button-link uk-flex uk-flex-middle">-->
<!-- <icon name="remove" [flex]="true"></icon>-->
<!-- <span class="uk-margin-small-left">Remove</span>-->
<!-- </a>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
</div>
</div>
<modal-alert #AlertModalDeleteCommunity (alertOutput)="confirmedDeleteProject($event)"
[overflowBody]="false"></modal-alert>
</div>
</div>
</div>
<modal-alert #AlertModalDeleteCommunity (alertOutput)="confirmedDeleteProject($event)" [overflowBody]="false"></modal-alert>
</div>
</div>
</div>

View File

@ -357,4 +357,6 @@ export class RemoveProjectsComponent implements OnInit {
});
this.subCommunityChanged();
}
protected readonly openAIREEntities = OpenaireEntities;
}

View File

@ -1,392 +1,421 @@
<div page-content>
<div actions>
<div class="uk-section-xsmall uk-margin-top">
<div class="uk-flex uk-flex-right@m uk-flex-center uk-flex-middle uk-grid" uk-grid>
<div [disabled]="loading" search-input class="uk-width-1-3@xl uk-width-2-5@l uk-width-1-2@m uk-width-1-1"
[searchControl]="filterForm" [expandable]="true" placeholder="Search Subjects" searchInputClass="outer">
<div actions>
<div class="uk-section-xsmall uk-margin-top">
<div class="uk-flex uk-flex-middle uk-grid" uk-grid>
<div class="uk-width-1-2@m uk-width-1-1">
<select-sub-community (subCommunityChangedEmitter)="subCommunityChanged()"></select-sub-community>
</div>
<div class="uk-width-expand@m uk-width-1-1">
<div class="uk-grid uk-flex-middle uk-flex-right" uk-grid>
<div [disabled]="loading" search-input
class="uk-width-large@l uk-width-expand@m uk-width-1-1"
[searchControl]="filterForm" [expandable]="true" placeholder="Search Subjects"
searchInputClass="outer">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div inner>
<div class="uk-section-xsmall uk-margin-top" uk-grid>
<select-sub-community (subCommunityChangedEmitter)="subCommunityChanged()"></select-sub-community>
</div>
<div class="uk-section uk-section-small uk-position-relative" style="min-height: 60vh">
<div *ngIf="loading" class="uk-position-center">
<loading></loading>
</div>
<validate-page-enabled pageRoute="/subjects"></validate-page-enabled>
<div *ngIf="!loading">
<div >
<ul uk-tab class="uk-tab uk-margin-bottom uk-flex uk-flex-center uk-flex-left@m">
<li *ngIf="displayedAllSubjects?.length"
(click)="groupSubjects(displayedAllSubjects, 'all')">
<a>All ({{ displayedAllSubjects.length }})</a>
</li>
<li (click)="groupSubjects('subjects')">
<a>Free Text ({{ displayedSubjects.length }})</a>
</li>
<li (click)="groupSubjects('sdg')">
<a>SDGs ({{ displayedSdg.length }})</a>
</li>
<li (click)="groupSubjects('fos')">
<a>Fields of Science ({{ displayedFos.length }})</a>
</li>
<li *ngIf="previewSubCommunities?.length > 0">
<a>Set for subcommunities <span>({{ previewSubCommunities.length }})</span></a>
</li>
</ul>
<ul class="uk-switcher">
<li *ngIf="displayedAllSubjects?.length">
<div inner>
<div class="uk-section uk-section-small uk-position-relative" style="min-height: 60vh">
<div *ngIf="loading" class="uk-position-center">
<loading></loading>
</div>
<validate-page-enabled pageRoute="/subjects"></validate-page-enabled>
<div *ngIf="!loading">
<div>
<ul class="uk-nav uk-nav-default uk-flex uk-flex-wrap">
<li *ngFor="let item of groupedAllSubjects; let i = index;" class="uk-margin-right"
[class.uk-margin-left]="i != 0"
[class]="indexAll == i ? 'uk-active':''" (click)="changeDisplayedSubjects(i, item)">
<a class="uk-padding-remove">{{ item.group }}</a>
</li>
</ul>
</div>
<!-- View for 'All' -->
<div *ngIf="indexAll == 0 && groupedAllSubjects.length > 1"
class="uk-margin-large-top uk-grid uk-child-width-1-4@m" uk-grid>
<div *ngFor="let item of groupedAllSubjects.slice(1); let i = index;">
<div>
<h6>{{ item.group }}</h6>
<div *ngFor="let subItem of item.data.slice(0, subjectsLimit)" class="uk-margin-small-bottom">
<ul uk-tab class="uk-tab uk-margin-bottom uk-flex uk-flex-center uk-flex-left@m">
<li *ngIf="displayedAllSubjects?.length"
(click)="groupSubjects(displayedAllSubjects, 'all')">
<a>All ({{ displayedAllSubjects.length }})</a>
</li>
<li (click)="groupSubjects('subjects')">
<a>Free Text ({{ displayedSubjects.length }})</a>
</li>
<li (click)="groupSubjects('sdg')">
<a>SDGs ({{ displayedSdg.length }})</a>
</li>
<li (click)="groupSubjects('fos')">
<a>Fields of Science ({{ displayedFos.length }})</a>
</li>
<li *ngIf="previewSubCommunities?.length > 0">
<a>Set for subcommunities <span>({{ previewSubCommunities.length }})</span></a>
</li>
</ul>
<ul class="uk-switcher">
<li *ngIf="displayedAllSubjects?.length">
<div>
<ul class="uk-nav uk-nav-default uk-flex uk-flex-wrap">
<li *ngFor="let item of groupedAllSubjects; let i = index;" class="uk-margin-right"
[class.uk-margin-left]="i != 0"
[class]="indexAll == i ? 'uk-active':''"
(click)="changeDisplayedSubjects(i, item)">
<a class="uk-padding-remove">{{ item.group }}</a>
</li>
</ul>
</div>
<!-- View for 'All' -->
<div *ngIf="indexAll == 0 && groupedAllSubjects.length > 1"
class="uk-margin-large-top uk-grid uk-child-width-1-4@m" uk-grid>
<div *ngFor="let item of groupedAllSubjects.slice(1); let i = index;">
<div>
<h6>{{ item.group }}</h6>
<div *ngFor="let subItem of item.data.slice(0, subjectsLimit)"
class="uk-margin-small-bottom">
<span
[attr.uk-tooltip]="subItem.length > maxCharacters ? 'cls: uk-active' : 'cls: uk-invisible'"
[title]="subItem">
[attr.uk-tooltip]="subItem.length > maxCharacters ? 'cls: uk-active' : 'cls: uk-invisible'"
[title]="subItem">
{{ subItem.length > maxCharacters ? subItem.substring(0, maxCharacters) + '...' : subItem }}
</span>
</div>
<div *ngIf="item.data.length > subjectsLimit">
<a (click)="changeDisplayedSubjects(i+1, item)" class="view-more-less-link">
View all
</a>
</div>
</div>
</div>
</div>
<!-- View for a single group -->
<div *ngIf="indexAll != 0 || groupedAllSubjects.length == 1" class="uk-margin-large-top">
<div>
<div>
<h6>{{ groupedAllSubjects[indexAll].group }}</h6>
<ng-container *ngIf="subjectsColumns?.length == 0; else elseBlock">
<div *ngFor="let subItem of groupedAllSubjects[indexAll].data" class="uk-margin-small-bottom">
</div>
<div *ngIf="item.data.length > subjectsLimit">
<a (click)="changeDisplayedSubjects(i+1, item)" class="view-more-less-link">
View all
</a>
</div>
</div>
</div>
</div>
<!-- View for a single group -->
<div *ngIf="indexAll != 0 || groupedAllSubjects.length == 1" class="uk-margin-large-top">
<div>
<div>
<h6>{{ groupedAllSubjects[indexAll].group }}</h6>
<ng-container *ngIf="subjectsColumns?.length == 0; else elseBlock">
<div *ngFor="let subItem of groupedAllSubjects[indexAll].data"
class="uk-margin-small-bottom">
<span
[attr.uk-tooltip]="subItem.length > maxCharacters ? 'cls: uk-active' : 'cls: uk-invisible'"
[title]="subItem">
{{ subItem.length > maxCharacters ? subItem.substring(0, maxCharacters) + '...' : subItem }}
</span>
</div>
</ng-container>
<ng-template #elseBlock>
<div class="uk-grid uk-child-width-1-4@m" uk-grid>
<div *ngFor="let group of subjectsColumns">
<div *ngFor="let subItem of group" class="uk-margin-small-bottom">
<span
[attr.uk-tooltip]="subItem.length > maxCharacters ? 'cls: uk-active' : 'cls: uk-invisible'"
[title]="subItem">
{{ subItem.length > maxCharacters ? subItem.substring(0, maxCharacters) + '...' : subItem }}
</span>
</div>
</ng-container>
<ng-template #elseBlock>
<div class="uk-grid uk-child-width-1-4@m" uk-grid>
<div *ngFor="let group of subjectsColumns">
<div *ngFor="let subItem of group" class="uk-margin-small-bottom">
<span
[attr.uk-tooltip]="subItem.length > maxCharacters ? 'cls: uk-active' : 'cls: uk-invisible'"
[title]="subItem">
{{ subItem.length > maxCharacters ? subItem.substring(0, maxCharacters) + '...' : subItem }}
</span>
</div>
</div>
</div>
</ng-template>
</div>
</div>
</div>
</div>
</div>
</ng-template>
</div>
</div>
</div>
<ng-container *ngIf="displayedAllSubjects?.length === 0">
<div class="uk-position-relative uk-height-medium">
<h6 class="uk-position-center uk-margin-remove">There are no subjects yet</h6>
</div>
</ng-container>
</li>
<li>
<div class="uk-flex uk-flex-right uk-margin-small-bottom">
<button class="uk-button uk-button-default uk-flex uk-flex-middle uk-button-small"
[disabled]="loading" [class.uk-disabled]="loading"
(click)="edit('subjects')"
uk-tooltip="title:<div><div class='uk-margin-small-bottom uk-text-bold'>Add or edit subjects</div> All the research results associated to the subjects specified here will be automatically linked to the community dashboard in the next run of OpenAIRE workflows.</div>">
<span>Add/Edit Subjects</span>
</button>
</div>
<ng-container *ngIf="displayedSubjects?.length">
<div>
<ul class="uk-nav uk-nav-default uk-flex uk-flex-wrap">
<li *ngFor="let item of groupedSubjects; let i = index;" class="uk-margin-right"
[class.uk-margin-left]="i != 0"
[class]="indexSubjects == i ? 'uk-active':''" (click)="changeDisplayedSubjects(i, item)">
<a class="uk-padding-remove">{{ item.group }}</a>
</li>
</ul>
</div>
<!-- View for 'All' -->
<div *ngIf="indexSubjects == 0 && groupedSubjects.length > 1"
class="uk-margin-large-top uk-grid uk-child-width-1-4@m" uk-grid>
<div *ngFor="let item of groupedSubjects.slice(1); let i = index;">
<div>
<h6>{{ item.group }}</h6>
<div *ngFor="let subItem of item.data.slice(0, subjectsLimit)" class="uk-margin-small-bottom">
<ng-container *ngIf="displayedAllSubjects?.length === 0">
<div class="uk-position-relative uk-height-medium">
<h6 class="uk-position-center uk-margin-remove">There are no subjects yet</h6>
</div>
</ng-container>
</li>
<li>
<div class="uk-flex uk-flex-right uk-margin-small-bottom">
<button class="uk-button uk-button-default uk-flex uk-flex-middle uk-button-small"
[disabled]="loading" [class.uk-disabled]="loading"
(click)="edit('subjects')"
uk-tooltip="title:<div><div class='uk-margin-small-bottom uk-text-bold'>Add or edit subjects</div> All the research results associated to the subjects specified here will be automatically linked to the community dashboard in the next run of OpenAIRE workflows.</div>">
<span>Add/Edit</span>
</button>
</div>
<ng-container *ngIf="displayedSubjects?.length">
<div>
<ul class="uk-nav uk-nav-default uk-flex uk-flex-wrap">
<li *ngFor="let item of groupedSubjects; let i = index;" class="uk-margin-right"
[class.uk-margin-left]="i != 0"
[class]="indexSubjects == i ? 'uk-active':''"
(click)="changeDisplayedSubjects(i, item)">
<a class="uk-padding-remove">{{ item.group }}</a>
</li>
</ul>
</div>
<!-- View for 'All' -->
<div *ngIf="indexSubjects == 0 && groupedSubjects.length > 1"
class="uk-margin-large-top uk-grid uk-child-width-1-4@m" uk-grid>
<div *ngFor="let item of groupedSubjects.slice(1); let i = index;">
<div>
<h6>{{ item.group }}</h6>
<div *ngFor="let subItem of item.data.slice(0, subjectsLimit)"
class="uk-margin-small-bottom">
<span
[attr.uk-tooltip]="subItem.length > maxCharacters ? 'cls: uk-active' : 'cls: uk-invisible'"
[title]="subItem">
[attr.uk-tooltip]="subItem.length > maxCharacters ? 'cls: uk-active' : 'cls: uk-invisible'"
[title]="subItem">
{{ subItem.length > maxCharacters ? subItem.substring(0, maxCharacters) + '...' : subItem }}
</span>
</div>
<div *ngIf="item.data.length > subjectsLimit">
<a (click)="changeDisplayedSubjects(i+1, item)" class="view-more-less-link">
View all
</a>
</div>
</div>
</div>
</div>
<!-- View for a single group -->
<div *ngIf="indexSubjects != 0 || groupedSubjects.length == 1" class="uk-margin-large-top">
<div>
<div>
<h6>{{ groupedSubjects[indexSubjects]?.group }}</h6>
<ng-container *ngIf="subjectsColumns?.length == 0; else elseBlock">
<div *ngFor="let subItem of groupedSubjects[indexSubjects]?.data"
class="uk-margin-small-bottom">
</div>
<div *ngIf="item.data.length > subjectsLimit">
<a (click)="changeDisplayedSubjects(i+1, item)"
class="view-more-less-link">
View all
</a>
</div>
</div>
</div>
</div>
<!-- View for a single group -->
<div *ngIf="indexSubjects != 0 || groupedSubjects.length == 1"
class="uk-margin-large-top">
<div>
<div>
<h6>{{ groupedSubjects[indexSubjects]?.group }}</h6>
<ng-container *ngIf="subjectsColumns?.length == 0; else elseBlock">
<div *ngFor="let subItem of groupedSubjects[indexSubjects]?.data"
class="uk-margin-small-bottom">
<span
[attr.uk-tooltip]="subItem.length > maxCharacters ? 'cls: uk-active' : 'cls: uk-invisible'"
[title]="subItem">
{{ subItem.length > maxCharacters ? subItem.substring(0, maxCharacters) + '...' : subItem }}
</span>
</div>
</ng-container>
<ng-template #elseBlock>
<div class="uk-grid uk-child-width-1-4@m" uk-grid>
<div *ngFor="let group of subjectsColumns">
<div *ngFor="let subItem of group" class="uk-margin-small-bottom">
<span
[attr.uk-tooltip]="subItem.length > maxCharacters ? 'cls: uk-active' : 'cls: uk-invisible'"
[title]="subItem">
{{ subItem.length > maxCharacters ? subItem.substring(0, maxCharacters) + '...' : subItem }}
</span>
</div>
</ng-container>
<ng-template #elseBlock>
<div class="uk-grid uk-child-width-1-4@m" uk-grid>
<div *ngFor="let group of subjectsColumns">
<div *ngFor="let subItem of group"
class="uk-margin-small-bottom">
<span
[attr.uk-tooltip]="subItem.length > maxCharacters ? 'cls: uk-active' : 'cls: uk-invisible'"
[title]="subItem">
{{ subItem.length > maxCharacters ? subItem.substring(0, maxCharacters) + '...' : subItem }}
</span>
</div>
</div>
</div>
</ng-template>
</div>
</div>
</div>
</ng-container>
<ng-container *ngIf="displayedSubjects?.length === 0">
<div class="uk-position-relative uk-height-medium">
<h6 class="uk-position-center uk-margin-remove">There are no subjects yet</h6>
</div>
</ng-container>
</li>
<li>
<div class="uk-flex uk-flex-right uk-margin-small-bottom">
<button class="uk-button uk-button-default uk-flex uk-flex-middle uk-button-small"
[disabled]="loading" [class.uk-disabled]="loading"
(click)="edit('sdg')"
uk-tooltip="title:<div><div class='uk-margin-small-bottom uk-text-bold'>Add or edit subjects</div> All the research results associated to the subjects specified here will be automatically linked to the community dashboard in the next run of OpenAIRE workflows.</div>">
<span>Add/Edit</span>
</button>
</div>
</div>
</div>
</ng-template>
</div>
</div>
</div>
</ng-container>
<ng-container *ngIf="displayedSubjects?.length === 0">
<div class="uk-position-relative uk-height-medium">
<h6 class="uk-position-center uk-margin-remove">There are no subjects yet</h6>
</div>
</ng-container>
</li>
<li>
<div class="uk-flex uk-flex-right uk-margin-small-bottom">
<button class="uk-button uk-button-default uk-flex uk-flex-middle uk-button-small"
[disabled]="loading" [class.uk-disabled]="loading"
(click)="edit('sdg')"
uk-tooltip="title:<div><div class='uk-margin-small-bottom uk-text-bold'>Add or edit subjects</div> All the research results associated to the subjects specified here will be automatically linked to the community dashboard in the next run of OpenAIRE workflows.</div>">
<span>Add/Edit Subjects</span>
</button>
</div>
<ng-container *ngIf="displayedSdg?.length">
<div>
<ul class="uk-nav uk-nav-default uk-flex uk-flex-wrap">
<li *ngFor="let item of groupedSdg; let i = index;" class="uk-margin-right"
[class.uk-margin-left]="i != 0"
[class]="indexSdg == i ? 'uk-active':''" (click)="changeDisplayedSubjects(i, item)">
<a class="uk-padding-remove">{{ item.group }}</a>
</li>
</ul>
</div>
<!-- View for 'sdg' -->
<div *ngIf="indexSdg == 0 && groupedSdg.length > 1"
class="uk-margin-large-top uk-grid uk-child-width-1-4@m" uk-grid>
<div *ngFor="let item of groupedSdg.slice(1); let i = index;">
<div>
<h6>{{ item.group }}</h6>
<div *ngFor="let subItem of item.data.slice(0, subjectsLimit)" class="uk-margin-small-bottom">
<ng-container *ngIf="displayedSdg?.length">
<div>
<ul class="uk-nav uk-nav-default uk-flex uk-flex-wrap">
<li *ngFor="let item of groupedSdg; let i = index;" class="uk-margin-right"
[class.uk-margin-left]="i != 0"
[class]="indexSdg == i ? 'uk-active':''"
(click)="changeDisplayedSubjects(i, item)">
<a class="uk-padding-remove">{{ item.group }}</a>
</li>
</ul>
</div>
<!-- View for 'sdg' -->
<div *ngIf="indexSdg == 0 && groupedSdg.length > 1"
class="uk-margin-large-top uk-grid uk-child-width-1-4@m" uk-grid>
<div *ngFor="let item of groupedSdg.slice(1); let i = index;">
<div>
<h6>{{ item.group }}</h6>
<div *ngFor="let subItem of item.data.slice(0, subjectsLimit)"
class="uk-margin-small-bottom">
<span
[attr.uk-tooltip]="subItem.length > maxCharacters ? 'cls: uk-active' : 'cls: uk-invisible'"
[title]="subItem">
[attr.uk-tooltip]="subItem.length > maxCharacters ? 'cls: uk-active' : 'cls: uk-invisible'"
[title]="subItem">
{{ subItem.length > maxCharacters ? subItem.substring(0, maxCharacters) + '...' : subItem }}
</span>
</div>
<div *ngIf="item.data.length > subjectsLimit">
<a (click)="changeDisplayedSubjects(i+1, item)" class="view-more-less-link">
View all
</a>
</div>
</div>
</div>
</div>
<!-- View for a single group -->
<div *ngIf="indexSdg != 0 || groupedSdg.length == 1" class="uk-margin-large-top">
<div>
<div>
<h6>{{ groupedSdg[indexSdg].group }}</h6>
<ng-container *ngIf="subjectsColumns?.length == 0; else elseBlock">
<div *ngFor="let subItem of groupedSdg[indexSdg].data" class="uk-margin-small-bottom">
</div>
<div *ngIf="item.data.length > subjectsLimit">
<a (click)="changeDisplayedSubjects(i+1, item)"
class="view-more-less-link">
View all
</a>
</div>
</div>
</div>
</div>
<!-- View for a single group -->
<div *ngIf="indexSdg != 0 || groupedSdg.length == 1" class="uk-margin-large-top">
<div>
<div>
<h6>{{ groupedSdg[indexSdg].group }}</h6>
<ng-container *ngIf="subjectsColumns?.length == 0; else elseBlock">
<div *ngFor="let subItem of groupedSdg[indexSdg].data"
class="uk-margin-small-bottom">
<span
[attr.uk-tooltip]="subItem.length > maxCharacters ? 'cls: uk-active' : 'cls: uk-invisible'"
[title]="subItem">
{{ subItem.length > maxCharacters ? subItem.substring(0, maxCharacters) + '...' : subItem }}
</span>
</div>
</ng-container>
<ng-template #elseBlock>
<div class="uk-grid uk-child-width-1-4@m" uk-grid>
<div *ngFor="let group of subjectsColumns">
<div *ngFor="let subItem of group" class="uk-margin-small-bottom">
<span
[attr.uk-tooltip]="subItem.length > maxCharacters ? 'cls: uk-active' : 'cls: uk-invisible'"
[title]="subItem">
{{ subItem.length > maxCharacters ? subItem.substring(0, maxCharacters) + '...' : subItem }}
</span>
</div>
</ng-container>
<ng-template #elseBlock>
<div class="uk-grid uk-child-width-1-4@m" uk-grid>
<div *ngFor="let group of subjectsColumns">
<div *ngFor="let subItem of group"
class="uk-margin-small-bottom">
<span
[attr.uk-tooltip]="subItem.length > maxCharacters ? 'cls: uk-active' : 'cls: uk-invisible'"
[title]="subItem">
{{ subItem.length > maxCharacters ? subItem.substring(0, maxCharacters) + '...' : subItem }}
</span>
</div>
</div>
</div>
</ng-template>
</div>
</div>
</div>
</ng-container>
</div>
</div>
</div>
</ng-template>
</div>
</div>
</div>
</ng-container>
<ng-container *ngIf="displayedSdg?.length === 0">
<div class="uk-position-relative uk-height-medium">
<h6 class="uk-position-center uk-margin-remove">There are no subjects yet</h6>
</div>
</ng-container>
</li>
<li>
<div class="uk-flex uk-flex-right uk-margin-small-bottom">
<button class="uk-button uk-button-default uk-flex uk-flex-middle uk-button-small"
[disabled]="loading" [class.uk-disabled]="loading"
(click)="edit('fos')"
uk-tooltip="title:<div><div class='uk-margin-small-bottom uk-text-bold'>Add or edit subjects</div> All the research results associated to the subjects specified here will be automatically linked to the community dashboard in the next run of OpenAIRE workflows.</div>">
<span>Add/Edit Subjects</span>
</button>
</div>
<ng-container *ngIf="displayedFos?.length">
<div>
<ul class="uk-nav uk-nav-default uk-flex uk-flex-wrap">
<li *ngFor="let item of groupedFos; let i = index;" class="uk-margin-right"
[class.uk-margin-left]="i != 0"
[class]="indexFos == i ? 'uk-active':''" (click)="changeDisplayedSubjects(i, item)">
<a class="uk-padding-remove">{{ item.group }}</a>
</li>
</ul>
</div>
<!-- View for 'Fos' -->
<div *ngIf="indexFos == 0 && groupedFos.length > 1"
class="uk-margin-large-top uk-grid uk-child-width-1-4@m" uk-grid>
<div *ngFor="let item of groupedFos.slice(1); let i = index;">
<div>
<h6>{{ item.group }}</h6>
<div *ngFor="let subItem of item.data.slice(0, subjectsLimit)" class="uk-margin-small-bottom">
<ng-container *ngIf="displayedSdg?.length === 0">
<div class="uk-position-relative uk-height-medium">
<h6 class="uk-position-center uk-margin-remove">There are no subjects yet</h6>
</div>
</ng-container>
</li>
<li>
<div class="uk-flex uk-flex-right uk-margin-small-bottom">
<button class="uk-button uk-button-default uk-flex uk-flex-middle uk-button-small"
[disabled]="loading" [class.uk-disabled]="loading"
(click)="edit('fos')"
uk-tooltip="title:<div><div class='uk-margin-small-bottom uk-text-bold'>Add or edit subjects</div> All the research results associated to the subjects specified here will be automatically linked to the community dashboard in the next run of OpenAIRE workflows.</div>">
<span>Add/Edit</span>
</button>
</div>
<ng-container *ngIf="displayedFos?.length">
<div>
<ul class="uk-nav uk-nav-default uk-flex uk-flex-wrap">
<li *ngFor="let item of groupedFos; let i = index;" class="uk-margin-right"
[class.uk-margin-left]="i != 0"
[class]="indexFos == i ? 'uk-active':''"
(click)="changeDisplayedSubjects(i, item)">
<a class="uk-padding-remove">{{ item.group }}</a>
</li>
</ul>
</div>
<!-- View for 'Fos' -->
<div *ngIf="indexFos == 0 && groupedFos.length > 1"
class="uk-margin-large-top uk-grid uk-child-width-1-4@m" uk-grid>
<div *ngFor="let item of groupedFos.slice(1); let i = index;">
<div>
<h6>{{ item.group }}</h6>
<div *ngFor="let subItem of item.data.slice(0, subjectsLimit)"
class="uk-margin-small-bottom">
<span
[attr.uk-tooltip]="subItem.length > maxCharacters ? 'cls: uk-active' : 'cls: uk-invisible'"
[title]="subItem">
[attr.uk-tooltip]="subItem.length > maxCharacters ? 'cls: uk-active' : 'cls: uk-invisible'"
[title]="subItem">
{{ subItem.length > maxCharacters ? subItem.substring(0, maxCharacters) + '...' : subItem }}
</span>
</div>
<div *ngIf="item.data.length > subjectsLimit">
<a (click)="changeDisplayedSubjects(i+1, item)" class="view-more-less-link">
View all
</a>
</div>
</div>
</div>
</div>
<!-- View for a single group -->
<div *ngIf="indexFos != 0 || groupedFos.length == 1" class="uk-margin-large-top">
<div>
<div>
<h6>{{ groupedFos[indexFos].group }}</h6>
<ng-container *ngIf="subjectsColumns?.length == 0; else elseBlock">
<div *ngFor="let subItem of groupedFos[indexFos].data" class="uk-margin-small-bottom">
</div>
<div *ngIf="item.data.length > subjectsLimit">
<a (click)="changeDisplayedSubjects(i+1, item)"
class="view-more-less-link">
View all
</a>
</div>
</div>
</div>
</div>
<!-- View for a single group -->
<div *ngIf="indexFos != 0 || groupedFos.length == 1" class="uk-margin-large-top">
<div>
<div>
<h6>{{ groupedFos[indexFos].group }}</h6>
<ng-container *ngIf="subjectsColumns?.length == 0; else elseBlock">
<div *ngFor="let subItem of groupedFos[indexFos].data"
class="uk-margin-small-bottom">
<span
[attr.uk-tooltip]="subItem.length > maxCharacters ? 'cls: uk-active' : 'cls: uk-invisible'"
[title]="subItem">
{{ subItem.length > maxCharacters ? subItem.substring(0, maxCharacters) + '...' : subItem }}
</span>
</div>
</ng-container>
<ng-template #elseBlock>
<div class="uk-grid uk-child-width-1-4@m" uk-grid>
<div *ngFor="let group of subjectsColumns">
<div *ngFor="let subItem of group" class="uk-margin-small-bottom">
<span
[attr.uk-tooltip]="subItem.length > maxCharacters ? 'cls: uk-active' : 'cls: uk-invisible'"
[title]="subItem">
{{ subItem.length > maxCharacters ? subItem.substring(0, maxCharacters) + '...' : subItem }}
</span>
</div>
</ng-container>
<ng-template #elseBlock>
<div class="uk-grid uk-child-width-1-4@m" uk-grid>
<div *ngFor="let group of subjectsColumns">
<div *ngFor="let subItem of group"
class="uk-margin-small-bottom">
<span
[attr.uk-tooltip]="subItem.length > maxCharacters ? 'cls: uk-active' : 'cls: uk-invisible'"
[title]="subItem">
{{ subItem.length > maxCharacters ? subItem.substring(0, maxCharacters) + '...' : subItem }}
</span>
</div>
</div>
</div>
</ng-template>
</div>
</div>
</div>
</ng-container>
<ng-container *ngIf="displayedFos?.length === 0">
<div class="uk-position-relative uk-height-medium">
<h6 class="uk-position-center uk-margin-remove">There are no subjects yet</h6>
</div>
</ng-container>
</li>
<li *ngIf="previewSubCommunities?.length > 0"
class=" uk-padding-small uk-grid uk-grid-large uk-child-width-1-1 uk-margin-top uk-margin-bottom"
uk-height-match="target: .uk-card-body; row: false;" uk-grid>
<div *ngFor="let subcommunity of previewSubCommunities" class="uk-padding-xsmall">
<div class="uk-card uk-card-default">
<div class="uk-card-body">
<a (click)="navigateToSub(subcommunity.subCommunityId)"
class="uk-margin-small-right uk-margin-small-bottom uk-button uk-button-primary uk-button-small">
{{ _communityService.getCommunityLabel(subcommunity.subCommunityId) }}</a>
<div>
<div *ngIf="subcommunity.subjects?.length > 0"><span
class="uk-text-bold">Free text ({{ subcommunity.subjects.length }}
): </span>
<span *ngFor="let subject of subcommunity.subjects.slice(0,7); let isLast=last; let i=index">{{ subject }}
<span>{{ isLast ? (i == subcommunity.subjects.length - 1 ? '' : '...') : ',' }} </span></span>
</div>
<div *ngIf="subcommunity.sdg?.length > 0"><span
class="uk-text-bold">SDGs ({{ subcommunity.sdg.length }}): </span>
<span *ngFor="let subject of subcommunity.sdg.slice(0,7); let isLast=last; let i=index">{{ subject }}
<span>{{ isLast ? (i == subcommunity.sdg.length - 1 ? '' : '...') : ',' }} </span></span>
</div>
<div *ngIf="subcommunity.fos?.length > 0"><span
class="uk-text-bold">Fields of Science ({{ subcommunity.fos.length }}
): </span>
<span *ngFor="let subject of subcommunity.fos.slice(0,7); let isLast=last ; let i=index">{{ subject }}
<span>{{ isLast ? (i == subcommunity.fos.length - 1 ? '' : '...') : ',' }} </span></span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</ng-template>
</div>
</div>
</li>
</ul>
</div>
</ng-container>
<ng-container *ngIf="displayedFos?.length === 0">
<div class="uk-position-relative uk-height-medium">
<h6 class="uk-position-center uk-margin-remove">There are no subjects yet</h6>
</div>
</ng-container>
</li>
<li *ngIf="previewSubCommunities?.length > 0"
class=" uk-padding-small uk-grid uk-grid-large uk-child-width-1-1 uk-margin-top uk-margin-bottom"
uk-height-match="target: .uk-card-body; row: false;" uk-grid>
<div *ngFor="let subcommunity of previewSubCommunities" class="uk-padding-xsmall">
<div class="uk-card uk-card-default">
<div class="uk-card-body">
<a (click)="navigateToSub(subcommunity.subCommunityId)"
class="uk-margin-small-right uk-margin-small-bottom uk-button uk-button-primary uk-button-small">
{{ _communityService.getCommunityLabel(subcommunity.subCommunityId) }}</a>
<div>
<div *ngIf="subcommunity.subjects?.length > 0"><span
class="uk-text-bold">Free text ({{ subcommunity.subjects.length }}): </span>
<span *ngFor="let subject of subcommunity.subjects.slice(0,7); let isLast=last; let i=index">{{ subject }}
<span>{{ isLast ? (i == subcommunity.subjects.length -1?'':'...') : ',' }} </span></span></div>
<div *ngIf="subcommunity.sdg?.length > 0"><span
class="uk-text-bold">SDGs ({{ subcommunity.sdg.length }}): </span>
<span *ngFor="let subject of subcommunity.sdg.slice(0,7); let isLast=last; let i=index">{{ subject }}
<span>{{ isLast ? (i == subcommunity.sdg.length -1?'':'...') : ',' }} </span></span></div>
<div *ngIf="subcommunity.fos?.length > 0"><span
class="uk-text-bold">Fields of Science ({{ subcommunity.fos.length }}): </span>
<span *ngFor="let subject of subcommunity.fos.slice(0,7); let isLast=last ; let i=index">{{ subject }}
<span>{{ isLast ? (i == subcommunity.fos.length -1?'':'...') : ',' }} </span></span></div>
</div>
</div>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<fs-modal #fsModal classBody="uk-container-large" (okEmitter)="saveSubjects()"
[okButtonDisabled]="!hasChanges && !sdgSelection.hasChanges && !fosSelection.hasChanges">
<div>
<div *ngIf="subjectsForm && editingType == 'subjects'">
<div #addSubjectsInput input [type]="'chips'" [formInput]="subjectsForm" [inputClass]="'flat small'"
[extendEnter]="onEnter"
[separators]="[',', 'enter']" [visibleChips]="3" class="uk-width-1-1 uk-width-xlarge@m"
[placeholder]="{static: true, label: 'Type subjects as free text keywords'}">
<div tools class="uk-flex uk-flex-right">
<button (click)="addSubjectsIntoList()"
class="uk-button uk-button-link uk-margin-xsmall-left uk-margin-right">add
</button>
</div>
<div note class="uk-text-xsmall">Separate subjects with commas</div>
</div>
<div class="uk-margin-large-top">
<div>
<div *ngIf="subjectsForm && editingType == 'subjects'">
<div #addSubjectsInput input [type]="'chips'" [formInput]="subjectsForm" [inputClass]="'flat small'"
[extendEnter]="onEnter"
[separators]="[',', 'enter']" [visibleChips]="3" class="uk-width-1-1 uk-width-xlarge@m"
[placeholder]="{static: true, label: 'Type subjects as free text keywords'}">
<div tools class="uk-flex uk-flex-right">
<button (click)="addSubjectsIntoList()"
class="uk-button uk-button-link uk-margin-xsmall-left uk-margin-right">add
</button>
</div>
<div note class="uk-text-xsmall">Separate subjects with commas</div>
</div>
<div class="uk-margin-large-top">
<span *ngFor="let subject of displayedSubjects; let i = index;"
class="uk-label uk-label-primary uk-flex-inline uk-flex-middle uk-margin-right uk-margin-bottom">
<span class="uk-margin-small-right uk-text-truncate">{{ subject }}</span>
@ -394,19 +423,19 @@
<icon name="close" flex="true" ratio="0.7"></icon>
</button>
</span>
</div>
</div>
<div [style]=" editingType != 'sdg'?'display:none':''">
<sdg-selection #sdgSelection [subjects]="displayedSdg" [isFeedback]="false"></sdg-selection>
</div>
<div [style]=" editingType != 'fos'?'display:none':''">
<div class="uk-margin-large-top">
</div>
</div>
<div [style]=" editingType != 'sdg'?'display:none':''">
<sdg-selection #sdgSelection [subjects]="displayedSdg" [isFeedback]="false"></sdg-selection>
</div>
<div [style]=" editingType != 'fos'?'display:none':''">
<div class="uk-margin-large-top">
<span *ngFor="let subject of displayedFos; let i = index;"
class="uk-label uk-label-primary uk-flex-inline uk-flex-middle uk-margin-right uk-margin-bottom">
<span class="uk-margin-small-right uk-text-truncate">{{ subject }}</span>
</span>
</div>
<fos-selection #fosSelection [subjects]="displayedFos" [inModal]="true"></fos-selection>
</div>
<fos-selection #fosSelection [subjects]="displayedFos" [inModal]="true"></fos-selection>
</div>
</div>
</div>
</fs-modal>

View File

@ -19,6 +19,7 @@ import {ClearCacheService} from "../../../openaireLibrary/services/clear-cache.s
import {SdgSelectionComponent} from '../../../openaireLibrary/sdg/sdg-selection/sdg-selection.component';
import {FosSelectionComponent} from '../../../openaireLibrary/fos/fos-selection/fos-selection.component';
import {InputComponent} from "../../../openaireLibrary/sharedComponents/input/input.component";
import {OpenaireEntities} from "../../../openaireLibrary/utils/properties/searchFields";
declare var UIkit: any;
@ -435,4 +436,6 @@ export class SubjectsEditFormComponent implements OnInit {
});
this.subCommunityChanged();
}
protected readonly openAIREEntities = OpenaireEntities;
}

View File

@ -1,9 +1,15 @@
<div class="uk-flex uk-flex-center">
<select-sub-community [readonly]="true"></select-sub-community>
</div>
<div class="uk-section uk-flex uk-flex-center uk-flex uk-flex-middle">
<div search-input class="uk-width-xlarge@l uk-width-large" [searchControl]="filterForm" searchInputClass="outer"
placeholder="Search Zenodo Communities" [disabled]="zenodoCommunitySearchUtils.status == errorCodes.LOADING"></div>
<div class="uk-section-xsmall uk-margin-top">
<div class="uk-flex uk-flex-middle uk-grid" uk-grid>
<div class="uk-width-1-2@m uk-width-1-1">
<select-sub-community [readonly]="true"></select-sub-community>
</div>
<div class="uk-width-expand@m uk-width-1-1">
<div class="uk-grid uk-flex-middle uk-flex-right@l uk-flex-center" uk-grid>
<div search-input class="uk-width-xlarge@l uk-width-large" [searchControl]="filterForm" searchInputClass="outer"
placeholder="Search Zenodo Communities" [disabled]="zenodoCommunitySearchUtils.status == errorCodes.LOADING"></div>
</div>
</div>
</div>
</div>
<div class="uk-section uk-section-small uk-position-relative">
<div *ngIf="zenodoCommunitySearchUtils.status == errorCodes.LOADING" class="uk-position-center">

View File

@ -13,6 +13,7 @@ import {CommunityInfo} from "../../openaireLibrary/connect/community/communityIn
import {HelperFunctions} from "../../openaireLibrary/utils/HelperFunctions.class";
import {CommunityService} from "../../openaireLibrary/connect/community/community.service";
import {NotificationHandler} from "../../openaireLibrary/utils/notification-handler";
import {OpenaireEntities} from "../../openaireLibrary/utils/properties/searchFields";
declare var UIkit;
@ -229,4 +230,6 @@ export class AddZenodoCommunitiesComponent implements OnInit {
pos: 'bottom-right'
});
}
protected readonly openaireEntities = OpenaireEntities;
}

View File

@ -1,143 +1,151 @@
<div page-content *ngIf="community && searchUtils">
<div inner>
<div actions>
<div class="uk-section-xsmall uk-margin-top">
<div class="uk-section-xsmall uk-margin-top" uk-grid>
<select-sub-community (subCommunityChangedEmitter)="subCommunityChanged()"></select-sub-community>
</div>
<div class="uk-flex uk-flex-right@m uk-flex-center uk-flex-middle uk-grid" uk-grid>
<div search-input [expandable]="true" [searchControl]="filterForm" searchInputClass="outer"
placeholder="Search Zenodo Community" [disabled]="searchUtils.status === errorCodes.LOADING"
class="uk-width-1-3@xl uk-width-2-5@l uk-width-1-2@m uk-width-1-1"></div>
<div>
<button class="uk-button uk-button-default uk-flex uk-flex-middle" (click)="openAddZenodoCommunites()"
uk-tooltip="title:<div class='uk-text-bold'> Search and add more Zenodo Communities</div><div>The research results of a Zenodo community specified here will be automatically linked to your community dashboard.</div>"
[disabled]="searchUtils.status === errorCodes.LOADING"
[class.uk-disabled]="searchUtils.status === errorCodes.LOADING">
<icon name="add" [flex]="true"></icon>
<span class="uk-margin-small-left uk-text-bold uk-text-uppercase">New Zenodo Community</span>
</button>
</div>
</div>
</div>
</div>
<div class="uk-section uk-section-small uk-position-relative" style="min-height: 60vh">
<validate-page-enabled pageRoute="/participate/deposit/zenodo"></validate-page-enabled>
<div *ngIf="searchUtils.status == errorCodes.LOADING" class="uk-position-center">
<loading></loading>
</div>
<div *ngIf="searchUtils.status !== errorCodes.LOADING">
<ng-container
*ngIf="!this._communityService.selectedSubCommunity && previewZCommunitiesForSubCommunities.length > 0">
<ul class="uk-subnav uk-subnav-pill" uk-margin uk-switcher>
<li class="uk-active"><a href="#">Set for community <span *ngIf="previewCommunities.length > 0"
>({{ previewCommunities.length }})</span> </a></li>
<li><a href="#">Set for subcommunities <span *ngIf="previewZCommunitiesForSubCommunities.length > 0"
>({{ previewZCommunitiesForSubCommunities.length }})</span></a></li>
</ul>
</ng-container>
<div
[class.uk-switcher]="!this._communityService.selectedSubCommunity && previewZCommunitiesForSubCommunities.length > 0">
<div>
<div *ngIf="previewCommunities.length == 0"
class="uk-card uk-card-default uk-padding-large uk-text-center uk-margin-bottom uk-text-bold">
<div>No zenodo communities
<span *ngIf="selectedCommunities.length == 0; else: notFound">for {{ community.shortTitle }}</span>
<span
*ngIf="_communityService.selectedSubCommunityId() && this._communityService.selectedSubCommunity">{{' | ' + this._communityService.selectedSubCommunity['category'] + '| ' + this._communityService.selectedSubCommunity?.label}}</span>
<ng-template #notFound>found</ng-template>
</div>
</div>
<div *ngIf="previewCommunities.length > 0">
<no-load-paging [type]="'Zenodo communities'"
(pageChange)="updatePage($event)"
[page]="page" [pageSize]="size"
[totalResults]="previewCommunities.length">
</no-load-paging>
<!-- <ul class="uk-margin-medium-top uk-margin-bottom uk-list uk-list-xlarge">-->
<div class="uk-grid uk-grid-large uk-child-width-1-1 uk-margin-medium-top uk-margin-bottom" uk-grid>
<div
*ngFor="let item of previewCommunities.slice((this.page - 1)*this.size, this.page*this.size); let i=index">
<div class="uk-card uk-card-default">
<div class="uk-card-body">
<preview-zenodo-community [item]="item"
[master]="masterCommunity && item.id==masterCommunity.id"></preview-zenodo-community>
</div>
<div class="uk-card-footer uk-padding-remove-vertical">
<div class="uk-grid uk-grid-small uk-flex-nowrap uk-grid-divider uk-flex-right" uk-grid>
<div *ngIf="item.id!==masterZenodoCommunityId">
<div class="uk-padding-small uk-padding-remove-horizontal">
<button class="uk-button uk-button-link uk-flex uk-flex-middle"
(click)="removeCommunity(item)">
<icon name="remove" [flex]="true"></icon>
<span class="uk-margin-xsmall-left">Remove</span>
<div class="uk-section-xsmall uk-margin-top">
<div class="uk-flex uk-flex-middle uk-grid" uk-grid>
<div class="uk-width-1-2@m uk-width-1-1">
<select-sub-community (subCommunityChangedEmitter)="subCommunityChanged()"></select-sub-community>
</div>
<div class="uk-width-expand@m uk-width-1-1">
<div class="uk-grid uk-flex-middle uk-flex-right" uk-grid>
<div search-input [expandable]="true" [searchControl]="filterForm" searchInputClass="outer"
placeholder="Search Zenodo Community"
[disabled]="searchUtils.status === errorCodes.LOADING"
class="uk-width-large@l uk-width-expand@m uk-width-1-1"></div>
<div>
<button class="uk-button uk-button-default uk-flex uk-flex-middle"
(click)="openAddZenodoCommunites()"
uk-tooltip="title:<div class='uk-text-bold'> Search and add more Zenodo Communities</div><div>The research results of a Zenodo community specified here will be automatically linked to your community dashboard.</div>"
[disabled]="searchUtils.status === errorCodes.LOADING"
[class.uk-disabled]="searchUtils.status === errorCodes.LOADING">
<icon name="add" [flex]="true"></icon>
<span class="uk-margin-small-left uk-text-bold uk-text-uppercase">Add</span>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div inner>
<div class="uk-section uk-section-small uk-position-relative" style="min-height: 60vh">
<validate-page-enabled pageRoute="/participate/deposit/zenodo"></validate-page-enabled>
<div *ngIf="searchUtils.status == errorCodes.LOADING" class="uk-position-center">
<loading></loading>
</div>
<div *ngIf="searchUtils.status !== errorCodes.LOADING">
<ng-container
*ngIf="!this._communityService.selectedSubCommunity && previewZCommunitiesForSubCommunities.length > 0">
<ul class="uk-subnav uk-subnav-pill uk-margin-top" uk-switcher>
<li class="uk-active"><a href="#">Set for community <span *ngIf="previewCommunities.length > 0"
>({{ previewCommunities.length }})</span> </a></li>
<li><a href="#">Set for subcommunities <span
*ngIf="previewZCommunitiesForSubCommunities.length > 0"
>({{ previewZCommunitiesForSubCommunities.length }})</span></a></li>
</ul>
</ng-container>
<div [class.uk-switcher]="!this._communityService.selectedSubCommunity && previewZCommunitiesForSubCommunities.length > 0">
<div>
<div *ngIf="previewCommunities.length == 0"
class="uk-card uk-card-default uk-padding-large uk-text-center uk-margin-bottom uk-text-bold">
<div>No zenodo communities
<span *ngIf="selectedCommunities.length == 0; else: notFound">for {{ community.shortTitle }}</span>
<span
*ngIf="_communityService.selectedSubCommunityId() && this._communityService.selectedSubCommunity">{{ ' | ' + this._communityService.selectedSubCommunity['category'] + '| ' + this._communityService.selectedSubCommunity?.label }}</span>
<ng-template #notFound>found</ng-template>
</div>
</div>
<div *ngIf="(item.id==masterZenodoCommunityId)">
<div class="uk-padding-small uk-padding-remove-horizontal">
<a (click)="removeFromMasterCommunity(item)"
class="uk-button uk-button-link uk-flex uk-flex-middle">
<icon name="remove" [flex]="true"></icon>
<span class="uk-margin-small-left">Remove as Main</span>
</a>
</div>
<div *ngIf="previewCommunities.length > 0">
<no-load-paging [type]="'Zenodo communities'"
(pageChange)="updatePage($event)"
[page]="page" [pageSize]="size"
[totalResults]="previewCommunities.length">
</no-load-paging>
<!-- <ul class="uk-margin-medium-top uk-margin-bottom uk-list uk-list-xlarge">-->
<div class="uk-grid uk-grid-large uk-child-width-1-1 uk-margin-medium-top uk-margin-bottom"
uk-grid>
<div
*ngFor="let item of previewCommunities.slice((this.page - 1)*this.size, this.page*this.size); let i=index">
<div class="uk-card uk-card-default">
<div class="uk-card-body">
<preview-zenodo-community [item]="item"
[master]="masterCommunity && item.id==masterCommunity.id"></preview-zenodo-community>
</div>
<div class="uk-card-footer uk-padding-remove-vertical">
<div class="uk-grid uk-grid-small uk-flex-nowrap uk-grid-divider uk-flex-right"
uk-grid>
<div *ngIf="item.id!==masterZenodoCommunityId">
<div class="uk-padding-small uk-padding-remove-horizontal">
<button class="uk-button uk-button-link uk-flex uk-flex-middle"
(click)="removeCommunity(item)">
<icon name="remove" [flex]="true"></icon>
<span class="uk-margin-xsmall-left">Remove</span>
</button>
</div>
</div>
<div *ngIf="(item.id==masterZenodoCommunityId)">
<div class="uk-padding-small uk-padding-remove-horizontal">
<a (click)="removeFromMasterCommunity(item)"
class="uk-button uk-button-link uk-flex uk-flex-middle">
<icon name="remove" [flex]="true"></icon>
<span class="uk-margin-small-left">Remove as Main</span>
</a>
</div>
</div>
<div *ngIf="(!masterZenodoCommunityId)">
<div class="uk-padding-small uk-padding-remove-horizontal">
<a (click)="addAsMasterCommunity(item)"
class="uk-button uk-button-link uk-flex uk-flex-middle">
<icon name="add" [flex]="true"></icon>
<span class="uk-margin-small-left">Add as Main</span>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- </ul>-->
<div class="uk-margin-small-top">
<paging-no-load [currentPage]="page"
[totalResults]="previewCommunities.length" [size]="size"
(pageChange)="updatePage($event)"
customClasses="uk-flex-right@m uk-flex-center">
</paging-no-load>
</div>
</div>
</div>
<div *ngIf="previewZCommunitiesForSubCommunities.length > 0">
<div class="uk-grid uk-grid-large uk-child-width-1-1 uk-margin-medium-top uk-margin-bottom"
uk-grid>
<div
*ngFor="let item of previewZCommunitiesForSubCommunities; let i=index">
<div class="uk-card uk-card-default">
<div class="uk-card-body">
<a (click)="navigateToSub(item.subCommunityId)"
class="uk-margin-small-right uk-margin-small-bottom uk-button uk-button-primary uk-button-small">
{{ _communityService.getCommunityLabel(item.subCommunityId) }}</a>
<preview-zenodo-community [item]="item"
[master]="false"></preview-zenodo-community>
</div>
</div>
</div>
</div>
<div *ngIf="(!masterZenodoCommunityId)">
<div class="uk-padding-small uk-padding-remove-horizontal">
<a (click)="addAsMasterCommunity(item)"
class="uk-button uk-button-link uk-flex uk-flex-middle">
<icon name="add" [flex]="true"></icon>
<span class="uk-margin-small-left">Add as Main</span>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- </ul>-->
<div class="uk-margin-small-top">
<paging-no-load [currentPage]="page"
[totalResults]="previewCommunities.length" [size]="size"
(pageChange)="updatePage($event)" customClasses="uk-flex-right@m uk-flex-center">
</paging-no-load>
</div>
</div>
</div>
<div *ngIf="previewZCommunitiesForSubCommunities.length > 0">
<div class="uk-grid uk-grid-large uk-child-width-1-1 uk-margin-medium-top uk-margin-bottom" uk-grid>
<div
*ngFor="let item of previewZCommunitiesForSubCommunities; let i=index">
<div class="uk-card uk-card-default">
<div class="uk-card-body">
<a (click)="navigateToSub(item.subCommunityId)"
class="uk-margin-small-right uk-margin-small-bottom uk-button uk-button-primary uk-button-small">
{{ _communityService.getCommunityLabel(item.subCommunityId) }}</a>
<preview-zenodo-community [item]="item"
[master]="false"></preview-zenodo-community>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<modal-alert #AlertModalDeleteCommunity (alertOutput)="confirmedDeleteCommunity($event)"
[overflowBody]="false"></modal-alert>
<fs-modal #fsModal>
<add-zenodo-communities *ngIf="community" [masterCommunity]=masterCommunity
[selectedCommunities]=selectedCommunities
[community]="community"
(zenodoCommunitiesChanged)="zenodoCommunitiesChanged($event)"></add-zenodo-communities>
<add-zenodo-communities *ngIf="community" [masterCommunity]=masterCommunity
[selectedCommunities]=selectedCommunities
[community]="community"
(zenodoCommunitiesChanged)="zenodoCommunitiesChanged($event)"></add-zenodo-communities>
</fs-modal>

View File

@ -29,6 +29,7 @@ import {HelperFunctions} from "../../openaireLibrary/utils/HelperFunctions.class
import {SearchInputComponent} from "../../openaireLibrary/sharedComponents/search-input/search-input.component";
import {UntypedFormBuilder, UntypedFormControl} from "@angular/forms";
import {ManageZenodoCommunitiesService} from "../../services/manageZenodoCommunities.service";
import {OpenaireEntities} from "../../openaireLibrary/utils/properties/searchFields";
@Component({
selector: 'zenodo-communities',
@ -352,4 +353,6 @@ export class ZenodoCommunitiesComponent implements OnInit, OnDestroy {
});
this.subCommunityChanged();
}
protected readonly openAIREEntities = OpenaireEntities;
}

View File

@ -1,6 +1,6 @@
<!doctype html>
<html lang="en">
<head>
<head>
<meta charset="utf-8">
<base href="/">
<title>Administration Dashboard | OpenAIRE-Connect</title>
@ -23,10 +23,13 @@
<meta name="robots" content="noindex">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://cdn.ckeditor.com/4.5.11/full-all/ckeditor.js"></script>
<script>
CKEDITOR.config.versionCheck = false;
</script>
<script src="https://unpkg.com/smoothscroll-polyfill@0.4.3/dist/smoothscroll.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<app-root></app-root>
</body>
</head>
<body>
<app-root></app-root>
</body>
</html>