Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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