Skip to content

Commit 3380bf8

Browse files
authored
Merge pull request #13 from IvanShapkov/module12-task2
2 parents 96a1e93 + 48bd6a8 commit 3380bf8

15 files changed

+257
-328
lines changed

js/api.js

+18-6
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,30 @@
1-
//import { showErrorMessage } from './modal-form/validation';
1+
// Базовый URL
22

33
const BASE_URL = 'https://31.javascript.htmlacademy.pro/';
4+
5+
// Пути для запросов
6+
47
const Route = {
5-
GET_DATA: 'kekstagram/data',
6-
SEND_DATA: 'kekstagram',
8+
GET_DATA: 'kekstagram/data/',
9+
SEND_DATA: 'kekstagram/',
710
};
811

12+
// Методы запросов
13+
914
const Method = {
1015
GET: 'GET',
1116
POST: 'POST',
1217
};
1318

19+
// Тексты ошибок в заивимости от типа запроса
20+
1421
const ErrorText = {
1522
[Method.GET]: 'Не удалось загрузить данные. Попробуйте еще раз.',
1623
[Method.POST]: 'Не удалось отправить данные. Попробуйте еще раз',
1724
};
1825

26+
// Функция для выполнения метода запроса
27+
1928
const load = (route, method = Method.GET, body = null) =>
2029
fetch(`${BASE_URL}${route}`, {method, body})
2130
.then((response) => {
@@ -24,13 +33,16 @@ const load = (route, method = Method.GET, body = null) =>
2433
}
2534
return response.json();
2635
})
27-
.catch(() => {
28-
throw new Error(ErrorText[method]);
29-
//showErrorMessage(error.message);
36+
.catch((error) => {
37+
throw new Error(`${ErrorText[method]} ${error.message}`);
3038
});
3139

40+
// Функция для получения данных
41+
3242
const getData = () => load(Route.GET_DATA);
3343

44+
// Функция для отправки данных
45+
3446
const sendData = (body) => load(Route.SEND_DATA, Method.POST, body);
3547

3648
export {getData, sendData};

js/data.js

-91
This file was deleted.

js/main.js

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,23 @@
11
import { renderBigPicture } from './pictures/big-pictures.js';
22
import { renderFilters } from './pictures/sort-pictures.js';
3-
import { showErrorMessage } from './modal-form/validation.js';
3+
import { showDataError } from './utils/dom.js';
44
import { getData } from './api.js';
55
import './modal-form/upload-picture.js';
66
import './modal-form/slider-effects.js';
77
import './modal-form/upload-form.js';
88
import './modal-form/scale-control.js';
99
import './modal-form/validation.js';
1010

11-
12-
// Полчение изображений с сервера
11+
// Получение изображений с сервера
1312

1413
const loadDataFromServer = () => {
1514
getData()
1615
.then((photos) => {
1716
renderFilters(photos);
1817
renderBigPicture(photos);
1918
})
20-
.catch((error) => {
21-
showErrorMessage(error.message);
19+
.catch(() => {
20+
showDataError();
2221
});
2322
};
2423

js/modal-form/scale-control.js

+16-17
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
const MAX_SCALE = 100;
44
const MIN_SCALE = 25;
55
const SCALE_STEP = 25;
6-
let currentValue = MAX_SCALE;
76

87
// Элементы управления масштабом
98

@@ -12,45 +11,45 @@ const decreaseButton = document.querySelector('.scale__control--smaller');
1211
const increaseButton = document.querySelector('.scale__control--bigger');
1312
const uploadImage = document.querySelector('.img-upload__preview img');
1413

14+
// Текущее значение масштаба
15+
16+
let currentValue = MAX_SCALE;
17+
1518
// Обновление значения масштаба
1619

17-
const changeScale = () => {
20+
const updateScale = () => {
1821
scaleValue.value = `${currentValue}%`;
1922
uploadImage.style.transform = `scale(${currentValue / 100})`;
2023

2124
increaseButton.disabled = currentValue >= MAX_SCALE;
2225
decreaseButton.disabled = currentValue <= MIN_SCALE;
2326
};
2427

25-
// Сброс масштаба
26-
27-
const resetScale = () => {
28-
currentValue = MAX_SCALE;
29-
scaleValue.value = `${currentValue}%`;
30-
uploadImage.style.transform = 'scale(1.00)';
31-
increaseButton.disabled = false;
32-
decreaseButton.disabled = false;
33-
changeScale();
34-
};
35-
36-
// Кнопка Увеличить
28+
// Увеличение масштаба
3729

3830
const onIncreaseButtonClick = () => {
3931
if (currentValue < MAX_SCALE) {
4032
currentValue += SCALE_STEP;
41-
changeScale();
33+
updateScale();
4234
}
4335
};
4436

45-
// Кнопка Уменьшить
37+
// Уменьшение масштаба
4638

4739
const onDecreaseButtonClick = () => {
4840
if (currentValue > MIN_SCALE) {
4941
currentValue -= SCALE_STEP;
50-
changeScale();
42+
updateScale();
5143
}
5244
};
5345

46+
// Сброс масштаба
47+
48+
const resetScale = () => {
49+
currentValue = MAX_SCALE;
50+
updateScale();
51+
};
52+
5453
// Добавляем обработчики для кнопок
5554

5655
increaseButton.addEventListener('click', onIncreaseButtonClick);

js/modal-form/slider-effects.js

+15-12
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,6 @@
1-
const uploadForm = document.querySelector('.img-upload__form');
2-
const uploadImage = uploadForm.querySelector('.img-upload__preview img');
3-
const effectLevelField = uploadForm.querySelector('.img-upload__effect-level');
4-
const effectLevelValue = effectLevelField.querySelector('.effect-level__value');
5-
const effectSlider = effectLevelField.querySelector('.effect-level__slider');
6-
71
// Фильтр по умолчанию
82

93
const DEFAULT_EFFECT = 'none';
10-
let currentEffect = DEFAULT_EFFECT;
114

125
// массив Фильтров
136

@@ -20,6 +13,18 @@ const effects = {
2013
heat: { filter: 'brightness', min: 1, max: 3, step: 0.1, unit: '' }
2114
};
2215

16+
// Элементы управления слайдером
17+
18+
const uploadForm = document.querySelector('.img-upload__form');
19+
const uploadImage = uploadForm.querySelector('.img-upload__preview img');
20+
const effectLevelField = uploadForm.querySelector('.img-upload__effect-level');
21+
const effectLevelValue = effectLevelField.querySelector('.effect-level__value');
22+
const effectSlider = effectLevelField.querySelector('.effect-level__slider');
23+
24+
// Текущее значение эффекта
25+
26+
let currentEffect = DEFAULT_EFFECT;
27+
2328
// Создаем слайдер
2429

2530
noUiSlider.create(effectSlider, {
@@ -42,11 +47,9 @@ const slider = effectSlider.noUiSlider;
4247

4348
const applyEffect = (effect, value) => {
4449
const filter = effects[effect];
45-
4650
uploadImage.style.filter = `${filter.filter}(${value}${filter.unit})`;
4751
};
4852

49-
5053
// Обновляем слайдер и применяем эффект
5154

5255
const updateEffect = (effect) => {
@@ -68,7 +71,7 @@ const updateEffect = (effect) => {
6871
}
6972
};
7073

71-
// Сбрасываем слайдер
74+
// Сбрасываем эффекты к значениям по умолчанию
7275

7376
const resetEffects = () => {
7477
uploadImage.style.filter = 'none';
@@ -92,7 +95,7 @@ const resetEffects = () => {
9295

9396
// Обработчик изменения радио-кнопок
9497

95-
const onFormUpdate = (evt) => {
98+
const onUploadFormChange = (evt) => {
9699
if (evt.target.classList.contains('effects__radio')) {
97100
currentEffect = evt.target.value;
98101
updateEffect(currentEffect);
@@ -111,7 +114,7 @@ const onSliderUpdate = () => {
111114
// Инициализация
112115

113116
effectLevelField.classList.add('hidden');
114-
uploadForm.addEventListener('change', onFormUpdate);
117+
uploadForm.addEventListener('change', onUploadFormChange);
115118
slider.on('update', onSliderUpdate);
116119

117120
export { resetEffects };

0 commit comments

Comments
 (0)