diff options
Diffstat (limited to 'demo')
-rw-r--r-- | demo/noisy.ur | 42 | ||||
-rw-r--r-- | demo/noisy.urp | 4 | ||||
-rw-r--r-- | demo/noisy.urs | 1 | ||||
-rw-r--r-- | demo/prose | 4 |
4 files changed, 51 insertions, 0 deletions
diff --git a/demo/noisy.ur b/demo/noisy.ur new file mode 100644 index 00000000..118af737 --- /dev/null +++ b/demo/noisy.ur @@ -0,0 +1,42 @@ +datatype list t = Nil | Cons of t * list t + +table t : { Id : int, A : string } + +fun add id s = + dml (INSERT INTO t (Id, A) VALUES ({[id]}, {[s]})) + +fun del id = + dml (DELETE FROM t WHERE t.Id = {[id]}) + +fun lookup id = + ro <- oneOrNoRows (SELECT t.A FROM t WHERE t.Id = {[id]}); + case ro of + None => return None + | Some r => return (Some r.T.A) + +fun check ls = + case ls of + Nil => return () + | Cons (id, ls') => + ao <- lookup id; + alert (case ao of + None => "Nada" + | Some a => a); + check ls' + +fun main () = + idAdd <- source ""; + aAdd <- source ""; + + idDel <- source ""; + + return <xml><body> + <button value="Check values of 1, 2, and 3" onclick={check (Cons (1, Cons (2, Cons (3, Nil))))}/><br/> + <br/> + <button value="Add" onclick={id <- get idAdd; a <- get aAdd; add (readError id) a}/> + <ctextbox source={idAdd}/> + <ctextbox source={aAdd}/><br/> + <br/> + <button value="Delete" onclick={id <- get idDel; del (readError id)}/> + <ctextbox source={idDel}/> + </body></xml> diff --git a/demo/noisy.urp b/demo/noisy.urp new file mode 100644 index 00000000..ea08bf74 --- /dev/null +++ b/demo/noisy.urp @@ -0,0 +1,4 @@ +database dbname=test +sql noisy.sql + +noisy diff --git a/demo/noisy.urs b/demo/noisy.urs new file mode 100644 index 00000000..6ac44e0b --- /dev/null +++ b/demo/noisy.urs @@ -0,0 +1 @@ +val main : unit -> transaction page @@ -210,6 +210,10 @@ increment.urp <p>Here's an example where client-side code needs to run more code on the server. We maintain a (server-side) SQL sequence. When the user clicks a button, an AJAX request increments the remote sequence and gets the new value.</p> +noisy.urp + +<p>This example shows how easy it is to make the flow of control "ping pong" back and forth between the client and the server. Clicking a button triggers three queries to the server, with an alert generated after each query.</p> + batch.urp <p>This example shows more of what is possible with mixed client/server code. The application is an editor for a simple database table, where additions of new rows can be batched in the client, before a button is clicked to trigger a mass addition.</p> |