LP1819745 Ang staff result page link repairs
[evergreen-equinox.git] / Open-ILS / src / eg2 / src / app / share / catalog / catalog-url.service.ts
index 0f07070..91922d4 100644 (file)
@@ -1,9 +1,10 @@
 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 {
@@ -80,7 +81,7 @@ export class CatalogUrlService {
             params.joinOp = [];
             params.matchOp = [];
 
-            ['format', 'available', 'hasBrowseEntry', 'date1', 
+            ['format', 'available', 'hasBrowseEntry', 'date1',
                 'date2', 'dateOp', 'groupByMetarecord', 'fromMetarecord']
             .forEach(field => {
                 if (ts[field]) {
@@ -116,15 +117,24 @@ export class CatalogUrlService {
                     }));
                 });
             }
-        
+
             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.
      */
@@ -185,6 +195,11 @@ export class CatalogUrlService {
             }
         }
 
+        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
@@ -200,7 +215,7 @@ export class CatalogUrlService {
         } else if (params.has('query')) {
 
             // Scalars
-            ['format', 'available', 'date1', 'date2', 
+            ['format', 'available', 'date1', 'date2',
                 'dateOp', 'groupByMetarecord', 'fromMetarecord']
             .forEach(field => {
                 if (params.has(field)) {
@@ -212,14 +227,14 @@ export class CatalogUrlService {
             ['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] = [''];
                 }