Initial version.

Features:

- Upload PDF files let them analyze

- Manage meta data and items

- See processing in webapp
This commit is contained in:
Eike Kettner
2019-07-23 00:53:30 +02:00
parent 6154e6a387
commit 831cd8b655
341 changed files with 23634 additions and 484 deletions

View File

@ -0,0 +1,113 @@
module Comp.OrgForm exposing ( Model
, emptyModel
, Msg(..)
, view
, update
, isValid
, getOrg)
import Html exposing (..)
import Html.Attributes exposing (..)
import Html.Events exposing (onInput)
import Data.Flags exposing (Flags)
import Api.Model.Organization exposing (Organization)
import Comp.AddressForm
import Comp.ContactField
type alias Model =
{ org: Organization
, name: String
, addressModel: Comp.AddressForm.Model
, contactModel: Comp.ContactField.Model
, notes: Maybe String
}
emptyModel: Model
emptyModel =
{ org = Api.Model.Organization.empty
, name = ""
, addressModel = Comp.AddressForm.emptyModel
, contactModel = Comp.ContactField.emptyModel
, notes = Nothing
}
isValid: Model -> Bool
isValid model =
model.name /= ""
getOrg: Model -> Organization
getOrg model =
let
o = model.org
in
{ o | name = model.name
, address = Comp.AddressForm.getAddress model.addressModel
, contacts = Comp.ContactField.getContacts model.contactModel
, notes = model.notes
}
type Msg
= SetName String
| SetOrg Organization
| AddressMsg Comp.AddressForm.Msg
| ContactMsg Comp.ContactField.Msg
| SetNotes String
update: Flags -> Msg -> Model -> (Model, Cmd Msg)
update flags msg model =
case msg of
SetOrg t ->
let
(m1, c1) = update flags (AddressMsg (Comp.AddressForm.SetAddress t.address)) model
(m2, c2) = update flags (ContactMsg (Comp.ContactField.SetItems t.contacts)) m1
in
({m2 | org = t, name = t.name, notes = t.notes }, Cmd.none)
AddressMsg am ->
let
(m1, c1) = Comp.AddressForm.update am model.addressModel
in
({model | addressModel = m1}, Cmd.map AddressMsg c1)
ContactMsg m ->
let
(m1, c1) = Comp.ContactField.update m model.contactModel
in
({model | contactModel = m1}, Cmd.map ContactMsg c1)
SetName n ->
({model | name = n}, Cmd.none)
SetNotes str ->
({model | notes = if str == "" then Nothing else Just str}, Cmd.none)
view: Model -> Html Msg
view model =
div [class "ui form"]
[div [classList [("field", True)
,("error", not (isValid model))
]
]
[label [][text "Name*"]
,input [type_ "text"
,onInput SetName
,placeholder "Name"
,value model.name
][]
]
,h3 [class "ui dividing header"]
[text "Address"
]
,Html.map AddressMsg (Comp.AddressForm.view model.addressModel)
,h3 [class "ui dividing header"]
[text "Contacts"
]
,Html.map ContactMsg (Comp.ContactField.view model.contactModel)
,h3 [class "ui dividing header"]
[text "Notes"
]
,div [class "field"]
[textarea [onInput SetNotes][Maybe.withDefault "" model.notes |> text ]
]
]