Skip to content

Commit 9af5448

Browse files
authored
Merge pull request #8 from suntira/module8-task2
2 parents 312215c + 93b8d30 commit 9af5448

File tree

4 files changed

+88
-43
lines changed

4 files changed

+88
-43
lines changed

js/comments.js

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import { DATA_ELEMENTS } from './photo-modal-elements.js';
2+
3+
const COMMENTS_PER_ITERATION = 5;
4+
5+
let currentPhotoComments = [];
6+
let shownCommentsCount = 0;
7+
8+
const renderNextComments = () => {
9+
const nextIterationOfComment = currentPhotoComments.slice(shownCommentsCount, shownCommentsCount + COMMENTS_PER_ITERATION);
10+
11+
shownCommentsCount += nextIterationOfComment.length;
12+
13+
const commentsFragment = document.createDocumentFragment();
14+
15+
nextIterationOfComment.forEach((comment) => {
16+
const newCommentsElement = DATA_ELEMENTS.commentTemplate.cloneNode(true);
17+
const avatar = newCommentsElement.querySelector('.social__picture');
18+
19+
avatar.src = comment.avatar;
20+
avatar.alt = comment.name;
21+
newCommentsElement.querySelector('.social__text').textContent = comment.message;
22+
23+
commentsFragment.append(newCommentsElement);
24+
});
25+
26+
DATA_ELEMENTS.commentsListElement.appendChild(commentsFragment);
27+
28+
DATA_ELEMENTS.commentShownCountElement.textContent = shownCommentsCount;
29+
30+
if (shownCommentsCount >= currentPhotoComments.length) {
31+
DATA_ELEMENTS.commentsLoaderElement.classList.add('hidden');
32+
}
33+
};
34+
35+
const closeComments = () => {
36+
shownCommentsCount = 0;
37+
currentPhotoComments = [];
38+
39+
DATA_ELEMENTS.commentsListElement.innerHTML = '';
40+
DATA_ELEMENTS.commentsLoaderElement.classList.add('hidden');
41+
42+
DATA_ELEMENTS.commentShownCountElement.textContent = '0';
43+
};
44+
45+
46+
const initComments = (comments) => {
47+
closeComments();
48+
currentPhotoComments = comments;
49+
50+
DATA_ELEMENTS.commentTotalCountElement.textContent = comments.length;
51+
DATA_ELEMENTS.commentCountBlockElement.classList.remove('hidden');
52+
DATA_ELEMENTS.commentsLoaderElement.classList.remove('hidden');
53+
54+
renderNextComments();
55+
};
56+
57+
export {
58+
renderNextComments,
59+
closeComments,
60+
initComments,
61+
currentPhotoComments,
62+
shownCommentsCount
63+
};

js/functions.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const getTimeInMinutes = (timeString) => {
1+
/*const getTimeInMinutes = (timeString) => {
22
const [hours, minutes] = timeString.split(':').map(Number);
33
return hours * 60 + minutes;
44
};
@@ -13,7 +13,7 @@ const countingWorkingTime = (startWorking, endWorking, startMeeting, durationMee
1313
1414
return startMeetingInMinutes >= startWorkingInMinutes && endMeetingInMinutes <= endWorkingInMinutes;
1515
};
16-
16+
*/
1717
/*-------------Проверка функции-----------------*/
1818
//console.log(countingWorkingTime('08:00', '17:30', '14:00', 90)); // true
1919
//console.log(countingWorkingTime('8:0', '10:0', '8:0', 120)); // true

js/render-full-size-photo.js

Lines changed: 22 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,47 @@
11
import { isEscapeKey } from './util.js';
22
import { DATA_ELEMENTS } from './photo-modal-elements.js';
3-
4-
const onDocumentKeydown = (evt) => {
5-
if (isEscapeKey(evt)) {
6-
evt.preventDefault();
7-
closePhotoModal();
8-
}
9-
};
3+
import { renderNextComments, closeComments, initComments } from './comments.js';
104

115
const showModal = (isShown = true) => {
126
if (isShown) {
137
DATA_ELEMENTS.photoModalElement.classList.remove('hidden');
148
document.body.classList.add('modal-open');
15-
} else {
16-
DATA_ELEMENTS.photoModalElement.classList.add('hidden');
17-
document.body.classList.remove('modal-open');
9+
return;
1810
}
19-
};
2011

21-
const renderComments = (comments) => {
22-
const commentsFragment = document.createDocumentFragment();
23-
comments.forEach((comment) => {
24-
const newCommentsElement = DATA_ELEMENTS.commentTemplate.cloneNode(true);
25-
const avatar = newCommentsElement.querySelector('.social__picture');
26-
avatar.src = comment.avatar;
27-
avatar.alt = comment.name;
28-
newCommentsElement.querySelector('.social__text').textContent = comment.message;
29-
commentsFragment.append(newCommentsElement);
30-
});
31-
DATA_ELEMENTS.commentsListElement.appendChild(commentsFragment);
12+
DATA_ELEMENTS.photoModalElement.classList.add('hidden');
13+
document.body.classList.remove('modal-open');
3214
};
3315

34-
const renderModal = (({ url, description, likes, comments}) => {
16+
function onDocumentKeydown(evt) {
17+
if (isEscapeKey(evt)) {
18+
evt.preventDefault();
19+
closePhotoModal();
20+
}
21+
}
22+
23+
function closePhotoModal() {
24+
showModal(false);
25+
document.removeEventListener('keydown', onDocumentKeydown);
26+
closeComments();
27+
}
28+
29+
const renderModal = ({ url, description, likes, comments }) => {
3530
DATA_ELEMENTS.bigPhotoImgElement.src = url;
3631
DATA_ELEMENTS.bigPhotoImgElement.alt = description;
3732
DATA_ELEMENTS.likesCountElement.textContent = likes;
3833
DATA_ELEMENTS.socialCaptionElement.textContent = description;
3934

40-
DATA_ELEMENTS.commentsListElement.innerHTML = '';
41-
42-
DATA_ELEMENTS.commentShownCountElement.textContent = comments.length;
43-
DATA_ELEMENTS.commentTotalCountElement.textContent = comments.length;
44-
DATA_ELEMENTS.commentCountBlockElement.classList.add('hidden');
45-
DATA_ELEMENTS.commentsLoaderElement.classList.add('hidden');
46-
47-
renderComments(comments);
48-
});
35+
initComments(comments);
36+
};
4937

5038
const openPhotoModal = (photo) => {
5139
showModal();
5240
renderModal(photo);
5341
document.addEventListener('keydown', onDocumentKeydown);
5442
};
5543

56-
const closePhotoModal = () => {
57-
showModal(false);
58-
document.removeEventListener('keydown', onDocumentKeydown);
59-
};
60-
61-
DATA_ELEMENTS.photoModalCloseElement.addEventListener('click', () => {
62-
closePhotoModal();
63-
});
44+
DATA_ELEMENTS.photoModalCloseElement.addEventListener('click', closePhotoModal);
45+
DATA_ELEMENTS.commentsLoaderElement.addEventListener('click', renderNextComments);
6446

6547
export { openPhotoModal, closePhotoModal };

js/util.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ function createRandomIntegerFromRangeGenerator (min, max) {
1212
return function () {
1313
let currentValue = getRandomInteger(min, max);
1414
if (previousValues.length >= (max - min + 1)) {
15-
console.error('Перебраны все числа из диапазона от ' + min + ' до ' + max);
15+
window.console.log(`Перебраны все числа из диапазона от ${min} до ${max}`);
1616
return null;
1717
}
1818
while (previousValues.includes(currentValue)) {

0 commit comments

Comments
 (0)