473 lines
29 KiB
HTML
473 lines
29 KiB
HTML
<ng-template #selected_filters_pills>
|
|
<h1 class="uk-margin-remove">
|
|
<div [class.uk-invisible]="list.children.length === 0" [class.uk-margin-top]="list.children.length > 0">
|
|
<ul #list class="uk-grid uk-grid-small uk-flex-wrap" uk-grid>
|
|
<ng-container *ngFor="let customFilter of customFilters">
|
|
<ng-container *ngIf="customFilter.isHiddenFilter">
|
|
<li class="uk-flex uk-flex-middle">
|
|
<span class="uk-text-capitalize uk-label uk-label-small uk-label-secondary uk-text-truncate target1">
|
|
{{customFilter.valueName}}
|
|
</span>
|
|
</li>
|
|
</ng-container>
|
|
</ng-container>
|
|
<ng-container *ngIf="resultTypes && resultTypes.countSelectedValues > 0">
|
|
<ng-container *ngFor="let type of resultTypes.values; let i = index;">
|
|
<ng-container *ngIf="type.selected">
|
|
<li class="">
|
|
<span class="uk-text-capitalize uk-label uk-label-small uk-label-secondary uk-flex uk-flex-middle target2">
|
|
<span class="uk-margin-small-right uk-width-expand uk-text-truncate">{{type.name}}</span>
|
|
<button [class.uk-disabled]="disabled" (click)="removeResultType(type.id)" class="uk-close uk-icon" [disabled]="disabled">
|
|
<icon name="close" flex="true" ratio="0.7"></icon>
|
|
</button>
|
|
</span>
|
|
</li>
|
|
</ng-container>
|
|
</ng-container>
|
|
</ng-container>
|
|
<ng-container *ngIf="selectedRangeFilters > 0">
|
|
<ng-container *ngFor="let filter of rangeFilters ">
|
|
<ng-container *ngIf="filter.selectedFromAndToValues">
|
|
<li class="">
|
|
<span class="uk-text-capitalize uk-label uk-label-small uk-label-secondary uk-flex uk-flex-middle target3">
|
|
<span class="uk-margin-small-right uk-width-expand uk-text-truncate">{{filter.selectedFromAndToValues}}</span>
|
|
<button [class.uk-disabled]="disabled" (click)="removeRangeFilter(filter)" class="uk-close uk-icon" [disabled]="disabled">
|
|
<icon name="close" flex="true" ratio="0.7"></icon>
|
|
</button>
|
|
</span>
|
|
</li>
|
|
</ng-container>
|
|
</ng-container>
|
|
</ng-container>
|
|
<ng-container *ngFor="let filter of staticFilters">
|
|
<ng-container *ngIf="filter.countSelectedValues > 0">
|
|
<ng-container *ngFor="let value of getSelectedValues(filter); let i = index; let end = last; ">
|
|
<li *ngIf="!customFilter || (customFilter.isHiddenFilter && customFilter.valueId != value.id)"
|
|
class="">
|
|
<span class="uk-text-capitalize uk-label uk-label-small uk-label-secondary uk-flex uk-flex-middle target4">
|
|
<span
|
|
class="uk-margin-small-right uk-width-expand uk-text-truncate">
|
|
<ng-container *ngIf="filter.type && (filter.type == 'boolean' || filter.type == 'triplet') else noboolean">
|
|
<span>{{filter.title}}:
|
|
{{(value.name=='true'||value.name=='Yes')?'Yes':'No'}}
|
|
</span>
|
|
</ng-container>
|
|
<ng-template #noboolean>
|
|
<span [attr.title]="value.name" *ngIf="value.name.length > filterPillCharactersLimit">
|
|
{{value.name | slice:0:filterPillCharactersLimit}}...
|
|
</span>
|
|
<span *ngIf="value.name.length <= filterPillCharactersLimit">
|
|
{{value.name}}
|
|
</span>
|
|
</ng-template>
|
|
</span>
|
|
<button [class.uk-disabled]="disabled" (click)="removeFilter(value, filter)" class="uk-close uk-icon" [disabled]="disabled">
|
|
<icon name="close" flex="true" ratio="0.7"></icon>
|
|
</button>
|
|
</span>
|
|
</li>
|
|
</ng-container>
|
|
</ng-container>
|
|
</ng-container>
|
|
<ng-container *ngFor="let filter of filters ">
|
|
<ng-container *ngIf="filter.countSelectedValues > 0">
|
|
<ng-container *ngFor="let value of getSelectedValues(filter); let i = index; let end = last; ">
|
|
<li *ngIf="!customFilters || (customFilters[0].isHiddenFilter && customFilters[0].valueId != value.id)">
|
|
<span class="uk-text-capitalize uk-label uk-label-small uk-label-secondary uk-flex uk-flex-middle target5">
|
|
<span class="uk-margin-small-right uk-width-expand uk-text-truncate">
|
|
<ng-container *ngIf="filter.type && (filter.type == 'boolean' || filter.type == 'triplet') else noboolean">
|
|
<span>{{filter.title}}:
|
|
{{(value.name=='true'||value.name=='Yes')?'Yes':'No'}}
|
|
</span>
|
|
</ng-container>
|
|
<ng-template #noboolean>
|
|
<span [attr.title]="value.name" *ngIf="value.name.length > filterPillCharactersLimit">
|
|
{{value.name | slice:0:filterPillCharactersLimit}}...
|
|
</span>
|
|
<span *ngIf="value.name.length <= filterPillCharactersLimit">
|
|
{{value.name}}
|
|
</span>
|
|
</ng-template>
|
|
</span>
|
|
<button [class.uk-disabled]="disabled" (click)="removeFilter(value, filter)" class="uk-close uk-icon" [disabled]="disabled">
|
|
<icon name="close" flex="true" ratio="0.7"></icon>
|
|
</button>
|
|
</span>
|
|
</li>
|
|
</ng-container>
|
|
</ng-container>
|
|
</ng-container>
|
|
</ul>
|
|
</div>
|
|
</h1>
|
|
</ng-template>
|
|
|
|
<ng-template #search_filter let-filter="filter" let-showResultCount="showResultCount" let-grouped="grouped">
|
|
<search-filter [filterValuesNum]="filterValuesNum" [showMoreInline]="showMoreFilterValuesInline"
|
|
[isDisabled]="disabled"
|
|
[filter]="filter" [showResultCount]=showResultCount
|
|
(onFilterChange)="filterChanged($event)"
|
|
(onFilterToggle)="filterToggled($event)"
|
|
[actionRoute]="true" [grouped]="grouped"></search-filter>
|
|
</ng-template>
|
|
|
|
<ng-template #filters_column>
|
|
<div [class.filterLoading]="disabled">
|
|
<div class="uk-flex uk-flex-middle">
|
|
<h4 class="uk-margin-right uk-margin-remove-bottom">Filters</h4>
|
|
<a *ngIf="(selectedRangeFilters + selectedFilters + selectedStaticFilters + selectedTypesNum)>0"
|
|
(click)="clearFilters()" class="uk-text-small"
|
|
[class.uk-disabled]="disabled" [class.uk-link-muted]="disabled">
|
|
Clear All
|
|
</a>
|
|
</div>
|
|
<div *ngIf="searchUtils.refineStatus == errorCodes.LOADING && existingFiltersWithValues === 0"
|
|
class="uk-margin-top" role="alert">
|
|
<loading></loading>
|
|
</div>
|
|
<div *ngIf="searchUtils.refineStatus != errorCodes.LOADING && searchUtils.refineStatus != errorCodes.DONE && results.length > 0"
|
|
class="uk-margin-top uk-text-meta">
|
|
<span *ngIf="searchUtils.refineStatus == errorCodes.NONE">No filters available</span>
|
|
<span *ngIf="searchUtils.refineStatus != errorCodes.NONE" class="uk-text-warning">Filters temporarily unavailable. Please try again later.</span>
|
|
</div>
|
|
<ul *ngIf="!showUnknownFilters" class="uk-list uk-list-xlarge">
|
|
<ng-container *ngIf="orderedFilters && orderedFilters.length > 0">
|
|
<ng-container *ngFor="let group of orderedFilters">
|
|
<h6 *ngIf="group.title" class="uk-h6">{{group.title}}</h6>
|
|
<ng-container *ngFor="let filter of group.values; let i=index">
|
|
<li *ngIf="filter.originalFilterIdFrom && filter.originalFilterIdTo; else refineBlock">
|
|
<range-filter [isDisabled]="disabled" [filter]="filter"
|
|
(onFilterChange)="filterChanged($event)" [actionRoute]="true"></range-filter>
|
|
</li>
|
|
<ng-template #refineBlock>
|
|
<li *ngIf="filter.values && filter.values.length > 0" [ngClass]="group.title && i==0 ? 'uk-margin-small-top' : ''">
|
|
<ng-container *ngTemplateOutlet="search_filter; context: {filter: filter, showResultCount: filter.type!='static', grouped: !!group.title}"></ng-container>
|
|
</li>
|
|
</ng-template>
|
|
</ng-container>
|
|
</ng-container>
|
|
</ng-container>
|
|
<ng-container *ngIf="!orderedFilters || orderedFilters.length == 0">
|
|
<ng-container *ngFor="let filter of staticFilters ">
|
|
<li *ngIf="filter.values && filter.values.length > 0">
|
|
<ng-container *ngTemplateOutlet="search_filter; context: {filter: filter, showResultCount: false}"></ng-container>
|
|
</li>
|
|
</ng-container>
|
|
|
|
<li *ngIf="resultTypes && (filters.length > 0)">
|
|
<quick-selections [resultTypes]="resultTypes" (typeChange)="queryChanged($event)"
|
|
[isDisabled]="disabled" [vertical]="true"
|
|
[actionRoute]="true">
|
|
</quick-selections>
|
|
</li>
|
|
<li *ngIf="filters.length > 0 && getFilterById('instancetypename') && getFilterById('instancetypename').values.length >0">
|
|
<ng-container *ngTemplateOutlet="search_filter; context: {filter: getFilterById('instancetypename'), showResultCount: showResultCount}"></ng-container>
|
|
</li>
|
|
<ng-container *ngIf="entityType == 'result'">
|
|
<li *ngFor="let filter of rangeFilters">
|
|
<range-filter [isDisabled]="disabled" [filter]="filter"
|
|
(onFilterChange)="filterChanged($event)" [actionRoute]="true"></range-filter>
|
|
</li>
|
|
</ng-container>
|
|
<ng-container *ngFor="let filter of filters ">
|
|
<li *ngIf="filter.values && filter.values.length > 0
|
|
&& filter.filterId != 'resultbestaccessright' && filter.filterId != 'instancetypename' && filter.filterId != 'projectoamandatepublications'">
|
|
<ng-container *ngTemplateOutlet="search_filter; context: {filter: filter, showResultCount: showResultCount}"></ng-container>
|
|
</li>
|
|
</ng-container>
|
|
<ng-container *ngIf="entityType == 'project'">
|
|
<li *ngFor="let filter of rangeFilters">
|
|
<range-filter [isDisabled]="disabled" [filter]="filter"
|
|
(onFilterChange)="filterChanged($event)" [actionRoute]="true"></range-filter>
|
|
</li>
|
|
</ng-container>
|
|
<li *ngIf="filters.length > 0 && getFilterById('projectoamandatepublications') && getFilterById('projectoamandatepublications').values.length >0">
|
|
<ng-container *ngTemplateOutlet="search_filter; context: {filter: getFilterById('projectoamandatepublications'), showResultCount: showResultCount}"></ng-container>
|
|
</li>
|
|
</ng-container>
|
|
</ul>
|
|
</div>
|
|
</ng-template>
|
|
|
|
<ng-template #main let-mobile="mobile">
|
|
<div *ngIf="mobile && showRefine && (searchUtils.refineStatus != errorCodes.LOADING || existingFiltersWithValues !== 0)"
|
|
class="filters-toggle-button">
|
|
<button href="#mobile-filters" uk-toggle="target: #mobile-filters"
|
|
class="uk-icon-button uk-button-secondary uk-flex uk-flex-middle"
|
|
(click)="showOffCanvas = true; detectChanges()"
|
|
[disabled]="disabled"
|
|
[class.uk-disabled]="disabled">
|
|
<icon name="filters" [flex]="true" ratio="1.2" visuallyHidden="filters"></icon>
|
|
</button>
|
|
</div>
|
|
|
|
<!-- TODO - Clean up -->
|
|
<div *ngIf="!includeOnlyResultsAndFilter" [class]="usedBy != 'deposit' && usedBy != 'orcid' &&
|
|
(!customFilters || (customFilters && customFilters[0].queryFieldName != 'communityId')) ?
|
|
(stickyForm?'':' ') :
|
|
(+ (stickyForm?'':' uk-section') +' uk-padding-remove-bottom uk-padding-remove-top ' +
|
|
((usedBy == 'deposit' || usedBy == 'orcid') ? ' uk-padding-remove-top ' : ' '))"
|
|
[attr.uk-sticky]="((stickyForm || (simpleView && mobile))?'{offset:100;start:90;cls-active:uk-active uk-sticky-below;cls-inactive:uk-sticky '+
|
|
(usedBy != 'deposit' && usedBy != 'orcid' && (!customFilters || customFilters[0].queryFieldName != 'communityId') ?
|
|
' uk-position-relative ' :(' uk-section ' ))+'}':null)">
|
|
<div class="uk-background-norepeat uk-background-bottom-center" [ngClass]="searchForm.class">
|
|
<div class="uk-width-1-1">
|
|
<div *ngIf="showBreadcrumb && !mobile" class="uk-container uk-container-large uk-section uk-section-small uk-padding-remove-bottom" [class.uk-light]="searchForm.dark">
|
|
<div class="uk-margin-top">
|
|
<breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs>
|
|
</div>
|
|
</div>
|
|
<div class="uk-position-relative">
|
|
<div class="uk-container uk-section uk-section-small uk-margin-bottom" id="searchForm">
|
|
<div class="uk-grid uk-flex uk-flex-middle uk-flex-center" uk-grid>
|
|
<div [class]="'uk-width-1-1'+(simpleView?' uk-width-auto@m' : '')"><div id="searchImage"></div></div>
|
|
<advanced-search-form class="uk-width-expand uk-padding-remove-vertical"
|
|
[entityType]="entityType"
|
|
[fieldValues]="staticFieldValues"
|
|
[fieldIds]="fieldIds"
|
|
[fieldIdsMap]="fieldIdsMap"
|
|
[selectedFields]="selectedFields"
|
|
(queryChange)="queryChanged($event)"
|
|
[isDisabled]="disabled"
|
|
[dark]="searchForm.dark"
|
|
[simpleSearchLink]="simpleSearchLink"
|
|
[advancedSearchLink]="advancedSearchLink"
|
|
[advancedSearchLinkParameters]="this.routerHelper.createQueryParams(this.parameterNames, this.parameterValues)"
|
|
[simpleView]="simpleView" [formPlaceholderText]="formPlaceholderText" [isMobile]="mobile"
|
|
[resultTypes]="resultTypes" [quickFilter]="quickFilter" [entitiesSelection]="entitiesSelection"
|
|
[showSwitchSearchLink]="showSwitchSearchLink" [customFilter]="customFilters?customFilters[0]:null"
|
|
>
|
|
</advanced-search-form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<schema2jsonld *ngIf="url" [URL]="url" type="search" [name]=pageTitleWithFilters
|
|
[searchAction]=false [description]="metaDescription"></schema2jsonld>
|
|
<div id="tm-main" [class.uk-margin-medium-top]="!includeOnlyResultsAndFilter && properties.adminToolsPortalType != 'eosc'" [class.uk-margin-top]="stickyForm">
|
|
<ng-template #loading>
|
|
<loading class="uk-height-medium uk-display-block uk-margin-xlarge-top"></loading>
|
|
</ng-template>
|
|
<ng-template [ngIf]="searchUtils.refineStatus != errorCodes.LOADING || existingFiltersWithValues !== 0" [ngIfElse]="loading">
|
|
<div class="uk-container uk-container-large">
|
|
<div [class.uk-margin-top]="properties.adminToolsPortalType == 'eosc'" >
|
|
<helper *ngIf="pageContents && pageContents['top'] && pageContents['top'].length > 0"
|
|
[texts]="pageContents['top']"></helper>
|
|
<!-- <div *ngIf="resultTypes" class="uk-flex uk-flex-center uk-padding-small uk-padding-remove-vertical uk-background-muted uk-border-rounded">-->
|
|
<!-- <quick-selections class="uk-margin-bottom uk-margin-top" [resultTypes]="resultTypes" (typeChange)="queryChanged($event)"-->
|
|
<!-- [isDisabled]="disabled" [actionRoute]="true">-->
|
|
<!-- </quick-selections>-->
|
|
<!-- </div>-->
|
|
<div [class]="showRefine? 'uk-width-4-5@m uk-width-4-5@l uk-width-1-1@s' :'uk-width-1-1'">
|
|
<div *ngIf="showRefine && mobile">
|
|
<div #mobileFilters id="mobile-filters" uk-offcanvas="overlay: true">
|
|
<div class="uk-offcanvas-bar uk-padding-remove-horizontal">
|
|
<a class="uk-offcanvas-close uk-icon uk-close" (click)="showOffCanvas=false; detectChanges()">
|
|
<icon name="close" ratio="1.5" visuallyHidden="close filters"></icon>
|
|
</a>
|
|
<div *ngIf="showOffCanvas" class="uk-padding-small uk-padding-remove-vertical">
|
|
<div class="uk-margin-medium-top">
|
|
<ng-container *ngTemplateOutlet="filters_column; context: {}"></ng-container>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div *ngIf="includeOnlyResultsAndFilter && showSwitchSearchLink && advancedSearchLink" class="uk-margin-medium-top uk-margin-medium-bottom">
|
|
<a routerLinkActive="router-link-active"
|
|
[routerLink]="advancedSearchLink" style="z-index:1;"
|
|
[queryParams]="this.routerHelper.createQueryParams(this.parameterNames, this.parameterValues)"
|
|
[class]="((disabled)?' uk-disabled uk-link-muted ':'') +'uk-link uk-float-right '">Advanced
|
|
search
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="uk-container uk-margin-top" [class.uk-container-large]="!mobile" [class.uk-container-expand]="mobile" [class.uk-padding-remove-horizontal]="mobile">
|
|
<div class="uk-grid uk-margin-large-bottom" [class.uk-margin-top]="!mobile" uk-grid>
|
|
<!-- <div *ngIf="!mobile && showRefine -->
|
|
<!-- && (searchUtils.refineStatus == errorCodes.DONE && ((orderedFilters && orderedFilters.length > 0) || (staticFilters && staticFilters.length > 0)-->
|
|
<!-- || (rangeFilters && rangeFilters.length > 0) || (filters && filters.length > 0)))-->
|
|
<!-- && (results.length > 0 || (searchUtils.refineStatus == errorCodes.LOADING && searchUtils.status != errorCodes.LOADING) || (!hideFilters &&-->
|
|
<!-- (existingFiltersWithValues > 0 || (selectedRangeFilters + selectedFilters + selectedTypesNum) > 0))) "-->
|
|
<!-- class="uk-width-1-4@m search-filters">-->
|
|
<!-- </div>-->
|
|
<div *ngIf="!mobile && showRefine
|
|
&& (results.length > 0 || (searchUtils.refineStatus == errorCodes.LOADING && searchUtils.status != errorCodes.LOADING) || (!hideFilters &&
|
|
(existingFiltersWithValues > 0 || (selectedRangeFilters + selectedFilters + selectedTypesNum) > 0))) "
|
|
class="uk-width-1-4@m search-filters">
|
|
<ng-container *ngTemplateOutlet="filters_column; context: {}"></ng-container>
|
|
</div>
|
|
<div class="uk-width-expand@m uk-with-1-1@s">
|
|
<div [class.uk-padding-small]="mobile" class="uk-padding-remove-vertical">
|
|
<!-- Related results for Custom Filter Alert -->
|
|
<div *ngIf="openaireLink && (searchUtils.totalResults > 0 || !loadPaging )"
|
|
class="uk-alert uk-margin-small-top uk-margin-medium-bottom">
|
|
<ng-container *ngFor="let customFilter of customFilters">
|
|
<span *ngIf="customFilter.showFilterMessage">The following results are related to <span class="uk-text-primary uk-text-bold"
|
|
>{{customFilter.valueName}}</span>.</span>
|
|
</ng-container>
|
|
Are you interested to view more results? Visit
|
|
<a
|
|
class="uk-margin-top uk-link"
|
|
[href]="openaireLink+this.routerHelper.createQueryParamsString(this.parameterNames, this.parameterValues)"
|
|
target="_blank"> OpenAIRE - Explore</a>.
|
|
</div>
|
|
|
|
<div class="uk-flex uk-flex-middle uk-child-width-auto uk-flex-between">
|
|
<!-- Total results, number of pages -->
|
|
<div class="uk-margin-remove-bottom uk-text-truncate" [class.uk-margin-medium-right]="!mobile" [class.uk-margin-right]="mobile" [class.uk-h6]="!mobile">
|
|
<ng-container *ngIf="results && searchUtils.totalResults > 0">
|
|
<span>{{searchUtils.totalResults|number}}</span>
|
|
<span class="uk-text-meta uk-text-capitalize"> {{type}}</span>
|
|
<ng-container *ngIf="searchTerm && simpleView">
|
|
<span class="uk-text-meta"> for </span>
|
|
<span class="uk-text-bold">{{searchTerm}}</span>
|
|
</ng-container>
|
|
<ng-container *ngIf="!simpleView && advancedSearchTerms > 0">
|
|
<span class="uk-text-bold"> ({{advancedSearchTerms}} rule{{advancedSearchTerms == 1 ? '' : 's'}} applied)</span>
|
|
</ng-container>
|
|
</ng-container>
|
|
<ng-container *ngIf="!loadPaging && oldTotalResults > 0 && searchUtils.status == errorCodes.LOADING">
|
|
<span>{{oldTotalResults|number}}</span>
|
|
<span class="uk-text-meta uk-text-capitalize"> {{type}}, page </span>
|
|
<span>{{searchUtils.page | number}}</span>
|
|
<span class="uk-text-meta"> of {{(totalPages(oldTotalResults)|number)}}</span>
|
|
</ng-container>
|
|
</div>
|
|
<!-- Download results -->
|
|
<div *ngIf="mobile && showDownload && (searchUtils.status !== errorCodes.LOADING || !loadPaging)"
|
|
class="uk-flex uk-flex-center">
|
|
<search-download
|
|
*ngIf="( entityType !='community' && entityType != 'stakeholder') && usedBy == 'search'"
|
|
[isDisabled]="disabled"
|
|
[type]="csvPath" [csvParams]="csvParams" [totalResults]="searchUtils.totalResults">
|
|
</search-download>
|
|
<ng-container *ngIf="properties.zenodoDumpUrl && entityType == 'result'">
|
|
<a [href]="properties.zenodoDumpUrl" target="_blank" class=" uk-margin-left uk-button uk-button-link uk-flex uk-flex-middle">
|
|
<img src="assets/common-assets/common/zenodoDump.png" alt="Zenodo dump" width="20"><span class="uk-margin-xsmall-left">Data dump</span>
|
|
</a>
|
|
</ng-container>
|
|
</div>
|
|
|
|
<div *ngIf="!mobile" class="uk-flex uk-flex-middle">
|
|
<div *ngIf="searchUtils.totalResults > 10 || sort || searchUtils.totalResults > searchUtils.size ||
|
|
(!loadPaging && oldTotalResults > searchUtils.size && searchUtils.status == errorCodes.LOADING)"
|
|
class="uk-grid uk-flex-middle uk-child-width-1-1 uk-child-width-1-2@m" uk-grid>
|
|
<div>
|
|
<div class="uk-grid uk-flex-middle uk-grid-column-collapse" uk-grid>
|
|
<search-sorting *ngIf="sort && searchUtils.totalResults > 0"
|
|
[entityType]="entityType" [sortBy]="searchUtils.sortBy"
|
|
(sortByChange)="sortByChanged($event)"
|
|
[isDisabled]="disabled">
|
|
</search-sorting>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- Compact results -->
|
|
<a *ngIf="hasCompactView && (searchUtils.status !== errorCodes.LOADING || !loadPaging)"
|
|
class="uk-link-reset custom-view-button active uk-margin-left">
|
|
<icon *ngIf="!compactView" uk-tooltip="Compact results" (click)="toggleView(true)"
|
|
name="unfold_less" [flex]="true" visuallyHidden="Compact results"></icon>
|
|
<icon *ngIf="compactView" uk-tooltip="Expand results" (click)="toggleView(false)"
|
|
name="unfold_more" [flex]="true" visuallyHidden="Expand results"></icon>
|
|
</a>
|
|
<!-- Download results -->
|
|
<div *ngIf="showDownload && (searchUtils.status !== errorCodes.LOADING || !loadPaging)"
|
|
class="uk-margin-left uk-flex uk-flex-middle" [class.uk-flex-center]="mobile" [class.uk-margin-medium-top]="mobile">
|
|
<search-download
|
|
*ngIf="( entityType !='community' && entityType != 'stakeholder') && usedBy == 'search'"
|
|
[isDisabled]="disabled"
|
|
[type]="csvPath" [csvParams]="csvParams" [totalResults]="searchUtils.totalResults">
|
|
</search-download>
|
|
<ng-container *ngIf="properties.zenodoDumpUrl && entityType == 'result'">
|
|
<a [href]="properties.zenodoDumpUrl" target="_blank" class=" uk-margin-left uk-button uk-button-link uk-flex uk-flex-middle">
|
|
<img src="assets/common-assets/common/zenodoDump.png" alt="Zenodo dump" width="20"><span class="uk-margin-xsmall-left">Data dump</span>
|
|
</a>
|
|
</ng-container>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div *ngIf="(searchUtils.status !== errorCodes.LOADING || !loadPaging) && !mobile" class="uk-flex uk-flex-top">
|
|
<!-- filters pills -->
|
|
<div class="uk-width-expand@m">
|
|
<ng-container *ngTemplateOutlet="selected_filters_pills;"></ng-container>
|
|
</div>
|
|
</div>
|
|
<div [class]="searchUtils.page > pagingLimit ? 'search-results' : ''"
|
|
*ngIf="(searchUtils.page >= pagingLimit) && (searchUtils.totalResults > searchUtils.size*pagingLimit)">
|
|
<p class="uk-alert uk-alert-warning" uk-alert>For more results please try a new, more specific query</p>
|
|
</div>
|
|
</div>
|
|
<div *ngIf="(searchUtils.page <= pagingLimit) || (searchUtils.totalResults <= searchUtils.size*pagingLimit)" class="uk-margin">
|
|
<search-result *ngIf="( entityType !='community' && entityType != 'stakeholder') && usedBy == 'search'"
|
|
[results]="results"
|
|
[status]=searchUtils.status
|
|
[type]="entityType"
|
|
[showLoading]="true" [properties]=properties
|
|
[compactView]="compactView">
|
|
</search-result>
|
|
<deposit-result *ngIf="usedBy == 'deposit'"
|
|
[results]="results"
|
|
[status]="searchUtils.status"
|
|
[type]="entityType"
|
|
[zenodoInformation]="zenodoInformation"
|
|
[properties]=properties
|
|
[isMobile]="mobile">
|
|
</deposit-result>
|
|
<orcid-result *ngIf="usedBy == 'orcid'"
|
|
[results]="results"
|
|
[status]="searchUtils.status"
|
|
[type]="entityType"
|
|
[properties]=properties>
|
|
</orcid-result>
|
|
<portal-search-result
|
|
*ngIf="(entityType == 'community' || entityType == 'stakeholder') && usedBy == 'search'"
|
|
[results]="results"
|
|
[status]="searchUtils.status"
|
|
[type]="entityType"
|
|
[showType]="entityType == 'stakeholder'" [isMobile]="mobile"
|
|
[showLoading]="true" [properties]=properties>
|
|
</portal-search-result>
|
|
</div>
|
|
<div [class.uk-padding-small]="mobile" class="uk-padding-remove-vertical">
|
|
<div class="uk-margin-medium-top">
|
|
<search-paging [type]="type" [loadPaging]="loadPaging" [oldTotalResults]="oldTotalResults"
|
|
[searchUtils]="searchUtils" [results]="results" [baseUrl]="searchUtils.baseUrl"
|
|
[parameterNames]="parameterNames" [parameterValues]="parameterValues"
|
|
[isDisabled]="disabled" [isMobile]="mobile">
|
|
</search-paging>
|
|
</div>
|
|
<div *ngIf="showIndexInfo && searchUtils.status !== errorCodes.LOADING" class="uk-margin-large-top uk-flex uk-flex-between uk-flex-wrap uk-text-small">
|
|
<!-- Last Index Info-->
|
|
<a href="https://graph.openaire.eu" target="_blank" class="uk-width-1-1 uk-width-auto@m">
|
|
<img src="assets/common-assets/openaire-badge-1.png" alt="Powered by OpenAIRE graph" style="height: 17px;">
|
|
</a>
|
|
<div class="uk-width-1-1 uk-width-auto@m">
|
|
<span *ngIf="indexUpdateDate" class="uk-text-baseline uk-text-meta">
|
|
<a *ngIf="properties.showLastIndexInformationLink" class="uk-link" [href]="properties.lastIndexInformationLink" target="_blank">Last update</a>
|
|
<span *ngIf="!(properties.showLastIndexInformationLink)">Last update</span>
|
|
of records in OpenAIRE: {{indexUpdateDate | date: 'MMM dd, yyyy'}}
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<helper *ngIf="pageContents && pageContents['bottom'] && pageContents['bottom'].length > 0"
|
|
[texts]="pageContents['bottom']"></helper>
|
|
</div>
|
|
</div>
|
|
</ng-template>
|
|
</div>
|
|
</ng-template>
|
|
<div *ngIf="!isMobile" class="uk-visible@m">
|
|
<ng-container *ngTemplateOutlet="main; context: {mobile: false}"></ng-container>
|
|
</div>
|
|
<div *ngIf="isMobile || isServer" class="uk-hidden@m">
|
|
<ng-container *ngTemplateOutlet="main; context: {mobile: true}"></ng-container>
|
|
</div>
|