Using elm-format for all files

This commit is contained in:
Eike Kettner
2019-12-29 21:55:12 +01:00
parent 546f1a6ee3
commit 2001cca88b
84 changed files with 7668 additions and 5079 deletions

View File

@ -1,63 +1,73 @@
module App.Data exposing (..)
module App.Data exposing
( Model
, Msg(..)
, checkPage
, defaultPage
, init
)
import Api.Model.AuthResult exposing (AuthResult)
import Api.Model.VersionInfo exposing (VersionInfo)
import Browser exposing (UrlRequest)
import Browser.Navigation exposing (Key)
import Url exposing (Url)
import Http
import Data.Flags exposing (Flags)
import Api.Model.VersionInfo exposing (VersionInfo)
import Api.Model.AuthResult exposing (AuthResult)
import Http
import Page exposing (Page(..))
import Page.CollectiveSettings.Data
import Page.Home.Data
import Page.Login.Data
import Page.ManageData.Data
import Page.CollectiveSettings.Data
import Page.UserSettings.Data
import Page.NewInvite.Data
import Page.Queue.Data
import Page.Register.Data
import Page.Upload.Data
import Page.NewInvite.Data
import Page.UserSettings.Data
import Url exposing (Url)
type alias Model =
{ flags: Flags
, key: Key
, page: Page
, version: VersionInfo
, homeModel: Page.Home.Data.Model
, loginModel: Page.Login.Data.Model
, manageDataModel: Page.ManageData.Data.Model
, collSettingsModel: Page.CollectiveSettings.Data.Model
, userSettingsModel: Page.UserSettings.Data.Model
, queueModel: Page.Queue.Data.Model
, registerModel: Page.Register.Data.Model
, uploadModel: Page.Upload.Data.Model
, newInviteModel: Page.NewInvite.Data.Model
, navMenuOpen: Bool
, subs: Sub Msg
{ flags : Flags
, key : Key
, page : Page
, version : VersionInfo
, homeModel : Page.Home.Data.Model
, loginModel : Page.Login.Data.Model
, manageDataModel : Page.ManageData.Data.Model
, collSettingsModel : Page.CollectiveSettings.Data.Model
, userSettingsModel : Page.UserSettings.Data.Model
, queueModel : Page.Queue.Data.Model
, registerModel : Page.Register.Data.Model
, uploadModel : Page.Upload.Data.Model
, newInviteModel : Page.NewInvite.Data.Model
, navMenuOpen : Bool
, subs : Sub Msg
}
init: Key -> Url -> Flags -> Model
init : Key -> Url -> Flags -> Model
init key url flags =
let
page = Page.fromUrl url
|> Maybe.withDefault (defaultPage flags)
page =
Page.fromUrl url
|> Maybe.withDefault (defaultPage flags)
in
{ flags = flags
, key = key
, page = page
, version = Api.Model.VersionInfo.empty
, homeModel = Page.Home.Data.emptyModel
, loginModel = Page.Login.Data.emptyModel
, manageDataModel = Page.ManageData.Data.emptyModel
, collSettingsModel = Page.CollectiveSettings.Data.emptyModel
, userSettingsModel = Page.UserSettings.Data.emptyModel
, queueModel = Page.Queue.Data.emptyModel
, registerModel = Page.Register.Data.emptyModel
, uploadModel = Page.Upload.Data.emptyModel
, newInviteModel = Page.NewInvite.Data.emptyModel
, navMenuOpen = False
, subs = Sub.none
}
{ flags = flags
, key = key
, page = page
, version = Api.Model.VersionInfo.empty
, homeModel = Page.Home.Data.emptyModel
, loginModel = Page.Login.Data.emptyModel
, manageDataModel = Page.ManageData.Data.emptyModel
, collSettingsModel = Page.CollectiveSettings.Data.emptyModel
, userSettingsModel = Page.UserSettings.Data.emptyModel
, queueModel = Page.Queue.Data.emptyModel
, registerModel = Page.Register.Data.emptyModel
, uploadModel = Page.Upload.Data.emptyModel
, newInviteModel = Page.NewInvite.Data.emptyModel
, navMenuOpen = False
, subs = Sub.none
}
type Msg
= NavRequest UrlRequest
@ -77,18 +87,30 @@ type Msg
| SessionCheckResp (Result Http.Error AuthResult)
| ToggleNavMenu
isSignedIn: Flags -> Bool
isSignedIn : Flags -> Bool
isSignedIn flags =
flags.account
|> Maybe.map .success
|> Maybe.withDefault False
checkPage: Flags -> Page -> Page
checkPage flags page =
if Page.isSecured page && isSignedIn flags then page
else if Page.isOpen page then page
else Page.loginPage page
defaultPage: Flags -> Page
checkPage : Flags -> Page -> Page
checkPage flags page =
if Page.isSecured page && isSignedIn flags then
page
else if Page.isOpen page then
page
else
Page.loginPage page
defaultPage : Flags -> Page
defaultPage flags =
if isSignedIn flags then HomePage else (LoginPage Nothing)
if isSignedIn flags then
HomePage
else
LoginPage Nothing

View File

@ -1,42 +1,48 @@
module App.Update exposing (update, initPage)
module App.Update exposing
( initPage
, update
)
import Api
import Ports
import App.Data exposing (..)
import Browser exposing (UrlRequest(..))
import Browser.Navigation as Nav
import Url
import Data.Flags
import App.Data exposing (..)
import Page exposing (Page(..))
import Page.CollectiveSettings.Data
import Page.CollectiveSettings.Update
import Page.Home.Data
import Page.Home.Update
import Page.Login.Data
import Page.Login.Update
import Page.ManageData.Data
import Page.ManageData.Update
import Page.CollectiveSettings.Data
import Page.CollectiveSettings.Update
import Page.UserSettings.Data
import Page.UserSettings.Update
import Page.NewInvite.Data
import Page.NewInvite.Update
import Page.Queue.Data
import Page.Queue.Update
import Page.Register.Data
import Page.Register.Update
import Page.Upload.Data
import Page.Upload.Update
import Page.NewInvite.Data
import Page.NewInvite.Update
import Page.UserSettings.Data
import Page.UserSettings.Update
import Ports
import Url
import Util.Update
update: Msg -> Model -> (Model, Cmd Msg)
update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
let
(m, c, s) = updateWithSub msg model
( m, c, s ) =
updateWithSub msg model
in
({m|subs = s}, c)
( { m | subs = s }, c )
updateWithSub: Msg -> Model -> (Model, Cmd Msg, Sub Msg)
updateWithSub msg model =
updateWithSub : Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
updateWithSub msg model =
case msg of
HomeMsg lm ->
updateHome lm model |> noSub
@ -66,49 +72,75 @@ updateWithSub msg model =
updateNewInvite m model |> noSub
VersionResp (Ok info) ->
({model|version = info}, Cmd.none) |> noSub
( { model | version = info }, Cmd.none ) |> noSub
VersionResp (Err err) ->
(model, Cmd.none, Sub.none)
VersionResp (Err _) ->
( model, Cmd.none, Sub.none )
Logout ->
(model
( model
, Cmd.batch
[ Api.logout model.flags LogoutResp
, Ports.removeAccount ()
]
, Sub.none)
, Sub.none
)
LogoutResp _ ->
({model|loginModel = Page.Login.Data.emptyModel}, Page.goto (LoginPage Nothing), Sub.none)
( { model | loginModel = Page.Login.Data.emptyModel }, Page.goto (LoginPage Nothing), Sub.none )
SessionCheckResp res ->
case res of
Ok lr ->
let
newFlags = if lr.success then Data.Flags.withAccount model.flags lr
else Data.Flags.withoutAccount model.flags
command = if lr.success then Api.refreshSession newFlags SessionCheckResp
else Cmd.batch [Ports.removeAccount (), Page.goto (Page.loginPage model.page)]
newFlags =
if lr.success then
Data.Flags.withAccount model.flags lr
else
Data.Flags.withoutAccount model.flags
command =
if lr.success then
Api.refreshSession newFlags SessionCheckResp
else
Cmd.batch
[ Ports.removeAccount ()
, Page.goto (Page.loginPage model.page)
]
in
({model | flags = newFlags}, command, Sub.none)
( { model | flags = newFlags }, command, Sub.none )
Err _ ->
(model, Cmd.batch [Ports.removeAccount (), Page.goto (Page.loginPage model.page)], Sub.none)
( model
, Cmd.batch
[ Ports.removeAccount ()
, Page.goto (Page.loginPage model.page)
]
, Sub.none
)
NavRequest req ->
case req of
Internal url ->
let
newPage = Page.fromUrl url
newPage =
Page.fromUrl url
isCurrent =
Page.fromUrl url |>
Maybe.map (\p -> p == model.page) |>
Maybe.withDefault True
Page.fromUrl url
|> Maybe.map (\p -> p == model.page)
|> Maybe.withDefault True
in
( model
, if isCurrent then Cmd.none else Nav.pushUrl model.key (Url.toString url)
, Sub.none
)
( model
, if isCurrent then
Cmd.none
else
Nav.pushUrl model.key (Url.toString url)
, Sub.none
)
External url ->
( model
@ -118,111 +150,148 @@ updateWithSub msg model =
NavChange url ->
let
page = Page.fromUrl url
|> Maybe.withDefault (defaultPage model.flags)
check = checkPage model.flags page
(m, c) = initPage model page
page =
Page.fromUrl url
|> Maybe.withDefault (defaultPage model.flags)
check =
checkPage model.flags page
( m, c ) =
initPage model page
in
if check == page then ( { m | page = page }, c, Sub.none )
else (model, Page.goto check, Sub.none)
if check == page then
( { m | page = page }, c, Sub.none )
else
( model, Page.goto check, Sub.none )
ToggleNavMenu ->
({model | navMenuOpen = not model.navMenuOpen }, Cmd.none, Sub.none)
( { model | navMenuOpen = not model.navMenuOpen }, Cmd.none, Sub.none )
updateNewInvite: Page.NewInvite.Data.Msg -> Model -> (Model, Cmd Msg)
updateNewInvite : Page.NewInvite.Data.Msg -> Model -> ( Model, Cmd Msg )
updateNewInvite lmsg model =
let
(lm, lc) = Page.NewInvite.Update.update model.flags lmsg model.newInviteModel
( lm, lc ) =
Page.NewInvite.Update.update model.flags lmsg model.newInviteModel
in
( {model | newInviteModel = lm }
, Cmd.map NewInviteMsg lc
)
( { model | newInviteModel = lm }
, Cmd.map NewInviteMsg lc
)
updateUpload: Page.Upload.Data.Msg -> Model -> (Model, Cmd Msg, Sub Msg)
updateUpload : Page.Upload.Data.Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
updateUpload lmsg model =
let
(lm, lc, ls) = Page.Upload.Update.update (Page.uploadId model.page) model.flags lmsg model.uploadModel
( lm, lc, ls ) =
Page.Upload.Update.update
(Page.uploadId model.page)
model.flags
lmsg
model.uploadModel
in
( { model | uploadModel = lm }
, Cmd.map UploadMsg lc
, Sub.map UploadMsg ls
)
( { model | uploadModel = lm }
, Cmd.map UploadMsg lc
, Sub.map UploadMsg ls
)
updateRegister: Page.Register.Data.Msg -> Model -> (Model, Cmd Msg)
updateRegister : Page.Register.Data.Msg -> Model -> ( Model, Cmd Msg )
updateRegister lmsg model =
let
(lm, lc) = Page.Register.Update.update model.flags lmsg model.registerModel
( lm, lc ) =
Page.Register.Update.update model.flags lmsg model.registerModel
in
( { model | registerModel = lm }
, Cmd.map RegisterMsg lc
)
( { model | registerModel = lm }
, Cmd.map RegisterMsg lc
)
updateQueue: Page.Queue.Data.Msg -> Model -> (Model, Cmd Msg)
updateQueue : Page.Queue.Data.Msg -> Model -> ( Model, Cmd Msg )
updateQueue lmsg model =
let
(lm, lc) = Page.Queue.Update.update model.flags lmsg model.queueModel
( lm, lc ) =
Page.Queue.Update.update model.flags lmsg model.queueModel
in
( { model | queueModel = lm }
, Cmd.map QueueMsg lc
)
( { model | queueModel = lm }
, Cmd.map QueueMsg lc
)
updateUserSettings: Page.UserSettings.Data.Msg -> Model -> (Model, Cmd Msg)
updateUserSettings : Page.UserSettings.Data.Msg -> Model -> ( Model, Cmd Msg )
updateUserSettings lmsg model =
let
(lm, lc) = Page.UserSettings.Update.update model.flags lmsg model.userSettingsModel
( lm, lc ) =
Page.UserSettings.Update.update model.flags lmsg model.userSettingsModel
in
( { model | userSettingsModel = lm }
, Cmd.map UserSettingsMsg lc
)
( { model | userSettingsModel = lm }
, Cmd.map UserSettingsMsg lc
)
updateCollSettings: Page.CollectiveSettings.Data.Msg -> Model -> (Model, Cmd Msg)
updateCollSettings : Page.CollectiveSettings.Data.Msg -> Model -> ( Model, Cmd Msg )
updateCollSettings lmsg model =
let
(lm, lc) = Page.CollectiveSettings.Update.update model.flags lmsg model.collSettingsModel
( lm, lc ) =
Page.CollectiveSettings.Update.update model.flags
lmsg
model.collSettingsModel
in
( { model | collSettingsModel = lm }
, Cmd.map CollSettingsMsg lc
)
( { model | collSettingsModel = lm }
, Cmd.map CollSettingsMsg lc
)
updateLogin: Page.Login.Data.Msg -> Model -> (Model, Cmd Msg)
updateLogin : Page.Login.Data.Msg -> Model -> ( Model, Cmd Msg )
updateLogin lmsg model =
let
(lm, lc, ar) = Page.Login.Update.update (Page.loginPageReferrer model.page) model.flags lmsg model.loginModel
newFlags = Maybe.map (Data.Flags.withAccount model.flags) ar
|> Maybe.withDefault model.flags
in
({model | loginModel = lm, flags = newFlags}
,Cmd.map LoginMsg lc
)
( lm, lc, ar ) =
Page.Login.Update.update (Page.loginPageReferrer model.page)
model.flags
lmsg
model.loginModel
updateHome: Page.Home.Data.Msg -> Model -> (Model, Cmd Msg)
newFlags =
Maybe.map (Data.Flags.withAccount model.flags) ar
|> Maybe.withDefault model.flags
in
( { model | loginModel = lm, flags = newFlags }
, Cmd.map LoginMsg lc
)
updateHome : Page.Home.Data.Msg -> Model -> ( Model, Cmd Msg )
updateHome lmsg model =
let
(lm, lc) = Page.Home.Update.update model.flags lmsg model.homeModel
( lm, lc ) =
Page.Home.Update.update model.flags lmsg model.homeModel
in
( {model | homeModel = lm }
, Cmd.map HomeMsg lc
)
( { model | homeModel = lm }
, Cmd.map HomeMsg lc
)
updateManageData: Page.ManageData.Data.Msg -> Model -> (Model, Cmd Msg)
updateManageData : Page.ManageData.Data.Msg -> Model -> ( Model, Cmd Msg )
updateManageData lmsg model =
let
(lm, lc) = Page.ManageData.Update.update model.flags lmsg model.manageDataModel
( lm, lc ) =
Page.ManageData.Update.update model.flags lmsg model.manageDataModel
in
({ model | manageDataModel = lm }
,Cmd.map ManageDataMsg lc
)
( { model | manageDataModel = lm }
, Cmd.map ManageDataMsg lc
)
initPage: Model -> Page -> (Model, Cmd Msg)
initPage : Model -> Page -> ( Model, Cmd Msg )
initPage model page =
case page of
HomePage ->
Util.Update.andThen1
[updateHome Page.Home.Data.Init
,updateQueue Page.Queue.Data.StopRefresh
] model
[ updateHome Page.Home.Data.Init
, updateQueue Page.Queue.Data.StopRefresh
]
model
LoginPage _ ->
updateQueue Page.Queue.Data.StopRefresh model
@ -232,9 +301,10 @@ initPage model page =
CollectiveSettingPage ->
Util.Update.andThen1
[updateQueue Page.Queue.Data.StopRefresh
,updateCollSettings Page.CollectiveSettings.Data.Init
] model
[ updateQueue Page.Queue.Data.StopRefresh
, updateCollSettings Page.CollectiveSettings.Data.Init
]
model
UserSettingPage ->
updateQueue Page.Queue.Data.StopRefresh model
@ -252,6 +322,6 @@ initPage model page =
updateQueue Page.Queue.Data.StopRefresh model
noSub: (Model, Cmd Msg) -> (Model, Cmd Msg, Sub Msg)
noSub (m, c) =
(m, c, Sub.none)
noSub : ( Model, Cmd Msg ) -> ( Model, Cmd Msg, Sub Msg )
noSub ( m, c ) =
( m, c, Sub.none )

View File

@ -1,227 +1,278 @@
module App.View exposing (view)
import App.Data exposing (..)
import Html exposing (..)
import Html.Attributes exposing (..)
import Html.Events exposing (onClick)
import Page
import App.Data exposing (..)
import Data.Flags exposing (Flags)
import Page exposing (Page(..))
import Page.CollectiveSettings.View
import Page.Home.View
import Page.Login.View
import Page.ManageData.View
import Page.CollectiveSettings.View
import Page.UserSettings.View
import Page.NewInvite.View
import Page.Queue.View
import Page.Register.View
import Page.Upload.View
import Page.NewInvite.View
import Page.UserSettings.View
view: Model -> Html Msg
view : Model -> Html Msg
view model =
case model.page of
LoginPage _ ->
loginLayout model
RegisterPage ->
registerLayout model
NewInvitePage ->
newInviteLayout model
_ ->
defaultLayout model
registerLayout: Model -> Html Msg
registerLayout : Model -> Html Msg
registerLayout model =
div [class "register-layout"]
[ (viewRegister model)
, (footer model)
div [ class "register-layout" ]
[ viewRegister model
, footer model
]
loginLayout: Model -> Html Msg
loginLayout : Model -> Html Msg
loginLayout model =
div [class "login-layout"]
[ (viewLogin model)
, (footer model)
div [ class "login-layout" ]
[ viewLogin model
, footer model
]
newInviteLayout: Model -> Html Msg
newInviteLayout : Model -> Html Msg
newInviteLayout model =
div [class "newinvite-layout"]
[ (viewNewInvite model)
, (footer model)
div [ class "newinvite-layout" ]
[ viewNewInvite model
, footer model
]
defaultLayout: Model -> Html Msg
defaultLayout : Model -> Html Msg
defaultLayout model =
div [class "default-layout"]
[ div [class "ui fixed top sticky attached large menu top-menu"]
[div [class "ui fluid container"]
[ a [class "header item narrow-item"
,Page.href HomePage
]
[img [class "image"
,src (model.flags.config.docspellAssetPath ++ "/img/logo-96.png")][]
,div [class "content"]
[text model.flags.config.appName
]
]
, (loginInfo model)
]
]
, div [ class "main-content" ]
[ (case model.page of
HomePage ->
viewHome model
LoginPage _ ->
viewLogin model
ManageDataPage ->
viewManageData model
CollectiveSettingPage ->
viewCollectiveSettings model
UserSettingPage ->
viewUserSettings model
QueuePage ->
viewQueue model
RegisterPage ->
viewRegister model
UploadPage mid ->
viewUpload mid model
NewInvitePage ->
viewNewInvite model
)
div [ class "default-layout" ]
[ div [ class "ui fixed top sticky attached large menu top-menu" ]
[ div [ class "ui fluid container" ]
[ a
[ class "header item narrow-item"
, Page.href HomePage
]
[ img
[ class "image"
, src (model.flags.config.docspellAssetPath ++ "/img/logo-96.png")
]
[]
, div [ class "content" ]
[ text model.flags.config.appName
]
]
, loginInfo model
]
]
, (footer model)
, div [ class "main-content" ]
[ case model.page of
HomePage ->
viewHome model
LoginPage _ ->
viewLogin model
ManageDataPage ->
viewManageData model
CollectiveSettingPage ->
viewCollectiveSettings model
UserSettingPage ->
viewUserSettings model
QueuePage ->
viewQueue model
RegisterPage ->
viewRegister model
UploadPage mid ->
viewUpload mid model
NewInvitePage ->
viewNewInvite model
]
, footer model
]
viewNewInvite: Model -> Html Msg
viewNewInvite : Model -> Html Msg
viewNewInvite model =
Html.map NewInviteMsg (Page.NewInvite.View.view model.flags model.newInviteModel)
viewUpload: (Maybe String) ->Model -> Html Msg
viewUpload : Maybe String -> Model -> Html Msg
viewUpload mid model =
Html.map UploadMsg (Page.Upload.View.view mid model.uploadModel)
viewRegister: Model -> Html Msg
viewRegister : Model -> Html Msg
viewRegister model =
Html.map RegisterMsg (Page.Register.View.view model.flags model.registerModel)
viewQueue: Model -> Html Msg
viewQueue : Model -> Html Msg
viewQueue model =
Html.map QueueMsg (Page.Queue.View.view model.queueModel)
viewUserSettings: Model -> Html Msg
viewUserSettings : Model -> Html Msg
viewUserSettings model =
Html.map UserSettingsMsg (Page.UserSettings.View.view model.userSettingsModel)
viewCollectiveSettings: Model -> Html Msg
viewCollectiveSettings : Model -> Html Msg
viewCollectiveSettings model =
Html.map CollSettingsMsg (Page.CollectiveSettings.View.view model.flags model.collSettingsModel)
viewManageData: Model -> Html Msg
viewManageData : Model -> Html Msg
viewManageData model =
Html.map ManageDataMsg (Page.ManageData.View.view model.manageDataModel)
viewLogin: Model -> Html Msg
viewLogin : Model -> Html Msg
viewLogin model =
Html.map LoginMsg (Page.Login.View.view model.flags model.loginModel)
viewHome: Model -> Html Msg
viewHome : Model -> Html Msg
viewHome model =
Html.map HomeMsg (Page.Home.View.view model.homeModel)
menuEntry: Model -> Page -> List (Html Msg) -> Html Msg
menuEntry : Model -> Page -> List (Html Msg) -> Html Msg
menuEntry model page children =
a [classList [("icon item", True)
,("active", model.page == page)
]
, Page.href page]
children
a
[ classList
[ ( "icon item", True )
, ( "active", model.page == page )
]
, Page.href page
]
children
loginInfo: Model -> Html Msg
loginInfo : Model -> Html Msg
loginInfo model =
div [class "right menu"]
div [ class "right menu" ]
(case model.flags.account of
Just acc ->
[div [class "ui dropdown icon link item"
, onClick ToggleNavMenu
]
[i [class "ui bars icon"][]
,div [classList [("left menu", True)
,("transition visible", model.navMenuOpen)
]
]
[menuEntry model HomePage
[img [class "image icon"
,src (model.flags.config.docspellAssetPath ++ "/img/logo-mc-96.png")
][]
,text "Items"
Just _ ->
[ div
[ class "ui dropdown icon link item"
, onClick ToggleNavMenu
]
[ i [ class "ui bars icon" ] []
, div
[ classList
[ ( "left menu", True )
, ( "transition visible", model.navMenuOpen )
]
,div [class "divider"][]
,menuEntry model CollectiveSettingPage
[i [class "users circle icon"][]
,text "Collective Settings"
]
,menuEntry model UserSettingPage
[i [class "user circle icon"][]
,text "User Settings"
]
,div [class "divider"][]
,menuEntry model ManageDataPage
[i [class "cubes icon"][]
,text "Manage Data"
]
,div [class "divider"][]
,menuEntry model (UploadPage Nothing)
[i [class "upload icon"][]
,text "Upload files"
]
[ menuEntry model
HomePage
[ img
[ class "image icon"
, src (model.flags.config.docspellAssetPath ++ "/img/logo-mc-96.png")
]
[]
, text "Items"
]
,menuEntry model QueuePage
[i [class "tachometer alternate icon"][]
,text "Procesing Queue"
]
,div [classList [("divider", True)
,("invisible", model.flags.config.signupMode /= "invite")
]]
[]
,a [classList [("icon item", True)
,("invisible", model.flags.config.signupMode /= "invite")
]
, div [ class "divider" ] []
, menuEntry model
CollectiveSettingPage
[ i [ class "users circle icon" ] []
, text "Collective Settings"
]
, menuEntry model
UserSettingPage
[ i [ class "user circle icon" ] []
, text "User Settings"
]
, div [ class "divider" ] []
, menuEntry model
ManageDataPage
[ i [ class "cubes icon" ] []
, text "Manage Data"
]
, div [ class "divider" ] []
, menuEntry model
(UploadPage Nothing)
[ i [ class "upload icon" ] []
, text "Upload files"
]
, menuEntry model
QueuePage
[ i [ class "tachometer alternate icon" ] []
, text "Procesing Queue"
]
, div
[ classList
[ ( "divider", True )
, ( "invisible", model.flags.config.signupMode /= "invite" )
]
]
[]
, a
[ classList
[ ( "icon item", True )
, ( "invisible", model.flags.config.signupMode /= "invite" )
]
, Page.href NewInvitePage
]
[i [class "key icon"][]
,text "New Invites"
[ i [ class "key icon" ] []
, text "New Invites"
]
,div [class "divider"][]
,a [class "icon item"
,href ""
,onClick Logout]
[i [class "sign-out icon"][]
,text "Logout"
]
]
]
, div [ class "divider" ] []
, a
[ class "icon item"
, href ""
, onClick Logout
]
[ i [ class "sign-out icon" ] []
, text "Logout"
]
]
]
]
Nothing ->
[a [class "item"
,Page.href (Page.loginPage model.page)
]
[text "Login"
]
,a [class "item"
,Page.href RegisterPage
]
[text "Register"
[ a
[ class "item"
, Page.href (Page.loginPage model.page)
]
[ text "Login"
]
, a
[ class "item"
, Page.href RegisterPage
]
[ text "Register"
]
]
)
footer: Model -> Html Msg
footer : Model -> Html Msg
footer model =
div [ class "ui footer" ]
[ a [href "https://github.com/eikek/docspell"]
[ i [class "ui github icon"][]
]
[ a [ href "https://github.com/eikek/docspell" ]
[ i [ class "ui github icon" ] []
]
, span []
[ text "Docspell "
, text model.version.version