Skip to content

Commit be2e278

Browse files
authored
Merge pull request #3 from Elvira-Nikolenko/module4-task1
2 parents 596b329 + 961f036 commit be2e278

File tree

2 files changed

+84
-0
lines changed

2 files changed

+84
-0
lines changed

index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,5 +234,6 @@ <h2 class="data-error__title">Не удалось загрузить данны
234234
</section>
235235
</template>
236236
<script src="js/functions.js"></script>
237+
<script src="js/main.js"></script>
237238
</body>
238239
</html>

js/main.js

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
const MIN_COUNT_ID = 1;
2+
const MAX_COUNT_ID = 25;
3+
const MAX_LENGTH_IMAGES = 25;
4+
const MOCK_DESCRIPTION = 'Картинка';
5+
const MIN_COUNT_COMMENTS = 0;
6+
const MAX_COUNT_COMMENTS = 30;
7+
const MIN_AVATAR_COUNT = 1;
8+
const MAX_AVATAR_COUNT = 6;
9+
const MIN_COUNT_LIKES = 15;
10+
const MAX_COUNT_LIKES = 200;
11+
const MOCK_COMMENTS_LIST = ['Всё отлично!', 'В целом всё неплохо. Но не всё.', 'Когда вы делаете фотографию, хорошо бы убирать палец из кадра. В конце концов это просто непрофессионально.', 'Моя бабушка случайно чихнула с фотоаппаратом в руках и у неё получилась фотография лучше.', 'Я поскользнулся на банановой кожуре и уронил фотоаппарат на кота и у меня получилась фотография лучше.', 'Лица у людей на фотке перекошены, как будто их избивают. Как можно было поймать такой неудачный момент?!'];
12+
const MOCK_NAMES = ['Петр', 'Иван', 'Порфирий'];
13+
14+
function getRandomNumber(min, max) {
15+
return Math.floor(Math.floor(Math.random() * (max - min + 1) + min));
16+
}
17+
18+
function getMockId(listId = [], min, max) {
19+
const randomNumber = getRandomNumber(min, max);
20+
if (!listId.includes(randomNumber)) {
21+
return randomNumber;
22+
}
23+
return getMockId(listId, min, max);
24+
}
25+
26+
function getRandomAvatar(min = MIN_AVATAR_COUNT, max = MAX_AVATAR_COUNT){
27+
return `img/avatar-${getRandomNumber(min, max)}.svg`;
28+
}
29+
30+
31+
function getRandomItemByIndex(list, minIndex = 0) {
32+
const randomIndex = getRandomNumber(minIndex, list.length - 1);
33+
return list[randomIndex];
34+
}
35+
36+
function getMockComment(commentsList = []) {
37+
const listId = commentsList.map((comment) => comment?.id);
38+
const id = getMockId(listId, MIN_COUNT_COMMENTS, MAX_COUNT_COMMENTS);
39+
40+
return {
41+
id,
42+
avatar: getRandomAvatar(),
43+
message: getRandomItemByIndex(MOCK_COMMENTS_LIST),
44+
name: getRandomItemByIndex(MOCK_NAMES),
45+
};
46+
}
47+
48+
49+
function getMockImage(imageList = []) {
50+
const listId = imageList.map((image) => image?.id);
51+
const id = getMockId(listId, MIN_COUNT_ID, MAX_COUNT_ID);
52+
const commentsLength = getRandomNumber(MIN_COUNT_COMMENTS, MAX_COUNT_COMMENTS);
53+
54+
return {
55+
id,
56+
url: `photos/${id}.jpg`,
57+
description: `${MOCK_DESCRIPTION} ${id}`,
58+
likes: getRandomNumber(MIN_COUNT_LIKES, MAX_COUNT_LIKES),
59+
comments: getCommentsList(commentsLength)
60+
};
61+
}
62+
63+
function getCommentsList(maxLength) {
64+
const commentsList = [];
65+
66+
for (let i = 0; i < maxLength; i++) {
67+
const comment = getMockComment(commentsList);
68+
commentsList.push(comment);
69+
}
70+
71+
return commentsList;
72+
}
73+
74+
function getImageList(maxLength = MAX_LENGTH_IMAGES) {
75+
const imagesList = [];
76+
77+
for (let i = 0; i < maxLength; i++) {
78+
const image = getMockImage(imagesList);
79+
imagesList.push(image);
80+
}
81+
82+
return imagesList;
83+
}

0 commit comments

Comments
 (0)