Skip to content

Commit d019a35

Browse files
authored
Merge pull request #4 from AnastasiiaXX/module5-task1
2 parents 2987a92 + c21f1da commit d019a35

5 files changed

Lines changed: 95 additions & 77 deletions

File tree

index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,6 @@ <h2 class="success__title">Изображение успешно загруже
233233
<h2 class="data-error__title">Не удалось загрузить данные</h2>
234234
</section>
235235
</template>
236-
236+
<script src="js/main.js" type="module"></script>
237237
</body>
238238
</html>

js/data.js

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
export const getPhotosData = () => {
2+
const COMMENTS_AUTHOR_NAMES = [
3+
'Анна',
4+
'Анастасия',
5+
'Виктория',
6+
'Виктор',
7+
'Павел',
8+
'Кирилл',
9+
'Лидия',
10+
'Мария',
11+
'Антон',
12+
'Екатерина',
13+
'Леонид',
14+
'Михаил',
15+
'Светлана',
16+
'Алена',
17+
'Оксана',
18+
'Вячеслав'
19+
];
20+
21+
const PHOTO_DESCRIPTIONS = [
22+
'Горы на рассвете',
23+
'Закат на море',
24+
'Селфи на фоне памятника',
25+
'Защита диплома',
26+
'Спящая кошка',
27+
'Пустой пляж',
28+
'Верблюды в пустыне',
29+
'Собака играет с мячом',
30+
'Дети на детской площадке',
31+
'Самолет в небе',
32+
'Толпа людей на концерте',
33+
'Вагон поезда',
34+
'Выпускной в школе',
35+
'Коллекция марок',
36+
];
37+
38+
const COMMENTS_MESSAGES = ['Всё отлично!',
39+
'В целом всё неплохо.', 'Но не всё.',
40+
'Когда вы делаете фотографию, хорошо бы убирать палец из кадра.',
41+
'В конце концов это просто непрофессионально.',
42+
'Моя бабушка случайно чихнула с фотоаппаратом в руках и у неё получилась фотография лучше.',
43+
'Я поскользнулся на банановой кожуре и уронил фотоаппарат на кота и у меня получилась фотография лучше.',
44+
'Лица у людей на фотке перекошены, как будто их избивают.',
45+
'Как можно было поймать такой неудачный момент?!'
46+
];
47+
48+
return { PHOTO_DESCRIPTIONS, COMMENTS_MESSAGES, COMMENTS_AUTHOR_NAMES };
49+
};

js/generate-data.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import { getRandomInteger, getRandomElement } from './helpers';
2+
import { getPhotosData } from './data';
3+
4+
const MIN_LIKES = 15;
5+
const MAX_LIKES = 200;
6+
7+
const PHOTOS_COUNT = 25;
8+
const MAX_COMMENTS_COUNT = 30;
9+
10+
const getRandomMessage = (array) => {
11+
const count = getRandomInteger(1, 2);
12+
return count === 1 ?
13+
getRandomElement(array)
14+
: `${getRandomElement(array)} ${getRandomElement(array)}`;
15+
};
16+
17+
const { COMMENTS_AUTHOR_NAMES, COMMENTS_MESSAGES, PHOTO_DESCRIPTIONS } = getPhotosData();
18+
19+
const createComment = (_, index) => ({
20+
id: index,
21+
avatar: `img/avatar-${getRandomInteger(1, 6)}.svg`,
22+
message: getRandomMessage(COMMENTS_MESSAGES),
23+
name: getRandomElement(COMMENTS_AUTHOR_NAMES),
24+
});
25+
26+
const createPhoto = (_, index) => ({
27+
id: index + 1,
28+
url: `photos/${index + 1}.jpg`,
29+
description: getRandomElement(PHOTO_DESCRIPTIONS),
30+
likes: getRandomInteger(MIN_LIKES, MAX_LIKES),
31+
comments: Array.from({length: getRandomInteger(0, MAX_COMMENTS_COUNT)}, createComment),
32+
});
33+
34+
export const createPhotos = () => Array.from({length: PHOTOS_COUNT}, createPhoto);

js/functions.js renamed to js/helpers.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,12 @@ const parseStringToInt = (string) => {
3131
};
3232

3333
parseStringToInt('78 dogs');
34+
35+
export const getRandomInteger = (num1, num2) => {
36+
const lower = Math.ceil(Math.min(num1, num2));
37+
const upper = Math.floor(Math.max(num1, num2));
38+
const result = Math.random() * (upper - lower + 1) + lower;
39+
return Math.floor(result);
40+
};
41+
42+
export const getRandomElement = (arr) => arr[getRandomInteger(0, arr.length - 1)];

js/main.js

Lines changed: 2 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -1,77 +1,3 @@
1-
const COMMENTS_AUTHOR_NAMES = [
2-
'Анна',
3-
'Анастасия',
4-
'Виктория',
5-
'Виктор',
6-
'Павел',
7-
'Кирилл',
8-
'Лидия',
9-
'Мария',
10-
'Антон',
11-
'Екатерина',
12-
'Леонид',
13-
'Михаил',
14-
'Светлана',
15-
'Алена',
16-
'Оксана',
17-
'Вячеслав'
18-
];
1+
import { createPhotos } from './generate-data';
192

20-
const PHOTO_DESCRIPTIONS = [
21-
'Горы на рассвете',
22-
'Закат на море',
23-
'Селфи на фоне памятника',
24-
'Защита диплома',
25-
'Спящая кошка',
26-
'Пустой пляж',
27-
'Верблюды в пустыне',
28-
'Собака играет с мячом',
29-
'Дети на детской площадке',
30-
'Самолет в небе',
31-
'Толпа людей на концерте',
32-
'Вагон поезда',
33-
'Выпускной в школе',
34-
'Коллекция марок',
35-
];
36-
37-
const COMMENTS_MESSAGES = ['Всё отлично!',
38-
'В целом всё неплохо.', 'Но не всё.',
39-
'Когда вы делаете фотографию, хорошо бы убирать палец из кадра.',
40-
'В конце концов это просто непрофессионально.',
41-
'Моя бабушка случайно чихнула с фотоаппаратом в руках и у неё получилась фотография лучше.',
42-
'Я поскользнулся на банановой кожуре и уронил фотоаппарат на кота и у меня получилась фотография лучше.',
43-
'Лица у людей на фотке перекошены, как будто их избивают.',
44-
'Как можно было поймать такой неудачный момент?!'
45-
];
46-
const getRandomInteger = (num1, num2) => {
47-
const lower = Math.ceil(Math.min(num1, num2));
48-
const upper = Math.floor(Math.max(num1, num2));
49-
const result = Math.random() * (upper - lower + 1) + lower;
50-
return Math.floor(result);
51-
};
52-
53-
const getRandomElement = (arr) => arr[getRandomInteger(0, arr.length - 1)];
54-
55-
const getRandomMessage = (array) => {
56-
const count = getRandomInteger(1, 2);
57-
return count === 1 ?
58-
getRandomElement(array)
59-
: `${getRandomElement(array)} ${getRandomElement(array)}`;
60-
};
61-
62-
const createComment = (_, index) => ({
63-
id: index,
64-
avatar: `img/avatar-${getRandomInteger(1, 6)}.svg`,
65-
message: getRandomMessage(COMMENTS_MESSAGES),
66-
name: getRandomElement(COMMENTS_AUTHOR_NAMES),
67-
});
68-
69-
const createPhoto = (_, index) => ({
70-
id: index + 1,
71-
url: `photos/${index + 1}.jpg`,
72-
description: getRandomElement(PHOTO_DESCRIPTIONS),
73-
likes: getRandomInteger(15, 200),
74-
comments: Array.from({length: getRandomInteger(0, 30)}, createComment),
75-
});
76-
77-
export const photos = Array.from({length: 25}, createPhoto);
3+
createPhotos();

0 commit comments

Comments
 (0)