diff --git a/client/views/grade/EditPanel.jsx b/client/views/grade/EditPanel.jsx index f6ec6837f9513ead315ba6878a5eddb04eeecd91..1bbee8fdc7c116555b093d466d20d5003c77494c 100644 --- a/client/views/grade/EditPanel.jsx +++ b/client/views/grade/EditPanel.jsx @@ -54,18 +54,32 @@ class EditPanel extends React.Component { }) } changeScore = (event) => { - this.setState({ - score: event.target.value - }) + const patt = new RegExp(/^([1-9]\d*|0)?$/); + + if (patt.test(event.target.value)) { + this.setState({ + score: event.target.value + }) + } } + key = (event) => { + if (event.keyCode === 13 && this.state.name.length) { + console.log(this.state) + this.saveFeedback(); + } + } saveFeedback = () => { if (this.props.feedback) { } else { - api.post('feedback/' + this.props.problem, this.state) + api.post('feedback/' + this.props.problem, { + name: this.state.name, + description: this.state.description, + score: this.state.score ? parseInt(this.state.score) : null + }) .then(feedback => { console.log(feedback) this.props.toggleEdit(); @@ -87,7 +101,7 @@ class EditPanel extends React.Component { <label className="label">Name</label> <div className="control has-icons-left"> <input className="input" placeholder="Name" - value={this.state.name} onChange={this.changeName} /> + value={this.state.name} onChange={this.changeName} onKeyDown={this.key} /> <span className="icon is-small is-left"> <i className="fa fa-quote-left"></i> </span> @@ -100,9 +114,9 @@ class EditPanel extends React.Component { <label className="label">Description</label> <div className="control has-icons-left"> <input className="input" placeholder="Description" - value={this.state.description} onChange={this.changeDesc} /> + value={this.state.description} onChange={this.changeDesc} onKeyDown={this.key} /> <span className="icon is-small is-left"> - <i className="fa fa-quote-right"></i> + <i className="fa fa-comment-o"></i> </span> </div> @@ -114,9 +128,9 @@ class EditPanel extends React.Component { <label className="label">Score</label> <div className="control has-icons-left has-icons-right"> <input className="input" placeholder="Score" - value={this.state.score} onChange={this.changeScore} /> + value={this.state.score} onChange={this.changeScore} onKeyDown={this.key} /> <span className="icon is-small is-left"> - <i className="fa fa-envelope"></i> + <i className="fa fa-star"></i> </span> </div> </div> diff --git a/client/views/grade/FeedbackBlock.jsx b/client/views/grade/FeedbackBlock.jsx new file mode 100644 index 0000000000000000000000000000000000000000..4b467c8eb0dedd0c9ebacbff4e36ab06abb8aab0 --- /dev/null +++ b/client/views/grade/FeedbackBlock.jsx @@ -0,0 +1,22 @@ +import React from 'react'; + +class FeedbackBlock extends React.Component { + + + render() { + return ( + <a className="panel-block is-active" onClick={this.props.onClick} > + <span className="panel-icon"> + <i className={"fa fa-" + (this.props.checked ? "check-square-o" : "square-o")}></i> + </span> + <div style={{ width: '80%' }}> + {this.props.feedback.name} + </div> + <i>{this.props.feedback.score}</i> + </a> + ) + } +} + + +export default FeedbackBlock; \ No newline at end of file diff --git a/client/views/grade/FeedbackPanel.jsx b/client/views/grade/FeedbackPanel.jsx index 4d05507a7ebb74c5288f2fa327aae887d747f94a..d9cba509616b3a585a26db9ab1bdf0bd1a29ea76 100644 --- a/client/views/grade/FeedbackPanel.jsx +++ b/client/views/grade/FeedbackPanel.jsx @@ -2,15 +2,7 @@ import React from 'react'; import * as api from '../../api.jsx' -const FeedbackBlock = (props) => ( - <a className="panel-block is-active" onClick={props.onClick} > - <span className="panel-icon"> - <i className={"fa fa-" + (props.checked ? "check-square-o" : "square-o")}></i> - </span> - {props.feedback.name} <i>- [{props.feedback.score}]</i> - </a> -) - +import FeedbackBlock from './FeedbackBlock.jsx'; class FeedbackPanel extends React.Component { diff --git a/client/views/students/EditPanel.jsx b/client/views/students/EditPanel.jsx index fa32e233bc951fabb28e126fbe3ce496f8bddae6..4aaffc0a3929eaea05decc8717005bb4dae6a729 100644 --- a/client/views/students/EditPanel.jsx +++ b/client/views/students/EditPanel.jsx @@ -129,11 +129,8 @@ class EditPanel extends React.Component { <i className="fa fa-quote-left"></i> </span> </div> - </div> - </div> - <div className="panel-block"> - <div className="field"> + <div className="control has-icons-left"> <input className="input" placeholder="Second name" value={this.state.lastName} onChange={this.changeLastName} />