Skip to content

Commit d2e765e

Browse files
Merge pull request #16 from highideas/develop
Prepare to release
2 parents 22e26a9 + 0badef4 commit d2e765e

34 files changed

+2475
-434
lines changed

app/App.js

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,32 @@
1-
import React from 'react';
2-
import ReactDOM from 'react-dom';
1+
import React from 'react'
2+
import ReactDOM from 'react-dom'
33
import { Router, Route, IndexRoute, hashHistory } from 'react-router'
44
import 'bulma/css/bulma.css'
55
import 'font-awesome-webpack'
66

7-
import iClientComponent from 'components/IClient/IClient';
8-
import HomeComponent from 'components/Home/Home';
9-
import ClientComponent from 'components/Client/Client';
10-
import AreaComponent from 'components/Area/Area';
7+
import iClientComponent from 'components/IClient/IClient'
8+
import HomeComponent from 'components/Home/Home'
9+
import AreaComponent from 'components/Area/Area'
10+
import ListClientComponent from 'components/Client/List/Client'
11+
import ProfileClientComponent from 'components/Client/Profile/Client'
12+
import SaveClientComponent from 'components/Client/Save/Client'
13+
import CreateVisitComponent from 'components/Visit/Create/Visit'
14+
import CreateAreaComponent from 'components/Area/Create/Area'
1115

1216
ReactDOM.render(
1317
<Router history={hashHistory} >
1418
<Route path="/" component={iClientComponent} >
1519
<IndexRoute component={HomeComponent} />
16-
<Route path="client" component={ClientComponent} />
17-
<Route path="area" component={AreaComponent} />
20+
<Route path="clients" component={ListClientComponent} />
21+
<Route path="client" component={ SaveClientComponent } />
22+
<Route path="client/:id/update" component={ SaveClientComponent } />
23+
<Route path="client/:id" component={ProfileClientComponent} />
24+
<Route path="areas" component={AreaComponent} />
25+
<Route path="area" component={CreateAreaComponent} />
26+
<Route path="visit/:clientId/" component={CreateVisitComponent} />
1827
<Route path="visit/:id" component={AreaComponent} />
1928
</Route>
2029
</Router>,
2130
document.getElementById('app')
2231
);
32+

app/components/Area/Area.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class Area extends React.Component
2727
areas: this.generate(response.data.visits)
2828
});
2929
}).catch((error) => {
30-
if (error.response) {
30+
if (typeof error.response.data.error !== 'undefined') {
3131
this.setState({error: error.response.data.error});
3232
}
3333
});
@@ -57,6 +57,19 @@ class Area extends React.Component
5757
}
5858
return (
5959
<div className="container hello">
60+
<div className="level header">
61+
<div className="level-left">
62+
<h2 className="title is-2">iClient</h2>
63+
</div>
64+
<div className="level-right">
65+
<Link to='/area' className="button is-info is-medium">
66+
<span className="icon">
67+
<i className="fa fa-plus"></i>
68+
</span>
69+
<span>New Area</span>
70+
</Link>
71+
</div>
72+
</div>
6073
{ this.state.areas }
6174
</div>
6275
);

app/components/Area/Create/Area.js

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
import React from 'react';
2+
import { Link, Router } from 'react-router'
3+
4+
import Error from 'components/Error/Error'
5+
import AreaSelect from 'components/Area/Select/Area'
6+
import ClientService from 'services/Client'
7+
import AreaService from 'services/Area'
8+
9+
class Area extends React.Component
10+
{
11+
constructor(props, context) {
12+
super(props, context);
13+
this.handleSubmit = this.handleSubmit.bind(this);
14+
this.state = {
15+
error : '',
16+
area : {}
17+
};
18+
}
19+
20+
handleSubmit(e) {
21+
e.preventDefault();
22+
23+
let form = e.target;
24+
let formData = {
25+
_id : this.refs.area.value,
26+
parent: form.querySelector('[name="parent"]').value
27+
};
28+
29+
this.setState({area: formData});
30+
31+
AreaService.save(formData).then((response) => {
32+
this.context.router.push("/clients");
33+
}).catch((error) => {
34+
35+
this.setState({error: 'Error trying create area'});
36+
37+
let responseValid = typeof error.response.data !== 'undefined';
38+
39+
if (responseValid && typeof error.response.data.error !== 'undefined') {
40+
this.setState({error: error.response.data.error});
41+
}
42+
});
43+
}
44+
45+
render() {
46+
if (this.state.error) {
47+
return (<Error error={this.state.error} />);
48+
}
49+
50+
return (
51+
<div className="container">
52+
<div className="columns is-vcentered">
53+
<div className="column is-4 is-offset-4">
54+
<h1 className="title">
55+
Create Area
56+
</h1>
57+
<form onSubmit={this.handleSubmit}>
58+
<div className="box">
59+
<label className="label">Area</label>
60+
<p className="control has-icon">
61+
<input
62+
ref='area'
63+
className="input"
64+
type="text"
65+
placeholder="Center"
66+
required="required"
67+
/>
68+
<i className="fa fa-map-marker" />
69+
</p>
70+
<label className="label">Parent</label>
71+
<AreaSelect
72+
select={ { name : 'parent' } }
73+
/>
74+
<hr />
75+
<p className="control">
76+
<button className="button is-primary">Save</button>
77+
<Link to='/clients' className="button">
78+
<span>Cancel</span>
79+
</Link>
80+
</p>
81+
</div>
82+
</form>
83+
</div>
84+
</div>
85+
</div>
86+
);
87+
}
88+
}
89+
90+
Area.contextTypes = {
91+
router: React.PropTypes.object.isRequired
92+
};
93+
94+
export default Area;
95+

app/components/Area/Select/Area.js

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import React from 'react';
2+
3+
import Error from 'components/Error/Error'
4+
import AreaService from 'services/Area'
5+
import styles from 'components/Area/Select/styles.css'
6+
7+
class Area extends React.Component
8+
{
9+
constructor(props, context) {
10+
super(props, context);
11+
this.state = {
12+
error : '',
13+
areas : null,
14+
};
15+
}
16+
17+
componentWillMount() {
18+
19+
AreaService.getAll().then((response) => {
20+
this.setState({areas: response.data.areas});
21+
}).catch((error) => {
22+
this.setState({error: 'Error Found: Trying get areas'});
23+
let isValidResponse = typeof error.response.data !== 'undefined';
24+
if (isValidResponse && typeof error.response.data.error !== 'undefined') {
25+
this.setState({error: error.response.data.error});
26+
}
27+
});
28+
}
29+
30+
render() {
31+
if (this.state.error) {
32+
return (<Error error={this.state.error} />);
33+
}
34+
if (!this.state.areas) {
35+
return <div>Loading...</div>;
36+
}
37+
38+
const select = Object.assign({}, this.props.select);
39+
40+
return (
41+
<p className="control has-icon">
42+
<span className="select">
43+
<select {...select} >
44+
{
45+
this.state.areas.map((area, key) => (
46+
<option value={ area._id } key={ key }>{ area._id}</option>
47+
))
48+
}
49+
</select>
50+
</span>
51+
<i className="fa fa-map-marker" aria-hidden="true" />
52+
</p>
53+
);
54+
}
55+
}
56+
57+
export default Area;
58+
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
span.select select {
2+
padding-left: 30px;
3+
}
4+

app/components/Client/Client.js

Lines changed: 0 additions & 66 deletions
This file was deleted.
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
import React from 'react';
2+
import { Link } from 'react-router'
3+
4+
import ClientService from 'services/Client'
5+
import Error from 'components/Error/Error'
6+
7+
class Client extends React.Component
8+
{
9+
constructor(props) {
10+
super(props);
11+
this.state = {
12+
clients : null,
13+
error : ''
14+
};
15+
this.getClients();
16+
}
17+
18+
getClients() {
19+
ClientService.getClients().then((response) => {
20+
this.setState({clients: response.data.clients});
21+
}).catch((error) => {
22+
this.setState({error: 'Error Found: Trying get client'});
23+
if (typeof error.response.data.error !== 'undefined') {
24+
this.setState({error: error.response.data.error});
25+
}
26+
});
27+
}
28+
29+
render() {
30+
if (this.state.error) {
31+
return (<Error error={this.state.error} />);
32+
}
33+
if (!this.state.clients) {
34+
return <div>Loading...</div>;
35+
}
36+
const clientList = this.state.clients.map((client, key) => {
37+
let line = ((key % 2) ? 'is-success' : 'is-info');
38+
return (
39+
<tr key={key}>
40+
<td>
41+
{ client.name }
42+
</td>
43+
<td>
44+
{ client.address } - { client.city }
45+
</td>
46+
<td className="is-icon">
47+
<Link to={ `/client/${client._id}` } >
48+
<i className="fa fa-address-card"></i>
49+
</Link>
50+
</td>
51+
52+
<td className="is-icon">
53+
<Link to={ `/visit/${client._id}/` } >
54+
<i className="fa fa-calendar-check-o"></i>
55+
</Link>
56+
</td>
57+
58+
</tr>
59+
);
60+
});
61+
62+
return (
63+
<section className="">
64+
<div className="container hello">
65+
<div className="level header">
66+
<div className="level-left">
67+
<h2 className="title is-2">iClient</h2>
68+
</div>
69+
<div className="level-right">
70+
<Link to='/client' className="button is-info is-medium">
71+
<span className="icon">
72+
<i className="fa fa-plus"></i>
73+
</span>
74+
<span>New Client</span>
75+
</Link>
76+
</div>
77+
</div>
78+
<table className="table">
79+
<tbody>
80+
{ clientList }
81+
</tbody>
82+
</table>
83+
</div>
84+
</section>
85+
);
86+
}
87+
}
88+
89+
export default Client;
90+

0 commit comments

Comments
 (0)