diff options
| -rw-r--r-- | chimere/static/chimere/js/jquery.chimere.js | 66 | 
1 files changed, 31 insertions, 35 deletions
| diff --git a/chimere/static/chimere/js/jquery.chimere.js b/chimere/static/chimere/js/jquery.chimere.js index a8e4df8..1e6daf0 100644 --- a/chimere/static/chimere/js/jquery.chimere.js +++ b/chimere/static/chimere/js/jquery.chimere.js @@ -285,7 +285,8 @@ jQuery.expr[":"].hovering = function(elem) {              icon_step: null,              icon_end: null,              mobile: false, -            input_id: 'id_point' +            input_id: 'id_point', +            animation_duration: 250          };          var settings = {};      /* @@ -556,16 +557,8 @@ jQuery.expr[":"].hovering = function(elem) {              var popup_options = {                  element: settings.popup_item,                  positioning: 'bottom-left', -                stopEvent: false/*, -                autoPan: true, -                autoPanAnimation: { -                  duration: 250 -                }*/ +                stopEvent: false              } -            /*if (settings.popupContentFull){ -                popup_options['autoPan'] = true; -                popup_options['autoPanAnimation'] = 250; -            }*/              settings.popup = new ol.Overlay(popup_options);              settings.map.addOverlay(settings.popup); @@ -918,26 +911,6 @@ jQuery.expr[":"].hovering = function(elem) {              methods.preload_images();          }, // end of init -        /* -        _panAndZoom: function(map, zoom_in, coordinates){ -            var view = map.getView(); -            var currentResolution = view.getResolution(); -            var delta = zoom_in ? 1 : -1; -            var pan = ol.animation.pan({ -                 duration: 500, -                source: view.getCenter(), -                easing: ol.easing.easeOut -            }); -            var zoom = ol.animation.zoom({ -                resolution: currentResolution, -                duration: 500, -                easing: ol.easing.easeOut -            }); -            map.beforeRender(pan,zoom); -            var newResolution = view.constrainResolution(currentResolution, delta); -            view.setResolution(newResolution); -            view.setCenter(coordinates); -        },*/          register_reload_on_move: function(){              var reload_on_move = function(evnt){                  settings._revision += 1; @@ -1057,7 +1030,10 @@ jQuery.expr[":"].hovering = function(elem) {          },          clickOnCluster: function(feature, zoom_level, duration, nb_zoom,                                   current_nb_items){ -            if (!duration) duration = 500; +            if (!duration){ +                // zoom animation must be slower +                duration = settings.animation_duration * 2; +            }              if (!nb_zoom) nb_zoom = 0;              var props = feature.getProperties(); @@ -2445,6 +2421,8 @@ jQuery.expr[":"].hovering = function(elem) {              if (settings.area_id) uri += settings.area_id + "/"              uri += "getDetail/";              if (settings.popupContentFull){ +                // only display when fully loaded +                $(".popover").addClass('transparent');                  uri += "popup/";              }              uri += key; @@ -2467,8 +2445,6 @@ jQuery.expr[":"].hovering = function(elem) {                                  var w = $('.popover').width();                                  var h = $('.popover').height();                                  $(".popover").addClass('inside-popup'); -                                // firts display is not user visible -                                $(".popover").addClass('transparent');                                  $(".popover-title").html(name);                                  $(".popover-title").show();                                  $(".popover-content").html(data); @@ -2477,10 +2453,30 @@ jQuery.expr[":"].hovering = function(elem) {                                  offset[1] = offset[1] - $('.popover').height() + h;                                  settings.popup.setOffset(offset);                                  settings.popup.dispatchEvent('change:offset'); -                                $(".popover").removeClass('transparent'); -                                register_hovering('.popover-content', +                                // pan toward the popup + margin to display pop height +                                var center_position = settings.popup.getPosition(); +                                var doc_height = $(document).height(); +                                if (doc_height / 2 < - offset[1]*2){ +                                    var pixel = settings.map.getPixelFromCoordinate(center_position); +                                    pixel[1] += offset[1] + doc_height / 4; +                                    center_position = settings.map.getCoordinateFromPixel(pixel); +                                } +                                var pan = ol.animation.pan( +                                    {duration: settings.animation_duration, +                                     source: settings.view.getCenter()}) +                                settings.map.beforeRender(pan); +                                settings.view.setCenter(center_position); + +                                // waiting for the pan to finish +                                setTimeout(function(){ +                                    // to trigger autopan +                                    settings.popup.dispatchEvent('change:position'); +                                    $(".popover").removeClass('transparent'); +                                    register_hovering('.popover-content',                                                    [settings.MouseWheelZoom,                                                     settings.DragPan]); +                                    }, settings.animation_duration + 10 +                                );                              }                          }                      } | 
