@@ -345,7 +345,7 @@ function selectionnerDepartement(interactif = true) {
345345
346346 entrerDansDepartement ( sonCode ) ;
347347
348- if ( interactif ) {
348+ if ( interactif ) {
349349 changerLienPartageable ( ) ;
350350 }
351351} ;
@@ -357,7 +357,7 @@ function selectionnerCommune(interactif = true) {
357357
358358 entrerDansCommune ( sonCode ) ;
359359
360- if ( interactif ) {
360+ if ( interactif ) {
361361 changerLienPartageable ( ) ;
362362 }
363363}
@@ -369,7 +369,7 @@ function selectionnerSection(interactif = true) {
369369
370370 entrerDansSection ( newIdSection ) ;
371371
372- if ( interactif ) {
372+ if ( interactif ) {
373373 changerLienPartageable ( ) ;
374374 }
375375}
@@ -381,7 +381,7 @@ function selectionnerParcelle(interactif = true) {
381381
382382 entrerDansParcelle ( sonCode ) ;
383383
384- if ( interactif ) {
384+ if ( interactif ) {
385385 changerLienPartageable ( ) ;
386386 }
387387}
@@ -563,18 +563,6 @@ function onDepartementClick(event) {
563563 changerLienPartageable ( ) ;
564564} ;
565565
566- function onMapIdle ( event ) {
567- // Indiquer que la carte est rendu complètement
568- if ( ! mapRendered ) {
569- mapRendered = true ;
570- }
571-
572- // Exécuter l'étape suivante de la file d'attente
573- if ( selection = fileSelections . shift ( ) ) {
574- changerSelection ( ...selection , true ) ;
575- }
576- } ;
577-
578566function onHashChange ( event ) {
579567 // Si l'URL n'a changer pas, faire rien
580568 if ( location . hash == lienPartageable ) {
@@ -605,13 +593,13 @@ function onHashChange(event) {
605593 if ( ! piece ) {
606594 return ;
607595 }
608-
596+
609597 // Definer le format de la code, et l'analyser
610598 var format = / ^ ( \d { 2 } ) (?: ( \d { 3 } ) (?: ( [ 0 A - Z ] { 4 } [ A - Z ] ) ( \d { 4 } ) ? ) ? ) ? $ / ;
611599 var correspondances = format . exec ( piece ) ;
612600
613601 // Si les codes ne se conformant le format correct, quitter
614- if ( ! correspondances ) {
602+ if ( ! correspondances ) {
615603 return ;
616604 }
617605
@@ -629,10 +617,10 @@ function onHashChange(event) {
629617
630618 // Verifier s'il y a un troisième correspondance
631619 if ( typeof correspondances [ 2 ] === 'string' ) {
632- // Si oui, utiliser les trois premier correspondances comme le ID de section
620+ // Si oui, utiliser les trois premier correspondances comme l' ID de section
633621 changerSelection ( 'section' , correspondances . slice ( 0 , 3 ) . join ( '' ) , ! pieces . length && ! correspondances [ 3 ] ) ;
634622 } else if ( piece = pieces . shift ( ) ) {
635- // Si non, utiliser la prochaine piece d'URL comme le ID de section
623+ // Si non, utiliser la prochaine piece d'URL comme l' ID de section
636624 code += piece . padStart ( 5 , '0' ) ;
637625 changerSelection ( 'section' , code , ! pieces . length ) ;
638626 }
@@ -646,7 +634,16 @@ function onHashChange(event) {
646634 code += piece . padStart ( 4 , '0' ) ;
647635 changerSelection ( 'parcelle' , code , ! pieces . length ) ;
648636 }
649- } ;
637+ }
638+
639+ function onMapIdle ( event )
640+ {
641+ if ( ! mapRendered ) {
642+ mapRendered = true ;
643+ }
644+
645+ traiterFileSelections ( ) ;
646+ }
650647
651648function changerPeriode ( depuis , jusqua ) {
652649 // Verifier que le début et fin sont les strings, ou quitter
@@ -680,34 +677,23 @@ function changerPeriode(depuis, jusqua) {
680677 picker . setEndDate ( new Date ( jusqua ) ) ;
681678}
682679
683- function changerSelection ( parametre , valeur , animer ) {
684- // Verifier si la carte a fini de charger
685- if ( mapRendered ) {
686- // Obtenir le boite selection
687- var selecteur = document . getElementById ( parametre + 's' ) ;
688-
689- // Verifier s'il y a les options
690- if ( selecteur . children ) {
691- // Si oui, changer le valuer
692- selecteur . value = valeur ;
680+ function changerSelection ( parametre , valeur , finale ) {
681+ // Placer le selection dans la file
682+ fileSelections . push ( [ parametre , valeur ] ) ;
693683
694- // Selectioner et déplacer le camera si c'est la dernière parametre, ou si c'était en file d'attente
695- if ( animer ) {
696- var nom = parametre [ 0 ] . toUpperCase ( ) + parametre . slice ( 1 ) ;
697- var fonction = window [ 'selectionner' + nom ] ;
684+ // Verifier si c'est la finale selection
685+ if ( finale ) {
686+ // Si oui, réinitialiser le parametre
687+ var nom = parametre [ 0 ] . toUpperCase ( ) + parametre . slice ( 1 ) ;
688+ var fonction = window [ 'reset' + nom ] ;
698689
699- fonction . call ( this , false ) ;
700- }
701- } else {
702- // Si non, remettre le selection dans la file
703- fileSelections . unshift ( [ parametre , valeur ] ) ;
690+ fonction . call ( this ) ;
704691
705- // Attends un seconde avant de réessayer
706- setTimeout ( onMapIdle , 1000 ) ;
692+ // Verifier si la carte est déjà rendu
693+ if ( mapRendered ) {
694+ // Si oui, commencer le traitement manuellement
695+ traiterFileSelections ( ) ;
707696 }
708- } else {
709- // Si la carte se charger toujours, placer le selection dans la file
710- fileSelections . push ( [ parametre , valeur ] ) ;
711697 }
712698}
713699
@@ -734,8 +720,9 @@ function changerLienPartageable() {
734720 lienPartageable += '/' + idSection . slice ( - 5 ) . replace ( / ^ 0 + / , '' ) ;
735721 }
736722
737- // Verifier s'il y a un code de parceller, correspondant le ID de section
738- if ( codeParcelle && codeParcelle . startsWith ( idSection ) ) {
723+ // Verifier s'il y a un code de parcelle, correspondant l'ID de section
724+ if ( codeParcelle && codeParcelle . startsWith ( idSection ) ) {
725+ // Si oui, ajoutez-le à l'URL
739726 lienPartageable += '/' + codeParcelle . slice ( - 4 ) ;
740727 }
741728
@@ -748,6 +735,50 @@ function changerLienPartageable() {
748735 location . hash = lienPartageable ;
749736}
750737
738+ function traiterFileSelections ( ) {
739+ // Initialiser les variables
740+ var selection , parametre , valeur , selecteur ;
741+
742+ do {
743+ // S'il n'y a pas une prochaine selection, quitter
744+ if ( ! fileSelections . length ) {
745+ return ;
746+ }
747+
748+ // Recuperer le parametre et le valuer de la file d'attente
749+ selection = fileSelections . shift ( ) ;
750+ parametre = selection [ 0 ] ;
751+ valeur = selection [ 1 ] ;
752+
753+ // Obtenir le boite selection
754+ selecteur = $ ( '#' + parametre + 's' ) ;
755+
756+ // Continuer si la valeur ne doit changer pas
757+ } while ( valeur === selecteur . val ( ) ) ;
758+
759+ // Chercher l'option de la valeur
760+ var option = selecteur . children ( `option[value="${ valeur } "]` ) ;
761+
762+ // Verifier s'il y a l'option
763+ if ( option . length === 1 ) {
764+ // Si oui, changer le valeur
765+ selecteur . prop ( 'selectedIndex' , option . index ( ) ) ;
766+
767+ // Obtenir le fonction pour traiter le selection
768+ var nom = parametre [ 0 ] . toUpperCase ( ) + parametre . slice ( 1 ) ;
769+ var fonction = window [ 'selectionner' + nom ] ;
770+
771+ // Forcer le traitement de la nouvelle valuer
772+ fonction . call ( this , false ) ;
773+ } else {
774+ // Réajouter le selection à le file d'attente
775+ fileSelections . unshift ( selection ) ;
776+
777+ // Attends un seconde avant de réessayer
778+ setTimeout ( traiterFileSelections , 1000 ) ;
779+ }
780+ }
781+
751782function toggleLeftBar ( ) {
752783 vue . fold_left = ! vue . fold_left ;
753784}
@@ -996,4 +1027,4 @@ function communeFilter() {
9961027
9971028function departementsFilter ( ) {
9981029 map . setFilter ( 'departements-layer' , [ '!=' , [ 'get' , 'code' ] , codeDepartement ] )
999- }
1030+ }
0 commit comments