diff options
| author | jpl | 2017-05-16 16:22:18 +0200 | 
|---|---|---|
| committer | jpl | 2017-05-16 16:22:25 +0200 | 
| commit | 1ad1dacf55de155826378b5f09a3d1132c8f485c (patch) | |
| tree | 535cb1764c2f6a9777fc9a40970cf33e51847b4e | |
| parent | a13407895e44a0ccf2d485103d26fdcb3e38e478 (diff) | |
| download | chouette-core-1ad1dacf55de155826378b5f09a3d1132c8f485c.tar.bz2 | |
Refs #3377: updating maps layout on routes#show
| -rw-r--r-- | app/assets/javascripts/es6_browserified/itineraries/show.js | 15 | ||||
| -rw-r--r-- | app/assets/stylesheets/OpenLayers/custom.sass | 63 | ||||
| -rw-r--r-- | app/assets/stylesheets/OpenLayers/ol.css | 227 | ||||
| -rw-r--r-- | app/assets/stylesheets/application.sass | 2 | ||||
| -rw-r--r-- | app/assets/stylesheets/base.sass | 3 | ||||
| -rw-r--r-- | app/assets/stylesheets/components/_olMap.sass | 27 | ||||
| -rw-r--r-- | app/views/routes/show.html.slim | 6 | 
7 files changed, 304 insertions, 39 deletions
| diff --git a/app/assets/javascripts/es6_browserified/itineraries/show.js b/app/assets/javascripts/es6_browserified/itineraries/show.js index ca6606ef1..79a11701f 100644 --- a/app/assets/javascripts/es6_browserified/itineraries/show.js +++ b/app/assets/javascripts/es6_browserified/itineraries/show.js @@ -27,20 +27,20 @@ var edgeStyles = new ol.style.Style({    image: new ol.style.Circle(({      radius: 5,      stroke: new ol.style.Stroke({ -      color: '#ff0000', +      color: '#007fbb',        width: 2      }),      fill: new ol.style.Fill({ -      color: '#ffffff', +      color: '#007fbb',        width: 2      })    }))  })  var defaultStyles = new ol.style.Style({    image: new ol.style.Circle(({ -    radius: 5, +    radius: 4,      stroke: new ol.style.Stroke({ -      color: '#004d87', +      color: '#007fbb',        width: 2      }),      fill: new ol.style.Fill({ @@ -51,8 +51,8 @@ var defaultStyles = new ol.style.Style({  })  var lineStyle = new ol.style.Style({    stroke: new ol.style.Stroke({ -      color: '#0000ff', -      width: 4 +      color: '#007fbb', +      width: 3    })  }) @@ -94,7 +94,6 @@ var map = new ol.Map({    }),    view: new ol.View({      center: ol.proj.fromLonLat([parseFloat(route[0].longitude), parseFloat(route[0].latitude)]), -    zoom: 10 +    zoom: 13    })  }); - diff --git a/app/assets/stylesheets/OpenLayers/custom.sass b/app/assets/stylesheets/OpenLayers/custom.sass index a13f6c831..7a5b4baf1 100644 --- a/app/assets/stylesheets/OpenLayers/custom.sass +++ b/app/assets/stylesheets/OpenLayers/custom.sass @@ -1,5 +1,64 @@  .map -  // ... -    .list-group-item &      margin-top: 15px + + +  .ol-scale-line +    background-color: transparent +    bottom: 5px +    right: 5px +    left: auto +    padding: 3px +    position: absolute + +    .ol-scale-line-inner +      position: relative +      border: none +      border-bottom: 2px solid $darkblue +      border-top: none +      color: $darkblue +      font-size: 0.85em +      text-align: center +      font-weight: 700 + +      &:before +        content: '' +        display: block +        position: absolute +        left: 0 +        bottom: 0 +        right: 0 +        height: 5px +        border-left: 2px solid $darkblue +        border-right: 2px solid $darkblue + +  .ol-zoom +    background-color: transparent + +    .ol-zoom-in, .ol-zoom-out +      background-color: $darkblue +      color: #fff +      border-radius: 3px +      margin: 0 + +    .ol-zoom-in +      border-bottom-left-radius: 0 +      border-bottom-right-radius: 0 + +    .ol-zoom-out +      margin-top: 1px +      border-top-left-radius: 0 +      border-top-right-radius: 0 + +  .ol-zoomslider +    margin: 2px +    width: calc(1.375em + 4px) +    background-color: rgba($darkblue, 0.25) + +    button.ol-zoomslider-thumb +      margin: 0 -2px 0 -2px +      padding: 0 2px +      background-color: $darkblue +      color: #fff +      border-radius: 0 +      z-index: 5 diff --git a/app/assets/stylesheets/OpenLayers/ol.css b/app/assets/stylesheets/OpenLayers/ol.css index ea50e7ebe..02c19f3af 100644 --- a/app/assets/stylesheets/OpenLayers/ol.css +++ b/app/assets/stylesheets/OpenLayers/ol.css @@ -1 +1,226 @@ -.ol-control,.ol-scale-line{position:absolute;padding:2px}.ol-box{box-sizing:border-box;border-radius:2px;border:2px solid #00f}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:rgba(0,60,136,.3);border-radius:4px;bottom:8px;left:8px}.ol-scale-line-inner{border:1px solid #eee;border-top:none;color:#eee;font-size:10px;text-align:center;margin:1px;will-change:contents,width}.ol-overlay-container{will-change:left,right,top,bottom}.ol-unsupported{display:none}.ol-viewport .ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-control{background-color:rgba(255,255,255,.4);border-radius:4px}.ol-control:hover{background-color:rgba(255,255,255,.6)}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}@media print{.ol-control{display:none}}.ol-control button{display:block;margin:1px;padding:0;color:#fff;font-size:1.14em;font-weight:700;text-decoration:none;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:rgba(0,60,136,.5);border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;font-size:1.2em;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:focus,.ol-control button:hover{text-decoration:none;background-color:rgba(0,60,136,.7)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em)}.ol-attribution ul{margin:0;padding:0 .5em;font-size:.7rem;line-height:1.375em;color:#000;text-shadow:0 0 2px #fff}.ol-attribution li{display:inline;list-style:none;line-height:inherit}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button,.ol-attribution ul{display:inline-block}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution.ol-logo-only ul{display:block}.ol-attribution:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0;height:1.1em;line-height:1em}.ol-attribution.ol-logo-only{background:0 0;bottom:.4em;height:1.1em;line-height:1em}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-logo-only button,.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:inline-block}.ol-overviewmap .ol-overviewmap-map{border:1px solid #7b98bc;height:150px;margin:2px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:1px;left:2px;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-overviewmap-box{border:2px dotted rgba(0,60,136,.7)}
\ No newline at end of file +.ol-control,.ol-scale-line { +  position:absolute; +  padding:2px +} +.ol-box { +  box-sizing:border-box; +  border-radius:2px; +  border:2px solid #00f +} +.ol-mouse-position { +  top:8px; +  right:8px; +  position:absolute +} +.ol-scale-line { +  background:rgba(0,60,136,.3); +  border-radius:4px; +  bottom:8px; +  left:8px +} +.ol-scale-line-inner { +  border:1px solid #eee; +  border-top:none; +  color:#eee; +  font-size:10px; +  text-align:center; +  margin:1px; +  will-change:contents,width +} +.ol-overlay-container { +  will-change:left,right,top,bottom +} +.ol-unsupported { +  display:none +} +.ol-viewport .ol-unselectable { +  -webkit-touch-callout:none; +  -webkit-user-select:none; +  -khtml-user-select:none; +  -moz-user-select:none; +  -ms-user-select:none; +  user-select:none; +  -webkit-tap-highlight-color:transparent +} +.ol-control { +  background-color:rgba(255,255,255,.4); +  border-radius:4px +} +.ol-control:hover { +  background-color:rgba(255,255,255,.6) +} +.ol-zoom { +  top:.5em; +  left:.5em +} +.ol-rotate{ +  top:.5em; +  right:.5em; +  transition:opacity .25s linear,visibility 0s linear +} +.ol-rotate.ol-hidden { +  opacity:0; +  visibility:hidden; +  transition:opacity .25s linear,visibility 0s linear .25s +} +.ol-zoom-extent { +  top:4.643em; +  left:.5em +} +.ol-full-screen { +  right:.5em; +  top:.5em +} +@media print{ +  .ol-control{ +    display:none +  } +} +.ol-control button { +  display:block; +  margin:1px; +  padding:0; +  color:#fff; +  font-size:1.14em; +  font-weight:700; +  text-decoration:none; +  text-align:center; +  height:1.375em; +  width:1.375em; +  line-height:.4em; +  background-color:rgba(0,60,136,.5); +  border:none; +  border-radius:2px +} +.ol-control button::-moz-focus-inner { +  border:none; +  padding:0 +} +.ol-zoom-extent button { +  line-height:1.4em +} +.ol-compass { +  display:block; +  font-weight:400; +  font-size:1.2em; +  will-change:transform +} +.ol-touch .ol-control button { +  font-size:1.5em +} +.ol-touch .ol-zoom-extent { +  top:5.5em +} +.ol-control button:focus,.ol-control button:hover { +  text-decoration:none; +  background-color:rgba(0,60,136,.7) +} +.ol-zoom .ol-zoom-in { +  border-radius:2px 2px 0 0 +} +.ol-zoom .ol-zoom-out { +  border-radius:0 0 2px 2px +} +.ol-attribution { +  text-align:right; +  bottom:.5em; +  right:.5em; +  max-width:calc(100% - 1.3em) +} +.ol-attribution ul { +  margin:0; +  padding:0 .5em; +  font-size:.7rem; +  line-height:1.375em; +  color:#000; +  text-shadow:0 0 2px #fff +} +.ol-attribution li { +  display:inline; +  list-style:none; +  line-height:inherit +} +.ol-attribution li:not(:last-child):after { +  content:" " +} +.ol-attribution img { +  max-height:2em; +  max-width:inherit; +  vertical-align:middle +} +.ol-attribution button,.ol-attribution ul { +  display:inline-block +} +.ol-attribution.ol-collapsed ul { +  display:none +} +.ol-attribution.ol-logo-only ul { +  display:block +} +.ol-attribution:not(.ol-collapsed) { +  background:rgba(255,255,255,.8) +} +.ol-attribution.ol-uncollapsible { +  bottom:0; +  right:0; +  border-radius:4px 0 0; +  height:1.1em; +  line-height:1em +} +.ol-attribution.ol-logo-only { +  background:0 0; +  bottom:.4em; +  height:1.1em; +  line-height:1em +} +.ol-attribution.ol-uncollapsible img { +  margin-top:-.2em; +  max-height:1.6em +} +.ol-attribution.ol-logo-only button,.ol-attribution.ol-uncollapsible button { +  display:none +} +.ol-zoomslider { +  top:4.5em; +  left:.5em; +  height:200px +} +.ol-zoomslider button { +  position:relative; +  height:10px +} +.ol-touch .ol-zoomslider { +  top:5.5em +} +.ol-overviewmap { +  left:.5em; +  bottom:.5em +} +.ol-overviewmap.ol-uncollapsible { +  bottom:0; +  left:0; +  border-radius:0 4px 0 0 +} +.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button { +  display:inline-block +} +.ol-overviewmap .ol-overviewmap-map { +  border:1px solid #7b98bc; +  height:150px; +  margin:2px; +  width:150px +} +.ol-overviewmap:not(.ol-collapsed) button { +  bottom:1px; +  left:2px; +  position:absolute +} +.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button { +  display:none +} +.ol-overviewmap:not(.ol-collapsed) { +  background:rgba(255,255,255,.8) +} +.ol-overviewmap-box { +  border:2px dotted rgba(0,60,136,.7) +} diff --git a/app/assets/stylesheets/application.sass b/app/assets/stylesheets/application.sass index 47cccba65..e3f776640 100644 --- a/app/assets/stylesheets/application.sass +++ b/app/assets/stylesheets/application.sass @@ -5,6 +5,8 @@  @import 'base/config'  @import 'base/utilities' +@import 'OpenLayers/custom' +  @import 'typography/fonts'  @import 'typography/sboiv'  @import 'typography/typography' diff --git a/app/assets/stylesheets/base.sass b/app/assets/stylesheets/base.sass index 3035fd64c..83d92076c 100644 --- a/app/assets/stylesheets/base.sass +++ b/app/assets/stylesheets/base.sass @@ -13,3 +13,6 @@  // Select2  @import 'select2'  @import 'select2-bootstrap' + +// OL3 +@import 'OpenLayers/ol' diff --git a/app/assets/stylesheets/components/_olMap.sass b/app/assets/stylesheets/components/_olMap.sass index acbbbeade..9aaad78dc 100644 --- a/app/assets/stylesheets/components/_olMap.sass +++ b/app/assets/stylesheets/components/_olMap.sass @@ -35,30 +35,3 @@  .map    height: 300px    width: 100% - -.ol-scale-line -  // background-color: rgba($blue, 0.5) -  bottom: 5px -  right: 5px -  padding: 3px -  position: absolute - -  .ol-scale-line-inner -    position: relative -    border-bottom: 1px solid $darkgrey -    border-top: none -    color: $blue -    font-size: 0.85em -    text-align: center -    font-weight: 700 - -    &:before -      content: '' -      display: block -      position: absolute -      left: 0 -      bottom: 0 -      right: 0 -      height: 5px -      border-left: 1px solid $darkgrey -      border-right: 1px solid $darkgrey diff --git a/app/views/routes/show.html.slim b/app/views/routes/show.html.slim index d779a8648..12a2708ac 100644 --- a/app/views/routes/show.html.slim +++ b/app/views/routes/show.html.slim @@ -30,10 +30,13 @@              @route.human_attribute_name(:wayback) => (@route.wayback ? @route.wayback_text : '-' ),              @route.human_attribute_name(:opposite_route) => (@route.opposite_route ? @route.opposite_route.name : '-') } +      - if @route_sp.any? +        .col-lg-6.col-md-6.col-sm-12.col-xs-12 +          #route_map.map.mb-lg +            .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)}, @@ -49,6 +52,7 @@          - 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' | 
