Web developers make heavy use of CSS style sheets to control the look
and feel of web pages. Templates can utilize style sheets as any other
standard HTML code. Here is a very simple example where we introduce
a class name
for the HTML table's column with the field name and set the
foreground color of the text in this column to blue.
The style sheet is called basic.css
and must reside in the
static
subdirectory of the Flask application directory:
td.name { color: blue; }
The
Just run
Scientific applications frequently have many input data that are
defined through mathematics and where the typesetting on the
web page should be as close as possible to the typesetting where
the mathematics is documented. In the present example we would like
to typeset \( A \), \( b \), \( w \), and \( T \) with italic font as done
in LaTeX. Fortunately, native LaTeX typesetting is available in
HTML through the tool MathJax.
Our template
Figure 10 displays how the
LaTeX rendering looks like in the browser.
Now we want to place the plot to the right of the input forms in
the web page, see Figure 11. This can
be accomplished by having an outer table with two rows. The first
row contains the table with the input forms in the first column and
the plot in the second column, while the second row features the
Compute button in the first column.
The enabling template file is
view2.html
file using this style sheet features a link
tag
to the style sheet in the HTML header, and the column containing
the field name has
the HTML tag to trigger the specification in
the style sheet:
<html>
<head>
<link rel="stylesheet" href="static/basic.css" type="text/css">
</head>
<body>
<form method=post action="">
<table>
{% for field in form %}
<tr>
<td class="name">{{ field.name }}</td>
<td>{{ field(size=12) }}</td>
<td>{{ field.label }}</td>
python controller.py view2
to see that the names
of the variables to set in the web page are blue.
Using LaTeX mathematics
view3.html
enables MathJax. Formulas are written
with standard LaTeX inside \(
and \)
, while equations are surrounded
by $$
. Here we use formulas only:
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
TeX: {
equationNumbers: { autoNumber: "AMS" },
extensions: ["AMSmath.js", "AMSsymbols.js", "autobold.js"]
}
});
</script>
<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
This web page visualizes the function \(
u(t) = Ae^{-bt}\sin (w t), \hbox{ for } t\in [0,T]
\).
<form method=post action="">
<table>
{% for field in form %}
<tr>
<td>\( {{ field.name }} \)</td><td>{{ field(size=12) }}</td>
<td>{{ field.label }}</td>
Rearringing the elements in the HTML template
view4.html
:
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
TeX: {
equationNumbers: { autoNumber: "AMS" },
extensions: ["AMSmath.js", "AMSsymbols.js", "autobold.js"]
}
});
</script>
<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
This web page visualizes the function \(
u(t) = Ae^{-bt}\sin (w t), \hbox{ for } t\in [0,T]
\).
<form method=post action="">
<table> <!-- table with forms to the left and plot to the right -->
<tr><td>
<table>
{% for field in form %}
<tr>
<td>\( {{ field.name }} \)</td><td>{{ field(size=12) }}</td>
<td>{{ field.label }}</td>
{% if field.errors %}
<td><ul class=errors>
{% for error in field.errors %}
<li><font color="red">{{ error }}</font></li>
{% endfor %}</ul></td>
{% endif %}
</tr>
{% endfor %}
</table>
</td>
<td>
<p>
{% if result != None %}
<img src="{{ result }}" width=500>
{% endif %}
</p>
</td></tr>
<tr>
<td><p><input type=submit value=Compute></form></p></td>
</tr>
</table>