1+ const COMMENTS_PER_LOAD = 5 ;
2+
13const bigPictureElement = document . querySelector ( '.big-picture' ) ;
24const bigPictureImg = bigPictureElement . querySelector ( '.big-picture__img img' ) ;
35const likesCount = bigPictureElement . querySelector ( '.likes-count' ) ;
@@ -9,6 +11,9 @@ const commentCountBlock = bigPictureElement.querySelector('.social__comment-coun
911const commentsLoader = bigPictureElement . querySelector ( '.comments-loader' ) ;
1012const cancelButton = bigPictureElement . querySelector ( '.big-picture__cancel' ) ;
1113
14+ let currentComments = [ ] ;
15+ let shownCommentsCount = 0 ;
16+
1217const 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+
3360const 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
5779const 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