summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-10-03 13:23:03 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-10-03 13:23:03 +0200
commitd335b6cb95a5f55ff930c0d35a49f3496406e978 (patch)
tree6e58943e38be4b1df69412f25a12081ebde09bb7
parentf14ced0bfe41e22fb66e689f7287d6159d569ad3 (diff)
parentf02fb98e1e430a1100270c01b7dedfe0f85cf138 (diff)
downloadChimère-d335b6cb95a5f55ff930c0d35a49f3496406e978.tar.bz2
Chimère-d335b6cb95a5f55ff930c0d35a49f3496406e978.zip
Merge branch 'v3.0'
-rw-r--r--chimere/static/chimere/js/jquery.chimere.js226
1 files changed, 67 insertions, 159 deletions
diff --git a/chimere/static/chimere/js/jquery.chimere.js b/chimere/static/chimere/js/jquery.chimere.js
index 7733670..a94b74e 100644
--- a/chimere/static/chimere/js/jquery.chimere.js
+++ b/chimere/static/chimere/js/jquery.chimere.js
@@ -196,6 +196,15 @@ var register_hovering = function(exp, handlers_to_deactivate){
}
+var unregister_hovering = function(exp, handlers_to_deactivate){
+ $(exp).data('hovering', false);
+ if (handlers_to_deactivate){
+ for (idx in handlers_to_deactivate){
+ handlers_to_deactivate[idx].setActive(true);
+ }
+ }
+}
+
// jQuery pseudo-expression :hovering
jQuery.expr[":"].hovering = function(elem) {
return $(elem).data('hovering') ? true : false;
@@ -237,7 +246,7 @@ jQuery.expr[":"].hovering = function(elem) {
// Provide this function to make a custom click event on the marker
on_marker_click: null,
// Provide this function to override the feature detail display
- display_feature_detail_fx: null,
+ display_feature_detail_callback: null,
// Provide this function for overriding the getSubcategories default
get_subcategories_fx: null,
hide_popup_fx: null,
@@ -295,15 +304,6 @@ jQuery.expr[":"].hovering = function(elem) {
*/
init: function ( options ) {
/* Manage parameters */
- /* OL3-deprecated-cluster
- // not staticaly in default because of STATIC_URL init
- if (defaults.cluster_icon == null && typeof STATIC_URL != 'undefined'){
- defaults.cluster_icon = new OpenLayers.Icon(
- STATIC_URL+'chimere/img/marker-cluster.png',
- new OpenLayers.Size(36, 39),
- new OpenLayers.Pixel(-(36/2), -(39/2)));
- }
- */
/* OL3-deprecated-routing
if (defaults.icon_start == null && typeof STATIC_URL != 'undefined'){
defaults.icon_start = new OpenLayers.Icon(
@@ -570,7 +570,14 @@ jQuery.expr[":"].hovering = function(elem) {
settings.current_feature = feature;
if (!settings.edition){
if ($('.popover-content').is(":hovering")){
- return;
+ // the popup is no more visible bad info
+ if ($('.popover:visible').length == 0){
+ unregister_hovering('.popover-content',
+ [settings.MouseWheelZoom,
+ settings.DragPan]);
+ } else {
+ return;
+ }
}
if (feature) {
$(settings.popup_item).popover('destroy');
@@ -707,91 +714,6 @@ jQuery.expr[":"].hovering = function(elem) {
});
methods.enableClustering();
}
- /* OL3-deprecated-cluster
- if (settings.enable_clustering){
- var style = new OpenLayers.Style({
- graphicTitle: "${name}",
- externalGraphic: "${icon}",
- graphicWidth: "${width}",
- graphicHeight: "${height}",
- graphicXOffset: "${offsetx}",
- graphicYOffset: "${offsety}",
- graphicOpacity: 1,
- label: "${label}",
- labelYOffset: "2",
- fontSize:'1.3em'
- }, {
- context: {
- name: function(feature) {
- if(feature.cluster) {
- feature.attributes.width = settings.cluster_icon.size.w;
- feature.attributes.height = settings.cluster_icon.size.h;
- feature.attributes.offsetx = settings.cluster_icon.offset.x;
- feature.attributes.offsety = settings.cluster_icon.offset.y;
- } else{
- var marker = feature.attributes.marker
- feature.attributes.width = marker.icon.size.w;
- feature.attributes.height = marker.icon.size.h;
- feature.attributes.offsetx = settings.icon_offset.x;
- feature.attributes.offsety = settings.icon_offset.y;
- }
- return feature.attributes.name;
- },
- label: function(feature) {
- // clustered features count or blank if feature is not a cluster
- return feature.cluster ? feature.cluster.length : "";
- },
- icon: function(feature) {
- if (feature.cluster){
- return settings.cluster_icon.url;
- } else {
- return STATIC_URL + 'chimere/img/empty.png';
- }
- },
- width: function(feature) { return feature.attributes.width; },
- height: function(feature) { return feature.attributes.height; },
- offsetx: function(feature) { return feature.attributes.offsetx; },
- offsety: function(feature) { return feature.attributes.offsety; }
- }});
-
-
- // Cluster layer
- settings.clustering = new OpenLayers.Strategy.Cluster({
- distance: 10,
- threshold: 2});
- settings.layerCluster = new OpenLayers.Layer.Vector("Cluster layer",
- {styleMap: new OpenLayers.StyleMap({'default': style}),
- strategies: [settings.clustering]});
- settings.map.addLayer(settings.layerCluster);
-
- var highlightCtrl = new OpenLayers.Control.SelectFeature(
- settings.layerCluster, {
- hover: true,
- highlightOnly: true,
- eventListeners: {
- featurehighlighted: function(e) {
- if(e.feature.attributes.marker)
- e.feature.attributes.marker.events.triggerEvent('mouseover');
- },
- featureunhighlighted: function(e) {
- if(e.feature.attributes.marker)
- e.feature.attributes.marker.events.triggerEvent('mouseout');
- }
- }
- });
-
- var selectCtrl = new OpenLayers.Control.SelectFeature(
- settings.layerCluster,{
- onSelect: methods.zoomOnCluster
- });
-
- settings.map.addControl(highlightCtrl);
- settings.map.addControl(selectCtrl);
-
- highlightCtrl.activate();
- selectCtrl.activate();
- }
- */
/* Markers layer */
settings.icons = [];
@@ -1167,6 +1089,11 @@ jQuery.expr[":"].hovering = function(elem) {
'html': true,
'content': feature.get('name')
});
+ $(settings.popup_item).on('hidden.bs.popover', function () {
+ unregister_hovering('.popover-content',
+ [settings.MouseWheelZoom,
+ settings.DragPan]);
+ })
$(settings.popup_item).popover('show');
methods.display_feature_detail(feature.get('key'), feature.get('name'));
},
@@ -2444,52 +2371,53 @@ jQuery.expr[":"].hovering = function(elem) {
data: params,
dataType: "html",
success: function (data) {
- if ( settings.display_feature_detail_fx ) {
- settings.display_feature_detail_fx(data, settings);
+ if (!settings.popupContentFull) {
+ $('#detail').html(data).fadeIn();
+ if (settings.display_feature_detail_callback){
+ settings.display_feature_detail_callback(settings);
+ }
}
else {
- if (!settings.popupContentFull) {
- $('#detail').html(data).fadeIn();
+ // first display to get the size of the content
+ // get default popover size
+ var w = $('.popover').width();
+ var h = $('.popover').height();
+ $(".popover").addClass('inside-popup');
+ $(".popover-title").html(name);
+ $(".popover-title").show();
+ $(".popover-content").html(data);
+
+ if (settings.display_feature_detail_callback){
+ settings.display_feature_detail_callback(settings);
}
- else {
- // first display to get the size of the content
- // get default popover size
- var w = $('.popover').width();
- var h = $('.popover').height();
- $(".popover").addClass('inside-popup');
- $(".popover-title").html(name);
- $(".popover-title").show();
- $(".popover-content").html(data);
- var offset = settings.popup.getOffset();
- offset[0] = offset[0] - $('.popover').width()/2 + w/2;
- offset[1] = offset[1] - $('.popover').height() + h;
- settings.popup.setOffset(offset);
- settings.popup.dispatchEvent('change:offset');
- // 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
- );
+ var offset = settings.popup.getOffset();
+ offset[0] = offset[0] - $('.popover').width()/2 + w/2;
+ offset[1] = offset[1] - $('.popover').height() + h;
+ settings.popup.setOffset(offset);
+ settings.popup.dispatchEvent('change:offset');
+ // 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
+ );
}
}
});
@@ -2770,27 +2698,7 @@ jQuery.expr[":"].hovering = function(elem) {
}*/
},
hidePopup: function (evt) {
- $('#'+settings.marker_hover_id).hide();
- if (settings.hide_popup_fx) {
- settings.hide_popup_fx(evt, settings)
- }
- else { // Default behaviour
- /*
- if (settings.current_popup)
- {
- settings.current_feature = null;
- if (!settings.simple){
- $('#detail').fadeOut();
- }
- if (settings.current_popup.visible()){
- settings.current_popup.hide();
- if(evt)
- settings.map.events.triggerEvent('click', evt);
- methods.update_permalink_activation();
- return true;
- }
- }*/
- }
+ $(settings.popup_item).popover('destroy');
methods.update_permalink_activation();
return false;
},