Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Autoría | Ultima modificación | Ver Log |

import React from 'react'

const TimelineItem = ({addedOn, activity, imageName, isTitle}) => {
    return(
        <div
            className="timeline-item text-center"
        >
            <div
                className="container"
            >
                <div
                    className="row p-2"
                    style={{
                        borderBottom: '1px solid rgb(237 237 237)'
                    }}
                >
                    <div
                        className="col-12 col-sm-12 col-md-4"
                    >
                        <p
                            className={isTitle ? 'font-weight-bold' : ''}
                        >
                            <strong>
                                {addedOn}
                            </strong>
                        </p>
                    </div>
                    <div
                        className="col-12 col-sm-12 col-md-8"
                    >
                        <p
                            style={{
                                display: 'flex',
                                justifyContent: 'center',
                                alignItems: 'center',
                            }}
                            className={isTitle ? 'font-weight-bold' : ''}
                        >
                            {
                                imageName && (
                                    <img
                                        src={'/images/microlearning/'+imageName}
                                        style={{
                                            width: '6%'
                                        }}
                                    />
                                )
                            }
                            {activity}
                        </p>
                    </div>
                </div>
            </div>
        </div>
    )
}

export default props => {
    const handleScroll = (event) => {
        const node = event.target;
        if(node.clientHeight >= (node.scrollHeight * .65)){
            props.getMoreItems()
        }
    }
    const paneDidMount = (node) => {
        if(node) {      
            node.addEventListener("scroll", handleScroll.bind(this));      
        }
    }
    const getActivity = (activity) => {
        switch (activity) {
            case props.activities.ACTIVITY_APPROVED_TEST:
                return{
                    activity: "Aprobo un quiz",
                    imageName: "approved-test.svg"
                }
                break;
            case props.activities.ACTIVITY_COMPLETED_CAPSULE:
                return{
                    activity: "Completo una capsula",
                    imageName: "completed-capsule.svg"
                }
                break;
            case props.activities.ACTIVITY_COMPLETED_TOPIC:
                return{
                    activity: "Completo un topico",
                    imageName: "completed-topic.svg"
                }
                break;
            case props.activities.ACTIVITY_RETAKE_A_TEST:
                return{
                    activity: "Repitió un quiz",
                    imageName: 'retake-a-test.svg'
                }
                break;
            case props.activities.ACTIVITY_SIGNIN:
                return{
                    activity: "Inicio sesión",
                    imageName: "sign-in.svg"
                }
                break;
            case props.activities.ACTIVITY_SIGNOUT:
                return{
                    activity: "Cerro sesión",
                    imageName: "sign-out.svg"
                }
                break;
            case props.activities.ACTIVITY_START_CAPSULE:
                return{
                    activity: "Inicio una capsula",
                    imageName: "start-capsule.svg"
                }
                break;
            case props.activities.ACTIVITY_START_TOPIC:
                return{
                    activity: "Inicio un topico",
                    imageName: "start-topic.svg"
                }
                break;
            case props.activities.ACTIVITY_TAKE_A_TEST:
                return{
                    activity: "Hizo un quiz",
                    imageName: "take-a-test.svg"
                }
                break;
            case props.activities.ACTIVITY_VIEW_SLIDE:
                return{
                    activity: "Vió una diapositiva",
                    imageName: "view-slide.svg"
                }
                break;    
            default:
                return{
                    activity: 'Actividad'
                }
                break;
        }
    }

    return(
        <div
            className="acc-setting"
            style={{ position: "relative", maxHeight: '50vh', overflow: 'auto'}}
            ref={paneDidMount}
        >
            {
                props.timeline ?
                    <React.Fragment>
                        
                        <TimelineItem
                            addedOn="Fecha"
                            activity="Actividad"
                            isTitle
                        />
                        {
                            props.timeline.map((element, i) => {
                                return(
                                    <TimelineItem
                                        addedOn={element.added_on}
                                        {... getActivity(element.activity)}
                                        key={i}
                                    />
                                )
                            })
                        }
                    </React.Fragment>
                :
                <div
                    className="text-center"
                >
                    <h3> No hay elementos para visualizar </h3>
                </div>
            }
        </div>
    )
}