Skip to content

Commit 1c0d94f

Browse files
authored
Merge pull request #9 from Julyova/module8-task2
2 parents 53abc3b + f25d8ce commit 1c0d94f

1 file changed

Lines changed: 34 additions & 10 deletions

File tree

js/big-picture.js

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
const COMMENTS_PER_LOAD = 5;
2+
13
const bigPictureElement = document.querySelector('.big-picture');
24
const bigPictureImg = bigPictureElement.querySelector('.big-picture__img img');
35
const likesCount = bigPictureElement.querySelector('.likes-count');
@@ -9,6 +11,9 @@ const commentCountBlock = bigPictureElement.querySelector('.social__comment-coun
911
const commentsLoader = bigPictureElement.querySelector('.comments-loader');
1012
const cancelButton = bigPictureElement.querySelector('.big-picture__cancel');
1113

14+
let currentComments = [];
15+
let shownCommentsCount = 0;
16+
1217
const createCommentElement = ({ avatar, name, message }) => {
1318
const commentItem = document.createElement('li');
1419
commentItem.classList.add('social__comment');
@@ -30,6 +35,28 @@ const createCommentElement = ({ avatar, name, message }) => {
3035
return commentItem;
3136
};
3237

38+
const renderComments = () => {
39+
const commentsToShow = currentComments.slice(shownCommentsCount, shownCommentsCount + COMMENTS_PER_LOAD);
40+
41+
commentsToShow.forEach((comment) => {
42+
const commentElement = createCommentElement(comment);
43+
socialComments.appendChild(commentElement);
44+
});
45+
46+
shownCommentsCount += commentsToShow.length;
47+
commentCount.textContent = shownCommentsCount;
48+
49+
if (shownCommentsCount >= currentComments.length) {
50+
commentsLoader.classList.add('hidden');
51+
} else {
52+
commentsLoader.classList.remove('hidden');
53+
}
54+
};
55+
56+
const onCommentsLoaderClick = () => {
57+
renderComments();
58+
};
59+
3360
const openBigPicture = (pictureData) => {
3461
bigPictureElement.classList.remove('hidden');
3562
document.body.classList.add('modal-open');
@@ -40,18 +67,13 @@ const openBigPicture = (pictureData) => {
4067
socialCaption.textContent = pictureData.description;
4168

4269
socialComments.innerHTML = '';
70+
currentComments = pictureData.comments;
71+
shownCommentsCount = 0;
4372

44-
const comments = pictureData.comments;
45-
totalCommentCount.textContent = comments.length;
46-
commentCount.textContent = Math.min(5, comments.length);
47-
48-
comments.forEach((comment) => {
49-
const commentElement = createCommentElement(comment);
50-
socialComments.appendChild(commentElement);
51-
});
73+
totalCommentCount.textContent = currentComments.length;
74+
commentCountBlock.classList.remove('hidden');
5275

53-
commentCountBlock.classList.add('hidden');
54-
commentsLoader.classList.add('hidden');
76+
renderComments();
5577
};
5678

5779
const closeBigPicture = () => {
@@ -64,6 +86,8 @@ const initBigPictureHandlers = () => {
6486
closeBigPicture();
6587
});
6688

89+
commentsLoader.addEventListener('click', onCommentsLoaderClick);
90+
6791
document.addEventListener('keydown', (evt) => {
6892
if (evt.key === 'Escape' && !bigPictureElement.classList.contains('hidden')) {
6993
closeBigPicture();

0 commit comments

Comments
 (0)