1
1
import { imagePreview } from './image-scaling.js' ;
2
+ import { getRadioButtonsValue } from './util.js' ;
2
3
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
4
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 } ,
5
+ 'none' : { range : { min : 0 , max : 0 } , start : 0 } ,
6
+ 'chrome' : { range : { min : 0 , max : 1 } , start : 1 , step : 0.1 } ,
7
+ 'sepia' : { range : { min : 0 , max : 1 } , start : 1 , step : 0.1 } ,
8
+ 'marvin' : { range : { min : 0 , max : 100 } , start : 100 , step : 1 } ,
9
+ 'phobos' : { range : { min : 0 , max : 3 } , start : 3 , step : 0.1 } ,
10
+ 'heat' : { range : { min : 1 , max : 3 } , start : 3 , step : 0.1 } ,
16
11
} ;
17
12
18
13
const sliderNodeWrapper = document . querySelector ( '.img-upload__effect-level' ) ;
@@ -21,6 +16,7 @@ const valueNode = document.querySelector('.effect-level__value');
21
16
const radioInputSection = document . querySelector ( '.img-upload__effects' ) ;
22
17
const effectPreviewElements = radioInputSection . querySelectorAll ( '.effects__preview' ) ;
23
18
let currentSliderValue = 0 ;
19
+ let currentEffect = 'none' ;
24
20
25
21
sliderNodeWrapper . classList . add ( 'hidden' ) ;
26
22
@@ -44,23 +40,21 @@ noUiSlider.create(sliderNode, {
44
40
} ,
45
41
} ) ;
46
42
47
- const applyEffect = ( ) => {
48
- const isElementChecked = true ;
49
-
50
- switch ( isElementChecked ) {
51
- case EffectsList . chrome . checked :
43
+ const applyEffect = ( effect ) => {
44
+ switch ( effect ) {
45
+ case 'chrome' :
52
46
imagePreview . style . filter = `grayscale(${ currentSliderValue } )` ;
53
47
break ;
54
- case EffectsList . sepia . checked :
48
+ case ' sepia' :
55
49
imagePreview . style . filter = `sepia(${ currentSliderValue } )` ;
56
50
break ;
57
- case EffectsList . marvin . checked :
51
+ case ' marvin' :
58
52
imagePreview . style . filter = `invert(${ currentSliderValue } %)` ;
59
53
break ;
60
- case EffectsList . phobos . checked :
54
+ case ' phobos' :
61
55
imagePreview . style . filter = `blur(${ currentSliderValue } px)` ;
62
56
break ;
63
- case EffectsList . heat . checked :
57
+ case ' heat' :
64
58
imagePreview . style . filter = `brightness(${ currentSliderValue } )` ;
65
59
break ;
66
60
default :
@@ -71,33 +65,20 @@ const applyEffect = () => {
71
65
sliderNode . noUiSlider . on ( 'update' , ( ) => {
72
66
currentSliderValue = sliderNode . noUiSlider . get ( ) ;
73
67
valueNode . value = currentSliderValue ;
74
- applyEffect ( ) ;
68
+ applyEffect ( currentEffect ) ;
75
69
} ) ;
76
70
77
71
radioInputSection . addEventListener ( 'click' , ( evt ) => {
78
72
if ( evt . target . matches ( 'input[type="radio"]' ) ) {
79
73
let options = { } ;
74
+ currentEffect = getRadioButtonsValue ( 'effect' ) ;
75
+
80
76
sliderNodeWrapper . classList . remove ( 'hidden' ) ;
81
- switch ( evt . target ) {
82
- case EffectsList . chrome :
83
- case EffectsList . sepia :
84
- options = EffectsOptions . chromeAndSepia ;
85
- break ;
86
- case EffectsList . marvin :
87
- options = EffectsOptions . marvin ;
88
- break ;
89
- case EffectsList . phobos :
90
- options = EffectsOptions . phobos ;
91
- break ;
92
- case EffectsList . heat :
93
- options = EffectsOptions . heat ;
94
- break ;
95
- default :
96
- options = EffectsOptions . noEffect ;
97
- applyEffect ( ) ;
98
- sliderNodeWrapper . classList . add ( 'hidden' ) ;
77
+ options = EffectsOptions [ currentEffect ] ;
78
+ if ( currentEffect === 'none' ) {
79
+ applyEffect ( ) ;
80
+ sliderNodeWrapper . classList . add ( 'hidden' ) ;
99
81
}
100
-
101
82
sliderNode . noUiSlider . updateOptions ( options ) ;
102
83
}
103
84
} ) ;
0 commit comments