-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.js
196 lines (160 loc) · 6.97 KB
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
import './style.css'; // Importa el archivo CSS
import { createCardSection } from './src/imagesSection/images.js';
import { drawCard } from './src/cards/cards.js';
import { createButton } from './src/button/button.js';
import { createFooter } from './src/footer/footer.js';
import { createNavBar, searchInput, } from './src/navbar/navbar.js';
import { resetPage, reloadPage } from './src/utils.js';
/* createCardSection(); */
let currentPage = 1
export async function CallApi(inputValue, page = 2, perPage = 40, resetPage = true) {
const ACCESS_KEY = 'ZoYrICho_8WIhQQu2dAtWN2D6QGb5xfgBn7ieXbloYA';
const API_URL = `https://api.unsplash.com/search/photos?query=${inputValue}&page=${page}&per_page=${perPage}&client_id=${ACCESS_KEY}`;
try {
const response = await fetch(API_URL);
const data = await response.json();
const app = document.querySelector('#app');
const cardSection = document.createElement('section');
cardSection.className = 'cardSection';
if (resetPage) {
currentPage = 1; // Restablecer Page a 1 si se establece la bandera resetPage
}
if (data && data.results && data.results.length > 0) {
cardSection.innerHTML = ''; // Limpiar la sección de tarjetas antes de mostrar los nuevos resultados
data.results.forEach((item) => {
drawCard(item, cardSection);
});
app.innerHTML = ''; // Limpiar la página antes de mostrar los nuevos resultados
app.append(cardSection); // Mostrar los nuevos resultados
} else {
app.innerHTML = ''; // Limpiar la página si no hay resultados
createCardSection(); // Volver a crear la sección de tarjetas si no hay resultados
console.log('Data is empty or not defined:', data);
}
} catch (error) {
console.error('Error al obtener los datos de la API', error);
}
}
CallApi('landscape', currentPage); // Llama a la función CallApi para cargar las imágenes iniciales
// Función para manejar el evento de tecla presionada
const handleKeyDown = (event) => {
if (event.key === 'Enter') {
event.preventDefault(); // Prevenir el comportamiento predeterminado del evento
const inputValue = event.target.value;
CallApi(inputValue);
}
};
searchInput.addEventListener('keydown', handleKeyDown); // Agrega el evento de presionar tecla al input de búsqueda
/* createButton();*/ // Crea el botón "Mostrar más" al principio
const showMoreButton = document.getElementById('show-more');
showMoreButton.addEventListener('click', async () => {
try {
currentPage++; // Incrementa el número de página actual
const inputValue = searchInput.value;
await CallApi(inputValue, currentPage); // Llama a la función CallApi con el término de búsqueda actual y la página actual
} catch (error) {
console.error('Error al cargar más imágenes', error);
}
});
/*createFooter(); */// Crea el pie de página
/*
// Agregar evento de clic al botón de inicio para restablecer la página
initialButton.addEventListener('click', async () => {
try {
resetPage();
} catch (error) {
console.error('Error al realizar la búsqueda:', error);
}
});
// Agregar evento de clic al botón de explorar para recargar la página
explorerButton.addEventListener('click', () => {
reloadPage();
});
// Mantener el evento de entrada en el campo de búsqueda para realizar acciones adicionales según sea necesario
searchInput.addEventListener('change', function() {
if (searchInput.value === '') {
clearPage();
}else {
CallApi(inputValue)
}
});
*/
/*
// esto es lo que tenia yo puesto y me daba error lo de currenpage, y lo de arriba es la correcion //
import './style.css'; // Importa el archivo CSS
import { createCardSection } from './src/imagesSection/images.js';
import { drawCard } from './src/cards/cards.js';
import { createButton } from './src/button/button.js';
import { createFooter } from './src/footer/footer.js';
import { createNavBar, } from './src/navbar/navbar.js';
import { resetPage, reloadPage } from './src/utils.js';
createCardSection();
let currentPage = 1
async function CallApi(inputValue, page = currentPage, perPage = 15, resetPage = true) {
const ACCESS_KEY = 'ZoYrICho_8WIhQQu2dAtWN2D6QGb5xfgBn7ieXbloYA';
const API_URL = `https://api.unsplash.com/search/photos?query=${inputValue}&page=${page}&per_page=${perPage}&client_id=${ACCESS_KEY}`;
try {
const response = await fetch(API_URL);
const data = await response.json();
const app = document.querySelector('#app');
const cardSection = document.createElement('section');
cardSection.className = 'cardSection';
if (resetPage) {
currentPage = 1; // Restablecer Page a 1 si se establece la bandera resetPage
}
if (data && data.results && data.results.length > 0) {
cardSection.innerHTML = ''; // Limpiar la sección de tarjetas antes de mostrar los nuevos resultados
data.results.forEach((item) => {
drawCard(item, cardSection);
});
app.innerHTML = ''; // Limpiar la página antes de mostrar los nuevos resultados
app.append(cardSection); // Mostrar los nuevos resultados
} else {
app.innerHTML = ''; // Limpiar la página si no hay resultados
createCardSection(); // Volver a crear la sección de tarjetas si no hay resultados
console.log('Data is empty or not defined:', data);
}
} catch (error) {
console.error('Error al obtener los datos de la API', error);
}
}
CallApi('landscape', page); // Llama a la función CallApi para cargar las imágenes iniciales
// Función para manejar el evento de tecla presionada
const handleKeyDown = (event) => {
if (event.key === 'Enter') {
event.preventDefault(); // Prevenir el comportamiento predeterminado del evento
const inputValue = event.target.value;
CallApi(inputValue);
}
};
searchInput.addEventListener('keydown', handleKeyDown); // Agrega el evento de presionar tecla al input de búsqueda
/* createButton(); // Crea el botón "Mostrar más" al principio
const showMoreButton = document.getElementById('show-more');
showMoreButton.addEventListener('click', async () => {
try {
currentPage++; // Incrementa el número de página actual
const inputValue = searchInput.value;
await CallApi(inputValue, currentPage); // Llama a la función CallApi con el término de búsqueda actual y la página actual
} catch (error) {
console.error('Error al cargar más imágenes', error);
}
});
/*createFooter(); // Crea el pie de página
// Agregar evento de clic al botón de inicio para restablecer la página
homeButton.addEventListener('click', async () => {
try {
resetPage();
} catch (error) {
console.error('Error al realizar la búsqueda:', error);
}
});
// Agregar evento de clic al botón de explorar para recargar la página
explorerButton.addEventListener('click', () => {
reloadPage();
});
// Mantener el evento de entrada en el campo de búsqueda para realizar acciones adicionales según sea necesario
searchInput.addEventListener('input', function() {
if (searchInput.value === '') {
clearPage();
}
}); */