From 7082a92c708924e1ee6ad4d2fc99188d9cecbc28 Mon Sep 17 00:00:00 2001 From: Vladimir Gankin Date: Mon, 16 Dec 2024 23:49:28 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D1=80=D0=B0=D0=B7=D0=B1=D0=B8=D0=B2=D0=B0?= =?UTF-8?q?=D0=B5=D1=82=20=D0=BA=D0=BE=D0=B4=20=D0=BD=D0=B0=20=D0=BC=D0=BE?= =?UTF-8?q?=D0=B4=D1=83=D0=BB=D0=B8,=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D1=8F=D0=B5=D1=82=20=D0=BF=D1=80=D0=B8=D0=B1=D0=BB=D0=B8?= =?UTF-8?q?=D0=B7=D0=B8=D1=82=D0=B5=D0=BB=D1=8C=D0=BD=D1=83=D1=8E=20=D1=84?= =?UTF-8?q?=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2=D1=83=D1=8E=20=D1=81=D1=82=D1=80?= =?UTF-8?q?=D1=83=D0=BA=D1=82=D1=83=D1=80=D1=83=20=D1=81=D0=BA=D1=80=D0=B8?= =?UTF-8?q?=D0=BF=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 3 +- js/data-generator.js | 83 ++++++++++++++++++++++++++++++++++++++++ js/hashtag-checker.js | 0 js/image-effect.js | 0 js/image-filtration.js | 0 js/image-scaling.js | 0 js/image-upload.js | 0 js/main.js | 87 ++++-------------------------------------- js/server-upload.js | 0 js/util.js | 8 ++++ 10 files changed, 99 insertions(+), 82 deletions(-) create mode 100644 js/data-generator.js create mode 100644 js/hashtag-checker.js create mode 100644 js/image-effect.js create mode 100644 js/image-filtration.js create mode 100644 js/image-scaling.js create mode 100644 js/image-upload.js create mode 100644 js/server-upload.js create mode 100644 js/util.js diff --git a/index.html b/index.html index 796c395..360460d 100644 --- a/index.html +++ b/index.html @@ -234,7 +234,6 @@

Не удалось загрузить данны - - + diff --git a/js/data-generator.js b/js/data-generator.js new file mode 100644 index 0000000..609c95b --- /dev/null +++ b/js/data-generator.js @@ -0,0 +1,83 @@ +import { getRandomInteger, getRandomArrayElement } from "./util.js"; + +const DESCRIPTIONS = [ + 'Закат над морем', + 'Городская улица ночью', + 'Заснеженный лес', + 'Кафе на набережной', + 'Горная вершина', + 'Цветущая сакура', +]; + +const MESSAGES = [ + 'Всё отлично!', + 'В целом всё неплохо. Но не всё.', + 'Когда вы делаете фотографию, хорошо бы убирать палец из кадра. В конце концов это просто непрофессионально.', + 'Моя бабушка случайно чихнула с фотоаппаратом в руках и у неё получилась фотография лучше.', + 'Я поскользнулся на банановой кожуре и уронил фотоаппарат на кота и у меня получилась фотография лучше.', + 'Лица у людей на фотке перекошены, как будто их избивают. Как можно было поймать такой неудачный момент?!', +]; + +const NAMES = [ + 'Артем', + 'Александр', + 'Виктор', + 'Василий', + 'Петр', + 'Анастасия', + 'Валерия', + 'Виктория', + 'Дарья', + 'Елизавета', +]; + +const PHOTO_OBJECTS_AMOUNT = 25; +const MIN_LIKES = 15; +const MAX_LIKES = 200; +const MIN_COMMENTS = 0; +const MAX_COMMENTS = 30; + +const createIdGenerator = function(min, max) { + const previousValues = []; + + return function() { + let lastGeneratedId = getRandomInteger(min, max); + + if(previousValues.length >= (max - min + 1)) { + console.log('Закончились уникальные идентификаторы'); + return null; + } + + while(previousValues.includes(lastGeneratedId)) { + lastGeneratedId = getRandomInteger(min, max); + } + + previousValues.push(lastGeneratedId); + return lastGeneratedId; + }; +}; + +const generateCommentId = createIdGenerator(1, PHOTO_OBJECTS_AMOUNT * MAX_COMMENTS); + +const createCommentObject = () => { + return { + id: generateCommentId(), + avatar: 'img/avatar-' + getRandomInteger(1, 6) + '.svg', + message: getRandomArrayElement(MESSAGES), + name: getRandomArrayElement(NAMES), + } +}; + +const createPhotoObject = (_, index) => { + return { + id: index, + url: 'photos/' + index++ + '.jpg', + description: getRandomArrayElement(DESCRIPTIONS), + likes: getRandomInteger(MIN_LIKES, MAX_LIKES), + comments: Array.from({length: getRandomInteger(MIN_COMMENTS, MAX_COMMENTS)}, createCommentObject) + } +}; + +const generatePhotoObjects = () => Array.from({length: PHOTO_OBJECTS_AMOUNT}, createPhotoObject); + +export { generatePhotoObjects }; diff --git a/js/hashtag-checker.js b/js/hashtag-checker.js new file mode 100644 index 0000000..e69de29 diff --git a/js/image-effect.js b/js/image-effect.js new file mode 100644 index 0000000..e69de29 diff --git a/js/image-filtration.js b/js/image-filtration.js new file mode 100644 index 0000000..e69de29 diff --git a/js/image-scaling.js b/js/image-scaling.js new file mode 100644 index 0000000..e69de29 diff --git a/js/image-upload.js b/js/image-upload.js new file mode 100644 index 0000000..e69de29 diff --git a/js/main.js b/js/main.js index b4c16a6..cfc4aae 100644 --- a/js/main.js +++ b/js/main.js @@ -1,80 +1,7 @@ -const DESCRIPTIONS = [ - 'Закат над морем', - 'Городская улица ночью', - 'Заснеженный лес', - 'Кафе на набережной', - 'Горная вершина', - 'Цветущая сакура', -]; - -const MESSAGES = [ - 'Всё отлично!', - 'В целом всё неплохо. Но не всё.', - 'Когда вы делаете фотографию, хорошо бы убирать палец из кадра. В конце концов это просто непрофессионально.', - 'Моя бабушка случайно чихнула с фотоаппаратом в руках и у неё получилась фотография лучше.', - 'Я поскользнулся на банановой кожуре и уронил фотоаппарат на кота и у меня получилась фотография лучше.', - 'Лица у людей на фотке перекошены, как будто их избивают. Как можно было поймать такой неудачный момент?!', -]; - -const NAMES = [ - 'Артем', - 'Александр', - 'Виктор', - 'Василий', - 'Петр', - 'Анастасия', - 'Валерия', - 'Виктория', - 'Дарья', - 'Елизавета', -]; - -const getRandomInteger = function(min, max) { - const rand = min + Math.random() * (max + 1 - min); - return Math.floor(rand); -}; - -const createIdGenerator = function(min, max) { - const previousValues = []; - - return function() { - let lastGeneratedId = getRandomInteger(min, max); - - if(previousValues.length >= (max - min + 1)) { - console.log('Закончились уникальные идентификаторы'); - return null; - } - - while(previousValues.includes(lastGeneratedId)) { - lastGeneratedId = getRandomInteger(min, max); - } - - previousValues.push(lastGeneratedId); - return lastGeneratedId; - }; -}; - -const getRandomArrayElement = (array) => array[getRandomInteger(0, array.length - 1)]; - -const generatePhotoId = createIdGenerator(1, 25); - -const generatePhotoUrlId = createIdGenerator(1, 25); - -const generateCommentId = createIdGenerator(1, 750); - -const createCommentObject = () => ({ - id: generateCommentId(), - avatar: 'img/avatar-' + getRandomInteger(1, 6) + '.svg', - message: getRandomArrayElement(MESSAGES), - name: getRandomArrayElement(NAMES), -}); - -const createPhotoObject = () => ({ - id: generatePhotoId(), - url: 'photos/' + generatePhotoUrlId() + '.jpg', - description: getRandomArrayElement(DESCRIPTIONS), - likes: getRandomInteger(15, 200), - comments: Array.from({length: getRandomInteger(0, 30)}, createCommentObject) -}); - -const testPhotoObjects = Array.from({length: 25}, createPhotoObject); +import { generatePhotoObjects } from "./data-generator.js"; +import "./hashtag-checker.js"; +import "./image-scaling.js"; +import "./image-effect.js"; +import "./image-upload.js"; +import "./server-upload.js" +import "./image-filtration.js"; diff --git a/js/server-upload.js b/js/server-upload.js new file mode 100644 index 0000000..e69de29 diff --git a/js/util.js b/js/util.js new file mode 100644 index 0000000..2972a3e --- /dev/null +++ b/js/util.js @@ -0,0 +1,8 @@ +const getRandomInteger = function(min, max) { + const rand = min + Math.random() * (max + 1 - min); + return Math.floor(rand); +}; + +const getRandomArrayElement = (array) => array[getRandomInteger(0, array.length - 1)]; + +export { getRandomInteger, getRandomArrayElement }; From c330e585ce37e7db06aa5cf3e1b1abd4fb2c2063 Mon Sep 17 00:00:00 2001 From: Vladimir Gankin Date: Tue, 17 Dec 2024 00:14:19 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D1=8F=D0=B5=D1=82=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B8=20?= =?UTF-8?q?=D0=BB=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/data-generator.js | 34 ++++++++++++++++------------------ js/main.js | 14 +++++++------- 2 files changed, 23 insertions(+), 25 deletions(-) diff --git a/js/data-generator.js b/js/data-generator.js index 609c95b..c979826 100644 --- a/js/data-generator.js +++ b/js/data-generator.js @@ -1,4 +1,4 @@ -import { getRandomInteger, getRandomArrayElement } from "./util.js"; +import { getRandomInteger, getRandomArrayElement } from './util.js'; const DESCRIPTIONS = [ 'Закат над морем', @@ -59,24 +59,22 @@ const createIdGenerator = function(min, max) { const generateCommentId = createIdGenerator(1, PHOTO_OBJECTS_AMOUNT * MAX_COMMENTS); -const createCommentObject = () => { - return { - id: generateCommentId(), - avatar: 'img/avatar-' + getRandomInteger(1, 6) + '.svg', - message: getRandomArrayElement(MESSAGES), - name: getRandomArrayElement(NAMES), - } -}; +const createCommentObject = () => ({ + id: generateCommentId(), + avatar: 'img/avatar-' + getRandomInteger(1, 6) + '.svg', + message: getRandomArrayElement(MESSAGES), + name: getRandomArrayElement(NAMES), +}); + + +const createPhotoObject = (_, index) => ({ + id: index, + url: 'photos/' + index++ + '.jpg', + description: getRandomArrayElement(DESCRIPTIONS), + likes: getRandomInteger(MIN_LIKES, MAX_LIKES), + comments: Array.from({length: getRandomInteger(MIN_COMMENTS, MAX_COMMENTS)}, createCommentObject) +}); -const createPhotoObject = (_, index) => { - return { - id: index, - url: 'photos/' + index++ + '.jpg', - description: getRandomArrayElement(DESCRIPTIONS), - likes: getRandomInteger(MIN_LIKES, MAX_LIKES), - comments: Array.from({length: getRandomInteger(MIN_COMMENTS, MAX_COMMENTS)}, createCommentObject) - } -}; const generatePhotoObjects = () => Array.from({length: PHOTO_OBJECTS_AMOUNT}, createPhotoObject); diff --git a/js/main.js b/js/main.js index cfc4aae..344422d 100644 --- a/js/main.js +++ b/js/main.js @@ -1,7 +1,7 @@ -import { generatePhotoObjects } from "./data-generator.js"; -import "./hashtag-checker.js"; -import "./image-scaling.js"; -import "./image-effect.js"; -import "./image-upload.js"; -import "./server-upload.js" -import "./image-filtration.js"; +import { generatePhotoObjects } from './data-generator.js'; +import './hashtag-checker.js'; +import './image-scaling.js'; +import './image-effect.js'; +import './image-upload.js'; +import './server-upload.js'; +import './image-filtration.js';