New webapps.calculator demo
parent
47a74f0545
commit
88c59b1639
|
@ -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
|
|
@ -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>
|
Loading…
Reference in New Issue