[Library|Trunk]

Result Landing: Fix link for softwrae

Search all: fix communityId typo

Advanced Search form: pass customFilter

Entities Selecton: pass custom Filter, add checks for RCD don't show drop down if only one option

Search page: link to openaire- pass same parameters as the filters

Search table view:
	filters, paging, form  similar to search pages, add entities selection



git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-services-library/trunk/ng-openaire-library/src/app@58391 d315682c-612b-4755-9ff5-7f18f6832af3
This commit is contained in:
argiro.kokogiannaki 2020-04-03 16:00:19 +00:00
parent 5b6015f404
commit a8cbb7e963
14 changed files with 133 additions and 69 deletions

View File

@ -512,8 +512,8 @@ export class ResultLandingComponent {
this.linkToLandingPage = this.properties.searchLinkToDataset;
this.linkToSearchPage = this.properties.searchLinkToDatasets;
} else if(this.type == "software") {
this.linkToLandingPage = this.properties.searchLinkToSoftware;
this.linkToSearchPage = this.properties.searchLinkToSoftwareLanding;
this.linkToLandingPage = this.properties.searchLinkToSoftwareLanding;
this.linkToSearchPage = this.properties.searchLinkToSoftware;
} else if(this.type == "other") {
this.type="orp";
this.linkToLandingPage = this.properties.searchLinkToOrp;

View File

@ -150,8 +150,8 @@ export class SearchComponent {
}
if ((this.customFilter && this.customFilter.queryFieldName == "communitId") || this.properties.adminToolsCommunity) {
this.config.getCommunityInformation(this.properties, (this.customFilter && this.customFilter.queryFieldName == "communitId") ? this.customFilter.valueId : this.properties.adminToolsCommunity).subscribe(data => {
if ((this.customFilter && this.customFilter.queryFieldName == "communityId") || this.properties.adminToolsCommunity) {
this.config.getCommunityInformation(this.properties, (this.customFilter && this.customFilter.queryFieldName == "communityId") ? this.customFilter.valueId : this.properties.adminToolsCommunity).subscribe(data => {
var showEntity = {};
for (var i = 0; i < data['entities'].length; i++) {

View File

@ -19,7 +19,7 @@
[simpleView]="true" [formPlaceholderText]="formPlaceholderText"
[selectedFields]="selectedFields"
[fieldIdsMap]="fieldIdsMap" [fieldIds]="fieldIds" [entitiesSelection]="true"
[fieldIdsMap]="fieldIdsMap" [fieldIds]="fieldIds" [entitiesSelection]="true" [customFilter]="customFilter"
>
</advanced-search-form>
</div>

View File

@ -172,8 +172,8 @@ export class SearchAllComponent {
}
if ((this.customFilter && this.customFilter.queryFieldName == "communitId") || this.properties.adminToolsCommunity) {
this.config.getCommunityInformation(this.properties, (this.customFilter && this.customFilter.queryFieldName == "communitId") ? this.customFilter.valueId : this.properties.adminToolsCommunity).subscribe(data => {
if ((this.customFilter && this.customFilter.queryFieldName == "communityId") || this.properties.adminToolsCommunity) {
this.config.getCommunityInformation(this.properties, (this.customFilter && this.customFilter.queryFieldName == "communityId") ? this.customFilter.valueId : this.properties.adminToolsCommunity).subscribe(data => {
var showEntity = {};
for (var i = 0; i < data['entities'].length; i++) {

View File

@ -6,7 +6,7 @@
<div class="uk-h5 uk-margin-small-bottom">
Advanced search in
<entities-selection [simpleView]="false" [currentEntity]="entityType"
[properties]="properties"></entities-selection>
[properties]="properties" [customFilter]="customFilter" ></entities-selection>
</div>
</div>
@ -136,7 +136,7 @@
<entities-selection *ngIf="entitiesSelection" [simpleView]="true" [currentEntity]="entityType"
[properties]="properties"
(selectionChange)=" simpleEntityChanged($event)"
[onChangeNavigate]="true"></entities-selection>
[onChangeNavigate]="true" [customFilter]="customFilter"></entities-selection>
</div>
<div [class]="((resultTypes || quickFilter)?'quickSelectionsBox':'')+' uk-padding-remove-left uk-margin-small-top'">
<div class="uk-inline">

View File

@ -6,6 +6,7 @@ import {SearchFields} from '../../utils/properties/searchFields';
import {Dates} from '../../utils/string-utils.class';
import {EnvProperties} from '../../utils/properties/env-properties';
import {ConfigurationService} from "../../utils/configuration/configuration.service";
import {SearchCustomFilter} from "./searchUtils.class";
@Component({
selector: 'advanced-search-form',
@ -28,7 +29,7 @@ export class AdvancedSearchFormComponent {
@Input() quickFilter:{filter: Filter, selected:boolean, filterId:string, value:string};
validDateFrom: boolean = true;
validDateTo: boolean = true;
@Input() customFilter: SearchCustomFilter;
newFieldId:string;
newFieldName:string;
fieldList:{[id:string]:any[]} = {};

View File

@ -14,7 +14,7 @@
(queryChange)="queryChanged($event)"
[isDisabled]="disableForms"
[simpleSearchLink]=simpleSearchLink
[pageTitle]=pageTitle
[pageTitle]=pageTitle [customFilter]="customFilter"
>
</advanced-search-form>
</div>

View File

@ -1,19 +1,18 @@
import {Component, EventEmitter, Input, OnChanges, Output, SimpleChanges} from '@angular/core';
import {Component, EventEmitter, Input, Output} from '@angular/core';
import {FormBuilder} from "@angular/forms";
import {EnvProperties} from "../../utils/properties/env-properties";
import {SearchCustomFilter} from "./searchUtils.class";
import {ConfigurationService} from "../../utils/configuration/configuration.service";
import {RouterHelper} from "../../utils/routerHelper.class";
import {Router} from "@angular/router";
@Component({
selector: 'entities-selection',
template: `
<span class="entitiesSelection portal-box uk-text-small " style="" >
<mat-select *ngIf="show && selectedEntity" [(value)]="selectedEntity"
<mat-select *ngIf="show>1 && selectedEntity " [(value)]="selectedEntity"
(valueChange)="entityChanged()" [disableOptionCentering]="true" panelClass="matSelectionPanel">
<mat-option
*ngIf="simpleView && (showResearchOutcomes + showDataProviders + showOrganizations + showProjects )>1 "
*ngIf="simpleView && (show)>1 && !(this.customFilter && this.customFilter.queryFieldName=='communityId' )"
value="all">All content
</mat-option>
<mat-option *ngIf="showResearchOutcomes" value="result">Research outcomes</mat-option>
@ -21,16 +20,16 @@ import {Router} from "@angular/router";
<mat-option *ngIf="showDataProviders" value="dataprovider">Content providers</mat-option>
<mat-option *ngIf="showOrganizations" value="organization">Organizations</mat-option>
</mat-select>
<mat-select *ngIf="!show && currentEntity" [(value)]="selectedEntity">
<mat-option [value]="selectedEntity">
<div *ngIf="show==1 && currentEntity" >
<div >
<span *ngIf="currentEntity=='all'">All content</span>
<span *ngIf="currentEntity=='result'">Research outcomes</span>
<span *ngIf="currentEntity=='project'">Projects</span>
<span *ngIf="currentEntity=='dataprovider'">Content providers</span>
<span *ngIf="currentEntity=='organization'">Organizations</span>
</mat-option>
</div>
</mat-select>
</div>
</span>
@ -52,7 +51,7 @@ export class EntitiesSelectionComponent {
@Input() simpleView: boolean = true;
@Input() onChangeNavigate: boolean = true;
@Output() selectionChange = new EventEmitter();
show = false;
show = 0;
constructor(private _fb: FormBuilder, private config: ConfigurationService, private router: Router) {
@ -61,9 +60,12 @@ export class EntitiesSelectionComponent {
ngOnInit() {
this.show = 0;
if (this.properties) {
this.config.getCommunityInformation(this.properties, (this.customFilter && this.customFilter.queryFieldName == "communitId") ? this.customFilter.valueId : this.properties.adminToolsCommunity).subscribe(data => {
console.log(this.customFilter)
this.config.getCommunityInformation(this.properties, (this.customFilter && this.customFilter.queryFieldName == "communityId") ? this.customFilter.valueId : this.properties.adminToolsCommunity).subscribe(data => {
var showEntity = {};
console.log(data)
for (var i = 0; i < data['entities'].length; i++) {
showEntity["" + data['entities'][i]["pid"] + ""] = data['entities'][i]["isEnabled"];
@ -74,11 +76,26 @@ export class EntitiesSelectionComponent {
this.showDataProviders = showEntity["datasource"];
if (this.customFilter && this.customFilter.queryFieldName == "communityId") {
this.showProjects = false;
this.showOrganizations = false;
this.showDataProviders = false;
if(!this.simpleView){
this.showProjects = false;
this.showDataProviders = false;
}
}
this.show = true;
if(this.showResearchOutcomes){
this.show++;
}
if(this.showDataProviders){
this.show++;
}
if(this.showOrganizations){
this.show++;
}
if(this.showProjects){
this.show++;
}
});
}
this.selectedEntity = this.currentEntity;

View File

@ -76,7 +76,7 @@
' searchFormMinHeight uk-padding-remove-bottom uk-section ' : '')
+(simpleView?'':' advancedSearchFormBackground ')">
<div [class]="(usedBy!='deposit')?'uk-position-cover':''" ></div>
<div [class]="(usedBy!='deposit' && (!customFilter || customFilter.queryFieldName != 'communityId'))?'uk-position-cover':''" ></div>
<div class="uk-width-1-1">
<div class="uk-position-relative">
<div class="uk-container uk-margin-large-top">
@ -93,7 +93,7 @@
="this.routerHelper.createQueryParams(this.parameterNames, this.parameterValues)"
[pageTitle]=pageTitle [simpleView]="simpleView" [formPlaceholderText]="formPlaceholderText"
[resultTypes]="resultTypes" [quickFilter]="quickFilter" [entitiesSelection]="entitiesSelection"
[showAdvancedSearchLink]="showAdvancedSearchLink"
[showAdvancedSearchLink]="showAdvancedSearchLink" [customFilter]="customFilter"
>
</advanced-search-form>
</div>
@ -342,7 +342,9 @@
</div>
<div class="uk-width-expand@m uk-with-1-1@s">
<div *ngIf="openaireLink"> <a class="uk-margin-top uk-button uk-button-text" [href]=openaireLink target="_blank" >Results in OpenAIRE</a></div>
<div *ngIf="openaireLink"> <a class="uk-margin-top uk-button uk-button-text"
[href]="openaireLink+this.routerHelper.createQueryParamsString(this.parameterNames, this.parameterValues)"
target="_blank" >Results in OpenAIRE</a></div>
<div class="uk-align-center uk-margin-remove-bottom">
<div *ngIf="(results && searchUtils.totalResults > 0) || (!loadPaging && oldTotalResults > 0 && searchUtils.status == errorCodes.LOADING)"
class="uk-grid uk-margin-top uk-margin-bottom">

View File

@ -6,7 +6,7 @@ import {Meta, Title} from '@angular/platform-browser';
import {AdvancedField, Filter, Value} from './searchHelperClasses.class';
import {SearchCustomFilter, SearchUtilsClass} from './searchUtils.class';
import {ModalLoading} from '../../utils/modal/loading.component';
import {Dates, DOI, Identifier, StringUtils} from '../../utils/string-utils.class';
import {Dates, Identifier, StringUtils} from '../../utils/string-utils.class';
import {ErrorCodes} from '../../utils/properties/errorCodes';
import {RouterHelper} from '../../utils/routerHelper.class';
@ -47,7 +47,7 @@ export class NewSearchPageComponent {
@Input() loadPaging: boolean = true;
@Input() oldTotalResults: number = 0;
@Input() openaireLink: string;
@Input() customFilter: SearchCustomFilter = null;
@Input() customFilter: SearchCustomFilter;
@Input() sort: boolean = false;
@Input() searchFormClass: string = "searchForm";
//From simple:

View File

@ -1,9 +1,10 @@
<ng-template #filters_column>
<div *ngIf="filters.length > 0" class=" search-filters ">
<div *ngIf="countFilters()>1" class=" uk-margin-medium-bottom">
<div *ngIf="countFilters()>0" class=" uk-margin-medium-bottom">
<div class="uk-grid uk-flex uk-flex-bottom">
<h5 class="uk-text-bold">Filters</h5>
<a (click)="clearFilters()" [class]="((disableForms)?'uk-disabled uk-link-muted':'')+' portal-link ' + 'uk-width-1-2'">
<a *ngIf="countFilters()>1" (click)="clearFilters()"
[class]="((disableForms)?'uk-disabled uk-link-muted':'')+' portal-link ' + 'uk-width-1-2'">
Clear All
</a>
</div>
@ -32,6 +33,28 @@
<search-filter *ngFor="let filter of filters " [isDisabled]="disableForms" [filter]="filter" [showResultCount]=showResultCount (change)="filterChanged($event)" (toggleModal)="toggleModal($event)"></search-filter>
</div>
</ng-template>
<ng-template #paging>
<div *ngIf="searchUtils.totalResults > 0" >
<div class= "paging-hr searchPaging uk-margin-small-bottom"
*ngIf="(results && searchUtils.totalResults > 0) || (searchUtils.status == errorCodes.LOADING)">
<div class="uk-panel uk-margin-small-top uk-grid uk-flex uk-flex-middle">
<div class="uk-width-1-1@s uk-width-1-2@m uk-text-uppercase"
*ngIf="results && searchUtils.totalResults > 0">
{{searchUtils.totalResults|number}}
<span class="uk-text-muted uk-text-uppercase"> {{type}}, page </span>
{{searchUtils.page | number}}
<span class="uk-text-muted uk-text-uppercase"> of </span>
{{(totalPages()|number)}}
</div>
<div class="float-children-right-at-medium margin-small-top-at-small uk-width-expand" *ngIf=" searchUtils.status != errorCodes.LOADING">
<paging-no-load [currentPage]="searchUtils.page" [totalResults]="searchUtils.totalResults" [size]="searchUtils.size" (pageChange)="goTo($event.value)"></paging-no-load>
</div>
</div>
</div>
</div>
</ng-template>
<div class="image-front-topbar uk-section-default uk-position-relative" uk-scrollspy="{&quot;target&quot;:&quot;[uk-scrollspy-class]&quot;,&quot;cls&quot;:&quot;uk-animation-fade&quot;,&quot;delay&quot;:false}" tm-header-transparent="light">
<div style=" min-height: 350px;" [class]="' uk-background-norepeat uk-background-cover uk-background-bottom-center uk-section uk-padding-remove-bottom uk-flex uk-flex-middle uk-background-fixed '+searchFormClass">
<div class="uk-position-cover" style="/*background-color: rgba(255, 255, 255, 0.37);*/"></div>
@ -41,7 +64,38 @@
<div class="uk-container ">
<div class="uk-width-1-1">
<search-form [isDisabled]="disableForms" [(keyword)]="searchUtils.keyword" (keywordChange)="keywordChanged($event)" [placeholderText]="formPlaceholderText"></search-form>
<!-- <search-form [isDisabled]="disableForms" [(keyword)]="searchUtils.keyword" (keywordChange)="keywordChanged($event)" [placeholderText]="formPlaceholderText"></search-form>-->
<form class=" uk-margin uk-margin-top ">
<div class="uk-grid uk-margin-small-left">
<div *ngIf="enableEntitySelection" class="uk-margin-small-top uk-padding-remove-left">
<entities-selection [simpleView]="true" [currentEntity]="entityType"
[properties]="properties" [onChangeNavigate]="true" [customFilter]="customFilter"
></entities-selection>
</div>
<div class=" uk-padding-remove-left uk-margin-small-top" >
<div class="uk-inline">
<a *ngIf="searchUtils.keyword.length > 0" class="uk-form-icon uk-form-icon-flip"
(click)="searchUtils.keyword = ''; goTo(1);"
uk-icon="icon: close"></a>
<input type="text" class="uk-input uk-width-xlarge@l uk-width-large@m uk-width-medium"
placeholder="Search in OpenAIRE for scholarly works"
[(ngModel)]="searchUtils.keyword"
name="keyword">
</div>
</div>
<div class="uk-padding-remove-left uk-margin-small-top">
<button (click)="goTo(1)" type="submit"
class="uk-button portal-button uk-text-bold uk-padding uk-padding-remove-vertical uk-margin-small-left">
Search
</button>
</div>
</div>
</form>
</div>
@ -87,12 +141,13 @@
</div>
<div class="uk-grid uk-width-1-1 uk-margin-top">
<div class="uk-width-1-4@m search-filters uk-visible@m ">
<div *ngIf="filters.length > 0" class="uk-width-1-4@m search-filters uk-visible@m ">
<ng-container *ngTemplateOutlet="filters_column; context: {}" class=""></ng-container>
</div>
<div class="uk-width-expand@m uk-width-1-1@s uk-first-column custom-dataTable-content" >
<div *ngIf="openaireLink"> <a class="uk-margin-top uk-button uk-button-text" [href]=openaireLink target="_blank" >Results in OpenAIRE</a></div>
<div *ngIf="openaireLink"> <a class=" uk-button uk-button-text" [href]=openaireLink target="_blank"
>Results in OpenAIRE</a></div>
<div *ngIf="searchUtils.totalResults > 0" class="uk-align-center uk-margin-remove-bottom ">
<div class="uk-grid">
<div class="uk-width-expand@m uk-grid uk-grid-medium uk-margin-small-bottom">
@ -109,14 +164,7 @@
</span>
</div>
</div>
<div class="searchPaging uk-panel uk-margin-top uk-margin-bottom uk-grid">
<span class="uk-width-1-1@s uk-width-1-2@m">
{{searchUtils.totalResults | number}} {{type}}, page {{searchUtils.page | number}} of {{(totalPages()) | number}}
</span>
<span class="float-children-right-at-medium margin-small-top-at-small uk-width-1-1@s uk-width-1-2@m">
<paging-no-load [currentPage]="searchUtils.page" [totalResults]="searchUtils.totalResults" [size]="searchUtils.size" (pageChange)="goTo($event.value, false)"></paging-no-load>
</span>
</div>
<ng-container *ngTemplateOutlet="paging; context: {}"></ng-container>
</div>
<!-- <div *ngIf="searchViewLink" class="uk-width-1-1@s uk-hidden@m">
@ -220,19 +268,8 @@
</div>
<div *ngIf="searchUtils.totalResults > 0" class="uk-align-center uk-margin-remove-bottom">
<div class="uk-margin-top uk-margin-bottom">
<search-results-per-page class="uk-width-1-1" [(size)]="searchUtils.size" (sizeChange)="sizeChanged($event)"></search-results-per-page>
</div>
<div class="searchPaging uk-panel uk-margin-top uk-grid">
<span class="uk-width-1-1@s uk-width-1-2@m">
{{searchUtils.totalResults | number}} {{type}}, page {{searchUtils.page | number}} of {{(totalPages()) | number}}
</span>
<span class="float-children-right-at-medium margin-small-top-at-small uk-width-1-1@s uk-width-1-2@m">
<paging-no-load [currentPage]="searchUtils.page" [totalResults]="searchUtils.totalResults" [size]="searchUtils.size" (pageChange)="goTo($event.value, false)"></paging-no-load>
</span>
</div>
<ng-container *ngTemplateOutlet="paging; context: {}"></ng-container>
</div>
<a *ngIf="properties.showLastIndexInformationLink" class="last_index_info uk-button-text"
[href]="properties.lastIndexInformationLink" target="_blank">
Last index information

View File

@ -1,28 +1,21 @@
import {Component, Input} from '@angular/core';
import {ViewChild, Output} from '@angular/core';
import {EventEmitter, ViewEncapsulation} from '@angular/core';
import {ViewChild} from '@angular/core';
import {ViewEncapsulation} from '@angular/core';
import {OnInit, AfterViewInit} from '@angular/core';
import {Location} from '@angular/common';
import {ActivatedRoute, Router} from '@angular/router';
import {Title, Meta} from '@angular/platform-browser';
import {Observable, Subject} from 'rxjs';
import {Subject} from 'rxjs';
import {DataTableDirective } from 'angular-datatables';
import {EnvProperties} from '../../utils/properties/env-properties';
import {Filter, Value} from './searchHelperClasses.class';
import {SearchResult} from '../../utils/entities/searchResult';
import {SearchFields, FieldDetails} from '../../utils/properties/searchFields';
import {SearchFields} from '../../utils/properties/searchFields';
import {SearchCustomFilter, SearchUtilsClass} from './searchUtils.class';
import {DOI, StringUtils} from '../../utils/string-utils.class';
import {StringUtils} from '../../utils/string-utils.class';
import {ModalLoading} from '../../utils/modal/loading.component';
import {SearchFilterComponent} from './searchFilter.component';
import {SearchFilterModalComponent} from './searchFilterModal.component';
import {ErrorCodes} from '../../utils/properties/errorCodes';
import {PiwikService} from '../../utils/piwik/piwik.service';
//import {SearchDataprovidersService} from '../../services/searchDataproviders.service';
import { SEOService } from '../../sharedComponents/SEO/SEO.service';
import {HelperService} from "../../utils/helper/helper.service";
@ -83,6 +76,7 @@ export class SearchPageTableViewComponent implements OnInit, AfterViewInit {
url = null;
public pageContents = null;
@Input() customFilter: SearchCustomFilter = null;
@Input() enableEntitySelection: boolean = false;
constructor (private route: ActivatedRoute,
private router: Router,
private location: Location,
@ -284,7 +278,6 @@ public getParametersFromUrl(params) {
}
this.filters[i].countSelectedValues = 0;
}
this.clearKeywords();
}
private removeFilter(value:Value,filter:Filter){

View File

@ -24,14 +24,16 @@ import {ErrorMessagesModule} from '../../utils/errorMessages.module';
import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2jsonld.module';
import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
import { SearchDataproviderMapModule } from './searchDataproviderMap.module';
import {AdvancedSearchFormModule} from "./advancedSearchForm.module";
import {EntitiesSelectionModule} from "./entitiesSelection.module";
@NgModule({
imports: [
CommonModule, FormsModule,RouterModule, SearchFormModule, SearchResultsModule, LoadingModalModule,
CommonModule, FormsModule, RouterModule, SearchFormModule, SearchResultsModule, LoadingModalModule,
ReportsServiceModule, SearchPagingModule, SearchDownloadModule, ModalModule, PagingModule,
DataTablesModule, SearchFilterModule, PiwikServiceModule, HelperModule, ErrorMessagesModule,
Schema2jsonldModule, SEOServiceModule, SearchResultsPerPageModule, SearchDataproviderMapModule
Schema2jsonldModule, SEOServiceModule, SearchResultsPerPageModule, SearchDataproviderMapModule, AdvancedSearchFormModule, EntitiesSelectionModule
],
declarations: [
SearchPageTableViewComponent

View File

@ -29,6 +29,18 @@ export class RouterHelper {
return obj;
}
public createQueryParamsString(keys:string[],values:string[]){
let obj ="?";
if(!keys || !values || keys.length != values.length){
return "";
}else{
for(let i=0; i< keys.length; i++){
obj+=(i==0?"":"&")+keys[i]+"="+values[i];
}
}
return obj;
}
}