diff --git a/index.html b/index.html index 33c46ee..87a9e35 100644 --- a/index.html +++ b/index.html @@ -7,6 +7,7 @@ Кекстаграм + diff --git a/js/constant.js b/js/constant.js new file mode 100644 index 0000000..246a283 --- /dev/null +++ b/js/constant.js @@ -0,0 +1,54 @@ +const POSTS_COUNT = 25; +const AVATAR_MIN_COUNT = 1; +const AVATAR_MAX_COUNT = 25; +const LIKES_MIN_COUNT = 15; +const LIKES_MAX_COUNT = 200; +const COMMENT_MIN_COUNT = 0; +const COMMENT_MAX_COUNT = 30; +const COMMENT_MAX_ID = 500000; + +const COMENT_NAMES = [ + 'Анна', + 'Александр', + 'Светлана', + 'Юра', + 'Сергей', + 'Полина', + 'Олег', + 'Андрей', + 'Юля', + 'Анастасия', + 'Соня', + 'Татьяна', + 'Алексей', + 'Артем', + 'Вера', + 'Ирина', + 'Николай', + 'Ева', + 'Ольга', + 'Алиса' +]; + +const POSTS_COMMENTS = [ + 'Всё отлично!', + 'В целом всё неплохо. Но не всё.', + 'Когда вы делаете фотографию, хорошо бы убирать палец из кадра. В конце концов это просто непрофессионально.', + 'Моя бабушка случайно чихнула с фотоаппаратом в руках и у неё получилась фотография лучше.', + 'Я поскользнулся на банановой кожуре и уронил фотоаппарат на кота и у меня получилась фотография лучше.', + 'Лица у людей на фотке перекошены, как будто их избивают. Как можно было поймать такой неудачный момент?!' +]; + +const DESCRIPTIONS = [ + 'Моя жизнь меняется, потому что меняю ее я.', + 'Не слушай никого, лишь твое сердце, оно все знает.', + 'Чтобы достичь новых берегов, мы должны плыть, а не дрейфовать.', + 'Навстречу новым приключениям.', + 'Каждое мгновенье жизни — еще одна возможность.', + 'Пусть эта фотография будет здесь', + 'Одна хорошая мысль утром меняет смысл целого дня.', + 'Как мало нужно для счастья.', + 'Этой фотографии описание не нужно' +]; + +export {POSTS_COUNT, AVATAR_MIN_COUNT, AVATAR_MAX_COUNT, LIKES_MIN_COUNT, LIKES_MAX_COUNT, COMMENT_MIN_COUNT, COMMENT_MAX_COUNT, COMMENT_MAX_ID, COMENT_NAMES, POSTS_COMMENTS, DESCRIPTIONS}; diff --git a/js/data.js b/js/data.js new file mode 100644 index 0000000..3649858 --- /dev/null +++ b/js/data.js @@ -0,0 +1,35 @@ +import { + POSTS_COUNT, AVATAR_MIN_COUNT, AVATAR_MAX_COUNT, LIKES_MIN_COUNT, LIKES_MAX_COUNT, COMMENT_MIN_COUNT, COMMENT_MAX_COUNT, COMMENT_MAX_ID, COMENT_NAMES, POSTS_COMMENTS, DESCRIPTIONS +} from './constant.js'; + +import { + getRandomInteger, getUniqueInteger, getRandomArrayElement +} from './utils.js'; + +const randomPostId = getUniqueInteger(1, POSTS_COUNT); +const randomPostUrl = getUniqueInteger(1, POSTS_COUNT); +const randomCommentID = getUniqueInteger(1, COMMENT_MAX_ID); + +const createPost = () => { + + const randomPostDescription = getRandomArrayElement(DESCRIPTIONS); + + const createComment = () => ({ + 'id': randomCommentID, + 'avatar': `img/avatar-${getRandomInteger(AVATAR_MIN_COUNT,AVATAR_MAX_COUNT)}.svg`, + 'message': getRandomArrayElement(POSTS_COMMENTS), + 'name': getRandomArrayElement(COMENT_NAMES), + }); + + return { + 'id': randomPostId(), + 'url': `photos/${randomPostUrl()}.jpg`, + 'description': randomPostDescription, + 'likes': getRandomInteger(LIKES_MIN_COUNT, LIKES_MAX_COUNT), + 'comments': Array.from({length: getRandomInteger(COMMENT_MIN_COUNT, COMMENT_MAX_COUNT)}, createComment), + }; +}; + +const randomPosts = () => Array.from({ length: POSTS_COUNT }, createPost); + +export {randomPosts}; diff --git a/js/main.js b/js/main.js index 9da6848..3d7f23c 100644 --- a/js/main.js +++ b/js/main.js @@ -1,100 +1,3 @@ -const POSTS_COUNT = 25; - -const COMENT_NAMES = [ - 'Анна', - 'Александр', - 'Светлана', - 'Юра', - 'Сергей', - 'Полина', - 'Олег', - 'Андрей', - 'Юля', - 'Анастасия', - 'Соня', - 'Татьяна', - 'Алексей', - 'Артем', - 'Вера', - 'Ирина', - 'Николай', - 'Ева', - 'Ольга', - 'Алиса' -]; - -const POSTS_COMMENTS = [ - 'Всё отлично!', - 'В целом всё неплохо. Но не всё.', - 'Когда вы делаете фотографию, хорошо бы убирать палец из кадра. В конце концов это просто непрофессионально.', - 'Моя бабушка случайно чихнула с фотоаппаратом в руках и у неё получилась фотография лучше.', - 'Я поскользнулся на банановой кожуре и уронил фотоаппарат на кота и у меня получилась фотография лучше.', - 'Лица у людей на фотке перекошены, как будто их избивают. Как можно было поймать такой неудачный момент?!' -]; - -const DESCRIPTIONS = [ - 'Моя жизнь меняется, потому что меняю ее я.', - 'Не слушай никого, лишь твое сердце, оно все знает.', - 'Чтобы достичь новых берегов, мы должны плыть, а не дрейфовать.', - 'Навстречу новым приключениям.', - 'Каждое мгновенье жизни — еще одна возможность.', - 'Пусть эта фотография будет здесь', - 'Одна хорошая мысль утром меняет смысл целого дня.', - 'Как мало нужно для счастья.', - 'Этой фотографии описание не нужно' -]; - -const getRandomInteger = (a, b) => { - const lower = Math.ceil(Math.min(a, b)); - const upper = Math.floor(Math.max(a, b)); - const result = Math.random() * (upper - lower + 1) + lower; - - return Math.floor(result); -}; - -function getUniqueInteger (min,max) { - const previousValues = []; - - return function () { - if (previousValues.length >= (max - min + 1)) { - return null; - } - let currentValue = getRandomInteger(min, max); - while (previousValues.includes(currentValue)) { - currentValue = getRandomInteger(min, max); - } - previousValues.push(currentValue); - - return currentValue; - }; -} - -const getRandomArrayElement = (elements) => elements[getRandomInteger(0, elements.length - 1)]; - -const randomPostId = getUniqueInteger(1, 25); -const randomPostUrl = getUniqueInteger(1, 25); -const randomCommentID = getUniqueInteger(1, 500000); - -const createPost = () => { - - const randomPostDescription = getRandomArrayElement(DESCRIPTIONS); - - const createComment = () => ({ - 'id': randomCommentID, - 'avatar': `img/avatar-${getRandomInteger(1, 6)}.svg`, - 'message': getRandomArrayElement(POSTS_COMMENTS), - 'name': getRandomArrayElement(COMENT_NAMES), - }); - - return { - 'id': randomPostId(), - 'url': `photos/${randomPostUrl()}.jpg`, - 'description': randomPostDescription, - 'likes': getRandomInteger(15, 200), - 'comments': Array.from({length: getRandomInteger(0, 30)}, createComment), - }; -}; - -const randomPosts = Array.from({length: POSTS_COUNT}, createPost); +import {randomPosts} from './data.js'; console.log(randomPosts); diff --git a/js/utils.js b/js/utils.js new file mode 100644 index 0000000..965e080 --- /dev/null +++ b/js/utils.js @@ -0,0 +1,28 @@ +const getRandomInteger = (a, b) => { + const lower = Math.ceil(Math.min(a, b)); + const upper = Math.floor(Math.max(a, b)); + const result = Math.random() * (upper - lower + 1) + lower; + + return Math.floor(result); +}; + +function getUniqueInteger (min,max) { + const previousValues = []; + + return function () { + if (previousValues.length >= (max - min + 1)) { + return null; + } + let currentValue = getRandomInteger(min, max); + while (previousValues.includes(currentValue)) { + currentValue = getRandomInteger(min, max); + } + previousValues.push(currentValue); + + return currentValue; + }; +} + +const getRandomArrayElement = (elements) => elements[getRandomInteger(0, elements.length - 1)]; + +export {getRandomInteger, getUniqueInteger, getRandomArrayElement};