Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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