The admin page that has all the fetched elements now prints all the elements out in a grid. Tried a cool thing on how to render the dropdown for changing the status of a element, but its not working atm.
This commit is contained in:
		@@ -4,16 +4,50 @@ import requestElement from './styles/requestElementStyle.jsx'
 | 
			
		||||
 | 
			
		||||
import { getCookie } from './Cookie.jsx';
 | 
			
		||||
 | 
			
		||||
class DropdownList extends React.Component {
 | 
			
		||||
	constructor(props) {
 | 
			
		||||
		super(props);
 | 
			
		||||
		this.state = {
 | 
			
		||||
			filter: ['all', 'requested', 'downloading', 'downloaded'],
 | 
			
		||||
			sort: ['requested_date', 'name', 'status', 'requested_by', 'ip', 'user_agent'],
 | 
			
		||||
			status: ['requested', 'downloading', 'downloaded'],
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	render() {
 | 
			
		||||
	    const {elementType, elementId, elementStatus, elementCallback, props} = this.props;
 | 
			
		||||
 | 
			
		||||
	    console.log(elementCallback('downloaded'))
 | 
			
		||||
 | 
			
		||||
	    switch (elementType) {
 | 
			
		||||
	    	case 'status':
 | 
			
		||||
	    		return (
 | 
			
		||||
	    			<div>HERE</div>
 | 
			
		||||
	    		)
 | 
			
		||||
	    }
 | 
			
		||||
 | 
			
		||||
	    return (
 | 
			
		||||
	      <div {...props}>
 | 
			
		||||
 | 
			
		||||
	      </div>
 | 
			
		||||
	    );
 | 
			
		||||
	  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class RequestElement extends React.Component {
 | 
			
		||||
	constructor(props) {
 | 
			
		||||
		super(props);
 | 
			
		||||
		this.default_requestList = null;
 | 
			
		||||
		this.state = {
 | 
			
		||||
			dropDownState: undefined,
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	filterRequestList(requestList, filter) {
 | 
			
		||||
		if (filter === 'all')
 | 
			
		||||
			return requestList
 | 
			
		||||
 | 
			
		||||
		if (filter === 'movie' || filter === 'show')
 | 
			
		||||
			return requestList.filter(item => item.type === filter)
 | 
			
		||||
		return requestList.filter(item => item.status === filter)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -28,32 +62,91 @@ class RequestElement extends React.Component {
 | 
			
		||||
			requestList.reverse();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	userAgent(agent) {
 | 
			
		||||
		if (agent) {
 | 
			
		||||
			try {
 | 
			
		||||
				return agent.split(" ")[1].replace(/[\(\;]/g, '');
 | 
			
		||||
			}
 | 
			
		||||
			catch(e) {
 | 
			
		||||
				return agent;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		return '';
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	updateDropDownState(status) {
 | 
			
		||||
		if (status !== this.dropDownState) {
 | 
			
		||||
			this.dropDownState = status;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	ItemsStatusDropdown(id, type, status) {
 | 
			
		||||
		return (
 | 
			
		||||
			<div>
 | 
			
		||||
				<select id="lang" 
 | 
			
		||||
					defaultValue={status}
 | 
			
		||||
					onChange={event => this.updateDropDownState(event.target.value)} 
 | 
			
		||||
					>
 | 
			
		||||
					<option value='requested'>Requested</option>
 | 
			
		||||
					<option value='downloading'>Downloading</option>
 | 
			
		||||
					<option value='downloaded'>Downloaded</option>
 | 
			
		||||
				</select>
 | 
			
		||||
 | 
			
		||||
				<button onClick={() => { this.updateRequestedItem(id, type)}}>Update Status</button>
 | 
			
		||||
			</div>
 | 
			
		||||
		)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	updateRequestedItem(id, type) {
 | 
			
		||||
		console.log(id, type, this.dropDownState);
 | 
			
		||||
		Promise.resolve()
 | 
			
		||||
		fetch('https://apollo.kevinmidboe.com/api/v1/plex/request/' + id, {
 | 
			
		||||
			method: 'PUT',
 | 
			
		||||
			headers: {
 | 
			
		||||
				'Content-type': 'application/json',
 | 
			
		||||
			  	'authorization': getCookie('token')
 | 
			
		||||
			},
 | 
			
		||||
			body: JSON.stringify({
 | 
			
		||||
		      type: type,
 | 
			
		||||
		      status: this.dropDownState,
 | 
			
		||||
		    })
 | 
			
		||||
		})
 | 
			
		||||
		.then(response =>  {
 | 
			
		||||
				if (response.status !== 200) {
 | 
			
		||||
					console.log('error');
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				response.json()
 | 
			
		||||
				.then(data => {
 | 
			
		||||
					if (data.success === true) {
 | 
			
		||||
						console.log('UPDATED :', id, ' with ', this.dropDownState)
 | 
			
		||||
					}
 | 
			
		||||
				})
 | 
			
		||||
		})
 | 
			
		||||
		.catch(error => {
 | 
			
		||||
			new Error(error);
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	createHTMLElement(data, index) {
 | 
			
		||||
		var posterPath = 'https://image.tmdb.org/t/p/w300' + data.image_path;
 | 
			
		||||
 | 
			
		||||
		if (data.user_agent) {
 | 
			
		||||
			var user_agent = data.user_agent.split(" ");
 | 
			
		||||
			
 | 
			
		||||
			console.log(data.user_agent.substring('Mozilla'))
 | 
			
		||||
			if (data.user_agent.includes('Mozilla'))
 | 
			
		||||
				var agent_shortened = user_agent[1].replace(/[\(\;]/g, '');
 | 
			
		||||
			else
 | 
			
		||||
				var agent_shortened = user_agent[0];
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return (
 | 
			
		||||
			<div style={requestElement.wrappingDiv} key={index}>
 | 
			
		||||
				<img style={requestElement.requestPoster} src={posterPath}></img>
 | 
			
		||||
				<div style={requestElement.infoDiv}>
 | 
			
		||||
					<span><b>Name</b>: {data.name} </span>
 | 
			
		||||
					<span><b>Name</b>: {data.name} </span><br></br>
 | 
			
		||||
					<span><b>Year</b>: {data.year}</span><br></br>
 | 
			
		||||
					<span><b>Type</b>: {data.type}</span><br></br>
 | 
			
		||||
					<span><b>Status</b>: {data.status}</span><br></br>
 | 
			
		||||
					<span><b>Address</b>: {data.ip}</span><br></br>
 | 
			
		||||
					<span><b>Requested Data:</b> {data.requested_date}</span><br></br>
 | 
			
		||||
					<span><b>Requested By:</b> {data.requested_by}</span><br></br>
 | 
			
		||||
					<span><b>Agent</b>: {agent_shortened}</span><br></br>
 | 
			
		||||
					<span><b>Agent</b>: { this.userAgent(data.user_agent) }</span><br></br>
 | 
			
		||||
				</div>
 | 
			
		||||
 | 
			
		||||
				{ this.ItemsStatusDropdown(data.id, data.type, data.status) }
 | 
			
		||||
			</div>
 | 
			
		||||
		)
 | 
			
		||||
	}
 | 
			
		||||
@@ -144,6 +237,8 @@ class FetchRequested extends React.Component {
 | 
			
		||||
					<option value="requested">Requested</option>
 | 
			
		||||
					<option value="downloading">Downloading</option>
 | 
			
		||||
					<option value="downloaded">Downloaded</option>
 | 
			
		||||
					<option value='movie'>Movies</option>
 | 
			
		||||
					<option value='show'>Shows</option>
 | 
			
		||||
				</select>
 | 
			
		||||
 | 
			
		||||
				<select id="lang" onChange={event => this.updateSort(event.target.value)} value={this.state.value}>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user