Skip to content

Commit

Permalink
Merge pull request #4 from YouAreNotReady/module5-task1
Browse files Browse the repository at this point in the history
  • Loading branch information
keksobot authored Dec 17, 2024
2 parents b05ed32 + c330e58 commit 81aa5b7
Show file tree
Hide file tree
Showing 10 changed files with 97 additions and 82 deletions.
3 changes: 1 addition & 2 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,6 @@ <h2 class="data-error__title">Не удалось загрузить данны
</section>
</template>

<script src="/js/main.js"></script>
<script src="/js/functions.js"></script>
<script src="/js/main.js" type="module"></script>
</body>
</html>
81 changes: 81 additions & 0 deletions js/data-generator.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
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('Закончились уникальные идентификаторы');

Check failure on line 47 in js/data-generator.js

View workflow job for this annotation

GitHub Actions / Check

Unexpected console statement
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 = () => ({
id: generateCommentId(),
avatar: 'img/avatar-' + getRandomInteger(1, 6) + '.svg',

Check failure on line 64 in js/data-generator.js

View workflow job for this annotation

GitHub Actions / Check

Unexpected string concatenation
message: getRandomArrayElement(MESSAGES),
name: getRandomArrayElement(NAMES),
});


const createPhotoObject = (_, index) => ({
id: index,
url: 'photos/' + index++ + '.jpg',

Check failure on line 72 in js/data-generator.js

View workflow job for this annotation

GitHub Actions / Check

Unexpected string concatenation
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 };
Empty file added js/hashtag-checker.js
Empty file.
Empty file added js/image-effect.js
Empty file.
Empty file added js/image-filtration.js
Empty file.
Empty file added js/image-scaling.js
Empty file.
Empty file added js/image-upload.js
Empty file.
87 changes: 7 additions & 80 deletions js/main.js
Original file line number Diff line number Diff line change
@@ -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';

Check failure on line 1 in js/main.js

View workflow job for this annotation

GitHub Actions / Check

'generatePhotoObjects' is defined but never used
import './hashtag-checker.js';
import './image-scaling.js';
import './image-effect.js';
import './image-upload.js';
import './server-upload.js';
import './image-filtration.js';
Empty file added js/server-upload.js
Empty file.
8 changes: 8 additions & 0 deletions js/util.js
Original file line number Diff line number Diff line change
@@ -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 };

0 comments on commit 81aa5b7

Please sign in to comment.