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

Функции возвращаются #8

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
2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ <h2 class="success__title">Изображение успешно загруже
<h2 class="data-error__title">Не удалось загрузить данные</h2>
</section>
</template>
<script src="js/main.js" type="module"></script>
<script src="js/functions.js"></script>
<script src="js/main.js"></script>
</body>
</html>
127 changes: 127 additions & 0 deletions js/data.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
import {
getRandomInt,
getRandomUniqueInt,
getRandomArrElement
} from './util.js';

const OBJECT_QTY = 25;

const IdPhotoRange = {
MIN: 1,
MAX: 25,
};

const IdMessageRange = {
MIN: 1,
MAX: 1111,
};

const UrlRange = {
MIN: 1,
MAX: 25,
};

const LikesRange = {
MIN: 15,
MAX: 200,
};

const CommentsRange = {
MIN: 0,
MAX: 30,
};

const MessageRange = {
MIN: 1,
MAX: 2,
};

const AvatarRange = {
MIN: 1,
MAX: 6,
};

const DESCRIPTION = [
"Закат на берегу моря",

Check failure on line 45 in js/data.js

View workflow job for this annotation

GitHub Actions / Check

Strings must use singlequote
"Старинная улочка европейского города",

Check failure on line 46 in js/data.js

View workflow job for this annotation

GitHub Actions / Check

Strings must use singlequote
"Котенок спит на кровати",

Check failure on line 47 in js/data.js

View workflow job for this annotation

GitHub Actions / Check

Strings must use singlequote
"Заснеженные склоны Хибин",

Check failure on line 48 in js/data.js

View workflow job for this annotation

GitHub Actions / Check

Strings must use singlequote
"Букет цветов на столе",

Check failure on line 49 in js/data.js

View workflow job for this annotation

GitHub Actions / Check

Strings must use singlequote
"Велосипед пристегнутый на велопарковке",

Check failure on line 50 in js/data.js

View workflow job for this annotation

GitHub Actions / Check

Strings must use singlequote
"Чашка горячего кофе",

Check failure on line 51 in js/data.js

View workflow job for this annotation

GitHub Actions / Check

Strings must use singlequote
"Осенний парк с опавшей листвой",

Check failure on line 52 in js/data.js

View workflow job for this annotation

GitHub Actions / Check

Strings must use singlequote
"Маяк на скалистом берегу",

Check failure on line 53 in js/data.js

View workflow job for this annotation

GitHub Actions / Check

Strings must use singlequote
"Шмель на цветке",

Check failure on line 54 in js/data.js

View workflow job for this annotation

GitHub Actions / Check

Strings must use singlequote
"Деревенский домик в глухом лесу",
"Отражение звезд на поверхности Ладоги",
"Птенцы в гнезде",
"Радуга над зеленым полем после дождя",
"Следы на песчаном пляже",
];

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

const AUTHOR_NAME = [
"Довакин",
"Алдуин",
"Шеппард",
"Геральт",
"Супер Марио",
"Соник",
"Кратос",
"Солид Снейк",
"Клод Страйф",
"Лара Крофт",
"Наруто",
"Элли",
"Джоель",
"Сэм Фишер",
];

const getPhotoId = getRandomUniqueInt(IdPhotoRange.MIN, IdPhotoRange.MAX);

const getRandomUrl = getRandomUniqueInt(UrlRange.MIN, UrlRange.MAX);

const getMessageId = getRandomUniqueInt(IdMessageRange.MIN, IdMessageRange.MAX);

const createComment = () => {
const messagesQty = [];
while (
messagesQty.length < getRandomInt(MessageRange.MIN, MessageRange.MAX)
) {
messagesQty.push(getRandomArrElement(MESSAGE));
}
return {
id: getMessageId(),
avatar: `img/avatar-${getRandomInt(AvatarRange.MIN, AvatarRange.MAX)}.svg`,
message: messagesQty.join(" "),
name: getRandomArrElement(AUTHOR_NAME),
};
};

const generateObj = () => {
const comments = Array.from(
{ length: getRandomInt(CommentsRange.MIN, CommentsRange.MAX) },
createComment
);
return {
id: getPhotoId(),
url: `photos/${getRandomUrl()}.jpg`,
description: getRandomArrElement(DESCRIPTION),
likes: getRandomInt(LikesRange.MIN, LikesRange.MAX),
comments,
};
};

const generateArrObj = () => Array.from({ length: OBJECT_QTY }, generateObj);

export {
generateArrObj
};
65 changes: 0 additions & 65 deletions js/function.js

This file was deleted.

80 changes: 16 additions & 64 deletions js/functions.js
Original file line number Diff line number Diff line change
@@ -1,65 +1,17 @@
const checkStringLength = (str, length) => str.length <= length;
console.log(checkStringLength('тестовая строка', 5));
const isWithinWorkingHours = (workdayStart, workdayEnd, meetingStart, meetingLength) => {
const convertToMinutes = (timeString) => {
const [hours, minutes] = timeString.split(':');
return (Number(hours) * 60) + Number(minutes)
};
const workdayStartMinutes = convertToMinutes(workdayStart);
const workdayEndMinutes = convertToMinutes(workdayEnd);
const meetingStartMinutes = convertToMinutes(meetingStart);
const meetingEndMinutes = meetingStartMinutes + meetingLength;
return meetingStartMinutes >= workdayStartMinutes && meetingEndMinutes <= workdayEndMinutes
};

function checkPalindrome(str) {
const normalizeStr = str.replaceAll(' ', '').toLowerCase();
let emptyStr = '';
for (let i = normalizeStr.length - 1; i >= 0; i--) {
emptyStr += normalizeStr[i];
}
return normalizeStr === emptyStr;
}

console.log('\n--- Тесты для palindromeChecker ---');
console.log(
`Строка является палиндромом: ${checkPalindrome('топот') === true}`
);
console.log(
`Строка является палиндромом с разным регистром: ${
checkPalindrome('ДовОд') === true
}`
);
console.log(
`Строка не является палиндромом: ${checkPalindrome('Кекс') === false}`
);
console.log(
`Строка является палиндромом: ${
checkPalindrome('Лёша на полке клопа нашёл ') === true
}`
);

function extractNumber (str) {
str = String(str);
let extractedStr = '';
for (let i = 0; i <= str.length - 1; i++) {
const symbol = parseInt(str[i], 10);
if (!Number.isNaN(symbol)) {
extractedStr += symbol;
}
}
return Number(extractedStr) || NaN;
}

console.log('\n--- Тесты для extractNumber---');
console.log(
`Аргумент начинается с числа: ${extractNumber('2023 год') === 2023}`
);
console.log(
`Аргумент заканчивается на число: ${
extractNumber('ECMAScript 2022') === 2022
}`
);
console.log(
`Аргумент содержит несколько чисел, в том числе и с плавающей точкой: ${
extractNumber('1 кефир, 0.5 батона') === 105
}`
);
console.log(
`Аргумент заканчивается на число с нолями: ${
extractNumber('агент 007') === 7
}`
);
console.log(`Аргумент строка без чисел: ${isNaN(extractNumber('а я томат'))}`);
console.log(`Аргумент число: ${extractNumber(2023) === 2023}`);
console.log(`Аргумент отрицательное число: ${extractNumber(-1) === 1}`);
console.log(`Аргумент число с плавающей точкой: ${extractNumber(1.5) === 15}`);
console.log(isWithinWorkingHours('08:00', '17:30', '14:00', 90));
console.log(isWithinWorkingHours('8:0', '10:0', '8:0', 120));
console.log(isWithinWorkingHours('08:00', '14:30', '14:00', 90));
console.log(isWithinWorkingHours('14:00', '17:30', '08:0', 90));
console.log(isWithinWorkingHours('8:00', '17:30', '08:00', 900));
Loading
Loading