New webapps.calculator demo

db4
Slava Pestov 2008-09-23 03:35:09 -05:00
parent 47a74f0545
commit 88c59b1639
2 changed files with 72 additions and 0 deletions

View File

@ -0,0 +1,44 @@
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: furnace.actions furnace.redirection
http.server.dispatchers html.forms validators urls accessors
math ;
IN: webapps.calculator
TUPLE: calculator < dispatcher ;
: <calculator-action> ( -- action )
<page-action>
[
{ { "z" [ [ v-number ] v-optional ] } } validate-params
] >>init
{ calculator "calculator" } >>template
[
{
{ "x" [ v-number ] }
{ "y" [ v-number ] }
} validate-params
URL" $calculator" "x" value "y" value + "z" set-query-param
<redirect>
] >>submit ;
: <calculator> ( -- responder )
calculator new-dispatcher
<calculator-action> >>default ;
! Deployment example
USING: db.sqlite furnace.alloy namespaces http.server ;
: calculator-db ( -- params db ) "calculator.db" sqlite-db ;
: run-calculator ( -- )
<calculator>
calculator-db <alloy>
main-responder set-global
8080 httpd ;
MAIN: run-calculator

View File

@ -0,0 +1,28 @@
<?xml version='1.0' ?>
<t:chloe xmlns:t="http://factorcode.org/chloe/1.0">
<head> <title>Calculator</title> </head>
<body>
<h1>Calculator</h1>
<t:form t:action="$calculator">
<table>
<tr><td>First value:</td><td> <t:field t:name="x" /> </td></tr>
<tr><td>Second value:</td><td> <t:field t:name="y" /> </td></tr>
</table>
<input type="SUBMIT" value="Compute" />
<t:if t:value="z">
<br/>
Result: <t:label t:name="z" />
</t:if>
</t:form>
</body>
</t:chloe>