Guest User

Untitled

a guest
Aug 3rd, 2019
298
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.23 KB | None | 0 0
  1. module Slider exposing (Model, Msg(..), Slide, getFoot, getHead, getImg, init, main, slideArray, slideLenght, subscriptions, update, view)
  2.  
  3. import Array
  4. import Browser
  5. import Html exposing (..)
  6. import Html.Attributes exposing (..)
  7. import Html.Events exposing (..)
  8.  
  9.  
  10. type alias Slide =
  11. { img : String
  12. , head : String
  13. , foot : String
  14. }
  15.  
  16.  
  17. slideArray : Array.Array Slide
  18. slideArray =
  19. Array.fromList
  20. [ { img = "img/cat.jpg"
  21. , head = "Cat"
  22. , foot = "Look at this cat!"
  23. }
  24. , { img = "img/dog.jpg"
  25. , head = "Dog"
  26. , foot = "Look at this dog too!"
  27. }
  28. , { img = "img/bandurria.jpg"
  29. , head = "Bandurria"
  30. , foot = "Don't you like bandurrias? They're awesome!"
  31. }
  32. ]
  33.  
  34.  
  35. slideLenght : Int
  36. slideLenght =
  37. Array.length slideArray
  38.  
  39.  
  40. getImg : Int -> String
  41. getImg n =
  42. case Array.get n slideArray of
  43. Nothing ->
  44. ""
  45.  
  46. Just element ->
  47. element.img
  48.  
  49.  
  50. getHead : Int -> String
  51. getHead n =
  52. case Array.get n slideArray of
  53. Nothing ->
  54. ""
  55.  
  56. Just element ->
  57. element.head
  58.  
  59.  
  60. getFoot : Int -> String
  61. getFoot n =
  62. case Array.get n slideArray of
  63. Nothing ->
  64. ""
  65.  
  66. Just element ->
  67. element.foot
  68.  
  69.  
  70. type alias Model =
  71. Int
  72.  
  73.  
  74. type Msg
  75. = Next
  76. | Prev
  77.  
  78.  
  79. init : Model
  80. init =
  81. 0
  82.  
  83.  
  84. view : Model -> Html Msg
  85. view model =
  86. div []
  87. [ button [ onClick Prev ] [ text "<" ]
  88. , img [ src (getImg model) ] []
  89. , div [] [ text (getFoot model) ]
  90. , text "s"
  91. , button [ onClick Next ] [ text ">" ]
  92. ]
  93.  
  94.  
  95. update : Msg -> Model -> Model
  96. update msg model =
  97. case msg of
  98. Next ->
  99. if model == (slideLenght - 1) then
  100. 0
  101.  
  102. else
  103. model + 1
  104.  
  105. Prev ->
  106. if model == 0 then
  107. slideLenght - 1
  108.  
  109. else
  110. model - 1
  111.  
  112.  
  113. subscriptions : Model -> Sub Msg
  114. subscriptions model =
  115. Sub.none
  116.  
  117.  
  118. main =
  119. Browser.sandbox
  120. { init = init
  121. , view = view
  122. , update = update
  123. }
Advertisement
Add Comment
Please, Sign In to add comment