Skip to content

Commit

Permalink
Помощь друга
Browse files Browse the repository at this point in the history
  • Loading branch information
AttitudeOne1 committed Feb 6, 2025
1 parent 84f607e commit 5cde21d
Show file tree
Hide file tree
Showing 4 changed files with 147 additions and 1 deletion.
1 change: 1 addition & 0 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,7 @@ <h2 class="data-error__title">Не удалось загрузить данны
</section>
</template>
<script src="vendor/pristine/pristine.min.js"></script>
<script src="vendor/nouislider/nouislider.js"></script>
<script src="/js/main.js" type="module"></script>
</body>
</html>
143 changes: 143 additions & 0 deletions js/effects.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
const EFFECTS_DATA = {
chrome:
{
filter: 'grayscale',
values: {
range: {
min: 0,
max: 1
},
start: 1,
step: 0.1,
},
unit: ''
},

sepia:
{
filter: 'sepia',
values: {
range: {
min: 0,
max: 1
},
start: 1,
step: 0.1,
},
unit: ''
},

marvin:
{
filter: 'invert',
values: {
range: {
min: 0,
max: 100
},
start: 100,
step: 1,
},
unit: '%'
},

phobos:
{
filter: 'blur',
values: {
range: {
min: 0,
max: 3
},
start: 3,
step: 0.1,
},
unit: 'px'
},

heat:
{
filter: 'brightness',
values: {
range: {
min: 0,
max: 3
},
start: 3,
step: 0.1,
},
unit: ''
},

none:
{
filter: '',
values: {
range: {
min: 0,
max: 1
},
start: 1,
step: 0.1,
},
unit: ''
}
};

const effectLevel = document.querySelector('.img-upload__effect-level');
const effectLevelValue = effectLevel.querySelector('.effect-level__value');
const slider = effectLevel.querySelector('.effect-level__slider');
const imagePreview = document.querySelector('.img-upload__preview img');
const effectsContainer = document.querySelector('.effects__list');

const INITIAL_EFFECT = EFFECTS_DATA.none;

noUiSlider.create(slider, {
range: {
min: 0,
max: 100
},
start: 100,
step: 1,
connect: 'lower'
});

effectLevel.classList.add('hidden');

const updateSlider = (filterName) => {
slider.noUiSlider.on('update', () => {
const filter = EFFECTS_DATA[filterName].filter;
const unit = EFFECTS_DATA[filterName].unit;

if (filterName !== INITIAL_EFFECT) {
const value = slider.noUiSlider.get();
imagePreview.style.filter = `${filter}(${value}${unit})`;
effectLevelValue.value = value;
}
});
};

const onEffectsContainerChange = (evt) => {
const targetElement = evt.target.value;
effectLevel.classList.add('hidden');
imagePreview.className = '';
imagePreview.style.filter = '';

if (targetElement !== INITIAL_EFFECT) {
effectLevel.classList.remove('hidden');
imagePreview.classList.add(`effects__preview--${targetElement}`);
slider.noUiSlider.updateOptions(EFFECTS_DATA[targetElement].values);
updateSlider(targetElement);
}
};

const resetEffects = () => {
effectsContainer.removeEventListener('click', onEffectsContainerChange);
imagePreview.style.filter = '';
imagePreview.className = '';
slider.noUiSlider.updateOptions(INITIAL_EFFECT);
};

effectsContainer.addEventListener('change', onEffectsContainerChange);

export { resetEffects };
2 changes: 2 additions & 0 deletions js/form.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { isEscapeKey } from './util.js';
import { resetImagePreviewScale } from './scale.js';
import { resetEffects } from './effects.js';

const COMMENT_MAXLENGTH = 140;
const HASHTAGS_MAXQUANTITY = 5;
Expand Down Expand Up @@ -94,6 +95,7 @@ function closeEditForm() {
form.reset();
pristine.reset();
resetImagePreviewScale();
resetEffects();
overlay.classList.add('hidden');
document.body.classList.remove('modal-open');
document.removeEventListener('keydown', onDocumentKeydown);
Expand Down
2 changes: 1 addition & 1 deletion js/scale.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ const MAX_SCALE = 100;
const scaleControlSmaller = document.querySelector('.scale__control--smaller');
const scaleControlBigger = document.querySelector('.scale__control--bigger');
const scaleControlValue = document.querySelector('.scale__control--value');
const imagePreview = document.querySelector('.img-upload__preview');
const imagePreview = document.querySelector('.img-upload__preview img');

// Функция для установки нового значения масштаба
function setScale(newValue) {
Expand Down

0 comments on commit 5cde21d

Please sign in to comment.