Skip to content

Commit 979b919

Browse files
committed
Facets
1 parent 9768f66 commit 979b919

File tree

11 files changed

+126
-7
lines changed

11 files changed

+126
-7
lines changed

src/App.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,19 @@ function buildSearchOptionsFromConfig(config) {
2828
return acc;
2929
}, undefined);
3030

31+
const facets = (config.facets || []).reduce((acc, n) => {
32+
acc = acc || {};
33+
acc[n] = {
34+
type: "value",
35+
size: 10
36+
};
37+
return acc;
38+
}, undefined);
39+
3140
return {
32-
search_fields: searchFields,
33-
result_fields: resultFields
41+
facets: facets,
42+
result_fields: resultFields,
43+
search_fields: searchFields
3444
};
3545
}
3646

src/app-search/AppSearchDriver.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import * as SwiftypeAppSearch from "swiftype-app-search-javascript";
66
export default class AppSearchDriver {
77
state = {
88
current: 1,
9+
facets: {},
910
results: [],
1011
size: 0,
1112
searchTerm: "",
@@ -63,6 +64,7 @@ export default class AppSearchDriver {
6364
.then(resultList => {
6465
this.setState({
6566
current: resultList.info.meta.page.current,
67+
facets: resultList.info.facets,
6668
results: resultList.results,
6769
size: resultList.info.meta.page.size,
6870
searchTerm: searchTerm,

src/app-search/AppSearchProvider.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,20 @@ class AppSearchProvider extends Component {
1717

1818
render() {
1919
const { children, driver } = this.props;
20-
const { current, results, size, searchTerm, totalResults } = this.state;
20+
const {
21+
current,
22+
facets,
23+
results,
24+
size,
25+
searchTerm,
26+
totalResults
27+
} = this.state;
2128

2229
return (
2330
<AppSearchContext.Provider
2431
value={{
2532
current: current,
33+
facets: facets,
2634
results: results,
2735
size: size,
2836
searchTerm: searchTerm,

src/components/Body.css

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,13 @@
22
min-height: 100px;
33
width: 100%;
44
padding: 10px 0;
5+
display: flex;
6+
}
7+
8+
.Body-left {
9+
width: 250px;
10+
margin-right: 10px;
11+
}
12+
.Body-right {
13+
flex: 1;
514
}

src/components/Body.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,22 @@ import React from "react";
22

33
import "./Body.css";
44

5+
import Facets from "../containers/Facets";
56
import Meta from "../containers/Meta";
67
import Paging from "../containers/Paging";
78
import Results from "../containers/Results";
89

910
export default function Body() {
1011
return (
1112
<div className="Body">
12-
<Meta />
13-
<Results />
14-
<Paging />
13+
<div className="Body-left">
14+
<Facets />
15+
</div>
16+
<div className="Body-right">
17+
<Meta />
18+
<Results />
19+
<Paging />
20+
</div>
1521
</div>
1622
);
1723
}

src/components/Facet.css

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
.Facet {
2+
min-height: 100px;
3+
padding: 10px;
4+
border: 1px solid darkgray;
5+
}
6+
7+
.Facet + .Facet {
8+
margin-top: 10px;
9+
}

src/components/Facet.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import React from "react";
2+
3+
import "./Facet.css";
4+
5+
function Facet({ name, options }) {
6+
return (
7+
<div className="Facet">
8+
<div className="Facet-title">{name}</div>
9+
<ul className="Facet-list">
10+
{options.map(option => (
11+
<div key={option.value}>
12+
{option.value} ({option.count})
13+
</div>
14+
))}
15+
</ul>
16+
</div>
17+
);
18+
}
19+
20+
export default Facet;

src/components/Facets.css

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.Facets {
2+
margin-top: 35px;
3+
}

src/components/Facets.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import PropTypes from "prop-types";
2+
import React from "react";
3+
4+
import "./Facets.css";
5+
6+
function Facets({ children }) {
7+
return <div className="Facets">{children}</div>;
8+
}
9+
10+
Facets.propTypes = {
11+
children: PropTypes.arrayOf(PropTypes.element).isRequired
12+
};
13+
14+
export default Facets;

src/config/engine.json.example

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@
88
"someField",
99
"created"
1010
],
11-
"titleField": "title"
11+
"titleField": "title",
12+
"facets": ["anotherField", "someField"]
1213
}

0 commit comments

Comments
 (0)