import * as React from 'react'; import * as _ from 'lodash'; import Lightbox from 'react-image-lightbox'; import { SingleNumber, Bound, databind, ExcelExport, Pagination, ResultsList, SearchBox, CheckFacet, ResultsLayout, PaginationData, SelectedFilters, HistogramFacet, CountryFacet, ColorPickerFacet } from 'solrkit'; import { AppDataStore } from './data/AppDataStore'; function title(facet: string) { return facet.substring(0, 1).toUpperCase() + facet .split('_')[0] .replace('AsString', '') .substring(1) .replace( /([A-Z])/g, ' $1' ); } class SearchPageApp extends React.Component<{}, {loaded: boolean, lightboxOpen: boolean, photoIndex: number}> { private left: () => JSX.Element; private right: () => JSX.Element; private header: () => JSX.Element; private footer: () => JSX.Element; private rightRail: () => JSX.Element; private dataStore: AppDataStore; constructor() { super(); this.state = { loaded: false, lightboxOpen: false, photoIndex: 0 }; } componentWillMount() { const self = this; const dataStore = new AppDataStore(); this.dataStore = this.dataStore; dataStore.init( () => { const core = dataStore.getCore(); const facets = [( { return ; } } /> ), ( { return ; } } /> )].concat( dataStore.getFacets().map( (facet, idx) => ( { if (facet === 'location_s') { return ; } if (facet === 'yearAsString_s') { return ( ); } return ( ); } } /> ) ) ); this.left = () => (
{facets}

Options

Export to Excel
); const databindQuery = (fn: ((docs: Document[], pagination: PaginationData) => JSX.Element)) => databind( dataStore.getCore().onQuery, dataStore.getCore(), fn); this.right = databindQuery( (docs: Document[], pagination: PaginationData) => { return (
{self.state.lightboxOpen && self.setState({ lightboxOpen: false })} onMovePrevRequest={() => this.setState({ photoIndex: (self.state.photoIndex + docs.length - 1) % docs.length, })} onMoveNextRequest={() => this.setState({ photoIndex: (self.state.photoIndex + 1) % docs.length, })} /> } this.setState({ lightboxOpen: true, photoIndex: index })} />
} />
); } ); this.header = databindQuery( (docs: Document[], pagination: PaginationData) => (
) ); this.footer = databindQuery( (documents: Document[], pagination: PaginationData) => ( ) ); dataStore.getCore().doQuery({query: '*'}); this.setState({ loaded: true }); }); } render() { if (!this.state.loaded) { return null; } return ( ); } } export { SearchPageApp };