Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 3572 | Rev 3754 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 3572 Rev 3753
Línea 2... Línea 2...
2
import React from 'react'
2
import React from 'react'
3
import { axios } from '../../utils'
3
import { axios } from '../../utils'
4
import Slider from "react-slick";
4
import Slider from "react-slick";
5
import styled from 'styled-components';
5
import styled from 'styled-components';
Línea 6... Línea 6...
6
 
6
 
7
const StyledSlider = styled(Slider)`c
7
const StyledSlider = styled(Slider)`
8
    .slick-list {
8
    .slick-list {
9
        padding: 0 !important;
9
        padding: 0 !important;
10
    }
10
    }
11
    .slick-slide {
11
    .slick-slide {
Línea 35... Línea 35...
35
            grid-row: 1;
35
            grid-row: 1;
36
        }
36
        }
37
    }
37
    }
38
`;
38
`;
Línea 39... Línea -...
39
 
-
 
40
const SampleNextArrow = (props) => {
39
 
41
    const { className, style, onClick } = props;
40
const SampleNextArrow = ({ className, style, onClick }) => {
42
    return (
41
    return (
43
        <div
42
        <div
44
            className={className}
43
            className={className}
45
            style={{ ...style, display: "block", backgroundColor: "#D9D9D9", borderRadius: '100px' }}
44
            style={{ ...style, display: "block", backgroundColor: "#D9D9D9", borderRadius: '100px' }}
46
            onClick={onClick}
45
            onClick={onClick}
47
        />
46
        />
48
    );
47
    );
Línea 49... Línea -...
49
}
-
 
50
 
48
}
51
const SamplePrevArrow = (props) => {
49
 
52
    const { className, style, onClick } = props;
50
const SamplePrevArrow = ({ className, style, onClick }) => {
53
    return (
51
    return (
54
        <div
52
        <div
55
            className={className}
53
            className={className}
56
            style={{ ...style, display: "block", backgroundColor: "#D9D9D9", borderRadius: '100px' }}
54
            style={{ ...style, display: "block", backgroundColor: "#D9D9D9", borderRadius: '100px' }}
57
            onClick={onClick}
55
            onClick={onClick}
58
        />
56
        />
Línea 59... Línea 57...
59
    );
57
    );
-
 
58
}
-
 
59
 
-
 
60
const MarketPlace = ({
-
 
61
    backendVars,
-
 
62
    labels = {
-
 
63
        title: 'Cápsulas de Microaprendizaje'
60
}
64
    }
61
 
-
 
62
const MarketPlace = props => {
-
 
63
    const [categories, setCategories] = React.useState([])
65
}) => {
64
    const [category, setCategory] = React.useState('capsules')
66
 
-
 
67
    const [categories, setCategories] = React.useState([])
-
 
68
    const [capsules, setCapsules] = React.useState([])
-
 
69
    const [searchParams, setSearchParams] = React.useState({
-
 
70
        search: '',
-
 
71
        category: 'capsules'
-
 
72
    })
65
    const [title, setTitle] = React.useState('Cápsulas de Microaprendizaje')
73
 
66
    const [capsules, setCapsules] = React.useState([])
74
    const handleChange = ({ target },) => setSearchParams({ ...searchParams, [target.name]: target.value })
67
    const [search, setSearch] = React.useState('')
75
 
68
    const load = async (_search = search, _entity = category) => {
-
 
69
        try {
76
    const load = async (_search = searchParams.search, _entity = searchParams.category) => {
70
            const res = await axios.get('/marketplace?search=' + _search + '&entity=' + _entity)
-
 
71
            if (res.data.success) {
77
        try {
72
                setCapsules(res.data.data)
78
            const { data } = await axios.get('/marketplace?search=' + _search + '&entity=' + _entity)
73
            }
79
            if (data.success) setCapsules(data.data)
74
        } catch (error) {
80
        } catch (error) {
-
 
81
            console.log('>>: error > ', error)
75
            console.log('>>: error > ', error)
82
        }
76
        }
83
    }
77
    }
84
 
78
    const getCategories = async () => {
85
    const getCategories = async () => {
79
        const categories = await axios.get('/marketplace/categories')
86
        const categories = await axios.get('/marketplace/categories')
Línea 85... Línea 92...
85
                }
92
                }
86
            })
93
            })
87
            setCategories(_categories)
94
            setCategories(_categories)
88
        }
95
        }
89
    }
96
    }
-
 
97
 
90
    const checkParams = () => {
98
    const checkParams = () => {
91
        const url = window.location.href
99
        const url = window.location.href
92
        const hasEntity = url.includes('?entity=')
100
        const hasEntity = url.includes('?entity=')
93
        if (hasEntity) {
101
        if (hasEntity) {
94
            const value = url.split('?entity=')[1]
102
            const value = url.split('?entity=')[1]
95
            if (value)
103
            if (value)
96
                setCategory(value)
104
                setSearchParams({ ...searchParams, category: value })
97
        }
105
        }
98
    }
106
    }
-
 
107
 
99
    React.useEffect(() => {
108
    React.useEffect(() => {
100
        load()
-
 
101
        getCategories()
109
        getCategories()
102
        checkParams()
110
        checkParams()
103
    }, [])
111
    }, [])
Línea -... Línea 112...
-
 
112
 
-
 
113
    React.useEffect(() => {
-
 
114
        load(searchParams)
-
 
115
    }, [searchParams])
104
 
116
 
105
    const enroll = async url => {
117
    const enroll = async url => {
106
        try {
118
        try {
107
            await axios.post(url)
119
            await axios.post(url)
108
            load()
120
            load()
109
        } catch (error) {
121
        } catch (error) {
110
            console.log('>>: error > ', error)
122
            console.log('>>: error > ', error)
111
        }
123
        }
-
 
124
    }
112
    }
125
 
113
    const settings = {
126
    const settings = {
114
        // dots: true,
127
        // dots: true,
115
        infinite: true,
128
        infinite: true,
116
        speed: 1500,
129
        speed: 1500,
Línea 148... Línea 161...
148
                                    <input
161
                                    <input
149
                                        type="text"
162
                                        type="text"
150
                                        name="search"
163
                                        name="search"
151
                                        id="search"
164
                                        id="search"
152
                                        className="form-control"
165
                                        className="form-control"
153
                                        onChange={e => {
166
                                        onChange={e => handleChange(e)}
154
                                            const value = e.target.value
-
 
155
                                            setSearch(value)
-
 
156
                                            load(value)
-
 
157
                                        }}
-
 
158
                                        value={search}
167
                                        value={searchParams.search}
159
                                        placeholder="Realiza una busqueda"
168
                                        placeholder="Realiza una busqueda"
160
                                    />
169
                                    />
161
                                    <button className='search-btn'>
170
                                    <button className='search-btn'>
162
                                        Buscar
171
                                        Buscar
163
                                    </button>
172
                                    </button>
164
                                </div>
173
                                </div>
165
                                <div className="form-group search_categories">
174
                                <div className="form-group search_categories">
166
                                    <select
175
                                    <select
167
                                        name="select"
176
                                        name="select"
168
                                        className="form-control"
177
                                        className="form-control"
169
                                        value={category}
178
                                        value={searchParams.category}
170
                                        onChange={e => {
179
                                        onChange={e => handleChange(e)}
171
                                            setCategory(e.target.value)
-
 
172
                                            load(search, e.target.value)
-
 
173
                                        }}
-
 
174
                                    >
180
                                    >
175
                                        <option value="">Seleccione una categoria</option>
181
                                        <option value="">Seleccione una categoria</option>
176
                                        {categories.map((element, i) =>
182
                                        {categories.map((element, i) =>
177
                                            <option value={element.value} key={i.toString()}>
183
                                            <option value={element.value} key={i.toString()}>
178
                                                {element.label}
184
                                                {element.label}
Línea 182... Línea 188...
182
                                </div>
188
                                </div>
183
                            </div>
189
                            </div>
184
                        </form>
190
                        </form>
185
                    </div>
191
                    </div>
186
                    <div className="list-col">
192
                    <div className="list-col">
187
                        <h3 className="p-2" style={{ fontWeight: '700' }}>{title}</h3>
193
                        <h3 className="p-2" style={{ fontWeight: '700' }}>{labels.title}</h3>
188
                        <StyledSlider {...settings}>
194
                        <StyledSlider {...settings}>
189
                            {capsules.map((element) =>
195
                            {capsules.map((element) =>
190
                                <div className="w-100" key={element.name}>
196
                                <div className="w-100" style={{ maxWidth: '215px' }} key={element.name}>
191
                                    <div className="marketplace_card">
197
                                    <div className="marketplace_card">
192
                                        <div className="microlearning-up-info">
198
                                        <div className="microlearning-up-info">
193
                                            <img src={element.image} alt={element.name} />
199
                                            <img src={element.image} alt={element.name} />
194
                                            <h3>{element.name}</h3>
200
                                            <h3>{element.name}</h3>
195
                                            <h4>{props.backendVars.labelStatus} : {element.status}</h4>
201
                                            <h4>{backendVars.labelStatus} : {element.status}</h4>
196
                                            {element.link_enroll &&
202
                                            {element.link_enroll &&
197
                                                <ul>
203
                                                <ul>
198
                                                    <li>
204
                                                    <li>
199
                                                        <a
205
                                                        <button
200
                                                            href='#'
-
 
201
                                                            onClick={(e) => {
-
 
202
                                                                e.preventDefault()
-
 
203
                                                                enroll(element.link_enroll)
206
                                                            onClick={() => enroll(element.link_enroll)}
204
                                                            }}
-
 
205
                                                            title={'Seleccionar: ' + element.name}
207
                                                            title={'Seleccionar: ' + element.name}
206
                                                            className="btn btn-primary cursor-pointer">
208
                                                            className="btn btn-primary cursor-pointer">
207
                                                            {props.backendVars.labelEnroll}
209
                                                            {backendVars.labelEnroll}
208
                                                        </a>
210
                                                        </button>
209
                                                    </li>
211
                                                    </li>
210
                                                </ul>
212
                                                </ul>
211
                                            }
213
                                            }
212
                                        </div>
214
                                        </div>
213
                                    </div>
215
                                    </div>