diff --git a/.eslintrc b/.eslintrc index 4c020d6..dea1ed1 100644 --- a/.eslintrc +++ b/.eslintrc @@ -13,8 +13,9 @@ globals: Pristine: readonly rules: - no-unused-vars: - - warn + quotes: [1, "double", "avoid-escape"] + no-unused-vars: warn + no-console: warn extends: "htmlacademy/vanilla" diff --git a/index.html b/index.html index d6630fe..1c5b308 100644 --- a/index.html +++ b/index.html @@ -7,6 +7,7 @@ + Кекстаграм diff --git a/js/main.js b/js/main.js index e69de29..c357381 100644 --- a/js/main.js +++ b/js/main.js @@ -0,0 +1,98 @@ +// Массив с сообщениями для комментариев +const messages = [ + "Всё отлично!", + "В целом всё неплохо. Но не всё.", + "Когда вы делаете фотографию, хорошо бы убирать палец из кадра. В конце концов это просто непрофессионально.", + "Моя бабушка случайно чихнула с фотоаппаратом в руках и у неё получилась фотография лучше.", + "Я поскользнулся на банановой кожуре и уронил фотоаппарат на кота и у меня получилась фотография лучше.", + "Лица у людей на фотке перекошены, как будто их избивают. Как можно было поймать такой неудачный момент?!" +]; + +// Массив c описаниями фотографии +const descriptions = [ + "Фото сделано в самом центре города, когда солнце только начало садиться.", + "Прекрасный момент, пойманный на природе, с солнечными лучами, пробивающимися через деревья.", + "Эта фотография была сделана во время путешествия по горам. Вечер, туман и немного мистики.", + "Отличный кадр с друзьями на празднике! Эмоции переполняют.", + "Удивительный вид на город с высоты птичьего полета. Горы, дома и небо в одном кадре.", + "Момент из отпуска, когда мы катались на лодке по реке. Спокойствие и умиротворение.", +]; + +// Массив с именами пользователей +const names = [ + "Артём", "Мария", "Иван", "Светлана", "Никита", "Елена", "Дмитрий", "Ольга", "Максим", "Александра" +]; + +/** + * Генерация случайного целого числа в заданном диапазоне. + * @param {number} min - Минимальное значение. + * @param {number} max - Максимальное значение. + * @returns {number} - Случайное целое число от min до max (включительно). +*/ +function getRandomInt(min, max) { + return Math.floor(Math.random() * (max - min + 1) + min); +} + +/** + * Генерация случайных комментариев для фотографии. + * Количество комментариев выбирается случайным образом (от 0 до 30). + * Каждый комментарий состоит из уникального id, сообщений, имени отправителя и аватарки отправителя. + * @returns {Array} - Массив объектов комментариев. +*/ +function generateComments() { + const commentsCount = getRandomInt(0, 30); + const comments = []; + + for (let i = 0; i < commentsCount; i++) { + const messagesCount = getRandomInt(1, 3); + const randomMessages = []; + + for(let j = 0; j < messagesCount; j++) { + const randomMessage = messages[getRandomInt(0, messages.length - 1)]; + randomMessages.push(randomMessage); + } + + const randomName = names[getRandomInt(0, names.length - 1)]; + const avatarNumber = getRandomInt(1, 6); + comments.push({ + id: i + 1, + avatar: `img/avatar-${avatarNumber}.svg`, + message: randomMessages.join("\n"), + name: randomName + }); + } + + return comments; +} + +/** + * Генерация одного объекта фотографии. + * Каждая фотография имеет уникальный id, url, описание, количество лайков и случайные комментарии. + * @param {number} id - Идентификатор фотографии. + * @returns {Object} - Объект, представляющий фотографию с уникальными аттрибутами. +*/ +function generatePhoto(id) { + return { + id: id, + url: `photos/${id}.jpg`, + description: descriptions[getRandomInt(0, descriptions.length - 1)], + likes: getRandomInt(15, 200), + comments: generateComments() + }; +} + +/** + * Генерация массива из 25 фотографий. + * Каждая фотография представляет собой объект с уникальным id, url, описанием, лайками и комментариями. + * @returns {Array} - Массив из 25 объектов фотографий. +*/ +function generatePhotos() { + const photos = []; + for (let i = 1; i <= 25; i++) { + photos.push(generatePhoto(i)); + } + return photos; +} + +const generatedPhotos = generatePhotos(); +console.log(generatedPhotos);