|
1 | | -const MIN_LIKES = 15; |
2 | | -const MAX_LIKES = 200; |
3 | | -const MIN_COMMENTS = 0; |
4 | | -const MAX_COMMENTS = 30; |
| 1 | +import { getPhotos } from './data.js'; |
5 | 2 |
|
6 | | -const DESCRIPTION = [ |
7 | | - 'Красивый вид', |
8 | | - 'Указатель', |
9 | | - 'Море', |
10 | | - 'Девушка', |
11 | | - 'Суп-улыбка', |
12 | | - 'Спортивная-машина', |
13 | | - 'Клубника на тарелке', |
14 | | - 'Морс', |
15 | | - 'Самолет над пляжем', |
16 | | - 'Отдел для обуви', |
17 | | - 'Ограждение на пляже', |
18 | | - 'Спорткар Ауди', |
19 | | - 'Салат', |
20 | | - 'Кот ролл', |
21 | | - 'Модные сапоги', |
22 | | - 'Вид с высоты', |
23 | | - 'Оркестр', |
24 | | - 'Ретроавтомобиль', |
25 | | - 'Женщина в тапочках', |
26 | | - 'Пальмы в зоне отеля', |
27 | | - 'Тарелка с едой', |
28 | | - 'Закат на море', |
29 | | - 'Краб', |
30 | | - 'Фаер-шоу', |
31 | | - 'Тропики', |
32 | | -]; |
| 3 | +const photos = getPhotos(25); |
| 4 | +console.log(photos); |
33 | 5 |
|
34 | | -// Функция getRandomNumber |
35 | | -const getRandomNumber = (min, max) => { |
36 | | - const left = Math.ceil(Math.min(min, max)); |
37 | | - const right = Math.floor(Math.max(min, max)); |
38 | | - const random = Math.random() * (right - left + 1) + left; |
39 | | - return Math.floor(random); |
40 | | -}; |
| 6 | +// отрисовка миниатюр |
| 7 | +//блоки счётчика комментариев |
41 | 8 |
|
42 | | -//Функция getRandomElement |
43 | | -const getRandomElement = (items) => items[getRandomNumber(0, items.length - 1)]; |
44 | | - |
45 | | -// Массив имён для комментаторов |
46 | | -const NAMES = [ |
47 | | - 'Александр', |
48 | | - 'Мария', |
49 | | - 'Иван', |
50 | | - 'Екатерина', |
51 | | - 'Дмитрий', |
52 | | - 'Анна', |
53 | | - 'Сергей', |
54 | | - 'Ольга', |
55 | | - 'Алексей', |
56 | | - 'Наталья', |
57 | | - 'Артём', |
58 | | - 'Елена', |
59 | | - 'Максим', |
60 | | - 'Татьяна', |
61 | | - 'Владимир', |
62 | | -]; |
63 | | - |
64 | | -// Массив фраз для комментариев |
65 | | -const PHRASES = [ |
66 | | - 'Всё отлично!', |
67 | | - 'В целом всё неплохо. Но не всё.', |
68 | | - 'Когда вы делаете фотографию, хорошо бы убирать палец из кадра. В конце концов это просто непрофессионально.', |
69 | | - 'Моя бабушка случайно чихнула с фотоаппаратом в руках и у неё получилась фотография лучше.', |
70 | | - 'Я поскользнулся на банановой кожуре и уронил фотоаппарат на кота и у меня получилась фотография лучше.', |
71 | | - 'Лица у людей на фотке перекошены, как будто их избивают. Как можно было поймать такой неудачный момент?!', |
72 | | -]; |
73 | | - |
74 | | -// Функция для генерации текста комментария (1 или 2 предложения) |
75 | | -const generateMessage = () => { |
76 | | - const numberOfPhrases = getRandomNumber(1, 2); |
77 | | - |
78 | | - if (numberOfPhrases === 1) { |
79 | | - return getRandomElement(PHRASES); |
80 | | - } else { |
81 | | - const firstPhrase = getRandomElement(PHRASES); |
82 | | - let secondPhrase = getRandomElement(PHRASES); |
83 | | - |
84 | | - // Чтобы предложения не были одинаковыми |
85 | | - while (firstPhrase === secondPhrase) { |
86 | | - secondPhrase = getRandomElement(PHRASES); |
87 | | - } |
88 | | - |
89 | | - return `${firstPhrase} ${secondPhrase}`; |
90 | | - } |
91 | | -}; |
92 | | - |
93 | | -// Счётчик для уникальных id комментариев |
94 | | -let commentId = 1; |
95 | | - |
96 | | -// Функция getComments |
97 | | -const getComments = () => { |
98 | | - const n = getRandomNumber(MIN_COMMENTS, MAX_COMMENTS); |
99 | | - const comments = []; |
100 | | - |
101 | | - for (let i = 0; i < n; i++) { |
102 | | - comments.push({ |
103 | | - id: commentId++, // уникальный id, увеличивается после каждого использования |
104 | | - avatar: `img/avatar-${getRandomNumber(1, 6)}.svg`, |
105 | | - message: generateMessage(), // случайное сообщение из 1-2 фраз |
106 | | - name: getRandomElement(NAMES), // случайное имя из списка |
107 | | - }); |
108 | | - } |
109 | | - |
110 | | - return comments; |
111 | | -}; |
112 | | - |
113 | | -// Функция getPhoto |
114 | | -const getPhoto = (i) => ({ |
115 | | - id: i, |
116 | | - url: `photos/${i}.jpg`, |
117 | | - description: getRandomElement(DESCRIPTION), |
118 | | - likes: getRandomNumber(MIN_LIKES, MAX_LIKES), |
119 | | - comments: getComments(), |
120 | | -}); |
121 | | - |
122 | | -// Исправленная функция getPhotos (была рекурсия, теперь правильно) |
123 | | -const getPhotos = (n) => { |
124 | | - const photos = []; |
125 | | - for (let i = 1; i <= n; i++) { |
126 | | - photos.push(getPhoto(i)); // было getPhotos(i) — это вызывало рекурсию |
127 | | - } |
128 | | - return photos; |
129 | | -}; |
130 | | - |
131 | | -// eslint-disable-next-line no-console |
132 | | -console.log(getPhotos(25)); |
0 commit comments