Blame view

web/view/home.html.jinja2 7.2 KB
9390ec89   Goutte   Initial experimen...
1
2
3
4
5
6
{% extends 'layout.html.jinja2' %}
{% set menu_section = 'home' %}
{% block title %}Home{% endblock %}

{% block content %}

f6ed8d85   Goutte   Rework layout as ...
7
8
9
10
<div class="mdl-layout mdl-js-layout mdl-layout--fixed-drawer">


  <div class="mdl-layout__drawer">
ae0aa7d2   Goutte   Add an x axis lab...
11
    <span class="mdl-layout-title">Planets</span>
f6ed8d85   Goutte   Rework layout as ...
12

c42fea3a   Goutte   Rework the CSS wi...
13
    <section id="orbiters_filters">
a79c5268   Goutte   Add probes and co...
14
15
16
{% for planet in planets %}
      <img title="{{ planet.title }}" src="{{ static('img/planet/'~planet.slug~'_128.png') }}" width="64px" height="64px" alt="{{ planet.name }}" class="{{ 'locked' if planet.locked }}">
{% endfor %}
c42fea3a   Goutte   Rework the CSS wi...
17
    </section>
a79c5268   Goutte   Add probes and co...
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

    <br>
    <hr class="clear">

    <span class="mdl-layout-title">Probes</span>

    <section id="orbiters_filters">
{% for probe in probes %}
      <img title="{{ probe.title }}" src="{{ static('img/probe/'~probe.slug~'_128.png') }}" width="64px" height="64px" alt="{{ probe.name }}" class="{{ 'locked' if probe.locked }}">
{% endfor %}
    </section>

    <br>
    <hr class="clear">

    <span class="mdl-layout-title">Comets</span>

    <section id="orbiters_filters">
{% for comet in comets %}
      <img title="{{ comet.title }}" src="{{ static('img/comet/'~comet.slug~'_128.png') }}" width="64px" height="64px" alt="{{ comet.name }}" class="{{ 'locked' if comet.locked }}">
{% endfor %}
    </section>

b550c2b0   Goutte   Rework the home s...
41
    <br>
c42fea3a   Goutte   Rework the CSS wi...
42
    <hr class="clear">
b550c2b0   Goutte   Rework the home s...
43
44
45
46

    <span class="mdl-layout-title">Parameters</span>

    <nav id="parameters" class="mdl-navigation">
6f9a3852   Goutte   Hide time series ...
47
      <a class="mdl-navigation__link parameter active" data-ts-slug="pdyn" href="">Dynamic Pressure</a>
a79c5268   Goutte   Add probes and co...
48
      <a class="mdl-navigation__link parameter active" data-ts-slug="magn" href="">B Tangential</a>
6f9a3852   Goutte   Hide time series ...
49
      <a class="mdl-navigation__link parameter active" data-ts-slug="vlen" href="">Velocity</a>
a79c5268   Goutte   Add probes and co...
50
51
52
      <a class="mdl-navigation__link parameter active" data-ts-slug="temp" href="">Temperature</a>
      <a class="mdl-navigation__link parameter active" data-ts-slug="dens" href="">Density</a>
      <a class="mdl-navigation__link parameter active" data-ts-slug="angl" href="">Angle Source-Sun-Earth</a>
b550c2b0   Goutte   Rework the home s...
53
54
    </nav>

c42fea3a   Goutte   Rework the CSS wi...
55
  </div>
b550c2b0   Goutte   Rework the home s...
56
57
  <main class="mdl-layout__content">

9390ec89   Goutte   Initial experimen...
58

b550c2b0   Goutte   Rework the home s...
59
60
61
62
63
64
65
66
67
    <div class="mdl-grid">
      <div class="mdl-cell mdl-cell--4-col">
        <section id="orbits"></section>
      </div>
      <div class="mdl-cell mdl-cell--8-col">
        <section id="time_series"></section>
      </div>
    </div>

ae0aa7d2   Goutte   Add an x axis lab...
68
{#    <div class="loader"><div class="hole"></div></div>#}
f6ed8d85   Goutte   Rework layout as ...
69
70
71
72
  </main>
</div>


9390ec89   Goutte   Initial experimen...
73
74
75
76
77
{% endblock %}


{% block styles %}
  <style>
c42fea3a   Goutte   Rework the CSS wi...
78
    html, body {
f6ed8d85   Goutte   Rework layout as ...
79
80
{#      background-color: #322e3f;#}
{#      color: #e3e3e3;#}
c42fea3a   Goutte   Rework the CSS wi...
81
    }
18f38374   Goutte   Crisp edges for a...
82
83
    .axis path, .axis line {
      fill: none;
f6ed8d85   Goutte   Rework layout as ...
84
{#      stroke: #f4f4f4;#}
18f38374   Goutte   Crisp edges for a...
85
86
87
      shape-rendering: crispEdges;
      stroke-width: 1px;
    }
c42fea3a   Goutte   Rework the CSS wi...
88
    svg text {
f6ed8d85   Goutte   Rework layout as ...
89
{#      fill: #f4f4f4;#}
c42fea3a   Goutte   Rework the CSS wi...
90
    }
9390ec89   Goutte   Initial experimen...
91
92
93
94
95
    path.line {
      fill: none;
      stroke: steelblue;
      stroke-width: 1px;
    }
81c9b2e8   Goutte   Add the values to...
96
    circle.cursor-circle {
b550c2b0   Goutte   Rework the home s...
97
98
99
100
101
102
103
104
      fill: black;
      stroke: rgba(20, 20, 20, 0.48);
    }
    text.cursor-text {
{#      font-family: 'Ubuntu', 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', 'Verdana', sans-serif;#}
{#      font-family: 'Consolas', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace;#}
      font-family: "Ubuntu Mono", 'Consolas', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
      text-align: right;
81c9b2e8   Goutte   Add the values to...
105
106
107
    }
    text.cursor-text-shadow {
      stroke: white;
b550c2b0   Goutte   Rework the home s...
108
109
      stroke-width: 5px;
      opacity: 0.777
81c9b2e8   Goutte   Add the values to...
110
    }
c42fea3a   Goutte   Rework the CSS wi...
111
    path.orbit.orbit_section {
2d2af24b   Goutte   Add a basic orbit...
112
113
      fill: none;
      stroke: steelblue;
c42fea3a   Goutte   Rework the CSS wi...
114
115
116
117
118
119
120
121
      stroke-width: 3px;
    }
    ellipse.orbit.orbit_ellipse {
      fill: none;
      stroke: #a3a3a3;
      stroke-width: 1px;
      stroke-dasharray: 5px;
    }
a79c5268   Goutte   Add probes and co...
122
123
124
    #orbiters_filters {
      padding-left: 17px;
    }
c42fea3a   Goutte   Rework the CSS wi...
125
126
127
128
129
130
131
132
133
134
135
136
    #orbiters_filters img {
      float: left;
    }
    #orbiters_filters img.locked {
      -webkit-filter: grayscale(100%);
         -moz-filter: grayscale(100%);
           -o-filter: grayscale(100%);
          -ms-filter: grayscale(100%);
              filter: grayscale(100%);
    }

    #orbits {
f6ed8d85   Goutte   Rework layout as ...
137
138
139
{#      background-image: url('{{ static('img/orbitals_background.png') }}');#}
{#      background-repeat: repeat;#}
{#      background-size: 42%;#}
2d2af24b   Goutte   Add a basic orbit...
140
    }
6f9a3852   Goutte   Hide time series ...
141
142
143
144
145
146
147

    #parameters .parameter {
      outline: 0;
    }
    #parameters .parameter.active {
      background-color: #c8d3e1;
    }
9390ec89   Goutte   Initial experimen...
148
149
150
151
152
  </style>
{% endblock %}


{% block scripts_footer %}
84cb553d   Goutte   Move to material ...
153
<script type="application/javascript" src="{{ static('js/vendor/d3.min.js') }}"></script>
438929a4   Goutte   Rewrite the orbit...
154
<script type="application/javascript" src="{{ static('js/swapp.js') }}"></script>
9390ec89   Goutte   Initial experimen...
155
156
<script type="application/javascript">

ae0aa7d2   Goutte   Add an x axis lab...
157
158
159
160
161
162
163
164
165
166
167
168
169
var configuration = {
  time_series_container: '#time_series',
  orbits_container: '#orbits',
  sources : {
    jupiter: {
      slug: 'jupiter',
      name: 'Jupiter',
      active: true,
      minDate: '1990-01-01T01:30:00',
      maxDate: '2017-02-19T00:00:00',
      orbit: { a: 5.45516759, b: 4.95155843 },
      img: '{{ static('img/planet/jupiter_128.png') }}'
    }
aba70d3a   Goutte   Refactor time ser...
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
  },
  parameters : [
    {
      id: 'pdyn',
      title: "Dynamic Pressure (nPa)"
    },
    {
      id: 'magn',
      title: "Magnetism (nT)"
    },
    {
      id: 'vlen',
      title: "Velocity (km/s)"
    },
    {
      id: 'temp',
      title: "Temperature (K)"
    },
    {
      id: 'dens',
      title: "Density N (cm⁻³)"
    },
    {
      id: 'angl',
      title: "Angle S-S-E (deg)"
    }
  ]
438929a4   Goutte   Rewrite the orbit...
197
};
9390ec89   Goutte   Initial experimen...
198
199

jQuery().ready(function($){
438929a4   Goutte   Rewrite the orbit...
200
201
202
  var timeSeries = [];
  var orbits;

ae0aa7d2   Goutte   Add an x axis lab...
203
204
  var sw = new SpaceWeather(configuration);

8644387c   Goutte   Use real data.
205
  d3.csv('{{ url_for('get_orbiter_csv', orbiter='jupiter', started_at='2016-03-19T00:00:00', stopped_at='2022-01-01T00:00:00') }}', function(csv){
9390ec89   Goutte   Initial experimen...
206
    var timeFormat = d3.timeParse('%Y-%m-%dT%H:%M:%S%Z');
8644387c   Goutte   Use real data.
207
    var data = {'pdyn': [], 'magn': [], 'vlen': [], 'temp': [], 'dens': [], 'angl': [], 'hci': []};
9390ec89   Goutte   Initial experimen...
208
    csv.forEach(function (d) {
8644387c   Goutte   Use real data.
209
      var dtime = timeFormat(d['time']);
aba70d3a   Goutte   Refactor time ser...
210
211
212
213
      configuration['parameters'].forEach(function(parameter){
        var id = parameter['id'];
        data[id].push({x: dtime, y: parseFloat(d[id])});
      });
8644387c   Goutte   Use real data.
214
215
216
      if (d['xhci'] && d['yhci']) {
        data['hci'].push({t: dtime, x: parseFloat(d['xhci']), y: parseFloat(d['yhci'])});
      }
9390ec89   Goutte   Initial experimen...
217
    });
438929a4   Goutte   Rewrite the orbit...
218

6f9a3852   Goutte   Hide time series ...
219
    var container = '#time_series';
aba70d3a   Goutte   Refactor time ser...
220
221
222
223
224
225
226
227

    configuration['parameters'].forEach(function(parameter){
      var id = parameter['id'];
      var title = parameter['title'];
      timeSeries.push(new TimeSeries(
          id, title, data[id], container
      ));
    });
28ef3790   Goutte   Clean up.
228
    // move outside (after promises)
b550c2b0   Goutte   Rework the home s...
229
230
231
232
233
234
235
236
237
    timeSeries.forEach(function(ts){
      ts.options['onMouseOver'] = function() {
        timeSeries.forEach(function(ts2){ ts2.showCursor(); });
      };
      ts.options['onMouseOut'] = function() {
        timeSeries.forEach(function(ts2){ ts2.hideCursor(); });
      };
      ts.options['onMouseMove'] = function(t) {
        timeSeries.forEach(function(ts2){ ts2.moveCursor(t); });
ebf98c26   Goutte   Update orbiters' ...
238
        if (orbits != null) orbits.moveToDate(t);
b550c2b0   Goutte   Rework the home s...
239
240
241
      };
    });

438929a4   Goutte   Rewrite the orbit...
242

8644387c   Goutte   Use real data.
243
    orbits = new Orbits(configuration.sources, data['hci'], configuration.orbits_container);
438929a4   Goutte   Rewrite the orbit...
244

438929a4   Goutte   Rewrite the orbit...
245
246
  });

6f9a3852   Goutte   Hide time series ...
247
248
249
250
251
252
253
254
255
256
  var toggleTimeSeries = function(slug) {
    $('#time_series .'+slug).toggleClass('hidden');
  };

  $("#parameters .parameter").click(function(e){
    $(this).toggleClass('active');
    toggleTimeSeries($(this).attr('data-ts-slug'));
    return false;
  });

438929a4   Goutte   Rewrite the orbit...
257
258
  window.addEventListener('resize', function() {
    timeSeries.forEach(function(ts){ ts.resize(); });
ce9ff7e8   Goutte   Fix bug.
259
    if (orbits) orbits.resize();
2d2af24b   Goutte   Add a basic orbit...
260
261
  });

9390ec89   Goutte   Initial experimen...
262
263
264
265
});
</script>

{% endblock %}