summaryrefslogtreecommitdiff
path: root/frontend/views/index
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/views/index')
-rw-r--r--frontend/views/index/components/graph.form.js153
-rw-r--r--frontend/views/index/containers/graph.edit.js53
-rw-r--r--frontend/views/index/containers/graph.index.js53
-rw-r--r--frontend/views/index/containers/graph.new.js44
-rw-r--r--frontend/views/index/index.container.js36
-rw-r--r--frontend/views/index/index.css38
6 files changed, 0 insertions, 377 deletions
diff --git a/frontend/views/index/components/graph.form.js b/frontend/views/index/components/graph.form.js
deleted file mode 100644
index d90b663..0000000
--- a/frontend/views/index/components/graph.form.js
+++ /dev/null
@@ -1,153 +0,0 @@
-import React, { Component } from 'react'
-import { Link } from 'react-router-dom'
-
-import { session } from '../../../session'
-
-import { TextInput, LabelDescription, TextArea, Checkbox, SubmitButton, Loader } from '../../../common'
-
-const newGraph = () => ({
- path: '',
- title: '',
- username: session('username'),
- description: '',
-})
-
-export default class GraphForm extends Component {
- state = {
- title: "",
- submitTitle: "",
- data: { ...newGraph() },
- errorFields: new Set([]),
- }
-
- componentDidMount() {
- const { data, isNew } = this.props
- const title = isNew ? 'new project' : 'editing ' + data.title
- const submitTitle = isNew ? "Create Graph" : "Save Changes"
- this.setState({
- title,
- submitTitle,
- errorFields: new Set([]),
- data: {
- ...newGraph(),
- ...data
- },
- })
- }
-
- handleChange(e) {
- const { errorFields } = this.state
- const { name, value } = e.target
- if (errorFields.has(name)) {
- errorFields.delete(name)
- }
- let sanitizedValue = value
- if (name === 'path') {
- sanitizedValue = sanitizedValue.toLowerCase().replace(/ /, '-').replace(/[!@#$%^&*()[\]{}]/, '-').replace(/-+/, '-')
- }
- this.setState({
- errorFields,
- data: {
- ...this.state.data,
- [name]: sanitizedValue,
- }
- })
- }
-
- handleSelect(name, value) {
- const { errorFields } = this.state
- if (errorFields.has(name)) {
- errorFields.delete(name)
- }
- this.setState({
- errorFields,
- data: {
- ...this.state.data,
- [name]: value,
- }
- })
- }
-
- handleSubmit(e) {
- e.preventDefault()
- const { isNew, onSubmit } = this.props
- const { data } = this.state
- const requiredKeys = "title username path description".split(" ")
- const validKeys = "title username path description".split(" ")
- const validData = validKeys.reduce((a,b) => { a[b] = data[b]; return a }, {})
- const errorFields = requiredKeys.filter(key => !validData[key])
- if (errorFields.length) {
- console.log('error', errorFields, validData)
- this.setState({ errorFields: new Set(errorFields) })
- } else {
- if (isNew) {
- // side effect: set username if we're creating a new graph
- session.set('username', data.username)
- } else {
- validData.id = data.id
- }
- console.log('submit', validData)
- onSubmit(validData)
- }
- }
-
- render() {
- const { isNew } = this.props
- const { title, submitTitle, errorFields, data } = this.state
- return (
- <div className='form'>
- <h1>{title}</h1>
- <form onSubmit={this.handleSubmit.bind(this)}>
- <TextInput
- title="Path"
- name="path"
- required
- data={data}
- error={errorFields.has('path')}
- onChange={this.handleChange.bind(this)}
- autoComplete="off"
- />
- <LabelDescription>
- {data.path
- ? 'Project URLs will be: /' + data.path + '/example'
- : 'Enter the base path for this project.'}
- </LabelDescription>
- <TextInput
- title="Title"
- name="title"
- required
- data={data}
- error={errorFields.has('title')}
- onChange={this.handleChange.bind(this)}
- autoComplete="off"
- />
- <TextInput
- title="Author"
- name="username"
- required
- data={data}
- error={errorFields.has('username')}
- onChange={this.handleChange.bind(this)}
- autoComplete="off"
- />
- <TextArea
- title="Description"
- name="description"
- data={data}
- onChange={this.handleChange.bind(this)}
- />
- <SubmitButton
- title={submitTitle}
- onClick={this.handleSubmit.bind(this)}
- />
- {!!errorFields.size &&
- <label>
- <span></span>
- <span>Please complete the required fields =)</span>
- </label>
- }
- </form>
- </div>
- )
- }
-}
diff --git a/frontend/views/index/containers/graph.edit.js b/frontend/views/index/containers/graph.edit.js
deleted file mode 100644
index ce1b404..0000000
--- a/frontend/views/index/containers/graph.edit.js
+++ /dev/null
@@ -1,53 +0,0 @@
-import React, { Component } from 'react'
-import { Link } from 'react-router-dom'
-import { connect } from 'react-redux'
-
-import { history } from '../../../store'
-import actions from '../../../actions'
-
-import { Loader } from '../../../common'
-
-import GraphForm from '../components/graph.form'
-
-class GraphEdit extends Component {
- componentDidMount() {
- console.log(this.props.match.params.id)
- actions.graph.show(this.props.match.params.id)
- }
-
- handleSubmit(data) {
- actions.graph.update(data)
- .then(response => {
- // response
- console.log(response)
- history.push('/' + data.path)
- })
- }
-
- render() {
- const { show } = this.props.graph
- if (show.loading || !show.res) {
- return (
- <div className='form'>
- <Loader />
- </div>
- )
- }
- return (
- <GraphForm
- data={show.res}
- onSubmit={this.handleSubmit.bind(this)}
- />
- )
- }
-}
-
-const mapStateToProps = state => ({
- graph: state.graph,
-})
-
-const mapDispatchToProps = dispatch => ({
- // searchActions: bindActionCreators({ ...searchActions }, dispatch),
-})
-
-export default connect(mapStateToProps, mapDispatchToProps)(GraphEdit)
diff --git a/frontend/views/index/containers/graph.index.js b/frontend/views/index/containers/graph.index.js
deleted file mode 100644
index 35c2d82..0000000
--- a/frontend/views/index/containers/graph.index.js
+++ /dev/null
@@ -1,53 +0,0 @@
-import React, { Component } from 'react'
-import { Link } from 'react-router-dom'
-import { bindActionCreators } from 'redux'
-import { connect } from 'react-redux'
-
-import { Loader } from '../../../common'
-import actions from '../../../actions'
-// import * as uploadActions from './upload.actions'
-
-class GraphIndex extends Component {
- componentDidMount() {
- actions.graph.index()
- }
- render() {
- const { index } = this.props
- // console.log(this.props)
- if (!index.order) {
- return (
- <div className='graphIndex'>
- <Loader />
- </div>
- )
- }
- // console.log(state)
- return (
- <div className='graphIndex'>
- <div>
- <b>welcome, swimmer</b>
- <Link to='/index/new'>+ new project</Link>
- </div>
- {index.order.map(id => {
- const graph = index.lookup[id]
- return (
- <div key={id}>
- <Link to={'/' + graph.path}>{graph.title}</Link>
- <Link to={'/index/' + id + '/edit'}>{'edit project'}</Link>
- </div>
- )
- })}
- </div>
- )
- }
-}
-
-const mapStateToProps = state => ({
- index: state.graph.index,
-})
-
-const mapDispatchToProps = dispatch => ({
- // uploadActions: bindActionCreators({ ...uploadActions }, dispatch),
-})
-
-export default connect(mapStateToProps, mapDispatchToProps)(GraphIndex)
diff --git a/frontend/views/index/containers/graph.new.js b/frontend/views/index/containers/graph.new.js
deleted file mode 100644
index be96bf5..0000000
--- a/frontend/views/index/containers/graph.new.js
+++ /dev/null
@@ -1,44 +0,0 @@
-import React, { Component } from 'react'
-import { Link } from 'react-router-dom'
-import { connect } from 'react-redux'
-
-import { history } from '../../../store'
-import actions from '../../../actions'
-
-import GraphForm from '../components/graph.form'
-
-class GraphNew extends Component {
- handleSubmit(data) {
- console.log(data)
- actions.graph.create(data)
- .then(res => {
- console.log(res)
- if (res.res && res.res.id) {
- history.push('/' + res.res.path)
- }
- })
- .catch(err => {
- console.error('error')
- })
- }
-
- render() {
- return (
- <GraphForm
- isNew
- data={{}}
- onSubmit={this.handleSubmit.bind(this)}
- />
- )
- }
-}
-
-const mapStateToProps = state => ({
- graph: state.graph,
-})
-
-const mapDispatchToProps = dispatch => ({
- // searchActions: bindActionCreators({ ...searchActions }, dispatch),
-})
-
-export default connect(mapStateToProps, mapDispatchToProps)(GraphNew)
diff --git a/frontend/views/index/index.container.js b/frontend/views/index/index.container.js
deleted file mode 100644
index c6cb819..0000000
--- a/frontend/views/index/index.container.js
+++ /dev/null
@@ -1,36 +0,0 @@
-import React, { Component } from 'react'
-import { Route } from 'react-router-dom'
-import { bindActionCreators } from 'redux'
-import { connect } from 'react-redux'
-
-import './index.css'
-
-import actions from '../../actions'
-import { Header } from '../../common'
-// import * as uploadActions from './upload.actions'
-
-import GraphIndex from './containers/graph.index'
-import GraphNew from './containers/graph.new'
-import GraphEdit from './containers/graph.edit'
-
-class Container extends Component {
- componentDidMount() {
- actions.site.setSiteTitle("swimmer")
- }
- render() {
- return (
- <div>
- <Header />
- <div className='body'>
- <div className='index'>
- <Route exact path='/index/new' component={GraphNew} />
- <Route exact path='/index/:id/edit' component={GraphEdit} />
- <Route exact path='/index' component={GraphIndex} />
- </div>
- </div>
- </div>
- )
- }
-}
-
-export default Container
diff --git a/frontend/views/index/index.css b/frontend/views/index/index.css
deleted file mode 100644
index 028f6c2..0000000
--- a/frontend/views/index/index.css
+++ /dev/null
@@ -1,38 +0,0 @@
-* {
-
-}
-.index {
- width: 100%;
- height: 100%;
- background: linear-gradient(
- -45deg,
- rgba(0, 0, 64, 0.5),
- rgba(128, 0, 64, 0.5)
- );
- padding: 1rem;
-}
-.index > div {
- display: inline-block;
- padding: 1rem;
- max-height: calc(100% - 2rem);
- overflow: scroll;
- background: rgba(64,12,64,0.9);
- box-shadow: 3px 3px 6px rgba(0,0,0,0.4),
- inset 0 0 60px rgba(128,255,255,0.1);
-}
-.graphIndex {
- min-width: 20rem;
- display: flex;
- flex-direction: column;
-}
-.graphIndex > * {
- margin-bottom: 0.5rem;
-}
-.graphIndex > div {
- display: flex;
- flex-direction: row;
- justify-content: space-between
-}
-.graphIndex > div > a:first-child {
- color: #fff;
-} \ No newline at end of file