11document . addEventListener ( 'DOMContentLoaded' , async function ( ) {
22
3- try {
4- async function consumirApiProductos ( ) {
5- try {
6- const respuesta = await fetch ( '../js/productos.json' ) ;
7- const datos = await respuesta . json ( ) ;
8- return datos ;
9- } catch ( error ) {
10- return [ ] ;
11- }
3+ async function consumirApiProductos ( ) {
4+ try {
5+ const respuesta = await fetch ( '../js/productos.json' ) ;
6+ const datos = await respuesta . json ( ) ;
7+ return datos ;
8+ } catch ( error ) {
9+ return [ ] ;
1210 }
11+ }
1312
14- async function consumirApiProductosCarrete ( ) {
15- try {
16- const respuesta = await fetch ( '../js/productosCarrete.json' ) ;
17- const datos = await respuesta . json ( ) ;
18- return datos ;
19- } catch ( error ) {
20- return [ ] ;
21- }
13+ async function consumirApiProductosCarrete ( ) {
14+ try {
15+ const respuesta = await fetch ( '../js/productosCarrete.json' ) ;
16+ const datos = await respuesta . json ( ) ;
17+ return datos ;
18+ } catch ( error ) {
19+ return [ ] ;
2220 }
21+ }
2322
24- const [ productos , productosCarrete ] = await Promise . all ( [ consumirApiProductos ( ) , consumirApiProductosCarrete ( ) ] ) ;
23+ const [ productos , productosCarrete ] = await Promise . all ( [ consumirApiProductos ( ) , consumirApiProductosCarrete ( ) ] ) ;
2524
26- function generarHTMLProducto ( producto ) {
27- const precioConAumento = Math . round ( producto . precio * 1.10 ) ;
28- return `
29- <div id=${ producto . id } class="img${ producto . id } __pagPpal">
30- <img src="${ producto . imagenUrl1 } " class="rounded float-start" alt="${ producto . textoProducto } ">
31- <div class="seccionVtaImgsPpal">
32- <div class="card-img-overlay">
33- <div class="seccionPrecios__imgsPagPPal">
34- <h5 class="precioTachado">$${ precioConAumento } </h5>
35- <h5 class="textPrice">$${ producto . precio } </h5>
36- </div>
37- <p class="card-text">${ producto . textoProducto } (-10% OFF)</p>
38- <p class="card-text"><small>${ producto . color } ${ producto . talla } </small></p>
39- </div>
40- <div class="botonesAccionCompra">
41- <a href="./pages/detalleProducto.html" class="btn btn-dark" value="Ver detalle" onclick="encontrarIdProd(${ producto . id } );">Ver detalle</a>
42- <button class="btn btn-dark" onclick="encontrarIdProd(${ producto . id } ); agregarProdCarrito();">Añadir al carrito</button>
25+ function generarHTMLProducto ( producto ) {
26+ const precioConAumento = Math . round ( producto . precio * 1.10 ) ;
27+ return `
28+ <div id=${ producto . id } class="img${ producto . id } __pagPpal">
29+ <img src="${ producto . imagenUrl1 } " class="rounded float-start" alt="${ producto . textoProducto } ">
30+ <div class="seccionVtaImgsPpal">
31+ <div class="card-img-overlay">
32+ <div class="seccionPrecios__imgsPagPPal">
33+ <h5 class="precioTachado">$${ precioConAumento } </h5>
34+ <h5 class="textPrice">$${ producto . precio } </h5>
4335 </div>
36+ <p class="card-text">${ producto . textoProducto } (-10% OFF)</p>
37+ <p class="card-text"><small>${ producto . color } ${ producto . talla } </small></p>
38+ </div>
39+ <div class="botonesAccionCompra">
40+ <a href="./pages/detalleProducto.html" class="btn btn-dark" value="Ver detalle" onclick="encontrarIdProd(${ producto . id } );">Ver detalle</a>
41+ <button class="btn btn-dark" onclick="encontrarIdProd(${ producto . id } ); agregarProdCarrito();">Añadir al carrito</button>
4442 </div>
4543 </div>
46- ` ;
47- } ;
44+ </div>
45+ ` ;
46+ } ;
4847
49- function generarHTMLProductosCarrete ( producto ) {
50- const precioConAumento = Math . round ( producto . precio * 1.10 ) ;
48+ function generarHTMLProductosCarrete ( producto ) {
49+ const precioConAumento = Math . round ( producto . precio * 1.10 ) ;
5150
52- return `
53- <div class="card" style="width: 18rem;">
54- <img src="${ producto . imagenUrl1 } " class="card-img-top" alt="${ producto . textoProducto } ">
55- <div class="card-body">
56- <h5 class="card-title">${ producto . textoProducto } </h5>
57- <h6>${ producto . descuento } </h6>
58- <p class="card-text">${ producto . talla } </p>
59- <p class="card-text">${ producto . color } </p>
60- <div class="seccionPrecios">
61- <p class="textoTachado">$${ precioConAumento } </p>
62- <p class="card-textPrice">$${ producto . precio } </p>
63- </div>
64- <a href="./pages/detalleProducto.html" class="btn btn-dark" onclick="encontrarIdProd(${ producto . id } );"> Ver detalle</a>
65- <button class="btn btn-dark" onclick="encontrarIdProd(${ producto . id } ); agregarProdCarrito();">Añadir al carrito</button>
51+ return `
52+ <div class="card" style="width: 18rem;">
53+ <img src="${ producto . imagenUrl1 } " class="card-img-top" alt="${ producto . textoProducto } ">
54+ <div class="card-body">
55+ <h5 class="card-title">${ producto . textoProducto } </h5>
56+ <h6>${ producto . descuento } </h6>
57+ <p class="card-text">${ producto . talla } </p>
58+ <p class="card-text">${ producto . color } </p>
59+ <div class="seccionPrecios">
60+ <p class="textoTachado">$${ precioConAumento } </p>
61+ <p class="card-textPrice">$${ producto . precio } </p>
6662 </div>
63+ <a href="./pages/detalleProducto.html" class="btn btn-dark" onclick="encontrarIdProd(${ producto . id } );"> Ver detalle</a>
64+ <button class="btn btn-dark" onclick="encontrarIdProd(${ producto . id } ); agregarProdCarrito();">Añadir al carrito</button>
6765 </div>
68- ` ;
69- } ;
66+ </div>
67+ ` ;
68+ } ;
7069
71- function renderizarProductos ( productos , elemento ) {
72- const htmlProductos = productos . map ( producto => generarHTMLProducto ( producto ) ) . join ( '' ) ;
73- elemento . innerHTML = htmlProductos ;
74- } ;
75-
76- function renderizarProdsCarrete ( productos , elemento ) {
77- const htmlProductos = productos . map ( producto => generarHTMLProductosCarrete ( producto ) ) . join ( '' ) ;
78- elemento . innerHTML = htmlProductos ;
79- } ;
80-
81- renderizarProductos ( productos , document . getElementById ( 'listaProductosPagPpal' ) ) ;
82- renderizarProdsCarrete ( productosCarrete , document . getElementById ( 'carrete_recomendados' ) ) ;
70+ function renderizarProductos ( productos , elemento ) {
71+ const htmlProductos = productos . map ( producto => generarHTMLProducto ( producto ) ) . join ( '' ) ;
72+ elemento ? elemento . innerHTML = htmlProductos : null ;
73+ } ;
8374
84- const prodsPagPpal = productos . concat ( productosCarrete ) ;
75+ function renderizarProdsCarrete ( productos , elemento ) {
76+ const htmlProductos = productos . map ( producto => generarHTMLProductosCarrete ( producto ) ) . join ( '' ) ;
77+ elemento ? elemento . innerHTML = htmlProductos : null ;
78+ } ;
8579
86- let prodsFiltrados = [ ] ;
87-
88- function filtrarPorGenero ( genero ) {
89- return prodsPagPpal . filter ( producto => producto . genero === genero ) ;
90- }
91-
92- function guardarProductosFiltradosLS ( prodsFiltrados ) {
93- localStorage . setItem ( "productosFiltrados" , JSON . stringify ( prodsFiltrados ) ) ;
94- }
80+ renderizarProductos ( productos , document . getElementById ( 'listaProductosPagPpal' ) ) ;
81+ renderizarProdsCarrete ( productosCarrete , document . getElementById ( 'carrete_recomendados' ) ) ;
9582
96- function actualizarProdsFiltYSaveLS ( genero ) {
97- prodsFiltrados = filtrarPorGenero ( genero ) ;
98- guardarProductosFiltradosLS ( prodsFiltrados ) ;
99- }
83+ const prodsPagPpal = productos . concat ( productosCarrete ) ;
84+
85+ let prodsFiltrados = [ ] ;
86+
87+ function filtrarPorGenero ( genero ) {
88+ return prodsPagPpal . filter ( producto => producto . genero === genero ) ;
89+ }
90+
91+ function guardarProductosFiltradosLS ( prodsFiltrados ) {
92+ localStorage . setItem ( "productosFiltrados" , JSON . stringify ( prodsFiltrados ) ) ;
93+ }
10094
101- localStorage . setItem ( 'prodsPagPpal' , JSON . stringify ( prodsPagPpal ) ) ;
95+ function actualizarProdsFiltYSaveLS ( genero ) {
96+ prodsFiltrados = filtrarPorGenero ( genero ) ;
97+ guardarProductosFiltradosLS ( prodsFiltrados ) ;
98+ }
10299
103- function abrirPagDetalle ( ) {
104- window . open ( '../pages/detalleFiltrados.html' )
105- }
100+ localStorage . setItem ( 'prodsPagPpal' , JSON . stringify ( prodsPagPpal ) ) ;
106101
107- function accionesProd ( ) {
108- const genero = this . dataset . genre ;
109- actualizarProdsFiltYSaveLS ( genero ) ;
110- console . log ( prodsFiltrados ) ;
111- setTimeout ( abrirPagDetalle , 1000 ) ;
112- }
113-
114- const botonFiltroMujer = document . getElementById ( 'botonFiltroMujer' ) ;
115- const botonFiltroHombre = document . getElementById ( 'botonFiltroHombre' ) ;
116-
117- botonFiltroMujer . addEventListener ( "click" , accionesProd ) ;
118- botonFiltroHombre . addEventListener ( "click" , accionesProd ) ;
102+ function abrirPagDetalle ( ) {
103+ window . open ( '../pages/detalleFiltrados.html' )
104+ }
119105
120-
121- } catch ( error ) {
122- console . error ( "Error al cargar la página:" , error ) ;
106+ function accionesProd ( ) {
107+ const genero = this . dataset . genre ;
108+ actualizarProdsFiltYSaveLS ( genero ) ;
109+ console . log ( prodsFiltrados ) ;
110+ setTimeout ( abrirPagDetalle , 1000 ) ;
123111 }
124- } ) ;
112+
113+ const botonFiltroMujer = document . getElementById ( 'botonFiltroMujer' ) ;
114+ const botonFiltroHombre = document . getElementById ( 'botonFiltroHombre' ) ;
115+
116+ botonFiltroMujer . addEventListener ( "click" , accionesProd ) ;
117+ botonFiltroHombre . addEventListener ( "click" , accionesProd ) ;
118+
119+ } ) ;
0 commit comments