Skip to content

Commit

Permalink
New filters: publicationType, international, articleType, jufo
Browse files Browse the repository at this point in the history
  • Loading branch information
ommann committed Nov 22, 2023
1 parent 0065683 commit 12679ae
Show file tree
Hide file tree
Showing 4 changed files with 619 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,94 @@ <h2>Julkaisut - {{total$ | async}}</h2>
</ng-container>
</div>

<!-- TODO DELETE -->
<div style='margin: 1rem'></div>

<div style='background-color: blueviolet'>
<h1>Peer Reviewed</h1>

<div style='white-space: pre'>
{{peerReviewedAdditions$ | async | json}}
</div>
</div>

<!-- TODO DELETE -->
<div style='margin: 1rem'></div>

<div style='background-color: palevioletred'>
<div style='white-space: pre'>
<!--{{parentPublicationTypeNames$ | async | json}}-->
<!--{{parentPublicationTypeAdditions$ | async | json}}-->
<!--{{parentPublicationTypeFilters$ | async | json}}-->

<ng-container *ngFor='let parentPublicationTypeFilter of parentPublicationTypeFilters$ | async'>
<app-filter-option [label]='parentPublicationTypeFilter.name'
[count]='parentPublicationTypeFilter.count'
[value]='parentPublicationTypeFilter.enabled'
(valueChange)='toggleParam("parentPublicationType", parentPublicationTypeFilter.id)'>
</app-filter-option>
</ng-container>
</div>
</div>

<!-- TODO DELETE -->
<div style='margin: 1rem'></div>

<div style='background-color: lightgreen'>
<div style='white-space: pre'>
<h1>International Publication</h1>
<!--{{internationalPublicationNames$ | async | json}}-->
<!--{{internationalPublicationAdditions$ | async | json}}-->
<!--{{internationalPublicationFilters$ | async | json}}-->

<ng-container *ngFor='let internationalPublicationFilter of internationalPublicationFilters$ | async'>
<app-filter-option [label]='internationalPublicationFilter.name'
[count]='internationalPublicationFilter.count'
[value]='internationalPublicationFilter.enabled'
(valueChange)='toggleParam("international", internationalPublicationFilter.id)'>
</app-filter-option>
</ng-container>
</div>
</div>

<!-- TODO DELETE -->
<div style='margin: 1rem'></div>

<div style='background-color: aliceblue'>
<div style='white-space: pre'>
<h1>Article Type</h1>

<!--{{articleTypeCodeNames$ | async | json}}-->
<!--{{articleTypeCodeAdditions$ | async | json}}-->

<ng-container *ngFor='let articleTypeCodeFilter of articleTypeCodeFilters$ | async'>
<app-filter-option [label]='articleTypeCodeFilter.name'
[count]='articleTypeCodeFilter.count'
[value]='articleTypeCodeFilter.enabled'
(valueChange)='toggleParam("articleType", articleTypeCodeFilter.id)'>
</app-filter-option>
</ng-container>
</div>
</div>

<!-- TODO DELETE -->
<div style='margin: 1rem'></div>

<div style='background-color: orangered'>
<h1>Jufo</h1>

<!--<div style='white-space: pre'>
{{jufoClassCodeAdditions$ | async | json}}
</div>-->

<ng-container *ngFor='let jufoClassCodeFilter of jufoClassCodeFilters$ | async'>
<app-filter-option [label]='jufoClassCodeFilter.id'
[count]='jufoClassCodeFilter.count'
[value]='jufoClassCodeFilter.enabled'
(valueChange)='toggleParam("jufo", jufoClassCodeFilter.id)'>
</app-filter-option>
</ng-container>
</div>
</div>
</div>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,19 @@ import { ActivatedRoute, Router } from '@angular/router';
import { FormsModule } from '@angular/forms';
import { AsyncPipe, JsonPipe, NgForOf, NgIf } from '@angular/common';
import {
getArticleTypeCodeAdditions,
getInternationalPublicationAdditions, getJufoClassCodeAdditions,
getLanguageCodeAdditions,
getOrganizationAdditions, getPublicationAudienceAdditions, getPublicationFormatAdditions,
getOrganizationAdditions,
getParentPublicationTypeAdditions,
getPeerReviewedAdditions,
getPublicationAudienceAdditions,
getPublicationFormatAdditions,
getYearAdditions,
HighlightedPublication,
Publication2Service
} from '@portal/services/publication2.service';
import { map, take } from 'rxjs/operators';
import { map, take, tap } from 'rxjs/operators';
import { SharedModule } from '@shared/shared.module';
import { SearchBar2Component } from '@portal/search-bar2/search-bar2.component';
import { NgArrayPipesModule } from 'ngx-pipes';
Expand Down Expand Up @@ -122,6 +128,86 @@ export class Publications2Component implements OnDestroy {
})))
);

peerReviewedAdditions$ = this.aggregations$.pipe(
map(aggs => getPeerReviewedAdditions(aggs).map((bucket: any) => ({ id: bucket.key, count: bucket.doc_count })) ?? []),
map(aggs => aggs.sort((a, b) => b.count - a.count))
);

// getParentPublicationTypeAdditions
// getInternationalPublicationAdditions
// getArticleTypeCodeAdditions
// getJufoClassCodeAdditions

parentPublicationTypeAdditions$ = this.aggregations$.pipe(
map(aggs => getParentPublicationTypeAdditions(aggs).map((bucket: any) => ({ id: bucket.key, count: bucket.doc_count })) ?? []),
map(aggs => aggs.sort((a, b) => b.count - a.count))
);

internationalPublicationAdditions$ = this.aggregations$.pipe(
map(aggs => getInternationalPublicationAdditions(aggs).map((bucket: any) => ({ id: bucket.key.toString(), count: bucket.doc_count })) ?? []),
map(aggs => aggs.sort((a, b) => b.count - a.count))
);

internationalPublicationNames$ = this.publications2Service.getInternationalPublicationNames();

internationalPublicationFilters$ = combineLatest([this.internationalPublicationAdditions$, this.internationalPublicationNames$, this.searchParams$.pipe(map(params => params.international ?? []))]).pipe(
map(([internationalPublicationAdditions, internationalPublicationNames, enabledFilters]) => internationalPublicationAdditions.map(internationalPublicationAddition => ({
id: internationalPublicationAddition.id,
count: internationalPublicationAddition.count,
name: internationalPublicationNames[internationalPublicationAddition.id],
enabled: enabledFilters.includes(internationalPublicationAddition.id)
})))
);

articleTypeCodeAdditions$ = this.aggregations$.pipe(
map(aggs => getArticleTypeCodeAdditions(aggs).map((bucket: any) => ({ id: bucket.key.toString(), count: bucket.doc_count })) ?? []),
map(aggs => aggs.sort((a, b) => b.count - a.count))
);

articleTypeCodeNames$ = this.publications2Service.getArticleTypeCodeNames();

articleTypeCodeFilters$ = combineLatest([this.articleTypeCodeAdditions$, this.articleTypeCodeNames$, this.searchParams$.pipe(map(params => params.articleType ?? []))]).pipe(
map(([articleTypeCodeAdditions, articleTypeCodeNames, enabledFilters]) => articleTypeCodeAdditions.map(articleTypeCodeAddition => ({
id: articleTypeCodeAddition.id,
count: articleTypeCodeAddition.count,
name: articleTypeCodeNames[articleTypeCodeAddition.id],
enabled: enabledFilters.includes(articleTypeCodeAddition.id)
})))
);

jufoClassCodeAdditions$ = this.aggregations$.pipe(
map(aggs => getJufoClassCodeAdditions(aggs).map((bucket: any) => ({ id: bucket.key.toString(), count: bucket.doc_count })) ?? []),
map(aggs => aggs.sort((a, b) => b.count - a.count))
);

jufoClassCodeFilters$ = combineLatest([this.jufoClassCodeAdditions$, this.searchParams$.pipe(map(params => params.jufo ?? []))]).pipe(
map(([jufoClassCodeAdditions, enabledFilters]) => jufoClassCodeAdditions.map(jufoClassCodeAddition => ({
id: jufoClassCodeAddition.id,
count: jufoClassCodeAddition.count,
name: jufoClassCodeAddition.id,
enabled: enabledFilters.includes(jufoClassCodeAddition.id)
})))
);

// getParentPublicationTypeNames
// getInternationalPublicationNames
// getArticleTypeCodeNames

parentPublicationTypeNames$ = this.publications2Service.getParentPublicationTypeNames();

// TODO these give just ids and not names
// internationalPublicationNames$ = this.publications2Service.getInternationalPublicationNames();
// articleTypeCodeNames$ = this.publications2Service.getArticleTypeCodeNames();

parentPublicationTypeFilters$ = combineLatest([this.parentPublicationTypeAdditions$, this.parentPublicationTypeNames$, this.searchParams$.pipe(map(params => params.parentPublicationType ?? []))]).pipe(
map(([parentPublicationTypeAdditions, parentPublicationTypeNames, enabledFilters]) => parentPublicationTypeAdditions.map(parentPublicationTypeAddition => ({
id: parentPublicationTypeAddition.id,
count: parentPublicationTypeAddition.count,
name: parentPublicationTypeNames[parentPublicationTypeAddition.id],
enabled: enabledFilters.includes(parentPublicationTypeAddition.id)
})))
);

/* TODO localization solution */
public sectorName = {
1: "Yliopisto",
Expand Down
Loading

0 comments on commit 12679ae

Please sign in to comment.