Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 266 | Rev 1960 | 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'
2
import {axios} from '../../utils'
3
import Slider from "react-slick";
4
// import "slick-carousel/slick/slick.css";
5
// import "slick-carousel/slick/slick-theme.css";
6
 
7
const  SampleNextArrow = (props) => {
8
    const { className, style, onClick } = props;
9
    return (
10
        <div
11
            className={className}
12
            style={{ ...style, display: "block", backgroundColor: "transparent" }}
13
            onClick={onClick}
14
        />
15
    );
16
}
17
 
18
const  SamplePrevArrow = (props) => {
19
    const { className, style, onClick } = props;
20
    return (
21
        <div
22
            className={className}
23
            style={{ ...style, display: "block", backgroundColor: "transparent" }}
24
            onClick={onClick}
25
        />
26
    );
27
}
28
 
29
export default props => {
30
    const [categories, setCategories] = React.useState([])
31
    const [category, setCategory] = React.useState('capsules')
32
    const [title, setTitle] = React.useState('Cápsulas de Microaprendizaje')
33
    const [capsules, setCapsules] = React.useState([])
34
    const [search, setSearch] = React.useState('')
35
    const load = async (_search = search, _entity = category) => {
36
        try {
37
            const res = await axios.get('/marketplace?search='+_search+'&entity='+_entity)
38
            if(res.data.success){
39
                setCapsules(res.data.data)
40
            }
41
        } catch (error) {
42
            console.log('>>: error > ', error)
43
        }
44
    }
45
    const getCategories = async () => {
46
        const categories = await axios.get('/marketplace/categories')
47
        if(categories.data.data){
48
            const _categories = Object.keys(categories.data.data).map(element => {
49
                return {
50
                    label: categories.data.data[element],
51
                    value: element
52
                }
53
            })
54
            setCategories(_categories)
55
        }
56
    }
57
    const checkParams = () => {
58
        const url = window.location.href
59
        const hasEntity = url.includes('?entity=')
60
        if(hasEntity){
61
            const value = url.split('?entity=')[1]
62
            if(value)
63
                setCategory(value)
64
        }
65
    }
66
    React.useEffect(() => {
67
        load()
68
        getCategories()
69
        checkParams()
70
    }, [])
71
 
72
    const enroll = async url => {
73
        try {
74
            const res = await axios.post(url)
75
            load()
76
        } catch (error) {
77
            console.log('>>: error > ', error)
78
        }
79
    }
80
    const settings = {
81
        // dots: true,
82
        infinite: true,
83
        speed: 1500,
84
        slidesToShow: capsules.length < 4 ? 1 : 4,
85
        slidesToScroll: 1,
86
        nextArrow: <SampleNextArrow />,
87
        prevArrow: <SamplePrevArrow />,
88
        responsive: [{
89
            breakpoint: 600,
90
            settings: {
91
              slidesToShow: 2,
92
              slidesToScroll: 2,
93
              initialSlide: 2
94
            }
95
        }]
96
    };
97
    return (
98
        <React.Fragment>
99
            {/* <div className="container">
100
                <ul
101
                    className="breadcrumb text-center"
102
                    style={{
103
                        background: 'transparent',
104
                        width: '100%',
105
                        display: 'flex',
106
                        justifyContent: 'center'
107
                    }}
108
                >
109
                    <li> {props.backendVars.labelMarketplace} </li>
110
                </ul>
111
            </div>       */}
112
            <section
113
                className="companies-info"
114
                style={{
115
                    backgroundColor: '#fbfaf1'
116
                }}
117
            >
118
                <div className="container">
119
                    <div className="company-title">
120
                        <div className="section_admin_title_buttons">
121
                            <div className="text-center">
122
                                {/* <h2 className="title">{title || props.backendVars.labelCapsules}</h2> */}
123
                                <h1 className="title">
267 geraldo 124
                                    Programas, Desarrollo, Contenido, Capacitación Transformación de Personas, Líderes y Empresas
1 www 125
                                </h1>
126
                            </div>
127
                        </div>
128
                    </div>
129
                    <div className="company-title">
130
                        <div className="section_admin_title_buttons">
131
                        <div className="card">
132
                            <div className="card-body">
133
                                <form name="form-capsule-search" id="form-capsule-search">
134
                                    <div
135
                                        className="row"
136
                                    >
137
                                        <div
138
                                            className="col-12 col-md-8 col-sm-12"
139
                                        >
140
                                            <div className="form-group">
141
                                                <label htmlFor="search" className="p-2">Buscar</label>
142
                                                <input
143
                                                    type="text"
144
                                                    name="search"
145
                                                    id="search"
146
                                                    className="form-control"
147
                                                    onChange={e => {
148
                                                        const value = e.target.value
149
                                                        setSearch(value)
150
                                                        load(value)
151
                                                    }}
152
                                                    value={search}
153
                                                    placeholder="Buscar"
154
                                                />
155
                                            </div>
156
                                        </div>
157
                                        <div
158
                                            className="col-12 col-md-4 col-sm-12"
159
                                        >
160
                                            <div className="form-group">
161
                                                <label htmlFor="select" className="p-2">Categorías</label>
162
                                                <select
163
                                                    name="select"
164
                                                    className="form-control"
165
                                                    id="select"
166
                                                    value={category}
167
                                                    onChange={e => {
168
                                                        const value = e.target.value
169
                                                        setCategory(value)
170
                                                        load(search, value)
171
                                                    }}
172
                                                >
173
                                                    {
174
                                                        categories.map((element, i) => {
175
                                                            return(
176
                                                                <option
177
                                                                    value={element.value}
178
                                                                    key={i.toString()}
179
                                                                >
180
                                                                    {
181
                                                                        element.label
182
                                                                    }
183
                                                                </option>
184
                                                            )
185
                                                        })
186
                                                    }
187
                                                </select>
188
                                            </div>
189
                                        </div>
190
                                    </div>
191
                                </form>
192
                            </div>
193
                        </div>
194
                        </div>
195
                    </div>
196
                    <div className="companies-list">
197
                        <h3 className="text-primary p-2"> {title} </h3>
198
                        <Slider {...settings}>
199
                            {
200
                                capsules.map((element, i) => {
201
                                    return(
202
                                        <div className="w-100" key={element.name}>
203
                                            <div className="company_profile_info">
204
                                                <div className="microlearning-up-info">
205
                                                    <img src={element.image} alt={element.name} />
206
                                                    <h3>{element.name}</h3>
207
                                                    <h4>{props.backendVars.labelStatus} : {element.status}</h4>
208
                                                </div>
209
                                                {
210
                                                    element.link_enroll && (
211
                                                        <ul>
212
                                                            <li>
213
                                                                <a
214
                                                                    onClick={() => enroll(element.link_enroll)}
215
                                                                    title={'Seleccionar: '+element.name}
216
                                                                    className="view-more-pro btn-capsule-enroll cursor-pointer"
217
                                                                >
218
                                                                    {props.backendVars.labelEnroll}
219
                                                                </a>
220
                                                            </li>
221
                                                        </ul>
222
                                                    )
223
                                                }
224
                                            </div>
225
                                        </div>
226
                                    )
227
                                })
228
                            }
229
                        </Slider>
230
                    </div>
231
                </div>
232
            </section>
233
        </React.Fragment>
234
    );
235
}