Advertisement
Guest User

Untitled

a guest
May 28th, 2016
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. import Html exposing (Html, Attribute, input, strong, ul, li, em, div, text, button)
  2. import Html.App as Html
  3. import Html.Attributes exposing (..)
  4. import Html.Events exposing (onInput, onClick)
  5.  
  6. main =
  7. Html.beginnerProgram { model = model, view = view, update = update }
  8.  
  9.  
  10. -- MODEL
  11.  
  12. type alias Model =
  13. { subject : String
  14. , previous: List String
  15. }
  16.  
  17. model : Model
  18. model =
  19. { subject = ""
  20. , previous = ["World", "Earth"]
  21. }
  22.  
  23.  
  24. -- UPDATE
  25.  
  26. -- Delegates
  27. type Message
  28. = ReplaceSubject String
  29. | AddItem
  30.  
  31. -- Something like Message<Model in, Model out>
  32. update : Message -> Model -> Model
  33. update message model =
  34. case message of
  35. ReplaceSubject newMessage ->
  36. { model | subject = newMessage }
  37. AddItem ->
  38. { model | previous = model.subject :: model.previous}
  39.  
  40.  
  41. -- VIEW
  42.  
  43. prevEls previous =
  44. let
  45. children = List.map prevItem previous
  46. in
  47. ul [] children
  48.  
  49. prevItem item =
  50. li [] [ text item ]
  51.  
  52. view : Model -> Html Message
  53. view model =
  54. div [] [
  55. div []
  56. [ input [placeholder "SaƂatka", onInput ReplaceSubject] [text model.subject]
  57. , button [onClick AddItem] [text "Add"]
  58. ]
  59. , div []
  60. [ prevEls model.previous
  61. ]
  62. , div []
  63. [ strong [] [text "Hello"]
  64. , em [] [text model.subject ]
  65. ]
  66. ]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement