aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert2017-05-16 12:29:24 +0200
committerRobert2017-05-16 12:29:24 +0200
commitcf2e94285df55f2f58549994f770da845b28916a (patch)
tree371bace6047f761849adc2c82860dece67c44799
parent3f034a0ca9709e10431bbcdb60a79b605d9bc4e7 (diff)
parente23c621af8b25dbdacc9e8ff6f2bd3c31bad63b8 (diff)
downloadchouette-core-cf2e94285df55f2f58549994f770da845b28916a.tar.bz2
Merge branch 'master' of github.com:af83/stif-boiv
-rw-r--r--app/assets/javascripts/es6_browserified/itineraries/show.js100
-rw-r--r--app/views/routes/show.html.slim4
2 files changed, 104 insertions, 0 deletions
diff --git a/app/assets/javascripts/es6_browserified/itineraries/show.js b/app/assets/javascripts/es6_browserified/itineraries/show.js
new file mode 100644
index 000000000..ca6606ef1
--- /dev/null
+++ b/app/assets/javascripts/es6_browserified/itineraries/show.js
@@ -0,0 +1,100 @@
+route = JSON.parse(decodeURIComponent(route))
+const geoColPts = []
+const geoColLns= []
+const geoColEdges = [
+ new ol.Feature({
+ geometry: new ol.geom.Point(ol.proj.fromLonLat([parseFloat(route[0].longitude), parseFloat(route[0].latitude)]))
+ }),
+ new ol.Feature({
+ geometry: new ol.geom.Point(ol.proj.fromLonLat([parseFloat(route[route.length - 1].longitude), parseFloat(route[route.length - 1].latitude)]))
+ })
+]
+route.forEach(function(stop, i){
+ if (i < route.length - 1){
+ geoColLns.push(new ol.Feature({
+ geometry: new ol.geom.LineString([
+ ol.proj.fromLonLat([parseFloat(route[i].longitude), parseFloat(route[i].latitude)]),
+ ol.proj.fromLonLat([parseFloat(route[i+1].longitude), parseFloat(route[i+1].latitude)])
+ ])
+ }))
+ }
+ geoColPts.push(new ol.Feature({
+ geometry: new ol.geom.Point(ol.proj.fromLonLat([parseFloat(stop.longitude), parseFloat(stop.latitude)]))
+ })
+ )
+})
+var edgeStyles = new ol.style.Style({
+ image: new ol.style.Circle(({
+ radius: 5,
+ stroke: new ol.style.Stroke({
+ color: '#ff0000',
+ width: 2
+ }),
+ fill: new ol.style.Fill({
+ color: '#ffffff',
+ width: 2
+ })
+ }))
+})
+var defaultStyles = new ol.style.Style({
+ image: new ol.style.Circle(({
+ radius: 5,
+ stroke: new ol.style.Stroke({
+ color: '#004d87',
+ width: 2
+ }),
+ fill: new ol.style.Fill({
+ color: '#ffffff',
+ width: 2
+ })
+ }))
+})
+var lineStyle = new ol.style.Style({
+ stroke: new ol.style.Stroke({
+ color: '#0000ff',
+ width: 4
+ })
+})
+
+var vectorPtsLayer = new ol.layer.Vector({
+ source: new ol.source.Vector({
+ features: geoColPts
+ }),
+ style: defaultStyles,
+ zIndex: 2
+})
+var vectorEdgesLayer = new ol.layer.Vector({
+ source: new ol.source.Vector({
+ features: geoColEdges
+ }),
+ style: edgeStyles,
+ zIndex: 3
+})
+var vectorLnsLayer = new ol.layer.Vector({
+ source: new ol.source.Vector({
+ features: geoColLns
+ }),
+ style: [lineStyle],
+ zIndex: 1
+})
+
+var map = new ol.Map({
+ target: 'route_map',
+ layers: [
+ new ol.layer.Tile({
+ source: new ol.source.OSM()
+ }),
+ vectorPtsLayer,
+ vectorEdgesLayer,
+ vectorLnsLayer
+ ],
+ controls: [ new ol.control.ScaleLine(), new ol.control.Zoom(), new ol.control.ZoomSlider() ],
+ interactions: ol.interaction.defaults({
+ zoom: true
+ }),
+ view: new ol.View({
+ center: ol.proj.fromLonLat([parseFloat(route[0].longitude), parseFloat(route[0].latitude)]),
+ zoom: 10
+ })
+});
+
diff --git a/app/views/routes/show.html.slim b/app/views/routes/show.html.slim
index 7ab628690..d779a8648 100644
--- a/app/views/routes/show.html.slim
+++ b/app/views/routes/show.html.slim
@@ -33,6 +33,7 @@
.row
.col-lg-12
- if @route_sp.any?
+ #route_map.map
= table_builder @route_sp,
{ 'ID Reflex' => Proc.new {|s| s.try(:stop_area).try(:user_objectid)},
:name => Proc.new {|s| s.try(:stop_area).try(:name)},
@@ -48,3 +49,6 @@
- else
= replacement_msg t('stop_areas.search_no_results')
+= javascript_tag do
+ | window.route = "#{URI.escape(route_json_for_edit(@route))}"
+= javascript_include_tag 'es6_browserified/itineraries/show.js'