import React from 'react'; import requestElement from './styles/requestElementStyle.jsx' import { getCookie } from './Cookie.jsx'; class RequestElement extends React.Component { constructor(props) { super(props); this.default_requestList = null; } filterRequestList(requestList, filter) { if (filter === 'all') return requestList return requestList.filter(item => item.status === filter) } sortRequestList(requestList, sort_type, reversed) { requestList.sort(function(a,b) { if(a[sort_type] < b[sort_type]) return -1; if(a[sort_type] > b[sort_type]) return 1; return 0; }); if (reversed) requestList.reverse(); } createHTMLElement(data, index) { var posterPath = 'https://image.tmdb.org/t/p/w300' + data.image_path; if (data.user_agent !== null) { var user_agent = data.user_agent.split(" "); var agent_shortened = user_agent[1].replace(/[\(\;]/g, '') } return (
Name: {data.name} Year: {data.year}

Status: {data.status}

Address: {data.ip}

Requested Data: {data.requested_date}

Requested By: {data.requested_by}

Agent: {agent_shortened}

) } render() { const {requestedElementsList, requestedElementsFilter, requestedElementsSort, props} = this.props; var filteredRequestedList = this.filterRequestList(requestedElementsList, requestedElementsFilter) this.sortRequestList(filteredRequestedList, requestedElementsSort.value, requestedElementsSort.reversed) return (
{filteredRequestedList.map((requestItem, index) => this.createHTMLElement(requestItem, index))}
); } } class FetchRequested extends React.Component { constructor(props){ super(props) this.state = { requested_objects: [], filter: 'all', sort: { value: 'requested_date', reversed: false }, } } componentDidMount(){ Promise.resolve() fetch('https://apollo.kevinmidboe.com/api/v1/plex/requests/all', { method: 'GET', headers: { 'Content-type': 'application/json', 'authorization': getCookie('token') } }) .then(response => { if (response.status !== 200) { console.log('error'); } response.json() .then(data => { if (data.success === true) { this.setState({ requested_objects: data.requestedItems }) } }) }) .catch(error => { new Error(error); }) } changeFilter(filter) { this.setState({ filter: filter }) } updateSort(sort=null, reverse=false) { if (sort) { this.setState({ sort: { value: sort, reversed: reverse } }) } else { this.setState({ sort: { value: this.state.sort.value, reversed: reverse } }) } } render(){ return(
) } } export default FetchRequested;