diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2020-09-30 18:48:54 +0200 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2020-09-30 18:48:54 +0200 |
| commit | 9dba744407f61a56efb8e63bbfa50ade6e847acf (patch) | |
| tree | e3953fcceafa010bdc7a4df353c74fe571c9c13d /animism-align/frontend/app/views/venue/containers | |
| parent | 58b47df64f1ec0444a45892c1db2ca195ec93deb (diff) | |
update episodes table form. add venues table and CRUD
Diffstat (limited to 'animism-align/frontend/app/views/venue/containers')
3 files changed, 185 insertions, 0 deletions
diff --git a/animism-align/frontend/app/views/venue/containers/venue.edit.js b/animism-align/frontend/app/views/venue/containers/venue.edit.js new file mode 100644 index 0000000..4d55c6e --- /dev/null +++ b/animism-align/frontend/app/views/venue/containers/venue.edit.js @@ -0,0 +1,52 @@ +import React, { Component } from 'react' +import { connect } from 'react-redux' + +import { history } from 'app/store' +import actions from 'app/actions' + +import { Loader } from 'app/common' + +import VenueForm from '../components/venue.form' +import VenueMenu from '../components/venue.menu' + +class VenueEdit extends Component { + componentDidMount() { + console.log(this.props.match.params.id) + actions.venue.show(this.props.match.params.id) + } + + handleSubmit(data) { + actions.venue.update(data) + .then(response => { + // response + console.log(response) + history.push('/venue/') + }) + } + + render() { + const { show } = this.props.venue + if (show.loading || !show.res) { + return ( + <div className='form'> + <Loader /> + </div> + ) + } + return ( + <div className='row formContainer'> + <VenueMenu /> + <VenueForm + data={show.res} + onSubmit={this.handleSubmit.bind(this)} + /> + </div> + ) + } +} + +const mapStateToProps = state => ({ + venue: state.venue, +}) + +export default connect(mapStateToProps)(VenueEdit) diff --git a/animism-align/frontend/app/views/venue/containers/venue.index.js b/animism-align/frontend/app/views/venue/containers/venue.index.js new file mode 100644 index 0000000..66f7eb1 --- /dev/null +++ b/animism-align/frontend/app/views/venue/containers/venue.index.js @@ -0,0 +1,71 @@ +import React, { Component } from 'react' +import { Link } from 'react-router-dom' +import { connect } from 'react-redux' + +import { Loader } from 'app/common' +import actions from 'app/actions' + +import VenueMenu from '../components/venue.menu' + +// const { result, collectionLookup } = this.props + +class VenueIndex extends Component { + componentDidMount() { + this.fetch() + } + + fetch() { + actions.venue.index() + } + + render() { + const { loading, lookup, order } = this.props.venue.index + if (loading) { + return ( + <section> + <Loader /> + </section> + ) + } + if (!lookup || !order.length) { + return ( + <section> + <div className="row venue-index"> + <VenueMenu /> + <div> + <h1>Venues</h1> + <p className='gray'> + {"No venues"} + </p> + </div> + </div> + </section> + ) + } + return ( + <section> + <div className="row venue-index"> + <VenueMenu /> + <div className="venue-list"> + <h1>Venues</h1> + {order.map(id => ( + <div key={id}> + <Link to={"/venue/" + id + "/edit/"}> + lookup[id].title + </Link> + lookup[id].date + </div> + ))} + </div> + </div> + {order.length >= 50 && <button className='loadMore' onClick={() => this.fetch(true)}>Load More</button>} + </section> + ) + } +} + +const mapStateToProps = state => ({ + venue: state.venue, +}) + +export default connect(mapStateToProps)(VenueIndex) diff --git a/animism-align/frontend/app/views/venue/containers/venue.new.js b/animism-align/frontend/app/views/venue/containers/venue.new.js new file mode 100644 index 0000000..9f7fe05 --- /dev/null +++ b/animism-align/frontend/app/views/venue/containers/venue.new.js @@ -0,0 +1,62 @@ +import React, { Component } from 'react' +import { Link } from 'react-router-dom' +import { connect } from 'react-redux' + +import { history } from 'app/store' +import actions from 'app/actions' + +import VenueForm from '../components/venue.form' +import VenueMenu from '../components/venue.menu' + +class VenueNew extends Component { + state = { + loading: true, + initialData: {}, + } + + componentDidMount() { + this.setState({ loading: false }) + } + + handleSubmit(data) { + console.log(data) + actions.venue.create(data) + .then(res => { + console.log(res) + if (res.res && res.res.id) { + history.push('/venue/') + } + }) + .catch(err => { + console.error('error') + }) + } + + render() { + if (this.state.loading) { + return ( + <div className='row formContainer' /> + ) + } + return ( + <div className='row formContainer'> + <VenueMenu /> + <VenueForm + isNew + data={this.state.initialData} + onSubmit={this.handleSubmit.bind(this)} + /> + </div> + ) + } +} + +const mapStateToProps = state => ({ + venue: state.venue, +}) + +const mapDispatchToProps = dispatch => ({ + // uploadActions: bindActionCreators({ ...uploadActions }, dispatch), +}) + +export default connect(mapStateToProps, mapDispatchToProps)(VenueNew) |
