Skip to content

Commit 35ad827

Browse files
committed
Make results slider dynamic and other things
1 parent 8fe1500 commit 35ad827

File tree

4 files changed

+57
-42
lines changed

4 files changed

+57
-42
lines changed

src/components/LocatorContainer.js

+21-1
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,37 @@ import { connect } from 'react-redux';
99
import { bindActionCreators } from 'redux';
1010
import * as actions from '../actions/actions';
1111

12+
function formatStoreType(type) {
13+
switch (type) {
14+
case 'DestinationStore':
15+
return 'Destination Store';
16+
case 'LocalSkyStore':
17+
return 'Local Sky Store';
18+
default:
19+
// return a sane default if the type isn't recognised
20+
return 'Local Sky Store';
21+
}
22+
}
23+
1224
class LocatorContainer extends Component {
1325
render() {
1426
const markers = this.props.storesFound.map((store) => {
1527
return [parseFloat(store.Latitude), parseFloat(store.Longitude)]
1628
})
1729

30+
const resultInfos = this.props.storesFound.map((store) => {
31+
return Object.assign({}, store, {
32+
_TypeFormatted: formatStoreType(store.Type)
33+
})
34+
})
35+
36+
console.log("resultInfos", resultInfos)
37+
1838
return (
1939
<div>
2040
<MapSearch onSearchPostcode={this.props.actions.fetchStores} />
2141
<button className="btn btn-secondary btn-block mb-4 hidden-sm-up">View Map</button>
22-
<Results />
42+
{resultInfos.length > 0 ? <Results resultInfos={resultInfos} /> : 'No results'}
2343
<MyMap markers={markers} />
2444
</div>
2545
);

src/components/Result.css

+3-25
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,8 @@
1-
.results {
2-
/*margin: 0;
3-
padding: 0;
4-
list-style-type: none;*/
5-
/*overflow-y: scroll;*/
6-
}
7-
8-
.result {
1+
.result-wrapper {
92
margin-bottom: 1rem;
103
padding: 0.6rem;
114
}
125

13-
.result-inner {
14-
box-shadow: 0 1px 10px 0 rgba(0,0,0,.2);
15-
padding: 1.2rem;
16-
}
17-
18-
.result h1 {
19-
margin-bottom: 1rem;
20-
}
21-
22-
.result .distance {
23-
margin-bottom: 0.5rem;
24-
}
25-
26-
.result .address,
27-
.result .telephone
28-
{
29-
color: #999;
6+
.result {
7+
min-height: 270px;
308
}

src/components/Result.js

+23-7
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,37 @@
11
import React, { Component } from 'react';
22
import './Result.css';
3+
import PropTypes from 'prop-types';
34

45
class Result extends Component {
56
render() {
7+
const { resultInfo: data } = this.props;
68
return (
7-
<div {...this.props}>
8-
<div className="result">
9-
<div className="result-inner">
10-
<h1 className="h3">Leeds</h1>
11-
<div className="distance">0.2 Miles / 0.4 Km</div>
12-
<div className="address">123 Leeds Rd, Leeds, LS1 62Q</div>
13-
<div className="telephone">0113 123 1234</div>
9+
<div className="result-wrapper">
10+
<div className="card result">
11+
<div className="card-block">
12+
<h4 className="card-title">{ data.StoreName }</h4>
13+
<h6 className="card-subtitle mb-3 text-muted">{ data._TypeFormatted }</h6>
14+
<p className="card-text">
15+
{ data.Address1 }<br/>
16+
{ data.Address2 &&
17+
<span>
18+
{data.Address2}<br/>
19+
</span>
20+
}
21+
{ data.City }<br/>
22+
{ data.Postcode }<br/>
23+
{ data.Telephone }
24+
</p>
25+
<a target="_blank" href={ data.MapUrl } className="card-link">Directions</a>
1426
</div>
1527
</div>
1628
</div>
1729
);
1830
}
1931
}
2032

33+
Result.propTypes = {
34+
resultInfo: PropTypes.object.isRequired
35+
};
36+
2137
export default Result;

src/components/Results.js

+10-9
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import React, { Component } from 'react';
22
import './Results.css';
33
import Slider from 'react-slick';
4+
import PropTypes from 'prop-types';
45

56
import Result from './Result';
67

7-
class Sidebar extends Component {
8+
class Results extends Component {
89
render() {
910
const settings = {
1011
dots: true,
@@ -35,16 +36,16 @@ class Sidebar extends Component {
3536

3637
return (
3738
<Slider {...settings}>
38-
<Result />
39-
<Result />
40-
<Result />
41-
<Result />
42-
<Result />
43-
<Result />
44-
<Result />
39+
{this.props.resultInfos.map((resultInfo, idx) =>
40+
<div key={`result-${idx}`}><Result resultInfo={resultInfo} /></div>
41+
)}
4542
</Slider>
4643
);
4744
}
4845
}
4946

50-
export default Sidebar;
47+
Results.propTypes = {
48+
resultInfos: PropTypes.array.isRequired
49+
};
50+
51+
export default Results;

0 commit comments

Comments
 (0)