11import { getRandomNumber , isEscapeKey } from './utils.js' ;
22
3+ const NUMBER_COMMENT = 5 ;
4+
35const fullPhotoSection = document . querySelector ( '.big-picture' ) ;
46
57const fullPhotoContainer = fullPhotoSection . querySelector ( '.big-picture__img' ) ;
@@ -19,53 +21,54 @@ const listComment = fullPhotoSection.querySelector('.social__comments');
1921const btnLoadComment = fullPhotoSection . querySelector ( '.comments-loader' ) ;
2022const btnClose = fullPhotoSection . querySelector ( '.big-picture__cancel' ) ;
2123
22- const NUMBER_COMMENT = 5 ;
23-
2424let allComments = [ ] ;
2525let countComment = 0 ;
2626
27- export function renderFullPhoto ( data ) {
28- const photoContainer = document . querySelector ( '.pictures' ) ;
29-
30- photoContainer . addEventListener ( 'click' , ( evt ) => {
31- const photo = evt . target . closest ( '.picture' ) ;
32-
33- if ( photo ) {
34- evt . preventDefault ( ) ;
35- const src = photo . querySelector ( '.picture__img' ) . getAttribute ( 'src' ) ;
36- const dataPhoto = data . find ( ( item ) => item . url === src ) ;
37-
38- const { url, description, like, comments } = dataPhoto ;
39-
40- openModal ( ) ;
41- createFullPhoto ( url , description , like ) ;
42- clearComments ( ) ;
43- showCommentsPhoto ( allComments = comments ) ;
44- }
45-
46- // eslint-disable-next-line no-useless-return
47- return ;
48- } ) ;
49- }
50-
51- function openModal ( ) {
27+ const openModal = ( ) => {
5228 fullPhotoSection . classList . remove ( 'hidden' ) ;
5329 document . body . classList . add ( 'modal-open' ) ;
5430
5531 btnClose . addEventListener ( 'click' , handleCloseClick ) ;
5632 document . addEventListener ( 'keydown' , handleCloseKey ) ;
57- }
33+ } ;
5834
59- function createFullPhoto ( url , description , like ) {
35+ const createFullPhoto = ( url , description , like ) => {
6036 fullPhoto . src = url ;
6137 fullPhoto . alt = description ;
6238
6339 photoAuthor . src = `img/avatar-${ getRandomNumber ( 1 , 6 ) } .svg` ;
6440 photoDescription . textContent = description ;
6541 photoSumLike . textContent = like ;
66- }
42+ } ;
43+
44+ const clearComments = ( ) => {
45+ listComment . innerHTML = '' ;
46+ } ;
47+
48+ const renderCommentsPhoto = ( comments , fragment ) => {
49+ comments . forEach ( ( comment ) => {
50+ const li = document . createElement ( 'li' ) ;
51+ li . classList . add ( 'social__comment' ) ;
52+
53+ const img = document . createElement ( 'img' ) ;
54+ img . classList . add ( 'social__picture' ) ;
55+ img . src = comment . avatar ;
56+ img . alt = comment . name ;
57+ img . width = 35 ;
58+ img . height = 35 ;
59+ li . append ( img ) ;
60+
61+ const text = document . createElement ( 'p' ) ;
62+ text . classList . add ( 'social__text' ) ;
63+ text . textContent = comment . message ;
64+ li . append ( text ) ;
65+
66+ fragment . append ( li ) ;
67+ } ) ;
68+ return fragment ;
69+ } ;
6770
68- function showCommentsPhoto ( ) {
71+ const showCommentsPhoto = ( ) => {
6972 const fragment = document . createDocumentFragment ( ) ;
7073 const startIndex = countComment ;
7174 countComment += NUMBER_COMMENT ;
@@ -86,43 +89,40 @@ function showCommentsPhoto() {
8689 const currentComment = renderCommentsPhoto ( allComments . slice ( startIndex , endIndex ) , fragment ) ;
8790 listComment . append ( currentComment ) ;
8891 }
89- }
92+ } ;
9093
91- function renderCommentsPhoto ( comments , fragment ) {
92- comments . forEach ( ( comment ) => {
93- const li = document . createElement ( 'li' ) ;
94- li . classList . add ( 'social__comment' ) ;
94+ const renderFullPhoto = ( data ) => {
95+ const photoContainer = document . querySelector ( '.pictures' ) ;
9596
96- const img = document . createElement ( 'img' ) ;
97- img . classList . add ( 'social__picture' ) ;
98- img . src = comment . avatar ;
99- img . alt = comment . name ;
100- img . width = 35 ;
101- img . height = 35 ;
102- li . append ( img ) ;
97+ photoContainer . addEventListener ( 'click' , ( evt ) => {
98+ const photo = evt . target . closest ( '.picture' ) ;
10399
104- const text = document . createElement ( 'p' ) ;
105- text . classList . add ( 'social__text' ) ;
106- text . textContent = comment . message ;
107- li . append ( text ) ;
100+ if ( photo ) {
101+ evt . preventDefault ( ) ;
102+ const src = photo . querySelector ( '.picture__img' ) . getAttribute ( 'src' ) ;
103+ const dataPhoto = data . find ( ( item ) => item . url === src ) ;
108104
109- fragment . append ( li ) ;
110- } ) ;
111- return fragment ;
112- }
105+ const { url, description, like, comments } = dataPhoto ;
113106
114- function clearComments ( ) {
115- listComment . innerHTML = '' ;
116- }
107+ openModal ( ) ;
108+ createFullPhoto ( url , description , like ) ;
109+ clearComments ( ) ;
110+ showCommentsPhoto ( allComments = comments ) ;
111+ }
117112
118- function closeModelOpen ( ) {
113+ // eslint-disable-next-line no-useless-return
114+ return ;
115+ } ) ;
116+ } ;
117+
118+ const closeModelOpen = ( ) => {
119119 fullPhotoSection . classList . add ( 'hidden' ) ;
120120 document . body . classList . remove ( 'modal-open' ) ;
121121 btnClose . removeEventListener ( 'click' , handleCloseClick ) ; // можно удалить, при закрытии модального окна обработчик все равно удалится
122122 btnLoadComment . removeEventListener ( 'click' , handleLoadClick ) ; // можно удалить, при закрытии модального окна обработчик все равно удалится
123123 document . removeEventListener ( 'keydown' , handleCloseKey ) ;
124124 countComment = 0 ;
125- }
125+ } ;
126126
127127function handleLoadClick ( ) {
128128 showCommentsPhoto ( ) ;
@@ -138,3 +138,5 @@ function handleCloseKey(evt) {
138138 closeModelOpen ( ) ;
139139 }
140140}
141+
142+ export { renderFullPhoto } ;
0 commit comments