Repository navigation
Expand file tree
/
Copy pathalbums.js
More file actions
58 lines (35 loc) · 1.66 KB
/
Copy pathalbums.js
File metadata and controls
58 lines (35 loc) · 1.66 KB
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
import { firstLetterUpperCase, fetchData, getUrlParam } from './functions.js';
import renderNavigation from './navigation.js';
import paginationLinks from './pagination.js';
async function init (){
const limit = getUrlParam ('limit')?getUrlParam('limit'):10;
const page = getUrlParam('page')?getUrlParam('page'):1;
const albums = await fetchData(`https://jsonplaceholder.typicode.com/albums?_page${page}&_embed=photos&_limit=${limit}`);
const albumsWrapper = document.querySelector('#albums-wrapper');
const albumsElement = createAlbumList(albums);
albumsWrapper.append(albumsElement);
}
function createAlbumList (albums){
const albumsContainer = document.createElement('div');
albumsContainer.classList.add('albums-container')
const pageTitle = document.createElement('h1');
pageTitle.classList.add('page-title');
pageTitle.textContent = 'Albums list:';
const albumsList = document.createElement('div');
albumsList.classList.add('albums-list');
albumsContainer.append(pageTitle, albumsList)
albums.map(album => {
const photosCount = album.photos.length;
const randomIndex = Math.floor(Math.random() * photosCount);
const randomPhoto = album.photos[randomIndex];
const albumItem = document.createElement('div');
albumItem.classList.add('album-item');
albumItem.innerHTML = `<a href="./album.html?album_id=${album.id}">
<h2 class="album-title">${firstLetterUpperCase(album.title)}</h2>
<img src="${randomPhoto.thumbnailUrl}" alt="${randomPhoto.title}">
</a>`;
albumsList.append(albumItem);
})
return albumsContainer;
}
init ()