summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chimere/static/chimere/js/jquery.chimere.js66
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
+ );
}
}
}