import {Injectable} from '@angular/core';
import {ParamMap} from '@angular/router';
import {OrgService} from '@eg/core/org.service';
-import {CatalogSearchContext, CatalogBrowseContext, CatalogMarcContext,
+import {CatalogSearchContext, CatalogBrowseContext, CatalogMarcContext,
CatalogTermContext, FacetFilter} from './search-context';
import {CATALOG_CCVM_FILTERS} from './search-context';
+import {HashParams} from '@eg/share/util/hash-params';
@Injectable()
export class CatalogUrlService {
params.joinOp = [];
params.matchOp = [];
- ['format', 'available', 'hasBrowseEntry', 'date1',
+ ['format', 'available', 'hasBrowseEntry', 'date1',
'date2', 'dateOp', 'groupByMetarecord', 'fromMetarecord']
.forEach(field => {
if (ts[field]) {
}));
});
}
-
+
if (ts.copyLocations.length && ts.copyLocations[0] !== '') {
params.copyLocations = ts.copyLocations.join(',');
}
}
+ if (context.cnBrowseSearch.isSearchable()) {
+ params.cnBrowseTerm = context.cnBrowseSearch.value;
+ params.cnBrowsePage = context.cnBrowseSearch.offset;
+ }
+
return params;
}
+ fromUrlHash(params: any): CatalogSearchContext {
+ return this.fromUrlParams(new HashParams(params));
+ }
+
/**
* Creates a new search context from the active route params.
*/
}
}
+ if (params.get('cnBrowseTerm')) {
+ context.cnBrowseSearch.value = params.get('cnBrowseTerm');
+ context.cnBrowseSearch.offset = Number(params.get('cnBrowsePage'));
+ }
+
const ts = context.termSearch;
// browseEntry and query searches may be facet-limited
} else if (params.has('query')) {
// Scalars
- ['format', 'available', 'date1', 'date2',
+ ['format', 'available', 'date1', 'date2',
'dateOp', 'groupByMetarecord', 'fromMetarecord']
.forEach(field => {
if (params.has(field)) {
['query', 'fieldClass', 'joinOp', 'matchOp'].forEach(field => {
const arr = params.getAll(field);
if (params.has(field)) {
- ts[field] = params.getAll(field);
+ ts[field] = params.getAll(field);
}
});
CATALOG_CCVM_FILTERS.forEach(code => {
- const val = params.get(code);
- if (val) {
- ts.ccvmFilters[code] = val.split(/,/);
+ const ccvmVal = params.get(code);
+ if (ccvmVal) {
+ ts.ccvmFilters[code] = ccvmVal.split(/,/);
} else {
ts.ccvmFilters[code] = [''];
}