diff options
Diffstat (limited to 'client/components/Tasks')
| -rw-r--r-- | client/components/Tasks/TaskForm.jsx | 50 | ||||
| -rw-r--r-- | client/components/Tasks/TaskFormView.jsx | 72 | ||||
| -rw-r--r-- | client/components/Tasks/Tasks.jsx | 38 |
3 files changed, 160 insertions, 0 deletions
diff --git a/client/components/Tasks/TaskForm.jsx b/client/components/Tasks/TaskForm.jsx new file mode 100644 index 0000000..89771ad --- /dev/null +++ b/client/components/Tasks/TaskForm.jsx @@ -0,0 +1,50 @@ +import { h, Component } from 'preact' +import { Link } from 'react-router-dom' + +import client from '../../client.js' + +export default class TaskForm extends Component { + constructor(props) { + super() + this.state = { + name: '', + } + this.updateState = this.updateState.bind(this) + this.handleSubmit = this.handleSubmit.bind(this) + } + + updateState(event){ + const name = event.target.name + let value = event.target.value + console.log(name, value) + this.setState({ + [name]: value, + error: null, + }) + } + + updateAlpha(event){ + const name = event.target.name + let value = event.target.value + console.log(name, value) + this.setState({ + alphaValue: value, + alpha: '1e' + value, + error: null, + }) + } + + handleSubmit(event) { + event.preventDefault() + let rec = Object.assign({}, this.state) + delete rec.error + this.props.onClose() + client.folder.create( rec ).then( (data) => { + this.props.addFolder( data ) + }) + } + + render() { + return ( <TaskFormView currentTask={this.state} /> ) + } +} diff --git a/client/components/Tasks/TaskFormView.jsx b/client/components/Tasks/TaskFormView.jsx new file mode 100644 index 0000000..078f7c7 --- /dev/null +++ b/client/components/Tasks/TaskFormView.jsx @@ -0,0 +1,72 @@ +import { h, Component } from 'preact' +import { Link } from 'react-router-dom' + +import client from '../../client.js' + +export default class TaskForm extends Component { + constructor(props) { + super() + this.state = { + name: '', + } + this.updateState = this.updateState.bind(this) + this.handleSubmit = this.handleSubmit.bind(this) + } + updateState(event){ + const name = event.target.name + let value = event.target.value + console.log(name, value) + this.setState({ + [name]: value, + error: null, + }) + } + updateAlpha(event){ + const name = event.target.name + let value = event.target.value + console.log(name, value) + this.setState({ + alphaValue: value, + alpha: '1e' + value, + error: null, + }) + } + handleSubmit(event) { + event.preventDefault() + let rec = Object.assign({}, this.state) + delete rec.error + this.props.onClose() + client.folder.create( rec ).then( (data) => { + this.props.addFolder( data ) + }) + } + render() { + return ( + <div class='form'> + <div> + <div> + <img /> + {this.state.content} + </div> + <label>content</label> + <button onclick={() => this.setState({ content: null })}>x</button> + </div> + <div> + <div> + {this.state.style} + </div> + <label>style</label> + <button onclick={() => this.setState({ style: null })}>x</button> + </div> + <div> + <input type='range' min='0' max='100' value={this.state.alphaValue} + onChange={(e) => this.updateAlpha(e)} + /> + {this.state.alphaString} + <label>alpha</label> + <button onClick={this.handleSubmit}>Create</button> + </div> + </div> + ) + } +} diff --git a/client/components/Tasks/Tasks.jsx b/client/components/Tasks/Tasks.jsx new file mode 100644 index 0000000..b72cd79 --- /dev/null +++ b/client/components/Tasks/Tasks.jsx @@ -0,0 +1,38 @@ +import { h, Component } from 'preact' +import { Link } from 'react-router-dom' + +import TaskForm from './TaskForm.jsx' + +import client from '../../client.js' + +export default class Tasks extends Component { + constructor(props) { + super() + this.state = { + adding: false, + } + client.task.index().then( tasks => this.setState({ tasks }) ) + } + render() { + const tasks = (this.props.tasks || []).map( (task, i) => { + return ( + <div key={i} onClick={() => this.toggle(task)}> + <span class='name'>{task.name}</span> + </div> + ) + }) + return ( + <div class='column'> + <div class='window'> + <div class='heading'> + <b>tasks</b> + </div> + <TaskForm /> + <div class='list'> + {tasks} + </div> + </div> + </div> + ) + } +} |
