1
0
mirror of https://github.com/jhillyerd/inbucket.git synced 2025-12-17 17:47:03 +00:00

ui: Clarifying renames

This commit is contained in:
James Hillyerd
2018-12-31 16:47:49 -08:00
parent fac44b7753
commit 986377b531
2 changed files with 24 additions and 35 deletions

View File

@@ -1,4 +1,4 @@
module Layout exposing (ActivePage(..), frame) module Layout exposing (Page(..), frame)
import Data.Session as Session exposing (Session) import Data.Session as Session exposing (Session)
import Html exposing (..) import Html exposing (..)
@@ -20,7 +20,9 @@ import Html.Events as Events
import Route exposing (Route) import Route exposing (Route)
type ActivePage {-| Used to highlight current page in navbar.
-}
type Page
= Other = Other
| Mailbox | Mailbox
| Monitor | Monitor
@@ -37,20 +39,20 @@ type alias FrameControls msg =
} }
frame : FrameControls msg -> Session -> ActivePage -> Maybe (Html msg) -> List (Html msg) -> Html msg frame : FrameControls msg -> Session -> Page -> Maybe (Html msg) -> List (Html msg) -> Html msg
frame controls session page modal content = frame controls session activePage modal content =
div [ class "app" ] div [ class "app" ]
[ header [] [ header []
[ ul [ class "navbar", attribute "role" "navigation" ] [ ul [ class "navbar", attribute "role" "navigation" ]
[ li [ class "navbar-brand" ] [ li [ class "navbar-brand" ]
[ a [ Route.href Route.Home ] [ text "@ inbucket" ] ] [ a [ Route.href Route.Home ] [ text "@ inbucket" ] ]
, if session.config.monitorVisible then , if session.config.monitorVisible then
navbarLink page Route.Monitor [ text "Monitor" ] navbarLink Monitor Route.Monitor [ text "Monitor" ] activePage
else else
text "" text ""
, navbarLink page Route.Status [ text "Status" ] , navbarLink Status Route.Status [ text "Status" ] activePage
, navbarRecent page controls , navbarRecent activePage controls
, li [ class "navbar-mailbox" ] , li [ class "navbar-mailbox" ]
[ form [ Events.onSubmit (controls.viewMailbox controls.mailboxValue) ] [ form [ Events.onSubmit (controls.viewMailbox controls.mailboxValue) ]
[ input [ input
@@ -118,15 +120,15 @@ externalLink url title =
a [ href url, target "_blank", rel "noopener" ] [ text title ] a [ href url, target "_blank", rel "noopener" ] [ text title ]
navbarLink : ActivePage -> Route -> List (Html a) -> Html a navbarLink : Page -> Route -> List (Html a) -> Page -> Html a
navbarLink page route linkContent = navbarLink page route linkContent activePage =
li [ classList [ ( "navbar-active", isActive page route ) ] ] li [ classList [ ( "navbar-active", page == activePage ) ] ]
[ a [ Route.href route ] linkContent ] [ a [ Route.href route ] linkContent ]
{-| Renders list of recent mailboxes, selecting the currently active mailbox. {-| Renders list of recent mailboxes, selecting the currently active mailbox.
-} -}
navbarRecent : ActivePage -> FrameControls msg -> Html msg navbarRecent : Page -> FrameControls msg -> Html msg
navbarRecent page controls = navbarRecent page controls =
let let
active = active =
@@ -158,16 +160,3 @@ navbarRecent page controls =
[ span [] [ text title ] [ span [] [ text title ]
, div [ class "navbar-dropdown-content" ] (List.map recentLink recentMailboxes) , div [ class "navbar-dropdown-content" ] (List.map recentLink recentMailboxes)
] ]
isActive : ActivePage -> Route -> Bool
isActive page route =
case ( page, route ) of
( Monitor, Route.Monitor ) ->
True
( Status, Route.Status ) ->
True
_ ->
False

View File

@@ -6,7 +6,7 @@ import Data.AppConfig as AppConfig exposing (AppConfig)
import Data.Session as Session exposing (Session) import Data.Session as Session exposing (Session)
import Html exposing (..) import Html exposing (..)
import Json.Decode as D exposing (Value) import Json.Decode as D exposing (Value)
import Layout exposing (ActivePage(..), frame) import Layout
import Page.Home as Home import Page.Home as Home
import Page.Mailbox as Mailbox import Page.Mailbox as Mailbox
import Page.Monitor as Monitor import Page.Monitor as Monitor
@@ -22,19 +22,19 @@ import Url exposing (Url)
-- MODEL -- MODEL
type Page type alias Model =
{ page : PageModel
, mailboxName : String
}
type PageModel
= Home Home.Model = Home Home.Model
| Mailbox Mailbox.Model | Mailbox Mailbox.Model
| Monitor Monitor.Model | Monitor Monitor.Model
| Status Status.Model | Status Status.Model
type alias Model =
{ page : Page
, mailboxName : String
}
type alias InitConfig = type alias InitConfig =
{ appConfig : AppConfig { appConfig : AppConfig
, session : Session.Persistent , session : Session.Persistent
@@ -105,7 +105,7 @@ sessionChange =
Ports.onSessionChange (D.decodeValue Session.decoder) Ports.onSessionChange (D.decodeValue Session.decoder)
pageSubscriptions : Page -> Sub Msg pageSubscriptions : PageModel -> Sub Msg
pageSubscriptions page = pageSubscriptions page =
case page of case page of
Mailbox subModel -> Mailbox subModel ->
@@ -346,7 +346,7 @@ applyToModelSession f model =
{-| Map page updates to Main Model and Msg types. {-| Map page updates to Main Model and Msg types.
-} -}
updateWith : updateWith :
(subModel -> Page) (subModel -> PageModel)
-> (subMsg -> Msg) -> (subMsg -> Msg)
-> Model -> Model
-> ( subModel, Cmd subMsg ) -> ( subModel, Cmd subMsg )
@@ -385,7 +385,7 @@ view model =
} }
framePage : framePage :
ActivePage Layout.Page
-> (msg -> Msg) -> (msg -> Msg)
-> { title : String, modal : Maybe (Html msg), content : List (Html msg) } -> { title : String, modal : Maybe (Html msg), content : List (Html msg) }
-> Document Msg -> Document Msg