Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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