Add lamassu-admin-elm to this repo (#185)
This commit is contained in:
parent
5ee7e40872
commit
f4fc9d6328
134 changed files with 28171 additions and 83 deletions
91
lamassu-admin-elm/src/MaintenanceMachines/State.elm
Normal file
91
lamassu-admin-elm/src/MaintenanceMachines/State.elm
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
module MaintenanceMachines.State exposing (..)
|
||||
|
||||
import RemoteData exposing (..)
|
||||
import String
|
||||
import List
|
||||
import Process
|
||||
import Task
|
||||
import Time exposing (second)
|
||||
import MaintenanceMachines.Types exposing (..)
|
||||
import MaintenanceMachines.Rest exposing (..)
|
||||
import BasicTypes exposing (..)
|
||||
|
||||
|
||||
init : Model
|
||||
init =
|
||||
NotAsked
|
||||
|
||||
|
||||
load : ( Model, Cmd Msg )
|
||||
load =
|
||||
( Loading, getForm )
|
||||
|
||||
|
||||
updateMachine : Machine -> Machine -> Machine
|
||||
updateMachine machine oldMachine =
|
||||
if machine.deviceId == oldMachine.deviceId then
|
||||
machine
|
||||
else
|
||||
oldMachine
|
||||
|
||||
|
||||
updateCassette : Machine -> Position -> String -> SubModel -> ( SubModel, Cmd Msg )
|
||||
updateCassette machine position str subModel =
|
||||
let
|
||||
countResult =
|
||||
String.toInt str
|
||||
|
||||
updatedMachine =
|
||||
case countResult of
|
||||
Ok count ->
|
||||
case position of
|
||||
Top ->
|
||||
{ machine | cassette1 = count }
|
||||
|
||||
Bottom ->
|
||||
{ machine | cassette2 = count }
|
||||
|
||||
Err _ ->
|
||||
machine
|
||||
|
||||
machines =
|
||||
List.map (updateMachine updatedMachine) subModel.machines
|
||||
in
|
||||
{ subModel | machines = machines } ! []
|
||||
|
||||
|
||||
updateAction : MachineAction -> SubModel -> ( SubModel, Cmd Msg )
|
||||
updateAction action subModel =
|
||||
subModel ! [ postForm action ]
|
||||
|
||||
|
||||
saveUpdate : SubModel -> ( SubModel, Cmd Msg )
|
||||
saveUpdate model =
|
||||
let
|
||||
cmd =
|
||||
if (model.status == Saved) then
|
||||
Process.sleep (2 * second)
|
||||
|> Task.perform (\_ -> HideSaveIndication)
|
||||
else
|
||||
Cmd.none
|
||||
in
|
||||
model ! [ cmd ]
|
||||
|
||||
|
||||
update : Msg -> Model -> ( Model, Cmd Msg )
|
||||
update msg model =
|
||||
case msg of
|
||||
Action ->
|
||||
model ! []
|
||||
|
||||
Load newModel ->
|
||||
RemoteData.update saveUpdate newModel
|
||||
|
||||
InputCassette machine position str ->
|
||||
RemoteData.update (updateCassette machine position str) model
|
||||
|
||||
Submit action ->
|
||||
RemoteData.update (updateAction action) model
|
||||
|
||||
HideSaveIndication ->
|
||||
RemoteData.update (\subModel -> { subModel | status = NotSaving } ! []) model
|
||||
Loading…
Add table
Add a link
Reference in a new issue