1 import React, {Component} from "react";
2 import axios from "axios";
3 import {Map} from "immutable";
4 import PdfReport from "./PdfReport";
5 import SearchTermsInput from "./SearchTermsInput";
7 class SentimentAnalysis extends Component {
8 constructor(props, context) {
11 terms: new Map().set(0, ''),
15 this.handleSubmit = this.handleSubmit.bind(this);
16 this.handleTermChange = this.handleTermChange.bind(this);
17 this.handleAddTerm = this.handleAddTerm.bind(this);
18 this.handleRemoveTerm = this.handleRemoveTerm.bind(this);
19 this.addEmptyTerm = this.addEmptyTerm.bind(this);
20 this.emptyTerms = this.emptyTerms.bind(this);
21 this.createPdf = this.createPdf.bind(this);
25 event.preventDefault();
26 const target = event.target;
28 const terms = this.state.terms;
29 terms.forEach((term) => {
36 handleTermChange(id, value) {
37 const terms = this.state.terms;
39 terms: terms.set(id, value),
43 handleAddTerm(event) {
47 handleRemoveTerm(id) {
48 const terms = this.state.terms;
50 terms: terms.delete(id),
55 const terms = this.state.terms;
56 const termId = this.state.nextTermId;
58 terms: terms.set(termId, ''),
59 nextTermId: termId + 1,
65 terms: new Map().set(0, ''),
72 .post('https://jsonplaceholder.typicode.com/posts', {
78 const data = response.data;
81 pdfLink: 'https://google.at',
91 <div className="sentiment-analysis">
92 <form onSubmit={this.handleSubmit}>
93 <label>Search Terms</label>
94 <SearchTermsInput terms={this.state.terms}
95 onTermChange={this.handleTermChange}
96 onAddTerm={this.handleAddTerm}
97 onRemoveTerm={this.handleRemoveTerm}/>
98 <input type="submit" value="Submit"/>
100 <PdfReport pdfLink={this.state.pdfLink}/>
106 SentimentAnalysis.propTypes = {};
108 export default SentimentAnalysis;