Skip to content

Commit

Permalink
Merge pull request #5 from nikitakhrulev/module5-task1
Browse files Browse the repository at this point in the history
Module5 task1
  • Loading branch information
craz3r authored Nov 22, 2024
2 parents df8d6a1 + 6be5228 commit eb4d5dd
Show file tree
Hide file tree
Showing 5 changed files with 93 additions and 83 deletions.
2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,6 @@ <h2 class="success__title">Изображение успешно загруже
<h2 class="data-error__title">Не удалось загрузить данные</h2>
</section>
</template>
<script src="./js/main.js"></script>
<script type="module" src="./js/main.js"></script>
</body>
</html>
84 changes: 2 additions & 82 deletions js/main.js
Original file line number Diff line number Diff line change
@@ -1,83 +1,3 @@
const POSTS_COUNT = 25;
const COMMENTS = [
'Всё отлично!',
'В целом всё неплохо. Но не всё.',
'Когда вы делаете фотографию, хорошо бы убирать палец из кадра. В конце концов это просто непрофессионально.',
'Моя бабушка случайно чихнула с фотоаппаратом в руках и у неё получилась фотография лучше.',
'Я поскользнулся на банановой кожуре и уронил фотоаппарат на кота и у меня получилась фотография лучше.',
'Лица у людей на фотке перекошены, как будто их избивают. Как можно было поймать такой неудачный момент?!'
];
const NAMES = [
'Александр', 'Алексей', 'Андрей', 'Антон', 'Аркадий',
'Борис', 'Вадим', 'Валентин', 'Валерий', 'Василий',
'Виктор', 'Виталий', 'Владимир', 'Владислав', 'Геннадий',
'Георгий', 'Григорий', 'Даниил',
];
const DESCRIPTIONS = [
'Закат над спокойным морем.',
'Горный пейзаж в облаках.',
'Свет вечернего солнца в лесу.',
'Кот, дремлющий на подоконнике.',
'Уютное кафе с чашкой кофе.',
'Дорога в осеннем лесу.',
'Шумный городской пейзаж ночью.',
'Цветущий луг весной.',
'Детали старинной архитектуры.',
'Голубое небо с одиноким облаком.'
];

function getRandomInteger (min, max) {
const lower = Math.ceil(Math.min(Math.abs(min), Math.abs(max)));
const upper = Math.floor(Math.max(Math.abs(min), Math.abs(max)));
const result = Math.random() * (upper - lower + 1) + lower;

return Math.floor(result);
}

function createRandomId (min, max) {
const previousValues = [];

return function () {
let currentValue = getRandomInteger(min, max);
if (previousValues.length >= (max - min + 1)) {
throw new Error('Уникальные значения исчерпаны');
}
while (previousValues.includes(currentValue)) {
currentValue = getRandomInteger(min, max);
}
previousValues.push(currentValue);
return currentValue;
};
}

const generatePhotoId = createRandomId(1, POSTS_COUNT);
const generateCommentId = createRandomId(1, 30 * POSTS_COUNT);

const createSingleComment = () => ({
id: generateCommentId(),
avatar: `img/avatar-${getRandomInteger(1, 6)}.svg`,
message: COMMENTS[getRandomInteger(0, COMMENTS.length - 1)],
name: NAMES[getRandomInteger(0, NAMES.length - 1)]
});

const createComments = () => Array.from({length: getRandomInteger(0, 30)}, createSingleComment);

const createPhotoPost = () => {
const id = generatePhotoId();
return {
id: id,
url: `photos/${id}.jpg`,
description: DESCRIPTIONS[getRandomInteger(0, DESCRIPTIONS.length - 1)],
likes: getRandomInteger(15, 200),
comments: createComments(),
};
};

const createMockData = () => {
const data = Array.from({length: POSTS_COUNT}, createPhotoPost);
return data;
};

createMockData();

import { createMockPosts } from './posts';

createMockPosts();
31 changes: 31 additions & 0 deletions js/mock-data.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
const POSTS_DATA = {
POSTS_COUNT: 25,
COMMENTS: [
'Всё отлично!',
'В целом всё неплохо. Но не всё.',
'Когда вы делаете фотографию, хорошо бы убирать палец из кадра. В конце концов это просто непрофессионально.',
'Моя бабушка случайно чихнула с фотоаппаратом в руках и у неё получилась фотография лучше.',
'Я поскользнулся на банановой кожуре и уронил фотоаппарат на кота и у меня получилась фотография лучше.',
'Лица у людей на фотке перекошены, как будто их избивают. Как можно было поймать такой неудачный момент?!'
],
NAMES: [
'Александр', 'Алексей', 'Андрей', 'Антон', 'Аркадий',
'Борис', 'Вадим', 'Валентин', 'Валерий', 'Василий',
'Виктор', 'Виталий', 'Владимир', 'Владислав', 'Геннадий',
'Георгий', 'Григорий', 'Даниил',
],
DESCRIPTIONS: [
'Закат над спокойным морем.',
'Горный пейзаж в облаках.',
'Свет вечернего солнца в лесу.',
'Кот, дремлющий на подоконнике.',
'Уютное кафе с чашкой кофе.',
'Дорога в осеннем лесу.',
'Шумный городской пейзаж ночью.',
'Цветущий луг весной.',
'Детали старинной архитектуры.',
'Голубое небо с одиноким облаком.'
]
};

export { POSTS_DATA };
34 changes: 34 additions & 0 deletions js/posts.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { createRandomId, getRandomInteger } from './utils';
import { POSTS_DATA } from './mock-data';

const { POSTS_COUNT, NAMES, DESCRIPTIONS, COMMENTS} = POSTS_DATA;

const generatePhotoId = createRandomId(1, POSTS_COUNT);
const generateCommentId = createRandomId(1, 30 * POSTS_COUNT);

const createSingleComment = () => ({
id: generateCommentId(),
avatar: `img/avatar-${getRandomInteger(1, 6)}.svg`,
message: COMMENTS[getRandomInteger(0, COMMENTS.length - 1)],
name: NAMES[getRandomInteger(0, NAMES.length - 1)]
});

const createComments = () => Array.from({length: getRandomInteger(0, 30)}, createSingleComment);

const createPhotoPost = () => {
const id = generatePhotoId();
return {
id: id,
url: `photos/${id}.jpg`,
description: DESCRIPTIONS[getRandomInteger(0, DESCRIPTIONS.length - 1)],
likes: getRandomInteger(15, 200),
comments: createComments(),
};
};

const createMockPosts = () => {
const data = Array.from({length: POSTS_COUNT}, createPhotoPost);
return data;
};

export {createMockPosts};
25 changes: 25 additions & 0 deletions js/utils.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
function getRandomInteger (min, max) {
const lower = Math.ceil(Math.min(Math.abs(min), Math.abs(max)));
const upper = Math.floor(Math.max(Math.abs(min), Math.abs(max)));
const result = Math.random() * (upper - lower + 1) + lower;

return Math.floor(result);
}

function createRandomId (min, max) {
const previousValues = [];

return function () {
let currentValue = getRandomInteger(min, max);
if (previousValues.length >= (max - min + 1)) {
throw new Error('Уникальные значения исчерпаны');
}
while (previousValues.includes(currentValue)) {
currentValue = getRandomInteger(min, max);
}
previousValues.push(currentValue);
return currentValue;
};
}

export {createRandomId, getRandomInteger};

0 comments on commit eb4d5dd

Please sign in to comment.