Skip to content

Commit 9ac1aec

Browse files
committed
set method post (configure post actions in redux), communicate this action with server
1 parent ae4b5de commit 9ac1aec

File tree

19 files changed

+534
-34
lines changed

19 files changed

+534
-34
lines changed

client/package-lock.json

Lines changed: 164 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

client/package.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,21 @@
99
"json-server": "^0.14.0",
1010
"react": "^16.3.2",
1111
"react-dom": "^16.3.2",
12+
"react-redux": "^5.0.7",
1213
"react-router-dom": "^4.3.1",
1314
"react-scripts": "1.1.4",
1415
"reactstrap": "^6.3.1",
1516
"redux": "^4.0.0",
16-
"redux-thunk": "^2.3.0"
17+
"redux-thunk": "^2.3.0",
18+
"remote-redux-devtools": "^0.5.13"
1719
},
1820
"scripts": {
1921
"start": "react-scripts start",
2022
"build": "react-scripts build",
2123
"test": "react-scripts test --env=jsdom",
2224
"eject": "react-scripts eject"
25+
},
26+
"devDependencies": {
27+
"redux-devtools": "^3.4.1"
2328
}
2429
}

client/src/App.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class App extends Component {
3232
console.log(routes);
3333
return (<Router>
3434
<Container className="mainContainer">
35-
<header className="header">s
35+
<header className="header">
3636
<span className="headerText">Map Creator</span>
3737
</header>
3838
<nav className="nav"><NavBar/></nav>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import axios from 'axios';
2+
3+
export const postedMarkerRecord = (record) => ({
4+
type: 'POSTED_RECORD_SUCCESS',
5+
record
6+
})
7+
8+
export const postedMarkerError = (error) => ({
9+
type: 'POSTED_RECORD_ERROR',
10+
error
11+
})
12+
13+
export const postMarkerRecord = (record) => (dispatch) =>{
14+
dispatch({type: 'POSTING_RECORD'})
15+
axios.create({baseURL: 'http://localhost:8080'}).post('/markers', record)
16+
.then(res=>{
17+
console.log(res);
18+
dispatch(postedMarkerRecord(res.data));
19+
})
20+
.catch(error=>{
21+
dispatch(postedMarkerRecord(error));
22+
})
23+
}
Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import React, {Component} from 'react';
2+
import {postMarkerRecord} from '../../actions/postMarkerRecord';
3+
import {connect} from 'react-redux';
24
import {
35
Button,
46
Form,
@@ -10,32 +12,48 @@ import {
1012
import './markerCreator.css'
1113

1214
class MarkerCreator extends Component {
13-
constructor(props){
15+
constructor(props) {
1416
super(props);
1517
this.state = {
16-
selectedFile: null
18+
markerName: '',
19+
markerImage: ''
1720
}
1821

19-
this.fileSelectedHandler = this.fileSelectedHandler.bind(this);
22+
this.onChange = this.onChange.bind(this);
23+
this.sendRecord = this.sendRecord.bind(this);
2024
}
2125

22-
fileSelectedHandler(e){
23-
console.log(e.target.files[0]);
26+
onChange(event) {
27+
if (event.target.name === "markerName") {
28+
this.setState({markerName: event.target.value})
29+
} else {
30+
this.setState({markerImage: event.target.files[0]})
31+
}
32+
}
33+
34+
sendRecord(event) {
35+
event.preventDefault();
36+
const postMarkerRecord = this.props.postMarkerRecord;
37+
38+
const fd = new FormData();
39+
40+
fd.append('file', this.state.markerImage);
41+
fd.append('markerName', this.state.markerName);
42+
43+
postMarkerRecord(fd);
2444
}
2545

2646
render() {
2747
console.log(this.state);
2848
return (<div>
29-
<div className="markerImage">
30-
31-
</div>
32-
<Form>
49+
<div className="markerImage"></div>
50+
<Form onSubmit={this.sendRecord}>
3351
<FormGroup>
3452
<Label for="exampleText">Name</Label>
35-
<Input type="text" name="text" id="exampleText"/>
53+
<Input type="text" name="markerName" onChange={(e) => this.onChange(e)}/>
3654
</FormGroup>
3755
<FormGroup>
38-
<Input type="file" name="file" id="exampleFile" onChange={(e) => this.fileSelectedHandler(e)}/>
56+
<Input type="file" name="markerImage" onChange={(e) => this.onChange(e)}/>
3957
<FormText color="muted"></FormText>
4058
</FormGroup>
4159
<Button>Upload</Button>
@@ -44,4 +62,10 @@ class MarkerCreator extends Component {
4462
}
4563
}
4664

47-
export default MarkerCreator;
65+
const mapStateToProps = {}
66+
67+
const mapDispatchToProps = {
68+
postMarkerRecord
69+
}
70+
71+
export default connect(null, mapDispatchToProps)(MarkerCreator);

0 commit comments

Comments
 (0)