| 
									
										
										
										
											2020-06-25 22:43:26 +02:00
										 |  |  | import React from "react"; | 
					
						
							| 
									
										
										
										
											2020-07-04 00:45:18 +02:00
										 |  |  | import "./MovieSettings.css" | 
					
						
							| 
									
										
										
										
											2020-06-25 22:43:26 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | class MovieSettings extends React.Component { | 
					
						
							|  |  |  |     constructor(props) { | 
					
						
							|  |  |  |         super(props); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         this.state = { | 
					
						
							|  |  |  |             text: [] | 
					
						
							|  |  |  |         }; | 
					
						
							| 
									
										
										
										
											2020-07-07 19:21:14 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         this.startbtn = React.createRef(); | 
					
						
							| 
									
										
										
										
											2020-06-25 22:43:26 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     componentDidMount() { | 
					
						
							|  |  |  |         if (this.myinterval) { | 
					
						
							|  |  |  |             clearInterval(this.myinterval); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         this.myinterval = setInterval(this.updateStatus, 1000); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     componentWillUnmount() { | 
					
						
							|  |  |  |         clearInterval(this.myinterval); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     render() { | 
					
						
							|  |  |  |         return ( | 
					
						
							|  |  |  |             <> | 
					
						
							| 
									
										
										
										
											2020-07-07 19:21:14 +02:00
										 |  |  |                 <button ref={this.startbtn} className='reindexbtn btn btn-success' onClick={() => { | 
					
						
							| 
									
										
										
										
											2020-06-25 22:43:26 +02:00
										 |  |  |                     this.startReindex() | 
					
						
							|  |  |  |                 }}>Reindex Movies | 
					
						
							|  |  |  |                 </button> | 
					
						
							|  |  |  |                 <div className='indextextarea'>{this.state.text.map(m => ( | 
					
						
							|  |  |  |                     <div className='textarea-element'>{m}</div> | 
					
						
							|  |  |  |                 ))}</div> | 
					
						
							|  |  |  |             </> | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     startReindex() { | 
					
						
							| 
									
										
										
										
											2020-07-07 19:21:14 +02:00
										 |  |  |         // clear output text before start
 | 
					
						
							|  |  |  |         this.setState({text: []}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         const btn = this.startbtn.current; | 
					
						
							|  |  |  |         btn.disabled = true; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-25 22:43:26 +02:00
										 |  |  |         console.log("starting"); | 
					
						
							|  |  |  |         const updateRequest = new FormData(); | 
					
						
							|  |  |  |         // fetch all videos available
 | 
					
						
							|  |  |  |         fetch('/api/extractvideopreviews.php', {method: 'POST', body: updateRequest}) | 
					
						
							|  |  |  |             .then((response) => response.json() | 
					
						
							|  |  |  |                 .then((result) => { | 
					
						
							| 
									
										
										
										
											2020-07-04 00:45:18 +02:00
										 |  |  |                     // todo 2020-07-4: some kind of start event
 | 
					
						
							| 
									
										
										
										
											2020-06-25 22:43:26 +02:00
										 |  |  |                     console.log("returned"); | 
					
						
							|  |  |  |                 })) | 
					
						
							|  |  |  |             .catch(() => { | 
					
						
							|  |  |  |                 console.log("no connection to backend"); | 
					
						
							|  |  |  |             }); | 
					
						
							|  |  |  |         if (this.myinterval) { | 
					
						
							|  |  |  |             clearInterval(this.myinterval); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         this.myinterval = setInterval(this.updateStatus, 1000); | 
					
						
							|  |  |  |         console.log("sent"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     updateStatus = () => { | 
					
						
							|  |  |  |         const updateRequest = new FormData(); | 
					
						
							|  |  |  |         fetch('/api/extractionData.php', {method: 'POST', body: updateRequest}) | 
					
						
							|  |  |  |             .then((response) => response.json() | 
					
						
							|  |  |  |                 .then((result) => { | 
					
						
							|  |  |  |                     if (result.contentAvailable === true) { | 
					
						
							|  |  |  |                         console.log(result); | 
					
						
							| 
									
										
										
										
											2020-07-04 00:45:18 +02:00
										 |  |  |                         // todo 2020-07-4: scroll to bottom of div here
 | 
					
						
							| 
									
										
										
										
											2020-06-25 22:43:26 +02:00
										 |  |  |                         this.setState({ | 
					
						
							| 
									
										
										
										
											2020-07-04 00:45:18 +02:00
										 |  |  |                             // insert a string for each line
 | 
					
						
							| 
									
										
										
										
											2020-06-25 22:43:26 +02:00
										 |  |  |                             text: [...result.message.split("\n"), | 
					
						
							|  |  |  |                                 ...this.state.text] | 
					
						
							|  |  |  |                         }); | 
					
						
							|  |  |  |                     } else { | 
					
						
							| 
									
										
										
										
											2020-07-04 00:45:18 +02:00
										 |  |  |                         // clear refresh interval if no content available
 | 
					
						
							| 
									
										
										
										
											2020-06-25 22:43:26 +02:00
										 |  |  |                         clearInterval(this.myinterval); | 
					
						
							| 
									
										
										
										
											2020-07-07 19:21:14 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |                         const btn = this.startbtn.current; | 
					
						
							|  |  |  |                         btn.disabled = false; | 
					
						
							| 
									
										
										
										
											2020-06-25 22:43:26 +02:00
										 |  |  |                     } | 
					
						
							|  |  |  |                 })) | 
					
						
							|  |  |  |             .catch(() => { | 
					
						
							|  |  |  |                 console.log("no connection to backend"); | 
					
						
							|  |  |  |             }); | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export default MovieSettings; |