[Ur] Forms that call rpc instead of redirect
Ziv Scully
zivscully at gmail.com
Sun Feb 11 21:45:10 EST 2018
You seem to have the right idea: you can indeed implement your own library
of "rpc forms". Try filling in this signature (that is, .urs file):
con rpcForm : {Type} -> Type
val create : fields ::: {Type} -> $fields -> transaction (rpcForm fields)
val textbox :
others ::: {Type} -> nm :: Name -> [[nm] ~ others] =>
rpcForm ([nm = string] ++ others) -> xbody
val submit :
fields ::: {Type} -> result ::: Type ->
rpcForm fields -> ($fields -> transaction result) -> transaction result
Here's an example usage:
val handle : {Name : string, FavColor : string} -> transaction unit =
(* something with rpc... *)
val formExample : transaction page =
fm <- create {Nm = "", FavColor = ""};
return <xml>
Your name: {textbox [Nm] fm}<br/>
Your favorite color: {textbox [FavColor] fm}<br/>
<button onclick={fn _ => submit fm handle}>Submit</button>
</xml>
And here's a start to the implementation (that is, .ur file):
con rpcForm fields =
$(map (fn t => {Source : source t, Default : t}) fields)
Once you have this working, you probably want to implement analogues of
textbox for other types. To be clear, I just came up with this off the top
of my head, so you will probably have to change some things.
Good luck!
Ziv
On Sun, Feb 11, 2018 at 7:24 PM, Aistis Raulinaitis <sheganinans at gmail.com>
wrote:
> Well I'm hoping to be able find some kind of happy middle between spurious
> reloads and verbosity of form definition.
>
> I'm fine with implementing a few abstractions myself, I'm just not sure
> what the correct direction is.
>
> Your widget system based on ML modules and functors is very interesting
> I'm just wondering how it would be possible to achieve what I'm attempting
> to do with as little friction as possible.
>
> On Feb 11, 2018 16:16, "Adam Chlipala" <adamc at csail.mit.edu> wrote:
>
>> Maybe just stop worrying about it, so that you might find that problems
>> don't arise in practice? >:)
>>
>> On 02/11/2018 07:13 PM, Aistis Raulinaitis wrote:
>>
>> Any pointers to get me started on the right path when it comes to a more
>> effective usage of source based forms?
>>
>> On Feb 11, 2018 16:09, "Adam Chlipala" <adamc at csail.mit.edu> wrote:
>>
>>> I'm not sure what to suggest. No, there is no existing feature like
>>> what you suggest. I have found it quite pleasant to work with sources and
>>> widgets connected to them.
>>>
>>> On 02/11/2018 05:03 PM, Aistis Raulinaitis wrote:
>>>
>>> The way that a form will pack all of its contents into a stuct is a
>>> clear advantage over the source based route. It requires defining possibly
>>> many sources and wiring them all into the right slots, having to call "get"
>>> on each one of them in the onclick handler and then wire all the gotten
>>> values into the handler.
>>>
>>>
>>
>> _______________________________________________
>> Ur mailing list
>> Ur at impredicative.com
>> http://www.impredicative.com/cgi-bin/mailman/listinfo/ur
>>
>>
> _______________________________________________
> Ur mailing list
> Ur at impredicative.com
> http://www.impredicative.com/cgi-bin/mailman/listinfo/ur
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.impredicative.com/pipermail/ur/attachments/20180211/53d7a371/attachment-0001.html>
More information about the Ur
mailing list