Add lamassu-admin-elm to this repo (#185)

This commit is contained in:
Rafael Taranto 2018-10-08 16:29:06 -03:00 committed by Josh Harvey
parent 5ee7e40872
commit f4fc9d6328
134 changed files with 28171 additions and 83 deletions

View 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