Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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