diff --git a/src/areainfo/Suggestion.js b/src/areainfo/Suggestion.js
index 87335e1..f7d7b1f 100644
--- a/src/areainfo/Suggestion.js
+++ b/src/areainfo/Suggestion.js
@@ -6,6 +6,7 @@ import Related from '../reccomenders/Related';
import Search from '../reccomenders/Search';
import fvitali from '../reccomenders/fvitali';
import popGlobaleAssoluta from '../reccomenders/popGlobaleAssoluta';
+import Recent from '../reccomenders/Recent';
// and so on..
@@ -40,6 +41,8 @@ class Suggestion extends Component {
+
+
{/* lasciare questo per ultimo */}
diff --git a/src/reccomenders/Recent.js b/src/reccomenders/Recent.js
index e69de29..89033c3 100644
--- a/src/reccomenders/Recent.js
+++ b/src/reccomenders/Recent.js
@@ -0,0 +1,146 @@
+//http://site1825.tw.cs.unibo.it/TW/globpop fvitali
+//http://site1825.tw.cs.unibo.it/video.json originale videolist
+
+import React from 'react';
+import { Col, ListGroup, Card, CardDeck } from 'react-bootstrap'; // eslint-disable-line no-unused-vars
+import axios from 'axios'; // eslint-disable-line no-unused-vars
+import { Link } from 'react-router-dom'; // eslint-disable-line no-unused-vars
+/*eslint no-console: ["error", { allow: ["warn", "error", "info"] }] */
+import moment from "moment";
+
+class Recent extends React.Component {
+ state = {
+ error: null,
+ isLoaded: false,
+ items: [],
+ headers: null
+ };
+
+ ISO_8601parse(a) {
+ return moment(a, moment.ISO_8601).format('ddd, DD/MM/YYYY hh:mm:ss');
+ }
+
+ componentDidMount() {
+ // axios.get('http://site1825.tw.cs.unibo.it/TW/globpop', {
+ // 'params':{
+ // 'id':this.props.id
+ // }
+ // }).then(
+ // response => {
+ // //this.shuffleArray(response.data);
+ // console.info ('a',response.data);
+ this.getThumbnailsNames(JSON.parse(localStorage.getItem('lastWatched')) );
+ // console.info(response.data.recommended);
+ // // this.setState({
+ // // isLoaded: true,
+ // // items:response.data.recommended,
+ // // });
+
+ // },
+ // // Note: it's important to handle errors here
+ // // instead of a catch() block so that we don't swallow
+ // // exceptions from actual bugs in components.
+ // error => {
+ // console.error(error);
+ // this.setState({
+ // isLoaded: true,
+ // error
+ // });
+ // }
+ // );
+ }
+
+ // METODI
+ getThumbnailsNames(recentVideoList) {
+ let idToLookFor = recentVideoList.map(item => item.id);
+ axios.get('https://www.googleapis.com/youtube/v3/videos', {
+ params: {
+ part: 'snippet',
+ id: idToLookFor.toString(),
+ key: 'AIzaSyA21Odw9UdfiOJnxvA_eDfOW0OxuUfHKig',
+ fields: 'items(id,snippet/thumbnails/medium,snippet/title)'
+ }
+ })
+
+ .then(
+ res1 => {
+ res1.data.items.map(resCurrentValue =>
+ Object.defineProperties(
+ recentVideoList.find(videoItem => {
+ return videoItem.id === resCurrentValue.id;
+ }),
+ {
+ 'thumbnail':
+ { value: resCurrentValue.snippet.thumbnails.medium.url },
+ 'name':
+ {value: resCurrentValue.snippet.title}
+ })
+ );
+ this.setState({
+ isLoaded: true,
+ items: recentVideoList
+ });
+ })
+ }
+
+
+
+ /*shuffleArray(videoarray) {
+ for (let i = videoarray.length - 1; i > 0; i--) {
+ const j = Math.floor(Math.random() * (i + 1));
+ [videoarray[i], videoarray[j]] = [videoarray[j], videoarray[i]]; // eslint-disable-line no-param-reassign
+ }
+ // Durstenfeld shuffle.
+ // https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm
+ }*/
+
+ render() {
+ const recentVideoList = JSON.parse(localStorage.getItem('lastWatched'))
+ const { error, isLoaded, items } = this.state;
+ if (error) {
+ return (
+
+ Error: {error.message} -- Cannot get {error.config.url}
+
+ );
+ } else if (!isLoaded) {
+ return (
+
+
+ Loading...
+
+
+ );
+ } else {
+ return (
+
+ {items.map(item=>(
+
+
+
+
+
+ {item.name}
+ {item.lastSelected}
+
+
+
+
+ ))}
+
+
+ );
+ }
+ }
+}
+
+
+
+export default Recent;
\ No newline at end of file
diff --git a/src/reccomenders/fvitali.js b/src/reccomenders/fvitali.js
index 09fa81e..bd2bf5f 100644
--- a/src/reccomenders/fvitali.js
+++ b/src/reccomenders/fvitali.js
@@ -64,7 +64,7 @@ class fvitali extends React.Component {
.then(
res1 => {
- res1.data.items.map(resCurrentValue => {
+ res1.data.items.map(resCurrentValue =>
Object.defineProperties(
reccomended.find(videoItem => {
return videoItem.videoID === resCurrentValue.id;
@@ -74,8 +74,8 @@ class fvitali extends React.Component {
{ value: resCurrentValue.snippet.thumbnails.medium.url },
'name':
{value: resCurrentValue.snippet.title}
- });
- });
+ })
+ );
this.setState({
isLoaded: true,
items: reccomended
@@ -95,8 +95,7 @@ class fvitali extends React.Component {
}*/
render() {
- const ISO_8601parse = this.ISO_8601parse;
- const { error, isLoaded, items, headers } = this.state;
+ const { error, isLoaded, items } = this.state;
if (error) {
return (
@@ -115,7 +114,7 @@ class fvitali extends React.Component {
return (
{items.map(item=>(
-
+