]> git.somenet.org - pub/jan/aic18.git/blob - service-website/src/components/SentimentAnalysis.js
Add demo REST call
[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 import axios from "axios";
5
6 class SentimentAnalysis extends Component {
7     constructor(props, context) {
8         super(props, context);
9         this.state = {
10             terms: new Map().set(0, ''),
11             nextTermId: 1,
12         };
13         this.handleSubmit = this.handleSubmit.bind(this);
14         this.handleTermChange = this.handleTermChange.bind(this);
15         this.handleAddTerm = this.handleAddTerm.bind(this);
16         this.handleRemoveTerm = this.handleRemoveTerm.bind(this);
17         this.addEmptyTerm = this.addEmptyTerm.bind(this);
18         this.emptyTerms = this.emptyTerms.bind(this);
19         this.createPdf = this.createPdf.bind(this);
20     }
21
22     handleSubmit(event) {
23         event.preventDefault();
24         const target = event.target;
25         console.log(target);
26         const terms = this.state.terms;
27         terms.forEach((term) => {
28             console.log(term);
29         });
30         this.createPdf();
31         this.emptyTerms();
32     }
33
34     handleTermChange(id, value) {
35         const terms = this.state.terms;
36         this.setState({
37             terms: terms.set(id, value),
38         });
39     }
40
41     handleAddTerm(event) {
42         this.addEmptyTerm();
43     }
44
45     handleRemoveTerm(id) {
46         const terms = this.state.terms;
47         this.setState({
48             terms: terms.delete(id),
49         });
50     }
51
52     addEmptyTerm() {
53         const terms = this.state.terms;
54         const termId = this.state.nextTermId;
55         this.setState({
56             terms: terms.set(termId, ''),
57             nextTermId: termId + 1,
58         });
59     }
60
61     emptyTerms() {
62         this.setState({
63             terms: new Map().set(0, ''),
64             nextTermId: 1,
65         });
66     }
67
68     createPdf() {
69         axios
70             .post('https://jsonplaceholder.typicode.com/posts', {
71                 title: 'foo',
72                 body: 'bar',
73                 userId: 1,
74             })
75             .then(response => {
76                 const data = response.data;
77                 console.log(data);
78             })
79             .catch(error => {
80                 console.log(error);
81             });
82     }
83
84     render() {
85         return (
86             <div className="sentiment-analysis">
87                 <form onSubmit={this.handleSubmit}>
88                     <label>Search Terms</label>
89                     <SearchTermsInput terms={this.state.terms}
90                                       onTermChange={this.handleTermChange}
91                                       onAddTerm={this.handleAddTerm}
92                                       onRemoveTerm={this.handleRemoveTerm}/>
93                     <input type="submit" value="Submit"/>
94                 </form>
95             </div>
96         );
97     }
98 }
99
100 SentimentAnalysis.propTypes = {};
101
102 export default SentimentAnalysis;