Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Module5 task1 #5

Merged
merged 3 commits into from
Nov 22, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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>
75 changes: 2 additions & 73 deletions js/main.js
Original file line number Diff line number Diff line change
@@ -1,74 +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 getRandomCommentId = createRandomId(1, 30 * POSTS_COUNT);

const createComments = () => Array.from({length: getRandomInteger(0, 30)}, () => ({
id: getRandomCommentId(),
avatar: `img/avatar-${getRandomInteger(1, 6)}.svg`,
message: comments[getRandomInteger(0, comments.length - 1)],
name: names[getRandomInteger(0, names.length - 1)]
}));

const data = Array.from({length: POSTS_COUNT}, () => {
const id = generatePhotoId();
return {
id: id,
url: `photos/${id}.jpg`,
description: descriptions[getRandomInteger(0, descriptions.length - 1)],
likes: getRandomInteger(15, 200),
comments: createComments(),
};
});
console.log(data);
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};
Loading