]> git.somenet.org - pub/jan/aic18.git/blob - service-website/src/SentimentAnalysis.js
Add functionality to add terms
[pub/jan/aic18.git] / service-website / src / SentimentAnalysis.js
1 import React, {Component} from 'react';
2 import SearchTermsInput from "./SearchTermsInput";
3 import SearchTerm from "./SearchTerm";
4
5 class SentimentAnalysis extends Component {
6     constructor(props, context) {
7         super(props, context);
8         this.state = {
9             terms: [],
10         };
11         this.handleSubmit = this.handleSubmit.bind(this);
12         this.handleAddTerm = this.handleAddTerm.bind(this);
13         this.addEmptyTerm = this.addEmptyTerm.bind(this);
14         this.createEmptyTerm = this.createEmptyTerm.bind(this);
15     }
16
17     componentDidMount() {
18         const terms = this.state.terms;
19         if (terms.length === 0) {
20             this.addEmptyTerm();
21         }
22     }
23
24     handleSubmit(event) {
25         event.preventDefault();
26         const terms = this.state.terms;
27         console.log(terms);
28     }
29
30     handleAddTerm(event) {
31         console.log(event);
32         this.addEmptyTerm();
33     }
34
35     addEmptyTerm() {
36         const term = this.createEmptyTerm();
37         this.setState({
38             terms: [...this.state.terms, term],
39         });
40     }
41
42     createEmptyTerm() {
43         const index = this.state.terms.length;
44         return (
45             <SearchTerm key={index} index={index} onAddTerm={this.handleAddTerm}/>
46         );
47     }
48
49     render() {
50         return (
51             <div className="sentiment-analysis">
52                 <form onSubmit={this.handleSubmit}>
53                     <label>Search Terms</label>
54                     <SearchTermsInput terms={this.state.terms} onAddTerm={this.handleAddTerm}/>
55                     <input type="submit" value="Submit"/>
56                 </form>
57             </div>
58         );
59     }
60 }
61
62 SentimentAnalysis.propTypes = {};
63
64 export default SentimentAnalysis;