]> git.somenet.org - pub/jan/aic18.git/blob - service-website/src/components/SentimentAnalysis.js
Add empty terms function
[pub/jan/aic18.git] / service-website / src / components / SentimentAnalysis.js
1 import React, {Component} from "react";
2 import SearchTermsInput from "./SearchTermsInput";
3 import {Map} from "immutable";
4
5 class SentimentAnalysis extends Component {
6     constructor(props, context) {
7         super(props, context);
8         this.state = {
9             terms: new Map().set(0, ''),
10             nextTermId: 1,
11         };
12         this.handleSubmit = this.handleSubmit.bind(this);
13         this.handleTermChange = this.handleTermChange.bind(this);
14         this.handleAddTerm = this.handleAddTerm.bind(this);
15         this.handleRemoveTerm = this.handleRemoveTerm.bind(this);
16         this.addEmptyTerm = this.addEmptyTerm.bind(this);
17         this.emptyTerms = this.emptyTerms.bind(this);
18     }
19
20     handleSubmit(event) {
21         event.preventDefault();
22         const target = event.target;
23         console.log(target);
24         const terms = this.state.terms;
25         terms.forEach((term) => {
26             console.log(term);
27         });
28         this.emptyTerms();
29     }
30
31     handleTermChange(id, value) {
32         const terms = this.state.terms;
33         this.setState({
34             terms: terms.set(id, value),
35         });
36     }
37
38     handleAddTerm(event) {
39         this.addEmptyTerm();
40     }
41
42     handleRemoveTerm(id) {
43         const terms = this.state.terms;
44         this.setState({
45             terms: terms.delete(id),
46         });
47     }
48
49     addEmptyTerm() {
50         const terms = this.state.terms;
51         const termId = this.state.nextTermId;
52         this.setState({
53             terms: terms.set(termId, ''),
54             nextTermId: termId + 1,
55         });
56     }
57
58     emptyTerms() {
59         this.setState({
60             terms: new Map().set(0, ''),
61             nextTermId: 1,
62         });
63     }
64
65     render() {
66         return (
67             <div className="sentiment-analysis">
68                 <form onSubmit={this.handleSubmit}>
69                     <label>Search Terms</label>
70                     <SearchTermsInput terms={this.state.terms}
71                                       onTermChange={this.handleTermChange}
72                                       onAddTerm={this.handleAddTerm}
73                                       onRemoveTerm={this.handleRemoveTerm}/>
74                     <input type="submit" value="Submit"/>
75                 </form>
76             </div>
77         );
78     }
79 }
80
81 SentimentAnalysis.propTypes = {};
82
83 export default SentimentAnalysis;