Initial application stub

This commit is contained in:
Eike Kettner
2019-07-17 22:03:10 +02:00
commit 6154e6a387
54 changed files with 2447 additions and 0 deletions

View File

@ -0,0 +1,15 @@
module Page.Home.Data exposing (..)
import Http
type alias Model =
{
}
emptyModel: Model
emptyModel =
{
}
type Msg
= Dummy

View File

@ -0,0 +1,9 @@
module Page.Home.Update exposing (update)
import Api
import Data.Flags exposing (Flags)
import Page.Home.Data exposing (..)
update: Flags -> Msg -> Model -> (Model, Cmd Msg)
update flags msg model =
(model, Cmd.none)

View File

@ -0,0 +1,23 @@
module Page.Home.View exposing (view)
import Html exposing (..)
import Html.Attributes exposing (..)
import Html.Events exposing (onClick)
import Page exposing (Page(..))
import Page.Home.Data exposing (..)
import Data.Flags
view: Model -> Html Msg
view model =
div [class "home-page ui fluid grid"]
[div [class "three wide column"]
[h3 [][text "Menu"]
]
,div [class "seven wide column", style "border-left" "1px solid"]
[h3 [][text "List"]
]
,div [class "six wide column", style "border-left" "1px solid", style "height" "100vh"]
[h3 [][text "DocView"]
]
]

View File

@ -0,0 +1,23 @@
module Page.Login.Data exposing (..)
import Http
import Api.Model.AuthResult exposing (AuthResult)
type alias Model =
{ username: String
, password: String
, result: Maybe AuthResult
}
empty: Model
empty =
{ username = ""
, password = ""
, result = Nothing
}
type Msg
= SetUsername String
| SetPassword String
| Authenticate
| AuthResp (Result Http.Error AuthResult)

View File

@ -0,0 +1,39 @@
module Page.Login.Update exposing (update)
import Api
import Ports
import Data.Flags exposing (Flags)
import Page exposing (Page(..))
import Page.Login.Data exposing (..)
import Api.Model.UserPass exposing (UserPass)
import Api.Model.AuthResult exposing (AuthResult)
import Util.Http
update: Flags -> Msg -> Model -> (Model, Cmd Msg, Maybe AuthResult)
update flags msg model =
case msg of
SetUsername str ->
({model | username = str}, Cmd.none, Nothing)
SetPassword str ->
({model | password = str}, Cmd.none, Nothing)
Authenticate ->
(model, Api.login flags (UserPass model.username model.password) AuthResp, Nothing)
AuthResp (Ok lr) ->
if lr.success
then ({model|result = Just lr, password = ""}, setAccount lr, Just lr)
else ({model|result = Just lr, password = ""}, Ports.removeAccount "", Just lr)
AuthResp (Err err) ->
let
empty = Api.Model.AuthResult.empty
lr = {empty|message = Util.Http.errorToString err}
in
({model|password = "", result = Just lr}, Ports.removeAccount "", Just empty)
setAccount: AuthResult -> Cmd msg
setAccount result =
if result.success
then Ports.setAccount result
else Ports.removeAccount ""

View File

@ -0,0 +1,59 @@
module Page.Login.View exposing (view)
import Html exposing (..)
import Html.Attributes exposing (..)
import Html.Events exposing (onClick, onInput, onSubmit)
import Page.Login.Data exposing (..)
view: Model -> Html Msg
view model =
div [class "login-page"]
[div [class "ui centered grid"]
[div [class "row"]
[div [class "eight wide column ui segment login-view"]
[h1 [class "ui dividing header"][text "Sign in to Docspell"]
,Html.form [class "ui large error form", onSubmit Authenticate]
[div [class "field"]
[label [][text "Username"]
,input [type_ "text"
,onInput SetUsername
,value model.username
][]
]
,div [class "field"]
[label [][text "Password"]
,input [type_ "password"
,onInput SetPassword
,value model.password
][]
]
,button [class "ui primary button"
,type_ "submit"
,onClick Authenticate
]
[text "Login"
]
]
,(resultMessage model)
]
]
]
]
resultMessage: Model -> Html Msg
resultMessage model =
case model.result of
Just r ->
if r.success
then
div [class "ui success message"]
[text "Login successful."
]
else
div [class "ui error message"]
[text r.message
]
Nothing ->
span [][]