1/** 2 * Permet d'afficher l'emprise (le tracé) d'un circuit sur une carte 3 * @param {type} carte 4 */ 5 6(function(exports, jQuery) { 7 'use strict'; 8 exports.Emprise = Class.define({ 9 10 carte: null, // Carte leaflet 11 loaded_traces: [], // Cache des traces déjà chargées 12 layer_emprise: null, // Calque leaflet 13 canceled_traces: [], // Liste des traces à ne pas afficher (le pointeur quitte le marqueur pendant le chargement de la trace) 14 requeteTrace: null, // Requete de chargement d'une trace 15 tracage_en_cours: false, // Indique s'il y a déjà un processus de traçage lancé mais pas encore terminé 16 id_circuit_en_cours: null, // Id du circuit du dernier marqueur qu l'on a survolé 17 18 __construct: function(carte) { 19 this.carte = carte; 20 }, 21 22 /** 23 * Récupère la trace d'un circuit et l'affiche sur la carte 24 * @param int id_circuit 25 */ 26 afficher_trace: function(id_circuit) { 27 28 // On annule l'opération si un autre processus de traçage est lancé 29 if(this.tracage_en_cours == true) { 30 return; 31 } 32 33 this.tracage_en_cours = true; 34 35 // On retire le circuit des traces à ne pas afficher 36 var i = this.canceled_traces.indexOf(id_circuit); 37 if(i != -1) { 38 this.canceled_traces.splice(i, 1); 39 } 40 41 // Si la trace est déjà dans le cache, on l'affiche 42 if (this.loaded_traces[id_circuit]) { 43 this.tracer(this.loaded_traces[id_circuit]); 44 this.tracage_en_cours = false; 45 } else { 46 // Sinon on la récupère 47 var that = this; 48 49 this.requeteTrace = jQuery.get("/" + langue + "/ajax/trace/" + id_circuit) 50 .done(function (reponse, status, jqXHR) { 51 var lignes = reponse.data.trace.trace; 52 53 // Mise en cache 54 that.loaded_traces[id_circuit] = lignes; 55 56 // Si le pointeur est toujours sur le marqueur, on affiche la trace 57 var i = that.canceled_traces.indexOf(id_circuit); 58 if(i == -1) { 59 that.tracer(lignes); 60 } 61 that.tracage_en_cours = false; 62 }); 63 } 64 }, 65 66 /** 67 * Affiche les lignes d'une trace sur la carte 68 * @param array lignes 69 */ 70 tracer: function(lignes) { 71 this.layer_emprise = L.layerGroup(); 72 73 let polylines = []; 74 for (var i = 0; i < lignes.length; i++) { 75 var ligne = lignes[i].ligne; 76 polylines.push(ligne); 77 } 78 L.polyline(polylines, { 79 color: '#fff', 80 weight: 8, 81 opacity:1, 82 className: 'cdf_Map__trace_previsu' 83 }).addTo(this.layer_emprise); 84 85 const defaultColor = getComputedStyle(document.documentElement).getPropertyValue('--primary-blue') || '#2A64C5'; 86 87 // Trace bleue 88 L.polyline(polylines, { 89 color: defaultColor, 90 opacity:1, 91 weight: 4 92 }).addTo(this.layer_emprise); 93 this.layer_emprise.addTo(this.carte); 94 }, 95 96 /** 97 * Masque une trace de la carte 98 * @param int id_circuit 99 */ 100 retirer_trace: function(id_circuit) { 101 102 // S'il y a une requête ajax dont la réponse n'est pas encore reçu on n'efface rien 103 if(this.tracage_en_cours == true) { 104 105 setTimeout(() => { 106 // Après que l'information de la trace est reçu, on vérifie si on est toujours 107 // sur le même marqueur on n'efface rien 108 if(this.id_circuit_en_cours == id_circuit) { 109 return; 110 } 111 //Sinon on annule le circuit quand la réponse est reçue 112 this.retirer_trace(id_circuit) 113 }, 10); 114 return; 115 } 116 117 this.canceled_traces.push(id_circuit); 118 if (this.layer_emprise) { 119 this.carte.removeLayer(this.layer_emprise); 120 } 121 122 } 123 }); 124}(this, window.mb_jquery || jQuery));
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.