1 import {Component, OnInit} from '@angular/core';
2 import {CatalogService} from '@eg/share/catalog/catalog.service';
3 import {CatalogUrlService} from '@eg/share/catalog/catalog-url.service';
4 import {CatalogSearchContext, FacetFilter} from '@eg/share/catalog/search-context';
5 import {StaffCatalogService} from '../catalog.service';
7 export const FACET_CONFIG = {
9 {facetClass : 'author', facetOrder : ['personal', 'corporate']},
10 {facetClass : 'subject', facetOrder : ['topic']},
11 {facetClass : 'identifier', facetOrder : ['genre']},
12 {facetClass : 'series', facetOrder : ['seriestitle']},
13 {facetClass : 'subject', facetOrder : ['name', 'geographic']}
18 selector: 'eg-catalog-result-facets',
19 templateUrl: 'facets.component.html',
20 styleUrls: ['./facets.component.css']
22 export class ResultFacetsComponent implements OnInit {
24 searchContext: CatalogSearchContext;
26 displayFullFacets: string[] = [];
29 private cat: CatalogService,
30 private catUrl: CatalogUrlService,
31 private staffCat: StaffCatalogService
33 this.facetConfig = FACET_CONFIG;
37 this.searchContext = this.staffCat.searchContext;
40 facetIsApplied(cls: string, name: string, value: string): boolean {
41 return this.searchContext.termSearch.hasFacet(new FacetFilter(cls, name, value));
44 getFacetUrlParams(cls: string, name: string, value: string): any {
45 const context = this.staffCat.cloneContext(this.searchContext);
46 context.termSearch.toggleFacet(new FacetFilter(cls, name, value));
47 context.pager.offset = 0;
48 return this.catUrl.toUrlParams(context);
51 // Build a list of the facet class+names that should be expanded to show all options.
52 // More than one facet may be expanded
53 facetToggle(name: string, fClass: string) {
54 const index = this.displayFullFacets.indexOf(fClass+'-'+name);
55 // eslint-disable-next-line eqeqeq
56 if ( index == -1 ) { // not found
57 this.displayFullFacets.push(fClass+'-'+name);
59 this.displayFullFacets.splice(index, 1);