Home Reference Source Repository

component/Profile/ContentBookmarks.js

import React, { Component } from 'react'
import {Content, Card,CardTitle,CardText,Layout,Textfield,CardActions,Button,Chip} from 'react-mdl';
import { Router, Route, Link, browserHistory, IndexRoute  } from 'react-router'
import { connect } from "react-redux"
import {findDOMNode, render} from 'react-dom'
import { changeMenu } from "../Actions/profileActions"

import "../../extra/material.js"
import { fetchBookmarks, setBookmarks, fetchUsers, removeBookmark } from "../Actions/userActions.js"
import Toast from "../Toast.js"

var componentStyle = {
    margin: 'auto',
}
var formStyle = {
    marginTop: '5%'
}
var spacerStyle = {
    height: '50px',
    backgroundColor: '#f3f3f3',
    backgroundSize: 'cover'
}
var cardStyle = {
    width: '80%',
    margin: 'auto',
    paddingBottom: '40px'
}

var cardTitleStyle = {
}

@connect((store) => {
  return {
    user: store.user,
  };
})/*dont add semicolon here!*/


class ContentBookmarks extends Component {
    /**
     * fetches users
     */
    fetchUsers() {
        this.props.dispatch(fetchUsers())
    }
    /**
     * fetches bookmarks
     */
    fetchBookmarks() {
        this.props.dispatch(fetchBookmarks())
    }
    /**
     * sets bookmarks
     * {params} bookmarks - information of bookmarks
     */    
    setBookmarks(bookmarks) {
        this.props.dispatch(setBookmarks(bookmarks))
    }
    /**
     * removes bookmarks
     * {params} bookmarks - information of bookmarks
     */    
    removeBookmark(bookmarks) {
        this.props.dispatch(removeBookmark(bookmarks))
    }

    /**
     * called before dom elements are mounted, to get current user
     */
    componentWillMount() {
        this.fetchBookmarks()
        this.fetchUsers()
    }
    /**
     * removes bookmarks
     * {params} bookmarks - information of bookmarks
     */   
    removebookmark(key) {
        // grab information of bookmarks and remove the bookmark of the key_name
        var bookmarks = {key: key}
        console.log('bookmarks is', bookmarks)
        this.removeBookmark(bookmarks)
        this.fetchBookmarks()
    }

    /**
    * Loads the bookmarks profile
    * @return {html} - returns course profile depending on type of user
    */
    render(){
        const {user} = this.props

        if (user.bookmarks !=null && user.userID !=null && user.users!=null) {
            var bookmarks = []
            var userID = user.userID
            var bookmarkKeys = Object.keys(user.bookmarks)
            var userKeys = Object.keys(user.users)
            console.log(bookmarkKeys)
            for (var i=0; i<bookmarkKeys.length; i++) {
                for (var j=0; j<userKeys.length; j++) {
                    if (user.bookmarks[bookmarkKeys[i]].key == userKeys[j]) {
                        bookmarks.push(<h4>{user.users[userKeys[j]].email}</h4>)
                        bookmarks.push(<div>
                        <Button accent ripple onClick={this.removebookmark.bind(this,bookmarkKeys[i])} className="mdl-color-text--indigo btn btn-primary">Remove</Button>
                        </div>)
                        if (i<bookmarkKeys.length-1) {
                            bookmarks.push(<hr/>)
                        }
                    }
                }
            }

            
            return(
                <Content className="learn-content">

                  <div className="learn-content mdl-typography--text-center">
                    <div style={spacerStyle} />
                    <Card shadow={0} style={cardStyle} >
                  <div className="mdl-layout__content mdl-typography--text-center" style={{width: '100%', margin: 'auto'}}>
                    <div className="grid">
                      <div className="card mdl-shadow--2dp">
<CardTitle style={cardTitleStyle} className="mdl-color--indigo mdl-color-text--white mdl-shadow--2dp">Bookmarks</CardTitle>
                        </div>
                                {bookmarks}

                        </div>
                    </div>
                  
                  </Card>
                  </div>
                  <div style={spacerStyle} />

                </Content>

        )
        } else {
            return(
                <Content className="learn-content">
                  <div className="learn-content mdl-typography--text-center">
                    <div style={spacerStyle} />
                    <Card shadow={0} style={cardStyle} >
                  <div className="mdl-layout__content mdl-typography--text-center" style={{width: '100%', margin: 'auto'}}>
                    <div className="grid">
                      <div className="card mdl-shadow--2dp">
<CardTitle style={cardTitleStyle} className="mdl-color--indigo mdl-color-text--white mdl-shadow--2dp">Bookmarks</CardTitle>
                        </div>
                                <h4> NO VENDORS BOOKMARKED </h4>

                        </div>
                    </div>
                  
                  </Card>
                  </div>
                  <div style={spacerStyle} />

                </Content>

        )       
        }
    }
};


export default ContentBookmarks