1 | import { SearchParams, SolrCore, DataStore } from './DataStore';
|
2 | import * as _ from 'lodash';
|
3 |
|
4 | interface PageParams {
|
5 | page: string;
|
6 | query: string;
|
7 | facets: { [ key: string ]: string[] };
|
8 | }
|
9 |
|
10 | function namespace(params: SearchParams, core: SolrCore<{}>, ns: string): [SolrCore<{}>, SearchParams] {
|
11 | const result: [SolrCore<{}>, SearchParams] = [core, {
|
12 |
|
13 | type: 'QUERY',
|
14 | query: params.query,
|
15 | start: params.start
|
16 | }];
|
17 |
|
18 | return result;
|
19 | }
|
20 |
|
21 | function fixParams(params: PageParams): SearchParams {
|
22 | return {
|
23 | type: 'QUERY',
|
24 | query: params.query,
|
25 | start: (parseInt(params.page || '1', 50) - 1) * 50
|
26 | };
|
27 | }
|
28 |
|
29 | function initializePage(dataStore: DataStore, params: PageParams) {
|
30 | return _.map(
|
31 | dataStore.cores,
|
32 | (core, i) => namespace(fixParams(params), core, 'glass')
|
33 | ).map(
|
34 | (thisCore: [SolrCore<object>, SearchParams]) =>
|
35 | thisCore[0].stateTransition(thisCore[1])
|
36 | );
|
37 | }
|
38 |
|
39 | export {
|
40 | PageParams,
|
41 | initializePage
|
42 | };
|