PageSourceSearch

https://www.cirkwi.com/js/emprise.js?v=631

js cirkwi.com collected 2026-09-24 09:02:37 UTC 3,632 bytes, 124 lines download raw bytes

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.