Skip to content

Commit d283644

Browse files
authored
Merge pull request #8 from DianaBrodovaya/module8-task2
2 parents ad88309 + 1d7bf90 commit d283644

1 file changed

Lines changed: 39 additions & 17 deletions

File tree

js/big-picture.js

Lines changed: 39 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
1+
const COMMENTS_STEP = 5;
2+
13
const bigPicture = document.querySelector('.big-picture');
24
const closeButton = bigPicture.querySelector('.big-picture__cancel');
35
const commentsContainer = bigPicture.querySelector('.social__comments');
6+
const commentsLoader = bigPicture.querySelector('.comments-loader');
7+
const socialCommentCount = bigPicture.querySelector('.social__comment-count');
8+
const commentsShownCount = bigPicture.querySelector('.social__comment-shown-count');
9+
const commentsTotalCount = bigPicture.querySelector('.social__comment-total-count');
10+
11+
let commentsShown = 0;
12+
let comments = [];
413

514
const createComment = ({ avatar, name, message }) => {
615
const commentItem = document.createElement('li');
@@ -23,15 +32,33 @@ const createComment = ({ avatar, name, message }) => {
2332
return commentItem;
2433
};
2534

26-
const renderComments = (comments) => {
27-
commentsContainer.innerHTML = '';
28-
const fragment = document.createDocumentFragment();
35+
const renderComments = () => {
36+
const nextComments = comments.slice(commentsShown, commentsShown + COMMENTS_STEP);
37+
commentsShown += nextComments.length;
2938

30-
comments.forEach((commentData) => {
39+
const fragment = document.createDocumentFragment();
40+
nextComments.forEach((commentData) => {
3141
fragment.append(createComment(commentData));
3242
});
3343

3444
commentsContainer.append(fragment);
45+
46+
commentsShownCount.textContent = commentsShown;
47+
48+
if (commentsShown >= comments.length) {
49+
commentsLoader.classList.add('hidden');
50+
} else {
51+
commentsLoader.classList.remove('hidden');
52+
}
53+
};
54+
55+
const onCommentsLoaderClick = () => renderComments();
56+
57+
const closeBigPicture = () => {
58+
bigPicture.classList.add('hidden');
59+
document.body.classList.remove('modal-open');
60+
commentsLoader.removeEventListener('click', onCommentsLoaderClick);
61+
commentsShown = 0;
3562
};
3663

3764
const onDocumentKeydown = (evt) => {
@@ -41,12 +68,6 @@ const onDocumentKeydown = (evt) => {
4168
}
4269
};
4370

44-
function closeBigPicture() {
45-
bigPicture.classList.add('hidden');
46-
document.body.classList.remove('modal-open');
47-
document.removeEventListener('keydown', onDocumentKeydown);
48-
}
49-
5071
const openBigPicture = (photo) => {
5172
bigPicture.classList.remove('hidden');
5273
document.body.classList.add('modal-open');
@@ -55,15 +76,16 @@ const openBigPicture = (photo) => {
5576
bigPicture.querySelector('.likes-count').textContent = photo.likes;
5677
bigPicture.querySelector('.social__caption').textContent = photo.description;
5778

58-
bigPicture.querySelector('.social__comment-total-count').textContent = photo.comments.length;
59-
bigPicture.querySelector('.social__comment-shown-count').textContent = photo.comments.length;
60-
61-
bigPicture.querySelector('.social__comment-count').classList.add('hidden');
62-
bigPicture.querySelector('.comments-loader').classList.add('hidden');
79+
comments = photo.comments;
80+
commentsTotalCount.textContent = comments.length;
81+
commentsContainer.innerHTML = '';
82+
socialCommentCount.classList.remove('hidden');
83+
commentsLoader.classList.remove('hidden');
6384

64-
renderComments(photo.comments);
85+
renderComments();
6586

66-
document.addEventListener('keydown', onDocumentKeydown);
87+
commentsLoader.addEventListener('click', onCommentsLoaderClick);
88+
document.addEventListener('keydown', onDocumentKeydown, { once: true });
6789
};
6890

6991
closeButton.addEventListener('click', closeBigPicture);

0 commit comments

Comments
 (0)