Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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