module Main (..) where import Html exposing (..) import Html.Attributes exposing (..) import Html.Events exposing (..) import Auth import StartApp.Simple as StartApp import Signal exposing (Address) type alias Model = { query : String , results : List SearchResult } type alias SearchResult = { id : ResultId , name : String , stars : Int } type alias ResultId = Int initialModel : Model initialModel = { query = "tutorial" , results = [ { id = 1 , name = "TheSeamau5/elm-checkerboardgrid-tutorial" , stars = 66 } , { id = 2 , name = "grzegorzbalcerek/elm-by-example" , stars = 41 } , { id = 3 , name = "sporto/elm-tutorial-app" , stars = 35 } , { id = 4 , name = "jvoigtlaender/Elm-Tutorium" , stars = 10 } , { id = 5 , name = "sporto/elm-tutorial-assets" , stars = 7 } ] } view : Address Action -> Model -> Html view address model = div [ class "content" ] [ header [] [ h1 [] [ text "ElmHub" ] , span [ class "tagline" ] [ text "“Like GitHub, but for Elm things.”" ] ] , ul [ class "results" ] (List.map (viewSearchResult address) model.results) ] viewSearchResult : Address Action -> SearchResult -> Html viewSearchResult address result = li [] [ span [ class "star-count" ] [ text (toString result.stars) ] , a [ href ("https://github.com/" ++ result.name), target "_blank" ] [ text result.name ] , button -- TODO add an onClick handler that sends a DELETE_BY_ID action [ class "hide-result" ] [ text "X" ] ] type alias Action = { -- TODO implement this type alias } update : Action -> Model -> Model update action model = -- TODO if we receive a DELETE_BY_ID action, -- build a new model without the given ID present anymore. model main = StartApp.start { view = view , update = update , model = initialModel }