Skip to content

Commit 1f13ad5

Browse files
author
Martin Journois
committed
Put timestamped_geo_json plugin into a template
1 parent 7ac6525 commit 1f13ad5

File tree

3 files changed

+39
-30
lines changed

3 files changed

+39
-30
lines changed

folium/plugins/plugin.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from uuid import uuid4
1111

1212
from jinja2 import Environment, PackageLoader
13-
ENV = Environment(loader=PackageLoader('folium', 'templates'))
13+
ENV = Environment(loader=PackageLoader('folium', 'plugins'))
1414

1515
class Plugin(object):
1616
"""Basic plugin object that does nothing.

folium/plugins/timestamped_geo_json.py

Lines changed: 7 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ def __init__(self, data, transition_time=200, loop=True, auto_play=True):
7070
"""
7171
super(TimestampedGeoJson, self).__init__()
7272
self.plugin_name = 'TimestampedGeoJson'
73+
self.template = self.env.get_template('timestamped_geo_json.template')
7374
if 'read' in dir(data):
7475
self.data = data.read()
7576
elif type(data) is dict:
@@ -82,34 +83,11 @@ def __init__(self, data, transition_time=200, loop=True, auto_play=True):
8283

8384
def render_header(self, nb):
8485
"""Generates the header part of the plugin."""
85-
return """
86-
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.4/styles/default.min.css">
87-
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
88-
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js"></script>
89-
90-
<!-- iso8601 -->
91-
<script type="text/javascript" src="https://raw.githubusercontent.com/nezasa/iso8601-js-period/master/iso8601.min.js"></script>
92-
93-
<!-- leaflet.timedimension.min.js -->
94-
<script type="text/javascript" src="https://raw.githubusercontent.com/socib/Leaflet.TimeDimension/master/dist/leaflet.timedimension.min.js"></script>
95-
96-
<!-- leaflet.timedimension.control.min.css -->
97-
<link rel="stylesheet" href="http://apps.socib.es/Leaflet.TimeDimension/dist/leaflet.timedimension.control.min.css" />
98-
""" if nb==0 else ""
86+
header = self.template.module.__dict__.get('header',None)
87+
assert header is not None, "This template must have a 'header' macro."
88+
return header(nb)
9989
def render_js(self, nb):
10090
"""Generates the Javascript part of the plugin."""
101-
out = """
102-
map.timeDimension = L.timeDimension();
103-
map.timeDimensionControl = L.control.timeDimension({
104-
position: 'bottomleft',
105-
autoPlay: %s,
106-
playerOptions: {transitionTime: %i,loop: %s}
107-
});
108-
map.addControl(map.timeDimensionControl);
109-
"""%(str(self.auto_play).lower(),self.transition_time,str(self.loop).lower()) if nb==0 else ""
110-
111-
out += """
112-
var tsgeojson_%i = L.timeDimension.layer.geoJson(L.geoJson(%s),
113-
{updateTimeDimension: true,addlastPoint: true}).addTo(map);
114-
""" % (nb, self.data)
115-
return out
91+
js = self.template.module.__dict__.get('js',None)
92+
assert js is not None, "This template must have a 'js' macro."
93+
return js(nb,self)
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
{% macro header(nb) %}
2+
{% if nb==0 %}
3+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.4/styles/default.min.css">
4+
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
5+
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js"></script>
6+
7+
<!-- iso8601 -->
8+
<script type="text/javascript" src="https://raw.githubusercontent.com/nezasa/iso8601-js-period/master/iso8601.min.js"></script>
9+
10+
<!-- leaflet.timedimension.min.js -->
11+
<script type="text/javascript" src="https://raw.githubusercontent.com/socib/Leaflet.TimeDimension/master/dist/leaflet.timedimension.min.js"></script>
12+
13+
<!-- leaflet.timedimension.control.min.css -->
14+
<link rel="stylesheet" href="http://apps.socib.es/Leaflet.TimeDimension/dist/leaflet.timedimension.control.min.css" />
15+
{% endif %}
16+
{% endmacro %}
17+
18+
{% macro js(nb,self) %}
19+
{% if nb==0 %}
20+
map.timeDimension = L.timeDimension();
21+
map.timeDimensionControl = L.control.timeDimension({
22+
position: 'bottomleft',
23+
autoPlay: {{'true' if self.auto_play else 'false'}},
24+
playerOptions: {transitionTime: {{self.transition_time}},loop: {{'true' if self.loop else 'false'}}}
25+
});
26+
map.addControl(map.timeDimensionControl);
27+
{% endif %}
28+
29+
var tsgeojson_{{nb}} = L.timeDimension.layer.geoJson(L.geoJson({{self.data}}),
30+
{updateTimeDimension: true,addlastPoint: true}).addTo(map);
31+
{% endmacro %}

0 commit comments

Comments
 (0)