Changeset 437f131 in osmose-frontend


Ignore:
Timestamp:
Oct 26, 2012 8:53:59 PM (5 years ago)
Author:
Jocelyn Jaubert <jocelyn.jaubert@…>
Branches:
master
Children:
76260e1
Parents:
1006a135
git-author:
Jocelyn Jaubert <jocelyn.jaubert@…> (21/10/2012 17:50:54)
git-committer:
Jocelyn Jaubert <jocelyn.jaubert@…> (26/10/2012 20:53:59)
Message:

Fix javascript code for new marker format

  • bubble closing
  • showing a bubble while downloading, or on error
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • static/map/DynPoi.js

    r0a38dfe r437f131  
    7474}); 
    7575 
     76function generateBubble(marker_id, text) { 
     77    var s; 
     78    s  = "<div id=\"popup-" + marker_id + "\">"; 
     79    s += "<div class=\"bulle_msg\">"; 
     80    s += "<div class=\"closebubble\">"; 
     81    s += "<div><a href=\"#\" onclick=\"closeBubble('" + marker_id + "');return false;\"><b>&nbsp;X&nbsp;</b></a></div>" 
     82    s += "</div>" 
     83    s += "<div class=\"bulle_err\">"; 
     84    s += text; 
     85    s += "</div>"; 
     86    s += "<div class=\"bulle_elem\">" 
     87    s += text; 
     88    s += "</div>"; 
     89    s += "</div>"; 
     90    s += "<div class=\"bulle_verif\">" 
     91    s += text; 
     92    s += "</div>"; 
     93    s += "<div class=\"bulle_maj\">" 
     94    s += text; 
     95    s += "</div>"; 
     96    s += "</div>"; 
     97    return s 
     98} 
     99 
     100 
     101function closeBubble(marker_id) { 
     102    var b = $("div#popup-" + marker_id).parent().parent().parent(); 
     103    b.hide(); 
     104} 
     105 
    76106OpenLayers.Layer.DynPoi = OpenLayers.Class(OpenLayers.Layer.Markers, { 
    77107 
     
    80110    formatOptions: null, 
    81111    selectedFeature: null, 
    82     activePopup: null, 
    83     activeFeature: null, 
     112    downloaded: false, 
     113    activePopup: false, 
    84114    clicked: false, 
    85115    marker_ids: {}, 
     
    280310 
    281311    onClickHandler: function (evt) { 
    282         this.activeFeature = this; 
    283         if (this.clicked && this.activePopup == this.popup) { 
    284             this.activePopup.hide(); 
     312        if (this.clicked && this.activePopup) { 
     313            this.popup.hide(); 
    285314            this.clicked = false; 
    286         } else if ((this.clicked && !this.activePopup == this.popup) || !this.clicked) { 
    287             if (this.activePopup != null) { 
    288                 this.activePopup.hide(); 
     315        } else if ((this.clicked && !this.activePopup) || !this.clicked) { 
     316            if (this.activePopup) { 
     317                this.popup.hide(); 
    289318            } 
    290319            if (this.popup == null) { 
     
    298327                this.popup.toggle(); 
    299328            } 
    300             this.activePopup = this.popup; 
     329            this.activePopup = true; 
    301330            this.clicked = true; 
    302331        } 
     
    305334 
    306335    onHOverHandler: function (evt) { 
     336        if (this.popup && ! this.popup.visible()) { 
     337            // fix attributes if popup was manually closed 
     338            this.clicked = false; 
     339        } 
     340        if (this.popup == null || ! this.downloaded) { 
     341            this.popup = this.createPopup(); 
     342            this.popup.autoSize = true; 
     343            this.popup.panMapIfOutOfView = false; //document.myform.autopan.checked; 
     344            this.popup.minSize = new OpenLayers.Size(180, 30); 
     345            this.popup.maxSize = new OpenLayers.Size(280, 300); 
     346            map.addPopup(this.popup); 
     347            var content = generateBubble(this.popup.feature.data.marker_id, "downloading"); 
     348            this.popup.setContentHTML(content); 
     349            OpenLayers.Request.GET({ 
     350                url: 'marker/' + this.popup.feature.data.marker_id, 
     351                success: function (ajaxRequest) { 
     352                    this.popup.setContentHTML(ajaxRequest.responseText); 
     353                    this.downloaded = true; 
     354                }, 
     355                failure: function (ajaxRequest) { 
     356                    var content = generateBubble(this.popup.feature.data.marker_id, "error " + ajaxRequest.status); 
     357                    this.popup.setContentHTML(content); 
     358                }, 
     359                scope: this 
     360            }); 
     361        } 
     362        this.popup.show(); 
     363        this.activePopup = true; 
     364        OpenLayers.Event.stop(evt); 
     365    }, 
     366 
     367    onOutHandler: function (evt) { 
    307368        if (!this.clicked) { 
    308             if (this.activePopup != null) { 
    309                 this.activePopup.hide(); 
    310             } 
    311             if (this.popup == null) { 
    312                 this.popup = this.createPopup(); 
    313                 this.popup.autoSize = true; 
    314                 this.popup.panMapIfOutOfView = false; //document.myform.autopan.checked; 
    315                 this.popup.minSize = new OpenLayers.Size(180, 30); 
    316                 this.popup.maxSize = new OpenLayers.Size(280, 300); 
    317                 OpenLayers.Request.GET({ 
    318                     url: 'marker/' + this.popup.feature.data.marker_id, 
    319                     success: function (ajaxRequest) { 
    320                         this.popup.setContentHTML(ajaxRequest.responseText); 
    321                         if (this.popup == this.activePopup) { 
    322                             map.addPopup(this.popup); 
    323                         } 
    324                     }, 
    325                     scope: this 
    326                 }); 
    327             } else { 
    328                 this.popup.toggle(); 
    329             } 
    330             this.activePopup = this.popup; 
    331         } 
    332         OpenLayers.Event.stop(evt); 
    333     }, 
    334  
    335     onOutHandler: function (evt) { 
    336         if (!this.clicked && this.activePopup != null) this.activePopup.hide(); 
    337         this.activePopup = null; 
     369            this.popup.hide(); 
     370        } 
     371        this.activePopup = false; 
    338372        OpenLayers.Event.stop(evt); 
    339373    }, 
  • static/map/map.js

    rfc73047 r437f131  
    224224} 
    225225 
    226 function closeBubble(marker_id) { 
    227     var i = 0; 
    228     var len = pois.features.length; 
    229     var feature = null; 
    230     while (i < len && feature == null) { 
    231         if (pois.features[i].data.marker_id == marker_id) feature = pois.features[i]; 
    232         i++; 
    233     } 
    234     feature.marker.events.triggerEvent("mousedown"); 
    235 } 
    236  
    237226//----------------------------------------// 
    238227// function for left menu                 // 
  • views/map/popup.tpl

    r6344f27 r437f131  
     1<div id="popup-{{error_id}}"> 
    12<div class="bulle_msg"> 
    23<div class="closebubble"> 
     
    8283<a onclick="setTimeout('pois.loadText();',2000);" href="../error/{{error_id}}/false" target="hiddenIframe">{{_("false positive")}}</a> 
    8384</div> 
     85</div> 
Note: See TracChangeset for help on using the changeset viewer.