1//Département sélectionné 2var idDepTunnel = ''; 3var idDepCanaux = ''; 4var idDepFerro = ''; 5//Longueur min et max sélectionnées 6var minLongTunnel = 0; 7var minLongCanaux = 0; 8var minLongFerro = 0; 9var maxLongTunnel = 10000; 10var maxLongCanaux = 10000; 11var maxLongFerro = 10000; 12var resultFilterTunnel = []; 13var resultFilterCanaux = []; 14var resultFilterFerro = []; 15var tableTunnel = undefined; 16var tableCanaux = undefined; 17var tableFerro = undefined; 18 19 20var rechercheParNom = 1; 21var filterSelected = 'none'; 22 23 24var minLongAllTunnel,minLongAllCanaux,minLongAllFerro; 25var maxLongAllTunnel,maxLongAllCanaux,maxLongAllFerro; 26 27 28//Génère un text : 29// <li><a class="dropdown-item" href="#">Action</a></li> 30 31function generateListElementTab(id, element) { 32 return "<li><a id='" + id + "' class='dropdown-item' href='#' >" + element + "</a></li>"; 33} 34 35 36function generateListRecherche(id, text) { 37 return '<option value="' + id + '">' + text + '</option>'; 38} 39 40 41function updateVentilation(data, dataInitTunnels, idDepTunnel) { 42 43 //On filtre les gestionnaires uniques 44 let list_ventilation; 45 46 47 if (idDepTunnel == '' || idDepTunnel == -1) { 48 list_ventilation = dataInitTunnels.map(x => x['tunnel_ventile']).filter(onlyUnique).filter(x => (x != 'Naturel')).sort(); 49 } else { 50 list_ventilation = dataInitTunnels.filter( 51 function(elem) { 52 return filterDepartement(elem, idDepTunnel); 53 }).map(x => x['tunnel_ventile']).filter(onlyUnique).filter(x => (x != 'Naturel')).sort(); 54 55 } 56 57 //On les ajoute à la liste du drop down 58 var list = list_ventilation.map(x => generateListElementTab(list_ventilation.indexOf(x), x)).join(''); 59 60 61 $('#dropDownListVentilation').html("Choix d'un mode de ventil."); 62 63 $('#dd_list_ventilation').empty(); 64 $('#dd_list_ventilation').append(list); 65 66 //Lorsqu'on change le menu déroulant du gestionnaire 67 $('#dd_list_ventilation a').click(function() { 68 //On change le nom du bouton 69 $('#dropDownListVentilation').html($(this).html()); 70 //On applique le filtre 71 filterTunnel(); 72 }); 73} 74 75 76function updateGestionnaire(data, dataInit, idDep, type) { 77 switch (type){ 78 case 'tunnel': 79 $('#ddgestionnaireTunnel').unbind("keypress"); 80 break; 81 case 'canaux':
82 $('#ddgestionnaireCanaux').unbind("keypress"); 83 break; 84 case 'ferro': 85 $('#ddgestionnaireFerro').unbind("keypress"); 86 break; 87 } 88 89 //On filtre les gestionnaires uniques 90 let list_gestionnaires; 91 if (idDep == '') { 92 list_gestionnaires = dataInit.map(x => x['gestionnaire']).filter(x => (x != '')).filter(onlyUnique).sort(); 93 } else { 94 list_gestionnaires = dataInit.filter( 95 function(elem) { 96 return filterDepartement(elem, idDep); 97 }).map(x => x['gestionnaire']).filter(x => (x != '')).filter(onlyUnique).sort(); 98 99 } 100 list_gestionnaires.unshift("<li><a id='-1' class='dropdown-item' href='#'>Choix d'un gestionnaire</a></li>"); 101 102 //console.log("Filtre"); 103 //console.log(list_gestionnaires); 104 105 //On les ajoute à la liste du drop down 106 var list = list_gestionnaires.map(x => generateListElementTab(list_gestionnaires.indexOf(x), x, x)).join(''); 107 108 109 switch (type){ 110 case 'tunnel': 111 $('#dropDownListGestionnaireTunnel').html("Choix d'un gestionnaire"); 112 $('#dd_list_gestionnaires_tunnel').empty(); 113 $('#dd_list_gestionnaires_tunnel').append(list); 114 115 //Lorsqu'on change le menu déroulant du gestionnaire 116 $('#dd_list_gestionnaires_tunnel a').click(function() { 117 //On change le nom du bouton 118 $('#dropDownListGestionnaireTunnel').html($(this).html()); 119 //On applique le filtre 120 filterTunnel(); 121 }); 122 123 $("#ddgestionnaireTunnel").keypress(dropdownKeyDown); 124 break; 125 case 'canaux': 126 $('#dropDownListGestionnaireCanaux').html("Choix d'un gestionnaire"); 127 $('#dd_list_gestionnaires_canaux').empty(); 128 $('#dd_list_gestionnaires_canaux').append(list); 129 130 //Lorsqu'on change le menu déroulant du gestionnaire 131 $('#dd_list_gestionnaires_canaux a').click(function() { 132 //On change le nom du bouton 133 $('#dropDownListGestionnaireCanaux').html($(this).html()); 134 //On applique le filtre 135 filterCanaux(); 136 }); 137
138 $("#ddgestionnaireCanaux").keypress(dropdownKeyDown); 139 break; 140 case 'ferro': 141 $('#dropDownListGestionnaireFerro').html("Choix d'un gestionnaire"); 142 $('#dd_list_gestionnaires_ferro').empty(); 143 $('#dd_list_gestionnaires_ferro').append(list); 144 145 //Lorsqu'on change le menu déroulant du gestionnaire 146 $('#dd_list_gestionnaires_ferro a').click(function() { 147 //On change le nom du bouton 148 $('#dropDownListGestionnaireFerro').html($(this).html()); 149 //On applique le filtre 150 filterFerro(); 151 }); 152 153 $("#ddgestionnaireFerro").keypress(dropdownKeyDown); 154 break; 155 } 156 157} 158 159 160function setNumberOfTunnels(number) { 161 $('#counttunnels').html('Nombre de tunnels affichés : <b> ' + number + '</b>'); 162} 163 164function setNumberOfCanaux(number) { 165 $('#countcanaux').html('Nombre de tunnels canaux affichés : <b> ' + number + '</b>'); 166} 167 168function setNumberOfFerro(number) { 169 $('#countferro').html('Nombre de tunnels ferroviaires affichés : <b> ' + number + '</b>'); 170} 171 172//On change les borne du double slider 173function updateRange(min, max, type) { 174 175 switch (type){ 176 case 'tunnel': 177 $('#slider-range-tunnel').slider("option", "min", min); 178 $('#slider-range-tunnel').slider("option", "max", max); 179 $("#slider-range-tunnel").slider('values', 0, min); 180 $("#slider-range-tunnel").slider('values', 1, max); 181 182 updateRangeInputText(min, max, 'tunnel'); 183 break; 184 case 'canaux': 185 $('#slider-range-canaux').slider("option", "min", min); 186 $('#slider-range-canaux').slider("option", "max", max); 187 $("#slider-range-canaux").slider('values', 0, min); 188 $("#slider-range-canaux").slider('values', 1, max); 189 190 updateRangeInputText(min, max, 'canaux'); 191 break; 192 case 'ferro': 193 $('#slider-range-ferro').slider("option", "min", min); 194 $('#slider-range-ferro').slider("option", "max", max); 195 $("#slider-range-ferro").slider('values', 0, min); 196 $("#slider-range-ferro").slider('values', 1, max); 197 198 updateRangeInputText(min, max, 'ferro'); 199 break; 200 } 201 202} 203 204function updateMinFocusOutTunnel(){ 205 updateMinTunnel(false); 206} 207 208function updateMinFocusOutCanaux(){ 209 updateMinCanaux(false); 210} 211 212function updateMinFocusOutFerro(){ 213 updateMinFerro(false); 214} 215 216 217function updateMaxFocusOutTunnel(){ 218 updateMaxTunnel(false); 219} 220 221function updateMaxFocusOutCanaux(){ 222 updateMaxCanaux(false); 223} 224 225function updateMaxFocusOutFerro(){ 226 updateMaxFerro(false); 227} 228 229//Quand on modifie la valeur minimale 230function updateMinTunnel(fromkeyboard) { 231 232 //On récupère la valeur de texte 233 let valInput = $("#minValueInputTunnel").val(); 234 //On garde la valeur max entre ce qui est saisie et la valeur minimale 235 //On ne peut descendre en dessous de la borne théorique du slider 236 valInput = Math.max(valInput, $("#slider-range-tunnel").slider("option", "min")); 237 238 if(! fromkeyboard){ 239 //On garde la valeur minimale entre ce qui est saisie et le max 240 valInput = Math.min(valInput, $("#slider-range-tunnel").slider('values', 1)); 241 } 242 243 //On met à jour le slider 244 $("#slider-range-tunnel").slider("values", 0, valInput); 245 //On met à jour la valeur qui apparaît dans le texte 246 $("#minValueInputTunnel").val(valInput) 247 //On met à jour la valeur minimale 248 minLongTunnel = valInput; 249 filterTunnel(); 250 251} 252 253function updateMinCanaux(fromkeyboard) { 254 255 //On récupère la valeur de texte 256 let valInput = $("#minValueInputCanaux").val(); 257 //On garde la valeur max entre ce qui est saisie et la valeur minimale 258 //On ne peut descendre en dessous de la borne théorique du slider 259 valInput = Math.max(valInput, $("#slider-range-canaux").slider("option", "min")); 260 261 if(! fromkeyboard){ 262 //On garde la valeur minimale entre ce qui est saisie et le max 263 valInput = Math.min(valInput, $("#slider-range-canaux").slider('values', 1)); 264 } 265 266 //On met à jour le slider 267 $("#slider-range-canaux").slider("values", 0, valInput); 268 //On met à jour la valeur qui apparaît dans le texte 269 $("#minValueInputCanaux").val(valInput) 270 //On met à jour la valeur minimale
271 minLongCanaux = valInput; 272 filterCanaux(); 273 274} 275 276function updateMinFerro(fromkeyboard) { 277 278 //On récupère la valeur de texte 279 let valInput = $("#minValueInputFerro").val(); 280 //On garde la valeur max entre ce qui est saisie et la valeur minimale 281 //On ne peut descendre en dessous de la borne théorique du slider 282 valInput = Math.max(valInput, $("#slider-range-ferro").slider("option", "min")); 283 284 if(! fromkeyboard){ 285 //On garde la valeur minimale entre ce qui est saisie et le max 286 valInput = Math.min(valInput, $("#slider-range-ferro").slider('values', 1)); 287 } 288 289 //On met à jour le slider 290 $("#slider-range-ferro").slider("values", 0, valInput); 291 //On met à jour la valeur qui apparaît dans le texte 292 $("#minValueInputFerro").val(valInput) 293 //On met à jour la valeur minimale 294 minLongFerro = valInput; 295 filterFerro(); 296 297} 298 299function updateMaxTunnel(fromkeyboard) { 300 //On récupère la valeur de texte 301 let valInput = $("#maxValueInputTunnel").val(); 302 //On garde la valeur min entre ce qui est saisie et la valeur minimale 303 //On ne peut descendre en dessous de la borne théorique du slider 304 valInput = Math.min(valInput, $("#slider-range-tunnel").slider("option", "max")); 305 if(!fromkeyboard ){ 306 //On garde la valeur mamximale entre ce qui est saisie et le max 307 valInput = Math.max(valInput, $("#slider-range-tunnel").slider('values', 0)); 308 309 } 310 311 //On met à jour le slider 312 $("#slider-range-tunnel").slider("values", 1, valInput); 313 //On met à jour la valeur qui apparaît dans le texte 314 $("#maxValueInputTunnel").val(valInput) 315 //On met à jour la valeur minimale 316 maxLongTunnel = valInput; 317 filterTunnel(); 318} 319 320function updateMaxCanaux(fromkeyboard) { 321 //On récupère la valeur de texte 322 let valInput = $("#maxValueInputCanaux").val(); 323 //On garde la valeur min entre ce qui est saisie et la valeur minimale 324 //On ne peut descendre en dessous de la borne théorique du slider 325 valInput = Math.min(valInput, $("#slider-range-canaux").slider("option", "max")); 326 if(!fromkeyboard ){ 327 //On garde la valeur mamximale entre ce qui est saisie et le max 328 valInput = Math.max(valInput, $("#slider-range-canaux").slider('values', 0)); 329 330 } 331 332 //On met à jour le slider 333 $("#slider-range-canaux").slider("values", 1, valInput); 334 //On met à jour la valeur qui apparaît dans le texte 335 $("#maxValueInputCanaux").val(valInput) 336 //On met à jour la valeur minimale 337 maxLongCanaux = valInput; 338 filterCanaux(); 339} 340 341function updateMaxFerro(fromkeyboard) { 342 //On récupère la valeur de texte 343 let valInput = $("#maxValueInputFerro").val(); 344 //On garde la valeur min entre ce qui est saisie et la valeur minimale 345 //On ne peut descendre en dessous de la borne théorique du slider 346 valInput = Math.min(valInput, $("#slider-range-ferro").slider("option", "max")); 347 if(!fromkeyboard ){ 348 //On garde la valeur mamximale entre ce qui est saisie et le max 349 valInput = Math.max(valInput, $("#slider-range-ferro").slider('values', 0)); 350 351 } 352 353 //On met à jour le slider 354 $("#slider-range-ferro").slider("values", 1, valInput); 355 //On met à jour la valeur qui apparaît dans le texte 356 $("#maxValueInputFerro").val(valInput) 357 //On met à jour la valeur minimale 358 maxLongFerro = valInput; 359 filterFerro(); 360} 361 362 363function updateRangeInputText(minValue, maxValue,type) { 364 365 switch (type){ 366 case 'tunnel': 367 $("#minValueInputTunnel").val(minValue); 368 $("#maxValueInputTunnel").val(maxValue); 369 break; 370 case 'canaux': 371 $("#minValueInputCanaux").val(minValue); 372 $("#maxValueInputCanaux").val(maxValue); 373 break; 374 case 'ferro': 375 $("#minValueInputFerro").val(minValue); 376 $("#maxValueInputFerro").val(maxValue); 377 break; 378 } 379} 380 381function activateDropDownVentilation(){ 382 $("#dropDownListVentilation").removeClass("disabledropdown"); 383 $("#dropDownListVentilation").addClass("btn-secondary"); 384 385$("#dropDownListVentilation").attr("data-bs-toggle", "dropdown"); 386$("#dropDownListVentilation").prop('disabled', false); 387 388} 389 390 391function desactivateDropDownVentilation(){ 392 $("#dropDownListVentilation").addClass("disabledropdown"); 393 394 $("#dropDownListVentilation").removeClass("btn-secondary"); 395 396 397 398 399 400 $("#dropDownListVentilation").attr("data-bs-toggle", " "); 401 $("#dropDownListVentilation").prop('disabled', true); 402 403 404 405}
405 406 407 408//Retourne les valeurs unique d'un tableau 409function onlyUnique(value, index, self) { 410 return self.indexOf(value) === index; 411} 412 413 414//Active la recherche simple et désactive les filtres 415function activeRechercheSimple() { 416 417 rechercheParNom = 1; 418 419 $("#rechercheParNom").show(); 420 $("#rechercheFiltre").hide(); 421 422 $('#btn_tunnel,#btn_canal,#btn_ferro').show(); 423 424 if (!map.hasLayer(markersTunnels)) { 425 map.removeLayer(markersTunnels); 426 $('#btn_tunnel').addClass('btn_clicked_couche'); 427 $('#btn_tunnel').removeClass('btn_couche'); 428 } 429 if (!map.hasLayer(markersCanaux)) { 430 map.addLayer(markersCanaux); 431 $('#btn_canal').addClass('btn_clicked_couche'); 432 $('#btn_canal').removeClass('btn_couche'); 433 } 434 if (!map.hasLayer(markersFerro)) { 435 map.addLayer(markersFerro); 436 $('#btn_ferro').addClass('btn_clicked_couche'); 437 $('#btn_ferro').removeClass('btn_couche'); 438 } 439 440 441 442 removeFilterTunnel(true); 443 removeFilterCanaux(true); 444 removeFilterFerro(true); 445 446} 447 448//Désactive la recherche simple et active les filtres 449function activeRechercheFiltre() { 450 rechercheParNom = 0; 451 $("#rechercheParNom").hide(); 452 $("#rechercheFiltre").show(); 453 if (map.hasLayer(markersTunnels)) { 454 map.removeLayer(markersTunnels); 455 } 456 if (map.hasLayer(markersCanaux)) { 457 map.removeLayer(markersCanaux); 458 } 459 if (map.hasLayer(markersFerro)) { 460 map.removeLayer(markersFerro); 461 } 462 $('#btn_tunnel,#btn_canal,#btn_ferro').hide(); 463 $('#btn_tunnel_filtre,#btn_canal_filtre,#btn_ferro_filtre').removeClass('btn_clicked_couche'); 464 $('#btn_tunnel_filtre,#btn_canal_filtre,#btn_ferro_filtre').addClass('btn_couche'); 465 466 removeFilterTunnel(true); 467 removeFilterCanaux(true); 468 removeFilterFerro(true); 469 470 $("#filtreCanaux, #filtreFerro, #filtreTunnel").hide(); 471} 472 473 474//Action lorsque l'on appuie sur les touches d'un menu déroulan 475function dropdownKeyDown(event) { 476 477 console.log(event.keyCode); 478 //console.log("Dropdown"); 479 if (event.keyCode != 13) { 480 if ($(this).find('button').attr('aria-expanded') == 'false') { 481 $(this).find('.dropdown-toggle').dropdown('toggle'); 482 } 483 } 484 485 486 var keyChar = String.fromCharCode(event.keyCode).toLowerCase(); 487 var selectedItems = $(this).find('a').filter(function() { 488 //console.log($(this).text()); 489 //console.log(keyChar); 490 491 return $(this).text().toLowerCase().indexOf(keyChar) === 0; 492 }); 493 494 // console.log($(this).find('a').map(x => $(this).find('a')[x])); 495 496 497 var f = $(selectedItems).is(':focus'); 498 if (f) { 499 selectedItems = $('a:focus').parent().nextAll().find('a').filter(function() { 500 return $(this).text().toLowerCase().indexOf(keyChar) === 0; 501 }).first(); 502 if (selectedItems.length == 0) { 503 selectedItems = $(this).find('a').filter(function() { 504 return $(this).text().toLowerCase().indexOf(keyChar) === 0; 505 }); 506 } 507 } 508 selectedItems.first().focus(); 509} 510 511 512 513function updateModificationDate(){ 514 515 516 $.get( "./includes/lastModificationDate.php", function( data ) { 517 $( "#modif_time" ).html( data ); 518 }); 519 520 521} 522 523 524 525//Chargement de l'interface 526function init_gui() { 527 528 //On cache par défaut les filtres et on affiche la recherche par nmo 529 $("#rechercheParNom").show(); 530 $("#rechercheFiltre").hide(); //Les différents menus et interacteurs 531 532 533 //On ajoute la date de modification des données 534 updateModificationDate(); 535 536 //Activation du fait que l'on mette à jour les valeurs min/max du slider lorsque l'on clique ailleurs 537 $("#minValueInputTunnel").change(updateMinFocusOutTunnel); 538 $("#maxValueInputTunnel").change(updateMaxFocusOutTunnel); 539 $("#minValueInputCanaux").change(updateMinFocusOutCanaux); 540 $("#maxValueInputCanaux").change(updateMaxFocusOutCanaux); 541 $("#minValueInputFerro").change(updateMinFocusOutFerro); 542 $("#maxValueInputFerro").change(updateMaxFocusOutFerro); 543 544 $('#ventilation_oui').on('click', function(e){ 545 if ($("#ventilation_oui").is(':checked')) { 546 activateDropDownVentilation(); 547 }else{ 548 desactivateDropDownVentilation(); 549 } 550 }); 551 552 553 //Lorsque l'on valide les longueurs min et max du tunnel avec entrée 554 $('#minValueInputTunnel').on('keyup', function(e) { 555 if (e.which === 13) { 556 updateMinTunnel(true); 557 } 558 }); 559 $('#maxValueInputTunnel').on('keyup', function(e) { 560 if (e.which === 13) { 561 updateMaxTunnel(true); 562 } 563 }); 564 $('#minValueInputCanaux').on('keyup', function(e) { 565 if (e.which === 13) { 566 updateMinCanaux(true); 567 } 568 }); 569 $('#maxValueInputCanaux').on('keyup', function(e) { 570 if (e.which === 13) { 571 updateMaxCanaux(true); 572 } 573 }); 574 $('#minValueInputFerro').on('keyup', function(e) { 575 if (e.which === 13) { 576 updateMinFerro(true); 577 } 578 }); 579 $('#maxValueInputFerro').on('keyup', function(e) { 580 if (e.which === 13) { 581 updateMaxFerro(true); 582 } 583 }); 584 585 //Lorsque l'on valide avec entée le mot de passe 586 $('#passwordForm').on('keypress', function(e) { 587 if (e.which === 13) { 588 connexion(); 589 590 } 591 }); 592 593 594 //Si on click en dehors de la fenêtre de connexion on la ferme 595 $("#connexionWindows").click(function(ev) { 596 if (ev.target != this) return; 597 $('#connexionWindows').modal('hide'); 598 }); 599 600 601 602}
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.