*Project* The Anubis Project
*Title* A Web Calculator
*Copyright* Copyright (c) Alain Prouté 2005.
*Author* Alain Prouté
read tools/basis.anubis
read html.anubis
read common.anubis
public define Printable_tree
script_calculatrice =
[
""
].
public type Calc_Button:
calc_button
(
String name,
String value,
String on_click
).
define List(Calc_Button)
ligne_1 =
[
calc_button("7", "c7", "tape(this.value)"),
calc_button("8", "c8", "tape(this.value)"),
calc_button("9", "c9", "tape(this.value)"),
calc_button("+", "cplus", "tape(this.value)"),
calc_button("AC", "ac", "this.form.ecran.value=''")
].
define List(Calc_Button)
ligne_2 =
[
calc_button("4", "c4", "tape(this.value)"),
calc_button("5", "c5", "tape(this.value)"),
calc_button("6", "c6", "tape(this.value)"),
calc_button("-", "cmoins", "tape(this.value)"),
calc_button("x", "cx", "carre()"),
].
define List(Calc_Button)
ligne_3 =
[
calc_button("1", "c1", "tape(this.value)"),
calc_button("2", "c2", "tape(this.value)"),
calc_button("3", "c3", "tape(this.value)"),
calc_button("/", "cslash", "tape(this.value)"),
calc_button("Pi", "c3.141592", "pi()"), //tape(this.value)
].
define List(Calc_Button)
ligne_4 =
[
calc_button("0", "c0", "tape(this.value)"),
calc_button(".", "cpoint", "tape(this.value)"),
calc_button("=", "cegal", "egal()"),
calc_button("x", "cfois", "multiplie()"),
calc_button("1/x", "c1/x", "inverse()"),
].
define List(List(Calc_Button))
all_calc_buttons = [ligne_1, ligne_2, ligne_3, ligne_4].
define List(Cell)
cell_calc
(
List(Calc_Button) lcb
) =
if lcb is
{
[] then (List(Cell)) [],
[h . t] then
[
cell([h_center], button(value(h), name(h), on_click(h), 25, 25))
. cell_calc(t)
]
}.
define List(Table_row)
calculatrice
(
List(List(Calc_Button)) l
) =
if l is
{
[] then (List(Table_row)) [],
[h . t] then
[
row([], cell_calc(h))
. calculatrice(t)
]
}.
public define Web_item
calculatrice =
form_name("calculatrice",
table([border(1,1,1)],
[
row([],
[
cell([h_center], text_input("ecran", 20, ""))
]),
row([],
[
cell([absolute_height(15), h_center],
bold(text("Calculatrice")))
]),
row([],
[
cell([h_center],
table([], calculatrice(all_calc_buttons)))
])
])).
public define Web_page
calculatrice
(
List(Web_arg) lwa
) =
web_page
(
"Calculatrice",
(List(WebMeta)) [],
script_calculatrice,
body
(
[],
center(calculatrice)
)).
web page Bool
calculatrice
(
List(Web_arg) lwa
) =
print(calculatrice(lwa)).