@@ -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,24 @@ 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, obtenir la fonction pour 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+ // Executer la fonction
691+ fonction . call ( this ) ;
704692
705- // Attends un seconde avant de réessayer
706- setTimeout ( onMapIdle , 1000 ) ;
693+ // Verifier si la carte est déjà rendu
694+ if ( mapRendered ) {
695+ // Si oui, commencer le traitement manuellement
696+ traiterFileSelections ( ) ;
707697 }
708- } else {
709- // Si la carte se charger toujours, placer le selection dans la file
710- fileSelections . push ( [ parametre , valeur ] ) ;
711698 }
712699}
713700
@@ -734,8 +721,9 @@ function changerLienPartageable() {
734721 lienPartageable += '/' + idSection . slice ( - 5 ) . replace ( / ^ 0 + / , '' ) ;
735722 }
736723
737- // Verifier s'il y a un code de parceller, correspondant le ID de section
738- if ( codeParcelle && codeParcelle . startsWith ( idSection ) ) {
724+ // Verifier s'il y a un code de parcelle, correspondant l'ID de section
725+ if ( codeParcelle && codeParcelle . startsWith ( idSection ) ) {
726+ // Si oui, ajoutez-le à l'URL
739727 lienPartageable += '/' + codeParcelle . slice ( - 4 ) ;
740728 }
741729
@@ -748,6 +736,50 @@ function changerLienPartageable() {
748736 location . hash = lienPartageable ;
749737}
750738
739+ function traiterFileSelections ( ) {
740+ // Initialiser les variables
741+ var selection , parametre , valeur , selecteur ;
742+
743+ do {
744+ // S'il n'y a pas une prochaine selection, quitter
745+ if ( ! fileSelections . length ) {
746+ return ;
747+ }
748+
749+ // Recuperer le parametre et le valuer de la file d'attente
750+ selection = fileSelections . shift ( ) ;
751+ parametre = selection [ 0 ] ;
752+ valeur = selection [ 1 ] ;
753+
754+ // Obtenir le boite selection
755+ selecteur = $ ( '#' + parametre + 's' ) ;
756+
757+ // Continuer si la valeur ne doit changer pas
758+ } while ( valeur === selecteur . val ( ) ) ;
759+
760+ // Chercher l'option de la valeur
761+ var option = selecteur . children ( `option[value="${ valeur } "]` ) ;
762+
763+ // Verifier s'il y a l'option
764+ if ( option . length === 1 ) {
765+ // Si oui, changer le valeur
766+ selecteur . prop ( 'selectedIndex' , option . index ( ) ) ;
767+
768+ // Obtenir le fonction pour traiter le selection
769+ var nom = parametre [ 0 ] . toUpperCase ( ) + parametre . slice ( 1 ) ;
770+ var fonction = window [ 'selectionner' + nom ] ;
771+
772+ // Forcer le traitement de la nouvelle valuer
773+ fonction . call ( this , false ) ;
774+ } else {
775+ // Réajouter le selection à le file d'attente
776+ fileSelections . unshift ( selection ) ;
777+
778+ // Attends un seconde avant de réessayer
779+ setTimeout ( traiterFileSelections , 1000 ) ;
780+ }
781+ }
782+
751783function toggleLeftBar ( ) {
752784 vue . fold_left = ! vue . fold_left ;
753785}
@@ -996,4 +1028,4 @@ function communeFilter() {
9961028
9971029function departementsFilter ( ) {
9981030 map . setFilter ( 'departements-layer' , [ '!=' , [ 'get' , 'code' ] , codeDepartement ] )
999- }
1031+ }
0 commit comments