edit field utilities - conflict
name_ = Form.prop .name (\v m -> { m | name = v })
get_name = .name
model =
{ name = "name" |> Conflict.init signature ""
}
blank = Validate.blank "blank"
opts =
{ error = "conflict"
, form = model
, response =
{ first = form.response
, last = http.response
}
}
view a =
{ name = a
}
Conflict.compose view
( model |> ( ( name_, get_name ) |> Conflict.single [ model.name |> blank ] ) )
{-
{ hasError = True
, hasModified = True
, form =
{ name =
( "name"
, { field = model.name
, prop = name_
}
, { errors = [ "blank" ] -- model.name |> blank
, isModified = True
}
)
}
}
-}
{ hasError : Basics.Bool
, hasModified : Basics.Bool
, form : model
}
models and that has error, has modified
Getto.Field.Validate.Model form { opts | isModified : Basics.Bool }
field name, form and errors
Model (Form form a) opts
single form model
attribute of conflict state and resolve operation
Getto.Field.Model (Attribute a) a
conflict attribute field
{ field : Field a
, prop : Prop form a
, last : a
}
field, prop and last value
Getto.Field.Form.Prop form (Attribute a) a
Prop for conflict attribute field
response -> a
response to value getter
{ error : String
, form : form
, response : { first : Maybe response
, last : response }
}
initialize options
{ error : String -- error message
, form : form -- fields
, response :
{ first : Maybe response -- response of edit start
, last : response -- last response
}
}
conflict state
resolve type
init : String -> value -> String -> Field value
construct Field
"name" |> Conflict.init signature ""
single : List (Maybe String) -> ( Prop form a, Getter response a ) -> Options form response -> Model (Form form a) {}
construct Single
{ error = "conflict"
, form = form
, response =
{ first = form.response
, last = http.response
}
}
|> ( ( name_, get_name ) |> Conflict.single [ form.name |> Validate.blank "blank" ] )
state : Form form a -> State a
get conflict state
form |> Conflict.state
toConflict : a -> Field a -> Field a
set conflict
resolve : Prop form a -> Resolve a -> form -> form
resolve conflict
model |> Conflict.resolve prop Conflict.leave
model |> Conflict.resolve prop (Conflict.revert value)
leave : Resolve a
leave editing value
revert : a -> Resolve a
revert original value
compose : (Model a opts -> model) -> Model a opts -> View model
compose models
type alias Form =
{ name = Conflict.Field String
}
type alias Model =
{ name = Conflict.Single Form {} String
}
name_ = Form.prop .name (\v m -> { m | name = v })
get_name = .name
opts =
{ error = "conflict"
, form = form
, response =
{ first = form.response
, last = http.response
}
}
Conflict.compose Model
( opts |> ( ( name_, get_name ) |> Conflict.single [ form.name |> Validate.blank "blank" ] ) )
compose2 : (Model a opts -> Model b opts -> model) -> Model a opts -> Model b opts -> View model
compose models with 2 args
Conflict.compose2 Model
( opts |> ( ( name_, get_name ) |> Conflict.single [ form.name |> Validate.blank "blank" ] ) )
( opts |> ( ( age_, get_age ) |> Conflict.single [] ) )
compose3 : (Model a opts -> Model b opts -> Model c opts -> model) -> Model a opts -> Model b opts -> Model c opts -> View model
compose models with 3 args
compose4 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> View model
compose models with 4 args
compose5 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> View model
compose models with 5 args
compose6 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> View model
compose models with 6 args
compose7 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> View model
compose models with 7 args
compose8 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> View model
compose models with 8 args
compose9 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> View model
compose models with 9 args
compose10 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> View model
compose models with 10 args
compose11 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> Model k opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> Model k opts -> View model
compose models with 11 args
compose12 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> Model k opts -> Model l opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> Model k opts -> Model l opts -> View model
compose models with 12 args
compose13 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> Model k opts -> Model l opts -> Model m opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> Model k opts -> Model l opts -> Model m opts -> View model
compose models with 13 args
compose14 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> Model k opts -> Model l opts -> Model m opts -> Model n opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> Model k opts -> Model l opts -> Model m opts -> Model n opts -> View model
compose models with 14 args
compose15 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> Model k opts -> Model l opts -> Model m opts -> Model n opts -> Model o opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> Model k opts -> Model l opts -> Model m opts -> Model n opts -> Model o opts -> View model
compose models with 15 args
compose16 : (Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> Model k opts -> Model l opts -> Model m opts -> Model n opts -> Model o opts -> Model p opts -> model) -> Model a opts -> Model b opts -> Model c opts -> Model d opts -> Model e opts -> Model f opts -> Model g opts -> Model h opts -> Model i opts -> Model j opts -> Model k opts -> Model l opts -> Model m opts -> Model n opts -> Model o opts -> Model p opts -> View model
compose models with 16 args