TorrentTable gets passed a json list of torrents and this displays it in a table view.
This commit is contained in:
		
							
								
								
									
										85
									
								
								client/app/components/admin/torrentTable.jsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								client/app/components/admin/torrentTable.jsx
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,85 @@
 | 
				
			|||||||
 | 
					import React, { Component } from 'react';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import { fetchJSON } from '../http.jsx'; 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class TorrentTable extends Component {
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					   constructor() {
 | 
				
			||||||
 | 
					      super();
 | 
				
			||||||
 | 
					      this.state = {
 | 
				
			||||||
 | 
					         torrentResponse: '',
 | 
				
			||||||
 | 
					         showResults: false,
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   componentWillReceiveProps(props) {
 | 
				
			||||||
 | 
					      if (props.response !== undefined) {
 | 
				
			||||||
 | 
					         this.setState({
 | 
				
			||||||
 | 
					            torrentResponse: props.response.map((torrent, index) => {
 | 
				
			||||||
 | 
					               return (
 | 
				
			||||||
 | 
					                  <tr key={index}>
 | 
				
			||||||
 | 
					                     <td>{torrent.name}</td>
 | 
				
			||||||
 | 
					                     <td>{torrent.size}</td>
 | 
				
			||||||
 | 
					                     <td>{torrent.seed}</td>
 | 
				
			||||||
 | 
					                     <td><button onClick={() => {this.sendToDownload(torrent)}}>Send to download</button></td>
 | 
				
			||||||
 | 
					                  </tr>
 | 
				
			||||||
 | 
					               )
 | 
				
			||||||
 | 
					            }),
 | 
				
			||||||
 | 
					            showResults: true,
 | 
				
			||||||
 | 
					         })
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      else {
 | 
				
			||||||
 | 
					         this.setState({
 | 
				
			||||||
 | 
					            showResults: false,
 | 
				
			||||||
 | 
					         })
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   sendToDownload(torrent) {
 | 
				
			||||||
 | 
					      let data = {magnet: torrent.magnet}
 | 
				
			||||||
 | 
					      fetchJSON('https://apollo.kevinmidboe.com/api/v1/pirate/add', 'POST', data)
 | 
				
			||||||
 | 
					      .then((response) => {
 | 
				
			||||||
 | 
					         // TODO: Show a card with response that the item has been sent, and the status of response.
 | 
				
			||||||
 | 
					         console.log(response)
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					      .catch((error) => {
 | 
				
			||||||
 | 
					         console.error(error);
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   generateTable() {
 | 
				
			||||||
 | 
					      let style = {
 | 
				
			||||||
 | 
					         table: {
 | 
				
			||||||
 | 
					            width: '80%',
 | 
				
			||||||
 | 
					            marginRight: 'auto',
 | 
				
			||||||
 | 
					            marginLeft: 'auto',
 | 
				
			||||||
 | 
					         },
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      return (
 | 
				
			||||||
 | 
					         <table style={style.table}>
 | 
				
			||||||
 | 
					            <thead>
 | 
				
			||||||
 | 
					               <tr>
 | 
				
			||||||
 | 
					                  <th>Name</th>
 | 
				
			||||||
 | 
					                  <th>Size</th>
 | 
				
			||||||
 | 
					                  <th>Seed</th>
 | 
				
			||||||
 | 
					                  <th>Add</th>
 | 
				
			||||||
 | 
					               </tr>
 | 
				
			||||||
 | 
					            </thead>
 | 
				
			||||||
 | 
					            <tbody>
 | 
				
			||||||
 | 
					               { this.state.torrentResponse }
 | 
				
			||||||
 | 
					            </tbody>
 | 
				
			||||||
 | 
					         </table>
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   render() {
 | 
				
			||||||
 | 
					      return (
 | 
				
			||||||
 | 
					         <div>
 | 
				
			||||||
 | 
					            { this.state.showResults ? this.generateTable() : null }
 | 
				
			||||||
 | 
					         </div>
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default TorrentTable
 | 
				
			||||||
		Reference in New Issue
	
	Block a user