index.html 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <!DOCTYPE html>
  2. <html lang="fr">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <meta
  7. name="description"
  8. content="Carte de France interactive."
  9. />
  10. <meta name="theme-color" content="#1f2328" />
  11. <meta
  12. name="robots"
  13. content="noindex, nofollow, noarchive, nosnippet, noimageindex, notranslate"
  14. />
  15. <meta
  16. name="googlebot"
  17. content="noindex, nofollow, noarchive, nosnippet, noimageindex"
  18. />
  19. <meta
  20. name="bingbot"
  21. content="noindex, nofollow, noarchive, nosnippet, noimageindex"
  22. />
  23. <meta property="og:locale" content="fr_FR" />
  24. <meta property="og:type" content="website" />
  25. <meta property="og:title" content="Carte Intéractive de Gendarmerie" />
  26. <meta
  27. property="og:description"
  28. content="Explorez toutes les communes de France, Corse, DOM, TOM et COM avec tooltip au survol."
  29. />
  30. <meta property="og:image" content="./favicon.svg" />
  31. <meta name="twitter:card" content="summary" />
  32. <meta name="twitter:title" content="Carte Intéractive de Gendarmerie" />
  33. <meta
  34. name="twitter:description"
  35. content="Carte interactive de la Gendarmerie Départementale."
  36. />
  37. <meta name="twitter:image" content="./favicon.svg" />
  38. <link rel="icon" type="image/svg+xml" href="./favicon.svg" />
  39. <link rel="shortcut icon" href="./favicon.svg" />
  40. <title>Carte Intéractive de Gendarmerie</title>
  41. <link rel="stylesheet" href="styles.css" />
  42. </head>
  43. <body>
  44. <main class="app">
  45. <header class="map-header">
  46. <h1>Carte intéractive de la Gendarmerie Départementale</h1>
  47. <p>France, régions de gendarmerie, groupements, communes et outre-mer</p>
  48. </header>
  49. <button
  50. id="open-mobile-commune-list"
  51. class="mobile-country-button"
  52. type="button"
  53. aria-label="Ouvrir la recherche"
  54. >
  55. 🔍
  56. </button>
  57. <button
  58. id="toggle-mobile-territories"
  59. class="mobile-legend-button"
  60. type="button"
  61. aria-controls="territory-panel"
  62. aria-expanded="false"
  63. >
  64. Territoires
  65. </button>
  66. <aside id="entity-sidebar" class="country-sidebar" aria-label="Liste des éléments">
  67. <h3 id="entity-list-title">Éléments</h3>
  68. <input
  69. id="commune-search"
  70. class="country-search"
  71. type="search"
  72. placeholder="Rechercher..."
  73. autocomplete="off"
  74. />
  75. <p id="commune-list-count" class="country-list-count"></p>
  76. <ul id="commune-list" class="country-list"></ul>
  77. </aside>
  78. <div id="map-shell" class="map" role="img" aria-label="Carte interactive des territoires français">
  79. <canvas id="map-canvas" class="map-canvas"></canvas>
  80. <div id="map-status" class="map-status" hidden></div>
  81. </div>
  82. <section id="territory-panel" class="legend" aria-live="polite">
  83. <h3>Territoires</h3>
  84. <p id="territory-summary" class="legend-copy"></p>
  85. <ul id="territory-list" class="territory-list"></ul>
  86. </section>
  87. <div id="masking-disclaimer" class="masking-disclaimer" hidden>
  88. <span id="masking-disclaimer-text"></span>
  89. <button id="open-masking-modal" class="masking-disclaimer-action" type="button">
  90. Voir le détail
  91. </button>
  92. </div>
  93. <p class="map-footer">
  94. Création MDC GOUTFER Benjamin -
  95. <a
  96. href="https://git.goutfer.fr/benjamin.goutfer/carte-communes-france"
  97. target="_blank"
  98. rel="noopener noreferrer"
  99. aria-label="Consulter la source officielle des données"
  100. >En savoir plus</a
  101. >
  102. </p>
  103. </main>
  104. <div id="map-tooltip" class="map-tooltip" aria-hidden="true"></div>
  105. <div
  106. id="commune-list-modal"
  107. class="country-list-modal"
  108. aria-hidden="true"
  109. role="dialog"
  110. aria-modal="true"
  111. aria-labelledby="commune-list-modal-title"
  112. >
  113. <div class="country-list-modal-content">
  114. <div class="country-list-modal-head">
  115. <h2 id="commune-list-modal-title">Rechercher</h2>
  116. <button
  117. id="close-commune-list-modal"
  118. class="close"
  119. aria-label="Fermer la recherche"
  120. >
  121. ×
  122. </button>
  123. </div>
  124. <input
  125. id="commune-search-mobile"
  126. class="country-search"
  127. type="search"
  128. placeholder="Rechercher..."
  129. autocomplete="off"
  130. />
  131. <p id="commune-list-count-mobile" class="country-list-count"></p>
  132. <ul id="commune-list-mobile" class="country-list"></ul>
  133. </div>
  134. </div>
  135. <div id="commune-modal" class="modal" aria-hidden="true" role="dialog" aria-modal="true" aria-labelledby="modal-title">
  136. <div class="modal-content">
  137. <button id="close-modal" class="close" aria-label="Fermer la fenêtre">×</button>
  138. <h2 id="modal-title">Élément sélectionné</h2>
  139. <p id="commune-name"></p>
  140. <p id="commune-territory" class="country-category"></p>
  141. <div id="commune-data" class="country-data"></div>
  142. <button id="modal-open-territory" class="modal-action" type="button" hidden></button>
  143. </div>
  144. </div>
  145. <div id="masking-modal" class="modal" aria-hidden="true" role="dialog" aria-modal="true" aria-labelledby="masking-modal-title">
  146. <div class="modal-content masking-modal-content">
  147. <button id="close-masking-modal" class="close" aria-label="Fermer la fenêtre">×</button>
  148. <h2 id="masking-modal-title">Zones masquées</h2>
  149. <p id="masking-modal-summary"></p>
  150. <div id="masking-modal-data" class="masking-modal-data"></div>
  151. </div>
  152. </div>
  153. <script src="https://cdn.jsdelivr.net/npm/d3@7/dist/d3.min.js"></script>
  154. <script src="script.js"></script>
  155. </body>
  156. </html>