Кекстаграм
diff --git a/js/constants.js b/js/constants.js
new file mode 100644
index 0000000..b8408ce
--- /dev/null
+++ b/js/constants.js
@@ -0,0 +1,24 @@
+// Массив с сообщениями для комментариев
+export const MESSAGES = [
+ "Всё отлично!",
+ "В целом всё неплохо. Но не всё.",
+ "Когда вы делаете фотографию, хорошо бы убирать палец из кадра. В конце концов это просто непрофессионально.",
+ "Моя бабушка случайно чихнула с фотоаппаратом в руках и у неё получилась фотография лучше.",
+ "Я поскользнулся на банановой кожуре и уронил фотоаппарат на кота и у меня получилась фотография лучше.",
+ "Лица у людей на фотке перекошены, как будто их избивают. Как можно было поймать такой неудачный момент?!"
+];
+
+// Массив c описаниями фотографии
+export const DESCRIPTIONS = [
+ "Фото сделано в самом центре города, когда солнце только начало садиться.",
+ "Прекрасный момент, пойманный на природе, с солнечными лучами, пробивающимися через деревья.",
+ "Эта фотография была сделана во время путешествия по горам. Вечер, туман и немного мистики.",
+ "Отличный кадр с друзьями на празднике! Эмоции переполняют.",
+ "Удивительный вид на город с высоты птичьего полета. Горы, дома и небо в одном кадре.",
+ "Момент из отпуска, когда мы катались на лодке по реке. Спокойствие и умиротворение.",
+];
+
+// Массив с именами пользователей
+export const NAMES = [
+ "Артём", "Мария", "Иван", "Светлана", "Никита", "Елена", "Дмитрий", "Ольга", "Максим", "Александра"
+];
diff --git a/js/data.js b/js/data.js
new file mode 100644
index 0000000..a417f49
--- /dev/null
+++ b/js/data.js
@@ -0,0 +1,63 @@
+import { getRandomInt } from "./utils.js";
+import { MESSAGES, DESCRIPTIONS, NAMES} from "./constants.js";
+
+/**
+ * Генерация случайных комментариев для фотографии.
+ * Количество комментариев выбирается случайным образом (от 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 объектов фотографий.
+*/
+export function generatePhotos() {
+ const photos = [];
+ for (let i = 1; i <= 25; i++) {
+ photos.push(generatePhoto(i));
+ }
+ return photos;
+}
diff --git a/js/main.js b/js/main.js
index c357381..30da07d 100644
--- a/js/main.js
+++ b/js/main.js
@@ -1,98 +1,4 @@
-// Массив с сообщениями для комментариев
-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;
-}
+import { generatePhotos } from "./data.js";
const generatedPhotos = generatePhotos();
console.log(generatedPhotos);
diff --git a/js/utils.js b/js/utils.js
new file mode 100644
index 0000000..f1ac596
--- /dev/null
+++ b/js/utils.js
@@ -0,0 +1,10 @@
+/**
+ * Генерация случайного целого числа в заданном диапазоне.
+ * @param {number} min - Минимальное значение.
+ * @param {number} max - Максимальное значение.
+ * @returns {number} - Случайное целое число от min до max (включительно).
+*/
+export function getRandomInt(min, max) {
+ return Math.floor(Math.random() * (max - min + 1) + min);
+}
+