Skip to content

Commit c4c1085

Browse files
authored
Merge pull request #14 from YouAreNotReady/master
2 parents 8ee63b8 + 20ca233 commit c4c1085

File tree

5 files changed

+71
-57
lines changed

5 files changed

+71
-57
lines changed

index.html

-1
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,5 @@ <h2 class="data-error__title">Не удалось загрузить данны
242242
<script src="./vendor/pristine/pristine.min.js"></script>
243243
<script src="./vendor/nouislider/nouislider.js"></script>
244244
<script src="./js/main.js" type="module"></script>
245-
<script src="./js/functions.js"></script>
246245
</body>
247246
</html>

js/image-effect.js

+48-30
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,23 @@
11
import { imagePreview } from './image-scaling.js';
22

3+
const EffectsList = {
4+
chrome: document.querySelector('#effect-chrome'),
5+
sepia: document.querySelector('#effect-sepia'),
6+
marvin: document.querySelector('#effect-marvin'),
7+
phobos: document.querySelector('#effect-phobos'),
8+
heat: document.querySelector('#effect-heat'),
9+
};
10+
const EffectsOptions = {
11+
noEffect: { range: { min: 0, max: 0 }, start: 0},
12+
chromeAndSepia: { range: { min: 0, max: 1 }, start: 1, step: 0.1 },
13+
marvin: { range: { min: 0, max: 100 }, start: 100, step: 1 },
14+
phobos: { range: { min: 0, max: 3 }, start: 3, step: 0.1 },
15+
heat: { range: { min: 1, max: 3 }, start: 3, step: 0.1 },
16+
};
17+
318
const sliderNodeWrapper = document.querySelector('.img-upload__effect-level');
419
const sliderNode = sliderNodeWrapper.querySelector('.effect-level__slider');
520
const valueNode = document.querySelector('.effect-level__value');
6-
const chromeEffectNode = document.querySelector('#effect-chrome');
7-
const sepiaEffectNode = document.querySelector('#effect-sepia');
8-
const marvinEffectNode = document.querySelector('#effect-marvin');
9-
const phobosEffectNode = document.querySelector('#effect-phobos');
10-
const heatEffectNode = document.querySelector('#effect-heat');
1121
const radioInputSection = document.querySelector('.img-upload__effects');
1222
const effectPreviewElements = radioInputSection.querySelectorAll('.effects__preview');
1323
let currentSliderValue = 0;
@@ -34,49 +44,57 @@ noUiSlider.create(sliderNode, {
3444
},
3545
});
3646

37-
const applyFilter = () => {
38-
if (chromeEffectNode.checked) {
39-
imagePreview.style.filter = `grayscale(${currentSliderValue})`;
40-
} else if (sepiaEffectNode.checked) {
41-
imagePreview.style.filter = `sepia(${currentSliderValue})`;
42-
} else if (marvinEffectNode.checked) {
43-
imagePreview.style.filter = `invert(${currentSliderValue}%)`;
44-
} else if (phobosEffectNode.checked) {
45-
imagePreview.style.filter = `blur(${currentSliderValue}px)`;
46-
} else if (heatEffectNode.checked) {
47-
imagePreview.style.filter = `brightness(${currentSliderValue})`;
48-
} else {
49-
imagePreview.style.filter = '';
47+
const applyEffect = () => {
48+
const isElementChecked = true;
49+
50+
switch (isElementChecked) {
51+
case EffectsList.chrome.checked:
52+
imagePreview.style.filter = `grayscale(${currentSliderValue})`;
53+
break;
54+
case EffectsList.sepia.checked:
55+
imagePreview.style.filter = `sepia(${currentSliderValue})`;
56+
break;
57+
case EffectsList.marvin.checked:
58+
imagePreview.style.filter = `invert(${currentSliderValue}%)`;
59+
break;
60+
case EffectsList.phobos.checked:
61+
imagePreview.style.filter = `blur(${currentSliderValue}px)`;
62+
break;
63+
case EffectsList.heat.checked:
64+
imagePreview.style.filter = `brightness(${currentSliderValue})`;
65+
break;
66+
default:
67+
imagePreview.style.filter = '';
5068
}
5169
};
5270

5371
sliderNode.noUiSlider.on('update', () => {
5472
currentSliderValue = sliderNode.noUiSlider.get();
5573
valueNode.value = currentSliderValue;
56-
applyFilter();
74+
applyEffect();
5775
});
5876

5977
radioInputSection.addEventListener('click', (evt) => {
6078
if (evt.target.matches('input[type="radio"]')) {
6179
let options = {};
6280
sliderNodeWrapper.classList.remove('hidden');
6381
switch (evt.target) {
64-
case chromeEffectNode:
65-
case sepiaEffectNode:
66-
options = { range: { min: 0, max: 1 }, start: 1, step: 0.1 };
82+
case EffectsList.chrome:
83+
case EffectsList.sepia:
84+
options = EffectsOptions.chromeAndSepia;
6785
break;
68-
case marvinEffectNode:
69-
options = { range: { min: 0, max: 100 }, start: 100, step: 1 };
86+
case EffectsList.marvin:
87+
options = EffectsOptions.marvin;
7088
break;
71-
case phobosEffectNode:
72-
options = { range: { min: 0, max: 3 }, start: 3, step: 0.1 };
89+
case EffectsList.phobos:
90+
options = EffectsOptions.phobos;
7391
break;
74-
case heatEffectNode:
75-
options = { range: { min: 1, max: 3 }, start: 3, step: 0.1 };
92+
case EffectsList.heat:
93+
options = EffectsOptions.heat;
7694
break;
7795
default:
78-
options = { range: { min: 0, max: 0 }, start: 0};
79-
applyFilter();
96+
options = EffectsOptions.noEffect;
97+
applyEffect();
8098
sliderNodeWrapper.classList.add('hidden');
8199
}
82100

js/image-filtration.js

-3
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,6 @@ const setFilterClickHandler = (photos) => {
6161
case FilterButtons.discussed:
6262
debounceRender(() => renderMostDiscussedPhotos(photos));
6363
break;
64-
65-
default:
66-
break;
6764
}
6865
});
6966
};

js/image-upload.js

+22-20
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ function uploadFormCloseHandler() {
5555
document.body.classList.remove('modal-open');
5656
imageUploadInput.value = '';
5757
uploadFormClear();
58+
pristine.reset();
5859

5960
document.removeEventListener('keydown', documentKeydownHandler);
6061
imageUploadCloseButton.removeEventListener('click', uploadFormCloseHandler);
@@ -86,29 +87,30 @@ imageUploadInput.addEventListener('change', ()=> {
8687
document.addEventListener('keydown', documentKeydownHandler);
8788
});
8889

89-
pristine.addValidator(imageUploadForm.querySelector('.text__hashtags'), validateAllHashtags, validateHashtagError);
90-
pristine.addValidator(imageUploadForm.querySelector('.text__description'), validateComment, validationCommentError);
90+
const imageUploadSubmitHandler = async (evt) => {
91+
evt.preventDefault();
92+
93+
const isValid = pristine.validate();
94+
if(isValid) {
95+
try {
96+
const formData = new FormData(evt.target);
97+
blockSubmitButton();
98+
await uploadData(formData);
99+
pristine.reset();
100+
} catch (error) {
101+
showError();
102+
}
103+
}
91104

105+
imageUploadForm.removeEventListener('keydown', uploadFormNoEscWhenInputActive);
106+
imageUploadCloseButton.removeEventListener('click', uploadFormCloseHandler);
107+
};
92108

93109
const setImageUploadFormSubmit = () => {
94-
imageUploadForm.addEventListener('submit', async (evt) => {
95-
evt.preventDefault();
96-
97-
const isValid = pristine.validate();
98-
if(isValid) {
99-
try {
100-
const formData = new FormData(evt.target);
101-
blockSubmitButton();
102-
await uploadData(formData);
103-
pristine.reset();
104-
} catch (error) {
105-
showError();
106-
}
107-
}
108-
109-
imageUploadForm.removeEventListener('keydown', uploadFormNoEscWhenInputActive);
110-
imageUploadCloseButton.removeEventListener('click', uploadFormCloseHandler);
111-
});
110+
imageUploadForm.addEventListener('submit', imageUploadSubmitHandler);
112111
};
113112

113+
pristine.addValidator(imageUploadForm.querySelector('.text__hashtags'), validateAllHashtags, validateHashtagError);
114+
pristine.addValidator(imageUploadForm.querySelector('.text__description'), validateComment, validationCommentError);
115+
114116
export { setImageUploadFormSubmit, uploadFormCloseHandler, unblockSubmitButton, documentKeydownHandler};

js/util.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,4 @@ const getRandomInteger = function(min, max) {
55

66
const isEscapeKey = (evt) => evt.key === 'Escape';
77

8-
const getRandomArrayElement = (array) => array[getRandomInteger(0, array.length - 1)];
9-
10-
export { getRandomInteger, isEscapeKey, getRandomArrayElement };
8+
export { getRandomInteger, isEscapeKey };

0 commit comments

Comments
 (0)