Skip to content

Commit b5b4844

Browse files
authored
Merge pull request #13 from Vitali3207/module12-task2
2 parents af621ad + f4456e7 commit b5b4844

3 files changed

Lines changed: 28 additions & 22 deletions

File tree

js/filter.js

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,36 @@
11
import { renderThumbnails } from './render-thumbnails';
22
import { debounce } from './util';
33

4+
const MAX_COUNT_PICTURE = 10;
5+
46
const filterContainer = document.querySelector('.img-filters');
57
const filterDefault = 'filter-default';
68
const filterRandom = 'filter-random';
79
const filterDiscussed = 'filter-discussed';
810

911
const debounceRenderPicture = debounce(renderThumbnails, 500);
10-
let currentFilter = filterDefault;
11-
let pictures = [];
1212

13-
const generateFilter = () => {
13+
const filterData = (newFilter, pictures) => {
1414
let picturesFilter = [];
1515

16-
if (currentFilter === filterDefault) {
17-
picturesFilter = pictures;
18-
} else if (currentFilter === filterRandom) {
19-
picturesFilter = pictures.toSorted(() => Math.random() - 0.5).slice(0, 10);
20-
} else if (currentFilter === filterDiscussed) {
21-
picturesFilter = pictures.toSorted((a, b) => b.comments.length - a.comments.length);
16+
switch (newFilter) {
17+
case filterDefault:
18+
picturesFilter = pictures;
19+
break;
20+
case filterRandom:
21+
picturesFilter = pictures.toSorted(() => Math.random() > 0.5).slice(0, MAX_COUNT_PICTURE);
22+
break;
23+
case filterDiscussed:
24+
picturesFilter = pictures.toSorted((a, b) => b.comments.length - a.comments.length);
25+
break;
26+
default:
27+
throw new Error(`Unknown filter: ${newFilter}`);
2228
}
23-
debounceRenderPicture(picturesFilter);
29+
30+
return picturesFilter;
2431
};
2532

26-
function onFilterClick (evt) {
33+
const onFilterClick = (evt, picturesData) => {
2734
const activButton = document.querySelector('.img-filters__button--active');
2835
const targetButton = evt.target;
2936

@@ -33,15 +40,15 @@ function onFilterClick (evt) {
3340

3441
activButton.classList.remove('img-filters__button--active');
3542
targetButton.classList.add('img-filters__button--active');
36-
currentFilter = targetButton.id;
3743

38-
generateFilter();
39-
}
44+
const filteredData = filterData(targetButton.id, picturesData);
45+
46+
debounceRenderPicture(filteredData);
47+
};
4048

4149
const initFilter = (picturesData) => {
4250
filterContainer.classList.remove('img-filters--inactive');
43-
filterContainer.addEventListener('click', onFilterClick);
44-
pictures = picturesData;
51+
filterContainer.addEventListener('click', (evt) => onFilterClick(evt, picturesData));
4552
};
4653

4754
export { initFilter };

js/form/image-form.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@ function closeUploadModal () {
3535
resetEffect();
3636
resetScale();
3737
uploadForm.reset();
38-
fileChooser.reset();
39-
// При повторной попытке отправить неверный формата файла ошибка не появляется. Подскажи как реализовать.
4038
}
4139

4240
const openUploadModal = () => {
@@ -61,9 +59,11 @@ function onFileChooserChange () {
6159
uploadFormEffects.forEach((item) => {
6260
item.style.backgroundImage = `url(${URL.createObjectURL(file)})`;
6361
});
64-
}else {
65-
generateErrorMessage();
62+
} else {
63+
fileChooser.value = '';
64+
generateErrorMessage('неверный формат файла!');
6665
return;
66+
// получилось повторно показывать сообщение
6767
}
6868

6969
openUploadModal();

js/messages.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { isEscapeKey } from './util';
33
const MESSAGE_TIMEOUT = 5000;
44

55
const errorLoadTemplate = document.querySelector('#data-error').content;
6-
const errorMessage = document.querySelector('.data-error__title');
76
const successTemplate = document.querySelector('#success').content.querySelector('.success');
87
const messageErrorTemplate = document.querySelector('#error').content.querySelector('.error');
98

@@ -14,7 +13,7 @@ const generateErrorMessage = (message) => {
1413
const errorLoad = errorLoadTemplate.cloneNode(true);
1514

1615
if (message) {
17-
errorMessage.textContent = message;
16+
errorLoad.querySelector('.data-error__title').textContent = message;
1817
}
1918

2019
document.body.append(errorLoad);

0 commit comments

Comments
 (0)