Skip to content

Commit

Permalink
Merge pull request #4 from SergeyMedved/module5-task1
Browse files Browse the repository at this point in the history
  • Loading branch information
keksobot authored Dec 3, 2024
2 parents 3dceaa6 + efb8d8a commit 29c6858
Show file tree
Hide file tree
Showing 4 changed files with 120 additions and 115 deletions.
3 changes: 1 addition & 2 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,6 @@ <h2 class="success__title">Изображение успешно загруже
<h2 class="data-error__title">Не удалось загрузить данные</h2>
</section>
</template>
<script src="js/functions.js"></script>
<script src="js/main.js"></script>
<script src="js/main.js" type="module"></script>
</body>
</html>
102 changes: 102 additions & 0 deletions js/data.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
import { getRandomInt, getRandomUniqueInt } from './utils';

const descriptions = [
'закат и море',
'горы и пикник',
'портрет и пейзаж',
'цветы и животные',
'архитектура и природа',
'семья и друзья',
'путешествие и приключения',
'кулинария и рецепты',
'искусство и культура',
'спорт и тренировки',
'музыка и концерты',
'свадьба и праздник',
'дети и игры',
'животные и питомцы',
'мода и стиль',
'еда и напитки',
'вечеринка и танцы',
'фотография и композиция',
'книги и чтение',
'кино и сериалы',
'путешествия и туризм',
'природа и экология',
'искусство и арт-проекты',
'портрет знаменитости и интервью',
'закат и пляж'
];

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

const names = ['Иван', 'Анастасия', 'Ольга', 'Сергей', 'Антон', 'Марина', 'Евгений', 'Евгения'];

const createUrl = (index, isAvatar = false) => isAvatar ? `img/avatar-${index}.svg` : `photos/${index}.jpg`;

const createRandomMassege = (data) => {
const CallQty = {
MIN: 1,
MAX: 2,
};
const MessageRange = {
MIN: 0,
MAX: 7,
};
let message = '';
const quantityCall = getRandomInt(CallQty.MIN, CallQty.MAX);
for (let i = 0; i < quantityCall; i++) {
message += ` ${data[getRandomInt(MessageRange.MIN, MessageRange.MAX)]}`;
}
return message;
};

const createComments = (quantity, dataMessage, dataName) => {
const DataNameRange = {
MIN: 0,
MAX: 7,
};
const randomId = getRandomUniqueInt(1, quantity);
const randomUrl = getRandomUniqueInt(1, quantity);
return Array.from({ length: quantity }).map(() => ({
id: randomId(),
avatar: createUrl(randomUrl(), true),
message: createRandomMassege(dataMessage),
name: dataName[getRandomInt(DataNameRange.MIN, DataNameRange.MAX)],
}));
};

const createPhotos = (quantity) => {
const DescriptionsRange = {
MIN: 0,
MAX: 24,
};
const LikesRange = {
MIN: 15,
MAX: 200,
};
const CommentsRange = {
MIN: 0,
MAX: 30,
};
const randomId = getRandomUniqueInt(1, quantity);
const randomUrl = getRandomUniqueInt(1, quantity);
return Array.from({ length: quantity }).map(() => ({
id: randomId(),
url: createUrl(randomUrl()),
description: descriptions[getRandomInt(DescriptionsRange.MIN, DescriptionsRange.MAX)],
likes: getRandomInt(LikesRange.MIN, LikesRange.MAX),
comments: createComments(getRandomInt(CommentsRange.MIN, CommentsRange.MAX), messages, names),
}));
};

export { createPhotos };
114 changes: 1 addition & 113 deletions js/main.js
Original file line number Diff line number Diff line change
@@ -1,116 +1,4 @@
const descriptions = [
'закат и море',
'горы и пикник',
'портрет и пейзаж',
'цветы и животные',
'архитектура и природа',
'семья и друзья',
'путешествие и приключения',
'кулинария и рецепты',
'искусство и культура',
'спорт и тренировки',
'музыка и концерты',
'свадьба и праздник',
'дети и игры',
'животные и питомцы',
'мода и стиль',
'еда и напитки',
'вечеринка и танцы',
'фотография и композиция',
'книги и чтение',
'кино и сериалы',
'путешествия и туризм',
'природа и экология',
'искусство и арт-проекты',
'портрет знаменитости и интервью',
'закат и пляж'
];

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

const names = ['Иван','Анастасия','Ольга','Сергей','Антон','Марина','Евгений','Евгения'];

const getRandomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;

const getRandomUniqueInt = (min, max) => {
const uinqueIntArr = [];
return function () {
while (uinqueIntArr.length < max - min + 1) {
const randomInt = getRandomInt(min, max);
if (!uinqueIntArr.includes(randomInt)) {
uinqueIntArr.push(randomInt);
return randomInt;
}
}
};
};

const createUrl = (index, isAvatar = false) => isAvatar ? `img/avatar-${index}.svg` : `photos/${index}.jpg`;

const createRandomMassege = (data) => {
const CallQty = {
MIN: 1,
MAX: 2,
};
const MessageRange = {
MIN: 0,
MAX: 7,
};
let message = '';
const quantityCall = getRandomInt(CallQty.MIN, CallQty.MAX);
for (let i = 0; i < quantityCall; i++) {
message += ` ${data[getRandomInt(MessageRange.MIN, MessageRange.MAX)]}`;
}
return message;
};

const createComments = (quantity, dataMessage, dataName) => {
const DataNameRange = {
MIN: 0,
MAX: 7,
};
const randomId = getRandomUniqueInt(1, quantity);
const randomUrl = getRandomUniqueInt(1, quantity);
return Array.from({ length: quantity }).map(() => ({
id: randomId(),
avatar: createUrl(randomUrl(), true),
message: createRandomMassege(dataMessage),
name: dataName[getRandomInt(DataNameRange.MIN, DataNameRange.MAX)],
}));
};

const createPhotos = (quantity) => {
const DescriptionsRange = {
MIN: 0,
MAX: 24,
};
const LikesRange = {
MIN: 15,
MAX: 200,
};
const CommentsRange = {
MIN: 0,
MAX: 30,
};
const randomId = getRandomUniqueInt(1, quantity);
const randomUrl = getRandomUniqueInt(1, quantity);
return Array.from({ length: quantity }).map(() => ({
id: randomId(),
url: createUrl(randomUrl()),
description: descriptions[getRandomInt(DescriptionsRange.MIN, DescriptionsRange.MAX)],
likes: getRandomInt(LikesRange.MIN, LikesRange.MAX),
comments: createComments(getRandomInt(CommentsRange.MIN, CommentsRange.MAX), messages, names),
}));
};
import { createPhotos } from './data.js';

const result = createPhotos(25);

Expand Down
16 changes: 16 additions & 0 deletions js/utils.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
const getRandomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;

const getRandomUniqueInt = (min, max) => {
const uinqueIntArr = [];
return function () {
while (uinqueIntArr.length < max - min + 1) {
const randomInt = getRandomInt(min, max);
if (!uinqueIntArr.includes(randomInt)) {
uinqueIntArr.push(randomInt);
return randomInt;
}
}
};
};

export {getRandomInt, getRandomUniqueInt};

0 comments on commit 29c6858

Please sign in to comment.