PageRenderTime 2597ms CodeModel.GetById 24ms RepoModel.GetById 11ms app.codeStats 0ms

/app-front-reactjs/src/components/Home.js

https://bitbucket.org/me-me/hackathon-uae
JavaScript | 194 lines | 172 code | 22 blank | 0 comment | 11 complexity | 6bf1d8897a1b5d36d62aa94fd22491fa MD5 | raw file
Possible License(s): BSD-3-Clause, BSD-2-Clause, MPL-2.0-no-copyleft-exception, GPL-2.0, LGPL-2.1, JSON, 0BSD, MIT, Apache-2.0, CC-BY-SA-3.0, CC-BY-4.0, Unlicense, GPL-3.0
  1. import React, {Component} from 'react';
  2. import {Link} from 'react-router-dom';
  3. import Header from '../admin/Header';
  4. import Sidebar from '../admin/SideBar';
  5. import Footer from './Footer';
  6. import axios from 'axios';
  7. class Home extends Component {
  8. constructor(props) {
  9. super(props);
  10. this.state = {
  11. dialectOrigin: '',
  12. phraseOrigin: '',
  13. dialectTarget: '',
  14. phraseTarget: '',
  15. allWords: '',
  16. phraseAnalytics: '',
  17. wordDifinition: [],
  18. };
  19. this.handleChange = this.handleChange.bind(this);
  20. this.handleSubmit = this.handleSubmit.bind(this);
  21. this.handleDifinition = this.handleDifinition.bind(this);
  22. }
  23. handleChange(event) {
  24. const target = event.target;
  25. const value = target.value;
  26. const name = target.name;
  27. this.setState({
  28. [name]: value
  29. });
  30. }
  31. handleSubmit(event) {
  32. const data = {
  33. "params": {
  34. dialectOrigin: this.state.dialectOrigin,
  35. phraseOrigin: this.state.phraseOrigin,
  36. dialectTarget: this.state.dialectTarget,
  37. }
  38. };
  39. axios.post(`/data/submit`,
  40. data).then(res => {
  41. const allWords = res.data;
  42. let i = 0;
  43. let words = "";
  44. let phraseTarget = "";
  45. while (i < Object.keys(allWords).length) {
  46. words = res.data[i][0]['word'];
  47. phraseTarget = phraseTarget.concat(words);
  48. if (Object.keys(allWords).length > 1)
  49. phraseTarget = phraseTarget.concat(" ");
  50. i++;
  51. }
  52. this.setState({allWords, phraseTarget});
  53. });
  54. }
  55. handleDifinition(evemt) {
  56. var obj = {};
  57. $('#info .property').each(function () {
  58. var value = $(this).children('.value').html();
  59. obj[$(this).attr('id')] = isNaN(value) || value == '' ? value : parseInt(value);
  60. });
  61. const data = {
  62. "params": {
  63. word: obj['text'],
  64. }
  65. };
  66. axios.post(`/translate`,
  67. data).then(res => {
  68. if (Object.keys(res.data).length > 0) {
  69. const wordDifinition = res.data[0]['definition'];
  70. this.setState({ wordDifinition });
  71. }
  72. });
  73. }
  74. render() {
  75. if (this.state.dialectTarget == 'Standard arabic dialect') {
  76. var StyleTarget = {
  77. textAlign: 'right',
  78. };
  79. var labelTarget = "أدخل عبارة لترجمة"
  80. ;
  81. } else {
  82. var labelTarget = "Enter a phrase to translate"
  83. }
  84. if (this.state.dialectOrigin == 'Standard arabic dialect') {
  85. var StyleOrigin = {
  86. textAlign: 'right',
  87. };
  88. var labelOrigin = "ترجمة إلى اللغة العربية"
  89. ;
  90. } else {
  91. var labelOrigin = "The translated phrase";
  92. }
  93. return (
  94. <div>
  95. <Header/>
  96. <Sidebar/>
  97. <div className="container">
  98. <div className="sectionform">
  99. <div className="col-md-5">
  100. <div className="form-group row">
  101. <div className="col-md-5">
  102. <select className="form-control" id="dialectOrigin" key="dialectOrigin" name="dialectOrigin"
  103. onChange={this.handleChange} required>
  104. <option>Choose a dialect</option>
  105. <option>Gulf dialect</option>
  106. <option>Standard arabic dialect</option>
  107. <option>Algerian dialect</option>
  108. </select>
  109. </div>
  110. </div>
  111. <div className="form-group row">
  112. <div className="col-md-10">
  113. <div id="fields">
  114. <textarea id="textarea" key="textarea" name="phraseOrigin" onChange={this.handleChange} style={StyleOrigin}
  115. className="form-control pull-right" rows="5"
  116. placeholder={labelOrigin}></textarea>
  117. </div>
  118. </div>
  119. </div>
  120. <button onClick={this.handleSubmit} className="btn btn-primary">Translate</button>
  121. </div>
  122. <div className="col-md-2 fix-top">
  123. <i className="glyphicon glyphicon-arrow-right arrow-left-size"></i><br></br>
  124. <i className="glyphicon glyphicon-arrow-left arrow-left-size"></i>
  125. </div>
  126. <div className="col-md-5">
  127. <div className="form-group row">
  128. <div className="col-md-5">
  129. <select className="form-control" id="dialectTarget" name="dialectTarget"
  130. onChange={this.handleChange} required>
  131. <option>Choose a dialect</option>
  132. <option>Gulf dialect</option>
  133. <option>Standard arabic dialect</option>
  134. <option>Algerian dialect</option>
  135. </select>
  136. </div>
  137. </div>
  138. <div className="form-group row">
  139. <div className="col-md-10">
  140. <textarea id="textarea" name="phraseTarget" value={this.state.phraseTarget} style={StyleTarget}
  141. className="form-control pull-right" rows="5"
  142. placeholder={labelTarget}></textarea>
  143. </div>
  144. </div>
  145. </div>
  146. </div>
  147. </div>
  148. <div className="container fix-top">
  149. <div>
  150. <div className="col-md-6">
  151. <div className="panel panel-primary">
  152. <div className="panel-heading">
  153. <h3 id="info" className="panel-title">
  154. <a><i onClick={this.handleDifinition} id="console-log" className="glyphicon glyphicon-globe"></i></a>
  155. &nbsp;Definition :
  156. <span id="text" className="property line"> <span
  157. className="value"></span></span>
  158. </h3>
  159. <span className="pull-right clickable"><i
  160. className="glyphicon glyphicon-chevron-up"></i></span>
  161. </div>
  162. <div className="panel-body">{this.state.wordDifinition}</div>
  163. </div>
  164. </div>
  165. </div>
  166. </div>
  167. <Footer/>
  168. </div>
  169. );
  170. }
  171. }
  172. export default Home;