Initial import of PhotoGroove

This commit is contained in:
Alexander Kobjolke 2023-12-10 22:02:26 +01:00
commit 3d2c74b8fc
7 changed files with 5744 additions and 0 deletions

81
src/PhotoGroove.elm Normal file
View file

@ -0,0 +1,81 @@
module PhotoGroove exposing (main)
import Array exposing (Array)
import Browser
import Html exposing (Html, button, div, h1, img, text)
import Html.Attributes exposing (..)
import Html.Events exposing (onClick)
type alias Model =
{ photos : List Photo, selectedUrl : String }
type alias Photo =
{ url : String }
initialModel : Model
initialModel =
{ photos =
[ { url = "1.jpeg" }
, { url = "2.jpeg" }
, { url = "3.jpeg" }
]
, selectedUrl = "1.jpeg"
}
photoArray : Array Photo
photoArray =
Array.fromList initialModel.photos
view : Model -> Html Message
view model =
div [ class "content" ]
[ h1 [] [ text "Photo Groove" ]
, button [ onClick ClickedSurpriseMe ] [ text "Surprise me!" ]
, div [ id "thumbnails" ]
(List.map (viewThumbnail model.selectedUrl) model.photos)
, img [ class "large", src (urlPrefix ++ "large/" ++ model.selectedUrl) ] []
]
viewThumbnail : String -> Photo -> Html Message
viewThumbnail selectedUrl thumb =
img
[ src (urlPrefix ++ thumb.url)
, classList [ ( "selected", selectedUrl == thumb.url ) ]
, onClick (ClickedThumbnail thumb.url)
]
[]
type Message
= ClickedThumbnail String
| ClickedSurpriseMe
update : Message -> Model -> Model
update msg model =
case msg of
ClickedThumbnail thumb ->
{ model | selectedUrl = thumb }
ClickedSurpriseMe ->
{ model | selectedUrl = "2.jpeg" }
urlPrefix : String
urlPrefix =
"http://elm-in-action.com/"
main : Program () Model Message
main =
Browser.sandbox
{ init = initialModel
, view = view
, update = update
}