Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 2618 | Rev 2620 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 www 1
import React from 'react'
2616 stevensc 2
import { axios } from '../../utils'
1 www 3
import Slider from "react-slick";
4
// import "slick-carousel/slick/slick.css";
5
// import "slick-carousel/slick/slick-theme.css";
6
 
2616 stevensc 7
const SampleNextArrow = (props) => {
1 www 8
    const { className, style, onClick } = props;
9
    return (
10
        <div
11
            className={className}
12
            style={{ ...style, display: "block", backgroundColor: "transparent" }}
13
            onClick={onClick}
14
        />
15
    );
16
}
17
 
2616 stevensc 18
const SamplePrevArrow = (props) => {
1 www 19
    const { className, style, onClick } = props;
20
    return (
21
        <div
22
            className={className}
23
            style={{ ...style, display: "block", backgroundColor: "transparent" }}
24
            onClick={onClick}
25
        />
26
    );
27
}
28
 
29
export default props => {
30
    const [categories, setCategories] = React.useState([])
31
    const [category, setCategory] = React.useState('capsules')
32
    const [title, setTitle] = React.useState('Cápsulas de Microaprendizaje')
33
    const [capsules, setCapsules] = React.useState([])
34
    const [search, setSearch] = React.useState('')
35
    const load = async (_search = search, _entity = category) => {
36
        try {
2616 stevensc 37
            const res = await axios.get('/marketplace?search=' + _search + '&entity=' + _entity)
38
            if (res.data.success) {
1 www 39
                setCapsules(res.data.data)
40
            }
41
        } catch (error) {
42
            console.log('>>: error > ', error)
43
        }
44
    }
45
    const getCategories = async () => {
46
        const categories = await axios.get('/marketplace/categories')
2616 stevensc 47
        if (categories.data.data) {
1 www 48
            const _categories = Object.keys(categories.data.data).map(element => {
49
                return {
50
                    label: categories.data.data[element],
51
                    value: element
52
                }
53
            })
54
            setCategories(_categories)
55
        }
56
    }
57
    const checkParams = () => {
58
        const url = window.location.href
59
        const hasEntity = url.includes('?entity=')
2616 stevensc 60
        if (hasEntity) {
1 www 61
            const value = url.split('?entity=')[1]
2616 stevensc 62
            if (value)
1 www 63
                setCategory(value)
64
        }
65
    }
66
    React.useEffect(() => {
67
        load()
68
        getCategories()
69
        checkParams()
70
    }, [])
71
 
72
    const enroll = async url => {
73
        try {
74
            const res = await axios.post(url)
75
            load()
76
        } catch (error) {
77
            console.log('>>: error > ', error)
78
        }
79
    }
80
    const settings = {
81
        // dots: true,
82
        infinite: true,
83
        speed: 1500,
84
        slidesToShow: capsules.length < 4 ? 1 : 4,
85
        slidesToScroll: 1,
86
        nextArrow: <SampleNextArrow />,
87
        prevArrow: <SamplePrevArrow />,
88
        responsive: [{
89
            breakpoint: 600,
90
            settings: {
2616 stevensc 91
                slidesToShow: 2,
92
                slidesToScroll: 2,
93
                initialSlide: 2
1 www 94
            }
95
        }]
96
    };
97
    return (
98
        <React.Fragment>
2616 stevensc 99
            <section className="companies-info">
1 www 100
                <div className="container">
101
                    <div className="company-title">
2618 stevensc 102
                        <form name="form-capsule-search">
103
                            <div className="section_admin_title_buttons">
2619 stevensc 104
                                <div className="form-group search_input">
2616 stevensc 105
                                    <input
106
                                        type="text"
107
                                        name="search"
108
                                        id="search"
109
                                        className="form-control"
110
                                        onChange={e => {
111
                                            const value = e.target.value
112
                                            setSearch(value)
113
                                            load(value)
114
                                        }}
115
                                        value={search}
116
                                        placeholder="Realiza una busqueda"
117
                                    />
118
                                </div>
2619 stevensc 119
                                <div className="form-group search_categories">
2616 stevensc 120
                                    <select
121
                                        name="select"
122
                                        className="form-control"
123
                                        value={category}
124
                                        onChange={e => {
125
                                            setCategory(e.target.value)
126
                                            load(search, e.target.value)
127
                                        }}
1 www 128
                                    >
2617 stevensc 129
                                        <option value="" disabled>Seleccione una categoria</option>
2616 stevensc 130
                                        {
131
                                            categories.map((element, i) =>
132
                                                <option value={element.value} key={i.toString()}>
133
                                                    {element.label}
134
                                                </option>
135
                                            )
136
                                        }
137
                                    </select>
138
                                </div>
2618 stevensc 139
                            </div>
140
                        </form>
1 www 141
                    </div>
2501 stevensc 142
                    <div className="list-col">
2616 stevensc 143
                        <h3 className="text-primary p-2">{title}</h3>
1 www 144
                        <Slider {...settings}>
145
                            {
146
                                capsules.map((element, i) => {
2616 stevensc 147
                                    return (
1 www 148
                                        <div className="w-100" key={element.name}>
149
                                            <div className="company_profile_info">
150
                                                <div className="microlearning-up-info">
151
                                                    <img src={element.image} alt={element.name} />
152
                                                    <h3>{element.name}</h3>
153
                                                    <h4>{props.backendVars.labelStatus} : {element.status}</h4>
154
                                                </div>
155
                                                {
156
                                                    element.link_enroll && (
157
                                                        <ul>
158
                                                            <li>
159
                                                                <a
160
                                                                    onClick={() => enroll(element.link_enroll)}
2616 stevensc 161
                                                                    title={'Seleccionar: ' + element.name}
1 www 162
                                                                    className="view-more-pro btn-capsule-enroll cursor-pointer"
163
                                                                >
164
                                                                    {props.backendVars.labelEnroll}
165
                                                                </a>
166
                                                            </li>
167
                                                        </ul>
168
                                                    )
169
                                                }
2616 stevensc 170
                                            </div>
1 www 171
                                        </div>
172
                                    )
173
                                })
174
                            }
175
                        </Slider>
176
                    </div>
2616 stevensc 177
                </div>
178
            </section>
1 www 179
        </React.Fragment>
180
    );
181
}