-
Notifications
You must be signed in to change notification settings - Fork 1
/
Model.elm
114 lines (71 loc) · 2.22 KB
/
Model.elm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
module Model exposing (Image, Model, getCurrentDescription, getCurrentUrl, imageDecoder, imagesPath, init)
import Array
import Draggable
import Json.Decode as D
imagesPath =
"http://localhost:3000/images"
type alias Model =
{ images : Array.Array Image
, selectedImg : Int
, showBigScreen : Bool
, showRealSize : Bool
, bigImageScale : Float
, leftArrowButton : String
, rightArrowButton : String
, dismissButton : String
, realSizeButton : String
, fullScreenButton : String
, zoomInButton : String
, zoomOutButton : String
, position : ( Int, Int )
, drag : Draggable.State String
}
type alias Image =
{ title : String
, description : String
, src : String
}
initialImages =
Array.fromList []
initialBigImage =
0
leftArrowImage =
"https://image.flaticon.com/icons/svg/60/60775.svg"
rightArrowImage =
"https://image.flaticon.com/icons/svg/60/60758.svg"
dismissImage =
"https://png.pngtree.com/svg/20170503/pop_ico_close_1353709.png"
realSizeImage =
"https://cdn.iconscout.com/icon/premium/png-256-thumb/zoom-to-actual-size-1-561733.png"
fullScreenImage =
"https://static.thenounproject.com/png/280-200.png"
zoomIn =
"https://cdn0.iconfinder.com/data/icons/controls-and-navigation-arrows-1/24/26-512.png"
zoomOut =
"https://cdn0.iconfinder.com/data/icons/huge-black-icons/512/Zoom_out.png"
showBigScreen =
False
showRealSize =
False
bigImageScale =
1.0
position =
( 0, 0 )
drag =
Draggable.init
init =
Model initialImages initialBigImage showBigScreen showRealSize bigImageScale leftArrowImage rightArrowImage dismissImage realSizeImage fullScreenImage zoomIn zoomOut position drag
getCurrentUrl : Model -> String
getCurrentUrl m =
Maybe.withDefault "" <| Maybe.map .src (Array.get m.selectedImg m.images)
getCurrentDescription : Model -> String
getCurrentDescription m =
Maybe.withDefault "" <| Maybe.map .description (Array.get m.selectedImg m.images)
imageDecoder : D.Decoder (Array.Array Image)
imageDecoder =
D.array
(D.map3 Image
(D.field "title" D.string)
(D.field "description" D.string)
(D.field "src" D.string)
)