Blame view

flaskr/templates/estimate.html 4.61 KB
c1421d65   Goutte   Add the `estimate...
1
2
{% extends "base.html" %}

fef4a9fd   Goutte   Rework the templa...
3
4
5

{% block title %}Request an estimation of your travel footprint{% endblock %}

c1421d65   Goutte   Add the `estimate...
6
7

{% block hero %}
fef4a9fd   Goutte   Rework the templa...
8
9
10
11
<div class="jumbotron">
    <h1>{{ content.estimate.hero.title | safe }}</h1>
    <p>{{ content.estimate.hero.description | markdown | safe }}</p>
</div>
c1421d65   Goutte   Add the `estimate...
12
13
{% endblock %}

fef4a9fd   Goutte   Rework the templa...
14

c1421d65   Goutte   Add the `estimate...
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{% macro render_field(field) %}
<dt>
    {{ field.label }}
    {% if not field.flags.optional %}
    <span class="required-asterisk" title="This field is required.">*</span>
    {% endif %}
</dt>
<dd>
    {{ field(title=field.description, class_="form-control", **kwargs) | safe }}
    {% if field.errors -%}
    <ul class=errors>
    {% for error in field.errors %}
        <li>{{ error }}</li>
    {% endfor %}
    </ul>
    {%- endif %}
</dd>
{% endmacro %}

c1421d65   Goutte   Add the `estimate...
34

fef4a9fd   Goutte   Rework the templa...
35
36
37
38
39
40
41
{% macro render_checkbox(field) %}
{{ field(class="form-check-input") }}
{{ field.label(
    class="form-check-label",
    title=field.description
) }}
{% endmacro %}
c1421d65   Goutte   Add the `estimate...
42

fef4a9fd   Goutte   Rework the templa...
43
44
45
46
47
48
49
50

{% block body %}
<div class="row">
    <div class="col-md-2"></div>
    <div class="col-md-8">
        <form role="form" action="{{ url_for('.estimate') }}" method="post">
            {{ form.hidden_tag() }}

f47a875d   Antoine Goutenoir   Remove the email ...
51
52
53
54
{#            <div class="form-group">#}
{#                {{ render_field(form.email) }}#}
{#                <small class="form-text text-muted">We will never share your email with anyone.</small>#}
{#            </div>#}
fef4a9fd   Goutte   Rework the templa...
55
56
57
            <div class="form-group row">
                <div class="col-md-6">
                {{ render_field(form.first_name) }}
461850db   Antoine Goutenoir   Yet another joyfu...
58
                <small class="form-text text-muted">Fill these to say hello.</small>
c1421d65   Goutte   Add the `estimate...
59
                </div>
fef4a9fd   Goutte   Rework the templa...
60
61
                <div class="col-md-6">
                {{ render_field(form.last_name) }}
0b094aac   Antoine Goutenoir   Not satisfied by ...
62
                <small class="form-text text-muted">We will never share your data with anyone.</small>
c1421d65   Goutte   Add the `estimate...
63
                </div>
fef4a9fd   Goutte   Rework the templa...
64
65
66
67
68
69
            </div>
            <div class="form-group">
                {{ render_field(form.institution) }}
            </div>
            <div class="form-group">
                {{ render_field(form.origin_addresses) }}
109b0d46   Antoine Goutenoir   Add more informat...
70
71
72
73
74
                <small class="form-text text-muted">
                    Use <code>en_US</code> city and country names, without diacritics. The comma matters.
                    <br>
                    These usually are the addresses of your participants.
                </small>
fef4a9fd   Goutte   Rework the templa...
75
76
77
            </div>
            <div class="form-group">
                {{ render_field(form.destination_addresses) }}
109b0d46   Antoine Goutenoir   Add more informat...
78
79
80
81
82
                <small class="form-text text-muted">
                    Provide multiple destinations to compare them.
                    <br>
                    These usually are the possible locations for an event.
                </small>
fef4a9fd   Goutte   Rework the templa...
83
            </div>
b9fc86c3   Antoine Goutenoir   Secure the admin ...
84
85
86
{#            <div class="form-check form-group">#}
{#                {{ render_checkbox(form.compute_optimal_destination) }}#}
{#            </div>#}
7f7c6b10   Antoine Goutenoir   Disable RFI in th...
87
88
89
90
{#            <div class="form-check form-group">#}
{#                {{ render_checkbox(form.use_atmosfair_rfi) }}#}
{#                <small class="form-text text-muted">Disabled. Work in Progress. RFI=1.9</small>#}
{#            </div>#}
fef4a9fd   Goutte   Rework the templa...
91
92
93
            <div class="form-group">
                {{ render_field(form.comment) }}
            </div>
c1421d65   Goutte   Add the `estimate...
94

fef4a9fd   Goutte   Rework the templa...
95
96
97
98
            <button type="submit" class="btn btn-primary">
                Submit a Request
            </button>
        </form>
c1421d65   Goutte   Add the `estimate...
99
    </div>
fef4a9fd   Goutte   Rework the templa...
100
101
    <div class="col-md-2"></div>
</div>
c1421d65   Goutte   Add the `estimate...
102
{% endblock %}
d79d2488   Antoine Goutenoir   Work around iPad'...
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149

{% block js %}
<script type="text/javascript">

// Multiline placeholders for textarea shim (eg: iPad)
// https://github.com/EmilMoe/multiline-placeholder
$(function() {
  var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;

  // Disable for chrome which already supports multiline
  if (! ((!!window.chrome) && !isOpera)) {
    var style = $('<style>textarea[data-placeholder].active { color: #666; }</style>')
    $('html > head').append(style);

    $('textarea[placeholder]').each(function(index) {
      var text  = $(this).attr('placeholder');
      var match = /\r|\n/.exec(text);

      if (! match)
        return;

      $(this).attr('placeholder', '');
      $(this).attr('data-placeholder', text);
      $(this).addClass('active');
      $(this).val(text);
    });

    $('textarea[data-placeholder]').on('focus', function() {
      if ($(this).attr('data-placeholder') === $(this).val()) {
        $(this).attr('data-placeholder', $(this).val());
        $(this).val('');
        $(this).removeClass('active');
      }
    });

    $('textarea[data-placeholder]').on('blur', function() {
      if ($(this).val() === '') {
        var text = $(this).attr('data-placeholder');
        $(this).val(text);
        $(this).addClass('active');
      }
    });
  }
});

</script>
{% endblock %}