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

Модуляция #4

Merged
Merged
Show file tree
Hide file tree
Changes from all 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
5 changes: 3 additions & 2 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,8 @@ <h2 class="data-error__title">Не удалось загрузить данны
</template>

</body>
<script src="./js/functions.js" defer></script>
<script src="./js/main.js" defer></script>

<script src="js/main.js" type="module"></script>
<script src="js/functions.js"></script>

</html>
40 changes: 40 additions & 0 deletions js/constants.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
export const PHOTO_DESCRIPTION_COUNT = 25;
export const PHOTOS_MIN = 1;
export const PHOTOS_MAX = 25;
export const LIKES_MIN = 15;
export const LIKES_MAX = 200;
export const AVATAR_MIN = 1;
export const AVATAR_MAX = 6;
export const COMMENTS_MIN = 0;
export const COMMENTS_MAX = 30;

export const NAMES = [
'Настя_yellow',
'Kate',
'Иван',
'Маша',
'Olly_Sunshine',
'Женя',
'Олег',
'Кирилл Ivanov',
'Alex'
];

export const DESCRIPTIONS = [
'Прекрасный день!',
'Новая фотография для альбома.',
'Делюсь своими впечатлениями.',
'Захватывающее место!',
'Это был незабываемый момент.',
'Доброе утро, Мир!',
'Всем хорошего дня и прекрасного настроения.',
];

export const MESSAGES = [
'Всё отлично!',
'В целом всё неплохо. Но не всё.',
'Когда вы делаете фотографию, хорошо бы убирать палец из кадра. В конце концов это просто непрофессионально',
'Моя бабушка случайно чихнула с фотоаппаратом в руках и у неё получилась фотография лучше.',
'Я поскользнулся на банановой кожуре и уронил фотоаппарат на кота и у меня получилась фотография лучше.',
'Лица у людей на фотке перекошены, как будто их избивают. Как можно было поймать такой неудачный момент?!'
];
53 changes: 53 additions & 0 deletions js/data.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import {
PHOTO_DESCRIPTION_COUNT,
PHOTOS_MIN,
PHOTOS_MAX,
LIKES_MIN,
LIKES_MAX,
AVATAR_MIN,
AVATAR_MAX,
COMMENTS_MIN,
COMMENTS_MAX,
NAMES,
DESCRIPTIONS,
MESSAGES
} from './constants.js';

import {
getIdGenerator,
getRandomInteger,
getRandomArrayElement} from './util.js';

const generatePhotoId = getIdGenerator(); // Генератор ID для фотографий
const generateCommentId = getIdGenerator(); // Генератор ID для комментариев


// Генерация одного комментария
const generateComment = () => ({
id: generateCommentId(),
avatar: `img/avatar-${getRandomInteger(AVATAR_MIN, AVATAR_MAX)}.svg`,
message: getRandomArrayElement(MESSAGES),
name: getRandomArrayElement(NAMES),
});

// Генерация массива комментариев
const generateComments = () => {
const commentsCount = getRandomInteger(COMMENTS_MIN, COMMENTS_MAX);
return Array.from({length: commentsCount}, generateComment);
};

// Генерация одного описания фотографии
const generatePhotoDescription = () => ({
id: generatePhotoId(),
url: `photos/${getRandomInteger(PHOTOS_MIN, PHOTOS_MAX)}.jpg`,
description: getRandomArrayElement(DESCRIPTIONS),
likes: getRandomInteger(LIKES_MIN, LIKES_MAX),
comments: generateComments(),
});

// Генерация массива описаний фотографий
const generateDataPhotoDescriptions = () => Array.from(
{length: PHOTO_DESCRIPTION_COUNT},
generatePhotoDescription);

export {generateDataPhotoDescriptions};
Empty file added js/effects.js
Empty file.
Empty file added js/feed.js
Empty file.
Empty file added js/fetch.js
Empty file.
Empty file added js/filters.js
Empty file.
Empty file added js/form-visability.js
Empty file.
Empty file added js/form.js
Empty file.
Empty file added js/fullscreen.js
Empty file.
97 changes: 15 additions & 82 deletions js/main.js
Original file line number Diff line number Diff line change
@@ -1,82 +1,15 @@
const PHOTO_DESCRIPTION_COUNT = 25;

const NAMES = [
'Настя_yellow',
'Kate',
'Иван',
'Маша',
'Olly_Sunshine',
'Женя',
'Олег',
'Кирилл Ivanov',
'Alex'
];
const DESCRIPTIONS = [
'Прекрасный день!',
'Новая фотография для альбома.',
'Делюсь своими впечатлениями.',
'Захватывающее место!',
'Это был незабываемый момент.',
'Доброе утро, Мир!',
'Всем хорошего дня и прекрасного настроения.',
];

const MESSAGES = [
'Всё отлично!',
'В целом всё неплохо. Но не всё.',
'Когда вы делаете фотографию, хорошо бы убирать палец из кадра. В конце концов это просто непрофессионально',
'Моя бабушка случайно чихнула с фотоаппаратом в руках и у неё получилась фотография лучше.',
'Я поскользнулся на банановой кожуре и уронил фотоаппарат на кота и у меня получилась фотография лучше.',
'Лица у людей на фотке перекошены, как будто их избивают. Как можно было поймать такой неудачный момент?!'
];

// Генерация уникального ID
const getIdGenerator = () => {
let id = 0;
return function () {
id ++;
return id;
};
};

const photoId = getIdGenerator();
const commentId = getIdGenerator();

// Генерация случайного числа в диапазоне
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);
};

const likesCount = getRandomInteger(15, 200);

// Получение случайного элемента массива
const getRandomArrayElement = (elements) => elements[getRandomInteger(0, elements.length - 1)];

// Генерация одного комментария
const generateComment = () => ({
id: commentId(),
avatar: `img/avatar-${getRandomInteger(1, 6)}.svg`,
message: `${getRandomArrayElement(MESSAGES)}`,
name: `${getRandomArrayElement(NAMES)}`,
});

// Генерация массива комментариев
const generateComments = () => {
const commentsCount = getRandomInteger(0, 30);
return Array.from({length: commentsCount}, generateComment);
};

// Генерация одного описания фотографии
const generatePhotoDescription = () => ({
id: photoId(),
url: `photos/${photoId()}.jpg`,
description: `${getRandomArrayElement(DESCRIPTIONS)}`,
likes: likesCount,
comments: generateComments(),
});

// Генерация массива описаний фотографий
const photoDescriptions = Array.from({length: PHOTO_DESCRIPTION_COUNT}, generatePhotoDescription);
import {generateDataPhotoDescriptions} from './data.js';
import './upload.js';
import './scale.js';
import './effects.js';
import './validation.js';
import './fetch.js';
import './thumbnails.js';
import './filters.js';
import './fullscreen.js';
import './feed.js';
import './form.js';
import './form-visability.js';

const photoDescriptions = generateDataPhotoDescriptions();
console.log(photoDescriptions);

Check failure on line 15 in js/main.js

View workflow job for this annotation

GitHub Actions / Check

Unexpected console statement
Empty file added js/scale.js
Empty file.
Empty file added js/thumbnails.js
Empty file.
Empty file added js/upload.js
Empty file.
23 changes: 23 additions & 0 deletions js/util.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// Генерация уникального ID
const getIdGenerator = () => {
let id = 0;
return () => ++id;
};

// Генерация случайного числа в диапазоне
const getRandomInteger = (min, max) => {
const lower = Math.ceil(Math.min(min, max));
const upper = Math.floor(Math.max(min, max));
const result = Math.random() * (upper - lower + 1) + lower;
return Math.floor(result);
};


// Получение случайного элемента массива
const getRandomArrayElement = (elements) => elements[getRandomInteger(0, elements.length - 1)];

export {
getIdGenerator,
getRandomInteger,
getRandomArrayElement
};
Empty file added js/validation.js
Empty file.
Loading