Spaces:
Running
Running
Upload 47 files
Browse files- .gitattributes +4 -0
- analytics.html +797 -0
- data/.DS_Store +0 -0
- data/common/province_admin_diva.cpg +1 -0
- data/common/province_admin_diva.dbf +0 -0
- data/common/province_admin_diva.geojson +3 -0
- data/common/province_admin_diva.prj +1 -0
- data/common/province_admin_diva.qmd +27 -0
- data/common/province_admin_diva.shp +3 -0
- data/common/province_admin_diva.shx +0 -0
- data/common/province_admin_diva_sim.geojson +0 -0
- data/common/province_admin_diva_sim.qmd +44 -0
- data/common/province_admin_sim.geojson +0 -0
- data/disaster/province_disaster_centroid.json +1 -0
- data/firm/homepro_disaster_network_map.json +0 -0
- data/firm/homeprto_disaster_firm_location_forecast.json +0 -0
- data/firm/location_homepro_do_2018-2024.json +0 -0
- forecast.html +776 -0
- index.html +236 -19
- locations.html +594 -0
- static/.DS_Store +0 -0
- static/css/font-awesome@all.min.css +0 -0
- static/css/maplibre-gl@3.0.0.css +1 -0
- static/icon/extent.png +0 -0
- static/icon/flood.png +0 -0
- static/icon/forecast.png +0 -0
- static/icon/home.png +0 -0
- static/icon/location.png +0 -0
- static/icon/logo.png +0 -0
- static/icon/pin.png +0 -0
- static/icon/play.png +0 -0
- static/icon/pm.png +0 -0
- static/icon/radar.png +0 -0
- static/icon/wind.png +0 -0
- static/image/climate.webp +0 -0
- static/image/economic.webp +0 -0
- static/image/flood.jpeg +0 -0
- static/image/hero-city-pin.png +3 -0
- static/image/hero-city.jpg +3 -0
- static/image/hero.png +0 -0
- static/image/pin-location.jpeg +0 -0
- static/image/report.jpeg +0 -0
- static/js/chart.js +0 -0
- static/js/deckgl@9.0.33.min.js +0 -0
- static/js/maplibre-gl@3.0.0.js +0 -0
- static/js/popper.min.js +6 -0
- static/js/tailwind@3.4.5.js +0 -0
- static/js/tippy-bundle.umd.min.js +2 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,7 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
data/common/province_admin_diva.geojson filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
data/common/province_admin_diva.shp filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
static/image/hero-city-pin.png filter=lfs diff=lfs merge=lfs -text
|
| 39 |
+
static/image/hero-city.jpg filter=lfs diff=lfs merge=lfs -text
|
analytics.html
ADDED
|
@@ -0,0 +1,797 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8" />
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
| 6 |
+
<title>Disaster Risk and Impact Analysis</title>
|
| 7 |
+
|
| 8 |
+
<script src="static/js/deckgl@9.0.33.min.js"></script>
|
| 9 |
+
|
| 10 |
+
<script src="static/js/maplibre-gl@3.0.0.js"></script>
|
| 11 |
+
<link href="static/css/maplibre-gl@3.0.0.css" rel="stylesheet" />
|
| 12 |
+
|
| 13 |
+
<script src="static/js/tailwind@3.4.5.js"></script>
|
| 14 |
+
<script src="static/js/chart.js"></script>
|
| 15 |
+
|
| 16 |
+
<script src="static/js/popper.min.js"></script>
|
| 17 |
+
<script src="static/js/tippy-bundle.umd.min.js"></script>
|
| 18 |
+
|
| 19 |
+
<style>
|
| 20 |
+
html,
|
| 21 |
+
body {
|
| 22 |
+
height: 100%;
|
| 23 |
+
margin: 0;
|
| 24 |
+
}
|
| 25 |
+
#map {
|
| 26 |
+
width: 100%;
|
| 27 |
+
height: 100%;
|
| 28 |
+
position: absolute;
|
| 29 |
+
top: 0;
|
| 30 |
+
left: 0;
|
| 31 |
+
}
|
| 32 |
+
</style>
|
| 33 |
+
</head>
|
| 34 |
+
<body>
|
| 35 |
+
<!-- Floating Box for Charts -->
|
| 36 |
+
<div
|
| 37 |
+
class="absolute left-4 top-4 h-9/10 bottom-4 w-2/5 p-6 bg-white backdrop-blur-sm bg-opacity-60 shadow-lg overflow-y-auto z-10 rounded-2xl"
|
| 38 |
+
>
|
| 39 |
+
<h1 class="text-2xl font-bold mb-4 text-center">FIRM Overview</h1>
|
| 40 |
+
|
| 41 |
+
<!-- OVER METRICS -->
|
| 42 |
+
<h1 class="text-l font-bold mb-4">Disaster Affection Index</h1>
|
| 43 |
+
<div class="flex justify-between space-x-4 p-4">
|
| 44 |
+
<div class="flex items-center p-4 bg-white shadow rounded-lg flex-1">
|
| 45 |
+
<div class="flex-1">
|
| 46 |
+
<h3 class="text-gray-700 text-sm font-semibold">Wind</h3>
|
| 47 |
+
<div class="flex items-center">
|
| 48 |
+
<p class="text-xl font-bold text-gray-800">252</p>
|
| 49 |
+
<span class="ml-2 text-green-500">↑ +61%</span>
|
| 50 |
+
</div>
|
| 51 |
+
</div>
|
| 52 |
+
</div>
|
| 53 |
+
|
| 54 |
+
<!-- Metric Widget 2 -->
|
| 55 |
+
<div class="flex items-center p-4 bg-white shadow rounded-lg flex-1">
|
| 56 |
+
<div class="flex-1">
|
| 57 |
+
<h3 class="text-gray-700 text-sm font-semibold">Flood</h3>
|
| 58 |
+
<div class="flex items-center">
|
| 59 |
+
<p class="text-xl font-bold text-gray-800">90</p>
|
| 60 |
+
<span class="ml-2 text-red-500">↓ -5%</span>
|
| 61 |
+
</div>
|
| 62 |
+
</div>
|
| 63 |
+
</div>
|
| 64 |
+
|
| 65 |
+
<!-- Metric Widget 3 -->
|
| 66 |
+
<div class="flex items-center p-4 bg-white shadow rounded-lg flex-1">
|
| 67 |
+
<div class="flex-1">
|
| 68 |
+
<h3 class="text-gray-700 text-sm font-semibold">PM.</h3>
|
| 69 |
+
<div class="flex items-center">
|
| 70 |
+
<p class="text-xl font-bold text-gray-800">36</p>
|
| 71 |
+
<span class="ml-2 text-green-500">↑ +71%</span>
|
| 72 |
+
</div>
|
| 73 |
+
</div>
|
| 74 |
+
</div>
|
| 75 |
+
</div>
|
| 76 |
+
<br />
|
| 77 |
+
|
| 78 |
+
<h1 class="text-l font-bold mb-4">Disaster Affection History</h1>
|
| 79 |
+
<canvas id="dLinearChart" class="bg-transparent rounded-xl"></canvas>
|
| 80 |
+
|
| 81 |
+
<!-- DAP -->
|
| 82 |
+
|
| 83 |
+
<h2 class="text-l font-bold mt-8 mb-4">
|
| 84 |
+
Disaster Affection Probability (DAP)
|
| 85 |
+
</h2>
|
| 86 |
+
|
| 87 |
+
<canvas id="DAPRadarChart" class="bg-transparent rounded-xl"></canvas>
|
| 88 |
+
|
| 89 |
+
<h2 class="text-md mt-8 mb-4">Disaster Affection Probability (DAP)</h2>
|
| 90 |
+
|
| 91 |
+
<div class="relative overflow-x-auto rounded-xl">
|
| 92 |
+
<table
|
| 93 |
+
class="w-full text-sm text-left rtl:text-right text-gray-500 dark:text-gray-400"
|
| 94 |
+
>
|
| 95 |
+
<thead
|
| 96 |
+
class="text-xs text-gray-700 uppercase bg-gray-50 dark:bg-gray-700 dark:text-gray-400"
|
| 97 |
+
>
|
| 98 |
+
<tr>
|
| 99 |
+
<th scope="col" class="px-6 py-3">Order</th>
|
| 100 |
+
<th scope="col" class="px-6 py-3">Finance</th>
|
| 101 |
+
<th scope="col" class="px-6 py-3">Score</th>
|
| 102 |
+
<th scope="col" class="px-6 py-3">Wind</th>
|
| 103 |
+
<th scope="col" class="px-6 py-3">Flood</th>
|
| 104 |
+
<th scope="col" class="px-6 py-3">Air Pollution</th>
|
| 105 |
+
</tr>
|
| 106 |
+
</thead>
|
| 107 |
+
<tbody>
|
| 108 |
+
<tr
|
| 109 |
+
class="bg-amber-300 border-b dark:bg-gray-800 dark:border-gray-700"
|
| 110 |
+
>
|
| 111 |
+
<td class="px-6 py-4">1</td>
|
| 112 |
+
<th
|
| 113 |
+
scope="row"
|
| 114 |
+
class="px-6 py-4 font-medium text-black whitespace-nowrap dark:text-white"
|
| 115 |
+
>
|
| 116 |
+
Inventories
|
| 117 |
+
</th>
|
| 118 |
+
<td class="px-6 py-4">0.896</td>
|
| 119 |
+
<td class="px-6 py-4">0.140</td>
|
| 120 |
+
<td class="px-6 py-4">0.372</td>
|
| 121 |
+
<td class="px-6 py-4">0.486</td>
|
| 122 |
+
</tr>
|
| 123 |
+
<tr
|
| 124 |
+
class="bg-amber-200 border-b dark:bg-gray-800 dark:border-gray-700"
|
| 125 |
+
>
|
| 126 |
+
<td class="px-6 py-4">2</td>
|
| 127 |
+
<th
|
| 128 |
+
scope="row"
|
| 129 |
+
class="px-6 py-4 font-medium text-black whitespace-nowrap dark:text-white"
|
| 130 |
+
>
|
| 131 |
+
Total assets
|
| 132 |
+
</th>
|
| 133 |
+
<td class="px-6 py-4">0.865</td>
|
| 134 |
+
<td class="px-6 py-4">0.420</td>
|
| 135 |
+
<td class="px-6 py-4">0.360</td>
|
| 136 |
+
<td class="px-6 py-4">0.218</td>
|
| 137 |
+
</tr>
|
| 138 |
+
<tr
|
| 139 |
+
class="bg-amber-100 border-b dark:bg-gray-800 dark:border-gray-700"
|
| 140 |
+
>
|
| 141 |
+
<td class="px-6 py-4">3</td>
|
| 142 |
+
<th
|
| 143 |
+
scope="row"
|
| 144 |
+
class="px-6 py-4 font-medium text-black whitespace-nowrap dark:text-white"
|
| 145 |
+
>
|
| 146 |
+
Cost of Revenue
|
| 147 |
+
</th>
|
| 148 |
+
<td class="px-6 py-4">0.859</td>
|
| 149 |
+
<td class="px-6 py-4">0.200</td>
|
| 150 |
+
<td class="px-6 py-4">0.158</td>
|
| 151 |
+
<td class="px-6 py-4">0.640</td>
|
| 152 |
+
</tr>
|
| 153 |
+
<tr class="bg-white border-b dark:bg-gray-800 dark:border-gray-700">
|
| 154 |
+
<td class="px-6 py-4">4</td>
|
| 155 |
+
<th
|
| 156 |
+
scope="row"
|
| 157 |
+
class="px-6 py-4 font-medium text-black whitespace-nowrap dark:text-white"
|
| 158 |
+
>
|
| 159 |
+
Revenue
|
| 160 |
+
</th>
|
| 161 |
+
<td class="px-6 py-4">0.851</td>
|
| 162 |
+
<td class="px-6 py-4">0.281</td>
|
| 163 |
+
<td class="px-6 py-4">0.155</td>
|
| 164 |
+
<td class="px-6 py-4">0.562</td>
|
| 165 |
+
</tr>
|
| 166 |
+
<tr class="bg-white border-b dark:bg-gray-800 dark:border-gray-700">
|
| 167 |
+
<td class="px-6 py-4">5</td>
|
| 168 |
+
<th
|
| 169 |
+
scope="row"
|
| 170 |
+
class="px-6 py-4 font-medium text-black whitespace-nowrap dark:text-white"
|
| 171 |
+
>
|
| 172 |
+
Total debts
|
| 173 |
+
</th>
|
| 174 |
+
<td class="px-6 py-4">0.844</td>
|
| 175 |
+
<td class="px-6 py-4">0.431</td>
|
| 176 |
+
<td class="px-6 py-4">0.358</td>
|
| 177 |
+
<td class="px-6 py-4">0.210</td>
|
| 178 |
+
</tr>
|
| 179 |
+
<tr class="bg-white border-b dark:bg-gray-800 dark:border-gray-700">
|
| 180 |
+
<td class="px-6 py-4">6</td>
|
| 181 |
+
<th
|
| 182 |
+
scope="row"
|
| 183 |
+
class="px-6 py-4 font-medium text-black whitespace-nowrap dark:text-white"
|
| 184 |
+
>
|
| 185 |
+
Cash and cash equivalents
|
| 186 |
+
</th>
|
| 187 |
+
<td class="px-6 py-4">0.807</td>
|
| 188 |
+
<td class="px-6 py-4">0.322</td>
|
| 189 |
+
<td class="px-6 py-4">0.313</td>
|
| 190 |
+
<td class="px-6 py-4">0.363</td>
|
| 191 |
+
</tr>
|
| 192 |
+
<tr class="bg-white border-b dark:bg-gray-800 dark:border-gray-700">
|
| 193 |
+
<td class="px-6 py-4">7</td>
|
| 194 |
+
<th
|
| 195 |
+
scope="row"
|
| 196 |
+
class="px-6 py-4 font-medium text-black whitespace-nowrap dark:text-white"
|
| 197 |
+
>
|
| 198 |
+
Cash Flow from Financing Activities
|
| 199 |
+
</th>
|
| 200 |
+
<td class="px-6 py-4">0.792</td>
|
| 201 |
+
<td class="px-6 py-4">0.307</td>
|
| 202 |
+
<td class="px-6 py-4">0.318</td>
|
| 203 |
+
<td class="px-6 py-4">0.373</td>
|
| 204 |
+
</tr>
|
| 205 |
+
<tr class="bg-white border-b dark:bg-gray-800 dark:border-gray-700">
|
| 206 |
+
<td class="px-6 py-4">8</td>
|
| 207 |
+
<th
|
| 208 |
+
scope="row"
|
| 209 |
+
class="px-6 py-4 font-medium text-black whitespace-nowrap dark:text-white"
|
| 210 |
+
>
|
| 211 |
+
Total current liabilities
|
| 212 |
+
</th>
|
| 213 |
+
<td class="px-6 py-4">0.765</td>
|
| 214 |
+
<td class="px-6 py-4">0.200</td>
|
| 215 |
+
<td class="px-6 py-4">0.412</td>
|
| 216 |
+
<td class="px-6 py-4">0.387</td>
|
| 217 |
+
</tr>
|
| 218 |
+
<tr class="bg-white border-b dark:bg-gray-800 dark:border-gray-700">
|
| 219 |
+
<td class="px-6 py-4">9</td>
|
| 220 |
+
<th
|
| 221 |
+
scope="row"
|
| 222 |
+
class="px-6 py-4 font-medium text-black whitespace-nowrap dark:text-white"
|
| 223 |
+
>
|
| 224 |
+
Total cost
|
| 225 |
+
</th>
|
| 226 |
+
<td class="px-6 py-4">0.734</td>
|
| 227 |
+
<td class="px-6 py-4">0.326</td>
|
| 228 |
+
<td class="px-6 py-4">0.148</td>
|
| 229 |
+
<td class="px-6 py-4">0.525</td>
|
| 230 |
+
</tr>
|
| 231 |
+
<tr class="bg-white border-b dark:bg-gray-800 dark:border-gray-700">
|
| 232 |
+
<td class="px-6 py-4">10</td>
|
| 233 |
+
<th
|
| 234 |
+
scope="row"
|
| 235 |
+
class="px-6 py-4 font-medium text-black whitespace-nowrap dark:text-white"
|
| 236 |
+
>
|
| 237 |
+
Profit
|
| 238 |
+
</th>
|
| 239 |
+
<td class="px-6 py-4">0.733</td>
|
| 240 |
+
<td class="px-6 py-4">0.274</td>
|
| 241 |
+
<td class="px-6 py-4">0.187</td>
|
| 242 |
+
<td class="px-6 py-4">0.537</td>
|
| 243 |
+
</tr>
|
| 244 |
+
<tr class="bg-white border-b dark:bg-gray-800 dark:border-gray-700">
|
| 245 |
+
<td class="px-6 py-4">11</td>
|
| 246 |
+
<th
|
| 247 |
+
scope="row"
|
| 248 |
+
class="px-6 py-4 font-medium text-black whitespace-nowrap dark:text-white"
|
| 249 |
+
>
|
| 250 |
+
Cash flow from operating activities
|
| 251 |
+
</th>
|
| 252 |
+
<td class="px-6 py-4">0.675</td>
|
| 253 |
+
<td class="px-6 py-4">0.274</td>
|
| 254 |
+
<td class="px-6 py-4">0.423</td>
|
| 255 |
+
<td class="px-6 py-4">0.301</td>
|
| 256 |
+
</tr>
|
| 257 |
+
<tr class="bg-white border-b dark:bg-gray-800 dark:border-gray-700">
|
| 258 |
+
<td class="px-6 py-4">12</td>
|
| 259 |
+
<th
|
| 260 |
+
scope="row"
|
| 261 |
+
class="px-6 py-4 font-medium text-black whitespace-nowrap dark:text-white"
|
| 262 |
+
>
|
| 263 |
+
Trade and other receivables
|
| 264 |
+
</th>
|
| 265 |
+
<td class="px-6 py-4">0.675</td>
|
| 266 |
+
<td class="px-6 py-4">0.385</td>
|
| 267 |
+
<td class="px-6 py-4">0.272</td>
|
| 268 |
+
<td class="px-6 py-4">0.342</td>
|
| 269 |
+
</tr>
|
| 270 |
+
<tr class="bg-white border-b dark:bg-gray-800 dark:border-gray-700">
|
| 271 |
+
<td class="px-6 py-4">13</td>
|
| 272 |
+
<th
|
| 273 |
+
scope="row"
|
| 274 |
+
class="px-6 py-4 font-medium text-black whitespace-nowrap dark:text-white"
|
| 275 |
+
>
|
| 276 |
+
Cash Flow from investing activities
|
| 277 |
+
</th>
|
| 278 |
+
<td class="px-6 py-4">0.650</td>
|
| 279 |
+
<td class="px-6 py-4">0.169</td>
|
| 280 |
+
<td class="px-6 py-4">0.375</td>
|
| 281 |
+
<td class="px-6 py-4">0.454</td>
|
| 282 |
+
</tr>
|
| 283 |
+
</tbody>
|
| 284 |
+
</table>
|
| 285 |
+
</div>
|
| 286 |
+
|
| 287 |
+
<!-- DQC -->
|
| 288 |
+
|
| 289 |
+
<h2 class="text-l font-bold mt-8 mb-4">
|
| 290 |
+
Disaster Quantity Coefficients (DQC)
|
| 291 |
+
</h2>
|
| 292 |
+
|
| 293 |
+
<canvas id="DQCBarChart" class="bg-transparent rounded-xl"></canvas>
|
| 294 |
+
|
| 295 |
+
<!--h2 class="text-md mt-8 mb-4">Disaster Quantity Coefficients (DQC)</h2>
|
| 296 |
+
|
| 297 |
+
<div class="relative overflow-x-auto rounded-xl">
|
| 298 |
+
<table
|
| 299 |
+
class="w-full text-sm text-left rtl:text-right text-gray-500 dark:text-gray-400"
|
| 300 |
+
>
|
| 301 |
+
<thead
|
| 302 |
+
class="text-xs text-gray-700 uppercase bg-gray-50 dark:bg-gray-700 dark:text-gray-400"
|
| 303 |
+
>
|
| 304 |
+
<tr>
|
| 305 |
+
<th scope="col" class="px-6 py-3">Product name</th>
|
| 306 |
+
<th scope="col" class="px-6 py-3">Color</th>
|
| 307 |
+
<th scope="col" class="px-6 py-3">Category</th>
|
| 308 |
+
<th scope="col" class="px-6 py-3">Price</th>
|
| 309 |
+
</tr>
|
| 310 |
+
</thead>
|
| 311 |
+
<tbody>
|
| 312 |
+
<tr class="bg-white border-b dark:bg-gray-800 dark:border-gray-700">
|
| 313 |
+
<th
|
| 314 |
+
scope="row"
|
| 315 |
+
class="px-6 py-4 font-medium text-black whitespace-nowrap dark:text-white"
|
| 316 |
+
>
|
| 317 |
+
Apple MacBook Pro 17"
|
| 318 |
+
</th>
|
| 319 |
+
<td class="px-6 py-4">Silver</td>
|
| 320 |
+
<td class="px-6 py-4">Laptop</td>
|
| 321 |
+
<td class="px-6 py-4">$2999</td>
|
| 322 |
+
</tr>
|
| 323 |
+
<tr class="bg-white border-b dark:bg-gray-800 dark:border-gray-700">
|
| 324 |
+
<th
|
| 325 |
+
scope="row"
|
| 326 |
+
class="px-6 py-4 font-medium text-black whitespace-nowrap dark:text-white"
|
| 327 |
+
>
|
| 328 |
+
Microsoft Surface Pro
|
| 329 |
+
</th>
|
| 330 |
+
<td class="px-6 py-4">White</td>
|
| 331 |
+
<td class="px-6 py-4">Laptop PC</td>
|
| 332 |
+
<td class="px-6 py-4">$1999</td>
|
| 333 |
+
</tr>
|
| 334 |
+
<tr class="bg-white dark:bg-gray-800">
|
| 335 |
+
<th
|
| 336 |
+
scope="row"
|
| 337 |
+
class="px-6 py-4 font-medium text-black whitespace-nowrap dark:text-white"
|
| 338 |
+
>
|
| 339 |
+
Magic Mouse 2
|
| 340 |
+
</th>
|
| 341 |
+
<td class="px-6 py-4">Black</td>
|
| 342 |
+
<td class="px-6 py-4">Accessories</td>
|
| 343 |
+
<td class="px-6 py-4">$99</td>
|
| 344 |
+
</tr>
|
| 345 |
+
</tbody>
|
| 346 |
+
</table>
|
| 347 |
+
</div-->
|
| 348 |
+
</div>
|
| 349 |
+
|
| 350 |
+
<!-- Fullscreen Map -->
|
| 351 |
+
<div id="map"></div>
|
| 352 |
+
|
| 353 |
+
<!--img
|
| 354 |
+
src="static/icon/logo.png"
|
| 355 |
+
alt="Top-right image"
|
| 356 |
+
class="absolute top-0 right-0 w-48 p-4"
|
| 357 |
+
/-->
|
| 358 |
+
|
| 359 |
+
<a href="index.html">
|
| 360 |
+
<img
|
| 361 |
+
src="static/icon/home.png"
|
| 362 |
+
id="goHome"
|
| 363 |
+
class="absolute bg-white backdrop-blur-sm bg-opacity-60 rounded-xl shadow-lg top-4 right-4 w-12 p-4 hover:bg-opacity-100 hover:cursor-pointer"
|
| 364 |
+
/>
|
| 365 |
+
</a>
|
| 366 |
+
|
| 367 |
+
<a href="analytics.html">
|
| 368 |
+
<img
|
| 369 |
+
src="static/icon/radar.png"
|
| 370 |
+
id="goOverView"
|
| 371 |
+
class="absolute bg-white backdrop-blur-sm bg-opacity-60 rounded-xl shadow-lg top-20 right-4 w-12 p-4 hover:bg-opacity-100 hover:cursor-pointer"
|
| 372 |
+
/>
|
| 373 |
+
</a>
|
| 374 |
+
|
| 375 |
+
<a href="locations.html">
|
| 376 |
+
<img
|
| 377 |
+
src="static/icon/location.png"
|
| 378 |
+
id="goLocation"
|
| 379 |
+
class="absolute bg-white backdrop-blur-sm bg-opacity-60 rounded-xl shadow-lg top-36 right-4 w-12 p-4 hover:bg-opacity-100 hover:cursor-pointer"
|
| 380 |
+
/>
|
| 381 |
+
</a>
|
| 382 |
+
|
| 383 |
+
<a href="forecast.html">
|
| 384 |
+
<img
|
| 385 |
+
src="static/icon/forecast.png"
|
| 386 |
+
id="goForecast"
|
| 387 |
+
class="absolute bg-white backdrop-blur-sm bg-opacity-60 rounded-xl shadow-lg top-52 right-4 w-12 p-4 hover:bg-opacity-100 hover:cursor-pointer"
|
| 388 |
+
/>
|
| 389 |
+
</a>
|
| 390 |
+
|
| 391 |
+
<img
|
| 392 |
+
src="static/icon/extent.png"
|
| 393 |
+
id="resetViewButton"
|
| 394 |
+
class="absolute bg-white backdrop-blur-sm bg-opacity-60 rounded-xl shadow-lg bottom-12 right-4 w-12 p-4 hover:bg-opacity-100 hover:cursor-pointer"
|
| 395 |
+
/>
|
| 396 |
+
|
| 397 |
+
<img
|
| 398 |
+
src="static/icon/play.png"
|
| 399 |
+
id="animateButton"
|
| 400 |
+
class="absolute bg-white backdrop-blur-sm bg-opacity-60 rounded-xl shadow-lg bottom-28 right-4 w-12 p-4 hover:bg-opacity-100 hover:cursor-pointer"
|
| 401 |
+
/>
|
| 402 |
+
|
| 403 |
+
<script>
|
| 404 |
+
let INIT_VIEW_STATE = {
|
| 405 |
+
longitude: 98.1339,
|
| 406 |
+
latitude: 10.863,
|
| 407 |
+
zoom: 5.594,
|
| 408 |
+
pitch: 48.3549,
|
| 409 |
+
bearing: -17.579,
|
| 410 |
+
};
|
| 411 |
+
|
| 412 |
+
var viewState = INIT_VIEW_STATE;
|
| 413 |
+
|
| 414 |
+
// LAYER
|
| 415 |
+
const layer = new deck.IconLayer({
|
| 416 |
+
id: "IconLayerFIRM",
|
| 417 |
+
data: "data/firm/location_homepro_do_2018-2024.json",
|
| 418 |
+
getColor: (d) => [Math.sqrt(d.exits), 140, 0],
|
| 419 |
+
getIcon: (d) => "marker",
|
| 420 |
+
getPosition: (d) => [d.lon, d.lat],
|
| 421 |
+
getSize: 24,
|
| 422 |
+
iconAtlas:
|
| 423 |
+
"https://raw.githubusercontent.com/visgl/deck.gl-data/master/website/icon-atlas.png",
|
| 424 |
+
iconMapping:
|
| 425 |
+
"https://raw.githubusercontent.com/visgl/deck.gl-data/master/website/icon-atlas.json",
|
| 426 |
+
pickable: true,
|
| 427 |
+
});
|
| 428 |
+
|
| 429 |
+
const province_layer_centroid = new deck.IconLayer({
|
| 430 |
+
id: "IconLayerCentriod",
|
| 431 |
+
data: "data/disaster/province_disaster_centroid.json",
|
| 432 |
+
getColor: (d) => [Math.sqrt(d.exits), 140, 0],
|
| 433 |
+
getIcon: (d) => "marker-warning",
|
| 434 |
+
getPosition: (d) => [d.lon, d.lat],
|
| 435 |
+
getSize: 24,
|
| 436 |
+
iconAtlas:
|
| 437 |
+
"https://raw.githubusercontent.com/visgl/deck.gl-data/master/website/icon-atlas.png",
|
| 438 |
+
iconMapping:
|
| 439 |
+
"https://raw.githubusercontent.com/visgl/deck.gl-data/master/website/icon-atlas.json",
|
| 440 |
+
pickable: false,
|
| 441 |
+
});
|
| 442 |
+
|
| 443 |
+
const firm_dis_arc = new deck.ArcLayer({
|
| 444 |
+
id: "ArcLayer",
|
| 445 |
+
data: "data/firm/homepro_disaster_network_map.json",
|
| 446 |
+
getSourcePosition: (d) => [d.feature_x, d.feature_y],
|
| 447 |
+
getTargetPosition: (d) => [d.nearest_x, d.nearest_y],
|
| 448 |
+
getSourceColor: (d) => [66, 135, 245],
|
| 449 |
+
getTargetColor: (d) => [252, 58, 84],
|
| 450 |
+
getWidth: 4,
|
| 451 |
+
pickable: false,
|
| 452 |
+
});
|
| 453 |
+
|
| 454 |
+
const province_boundary = new deck.GeoJsonLayer({
|
| 455 |
+
id: "GeoJsonLayer",
|
| 456 |
+
data: "data/common/province_admin_diva_sim.geojson",
|
| 457 |
+
pickable: false,
|
| 458 |
+
getLineColor: [0, 0, 0],
|
| 459 |
+
getLineWidth: 200,
|
| 460 |
+
getFillColor: [255, 255, 255, 0],
|
| 461 |
+
});
|
| 462 |
+
|
| 463 |
+
// Initialize Deck.GL
|
| 464 |
+
const deckInstance = new deck.DeckGL({
|
| 465 |
+
initialViewState: INIT_VIEW_STATE,
|
| 466 |
+
container: "map",
|
| 467 |
+
mapStyle:
|
| 468 |
+
"https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json",
|
| 469 |
+
controller: { doubleClickZoom: true, inertia: true },
|
| 470 |
+
onViewStateChange: (e) => {
|
| 471 |
+
viewState = e.viewState;
|
| 472 |
+
},
|
| 473 |
+
//getTooltip: ({object}) => object && object.name,
|
| 474 |
+
getTooltip,
|
| 475 |
+
layers: [
|
| 476 |
+
province_boundary,
|
| 477 |
+
firm_dis_arc,
|
| 478 |
+
province_layer_centroid,
|
| 479 |
+
layer,
|
| 480 |
+
],
|
| 481 |
+
});
|
| 482 |
+
|
| 483 |
+
function getTooltip({ object }) {
|
| 484 |
+
return (
|
| 485 |
+
object && {
|
| 486 |
+
html: `<h2 class="text-black">Place: ${object.name}</h2>`,
|
| 487 |
+
className: "rounded-lg shadow-lg",
|
| 488 |
+
style: {
|
| 489 |
+
backgroundColor: "#fff",
|
| 490 |
+
fontSize: "0.8em",
|
| 491 |
+
},
|
| 492 |
+
}
|
| 493 |
+
);
|
| 494 |
+
}
|
| 495 |
+
|
| 496 |
+
function rotateCameraRight() {
|
| 497 |
+
initialViewState = {
|
| 498 |
+
...viewState,
|
| 499 |
+
bearing: viewState.bearing - 20,
|
| 500 |
+
transitionDuration: 10000,
|
| 501 |
+
transitionInterpolator: new deck.LinearInterpolator(["bearing"]),
|
| 502 |
+
onTransitionEnd: rotateCameraLeft,
|
| 503 |
+
};
|
| 504 |
+
deckInstance.setProps({ initialViewState });
|
| 505 |
+
}
|
| 506 |
+
|
| 507 |
+
function rotateCameraLeft() {
|
| 508 |
+
initialViewState = {
|
| 509 |
+
...viewState,
|
| 510 |
+
bearing: viewState.bearing + 20,
|
| 511 |
+
transitionDuration: 10000,
|
| 512 |
+
transitionInterpolator: new deck.LinearInterpolator(["bearing"]),
|
| 513 |
+
onTransitionEnd: rotateCameraRight,
|
| 514 |
+
};
|
| 515 |
+
deckInstance.setProps({ initialViewState });
|
| 516 |
+
}
|
| 517 |
+
|
| 518 |
+
function resetCameraPosition() {
|
| 519 |
+
deckInstance.setProps({
|
| 520 |
+
initialViewState: {
|
| 521 |
+
...INIT_VIEW_STATE,
|
| 522 |
+
transitionInterpolator: new deck.FlyToInterpolator({ speed: 2 }),
|
| 523 |
+
transitionDuration: "auto",
|
| 524 |
+
},
|
| 525 |
+
});
|
| 526 |
+
}
|
| 527 |
+
|
| 528 |
+
const resetButton = document.querySelector("#resetViewButton");
|
| 529 |
+
resetButton.addEventListener("click", () => {
|
| 530 |
+
resetCameraPosition();
|
| 531 |
+
});
|
| 532 |
+
tippy("#resetViewButton", {
|
| 533 |
+
content: "Reset View",
|
| 534 |
+
placement: "left",
|
| 535 |
+
});
|
| 536 |
+
|
| 537 |
+
const animateButton = document.querySelector("#animateButton");
|
| 538 |
+
animateButton.addEventListener("click", () => {
|
| 539 |
+
rotateCameraLeft();
|
| 540 |
+
});
|
| 541 |
+
tippy("#animateButton", {
|
| 542 |
+
content: "Animate View",
|
| 543 |
+
placement: "left",
|
| 544 |
+
});
|
| 545 |
+
|
| 546 |
+
tippy("#goOverView", {
|
| 547 |
+
content: "FIRM Overview",
|
| 548 |
+
placement: "left",
|
| 549 |
+
});
|
| 550 |
+
tippy("#goLocation", {
|
| 551 |
+
content: "Location-Based",
|
| 552 |
+
placement: "left",
|
| 553 |
+
});
|
| 554 |
+
tippy("#goForecast", {
|
| 555 |
+
content: "Forecasting",
|
| 556 |
+
placement: "left",
|
| 557 |
+
});
|
| 558 |
+
</script>
|
| 559 |
+
|
| 560 |
+
<script>
|
| 561 |
+
// First Chart.js Configuration
|
| 562 |
+
const ctx = document.getElementById("DQCBarChart").getContext("2d");
|
| 563 |
+
const myChart = new Chart(ctx, {
|
| 564 |
+
type: "bar",
|
| 565 |
+
data: {
|
| 566 |
+
labels: [
|
| 567 |
+
"Cash Flow from investing activities",
|
| 568 |
+
"Cash flow from operating activities",
|
| 569 |
+
"Trade and other receivables",
|
| 570 |
+
"Total current liabilities",
|
| 571 |
+
"Total debts",
|
| 572 |
+
"Total assets",
|
| 573 |
+
"Cash Flow from Financing Activities",
|
| 574 |
+
"Inventories",
|
| 575 |
+
"Total cost",
|
| 576 |
+
"Revenue",
|
| 577 |
+
"Profit",
|
| 578 |
+
"Cost of Revenue",
|
| 579 |
+
"Cash and cash equivalents",
|
| 580 |
+
],
|
| 581 |
+
datasets: [
|
| 582 |
+
{
|
| 583 |
+
label: "Wind",
|
| 584 |
+
data: [-0.2422706118363361,
|
| 585 |
+
0.0944654213932851,
|
| 586 |
+
0.10946664573317823,
|
| 587 |
+
-0.2635881587808216,
|
| 588 |
+
1.6468128742085861,
|
| 589 |
+
1.81343360114032,
|
| 590 |
+
0.6844300257725531,
|
| 591 |
+
-0.7277852127157011,
|
| 592 |
+
2.2367857616664835,
|
| 593 |
+
2.488924354367551,
|
| 594 |
+
0.106834547304031,
|
| 595 |
+
1.1691284243686468,
|
| 596 |
+
0.885037040855672],
|
| 597 |
+
},
|
| 598 |
+
{
|
| 599 |
+
label: "Flood",
|
| 600 |
+
data: [0.8600522301934065,
|
| 601 |
+
-0.5588222574508711,
|
| 602 |
+
-0.06795048991347222,
|
| 603 |
+
0.8115310593522213,
|
| 604 |
+
5.861538708787576,
|
| 605 |
+
5.460325579030252,
|
| 606 |
+
8.377749342537179,
|
| 607 |
+
1.3362524044153352,
|
| 608 |
+
-2.7475583580473337,
|
| 609 |
+
-3.9853109972001706,
|
| 610 |
+
-0.9466984525926432,
|
| 611 |
+
-3.385174369728646,
|
| 612 |
+
3.9789016460835334],
|
| 613 |
+
},
|
| 614 |
+
{
|
| 615 |
+
label: "Pollution",
|
| 616 |
+
data: [2.1933516572229355,
|
| 617 |
+
-2.4879927846021577,
|
| 618 |
+
-0.6000178704859911,
|
| 619 |
+
-6.396226349326616,
|
| 620 |
+
2.3073451589071494,
|
| 621 |
+
0.3808370479344142,
|
| 622 |
+
8.911713608602666,
|
| 623 |
+
-2.6315086036282316,
|
| 624 |
+
-15.640730983677106,
|
| 625 |
+
-20.120868745704833,
|
| 626 |
+
-3.2905810349601716,
|
| 627 |
+
-11.649785403267158,
|
| 628 |
+
-0.22138555929730494],
|
| 629 |
+
},
|
| 630 |
+
],
|
| 631 |
+
},
|
| 632 |
+
options: {
|
| 633 |
+
indexAxis: "y",
|
| 634 |
+
scales: {
|
| 635 |
+
x: {
|
| 636 |
+
stacked: true,
|
| 637 |
+
},
|
| 638 |
+
y: {
|
| 639 |
+
stacked: true,
|
| 640 |
+
},
|
| 641 |
+
|
| 642 |
+
},
|
| 643 |
+
responsive: true,
|
| 644 |
+
plugins: {
|
| 645 |
+
legend: {
|
| 646 |
+
labels: {
|
| 647 |
+
// This more specific font property overrides the global property
|
| 648 |
+
font: {
|
| 649 |
+
size: 16,
|
| 650 |
+
color: "rgb(0, 0, 0)",
|
| 651 |
+
},
|
| 652 |
+
},
|
| 653 |
+
},
|
| 654 |
+
},
|
| 655 |
+
},
|
| 656 |
+
});
|
| 657 |
+
|
| 658 |
+
// Second Chart.js Configuration
|
| 659 |
+
const ctx2 = document.getElementById("dLinearChart").getContext("2d");
|
| 660 |
+
const myChart2 = new Chart(ctx2, {
|
| 661 |
+
type: "line",
|
| 662 |
+
data: {
|
| 663 |
+
labels: ["2018", "2019", "2020", "2021", "2022", "2023"],
|
| 664 |
+
datasets: [
|
| 665 |
+
{
|
| 666 |
+
label: "Wind",
|
| 667 |
+
data: [
|
| 668 |
+
11.349588236860292, 101.0963775457162, 162.01327277250004,
|
| 669 |
+
132.45610317862463, 157.62608925639108, 251.60793283708682,
|
| 670 |
+
],
|
| 671 |
+
backgroundColor: "rgba(255, 105, 105, 0.2)",
|
| 672 |
+
borderColor: "rgba(255, 105, 105, 1)",
|
| 673 |
+
borderWidth: 1,
|
| 674 |
+
fill: true,
|
| 675 |
+
},
|
| 676 |
+
{
|
| 677 |
+
label: "Flood",
|
| 678 |
+
data: [
|
| 679 |
+
22.406498185854037, 13.110608395699153, 93.24722895737878,
|
| 680 |
+
125.18428792817156, 94.9681724109333, 90.2725237103977,
|
| 681 |
+
],
|
| 682 |
+
backgroundColor: "rgba(118, 77, 255, 0.2)",
|
| 683 |
+
borderColor: "rgba(118, 77, 255, 1)",
|
| 684 |
+
borderWidth: 1,
|
| 685 |
+
fill: true,
|
| 686 |
+
},
|
| 687 |
+
{
|
| 688 |
+
label: "Air Pollution",
|
| 689 |
+
data: [
|
| 690 |
+
0.0, 43.43953701671832, 72.33746458491377, 18.70575997192916,
|
| 691 |
+
21.063430673179404, 36.01993483269402,
|
| 692 |
+
],
|
| 693 |
+
backgroundColor: "rgba(112, 112, 112, 0.2)",
|
| 694 |
+
borderColor: "rgba(112, 112, 112, 1)",
|
| 695 |
+
borderWidth: 1,
|
| 696 |
+
fill: true,
|
| 697 |
+
},
|
| 698 |
+
],
|
| 699 |
+
},
|
| 700 |
+
options: {
|
| 701 |
+
scales: {
|
| 702 |
+
y: {
|
| 703 |
+
beginAtZero: true,
|
| 704 |
+
},
|
| 705 |
+
},
|
| 706 |
+
plugins: {
|
| 707 |
+
legend: {
|
| 708 |
+
labels: {
|
| 709 |
+
// This more specific font property overrides the global property
|
| 710 |
+
font: {
|
| 711 |
+
size: 14,
|
| 712 |
+
color: "rgb(0, 0, 0)",
|
| 713 |
+
},
|
| 714 |
+
},
|
| 715 |
+
},
|
| 716 |
+
},
|
| 717 |
+
},
|
| 718 |
+
});
|
| 719 |
+
|
| 720 |
+
const ctx3 = document.getElementById("DAPRadarChart").getContext("2d");
|
| 721 |
+
const myChart3 = new Chart(ctx3, {
|
| 722 |
+
type: "radar",
|
| 723 |
+
data: {
|
| 724 |
+
labels: [
|
| 725 |
+
"Inventories",
|
| 726 |
+
"Total debts",
|
| 727 |
+
"Profit",
|
| 728 |
+
"Revenue",
|
| 729 |
+
"Total assets",
|
| 730 |
+
],
|
| 731 |
+
datasets: [
|
| 732 |
+
{
|
| 733 |
+
label: "Wind",
|
| 734 |
+
data: [
|
| 735 |
+
0.09228310871019875, 0.4131043958522932, 0.2905541600731763,
|
| 736 |
+
0.3482483885150638, 0.3605794167223425,
|
| 737 |
+
],
|
| 738 |
+
fill: true,
|
| 739 |
+
backgroundColor: "rgba(255, 105, 105, 0.2)",
|
| 740 |
+
borderColor: "rgb(255, 105, 105)",
|
| 741 |
+
pointBackgroundColor: "rgb(255, 105, 105)",
|
| 742 |
+
pointBorderColor: "#fff",
|
| 743 |
+
pointHoverBackgroundColor: "#fff",
|
| 744 |
+
pointHoverBorderColor: "rgb(255, 105, 105)",
|
| 745 |
+
},
|
| 746 |
+
{
|
| 747 |
+
label: "Flood",
|
| 748 |
+
data: [
|
| 749 |
+
0.43508697798242224, 0.38063025794277516, 0.1759184017105713,
|
| 750 |
+
0.0994554869665615, 0.452150773661031,
|
| 751 |
+
],
|
| 752 |
+
fill: true,
|
| 753 |
+
backgroundColor: "rgba(118, 77, 255, 0.2)",
|
| 754 |
+
borderColor: "rgb(118, 77, 255)",
|
| 755 |
+
pointBackgroundColor: "rgb(118, 77, 255)",
|
| 756 |
+
pointBorderColor: "#fff",
|
| 757 |
+
pointHoverBackgroundColor: "#fff",
|
| 758 |
+
pointHoverBorderColor: "rgb(118, 77, 255)",
|
| 759 |
+
},
|
| 760 |
+
{
|
| 761 |
+
label: "Air Pollution",
|
| 762 |
+
data: [
|
| 763 |
+
0.47262991330737897, 0.20626534620493175, 0.5335274382162524,
|
| 764 |
+
0.5522961245183747, 0.18726980961662648,
|
| 765 |
+
],
|
| 766 |
+
fill: true,
|
| 767 |
+
backgroundColor: "rgba(112, 112, 112, 0.2)",
|
| 768 |
+
borderColor: "rgb(112, 112, 112)",
|
| 769 |
+
pointBackgroundColor: "rgb(112, 112, 112)",
|
| 770 |
+
pointBorderColor: "#fff",
|
| 771 |
+
pointHoverBackgroundColor: "#fff",
|
| 772 |
+
pointHoverBorderColor: "rgb(112, 112, 112)",
|
| 773 |
+
},
|
| 774 |
+
],
|
| 775 |
+
},
|
| 776 |
+
options: {
|
| 777 |
+
elements: {
|
| 778 |
+
line: {
|
| 779 |
+
borderWidth: 3,
|
| 780 |
+
},
|
| 781 |
+
},
|
| 782 |
+
plugins: {
|
| 783 |
+
legend: {
|
| 784 |
+
labels: {
|
| 785 |
+
// This more specific font property overrides the global property
|
| 786 |
+
font: {
|
| 787 |
+
size: 14,
|
| 788 |
+
color: "rgb(0, 0, 0)",
|
| 789 |
+
},
|
| 790 |
+
},
|
| 791 |
+
},
|
| 792 |
+
},
|
| 793 |
+
},
|
| 794 |
+
});
|
| 795 |
+
</script>
|
| 796 |
+
</body>
|
| 797 |
+
</html>
|
data/.DS_Store
ADDED
|
Binary file (8.2 kB). View file
|
|
|
data/common/province_admin_diva.cpg
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
UTF-8
|
data/common/province_admin_diva.dbf
ADDED
|
Binary file (3.99 kB). View file
|
|
|
data/common/province_admin_diva.geojson
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a27ebe84673d0ca70d41874424af3761637409688d214df2c224ae7e1450c254
|
| 3 |
+
size 26849964
|
data/common/province_admin_diva.prj
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]
|
data/common/province_admin_diva.qmd
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
|
| 2 |
+
<qgis version="3.38.3-Grenoble">
|
| 3 |
+
<identifier></identifier>
|
| 4 |
+
<parentidentifier></parentidentifier>
|
| 5 |
+
<language></language>
|
| 6 |
+
<type>dataset</type>
|
| 7 |
+
<title></title>
|
| 8 |
+
<abstract></abstract>
|
| 9 |
+
<links/>
|
| 10 |
+
<dates/>
|
| 11 |
+
<fees></fees>
|
| 12 |
+
<encoding></encoding>
|
| 13 |
+
<crs>
|
| 14 |
+
<spatialrefsys nativeFormat="Wkt">
|
| 15 |
+
<wkt>GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]]</wkt>
|
| 16 |
+
<proj4>+proj=longlat +datum=WGS84 +no_defs</proj4>
|
| 17 |
+
<srsid>3452</srsid>
|
| 18 |
+
<srid>4326</srid>
|
| 19 |
+
<authid>EPSG:4326</authid>
|
| 20 |
+
<description>WGS 84</description>
|
| 21 |
+
<projectionacronym>longlat</projectionacronym>
|
| 22 |
+
<ellipsoidacronym>EPSG:7030</ellipsoidacronym>
|
| 23 |
+
<geographicflag>true</geographicflag>
|
| 24 |
+
</spatialrefsys>
|
| 25 |
+
</crs>
|
| 26 |
+
<extent/>
|
| 27 |
+
</qgis>
|
data/common/province_admin_diva.shp
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a123887a2c0f6bfd3add943f593c27a613b21328efa414fcafc33adae9c6b817
|
| 3 |
+
size 9700852
|
data/common/province_admin_diva.shx
ADDED
|
Binary file (716 Bytes). View file
|
|
|
data/common/province_admin_diva_sim.geojson
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
data/common/province_admin_diva_sim.qmd
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
|
| 2 |
+
<qgis version="3.38.3-Grenoble">
|
| 3 |
+
<identifier></identifier>
|
| 4 |
+
<parentidentifier></parentidentifier>
|
| 5 |
+
<language></language>
|
| 6 |
+
<type>dataset</type>
|
| 7 |
+
<title></title>
|
| 8 |
+
<abstract></abstract>
|
| 9 |
+
<contact>
|
| 10 |
+
<name></name>
|
| 11 |
+
<organization></organization>
|
| 12 |
+
<position></position>
|
| 13 |
+
<voice></voice>
|
| 14 |
+
<fax></fax>
|
| 15 |
+
<email></email>
|
| 16 |
+
<role></role>
|
| 17 |
+
</contact>
|
| 18 |
+
<links/>
|
| 19 |
+
<dates/>
|
| 20 |
+
<fees></fees>
|
| 21 |
+
<encoding></encoding>
|
| 22 |
+
<crs>
|
| 23 |
+
<spatialrefsys nativeFormat="Wkt">
|
| 24 |
+
<wkt>GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]]</wkt>
|
| 25 |
+
<proj4>+proj=longlat +datum=WGS84 +no_defs</proj4>
|
| 26 |
+
<srsid>3452</srsid>
|
| 27 |
+
<srid>4326</srid>
|
| 28 |
+
<authid>EPSG:4326</authid>
|
| 29 |
+
<description>WGS 84</description>
|
| 30 |
+
<projectionacronym>longlat</projectionacronym>
|
| 31 |
+
<ellipsoidacronym>EPSG:7030</ellipsoidacronym>
|
| 32 |
+
<geographicflag>true</geographicflag>
|
| 33 |
+
</spatialrefsys>
|
| 34 |
+
</crs>
|
| 35 |
+
<extent>
|
| 36 |
+
<spatial miny="179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368" minz="0" maxy="-179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368" maxx="-179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368" minx="179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368" maxz="0" dimensions="2" crs="EPSG:4326"/>
|
| 37 |
+
<temporal>
|
| 38 |
+
<period>
|
| 39 |
+
<start></start>
|
| 40 |
+
<end></end>
|
| 41 |
+
</period>
|
| 42 |
+
</temporal>
|
| 43 |
+
</extent>
|
| 44 |
+
</qgis>
|
data/common/province_admin_sim.geojson
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
data/disaster/province_disaster_centroid.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
[{"OBJECTID":1,"PROV_CODE":10,"PROV_NAM_T":"กรุงเทพมหานคร","PROV_NAM_E":"Bangkok","ProvinceID":10,"ProvinceTH":"กรุงเทพมหานคร","ProvinceEN":"Bangkok","FormalRegi":"ภาคกลาง","F4Region":"ภาคกลาง","MetroRegio":"กรุงเทพมหานครและปริมณฑล","wd_2018":0,"wd_2019":0,"wd_2020":1,"wd_2021":0,"wd_2022":1,"wd_2023":0,"wd_2024":0,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":2,"fl_2022":0,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":13.7714085435,"lon":100.6225883871},{"OBJECTID":2,"PROV_CODE":11,"PROV_NAM_T":"จ.สมุทรปราการ","PROV_NAM_E":"Changwat Samut Prakan","ProvinceID":11,"ProvinceTH":"สมุทรปราการ","ProvinceEN":"Samut Prakan","FormalRegi":"ภาคกลาง","F4Region":"ภาคกลาง","MetroRegio":"กรุงเทพมหานครและปริมณฑล","wd_2018":0,"wd_2019":0,"wd_2020":1,"wd_2021":2,"wd_2022":2,"wd_2023":2,"wd_2024":1,"fl_2018":0,"fl_2019":0,"fl_2020":1,"fl_2021":1,"fl_2022":1,"fl_2023":2,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":13.5969152043,"lon":100.7090928062},{"OBJECTID":3,"PROV_CODE":12,"PROV_NAM_T":"จ.นนทบุรี","PROV_NAM_E":"Changwat Nonthaburi","ProvinceID":12,"ProvinceTH":"นนทบุรี","ProvinceEN":"Nonthaburi","FormalRegi":"ภาคกลาง","F4Region":"ภาคกลาง","MetroRegio":"กรุงเทพมหานครและปริมณฑล","wd_2018":0,"wd_2019":0,"wd_2020":0,"wd_2021":0,"wd_2022":0,"wd_2023":0,"wd_2024":1,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":0,"fl_2022":2,"fl_2023":1,"fl_2024":0,"pm_2018":0,"pm_2019":1,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":13.9244928205,"lon":100.3924249516},{"OBJECTID":4,"PROV_CODE":13,"PROV_NAM_T":"จ.ปทุมธานี","PROV_NAM_E":"Changwat Pathum Thani","ProvinceID":13,"ProvinceTH":"ปทุมธานี","ProvinceEN":"Pathum Thani","FormalRegi":"ภาคกลาง","F4Region":"ภาคกลาง","MetroRegio":"กรุงเทพมหานครและปริมณฑล","wd_2018":0,"wd_2019":2,"wd_2020":0,"wd_2021":0,"wd_2022":0,"wd_2023":2,"wd_2024":2,"fl_2018":0,"fl_2019":0,"fl_2020":1,"fl_2021":3,"fl_2022":0,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":6,"pm_2021":0,"pm_2022":2,"pm_2023":2,"pm_2024":0,"lat":14.0649785673,"lon":100.6818293226},{"OBJECTID":5,"PROV_CODE":14,"PROV_NAM_T":"จ.พระนครศรีอยุธยา","PROV_NAM_E":"Changwat Phra Nakhon Si Ayutthaya","ProvinceID":14,"ProvinceTH":"พระนครศรีอยุธยา","ProvinceEN":"Phra Nakhon Si Ayutthaya","FormalRegi":"ภาคกลาง","F4Region":"ภาคกลาง","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":0,"wd_2020":0,"wd_2021":1,"wd_2022":1,"wd_2023":2,"wd_2024":2,"fl_2018":1,"fl_2019":0,"fl_2020":0,"fl_2021":0,"fl_2022":1,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":3,"pm_2021":0,"pm_2022":1,"pm_2023":4,"pm_2024":1,"lat":14.3451364953,"lon":100.5270207199},{"OBJECTID":6,"PROV_CODE":15,"PROV_NAM_T":"จ.อ่างทอง","PROV_NAM_E":"Changwat Ang Thong","ProvinceID":15,"ProvinceTH":"อ่างทอง","ProvinceEN":"Ang Thong","FormalRegi":"ภาคกลาง","F4Region":"ภาคกลาง","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":0,"wd_2020":0,"wd_2021":4,"wd_2022":3,"wd_2023":1,"wd_2024":0,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":4,"fl_2022":0,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":14.6241011627,"lon":100.3480777551},{"OBJECTID":7,"PROV_CODE":16,"PROV_NAM_T":"จ.ลพบุรี","PROV_NAM_E":"Changwat Lopburi","ProvinceID":16,"ProvinceTH":"ลพบุรี","ProvinceEN":"Lop Buri","FormalRegi":"ภาคกลาง","F4Region":"ภาคกลาง","MetroRegio":"ต่างจังหวัด","wd_2018":1,"wd_2019":6,"wd_2020":3,"wd_2021":4,"wd_2022":0,"wd_2023":3,"wd_2024":2,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":2,"fl_2022":1,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":15.1096808024,"lon":100.9077283536},{"OBJECTID":8,"PROV_CODE":17,"PROV_NAM_T":"จ.สิงห์บุรี","PROV_NAM_E":"Changwat Singburi","ProvinceID":17,"ProvinceTH":"สิงห์บุรี","ProvinceEN":"Sing Buri","FormalRegi":"ภาคกลาง","F4Region":"ภาคกลาง","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":0,"wd_2020":3,"wd_2021":3,"wd_2022":3,"wd_2023":1,"wd_2024":0,"fl_2018":0,"fl_2019":0,"fl_2020":1,"fl_2021":0,"fl_2022":0,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":14.9124112414,"lon":100.34718432},{"OBJECTID":9,"PROV_CODE":18,"PROV_NAM_T":"จ.ชัยนาท","PROV_NAM_E":"Changwat Chainat","ProvinceID":18,"ProvinceTH":"ชัยนาท","ProvinceEN":"Chai Nat","FormalRegi":"ภาคกลาง","F4Region":"ภาคกลาง","MetroRegio":"ต่างจังหวัด","wd_2018":1,"wd_2019":0,"wd_2020":0,"wd_2021":2,"wd_2022":5,"wd_2023":3,"wd_2024":1,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":0,"fl_2022":0,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":2,"pm_2020":1,"pm_2021":0,"pm_2022":0,"pm_2023":1,"pm_2024":0,"lat":15.13280424,"lon":100.0278767822},{"OBJECTID":10,"PROV_CODE":19,"PROV_NAM_T":"จ.สระบุรี","PROV_NAM_E":"Changwat Saraburi","ProvinceID":19,"ProvinceTH":"สระบุรี","ProvinceEN":"Saraburi","FormalRegi":"ภาคกลาง","F4Region":"ภาคกลาง","MetroRegio":"ต่างจังหวัด","wd_2018":1,"wd_2019":1,"wd_2020":3,"wd_2021":4,"wd_2022":0,"wd_2023":1,"wd_2024":0,"fl_2018":0,"fl_2019":0,"fl_2020":1,"fl_2021":4,"fl_2022":0,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":1,"pm_2024":1,"lat":14.6284304583,"lon":101.0174317367},{"OBJECTID":11,"PROV_CODE":20,"PROV_NAM_T":"จ.ชลบุรี","PROV_NAM_E":"Changwat Chonburi","ProvinceID":20,"ProvinceTH":"ชลบุรี","ProvinceEN":"Chon Buri","FormalRegi":"ภาคตะวันออก","F4Region":"ภาคกลาง","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":0,"wd_2020":3,"wd_2021":3,"wd_2022":3,"wd_2023":1,"wd_2024":1,"fl_2018":0,"fl_2019":0,"fl_2020":1,"fl_2021":0,"fl_2022":4,"fl_2023":0,"fl_2024":1,"pm_2018":0,"pm_2019":2,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":13.1915689314,"lon":101.2028556535},{"OBJECTID":12,"PROV_CODE":21,"PROV_NAM_T":"จ.ระยอง","PROV_NAM_E":"Changwat Rayong","ProvinceID":21,"ProvinceTH":"ระยอง","ProvinceEN":"Rayong","FormalRegi":"ภาคตะวันออก","F4Region":"ภาคกลาง","MetroRegio":"ต่างจังหวัด","wd_2018":1,"wd_2019":0,"wd_2020":0,"wd_2021":1,"wd_2022":1,"wd_2023":6,"wd_2024":0,"fl_2018":0,"fl_2019":0,"fl_2020":1,"fl_2021":0,"fl_2022":0,"fl_2023":2,"fl_2024":1,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":6,"pm_2022":1,"pm_2023":0,"pm_2024":0,"lat":12.8534177497,"lon":101.428396426},{"OBJECTID":13,"PROV_CODE":22,"PROV_NAM_T":"จ.จันทบุรี","PROV_NAM_E":"Changwat Chanthaburi","ProvinceID":22,"ProvinceTH":"จันทบุรี","ProvinceEN":"Chanthaburi","FormalRegi":"ภาคตะวันออก","F4Region":"ภาคกลาง","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":0,"wd_2020":1,"wd_2021":0,"wd_2022":2,"wd_2023":0,"wd_2024":0,"fl_2018":0,"fl_2019":3,"fl_2020":2,"fl_2021":2,"fl_2022":2,"fl_2023":3,"fl_2024":2,"pm_2018":0,"pm_2019":3,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":1,"pm_2024":0,"lat":12.8811626865,"lon":102.1298376818},{"OBJECTID":14,"PROV_CODE":23,"PROV_NAM_T":"จ.ตราด","PROV_NAM_E":"Changwat Trat","ProvinceID":23,"ProvinceTH":"ตราด","ProvinceEN":"Trat","FormalRegi":"ภาคตะวันออก","F4Region":"ภาคกลาง","MetroRegio":"ต่างจังหวัด","wd_2018":1,"wd_2019":2,"wd_2020":0,"wd_2021":0,"wd_2022":1,"wd_2023":1,"wd_2024":1,"fl_2018":0,"fl_2019":2,"fl_2020":0,"fl_2021":0,"fl_2022":2,"fl_2023":1,"fl_2024":2,"pm_2018":0,"pm_2019":1,"pm_2020":1,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":12.3174339906,"lon":102.5207812511},{"OBJECTID":15,"PROV_CODE":24,"PROV_NAM_T":"จ.ฉะเชิงเทรา","PROV_NAM_E":"Changwat Chachoengsao","ProvinceID":24,"ProvinceTH":"ฉะเชิงเทรา","ProvinceEN":"Chachoengsao","FormalRegi":"ภาคตะวันออก","F4Region":"ภาคกลาง","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":0,"wd_2020":1,"wd_2021":1,"wd_2022":0,"wd_2023":2,"wd_2024":0,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":0,"fl_2022":0,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":2,"pm_2020":7,"pm_2021":1,"pm_2022":0,"pm_2023":1,"pm_2024":0,"lat":13.6066566677,"lon":101.4252622946},{"OBJECTID":16,"PROV_CODE":25,"PROV_NAM_T":"จ.ปราจีนบุรี","PROV_NAM_E":"Changwat Prachinburi","ProvinceID":25,"ProvinceTH":"ปราจีนบุรี","ProvinceEN":"Prachin Buri","FormalRegi":"ภาคตะวันออก","F4Region":"ภาคกลาง","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":1,"wd_2020":1,"wd_2021":1,"wd_2022":1,"wd_2023":11,"wd_2024":2,"fl_2018":0,"fl_2019":0,"fl_2020":6,"fl_2021":4,"fl_2022":1,"fl_2023":4,"fl_2024":7,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":14.0481508864,"lon":101.6480468463},{"OBJECTID":17,"PROV_CODE":26,"PROV_NAM_T":"จ.นครนายก","PROV_NAM_E":"Changwat Nakhon Nayok","ProvinceID":26,"ProvinceTH":"นครนายก","ProvinceEN":"Nakhon Nayok","FormalRegi":"ภาคกลาง","F4Region":"ภาคกลาง","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":0,"wd_2020":0,"wd_2021":1,"wd_2022":1,"wd_2023":2,"wd_2024":0,"fl_2018":0,"fl_2019":1,"fl_2020":0,"fl_2021":0,"fl_2022":0,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":1,"pm_2020":1,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":14.217273464,"lon":101.1711772101},{"OBJECTID":18,"PROV_CODE":27,"PROV_NAM_T":"จ.สระแก้ว","PROV_NAM_E":"Changwat Srakaeo","ProvinceID":27,"ProvinceTH":"สระแก้ว","ProvinceEN":"Sa Kaeo","FormalRegi":"ภาคตะวันออก","F4Region":"ภาคกลาง","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":2,"wd_2020":1,"wd_2021":0,"wd_2022":0,"wd_2023":2,"wd_2024":0,"fl_2018":0,"fl_2019":0,"fl_2020":3,"fl_2021":1,"fl_2022":2,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":3,"pm_2024":1,"lat":13.788925519,"lon":102.3220517471},{"OBJECTID":19,"PROV_CODE":30,"PROV_NAM_T":"จ.นครราชสีมา","PROV_NAM_E":"Changwat Nakhon Ratchasima","ProvinceID":30,"ProvinceTH":"นครราชสีมา","ProvinceEN":"Nakhon Ratchasima","FormalRegi":"ภาคตะวันออกเฉียงเหนือ","F4Region":"ภาคตะวันออกเฉียงเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":3,"wd_2020":5,"wd_2021":2,"wd_2022":2,"wd_2023":1,"wd_2024":1,"fl_2018":0,"fl_2019":0,"fl_2020":3,"fl_2021":1,"fl_2022":1,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":1,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":1,"lat":14.9577464741,"lon":102.1099590133},{"OBJECTID":20,"PROV_CODE":31,"PROV_NAM_T":"จ.บุรีรัมย์","PROV_NAM_E":"Changwat Burirum","ProvinceID":31,"ProvinceTH":"บุรีรัมย์","ProvinceEN":"Buri Ram","FormalRegi":"ภาคตะวันออกเฉียงเหนือ","F4Region":"ภาคตะวันออกเฉียงเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":3,"wd_2020":0,"wd_2021":0,"wd_2022":1,"wd_2023":1,"wd_2024":1,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":0,"fl_2022":2,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":14.8222502348,"lon":102.9572848135},{"OBJECTID":21,"PROV_CODE":32,"PROV_NAM_T":"จ.สุรินทร์","PROV_NAM_E":"Changwat Surin","ProvinceID":32,"ProvinceTH":"สุรินทร์","ProvinceEN":"Surin","FormalRegi":"ภาคตะวันออกเฉียงเหนือ","F4Region":"ภาคตะวันออกเฉียงเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":2,"wd_2020":0,"wd_2021":1,"wd_2022":2,"wd_2023":0,"wd_2024":0,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":0,"fl_2022":0,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":14.8867226417,"lon":103.6553081775},{"OBJECTID":22,"PROV_CODE":33,"PROV_NAM_T":"จ.ศรีสะเกษ","PROV_NAM_E":"Changwat Sisaket","ProvinceID":33,"ProvinceTH":"ศรีสะเกษ","ProvinceEN":"Si Sa Ket","FormalRegi":"ภาคตะวันออกเฉียงเหนือ","F4Region":"ภาคตะวันออกเฉียงเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":3,"wd_2020":3,"wd_2021":1,"wd_2022":2,"wd_2023":0,"wd_2024":0,"fl_2018":0,"fl_2019":0,"fl_2020":3,"fl_2021":2,"fl_2022":0,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":14.8569901616,"lon":104.3684147972},{"OBJECTID":23,"PROV_CODE":34,"PROV_NAM_T":"จ.อุบลราชธานี","PROV_NAM_E":"Changwat Ubon Ratchathani","ProvinceID":34,"ProvinceTH":"อุบลราชธานี","ProvinceEN":"Ubon Ratchathani","FormalRegi":"ภาคตะวันออกเฉียงเหนือ","F4Region":"ภาคตะวันออกเฉียงเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":4,"wd_2020":5,"wd_2021":0,"wd_2022":0,"wd_2023":0,"wd_2024":4,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":1,"fl_2022":1,"fl_2023":1,"fl_2024":1,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":15.1854239449,"lon":105.1108451072},{"OBJECTID":24,"PROV_CODE":35,"PROV_NAM_T":"จ.ยโสธร","PROV_NAM_E":"Changwat Yasothon","ProvinceID":35,"ProvinceTH":"ยโสธร","ProvinceEN":"Yasothon","FormalRegi":"ภาคตะวันออกเฉียงเหนือ","F4Region":"ภาคตะวันออกเฉียงเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":0,"wd_2020":1,"wd_2021":2,"wd_2022":6,"wd_2023":11,"wd_2024":2,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":1,"fl_2022":1,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":15.8956935021,"lon":104.3385710883},{"OBJECTID":25,"PROV_CODE":36,"PROV_NAM_T":"จ.ชัยภูม���","PROV_NAM_E":"Changwat Chaiyaphum","ProvinceID":36,"ProvinceTH":"ชัยภูมิ","ProvinceEN":"Chaiyaphum","FormalRegi":"ภาคตะวันออกเฉียงเหนือ","F4Region":"ภาคตะวันออกเฉียงเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":0,"wd_2020":0,"wd_2021":0,"wd_2022":9,"wd_2023":9,"wd_2024":4,"fl_2018":0,"fl_2019":0,"fl_2020":1,"fl_2021":0,"fl_2022":0,"fl_2023":2,"fl_2024":2,"pm_2018":0,"pm_2019":2,"pm_2020":4,"pm_2021":0,"pm_2022":0,"pm_2023":2,"pm_2024":0,"lat":16.0323913354,"lon":101.817499198},{"OBJECTID":26,"PROV_CODE":37,"PROV_NAM_T":"จ.อำนาจเจริญ","PROV_NAM_E":"Changwat Amnaj Charoen","ProvinceID":37,"ProvinceTH":"อำนาจเจริญ","ProvinceEN":"Amnat Charoen","FormalRegi":"ภาคตะวันออกเฉียงเหนือ","F4Region":"ภาคตะวันออกเฉียงเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":4,"wd_2020":4,"wd_2021":3,"wd_2022":10,"wd_2023":12,"wd_2024":10,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":0,"fl_2022":1,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":15.89280857,"lon":104.7413817743},{"OBJECTID":27,"PROV_CODE":38,"PROV_NAM_T":"จ.บึงกาฬ","PROV_NAM_E":"Changwat Bueng Kan","ProvinceID":38,"ProvinceTH":"บึงกาฬ","ProvinceEN":"Bueng Kan","FormalRegi":"ภาคตะวันออกเฉียงเหนือ","F4Region":"ภาคตะวันออกเฉียงเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":0,"wd_2020":1,"wd_2021":1,"wd_2022":1,"wd_2023":0,"wd_2024":3,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":0,"fl_2022":1,"fl_2023":1,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":18.1490759595,"lon":103.7100759649},{"OBJECTID":28,"PROV_CODE":39,"PROV_NAM_T":"จ.หนองบัวลำภู","PROV_NAM_E":"Changwat Nong Bua Lamphu","ProvinceID":39,"ProvinceTH":"หนองบัวลำภู","ProvinceEN":"Nong Bua Lam Phu","FormalRegi":"ภาคตะวันออกเฉียงเหนือ","F4Region":"ภาคตะวันออกเฉียงเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":6,"wd_2020":6,"wd_2021":6,"wd_2022":0,"wd_2023":7,"wd_2024":10,"fl_2018":0,"fl_2019":0,"fl_2020":1,"fl_2021":0,"fl_2022":0,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":17.1827418137,"lon":102.3018598932},{"OBJECTID":29,"PROV_CODE":40,"PROV_NAM_T":"จ.ขอนแก่น","PROV_NAM_E":"Changwat Khon Kaen","ProvinceID":40,"ProvinceTH":"ขอนแก่น","ProvinceEN":"Khon Kaen","FormalRegi":"ภาคตะวันออกเฉียงเหนือ","F4Region":"ภาคตะวันออกเฉียงเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":12,"wd_2020":12,"wd_2021":3,"wd_2022":3,"wd_2023":8,"wd_2024":1,"fl_2018":0,"fl_2019":0,"fl_2020":1,"fl_2021":0,"fl_2022":0,"fl_2023":3,"fl_2024":0,"pm_2018":0,"pm_2019":3,"pm_2020":2,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":2,"lat":16.4097085051,"lon":102.5784899456},{"OBJECTID":30,"PROV_CODE":41,"PROV_NAM_T":"จ.อุดรธานี","PROV_NAM_E":"Changwat Udon Thani","ProvinceID":41,"ProvinceTH":"อุดรธานี","ProvinceEN":"Udon Thani","FormalRegi":"ภาคตะวันออกเฉียงเหนือ","F4Region":"ภาคตะวันออกเฉียงเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":5,"wd_2020":4,"wd_2021":5,"wd_2022":1,"wd_2023":2,"wd_2024":0,"fl_2018":0,"fl_2019":0,"fl_2020":2,"fl_2021":0,"fl_2022":1,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":1,"pm_2024":1,"lat":17.4258558525,"lon":102.862888138},{"OBJECTID":31,"PROV_CODE":42,"PROV_NAM_T":"จ.เลย","PROV_NAM_E":"Changwat Loei","ProvinceID":42,"ProvinceTH":"เลย","ProvinceEN":"Loei","FormalRegi":"ภาคตะวันออกเฉียงเหนือ","F4Region":"ภาคตะวันออกเฉียงเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":4,"wd_2020":8,"wd_2021":0,"wd_2022":0,"wd_2023":2,"wd_2024":10,"fl_2018":0,"fl_2019":2,"fl_2020":2,"fl_2021":4,"fl_2022":0,"fl_2023":0,"fl_2024":6,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":17.4093634055,"lon":101.6351890502},{"OBJECTID":32,"PROV_CODE":43,"PROV_NAM_T":"จ.หนองคาย","PROV_NAM_E":"Changwat Nong Khai","ProvinceID":43,"ProvinceTH":"หนองคาย","ProvinceEN":"Nong Khai","FormalRegi":"ภาคตะวันออกเฉียงเหนือ","F4Region":"ภาคตะวันออกเฉียงเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":4,"wd_2020":1,"wd_2021":1,"wd_2022":0,"wd_2023":2,"wd_2024":1,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":0,"fl_2022":0,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":17.9404907574,"lon":102.8334216455},{"OBJECTID":33,"PROV_CODE":44,"PROV_NAM_T":"จ.มหาสารคาม","PROV_NAM_E":"Changwat Mahasarakham","ProvinceID":44,"ProvinceTH":"มหาสารคาม","ProvinceEN":"Maha Sarakham","FormalRegi":"ภาคตะวันออกเฉียงเหนือ","F4Region":"ภาคตะวันออกเฉียงเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":1,"wd_2020":0,"wd_2021":0,"wd_2022":1,"wd_2023":4,"wd_2024":5,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":1,"fl_2022":0,"fl_2023":2,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":16.0002225899,"lon":103.1654525924},{"OBJECTID":34,"PROV_CODE":45,"PROV_NAM_T":"จ.ร้อยเอ็ด","PROV_NAM_E":"Changwat Roi Et","ProvinceID":45,"ProvinceTH":"ร้อยเอ็ด","ProvinceEN":"Roi Et","FormalRegi":"ภาคตะวันออกเฉียงเหนือ","F4Region":"ภาคตะวันออกเฉียงเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":4,"wd_2020":5,"wd_2021":6,"wd_2022":1,"wd_2023":3,"wd_2024":1,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":0,"fl_2022":1,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":1,"pm_2021":0,"pm_2022":0,"pm_2023":1,"pm_2024":0,"lat":15.9202081852,"lon":103.8134037292},{"OBJECTID":35,"PROV_CODE":46,"PROV_NAM_T":"จ.กาฬสินธุ์","PROV_NAM_E":"Changwat Kalasin","ProvinceID":46,"ProvinceTH":"กาฬสินธุ์","ProvinceEN":"Kalasin","FormalRegi":"ภาคตะวันออกเฉียงเหนือ","F4Region":"ภาคตะวันออกเฉียงเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":1,"wd_2020":2,"wd_2021":2,"wd_2022":2,"wd_2023":1,"wd_2024":2,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":0,"fl_2022":0,"fl_2023":2,"fl_2024":0,"pm_2018":0,"pm_2019":3,"pm_2020":1,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":1,"lat":16.6284584848,"lon":103.6218110596},{"OBJECTID":36,"PROV_CODE":47,"PROV_NAM_T":"จ.สกลนคร","PROV_NAM_E":"Changwat Sakon Nakhon","ProvinceID":47,"ProvinceTH":"สกลนคร","ProvinceEN":"Sakon Nakhon","FormalRegi":"ภาคตะวันออกเฉียงเหนือ","F4Region":"ภาคตะวันออกเฉียงเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":0,"wd_2020":1,"wd_2021":2,"wd_2022":0,"wd_2023":13,"wd_2024":5,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":0,"fl_2022":0,"fl_2023":1,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":1,"pm_2023":0,"pm_2024":0,"lat":17.3907799772,"lon":103.8240438966},{"OBJECTID":37,"PROV_CODE":48,"PROV_NAM_T":"จ.นครพนม","PROV_NAM_E":"Changwat Nakhon Phanom","ProvinceID":48,"ProvinceTH":"นครพนม","ProvinceEN":"Nakhon Phanom","FormalRegi":"ภาคตะวันออกเฉียงเหนือ","F4Region":"ภาคตะวันออกเฉียงเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":6,"wd_2020":4,"wd_2021":1,"wd_2022":1,"wd_2023":4,"wd_2024":2,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":0,"fl_2022":0,"fl_2023":2,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":17.384812268,"lon":104.4285599167},{"OBJECTID":38,"PROV_CODE":49,"PROV_NAM_T":"จ.มุกดาหาร","PROV_NAM_E":"Changwat Mukdahan","ProvinceID":49,"ProvinceTH":"มุกดาหาร","ProvinceEN":"Mukdahan","FormalRegi":"ภาคตะวันออกเฉียงเหนือ","F4Region":"ภาคตะวันออกเฉียงเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":0,"wd_2020":0,"wd_2021":1,"wd_2022":2,"wd_2023":2,"wd_2024":0,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":0,"fl_2022":2,"fl_2023":1,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":1,"pm_2021":1,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":16.5619797408,"lon":104.517214515},{"OBJECTID":39,"PROV_CODE":50,"PROV_NAM_T":"จ.เชียงใหม่","PROV_NAM_E":"Changwat Chiang Mai","ProvinceID":50,"ProvinceTH":"เชียงใหม่","ProvinceEN":"Chiang Mai","FormalRegi":"ภาคเหนือ","F4Region":"ภาคเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":1,"wd_2020":7,"wd_2021":10,"wd_2022":1,"wd_2023":8,"wd_2024":9,"fl_2018":0,"fl_2019":0,"fl_2020":1,"fl_2021":3,"fl_2022":2,"fl_2023":3,"fl_2024":2,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":18.7959784776,"lon":98.7285666272},{"OBJECTID":40,"PROV_CODE":51,"PROV_NAM_T":"จ.ลำพูน","PROV_NAM_E":"Changwat Lamphun","ProvinceID":51,"ProvinceTH":"ลำพูน","ProvinceEN":"Lamphun","FormalRegi":"ภาคเหนือ","F4Region":"ภาคเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":0,"wd_2020":7,"wd_2021":4,"wd_2022":0,"wd_2023":2,"wd_2024":2,"fl_2018":2,"fl_2019":0,"fl_2020":2,"fl_2021":0,"fl_2022":0,"fl_2023":1,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":3,"pm_2023":5,"pm_2024":0,"lat":18.1199782429,"lon":98.9548063279},{"OBJECTID":41,"PROV_CODE":52,"PROV_NAM_T":"จ.ลำปาง","PROV_NAM_E":"Changwat Lampang","ProvinceID":52,"ProvinceTH":"ลำปาง","ProvinceEN":"Lampang","FormalRegi":"ภาคเหนือ","F4Region":"ภาคเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":4,"wd_2020":14,"wd_2021":4,"wd_2022":7,"wd_2023":15,"wd_2024":12,"fl_2018":2,"fl_2019":0,"fl_2020":2,"fl_2021":2,"fl_2022":3,"fl_2023":5,"fl_2024":12,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":18.3294181625,"lon":99.5127838675},{"OBJECTID":42,"PROV_CODE":53,"PROV_NAM_T":"จ.อุตรดิตถ์","PROV_NAM_E":"Changwat Uttaradit","ProvinceID":53,"ProvinceTH":"อุตรดิตถ์","ProvinceEN":"Uttaradit","FormalRegi":"ภาคเหนือ","F4Region":"ภาคเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":1,"wd_2019":2,"wd_2020":4,"wd_2021":1,"wd_2022":2,"wd_2023":9,"wd_2024":2,"fl_2018":1,"fl_2019":0,"fl_2020":4,"fl_2021":0,"fl_2022":3,"fl_2023":1,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":17.7514163636,"lon":100.5181907081},{"OBJECTID":43,"PROV_CODE":54,"PROV_NAM_T":"จ.แพร่","PROV_NAM_E":"Changwat Phrae","ProvinceID":54,"ProvinceTH":"แพร่","ProvinceEN":"Phrae","FormalRegi":"ภาคเหนือ","F4Region":"ภาคเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":7,"wd_2020":1,"wd_2021":2,"wd_2022":1,"wd_2023":4,"wd_2024":5,"fl_2018":0,"fl_2019":1,"fl_2020":2,"fl_2021":0,"fl_2022":2,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":1,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":18.2003587419,"lon":100.064964009},{"OBJECTID":44,"PROV_CODE":55,"PROV_NAM_T":"จ.น่าน","PROV_NAM_E":"Changwat Nan","ProvinceID":55,"ProvinceTH":"น่าน","ProvinceEN":"Nan","FormalRegi":"ภาคเหนือ","F4Region":"ภาคเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":4,"wd_2020":14,"wd_2021":4,"wd_2022":6,"wd_2023":5,"wd_2024":0,"fl_2018":0,"fl_2019":4,"fl_2020":5,"fl_2021":0,"fl_2022":2,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":18.8547544461,"lon":100.8355179291},{"OBJECTID":45,"PROV_CODE":56,"PROV_NAM_T":"จ.พะเยา","PROV_NAM_E":"Changwat Phayao","ProvinceID":56,"ProvinceTH":"พะเยา","ProvinceEN":"Phayao","FormalRegi":"ภาคเหนือ","F4Region":"ภาคเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":1,"wd_2020":0,"wd_2021":0,"wd_2022":2,"wd_2023":4,"wd_2024":5,"fl_2018":1,"fl_2019":0,"fl_2020":0,"fl_2021":0,"fl_2022":0,"fl_2023":2,"fl_2024":6,"pm_2018":0,"pm_2019":0,"pm_2020":2,"pm_2021":0,"pm_2022":0,"pm_2023":1,"pm_2024":0,"lat":19.2347532649,"lon":100.1912965732},{"OBJECTID":46,"PROV_CODE":57,"PROV_NAM_T":"จ.เชียงราย","PROV_NAM_E":"Changwat Chiangrai","ProvinceID":57,"ProvinceTH":"เชียงราย","ProvinceEN":"Chiang Rai","FormalRegi":"ภาคเหนือ","F4Region":"ภาคเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":2,"wd_2020":1,"wd_2021":2,"wd_2022":0,"wd_2023":14,"wd_2024":15,"fl_2018":0,"fl_2019":1,"fl_2020":1,"fl_2021":0,"fl_2022":5,"fl_2023":1,"fl_2024":1,"pm_2018":0,"pm_2019":2,"pm_2020":2,"pm_2021":0,"pm_2022":2,"pm_2023":1,"pm_2024":0,"lat":19.848190244,"lon":99.8661676347},{"OBJECTID":47,"PROV_CODE":58,"PROV_NAM_T":"จ.แม่ฮ่องสอน","PROV_NAM_E":"Changwat Mae Hong Son","ProvinceID":58,"ProvinceTH":"แม่ฮ่องสอน","ProvinceEN":"Mae Hong Son","FormalRegi":"ภาคเหนือ","F4Region":"ภาคเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":2,"wd_2020":1,"wd_2021":1,"wd_2022":2,"wd_2023":3,"wd_2024":4,"fl_2018":0,"fl_2019":1,"fl_2020":0,"fl_2021":2,"fl_2022":3,"fl_2023":6,"fl_2024":4,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":18.8126615473,"lon":98.0305634615},{"OBJECTID":48,"PROV_CODE":60,"PROV_NAM_T":"จ.นครสวรรค์","PROV_NAM_E":"Changwat Nakhon Sawan","ProvinceID":60,"ProvinceTH":"นครสวรรค์","ProvinceEN":"Nakhon Sawan","FormalRegi":"ภาคกลาง","F4Region":"ภาคเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":4,"wd_2020":0,"wd_2021":3,"wd_2022":0,"wd_2023":0,"wd_2024":4,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":0,"fl_2022":0,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":15.6838211431,"lon":100.1496314257},{"OBJECTID":49,"PROV_CODE":61,"PROV_NAM_T":"จ.อุทัยธานี","PROV_NAM_E":"Changwat Uthai Thani","ProvinceID":61,"ProvinceTH":"อุทัยธานี","ProvinceEN":"Uthai Thani","FormalRegi":"ภาคกลาง","F4Region":"ภาคเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":3,"wd_2020":2,"wd_2021":2,"wd_2022":1,"wd_2023":4,"wd_2024":1,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":0,"fl_2022":0,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":1,"lat":15.3498692094,"lon":99.4777931991},{"OBJECTID":50,"PROV_CODE":62,"PROV_NAM_T":"จ.กำแพงเพชร","PROV_NAM_E":"Changwat Kampaeng Phet","ProvinceID":62,"ProvinceTH":"กำแพงเพชร","ProvinceEN":"Kamphaeng Phet","FormalRegi":"ภาคกลาง","F4Region":"ภาคเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":6,"wd_2020":1,"wd_2021":3,"wd_2022":1,"wd_2023":8,"wd_2024":4,"fl_2018":0,"fl_2019":2,"fl_2020":0,"fl_2021":3,"fl_2022":2,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":16.3314999909,"lon":99.5346917129},{"OBJECTID":51,"PROV_CODE":63,"PROV_NAM_T":"จ.ตาก","PROV_NAM_E":"Changwat Tak","ProvinceID":63,"ProvinceTH":"ตาก","ProvinceEN":"Tak","FormalRegi":"ภาคตะวันตก","F4Region":"ภาคกลาง","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":2,"wd_2020":1,"wd_2021":2,"wd_2022":6,"wd_2023":6,"wd_2024":5,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":2,"fl_2022":1,"fl_2023":4,"fl_2024":3,"pm_2018":0,"pm_2019":1,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":6,"pm_2024":8,"lat":16.7218624987,"lon":98.7927786519},{"OBJECTID":52,"PROV_CODE":64,"PROV_NAM_T":"จ.สุโขทัย","PROV_NAM_E":"Changwat Sukhothai","ProvinceID":64,"ProvinceTH":"สุโขทัย","ProvinceEN":"Sukhothai","FormalRegi":"ภาคกลาง","F4Region":"ภาคเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":2,"wd_2020":2,"wd_2021":1,"wd_2022":3,"wd_2023":4,"wd_2024":2,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":0,"fl_2022":1,"fl_2023":1,"fl_2024":3,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":17.2641982448,"lon":99.7110175865},{"OBJECTID":53,"PROV_CODE":65,"PROV_NAM_T":"จ.พิษณุโลก","PROV_NAM_E":"Changwat Phitsanu Lok","ProvinceID":65,"ProvinceTH":"พิษณุโลก","ProvinceEN":"Phitsanulok","FormalRegi":"ภาคกลาง","F4Region":"ภาคเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":8,"wd_2020":2,"wd_2021":3,"wd_2022":0,"wd_2023":0,"wd_2024":4,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":0,"fl_2022":4,"fl_2023":1,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":16.9833856736,"lon":100.543036584},{"OBJECTID":54,"PROV_CODE":66,"PROV_NAM_T":"จ.พิจิตร","PROV_NAM_E":"Changwat Phichit","ProvinceID":66,"ProvinceTH":"พิจิตร","ProvinceEN":"Phichit","FormalRegi":"ภาคกลาง","F4Region":"ภาคเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":4,"wd_2020":7,"wd_2021":1,"wd_2022":0,"wd_2023":2,"wd_2024":2,"fl_2018":0,"fl_2019":1,"fl_2020":0,"fl_2021":0,"fl_2022":0,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":16.2598334896,"lon":100.3429411266},{"OBJECTID":55,"PROV_CODE":67,"PROV_NAM_T":"จ.เพชรบูรณ์","PROV_NAM_E":"Changwat Phetchabun","ProvinceID":67,"ProvinceTH":"เพชรบูรณ์","ProvinceEN":"Phetchabun","FormalRegi":"ภาคกลาง","F4Region":"ภาคเหนือ","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":4,"wd_2020":0,"wd_2021":1,"wd_2022":1,"wd_2023":20,"wd_2024":17,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":0,"fl_2022":2,"fl_2023":3,"fl_2024":3,"pm_2018":0,"pm_2019":0,"pm_2020":1,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":16.2799132369,"lon":101.1466838038},{"OBJECTID":56,"PROV_CODE":70,"PROV_NAM_T":"จ.ราชบุรี","PROV_NAM_E":"Changwat Ratchaburi","ProvinceID":70,"ProvinceTH":"ราชบุรี","ProvinceEN":"Ratchaburi","FormalRegi":"ภาคตะวันตก","F4Region":"ภาคกลาง","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":0,"wd_2020":0,"wd_2021":1,"wd_2022":2,"wd_2023":3,"wd_2024":1,"fl_2018":0,"fl_2019":0,"fl_2020":1,"fl_2021":0,"fl_2022":0,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":1,"pm_2022":0,"pm_2023":2,"pm_2024":0,"lat":13.5349480253,"lon":99.5778696666},{"OBJECTID":57,"PROV_CODE":71,"PROV_NAM_T":"จ.กาญจนบุรี","PROV_NAM_E":"Changwat Kanchanaburi","ProvinceID":71,"ProvinceTH":"กาญจนบุรี","ProvinceEN":"Kanchanaburi","FormalRegi":"ภาคตะวันตก","F4Region":"ภาคกลาง","MetroRegio":"ต่างจังหวัด","wd_2018":1,"wd_2019":0,"wd_2020":1,"wd_2021":0,"wd_2022":0,"wd_2023":0,"wd_2024":2,"fl_2018":0,"fl_2019":0,"fl_2020":6,"fl_2021":0,"fl_2022":0,"fl_2023":3,"fl_2024":1,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":14.5854451819,"lon":99.047269432},{"OBJECTID":58,"PROV_CODE":72,"PROV_NAM_T":"จ.สุพรรณบุรี","PROV_NAM_E":"Changwat Suphan Buri","ProvinceID":72,"ProvinceTH":"สุพรรณบุรี","ProvinceEN":"Suphan Buri","FormalRegi":"ภาคกลาง","F4Region":"ภาคกลาง","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":1,"wd_2020":0,"wd_2021":1,"wd_2022":0,"wd_2023":1,"wd_2024":0,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":3,"fl_2022":0,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":1,"pm_2024":0,"lat":14.6097889763,"lon":99.8914184504},{"OBJECTID":59,"PROV_CODE":73,"PROV_NAM_T":"จ.นครปฐม","PROV_NAM_E":"Changwat Nakhon Prathom","ProvinceID":73,"ProvinceTH":"นครปฐม","ProvinceEN":"Nakhon Pathom","FormalRegi":"ภาคกลาง","F4Region":"ภาคกลาง","MetroRegio":"กรุงเทพมหานครและปริมณฑล","wd_2018":0,"wd_2019":0,"wd_2020":1,"wd_2021":0,"wd_2022":3,"wd_2023":2,"wd_2024":0,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":1,"fl_2022":2,"fl_2023":1,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":13.9244475183,"lon":100.1027147984},{"OBJECTID":60,"PROV_CODE":74,"PROV_NAM_T":"จ.สมุทรสาคร","PROV_NAM_E":"Changwat Samut Sakhon","ProvinceID":74,"ProvinceTH":"สมุทรสาคร","ProvinceEN":"Samut Sakhon","FormalRegi":"ภาคกลาง","F4Region":"ภาคกลาง","MetroRegio":"กรุงเทพมหานครและปริมณฑล","wd_2018":0,"wd_2019":0,"wd_2020":1,"wd_2021":2,"wd_2022":1,"wd_2023":2,"wd_2024":1,"fl_2018":0,"fl_2019":0,"fl_2020":2,"fl_2021":2,"fl_2022":0,"fl_2023":1,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":13.5689967523,"lon":100.2122709055},{"OBJECTID":61,"PROV_CODE":75,"PROV_NAM_T":"จ.สมุทรสงคราม","PROV_NAM_E":"Changwat Samut Songkhram","ProvinceID":75,"ProvinceTH":"สมุทรสงคราม","ProvinceEN":"Samut Songkhram","FormalRegi":"ภาคกลาง","F4Region":"ภาคกลาง","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":1,"wd_2020":0,"wd_2021":0,"wd_2022":0,"wd_2023":1,"wd_2024":0,"fl_2018":0,"fl_2019":0,"fl_2020":1,"fl_2021":0,"fl_2022":0,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":13.3968410617,"lon":99.9533024154},{"OBJECTID":62,"PROV_CODE":76,"PROV_NAM_T":"จ.เพชรบุรี","PROV_NAM_E":"Changwat Phetchaburi","ProvinceID":76,"ProvinceTH":"เพชรบุรี","ProvinceEN":"Phetchaburi","FormalRegi":"ภาคตะวันตก","F4Region":"ภาคกลาง","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":0,"wd_2020":1,"wd_2021":0,"wd_2022":0,"wd_2023":2,"wd_2024":0,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":0,"fl_2022":0,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":1,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":2,"lat":12.9474074686,"lon":99.6187011304},{"OBJECTID":63,"PROV_CODE":77,"PROV_NAM_T":"จ.ประจวบคีรีขันธ์","PROV_NAM_E":"Changwat Prachuap Khiri Khan","ProvinceID":77,"ProvinceTH":"ประจวบคีรีขันธ์","ProvinceEN":"Prachuap Khiri Khan","FormalRegi":"ภาคตะวันตก","F4Region":"ภาคกลาง","MetroRegio":"ต่างจังหวัด","wd_2018":3,"wd_2019":0,"wd_2020":0,"wd_2021":0,"wd_2022":0,"wd_2023":1,"wd_2024":0,"fl_2018":3,"fl_2019":0,"fl_2020":0,"fl_2021":0,"fl_2022":0,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":3,"pm_2021":1,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":11.9484455162,"lon":99.635340457},{"OBJECTID":64,"PROV_CODE":80,"PROV_NAM_T":"จ.นครศรีธรรมราช","PROV_NAM_E":"Changwat Nakhon Si Thammarat","ProvinceID":80,"ProvinceTH":"นครศรีธรรมราช","ProvinceEN":"Nakhon Si Thammarat","FormalRegi":"ภาคใต้","F4Region":"ภาคใต้","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":0,"wd_2020":2,"wd_2021":3,"wd_2022":14,"wd_2023":14,"wd_2024":4,"fl_2018":1,"fl_2019":0,"fl_2020":1,"fl_2021":2,"fl_2022":3,"fl_2023":6,"fl_2024":0,"pm_2018":0,"pm_2019":1,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":1,"lat":8.3793394581,"lon":99.7868723781},{"OBJECTID":65,"PROV_CODE":81,"PROV_NAM_T":"จ.กระบี่","PROV_NAM_E":"Changwat Krabi","ProvinceID":81,"ProvinceTH":"กระบี่","ProvinceEN":"Krabi","FormalRegi":"ภาคใต้","F4Region":"ภาคใต้","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":1,"wd_2020":0,"wd_2021":0,"wd_2022":2,"wd_2023":3,"wd_2024":4,"fl_2018":2,"fl_2019":0,"fl_2020":1,"fl_2021":0,"fl_2022":0,"fl_2023":1,"fl_2024":0,"pm_2018":0,"pm_2019":4,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":3,"lat":8.1405333245,"lon":99.0074880362},{"OBJECTID":66,"PROV_CODE":82,"PROV_NAM_T":"จ.พังงา","PROV_NAM_E":"Changwat Phang Nga","ProvinceID":82,"ProvinceTH":"พังงา","ProvinceEN":"Phangnga","FormalRegi":"ภาคใต้","F4Region":"ภาคใต้","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":1,"wd_2020":6,"wd_2021":1,"wd_2022":2,"wd_2023":2,"wd_2024":1,"fl_2018":1,"fl_2019":0,"fl_2020":3,"fl_2021":0,"fl_2022":3,"fl_2023":2,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":1,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":8.5633538584,"lon":98.4455335419},{"OBJECTID":67,"PROV_CODE":83,"PROV_NAM_T":"จ.ภูเก็ต","PROV_NAM_E":"Changwat Phuket","ProvinceID":83,"ProvinceTH":"ภูเก็ต","ProvinceEN":"Phuket","FormalRegi":"ภาคใต้","F4Region":"ภาคใต้","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":0,"wd_2020":4,"wd_2021":0,"wd_2022":2,"wd_2023":1,"wd_2024":3,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":0,"fl_2022":1,"fl_2023":0,"fl_2024":4,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":7.9678384181,"lon":98.3455183041},{"OBJECTID":68,"PROV_CODE":84,"PROV_NAM_T":"จ.สุราษฎร์ธานี","PROV_NAM_E":"Changwat Surat Thani","ProvinceID":84,"ProvinceTH":"สุราษฎร์ธานี","ProvinceEN":"Surat Thani","FormalRegi":"ภาคใต้","F4Region":"ภาคใต้","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":4,"wd_2020":4,"wd_2021":1,"wd_2022":2,"wd_2023":6,"wd_2024":0,"fl_2018":5,"fl_2019":2,"fl_2020":5,"fl_2021":6,"fl_2022":1,"fl_2023":1,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":9.0529502705,"lon":99.090353631},{"OBJECTID":69,"PROV_CODE":85,"PROV_NAM_T":"จ.ระนอง","PROV_NAM_E":"Changwat Ranong","ProvinceID":85,"ProvinceTH":"ระนอง","ProvinceEN":"Ranong","FormalRegi":"ภาคใต้","F4Region":"ภาคใต้","MetroRegio":"ต่างจังหวัด","wd_2018":1,"wd_2019":1,"wd_2020":0,"wd_2021":0,"wd_2022":1,"wd_2023":1,"wd_2024":0,"fl_2018":0,"fl_2019":1,"fl_2020":1,"fl_2021":0,"fl_2022":0,"fl_2023":1,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":1,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":9.9710101237,"lon":98.6989829007},{"OBJECTID":70,"PROV_CODE":86,"PROV_NAM_T":"จ.ชุมพร","PROV_NAM_E":"Changwat Chumphon","ProvinceID":86,"ProvinceTH":"ชุมพร","ProvinceEN":"Chumphon","FormalRegi":"ภาคใต้","F4Region":"ภาคใต้","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":2,"wd_2020":0,"wd_2021":0,"wd_2022":0,"wd_2023":0,"wd_2024":1,"fl_2018":0,"fl_2019":1,"fl_2020":7,"fl_2021":3,"fl_2022":0,"fl_2023":1,"fl_2024":1,"pm_2018":0,"pm_2019":2,"pm_2020":1,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":10.3454986176,"lon":99.0615781587},{"OBJECTID":71,"PROV_CODE":90,"PROV_NAM_T":"จ.สงขลา","PROV_NAM_E":"Changwat Songkhla","ProvinceID":90,"ProvinceTH":"สงขลา","ProvinceEN":"Songkhla","FormalRegi":"ภาคใต้","F4Region":"ภาคใต้","MetroRegio":"ต่างจังหวัด","wd_2018":2,"wd_2019":0,"wd_2020":1,"wd_2021":1,"wd_2022":1,"wd_2023":3,"wd_2024":2,"fl_2018":0,"fl_2019":0,"fl_2020":1,"fl_2021":2,"fl_2022":3,"fl_2023":1,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":1,"pm_2023":0,"pm_2024":0,"lat":6.9347658003,"lon":100.5453224534},{"OBJECTID":72,"PROV_CODE":91,"PROV_NAM_T":"จ.สตูล","PROV_NAM_E":"Changwat Satun","ProvinceID":91,"ProvinceTH":"สตูล","ProvinceEN":"Satun","FormalRegi":"ภาคใต้","F4Region":"ภาคใต้","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":0,"wd_2020":0,"wd_2021":1,"wd_2022":0,"wd_2023":0,"wd_2024":1,"fl_2018":0,"fl_2019":0,"fl_2020":1,"fl_2021":0,"fl_2022":0,"fl_2023":2,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":1,"pm_2023":0,"pm_2024":0,"lat":6.8342109978,"lon":99.9271887885},{"OBJECTID":73,"PROV_CODE":92,"PROV_NAM_T":"จ.ตรัง","PROV_NAM_E":"Changwat Trang","ProvinceID":92,"ProvinceTH":"ตรัง","ProvinceEN":"Trang","FormalRegi":"ภาคใต้","F4Region":"ภาคใต้","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":0,"wd_2020":0,"wd_2021":1,"wd_2022":6,"wd_2023":4,"wd_2024":4,"fl_2018":1,"fl_2019":0,"fl_2020":1,"fl_2021":1,"fl_2022":1,"fl_2023":1,"fl_2024":1,"pm_2018":0,"pm_2019":1,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":7.543679561,"lon":99.5948211311},{"OBJECTID":74,"PROV_CODE":93,"PROV_NAM_T":"จ.พัทลุง","PROV_NAM_E":"Changwat Phatthalung","ProvinceID":93,"ProvinceTH":"พัทลุง","ProvinceEN":"Phatthalung","FormalRegi":"ภาคใต้","F4Region":"ภาคใต้","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":0,"wd_2020":1,"wd_2021":2,"wd_2022":2,"wd_2023":2,"wd_2024":1,"fl_2018":0,"fl_2019":0,"fl_2020":2,"fl_2021":2,"fl_2022":2,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":7.5162901136,"lon":100.0699152866},{"OBJECTID":75,"PROV_CODE":94,"PROV_NAM_T":"จ.ปัตตานี","PROV_NAM_E":"Changwat Pattani","ProvinceID":94,"ProvinceTH":"ปัตตานี","ProvinceEN":"Pattani","FormalRegi":"ภาคใต้","F4Region":"ภาคใต้","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":0,"wd_2020":0,"wd_2021":0,"wd_2022":5,"wd_2023":0,"wd_2024":0,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":0,"fl_2022":0,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":6.7306669761,"lon":101.3496950308},{"OBJECTID":76,"PROV_CODE":95,"PROV_NAM_T":"จ.ยะลา","PROV_NAM_E":"Changwat Yala","ProvinceID":95,"ProvinceTH":"ยะลา","ProvinceEN":"Yala","FormalRegi":"ภาคใต้","F4Region":"ภาคใต้","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":0,"wd_2020":0,"wd_2021":1,"wd_2022":2,"wd_2023":1,"wd_2024":0,"fl_2018":0,"fl_2019":1,"fl_2020":2,"fl_2021":4,"fl_2022":1,"fl_2023":6,"fl_2024":1,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":6.1908903838,"lon":101.228040178},{"OBJECTID":77,"PROV_CODE":96,"PROV_NAM_T":"จ.นราธิวาส","PROV_NAM_E":"Changwat Narathiwat","ProvinceID":96,"ProvinceTH":"นราธิวาส","ProvinceEN":"Narathiwat","FormalRegi":"ภาคใต้","F4Region":"ภาคใต้","MetroRegio":"ต่างจังหวัด","wd_2018":0,"wd_2019":1,"wd_2020":0,"wd_2021":1,"wd_2022":6,"wd_2023":1,"wd_2024":2,"fl_2018":0,"fl_2019":0,"fl_2020":0,"fl_2021":1,"fl_2022":1,"fl_2023":0,"fl_2024":0,"pm_2018":0,"pm_2019":0,"pm_2020":0,"pm_2021":0,"pm_2022":0,"pm_2023":0,"pm_2024":0,"lat":6.1779315557,"lon":101.7186389676}]
|
data/firm/homepro_disaster_network_map.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
data/firm/homeprto_disaster_firm_location_forecast.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
data/firm/location_homepro_do_2018-2024.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
forecast.html
ADDED
|
@@ -0,0 +1,776 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8" />
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
| 6 |
+
<title>Disaster Risk and Impact Analysis</title>
|
| 7 |
+
|
| 8 |
+
<script src="static/js/deckgl@9.0.33.min.js"></script>
|
| 9 |
+
|
| 10 |
+
<script src="static/js/maplibre-gl@3.0.0.js"></script>
|
| 11 |
+
<link href="static/css/maplibre-gl@3.0.0.css" rel="stylesheet" />
|
| 12 |
+
|
| 13 |
+
<script src="static/js/tailwind@3.4.5.js"></script>
|
| 14 |
+
<script src="static/js/chart.js"></script>
|
| 15 |
+
|
| 16 |
+
<script src="static/js/popper.min.js"></script>
|
| 17 |
+
<script src="static/js/tippy-bundle.umd.min.js"></script>
|
| 18 |
+
|
| 19 |
+
<style>
|
| 20 |
+
html,
|
| 21 |
+
body {
|
| 22 |
+
height: 100%;
|
| 23 |
+
margin: 0;
|
| 24 |
+
}
|
| 25 |
+
#map {
|
| 26 |
+
width: 100%;
|
| 27 |
+
height: 100%;
|
| 28 |
+
position: absolute;
|
| 29 |
+
top: 0;
|
| 30 |
+
left: 0;
|
| 31 |
+
}
|
| 32 |
+
</style>
|
| 33 |
+
</head>
|
| 34 |
+
<body>
|
| 35 |
+
<!-- Floating Box for Charts -->
|
| 36 |
+
<div
|
| 37 |
+
class="absolute left-4 top-4 h-9/10 bottom-4 w-2/5 p-6 bg-white backdrop-blur-sm bg-opacity-60 shadow-lg overflow-y-auto z-10 rounded-2xl"
|
| 38 |
+
>
|
| 39 |
+
<h1 class="text-2xl font-bold mb-4 text-center">
|
| 40 |
+
Forecast Disaster to FIRM
|
| 41 |
+
</h1>
|
| 42 |
+
|
| 43 |
+
<!-- Disaster Forecasting Chart-->
|
| 44 |
+
<h1 class="text-l font-bold mb-4">Disaster Affection Index</h1>
|
| 45 |
+
|
| 46 |
+
<canvas id="disasterLineChart"></canvas>
|
| 47 |
+
|
| 48 |
+
<h1 class="text-l font-bold mb-4 mt-8">Predicted Finance Changes</h1>
|
| 49 |
+
<canvas id="disasterForecastChart" height="300px"></canvas>
|
| 50 |
+
|
| 51 |
+
<!-- LAYER CONTROL -->
|
| 52 |
+
|
| 53 |
+
<h2 class="text-l font-bold mt-8 mb-4">Show Forecasted 10 Years Disaster Intensity</h2>
|
| 54 |
+
<div id="boxContainer" class="grid grid-cols-3 gap-4 mt-4 mb-8">
|
| 55 |
+
<div
|
| 56 |
+
class="box flex items-center p-4 border rounded-lg cursor-pointer transition-all duration-300 bg-white"
|
| 57 |
+
data-id="wind"
|
| 58 |
+
>
|
| 59 |
+
<div class="icon bg-gray-200 p-2 rounded-full mr-4">
|
| 60 |
+
<img
|
| 61 |
+
src="static/icon/wind.png"
|
| 62 |
+
alt="Icon 2"
|
| 63 |
+
class="h-6 w-6 rounded-full"
|
| 64 |
+
/>
|
| 65 |
+
</div>
|
| 66 |
+
<h1 class="text-lg font-semibold">Wind</h1>
|
| 67 |
+
</div>
|
| 68 |
+
|
| 69 |
+
<div
|
| 70 |
+
class="box flex items-center p-4 bg-white border rounded-lg cursor-pointer transition-all duration-300"
|
| 71 |
+
data-id="flood"
|
| 72 |
+
>
|
| 73 |
+
<div class="icon bg-gray-200 p-2 rounded-full mr-4">
|
| 74 |
+
<img
|
| 75 |
+
src="static/icon/flood.png"
|
| 76 |
+
alt="Icon 2"
|
| 77 |
+
class="h-6 w-6 rounded-full"
|
| 78 |
+
/>
|
| 79 |
+
</div>
|
| 80 |
+
<h1 class="text-lg font-semibold">Flood</h1>
|
| 81 |
+
</div>
|
| 82 |
+
|
| 83 |
+
<div
|
| 84 |
+
class="box flex items-center p-4 bg-white border rounded-lg cursor-pointer transition-all duration-300"
|
| 85 |
+
data-id="pm"
|
| 86 |
+
>
|
| 87 |
+
<div class="icon bg-gray-200 p-2 rounded-full mr-4">
|
| 88 |
+
<img
|
| 89 |
+
src="static/icon/pm.png"
|
| 90 |
+
alt="Icon 2"
|
| 91 |
+
class="h-6 w-6 rounded-full"
|
| 92 |
+
/>
|
| 93 |
+
</div>
|
| 94 |
+
<h1 class="text-lg font-semibold">Air Pollution</h1>
|
| 95 |
+
</div>
|
| 96 |
+
</div>
|
| 97 |
+
|
| 98 |
+
<h1 class="text-l font-bold mb-4">Top Fiance 3 Positive Changes</h1>
|
| 99 |
+
<canvas id="financeHighChange"></canvas>
|
| 100 |
+
|
| 101 |
+
<h1 class="text-l font-bold mb-4">Finance Stable Changes</h1>
|
| 102 |
+
<canvas id="financeMidChange"></canvas>
|
| 103 |
+
|
| 104 |
+
<h1 class="text-l font-bold mb-4">Finance Negative Changes</h1>
|
| 105 |
+
<canvas id="financeLowChange"></canvas>
|
| 106 |
+
|
| 107 |
+
<h1 class="text-l font-bold mb-4">Anomaly Index</h1>
|
| 108 |
+
<canvas id="myMixedChart"></canvas>
|
| 109 |
+
</div>
|
| 110 |
+
|
| 111 |
+
<!-- Fullscreen Map -->
|
| 112 |
+
<div id="map"></div>
|
| 113 |
+
|
| 114 |
+
<!--img
|
| 115 |
+
src="static/icon/logo.png"
|
| 116 |
+
alt="Top-right image"
|
| 117 |
+
class="absolute top-0 right-0 w-48 p-4"
|
| 118 |
+
/-->
|
| 119 |
+
|
| 120 |
+
<a href="index.html">
|
| 121 |
+
<img
|
| 122 |
+
src="static/icon/home.png"
|
| 123 |
+
id="goHome"
|
| 124 |
+
class="absolute bg-white backdrop-blur-sm bg-opacity-60 rounded-xl shadow-lg top-4 right-4 w-12 p-4 hover:bg-opacity-100 hover:cursor-pointer"
|
| 125 |
+
/>
|
| 126 |
+
</a>
|
| 127 |
+
|
| 128 |
+
<a href="analytics.html">
|
| 129 |
+
<img
|
| 130 |
+
src="static/icon/radar.png"
|
| 131 |
+
id="goOverView"
|
| 132 |
+
class="absolute bg-white backdrop-blur-sm bg-opacity-60 rounded-xl shadow-lg top-20 right-4 w-12 p-4 hover:bg-opacity-100 hover:cursor-pointer"
|
| 133 |
+
/>
|
| 134 |
+
</a>
|
| 135 |
+
|
| 136 |
+
<a href="locations.html">
|
| 137 |
+
<img
|
| 138 |
+
src="static/icon/location.png"
|
| 139 |
+
id="goLocation"
|
| 140 |
+
class="absolute bg-white backdrop-blur-sm bg-opacity-60 rounded-xl shadow-lg top-36 right-4 w-12 p-4 hover:bg-opacity-100 hover:cursor-pointer"
|
| 141 |
+
/>
|
| 142 |
+
</a>
|
| 143 |
+
|
| 144 |
+
<a href="forecast.html">
|
| 145 |
+
<img
|
| 146 |
+
src="static/icon/forecast.png"
|
| 147 |
+
id="goForecast"
|
| 148 |
+
class="absolute bg-white backdrop-blur-sm bg-opacity-60 rounded-xl shadow-lg top-52 right-4 w-12 p-4 hover:bg-opacity-100 hover:cursor-pointer"
|
| 149 |
+
/>
|
| 150 |
+
</a>
|
| 151 |
+
|
| 152 |
+
<img
|
| 153 |
+
src="static/icon/extent.png"
|
| 154 |
+
id="resetViewButton"
|
| 155 |
+
class="absolute bg-white backdrop-blur-sm bg-opacity-60 rounded-xl shadow-lg bottom-12 right-4 w-12 p-4 hover:bg-opacity-100 hover:cursor-pointer"
|
| 156 |
+
/>
|
| 157 |
+
|
| 158 |
+
<img
|
| 159 |
+
src="static/icon/play.png"
|
| 160 |
+
id="animateButton"
|
| 161 |
+
class="absolute bg-white backdrop-blur-sm bg-opacity-60 rounded-xl shadow-lg bottom-28 right-4 w-12 p-4 hover:bg-opacity-100 hover:cursor-pointer"
|
| 162 |
+
/>
|
| 163 |
+
|
| 164 |
+
<script>
|
| 165 |
+
let INIT_VIEW_STATE = {
|
| 166 |
+
longitude: 98.1339,
|
| 167 |
+
latitude: 10.863,
|
| 168 |
+
zoom: 5.594,
|
| 169 |
+
pitch: 48.3549,
|
| 170 |
+
bearing: -17.579,
|
| 171 |
+
maxPitch: 60,
|
| 172 |
+
};
|
| 173 |
+
|
| 174 |
+
var viewState = INIT_VIEW_STATE;
|
| 175 |
+
|
| 176 |
+
// LAYER
|
| 177 |
+
const firm_hex = new deck.HexagonLayer({
|
| 178 |
+
id: "HexagonLayer",
|
| 179 |
+
data: "data/firm/homeprto_disaster_firm_location_forecast.json",
|
| 180 |
+
extruded: true,
|
| 181 |
+
getPosition: (d) => [d.lon, d.lat],
|
| 182 |
+
getColorWeight: (d) => d.flood_2033,
|
| 183 |
+
getElevationWeight: (d) => d.wind_2033,
|
| 184 |
+
elevationScale: 200,
|
| 185 |
+
colorRange: [
|
| 186 |
+
[213, 62, 79, 200],
|
| 187 |
+
[252, 141, 89, 200],
|
| 188 |
+
[254, 224, 139, 200],
|
| 189 |
+
[230, 245, 152, 200],
|
| 190 |
+
[153, 213, 148, 200],
|
| 191 |
+
[50, 136, 189, 200],
|
| 192 |
+
],
|
| 193 |
+
colorScaleType: "quantile",
|
| 194 |
+
radius: 5000,
|
| 195 |
+
pickable: true,
|
| 196 |
+
elevationAggregation: "MEAN",
|
| 197 |
+
colorAggregation: "MEAN",
|
| 198 |
+
});
|
| 199 |
+
|
| 200 |
+
const province_boundary = new deck.GeoJsonLayer({
|
| 201 |
+
id: "GeoJsonLayer",
|
| 202 |
+
data: "data/common/province_admin_diva_sim.geojson",
|
| 203 |
+
pickable: false,
|
| 204 |
+
getLineColor: [0, 0, 0],
|
| 205 |
+
getLineWidth: 200,
|
| 206 |
+
getFillColor: [255, 255, 255, 0],
|
| 207 |
+
});
|
| 208 |
+
|
| 209 |
+
const heatmap = new deck.HeatmapLayer({
|
| 210 |
+
id: "HeatmapLayer",
|
| 211 |
+
data: "data/firm/homeprto_disaster_firm_location_forecast.json",
|
| 212 |
+
aggregation: "SUM",
|
| 213 |
+
getPosition: (d) => [d.lon, d.lat],
|
| 214 |
+
radiusPixels: 60,
|
| 215 |
+
colorRange: [
|
| 216 |
+
[50, 136, 189],
|
| 217 |
+
[153, 213, 148],
|
| 218 |
+
[230, 245, 152],
|
| 219 |
+
|
| 220 |
+
[254, 224, 139],
|
| 221 |
+
[252, 141, 89],
|
| 222 |
+
[213, 62, 79],
|
| 223 |
+
],
|
| 224 |
+
});
|
| 225 |
+
|
| 226 |
+
// Initialize Deck.GL
|
| 227 |
+
const deckInstance = new deck.DeckGL({
|
| 228 |
+
initialViewState: INIT_VIEW_STATE,
|
| 229 |
+
container: "map",
|
| 230 |
+
mapStyle:
|
| 231 |
+
"https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json",
|
| 232 |
+
controller: { doubleClickZoom: true, inertia: true },
|
| 233 |
+
onViewStateChange: (e) => {
|
| 234 |
+
viewState = e.viewState;
|
| 235 |
+
},
|
| 236 |
+
getTooltip,
|
| 237 |
+
layers: [province_boundary, heatmap],
|
| 238 |
+
});
|
| 239 |
+
|
| 240 |
+
function getTooltip({ object }) {
|
| 241 |
+
return (
|
| 242 |
+
object && {
|
| 243 |
+
html: `<h2 class="text-black">Forecasted Index (2033): ${object.elevationValue.toFixed(
|
| 244 |
+
2
|
| 245 |
+
)}</h2>`,
|
| 246 |
+
className: "rounded-lg shadow-lg",
|
| 247 |
+
style: {
|
| 248 |
+
backgroundColor: "#fff",
|
| 249 |
+
fontSize: "0.8em",
|
| 250 |
+
},
|
| 251 |
+
}
|
| 252 |
+
);
|
| 253 |
+
}
|
| 254 |
+
|
| 255 |
+
function rotateCameraRight() {
|
| 256 |
+
initialViewState = {
|
| 257 |
+
...viewState,
|
| 258 |
+
bearing: viewState.bearing - 20,
|
| 259 |
+
transitionDuration: 10000,
|
| 260 |
+
transitionInterpolator: new deck.LinearInterpolator(["bearing"]),
|
| 261 |
+
onTransitionEnd: rotateCameraLeft,
|
| 262 |
+
};
|
| 263 |
+
deckInstance.setProps({ initialViewState });
|
| 264 |
+
}
|
| 265 |
+
|
| 266 |
+
function rotateCameraLeft() {
|
| 267 |
+
initialViewState = {
|
| 268 |
+
...viewState,
|
| 269 |
+
bearing: viewState.bearing + 20,
|
| 270 |
+
transitionDuration: 10000,
|
| 271 |
+
transitionInterpolator: new deck.LinearInterpolator(["bearing"]),
|
| 272 |
+
onTransitionEnd: rotateCameraRight,
|
| 273 |
+
};
|
| 274 |
+
deckInstance.setProps({ initialViewState });
|
| 275 |
+
}
|
| 276 |
+
|
| 277 |
+
function resetCameraPosition() {
|
| 278 |
+
deckInstance.setProps({
|
| 279 |
+
initialViewState: {
|
| 280 |
+
...INIT_VIEW_STATE,
|
| 281 |
+
transitionInterpolator: new deck.FlyToInterpolator({ speed: 2 }),
|
| 282 |
+
transitionDuration: "auto",
|
| 283 |
+
},
|
| 284 |
+
});
|
| 285 |
+
}
|
| 286 |
+
|
| 287 |
+
const resetButton = document.querySelector("#resetViewButton");
|
| 288 |
+
resetButton.addEventListener("click", () => {
|
| 289 |
+
resetCameraPosition();
|
| 290 |
+
});
|
| 291 |
+
tippy("#resetViewButton", {
|
| 292 |
+
content: "Reset View",
|
| 293 |
+
placement: "left",
|
| 294 |
+
});
|
| 295 |
+
|
| 296 |
+
const animateButton = document.querySelector("#animateButton");
|
| 297 |
+
animateButton.addEventListener("click", () => {
|
| 298 |
+
rotateCameraLeft();
|
| 299 |
+
});
|
| 300 |
+
tippy("#animateButton", {
|
| 301 |
+
content: "Animate View",
|
| 302 |
+
placement: "left",
|
| 303 |
+
});
|
| 304 |
+
|
| 305 |
+
tippy("#goHome", {
|
| 306 |
+
content: "Home Page",
|
| 307 |
+
placement: "left",
|
| 308 |
+
});
|
| 309 |
+
tippy("#goOverView", {
|
| 310 |
+
content: "FIRM Overview",
|
| 311 |
+
placement: "left",
|
| 312 |
+
});
|
| 313 |
+
tippy("#goLocation", {
|
| 314 |
+
content: "Location-Based",
|
| 315 |
+
placement: "left",
|
| 316 |
+
});
|
| 317 |
+
tippy("#goForecast", {
|
| 318 |
+
content: "Forecasting",
|
| 319 |
+
placement: "left",
|
| 320 |
+
});
|
| 321 |
+
|
| 322 |
+
async function updateMap() {
|
| 323 |
+
console.log("update Map");
|
| 324 |
+
|
| 325 |
+
const selectedBoxId = getSelectedBox();
|
| 326 |
+
//console.log('Currently Selected Box ID:', selectedBoxId);
|
| 327 |
+
|
| 328 |
+
if (selectedBoxId == "wind") {
|
| 329 |
+
console.log(" Do something to Wind");
|
| 330 |
+
|
| 331 |
+
deckInstance.setProps({
|
| 332 |
+
layers: [
|
| 333 |
+
province_boundary,
|
| 334 |
+
new deck.HexagonLayer({
|
| 335 |
+
id: "HexagonLayer",
|
| 336 |
+
data: "data/firm/homeprto_disaster_firm_location_forecast.json",
|
| 337 |
+
extruded: true,
|
| 338 |
+
getPosition: (d) => [d.lon, d.lat],
|
| 339 |
+
getColorWeight: (d) => d.wind_2033,
|
| 340 |
+
getElevationWeight: (d) => d.wind_2033,
|
| 341 |
+
elevationScale: 100,
|
| 342 |
+
transitions: {
|
| 343 |
+
elevationScale: 1000,
|
| 344 |
+
},
|
| 345 |
+
colorRange: [
|
| 346 |
+
[255, 255, 178, 200],
|
| 347 |
+
[254, 217, 118, 200],
|
| 348 |
+
[254, 178, 76, 200],
|
| 349 |
+
[253, 141, 60, 200],
|
| 350 |
+
[240, 59, 32, 200],
|
| 351 |
+
[189, 0, 38, 200],
|
| 352 |
+
],
|
| 353 |
+
colorScaleType: "quantile",
|
| 354 |
+
radius: 5000,
|
| 355 |
+
pickable: true,
|
| 356 |
+
elevationAggregation: "MIN",
|
| 357 |
+
colorAggregation: "MIN",
|
| 358 |
+
}),
|
| 359 |
+
],
|
| 360 |
+
getTooltip,
|
| 361 |
+
});
|
| 362 |
+
} else if (selectedBoxId == "flood") {
|
| 363 |
+
console.log(" Do something to Flood");
|
| 364 |
+
|
| 365 |
+
deckInstance.setProps({
|
| 366 |
+
layers: [
|
| 367 |
+
province_boundary,
|
| 368 |
+
new deck.HexagonLayer({
|
| 369 |
+
id: "HexagonLayer",
|
| 370 |
+
data: "data/firm/homeprto_disaster_firm_location_forecast.json",
|
| 371 |
+
extruded: true,
|
| 372 |
+
getPosition: (d) => [d.lon, d.lat],
|
| 373 |
+
getColorWeight: (d) => d.flood_2033,
|
| 374 |
+
getElevationWeight: (d) => d.flood_2033,
|
| 375 |
+
elevationScale: 100,
|
| 376 |
+
transitions: {
|
| 377 |
+
elevationScale: 1000,
|
| 378 |
+
duration: 2000,
|
| 379 |
+
},
|
| 380 |
+
colorRange: [
|
| 381 |
+
[242, 240, 247, 200],
|
| 382 |
+
[218, 218, 235, 200],
|
| 383 |
+
[188, 189, 220, 200],
|
| 384 |
+
[158, 154, 200, 200],
|
| 385 |
+
[117, 107, 177, 200],
|
| 386 |
+
[84, 39, 143, 200],
|
| 387 |
+
,
|
| 388 |
+
],
|
| 389 |
+
colorScaleType: "quantile",
|
| 390 |
+
radius: 5000,
|
| 391 |
+
pickable: true,
|
| 392 |
+
elevationAggregation: "MEAN",
|
| 393 |
+
colorAggregation: "MEAN",
|
| 394 |
+
}),
|
| 395 |
+
],
|
| 396 |
+
getTooltip,
|
| 397 |
+
});
|
| 398 |
+
} else if (selectedBoxId == "pm") {
|
| 399 |
+
console.log(" Do something to PM");
|
| 400 |
+
|
| 401 |
+
deckInstance.setProps({
|
| 402 |
+
layers: [
|
| 403 |
+
province_boundary,
|
| 404 |
+
new deck.HexagonLayer({
|
| 405 |
+
id: "HexagonLayer",
|
| 406 |
+
data: "data/firm/homeprto_disaster_firm_location_forecast.json",
|
| 407 |
+
extruded: true,
|
| 408 |
+
getPosition: (d) => [d.lon, d.lat],
|
| 409 |
+
getColorWeight: (d) => d.pm_2033,
|
| 410 |
+
getElevationWeight: (d) => d.pm_2033,
|
| 411 |
+
elevationScale: 100,
|
| 412 |
+
transitions: {
|
| 413 |
+
elevationScale: 1000,
|
| 414 |
+
},
|
| 415 |
+
colorRange: [
|
| 416 |
+
[247, 247, 247, 200],
|
| 417 |
+
[217, 217, 217, 200],
|
| 418 |
+
[189, 189, 189, 200],
|
| 419 |
+
[150, 150, 150, 200],
|
| 420 |
+
[99, 99, 99, 200],
|
| 421 |
+
[37, 37, 37, 200],
|
| 422 |
+
],
|
| 423 |
+
colorScaleType: "quantile",
|
| 424 |
+
radius: 5000,
|
| 425 |
+
pickable: true,
|
| 426 |
+
elevationAggregation: "MAX",
|
| 427 |
+
colorAggregation: "MAX",
|
| 428 |
+
}),
|
| 429 |
+
],
|
| 430 |
+
getTooltip,
|
| 431 |
+
});
|
| 432 |
+
}
|
| 433 |
+
|
| 434 |
+
// refresh again after 60 seconds
|
| 435 |
+
setTimeout(updateMap, 60000);
|
| 436 |
+
}
|
| 437 |
+
|
| 438 |
+
const boxes = document.querySelectorAll(".box");
|
| 439 |
+
|
| 440 |
+
boxes.forEach((box) => {
|
| 441 |
+
box.addEventListener("click", function () {
|
| 442 |
+
// Remove 'selected' class from all boxes
|
| 443 |
+
boxes.forEach((b) =>
|
| 444 |
+
b.classList.remove("selected", "bg-cyan-500", "text-white")
|
| 445 |
+
);
|
| 446 |
+
|
| 447 |
+
// Add 'selected' class to the clicked box
|
| 448 |
+
this.classList.add("selected", "bg-cyan-500", "text-white");
|
| 449 |
+
|
| 450 |
+
updateMap();
|
| 451 |
+
});
|
| 452 |
+
});
|
| 453 |
+
|
| 454 |
+
function getSelectedBox() {
|
| 455 |
+
const selectedBox = document.querySelector(".box.selected");
|
| 456 |
+
if (selectedBox) {
|
| 457 |
+
return selectedBox.getAttribute("data-id"); // Return the selected box's data-id
|
| 458 |
+
}
|
| 459 |
+
return null;
|
| 460 |
+
}
|
| 461 |
+
</script>
|
| 462 |
+
|
| 463 |
+
<script>
|
| 464 |
+
// Get the context of the canvas element
|
| 465 |
+
const ctx = document
|
| 466 |
+
.getElementById("disasterForecastChart")
|
| 467 |
+
.getContext("2d");
|
| 468 |
+
const myBarChart = new Chart(ctx, {
|
| 469 |
+
type: "bar",
|
| 470 |
+
data: {
|
| 471 |
+
labels: [
|
| 472 |
+
"Cash Flow from investing activities",
|
| 473 |
+
"Cash flow from operating activities",
|
| 474 |
+
"Trade and other receivables",
|
| 475 |
+
"Total current liabilities",
|
| 476 |
+
"Total debts",
|
| 477 |
+
"Total assets",
|
| 478 |
+
"Cash Flow from Financing Activities",
|
| 479 |
+
"Inventories",
|
| 480 |
+
"Total cost",
|
| 481 |
+
"Revenue",
|
| 482 |
+
"Profit",
|
| 483 |
+
"Cost of Revenue",
|
| 484 |
+
"Cash and cash equivalents",
|
| 485 |
+
],
|
| 486 |
+
datasets: [
|
| 487 |
+
{
|
| 488 |
+
label: "3 Year (2026)",
|
| 489 |
+
data: [
|
| 490 |
+
192.32211203316484,
|
| 491 |
+
31.527679984513156,
|
| 492 |
+
15.088625273386326,
|
| 493 |
+
608.1798917108054,
|
| 494 |
+
8.673990485461957,
|
| 495 |
+
479.07264201740963,
|
| 496 |
+
204.2409737359837,
|
| 497 |
+
393.1893520844654,
|
| 498 |
+
353.5789533932493,
|
| 499 |
+
18.540743947762593,
|
| 500 |
+
27.86393758897802,
|
| 501 |
+
-62.860186266031164,
|
| 502 |
+
205.04142013990258
|
| 503 |
+
],
|
| 504 |
+
borderWidth: 1,
|
| 505 |
+
},
|
| 506 |
+
{
|
| 507 |
+
label: "5 Years (2028)",
|
| 508 |
+
data: [
|
| 509 |
+
103.00237051249468,
|
| 510 |
+
35.60339672392928,
|
| 511 |
+
14.248921235709451,
|
| 512 |
+
467.26914701361676,
|
| 513 |
+
15.40074184170274,
|
| 514 |
+
332.63633659313587,
|
| 515 |
+
248.64127328510688,
|
| 516 |
+
426.30922868841577,
|
| 517 |
+
365.0570832518623,
|
| 518 |
+
37.2717443270586,
|
| 519 |
+
39.08841398528503,
|
| 520 |
+
-74.2073880473869,
|
| 521 |
+
32.24411763166381
|
| 522 |
+
],
|
| 523 |
+
borderWidth: 1,
|
| 524 |
+
},
|
| 525 |
+
{
|
| 526 |
+
label: "10 Years (2033)",
|
| 527 |
+
data: [
|
| 528 |
+
94.1414973433603,
|
| 529 |
+
22.35379745877924,
|
| 530 |
+
18.87017587736522,
|
| 531 |
+
463.9626168238788,
|
| 532 |
+
27.608744205148383,
|
| 533 |
+
316.75975707398106,
|
| 534 |
+
334.02838010281664,
|
| 535 |
+
570.3217257609219,
|
| 536 |
+
480.3701411444466,
|
| 537 |
+
57.1254581580325,
|
| 538 |
+
53.32010039990543,
|
| 539 |
+
-92.17169256154112,
|
| 540 |
+
-41.619557207640355
|
| 541 |
+
],
|
| 542 |
+
borderWidth: 1,
|
| 543 |
+
},
|
| 544 |
+
],
|
| 545 |
+
},
|
| 546 |
+
options: {
|
| 547 |
+
indexAxis: "y", // This makes the bar chart horizontal
|
| 548 |
+
scales: {
|
| 549 |
+
x: {
|
| 550 |
+
beginAtZero: true,
|
| 551 |
+
},
|
| 552 |
+
},
|
| 553 |
+
},
|
| 554 |
+
});
|
| 555 |
+
|
| 556 |
+
// Get the context of the canvas element
|
| 557 |
+
const ctx2 = document
|
| 558 |
+
.getElementById("disasterLineChart")
|
| 559 |
+
.getContext("2d");
|
| 560 |
+
const myLineChart2 = new Chart(ctx2, {
|
| 561 |
+
type: "line",
|
| 562 |
+
data: {
|
| 563 |
+
labels: [
|
| 564 |
+
"2023",
|
| 565 |
+
"2024",
|
| 566 |
+
"2025",
|
| 567 |
+
"2026",
|
| 568 |
+
"2027",
|
| 569 |
+
"2028",
|
| 570 |
+
"2029",
|
| 571 |
+
"2030",
|
| 572 |
+
"2031",
|
| 573 |
+
"2032",
|
| 574 |
+
"2033",
|
| 575 |
+
],
|
| 576 |
+
datasets: [
|
| 577 |
+
{
|
| 578 |
+
label: "Wind",
|
| 579 |
+
data: [
|
| 580 |
+
251.60793283708682, 258.9494574311963, 275.7163314632364,
|
| 581 |
+
272.9505698081064, 252.67203984024647, 244.55433056847482,
|
| 582 |
+
237.19113462684362, 251.99048387071943, 245.59006556916714,
|
| 583 |
+
244.15652608753243, 263.3640711360034,
|
| 584 |
+
],
|
| 585 |
+
borderColor: "rgba(255, 99, 132, 1)",
|
| 586 |
+
backgroundColor: "rgba(255, 99, 132, 0.2)",
|
| 587 |
+
fill: true,
|
| 588 |
+
},
|
| 589 |
+
{
|
| 590 |
+
label: "Flood",
|
| 591 |
+
data: [
|
| 592 |
+
90.2725237103977, 97.98191332728928, 100.31649584769123,
|
| 593 |
+
105.63453152696367, 96.58372235898372, 89.3943864299188,
|
| 594 |
+
94.081698892078, 87.01861689334801, 81.91590014730753,
|
| 595 |
+
79.0147463915676, 82.78755915944409,
|
| 596 |
+
],
|
| 597 |
+
borderColor: "rgba(54, 162, 235, 1)",
|
| 598 |
+
backgroundColor: "rgba(54, 162, 235, 0.2)",
|
| 599 |
+
fill: true,
|
| 600 |
+
},
|
| 601 |
+
{
|
| 602 |
+
label: "Air Pollution",
|
| 603 |
+
data: [
|
| 604 |
+
36.01993483269402, 34.97180485884851, 32.32156177929745,
|
| 605 |
+
34.94356111454648, 33.2711644360697, 33.00160027466582,
|
| 606 |
+
35.71720373512917, 32.40541263160735, 29.65267820060595,
|
| 607 |
+
28.973788179594084, 29.479574700489163,
|
| 608 |
+
],
|
| 609 |
+
borderColor: "rgba(112, 112, 112, 1)",
|
| 610 |
+
backgroundColor: "rgba(112, 192, 192, 0.2)",
|
| 611 |
+
fill: true,
|
| 612 |
+
},
|
| 613 |
+
],
|
| 614 |
+
},
|
| 615 |
+
options: {
|
| 616 |
+
scales: {
|
| 617 |
+
y: {
|
| 618 |
+
beginAtZero: true,
|
| 619 |
+
},
|
| 620 |
+
},
|
| 621 |
+
},
|
| 622 |
+
});
|
| 623 |
+
|
| 624 |
+
// Get the context of the canvas element
|
| 625 |
+
const ctx3 = document
|
| 626 |
+
.getElementById("financeHighChange")
|
| 627 |
+
.getContext("2d");
|
| 628 |
+
|
| 629 |
+
// Create the chart
|
| 630 |
+
const myRadarChart = new Chart(ctx3, {
|
| 631 |
+
type: "radar",
|
| 632 |
+
data: {
|
| 633 |
+
labels: ["Speed", "Strength", "Agility", "Endurance", "Flexibility"],
|
| 634 |
+
datasets: [
|
| 635 |
+
{
|
| 636 |
+
label: "Person A",
|
| 637 |
+
data: [65, 75, 70, 80, 60],
|
| 638 |
+
borderColor: "rgba(255, 99, 132, 1)",
|
| 639 |
+
backgroundColor: "rgba(255, 99, 132, 0.2)",
|
| 640 |
+
fill: true,
|
| 641 |
+
},
|
| 642 |
+
{
|
| 643 |
+
label: "Person B",
|
| 644 |
+
data: [54, 65, 60, 70, 75],
|
| 645 |
+
borderColor: "rgba(54, 162, 235, 1)",
|
| 646 |
+
backgroundColor: "rgba(54, 162, 235, 0.2)",
|
| 647 |
+
fill: true,
|
| 648 |
+
},
|
| 649 |
+
],
|
| 650 |
+
},
|
| 651 |
+
options: {
|
| 652 |
+
scales: {
|
| 653 |
+
r: {
|
| 654 |
+
angleLines: {
|
| 655 |
+
display: true,
|
| 656 |
+
},
|
| 657 |
+
suggestedMin: 0,
|
| 658 |
+
suggestedMax: 100,
|
| 659 |
+
},
|
| 660 |
+
},
|
| 661 |
+
},
|
| 662 |
+
});
|
| 663 |
+
|
| 664 |
+
// Get the context of the canvas element
|
| 665 |
+
const ctx4 = document.getElementById("financeMidChange").getContext("2d");
|
| 666 |
+
const myBarChart4 = new Chart(ctx4, {
|
| 667 |
+
type: "bar",
|
| 668 |
+
data: {
|
| 669 |
+
labels: ["January", "February", "March", "April", "May"],
|
| 670 |
+
datasets: [
|
| 671 |
+
{
|
| 672 |
+
label: "Sales",
|
| 673 |
+
data: [300, 450, 100, 550, 700],
|
| 674 |
+
backgroundColor: [
|
| 675 |
+
"rgba(255, 99, 132, 0.2)",
|
| 676 |
+
"rgba(54, 162, 235, 0.2)",
|
| 677 |
+
"rgba(75, 192, 192, 0.2)",
|
| 678 |
+
"rgba(153, 102, 255, 0.2)",
|
| 679 |
+
"rgba(255, 159, 64, 0.2)",
|
| 680 |
+
],
|
| 681 |
+
borderColor: [
|
| 682 |
+
"rgba(255, 99, 132, 1)",
|
| 683 |
+
"rgba(54, 162, 235, 1)",
|
| 684 |
+
"rgba(75, 192, 192, 1)",
|
| 685 |
+
"rgba(153, 102, 255, 1)",
|
| 686 |
+
"rgba(255, 159, 64, 1)",
|
| 687 |
+
],
|
| 688 |
+
borderWidth: 1,
|
| 689 |
+
},
|
| 690 |
+
],
|
| 691 |
+
},
|
| 692 |
+
options: {
|
| 693 |
+
indexAxis: "y", // This makes the bar chart horizontal
|
| 694 |
+
scales: {
|
| 695 |
+
x: {
|
| 696 |
+
beginAtZero: true,
|
| 697 |
+
},
|
| 698 |
+
},
|
| 699 |
+
},
|
| 700 |
+
});
|
| 701 |
+
|
| 702 |
+
// Get the context of the canvas element
|
| 703 |
+
const ctx5 = document.getElementById("financeLowChange").getContext("2d");
|
| 704 |
+
const myBarChart5 = new Chart(ctx5, {
|
| 705 |
+
type: "bar",
|
| 706 |
+
data: {
|
| 707 |
+
labels: ["January", "February", "March", "April", "May"],
|
| 708 |
+
datasets: [
|
| 709 |
+
{
|
| 710 |
+
label: "Sales",
|
| 711 |
+
data: [300, 450, 100, 550, 700],
|
| 712 |
+
backgroundColor: [
|
| 713 |
+
"rgba(255, 99, 132, 0.2)",
|
| 714 |
+
"rgba(54, 162, 235, 0.2)",
|
| 715 |
+
"rgba(75, 192, 192, 0.2)",
|
| 716 |
+
"rgba(153, 102, 255, 0.2)",
|
| 717 |
+
"rgba(255, 159, 64, 0.2)",
|
| 718 |
+
],
|
| 719 |
+
borderColor: [
|
| 720 |
+
"rgba(255, 99, 132, 1)",
|
| 721 |
+
"rgba(54, 162, 235, 1)",
|
| 722 |
+
"rgba(75, 192, 192, 1)",
|
| 723 |
+
"rgba(153, 102, 255, 1)",
|
| 724 |
+
"rgba(255, 159, 64, 1)",
|
| 725 |
+
],
|
| 726 |
+
borderWidth: 1,
|
| 727 |
+
},
|
| 728 |
+
],
|
| 729 |
+
},
|
| 730 |
+
options: {
|
| 731 |
+
indexAxis: "y", // This makes the bar chart horizontal
|
| 732 |
+
scales: {
|
| 733 |
+
x: {
|
| 734 |
+
beginAtZero: true,
|
| 735 |
+
},
|
| 736 |
+
},
|
| 737 |
+
},
|
| 738 |
+
});
|
| 739 |
+
|
| 740 |
+
// Get the context of the canvas element
|
| 741 |
+
const ctx6 = document.getElementById("myMixedChart").getContext("2d");
|
| 742 |
+
const myMixedChart = new Chart(ctx6, {
|
| 743 |
+
type: "bar", // Default chart type is bar
|
| 744 |
+
data: {
|
| 745 |
+
labels: ["January", "February", "March", "April", "May"],
|
| 746 |
+
datasets: [
|
| 747 |
+
{
|
| 748 |
+
label: "Sales (Bar)",
|
| 749 |
+
data: [300, 450, 100, 550, 700],
|
| 750 |
+
backgroundColor: "rgba(54, 162, 235, 0.5)",
|
| 751 |
+
borderColor: "rgba(54, 162, 235, 1)",
|
| 752 |
+
borderWidth: 1,
|
| 753 |
+
type: "bar",
|
| 754 |
+
},
|
| 755 |
+
{
|
| 756 |
+
label: "Revenue (Line)",
|
| 757 |
+
data: [50, 80, 30, 100, 90],
|
| 758 |
+
borderColor: "rgba(255, 99, 132, 1)",
|
| 759 |
+
backgroundColor: "rgba(255, 99, 132, 0.2)",
|
| 760 |
+
fill: false,
|
| 761 |
+
type: "line",
|
| 762 |
+
tension: 0.4, // Smoother line
|
| 763 |
+
},
|
| 764 |
+
],
|
| 765 |
+
},
|
| 766 |
+
options: {
|
| 767 |
+
scales: {
|
| 768 |
+
y: {
|
| 769 |
+
beginAtZero: true,
|
| 770 |
+
},
|
| 771 |
+
},
|
| 772 |
+
},
|
| 773 |
+
});
|
| 774 |
+
</script>
|
| 775 |
+
</body>
|
| 776 |
+
</html>
|
index.html
CHANGED
|
@@ -1,19 +1,236 @@
|
|
| 1 |
-
<!
|
| 2 |
-
<html>
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<title></title>
|
| 5 |
+
<meta charset="UTF-8">
|
| 6 |
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
| 7 |
+
<script src="static/js/tailwind@3.4.5.js"></script>
|
| 8 |
+
</head>
|
| 9 |
+
<body>
|
| 10 |
+
|
| 11 |
+
<header>
|
| 12 |
+
<nav x-data="{ isOpen: false }" class="bg-white shadow dark:bg-gray-900">
|
| 13 |
+
<div class="container px-6 py-4 mx-auto">
|
| 14 |
+
<div class="lg:flex lg:items-center lg:justify-between">
|
| 15 |
+
<div class="flex items-center justify-between">
|
| 16 |
+
<a href="#" class="mx-auto ">
|
| 17 |
+
<img class="w-auto h-6 sm:h-7" src="static/icon/logo.png" alt="">
|
| 18 |
+
</a>
|
| 19 |
+
|
| 20 |
+
<!-- Mobile menu button -->
|
| 21 |
+
<div class="flex lg:hidden">
|
| 22 |
+
<button x-cloak @click="isOpen = !isOpen" type="button" class="text-gray-500 dark:text-gray-200 hover:text-gray-600 dark:hover:text-gray-400 focus:outline-none focus:text-gray-600 dark:focus:text-gray-400" aria-label="toggle menu">
|
| 23 |
+
<svg x-show="!isOpen" xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
| 24 |
+
<path stroke-linecap="round" stroke-linejoin="round" d="M4 8h16M4 16h16" />
|
| 25 |
+
</svg>
|
| 26 |
+
|
| 27 |
+
<svg x-show="isOpen" xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
| 28 |
+
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12" />
|
| 29 |
+
</svg>
|
| 30 |
+
</button>
|
| 31 |
+
</div>
|
| 32 |
+
</div>
|
| 33 |
+
|
| 34 |
+
<!-- Mobile Menu open: "block", Menu closed: "hidden" -->
|
| 35 |
+
<div x-cloak :class="[isOpen ? 'translate-x-0 opacity-100 ' : 'opacity-0 -translate-x-full']" class="absolute inset-x-0 z-20 w-full px-6 py-4 transition-all duration-300 ease-in-out bg-white shadow-md lg:bg-transparent lg:dark:bg-transparent lg:shadow-none dark:bg-gray-900 lg:mt-0 lg:p-0 lg:top-0 lg:relative lg:w-auto lg:opacity-100 lg:translate-x-0">
|
| 36 |
+
<div class="-mx-4 lg:flex lg:items-center">
|
| 37 |
+
<a href="analytics.html" class="block mx-4 text-blue-900 font-bold capitalize dark:text-gray-200 hover:text-blue-600 dark:hover:text-blue-400">Overview Map</a>
|
| 38 |
+
<a href="locations.html" class="block mx-4 mt-4 text-blue-900 font-bold capitalize lg:mt-0 dark:text-gray-200 hover:text-blue-600 dark:hover:text-blue-400">Location-Based</a>
|
| 39 |
+
<a href="forecast.html" class="block mx-4 mt-4 text-blue-900 font-bold capitalize lg:mt-0 dark:text-gray-200 hover:text-blue-600 dark:hover:text-blue-400">Forecasting</a>
|
| 40 |
+
<a href="#" class="block mx-4 mt-4 text-rose-900 font-bold capitalize lg:mt-0 dark:text-gray-200 hover:text-blue-600 dark:hover:text-blue-400">Contact</a>
|
| 41 |
+
</div>
|
| 42 |
+
</div>
|
| 43 |
+
</div>
|
| 44 |
+
</div>
|
| 45 |
+
</nav>
|
| 46 |
+
|
| 47 |
+
<div class="w-full bg-center bg-cover h-[38rem]" style="background-image: url('static/image/hero-city-pin.png');">
|
| 48 |
+
<div class="flex items-center justify-center w-full h-full bg-gray-900/40">
|
| 49 |
+
<div class="text-center">
|
| 50 |
+
<h1 class="text-3xl font-semibold text-white lg:text-4xl">Economic-Disaster for <span class="text-blue-400">Business</span></h1>
|
| 51 |
+
<button class="w-full px-5 py-2 mt-4 text-sm font-medium text-white capitalize transition-colors duration-300 transform bg-blue-400 rounded-md lg:w-auto hover:bg-blue-200 focus:outline-none focus:bg-blue-500">Demo</button>
|
| 52 |
+
</div>
|
| 53 |
+
</div>
|
| 54 |
+
</div>
|
| 55 |
+
</header>
|
| 56 |
+
|
| 57 |
+
|
| 58 |
+
|
| 59 |
+
<section class="bg-white dark:bg-gray-900">
|
| 60 |
+
<div class="container px-6 py-10 mx-auto">
|
| 61 |
+
|
| 62 |
+
|
| 63 |
+
<h1 class="text-lg font-semibold text-center text-blue-800 capitalize lg:text-3xl dark:text-white">
|
| 64 |
+
Analytical Integration for Finanance and Geoinfomatics</h1>
|
| 65 |
+
|
| 66 |
+
|
| 67 |
+
|
| 68 |
+
<div class="grid grid-cols-1 gap-8 mt-8 xl:mt-12 xl:gap-12 lg:grid-cols-4">
|
| 69 |
+
<div class="flex items-end overflow-hidden bg-cover rounded-lg h-96" style="background-image:url('static/image/flood.jpeg')">
|
| 70 |
+
<div class="w-full px-8 py-4 overflow-hidden rounded-b-lg backdrop-blur-sm bg-white/60 dark:bg-gray-800/60">
|
| 71 |
+
<h2 class="mt-4 text-xl font-semibold text-blue-800 capitalize dark:text-white">Disaster Impact</h2>
|
| 72 |
+
<p class="mt-2 text-lg tracking-wider text-blue-500 uppercase dark:text-blue-400 ">Finance</p>
|
| 73 |
+
</div>
|
| 74 |
+
</div>
|
| 75 |
+
|
| 76 |
+
<div class="flex items-end overflow-hidden bg-cover rounded-lg h-96" style="background-image:url('static/image/economic.webp')">
|
| 77 |
+
<div class="w-full px-8 py-4 overflow-hidden rounded-b-lg backdrop-blur-sm bg-white/60 dark:bg-gray-800/60">
|
| 78 |
+
<h2 class="mt-4 text-xl font-semibold text-blue-800 capitalize dark:text-white">Economic Affect</h2>
|
| 79 |
+
<p class="mt-2 text-lg tracking-wider text-blue-500 uppercase dark:text-blue-400 ">Loss and Gain</p>
|
| 80 |
+
</div>
|
| 81 |
+
</div>
|
| 82 |
+
|
| 83 |
+
<div class="flex items-end overflow-hidden bg-cover rounded-lg h-96" style="background-image:url('static/image/pin-location.jpeg')">
|
| 84 |
+
<div class="w-full px-8 py-4 overflow-hidden rounded-b-lg backdrop-blur-sm bg-white/60 dark:bg-gray-800/60">
|
| 85 |
+
<h2 class="mt-4 text-xl font-semibold text-blue-800 capitalize dark:text-white">Location Visual</h2>
|
| 86 |
+
<p class="mt-2 text-lg tracking-wider text-blue-500 uppercase dark:text-blue-400 ">3D Map</p>
|
| 87 |
+
</div>
|
| 88 |
+
</div>
|
| 89 |
+
|
| 90 |
+
<div class="flex items-end overflow-hidden bg-cover rounded-lg h-96" style="background-image:url('static/image/climate.webp')">
|
| 91 |
+
<div class="w-full px-8 py-4 overflow-hidden rounded-b-lg backdrop-blur-sm bg-white/60 dark:bg-gray-800/60">
|
| 92 |
+
<h2 class="mt-4 text-xl font-semibold text-blue-800 capitalize dark:text-white">Forecasting</h2>
|
| 93 |
+
<p class="mt-2 text-lg tracking-wider text-blue-500 uppercase dark:text-blue-400 ">10 Years</p>
|
| 94 |
+
</div>
|
| 95 |
+
</div>
|
| 96 |
+
</div>
|
| 97 |
+
</div>
|
| 98 |
+
</section>
|
| 99 |
+
|
| 100 |
+
|
| 101 |
+
|
| 102 |
+
<div class="flex justify-center items-center p-6">
|
| 103 |
+
<div class="flex flex-col md:flex-row items-center bg-white p-6 md:p-12 rounded-lg max-w-4xl">
|
| 104 |
+
<!-- Text Section -->
|
| 105 |
+
<div class="md:w-1/2 mb-6 md:mb-0 md:pr-8 text-center md:text-left">
|
| 106 |
+
<h2 class="text-3xl font-bold text-indigo-800 mb-4">
|
| 107 |
+
High-capability analysis
|
| 108 |
+
</h2>
|
| 109 |
+
<p class="text-indigo-500 text-lg leading-relaxed italic">
|
| 110 |
+
Enable geospatial data on disaster location hightlighting occurances affecting business unit.
|
| 111 |
+
</p>
|
| 112 |
+
</div>
|
| 113 |
+
|
| 114 |
+
<!-- Image Section -->
|
| 115 |
+
<div class="md:w-1/2 flex justify-center">
|
| 116 |
+
<img
|
| 117 |
+
src="static/image/hero.png"
|
| 118 |
+
alt="Data Insights"
|
| 119 |
+
class="rounded-lg shadow-lg w-full max-w-xs md:max-w-sm"
|
| 120 |
+
/>
|
| 121 |
+
</div>
|
| 122 |
+
</div>
|
| 123 |
+
</div>
|
| 124 |
+
|
| 125 |
+
|
| 126 |
+
<div class="flex flex-col md:flex-row items-center bg-white p-8 md:p-16">
|
| 127 |
+
|
| 128 |
+
<!-- Image Section -->
|
| 129 |
+
<div class="md:w-1/2 flex justify-center">
|
| 130 |
+
<img
|
| 131 |
+
src="static/image/report.jpeg"
|
| 132 |
+
alt="Data Insights"
|
| 133 |
+
class="rounded-lg shadow-lg w-full max-w-sm"
|
| 134 |
+
/>
|
| 135 |
+
</div>
|
| 136 |
+
|
| 137 |
+
<!-- Text Section -->
|
| 138 |
+
<div class="md:w-1/2 mb-8 md:mb-0 md:pr-8">
|
| 139 |
+
<h2 class="text-3xl font-bold text-indigo-800 mb-4">
|
| 140 |
+
Evalute Financial Impact Concerns
|
| 141 |
+
</h2>
|
| 142 |
+
<p class="text-indigo-600 text-lg leading-relaxed italic">
|
| 143 |
+
Discover insights and make data-driven decisions for business. Academic proved modeling enlightens considerable fianances for future management.
|
| 144 |
+
</p>
|
| 145 |
+
</div>
|
| 146 |
+
|
| 147 |
+
|
| 148 |
+
</div>
|
| 149 |
+
|
| 150 |
+
|
| 151 |
+
<div class="mt-6">
|
| 152 |
+
<div class="grid sm:grid-cols-2 items-start gap-14 p-8 mx-auto max-w-4xl bg-white shadow-[0_2px_10px_-3px_rgba(6,81,237,0.3)] rounded-md font-[sans-serif]">
|
| 153 |
+
<div>
|
| 154 |
+
<h1 class="text-gray-800 text-3xl font-extrabold">Interesting?</h1>
|
| 155 |
+
<p class="text-sm text-gray-500 mt-4">Feel free to contact us for more updates and news. Ask anything and let's talk together</p>
|
| 156 |
+
|
| 157 |
+
<div class="mt-12">
|
| 158 |
+
<h2 class="text-gray-800 text-base font-bold">Email</h2>
|
| 159 |
+
<ul class="mt-4">
|
| 160 |
+
<li class="flex items-center">
|
| 161 |
+
<div class="bg-[#e6e6e6cf] h-10 w-10 rounded-full flex items-center justify-center shrink-0">
|
| 162 |
+
<svg xmlns="http://www.w3.org/2000/svg" width="20px" height="20px" fill='#007bff'
|
| 163 |
+
viewBox="0 0 479.058 479.058">
|
| 164 |
+
<path
|
| 165 |
+
d="M434.146 59.882H44.912C20.146 59.882 0 80.028 0 104.794v269.47c0 24.766 20.146 44.912 44.912 44.912h389.234c24.766 0 44.912-20.146 44.912-44.912v-269.47c0-24.766-20.146-44.912-44.912-44.912zm0 29.941c2.034 0 3.969.422 5.738 1.159L239.529 264.631 39.173 90.982a14.902 14.902 0 0 1 5.738-1.159zm0 299.411H44.912c-8.26 0-14.971-6.71-14.971-14.971V122.615l199.778 173.141c2.822 2.441 6.316 3.655 9.81 3.655s6.988-1.213 9.81-3.655l199.778-173.141v251.649c-.001 8.26-6.711 14.97-14.971 14.97z"
|
| 166 |
+
data-original="#000000" />
|
| 167 |
+
</svg>
|
| 168 |
+
</div>
|
| 169 |
+
<a href="javascript:void(0)" class="text-[#007bff] text-sm ml-4">
|
| 170 |
+
<small class="block">Mail</small>
|
| 171 |
+
<strong>info@example.com</strong>
|
| 172 |
+
</a>
|
| 173 |
+
</li>
|
| 174 |
+
</ul>
|
| 175 |
+
</div>
|
| 176 |
+
|
| 177 |
+
<div class="mt-12">
|
| 178 |
+
<h2 class="text-gray-800 text-base font-bold">Socials</h2>
|
| 179 |
+
|
| 180 |
+
<ul class="flex mt-4 space-x-4">
|
| 181 |
+
<li class="bg-[#e6e6e6cf] h-10 w-10 rounded-full flex items-center justify-center shrink-0">
|
| 182 |
+
<a href="javascript:void(0)">
|
| 183 |
+
<svg xmlns="http://www.w3.org/2000/svg" width="20px" height="20px" fill='#007bff'
|
| 184 |
+
viewBox="0 0 24 24">
|
| 185 |
+
<path
|
| 186 |
+
d="M6.812 13.937H9.33v9.312c0 .414.335.75.75.75l4.007.001a.75.75 0 0 0 .75-.75v-9.312h2.387a.75.75 0 0 0 .744-.657l.498-4a.75.75 0 0 0-.744-.843h-2.885c.113-2.471-.435-3.202 1.172-3.202 1.088-.13 2.804.421 2.804-.75V.909a.75.75 0 0 0-.648-.743A26.926 26.926 0 0 0 15.071 0c-7.01 0-5.567 7.772-5.74 8.437H6.812a.75.75 0 0 0-.75.75v4c0 .414.336.75.75.75zm.75-3.999h2.518a.75.75 0 0 0 .75-.75V6.037c0-2.883 1.545-4.536 4.24-4.536.878 0 1.686.043 2.242.087v2.149c-.402.205-3.976-.884-3.976 2.697v2.755c0 .414.336.75.75.75h2.786l-.312 2.5h-2.474a.75.75 0 0 0-.75.75V22.5h-2.505v-9.312a.75.75 0 0 0-.75-.75H7.562z"
|
| 187 |
+
data-original="#000000" />
|
| 188 |
+
</svg>
|
| 189 |
+
</a>
|
| 190 |
+
</li>
|
| 191 |
+
<li class="bg-[#e6e6e6cf] h-10 w-10 rounded-full flex items-center justify-center shrink-0">
|
| 192 |
+
<a href="javascript:void(0)">
|
| 193 |
+
<svg xmlns="http://www.w3.org/2000/svg" width="20px" height="20px" fill='#007bff'
|
| 194 |
+
viewBox="0 0 511 512">
|
| 195 |
+
<path
|
| 196 |
+
d="M111.898 160.664H15.5c-8.285 0-15 6.719-15 15V497c0 8.285 6.715 15 15 15h96.398c8.286 0 15-6.715 15-15V175.664c0-8.281-6.714-15-15-15zM96.898 482H30.5V190.664h66.398zM63.703 0C28.852 0 .5 28.352.5 63.195c0 34.852 28.352 63.2 63.203 63.2 34.848 0 63.195-28.352 63.195-63.2C126.898 28.352 98.551 0 63.703 0zm0 96.395c-18.308 0-33.203-14.891-33.203-33.2C30.5 44.891 45.395 30 63.703 30c18.305 0 33.195 14.89 33.195 33.195 0 18.309-14.89 33.2-33.195 33.2zm289.207 62.148c-22.8 0-45.273 5.496-65.398 15.777-.684-7.652-7.11-13.656-14.942-13.656h-96.406c-8.281 0-15 6.719-15 15V497c0 8.285 6.719 15 15 15h96.406c8.285 0 15-6.715 15-15V320.266c0-22.735 18.5-41.23 41.235-41.23 22.734 0 41.226 18.495 41.226 41.23V497c0 8.285 6.719 15 15 15h96.403c8.285 0 15-6.715 15-15V302.066c0-79.14-64.383-143.523-143.524-143.523zM466.434 482h-66.399V320.266c0-39.278-31.953-71.23-71.226-71.23-39.282 0-71.239 31.952-71.239 71.23V482h-66.402V190.664h66.402v11.082c0 5.77 3.309 11.027 8.512 13.524a15.01 15.01 0 0 0 15.875-1.82c20.313-16.294 44.852-24.907 70.953-24.907 62.598 0 113.524 50.926 113.524 113.523zm0 0"
|
| 197 |
+
data-original="#000000" />
|
| 198 |
+
</svg>
|
| 199 |
+
</a>
|
| 200 |
+
</li>
|
| 201 |
+
<li class="bg-[#e6e6e6cf] h-10 w-10 rounded-full flex items-center justify-center shrink-0">
|
| 202 |
+
<a href="javascript:void(0)">
|
| 203 |
+
<svg xmlns="http://www.w3.org/2000/svg" width="20px" height="20px" fill='#007bff'
|
| 204 |
+
viewBox="0 0 24 24">
|
| 205 |
+
<path
|
| 206 |
+
d="M12 9.3a2.7 2.7 0 1 0 0 5.4 2.7 2.7 0 0 0 0-5.4Zm0-1.8a4.5 4.5 0 1 1 0 9 4.5 4.5 0 0 1 0-9Zm5.85-.225a1.125 1.125 0 1 1-2.25 0 1.125 1.125 0 0 1 2.25 0ZM12 4.8c-2.227 0-2.59.006-3.626.052-.706.034-1.18.128-1.618.299a2.59 2.59 0 0 0-.972.633 2.601 2.601 0 0 0-.634.972c-.17.44-.265.913-.298 1.618C4.805 9.367 4.8 9.714 4.8 12c0 2.227.006 2.59.052 3.626.034.705.128 1.18.298 1.617.153.392.333.674.632.972.303.303.585.484.972.633.445.172.918.267 1.62.3.993.047 1.34.052 3.626.052 2.227 0 2.59-.006 3.626-.052.704-.034 1.178-.128 1.617-.298.39-.152.674-.333.972-.632.304-.303.485-.585.634-.972.171-.444.266-.918.299-1.62.047-.993.052-1.34.052-3.626 0-2.227-.006-2.59-.052-3.626-.034-.704-.128-1.18-.299-1.618a2.619 2.619 0 0 0-.633-.972 2.595 2.595 0 0 0-.972-.634c-.44-.17-.914-.265-1.618-.298-.993-.047-1.34-.052-3.626-.052ZM12 3c2.445 0 2.75.009 3.71.054.958.045 1.61.195 2.185.419A4.388 4.388 0 0 1 19.49 4.51c.457.45.812.994 1.038 1.595.222.573.373 1.227.418 2.185.042.96.054 1.265.054 3.71 0 2.445-.009 2.75-.054 3.71-.045.958-.196 1.61-.419 2.185a4.395 4.395 0 0 1-1.037 1.595 4.44 4.44 0 0 1-1.595 1.038c-.573.222-1.227.373-2.185.418-.96.042-1.265.054-3.71.054-2.445 0-2.75-.009-3.71-.054-.958-.045-1.61-.196-2.185-.419A4.402 4.402 0 0 1 4.51 19.49a4.414 4.414 0 0 1-1.037-1.595c-.224-.573-.374-1.227-.419-2.185C3.012 14.75 3 14.445 3 12c0-2.445.009-2.75.054-3.71s.195-1.61.419-2.185A4.392 4.392 0 0 1 4.51 4.51c.45-.458.994-.812 1.595-1.037.574-.224 1.226-.374 2.185-.419C9.25 3.012 9.555 3 12 3Z">
|
| 207 |
+
</path>
|
| 208 |
+
</svg>
|
| 209 |
+
</a>
|
| 210 |
+
</li>
|
| 211 |
+
</ul>
|
| 212 |
+
</div>
|
| 213 |
+
</div>
|
| 214 |
+
|
| 215 |
+
<form class="ml-auo space-y-4">
|
| 216 |
+
<input type='text' placeholder='How can we call your name?'
|
| 217 |
+
class="w-full text-gray-800 rounded-md py-2.5 px-4 border text-sm outline-blue-500" />
|
| 218 |
+
<input type='email' placeholder='Email'
|
| 219 |
+
class="w-full text-gray-800 rounded-md py-2.5 px-4 border text-sm outline-blue-500" />
|
| 220 |
+
<input type='text' placeholder='Something may we can help you?'
|
| 221 |
+
class="w-full text-gray-800 rounded-md py-2.5 px-4 border text-sm outline-blue-500" />
|
| 222 |
+
<textarea placeholder='We are great to see your comments...' rows="6"
|
| 223 |
+
class="w-full text-gray-800 rounded-md px-4 border text-sm pt-2.5 outline-blue-500"></textarea>
|
| 224 |
+
<button type='button'
|
| 225 |
+
class="text-white bg-blue-500 hover:bg-blue-600 rounded-md text-sm px-4 py-3 w-full !mt-6">Greeting us!</button>
|
| 226 |
+
</form>
|
| 227 |
+
</div>
|
| 228 |
+
</div>
|
| 229 |
+
|
| 230 |
+
|
| 231 |
+
|
| 232 |
+
|
| 233 |
+
|
| 234 |
+
|
| 235 |
+
</body>
|
| 236 |
+
</html>
|
locations.html
ADDED
|
@@ -0,0 +1,594 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8" />
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
| 6 |
+
<title>Disaster Risk and Impact Analysis</title>
|
| 7 |
+
|
| 8 |
+
<script src="static/js/deckgl@9.0.33.min.js"></script>
|
| 9 |
+
|
| 10 |
+
<script src="static/js/maplibre-gl@3.0.0.js"></script>
|
| 11 |
+
<link href="static/css/maplibre-gl@3.0.0.css" rel="stylesheet" />
|
| 12 |
+
|
| 13 |
+
<script src="static/js/tailwind@3.4.5.js"></script>
|
| 14 |
+
<script src="static/js/chart.js"></script>
|
| 15 |
+
|
| 16 |
+
<script src="static/js/popper.min.js"></script>
|
| 17 |
+
<script src="static/js/tippy-bundle.umd.min.js"></script>
|
| 18 |
+
|
| 19 |
+
<link rel="stylesheet" href="static/css/font-awesome@all.min.css" />
|
| 20 |
+
|
| 21 |
+
<style>
|
| 22 |
+
html,
|
| 23 |
+
body {
|
| 24 |
+
height: 100%;
|
| 25 |
+
margin: 0;
|
| 26 |
+
}
|
| 27 |
+
#map {
|
| 28 |
+
width: 100%;
|
| 29 |
+
height: 100%;
|
| 30 |
+
position: absolute;
|
| 31 |
+
top: 0;
|
| 32 |
+
left: 0;
|
| 33 |
+
}
|
| 34 |
+
</style>
|
| 35 |
+
</head>
|
| 36 |
+
<body>
|
| 37 |
+
<!-- Floating Box for Charts -->
|
| 38 |
+
<div
|
| 39 |
+
class="absolute left-4 top-4 h-9/10 bottom-4 w-2/5 p-6 bg-white backdrop-blur-sm bg-opacity-60 shadow-lg overflow-y-auto z-10 rounded-2xl"
|
| 40 |
+
>
|
| 41 |
+
<h1 class="text-2xl font-bold mb-4 text-center">Location Insight</h1>
|
| 42 |
+
|
| 43 |
+
<!-- STATISTICS -->
|
| 44 |
+
<h1 class="text-l font-bold mb-4">Statistic</h1>
|
| 45 |
+
|
| 46 |
+
<div class="flex flex-col space-y-4 w-full">
|
| 47 |
+
<div
|
| 48 |
+
class="bg-white text-black p-6 rounded-xl shadow-md flex items-center justify-between"
|
| 49 |
+
>
|
| 50 |
+
<div class="flex items-center space-x-4">
|
| 51 |
+
<div class="icon bg-gray-200 p-2 rounded-full mr-4">
|
| 52 |
+
<img
|
| 53 |
+
src="static/icon/pin.png"
|
| 54 |
+
alt="Icon 2"
|
| 55 |
+
class="h-6 w-6 rounded-full"
|
| 56 |
+
/>
|
| 57 |
+
</div>
|
| 58 |
+
<h2 class="text-xl font-bold">Locations</h2>
|
| 59 |
+
</div>
|
| 60 |
+
<span class="text-2xl font-bold">104</span>
|
| 61 |
+
</div>
|
| 62 |
+
</div>
|
| 63 |
+
|
| 64 |
+
<!-- LAYER CONTROL -->
|
| 65 |
+
|
| 66 |
+
<h2 class="text-l font-bold mt-8 mb-4">Show Disaster Intensity</h2>
|
| 67 |
+
<div id="boxContainer" class="grid grid-cols-3 gap-4 mt-4">
|
| 68 |
+
<div
|
| 69 |
+
class="box flex items-center p-4 border rounded-lg cursor-pointer transition-all duration-300 bg-white"
|
| 70 |
+
data-id="wind"
|
| 71 |
+
>
|
| 72 |
+
<div class="icon bg-gray-200 p-2 rounded-full mr-4">
|
| 73 |
+
<img
|
| 74 |
+
src="static/icon/wind.png"
|
| 75 |
+
alt="Icon 2"
|
| 76 |
+
class="h-6 w-6 rounded-full"
|
| 77 |
+
/>
|
| 78 |
+
</div>
|
| 79 |
+
<h1 class="text-lg font-semibold">Wind</h1>
|
| 80 |
+
</div>
|
| 81 |
+
|
| 82 |
+
<div
|
| 83 |
+
class="box flex items-center p-4 bg-white border rounded-lg cursor-pointer transition-all duration-300"
|
| 84 |
+
data-id="flood"
|
| 85 |
+
>
|
| 86 |
+
<div class="icon bg-gray-200 p-2 rounded-full mr-4">
|
| 87 |
+
<img
|
| 88 |
+
src="static/icon/flood.png"
|
| 89 |
+
alt="Icon 2"
|
| 90 |
+
class="h-6 w-6 rounded-full"
|
| 91 |
+
/>
|
| 92 |
+
</div>
|
| 93 |
+
<h1 class="text-lg font-semibold">Flood</h1>
|
| 94 |
+
</div>
|
| 95 |
+
|
| 96 |
+
<div
|
| 97 |
+
class="box flex items-center p-4 bg-white border rounded-lg cursor-pointer transition-all duration-300"
|
| 98 |
+
data-id="pm"
|
| 99 |
+
>
|
| 100 |
+
<div class="icon bg-gray-200 p-2 rounded-full mr-4">
|
| 101 |
+
<img
|
| 102 |
+
src="static/icon/pm.png"
|
| 103 |
+
alt="Icon 2"
|
| 104 |
+
class="h-6 w-6 rounded-full"
|
| 105 |
+
/>
|
| 106 |
+
</div>
|
| 107 |
+
<h1 class="text-lg font-semibold">Air Pollution</h1>
|
| 108 |
+
</div>
|
| 109 |
+
</div>
|
| 110 |
+
|
| 111 |
+
<!-- Top 5 Location Impact to Wind -->
|
| 112 |
+
|
| 113 |
+
<h2 class="text-l font-bold mt-8 mb-4">
|
| 114 |
+
Top 5 Locations Most Affected by Wind
|
| 115 |
+
</h2>
|
| 116 |
+
|
| 117 |
+
<div
|
| 118 |
+
class="w-full max-w-4xl backdrop-blur-sm shadow-lg rounded-xl p-4 overflow-x-auto"
|
| 119 |
+
>
|
| 120 |
+
<table class="min-w-full table-auto">
|
| 121 |
+
<thead>
|
| 122 |
+
<tr class="bg-gray-200 text-left">
|
| 123 |
+
<th class="p-4 font-bold text-gray-600">Top</th>
|
| 124 |
+
<th class="p-4 font-bold text-gray-600">Branch</th>
|
| 125 |
+
<th class="p-4 font-bold text-gray-600">Score</th>
|
| 126 |
+
</tr>
|
| 127 |
+
</thead>
|
| 128 |
+
<tbody>
|
| 129 |
+
<tr class="border-b cursor-pointer hover:bg-red-400 bg-red-300">
|
| 130 |
+
<td class="p-4">1</td>
|
| 131 |
+
<td class="p-4">HomePro Phetchabun Branch</td>
|
| 132 |
+
<td class="p-4">14.04</td>
|
| 133 |
+
</tr>
|
| 134 |
+
<tr class="border-b cursor-pointer hover:bg-red-400 bg-red-200">
|
| 135 |
+
<td class="p-4">2</td>
|
| 136 |
+
<td class="p-4">Home Pro Chiang Rai</td>
|
| 137 |
+
<td class="p-4">13.52</td>
|
| 138 |
+
</tr>
|
| 139 |
+
<tr class="border-b cursor-pointer hover:bg-red-400 bg-red-100">
|
| 140 |
+
<td class="p-4">3</td>
|
| 141 |
+
<td class="p-4">HomePro Nakhon Si Thammarat</td>
|
| 142 |
+
<td class="p-4">8.687</td>
|
| 143 |
+
</tr>
|
| 144 |
+
<tr class="border-b cursor-pointer hover:bg-red-400">
|
| 145 |
+
<td class="p-4">4</td>
|
| 146 |
+
<td class="p-4">Homepro Chaiyaphum</td>
|
| 147 |
+
<td class="p-4">7.845</td>
|
| 148 |
+
</tr>
|
| 149 |
+
<tr class="border-b cursor-pointer hover:bg-red-400">
|
| 150 |
+
<td class="p-4">5</td>
|
| 151 |
+
<td class="p-4">HomePro (San Sai)</td>
|
| 152 |
+
<td class="p-4">6.311</td>
|
| 153 |
+
</tr>
|
| 154 |
+
</tbody>
|
| 155 |
+
</table>
|
| 156 |
+
</div>
|
| 157 |
+
|
| 158 |
+
<!-- Top 5 Location Impact to Flood -->
|
| 159 |
+
|
| 160 |
+
<h2 class="text-md font-bold mt-8 mb-4">
|
| 161 |
+
Top 5 Locations Most Affected by Flood
|
| 162 |
+
</h2>
|
| 163 |
+
|
| 164 |
+
<div
|
| 165 |
+
class="w-full max-w-4xl backdrop-blur-sm shadow-lg rounded-xl p-4 overflow-x-auto"
|
| 166 |
+
>
|
| 167 |
+
<table class="min-w-full table-auto">
|
| 168 |
+
<thead>
|
| 169 |
+
<tr class="bg-gray-200 text-left">
|
| 170 |
+
<th class="p-4 font-bold text-gray-600">Top</th>
|
| 171 |
+
<th class="p-4 font-bold text-gray-600">Branch</th>
|
| 172 |
+
<th class="p-4 font-bold text-gray-600">Score</th>
|
| 173 |
+
</tr>
|
| 174 |
+
</thead>
|
| 175 |
+
<tbody>
|
| 176 |
+
<tr class="border-b cursor-pointer hover:bg-blue-400 bg-blue-300">
|
| 177 |
+
<td class="p-4">1</td>
|
| 178 |
+
<td class="p-4">HomePro Nakhon Si Thammarat</td>
|
| 179 |
+
<td class="p-4">8.687</td>
|
| 180 |
+
</tr>
|
| 181 |
+
<tr class="border-b cursor-pointer hover:bg-blue-400 bg-blue-200">
|
| 182 |
+
<td class="p-4">2</td>
|
| 183 |
+
<td class="p-4">HomePro (San Sai)</td>
|
| 184 |
+
<td class="p-4">6.311</td>
|
| 185 |
+
</tr>
|
| 186 |
+
<tr class="border-b cursor-pointer hover:bg-blue-400 bg-blue-100">
|
| 187 |
+
<td class="p-4">3</td>
|
| 188 |
+
<td class="p-4">Home Pro (Chiang Mai)</td>
|
| 189 |
+
<td class="p-4">8.472</td>
|
| 190 |
+
</tr>
|
| 191 |
+
<tr class="border-b cursor-pointer hover:bg-blue-400">
|
| 192 |
+
<td class="p-4">4</td>
|
| 193 |
+
<td class="p-4">Home Pro (Chiang Mai Hangdong)</td>
|
| 194 |
+
<td class="p-4">7.006</td>
|
| 195 |
+
</tr>
|
| 196 |
+
<tr class="border-b cursor-pointer hover:bg-blue-400">
|
| 197 |
+
<td class="p-4">5</td>
|
| 198 |
+
<td class="p-4">HomePro </td>
|
| 199 |
+
<td class="p-4">4.392</td>
|
| 200 |
+
</tr>
|
| 201 |
+
</tbody>
|
| 202 |
+
</table>
|
| 203 |
+
</div>
|
| 204 |
+
|
| 205 |
+
<!-- Top 5 Location Impact to PM -->
|
| 206 |
+
|
| 207 |
+
<h2 class="text-l font-bold mt-8 mb-4">
|
| 208 |
+
Top 5 Locations Most Affected by Air Pollution
|
| 209 |
+
</h2>
|
| 210 |
+
|
| 211 |
+
<div
|
| 212 |
+
class="w-full max-w-4xl backdrop-blur-sm shadow-lg rounded-xl p-4 overflow-x-auto"
|
| 213 |
+
>
|
| 214 |
+
<table class="min-w-full table-auto">
|
| 215 |
+
<thead>
|
| 216 |
+
<tr class="bg-gray-200 text-left">
|
| 217 |
+
<th class="p-4 font-bold text-gray-600">Top</th>
|
| 218 |
+
<th class="p-4 font-bold text-gray-600">Branch</th>
|
| 219 |
+
<th class="p-4 font-bold text-gray-600">Score</th>
|
| 220 |
+
</tr>
|
| 221 |
+
</thead>
|
| 222 |
+
<tbody>
|
| 223 |
+
<tr class="border-b cursor-pointer hover:bg-gray-400 bg-gray-300">
|
| 224 |
+
<td class="p-4">1</td>
|
| 225 |
+
<td class="p-4">HomePro </td>
|
| 226 |
+
<td class="p-4">4.392</td>
|
| 227 |
+
</tr>
|
| 228 |
+
<tr class="border-b cursor-pointer hover:bg-gray-400 bg-gray-200">
|
| 229 |
+
<td class="p-4">2</td>
|
| 230 |
+
<td class="p-4">Home Pro (Ayutthaya)</td>
|
| 231 |
+
<td class="p-4">1.467</td>
|
| 232 |
+
</tr>
|
| 233 |
+
<tr class="border-b cursor-pointer hover:bg-gray-400 bg-gray-100">
|
| 234 |
+
<td class="p-4">3</td>
|
| 235 |
+
<td class="p-4">Home Pro the distribution center</td>
|
| 236 |
+
<td class="p-4">1.130</td>
|
| 237 |
+
</tr>
|
| 238 |
+
<tr class="border-b cursor-pointer hover:bg-gray-400">
|
| 239 |
+
<td class="p-4">4</td>
|
| 240 |
+
<td class="p-4">HomePro Rangsit Klong Si</td>
|
| 241 |
+
<td class="p-4">1.277</td>
|
| 242 |
+
</tr>
|
| 243 |
+
<tr class="border-b cursor-pointer hover:bg-gray-400">
|
| 244 |
+
<td class="p-4">5</td>
|
| 245 |
+
<td class="p-4">Home Pro (Future Park Rangsit)</td>
|
| 246 |
+
<td class="p-4">1.379</td>
|
| 247 |
+
</tr>
|
| 248 |
+
</tbody>
|
| 249 |
+
</table>
|
| 250 |
+
</div>
|
| 251 |
+
</div>
|
| 252 |
+
|
| 253 |
+
<!-- Fullscreen Map -->
|
| 254 |
+
<div id="map"></div>
|
| 255 |
+
|
| 256 |
+
<!--img
|
| 257 |
+
src="static/icon/logo.png"
|
| 258 |
+
alt="Top-right image"
|
| 259 |
+
class="absolute top-0 right-0 w-48 p-4"
|
| 260 |
+
/-->
|
| 261 |
+
|
| 262 |
+
<a href="index.html">
|
| 263 |
+
<img
|
| 264 |
+
src="static/icon/home.png"
|
| 265 |
+
id="goHome"
|
| 266 |
+
class="absolute bg-white backdrop-blur-sm bg-opacity-60 rounded-xl shadow-lg top-4 right-4 w-12 p-4 hover:bg-opacity-100 hover:cursor-pointer"
|
| 267 |
+
/>
|
| 268 |
+
</a>
|
| 269 |
+
|
| 270 |
+
<a href="analytics.html">
|
| 271 |
+
<img
|
| 272 |
+
src="static/icon/radar.png"
|
| 273 |
+
id="goOverView"
|
| 274 |
+
class="absolute bg-white backdrop-blur-sm bg-opacity-60 rounded-xl shadow-lg top-20 right-4 w-12 p-4 hover:bg-opacity-100 hover:cursor-pointer"
|
| 275 |
+
/>
|
| 276 |
+
</a>
|
| 277 |
+
|
| 278 |
+
<a href="locations.html">
|
| 279 |
+
<img
|
| 280 |
+
src="static/icon/location.png"
|
| 281 |
+
id="goLocation"
|
| 282 |
+
class="absolute bg-white backdrop-blur-sm bg-opacity-60 rounded-xl shadow-lg top-36 right-4 w-12 p-4 hover:bg-opacity-100 hover:cursor-pointer"
|
| 283 |
+
/>
|
| 284 |
+
</a>
|
| 285 |
+
|
| 286 |
+
<a href="forecast.html">
|
| 287 |
+
<img
|
| 288 |
+
src="static/icon/forecast.png"
|
| 289 |
+
id="goForecast"
|
| 290 |
+
class="absolute bg-white backdrop-blur-sm bg-opacity-60 rounded-xl shadow-lg top-52 right-4 w-12 p-4 hover:bg-opacity-100 hover:cursor-pointer"
|
| 291 |
+
/>
|
| 292 |
+
</a>
|
| 293 |
+
|
| 294 |
+
<img
|
| 295 |
+
src="static/icon/extent.png"
|
| 296 |
+
id="resetViewButton"
|
| 297 |
+
class="absolute bg-white backdrop-blur-sm bg-opacity-60 rounded-xl shadow-lg bottom-12 right-4 w-12 p-4 hover:bg-opacity-100 hover:cursor-pointer"
|
| 298 |
+
/>
|
| 299 |
+
|
| 300 |
+
<img
|
| 301 |
+
src="static/icon/play.png"
|
| 302 |
+
id="animateButton"
|
| 303 |
+
class="absolute bg-white backdrop-blur-sm bg-opacity-60 rounded-xl shadow-lg bottom-28 right-4 w-12 p-4 hover:bg-opacity-100 hover:cursor-pointer"
|
| 304 |
+
/>
|
| 305 |
+
|
| 306 |
+
<script>
|
| 307 |
+
let INIT_VIEW_STATE = {
|
| 308 |
+
longitude: 98.1339,
|
| 309 |
+
latitude: 10.863,
|
| 310 |
+
zoom: 5.594,
|
| 311 |
+
pitch: 48.3549,
|
| 312 |
+
bearing: -17.579,
|
| 313 |
+
};
|
| 314 |
+
|
| 315 |
+
var viewState = INIT_VIEW_STATE;
|
| 316 |
+
|
| 317 |
+
const firm_pin = new deck.IconLayer({
|
| 318 |
+
id: "IconLayerFIRM",
|
| 319 |
+
data: "data/firm/location_homepro_do_2018-2024.json",
|
| 320 |
+
getColor: (d) => [Math.sqrt(d.exits), 140, 0],
|
| 321 |
+
getIcon: (d) => "marker",
|
| 322 |
+
getPosition: (d) => [d.lon, d.lat],
|
| 323 |
+
getSize: 24,
|
| 324 |
+
iconAtlas:
|
| 325 |
+
"https://raw.githubusercontent.com/visgl/deck.gl-data/master/website/icon-atlas.png",
|
| 326 |
+
iconMapping:
|
| 327 |
+
"https://raw.githubusercontent.com/visgl/deck.gl-data/master/website/icon-atlas.json",
|
| 328 |
+
pickable: false,
|
| 329 |
+
});
|
| 330 |
+
|
| 331 |
+
// LAYER
|
| 332 |
+
/*
|
| 333 |
+
const firm_loc = new deck.HexagonLayer({
|
| 334 |
+
id: "HexagonLayer",
|
| 335 |
+
data: "data/firm/homeprto_disaster_firm_location_forecast.json",
|
| 336 |
+
//extruded: true,
|
| 337 |
+
getPosition: (d) => [d.lon, d.lat],
|
| 338 |
+
getColorWeight: (d) => d.wind_2021,
|
| 339 |
+
getElevationWeight: (d) => d.wind_2021,
|
| 340 |
+
elevationScale: 10,
|
| 341 |
+
colorRange: [
|
| 342 |
+
[255, 255, 178, 200],
|
| 343 |
+
[254, 217, 118, 200],
|
| 344 |
+
[254, 178, 76, 200],
|
| 345 |
+
[253, 141, 60, 200],
|
| 346 |
+
[240, 59, 32, 200],
|
| 347 |
+
[189, 0, 38, 200],
|
| 348 |
+
],
|
| 349 |
+
colorScaleType: "quantile",
|
| 350 |
+
radius: 5000,
|
| 351 |
+
pickable: true,
|
| 352 |
+
elevationAggregation: "MEAN",
|
| 353 |
+
colorAggregation: "MEAN",
|
| 354 |
+
});*/
|
| 355 |
+
|
| 356 |
+
const province_boundary = new deck.GeoJsonLayer({
|
| 357 |
+
id: "GeoJsonLayer",
|
| 358 |
+
data: "data/common/province_admin_diva_sim.geojson",
|
| 359 |
+
pickable: false,
|
| 360 |
+
getLineColor: [0, 0, 0],
|
| 361 |
+
getLineWidth: 200,
|
| 362 |
+
getFillColor: [255, 255, 255, 0],
|
| 363 |
+
});
|
| 364 |
+
|
| 365 |
+
// Initialize Deck.GL
|
| 366 |
+
const deckInstance = new deck.DeckGL({
|
| 367 |
+
initialViewState: INIT_VIEW_STATE,
|
| 368 |
+
container: "map",
|
| 369 |
+
mapStyle:
|
| 370 |
+
"https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json",
|
| 371 |
+
controller: { doubleClickZoom: true, inertia: true },
|
| 372 |
+
onViewStateChange: (e) => {
|
| 373 |
+
viewState = e.viewState;
|
| 374 |
+
//console.log(viewState);
|
| 375 |
+
},
|
| 376 |
+
getTooltip,
|
| 377 |
+
layers: [province_boundary, firm_pin],
|
| 378 |
+
});
|
| 379 |
+
|
| 380 |
+
function getTooltip({ object }) {
|
| 381 |
+
return (
|
| 382 |
+
object && {
|
| 383 |
+
html: `<h2 class="text-black">Disaster Index: ${object.colorValue}</h2>`,
|
| 384 |
+
className: "rounded-lg shadow-lg",
|
| 385 |
+
style: {
|
| 386 |
+
backgroundColor: "#fff",
|
| 387 |
+
fontSize: "0.8em",
|
| 388 |
+
},
|
| 389 |
+
}
|
| 390 |
+
);
|
| 391 |
+
}
|
| 392 |
+
|
| 393 |
+
function rotateCameraRight() {
|
| 394 |
+
initialViewState = {
|
| 395 |
+
...viewState,
|
| 396 |
+
bearing: viewState.bearing - 20,
|
| 397 |
+
transitionDuration: 10000,
|
| 398 |
+
transitionInterpolator: new deck.LinearInterpolator(["bearing"]),
|
| 399 |
+
onTransitionEnd: rotateCameraLeft,
|
| 400 |
+
};
|
| 401 |
+
deckInstance.setProps({ initialViewState });
|
| 402 |
+
}
|
| 403 |
+
|
| 404 |
+
function rotateCameraLeft() {
|
| 405 |
+
initialViewState = {
|
| 406 |
+
...viewState,
|
| 407 |
+
bearing: viewState.bearing + 20,
|
| 408 |
+
transitionDuration: 10000,
|
| 409 |
+
transitionInterpolator: new deck.LinearInterpolator(["bearing"]),
|
| 410 |
+
onTransitionEnd: rotateCameraRight,
|
| 411 |
+
};
|
| 412 |
+
deckInstance.setProps({ initialViewState });
|
| 413 |
+
}
|
| 414 |
+
|
| 415 |
+
function resetCameraPosition() {
|
| 416 |
+
deckInstance.setProps({
|
| 417 |
+
initialViewState: {
|
| 418 |
+
...INIT_VIEW_STATE,
|
| 419 |
+
transitionInterpolator: new deck.FlyToInterpolator({ speed: 2 }),
|
| 420 |
+
transitionDuration: "auto",
|
| 421 |
+
},
|
| 422 |
+
});
|
| 423 |
+
}
|
| 424 |
+
|
| 425 |
+
async function updateMap() {
|
| 426 |
+
console.log("update Map");
|
| 427 |
+
|
| 428 |
+
const selectedBoxId = getSelectedBox();
|
| 429 |
+
//console.log('Currently Selected Box ID:', selectedBoxId);
|
| 430 |
+
|
| 431 |
+
if (selectedBoxId == "wind") {
|
| 432 |
+
console.log(" Do something to Wind");
|
| 433 |
+
|
| 434 |
+
deckInstance.setProps({
|
| 435 |
+
layers: [
|
| 436 |
+
province_boundary,
|
| 437 |
+
new deck.HexagonLayer({
|
| 438 |
+
id: "HexagonLayer",
|
| 439 |
+
data: "data/firm/homeprto_disaster_firm_location_forecast.json",
|
| 440 |
+
//extruded: true,
|
| 441 |
+
getPosition: (d) => [d.lon, d.lat],
|
| 442 |
+
getColorWeight: (d) => d.wind_2023,
|
| 443 |
+
getElevationWeight: (d) => d.wind_2023,
|
| 444 |
+
elevationScale: 10,
|
| 445 |
+
colorRange: [
|
| 446 |
+
[255, 255, 178, 200],
|
| 447 |
+
[254, 217, 118, 200],
|
| 448 |
+
[254, 178, 76, 200],
|
| 449 |
+
[253, 141, 60, 200],
|
| 450 |
+
[240, 59, 32, 200],
|
| 451 |
+
[189, 0, 38, 200],
|
| 452 |
+
],
|
| 453 |
+
colorScaleType: "quantile",
|
| 454 |
+
radius: 5000,
|
| 455 |
+
pickable: true,
|
| 456 |
+
elevationAggregation: "MEAN",
|
| 457 |
+
colorAggregation: "MEAN",
|
| 458 |
+
}),
|
| 459 |
+
firm_pin,
|
| 460 |
+
],
|
| 461 |
+
getTooltip,
|
| 462 |
+
});
|
| 463 |
+
} else if (selectedBoxId == "flood") {
|
| 464 |
+
console.log(" Do something to Flood");
|
| 465 |
+
|
| 466 |
+
deckInstance.setProps({
|
| 467 |
+
layers: [
|
| 468 |
+
province_boundary,
|
| 469 |
+
new deck.HexagonLayer({
|
| 470 |
+
id: "HexagonLayer",
|
| 471 |
+
data: "data/firm/homeprto_disaster_firm_location_forecast.json",
|
| 472 |
+
//extruded: true,
|
| 473 |
+
getPosition: (d) => [d.lon, d.lat],
|
| 474 |
+
getColorWeight: (d) => d.flood_2023,
|
| 475 |
+
getElevationWeight: (d) => d.flood_2023,
|
| 476 |
+
elevationScale: 10,
|
| 477 |
+
colorRange: [
|
| 478 |
+
[242, 240, 247, 200],
|
| 479 |
+
[218, 218, 235, 200],
|
| 480 |
+
[188, 189, 220, 200],
|
| 481 |
+
[158, 154, 200, 200],
|
| 482 |
+
[117, 107, 177, 200],
|
| 483 |
+
[84, 39, 143, 200],
|
| 484 |
+
,
|
| 485 |
+
],
|
| 486 |
+
colorScaleType: "quantile",
|
| 487 |
+
radius: 5000,
|
| 488 |
+
pickable: true,
|
| 489 |
+
elevationAggregation: "MEAN",
|
| 490 |
+
colorAggregation: "MEAN",
|
| 491 |
+
}),
|
| 492 |
+
firm_pin,
|
| 493 |
+
],
|
| 494 |
+
getTooltip,
|
| 495 |
+
});
|
| 496 |
+
} else if (selectedBoxId == "pm") {
|
| 497 |
+
console.log(" Do something to PM");
|
| 498 |
+
|
| 499 |
+
deckInstance.setProps({
|
| 500 |
+
layers: [
|
| 501 |
+
province_boundary,
|
| 502 |
+
new deck.HexagonLayer({
|
| 503 |
+
id: "HexagonLayer",
|
| 504 |
+
data: "data/firm/homeprto_disaster_firm_location_forecast.json",
|
| 505 |
+
//extruded: true,
|
| 506 |
+
getPosition: (d) => [d.lon, d.lat],
|
| 507 |
+
getColorWeight: (d) => d.pm_2023,
|
| 508 |
+
getElevationWeight: (d) => d.pm_2023,
|
| 509 |
+
elevationScale: 10,
|
| 510 |
+
colorRange: [
|
| 511 |
+
[247, 247, 247, 200],
|
| 512 |
+
[217, 217, 217, 200],
|
| 513 |
+
[189, 189, 189, 200],
|
| 514 |
+
[150, 150, 150, 200],
|
| 515 |
+
[99, 99, 99, 200],
|
| 516 |
+
[37, 37, 37, 200],
|
| 517 |
+
],
|
| 518 |
+
colorScaleType: "quantile",
|
| 519 |
+
radius: 5000,
|
| 520 |
+
pickable: true,
|
| 521 |
+
elevationAggregation: "MEAN",
|
| 522 |
+
colorAggregation: "MEAN",
|
| 523 |
+
}),
|
| 524 |
+
firm_pin,
|
| 525 |
+
],
|
| 526 |
+
getTooltip,
|
| 527 |
+
});
|
| 528 |
+
}
|
| 529 |
+
|
| 530 |
+
// refresh again after 60 seconds
|
| 531 |
+
setTimeout(updateMap, 60000);
|
| 532 |
+
}
|
| 533 |
+
|
| 534 |
+
const resetButton = document.querySelector("#resetViewButton");
|
| 535 |
+
resetButton.addEventListener("click", () => {
|
| 536 |
+
resetCameraPosition();
|
| 537 |
+
});
|
| 538 |
+
tippy("#resetViewButton", {
|
| 539 |
+
content: "Reset View",
|
| 540 |
+
placement: "left",
|
| 541 |
+
});
|
| 542 |
+
|
| 543 |
+
const animateButton = document.querySelector("#animateButton");
|
| 544 |
+
animateButton.addEventListener("click", () => {
|
| 545 |
+
rotateCameraLeft();
|
| 546 |
+
});
|
| 547 |
+
tippy("#animateButton", {
|
| 548 |
+
content: "Animate View",
|
| 549 |
+
placement: "left",
|
| 550 |
+
});
|
| 551 |
+
|
| 552 |
+
tippy("#goOverView", {
|
| 553 |
+
content: "FIRM Overview",
|
| 554 |
+
placement: "left",
|
| 555 |
+
});
|
| 556 |
+
tippy("#goLocation", {
|
| 557 |
+
content: "Location-Based",
|
| 558 |
+
placement: "left",
|
| 559 |
+
});
|
| 560 |
+
tippy("#goForecast", {
|
| 561 |
+
content: "Forecasting",
|
| 562 |
+
placement: "left",
|
| 563 |
+
});
|
| 564 |
+
|
| 565 |
+
const boxes = document.querySelectorAll(".box");
|
| 566 |
+
|
| 567 |
+
boxes.forEach((box) => {
|
| 568 |
+
box.addEventListener("click", function () {
|
| 569 |
+
// Remove 'selected' class from all boxes
|
| 570 |
+
boxes.forEach((b) =>
|
| 571 |
+
b.classList.remove("selected", "bg-sky-500", "text-white")
|
| 572 |
+
);
|
| 573 |
+
|
| 574 |
+
// Add 'selected' class to the clicked box
|
| 575 |
+
this.classList.add("selected", "bg-sky-500", "text-white");
|
| 576 |
+
|
| 577 |
+
updateMap();
|
| 578 |
+
});
|
| 579 |
+
});
|
| 580 |
+
|
| 581 |
+
function getSelectedBox() {
|
| 582 |
+
const selectedBox = document.querySelector(".box.selected");
|
| 583 |
+
if (selectedBox) {
|
| 584 |
+
return selectedBox.getAttribute("data-id"); // Return the selected box's data-id
|
| 585 |
+
}
|
| 586 |
+
return null;
|
| 587 |
+
}
|
| 588 |
+
</script>
|
| 589 |
+
|
| 590 |
+
<script>
|
| 591 |
+
// First Chart.js Configuration
|
| 592 |
+
</script>
|
| 593 |
+
</body>
|
| 594 |
+
</html>
|
static/.DS_Store
ADDED
|
Binary file (6.15 kB). View file
|
|
|
static/css/font-awesome@all.min.css
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
static/css/maplibre-gl@3.0.0.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
.maplibregl-map{-webkit-tap-highlight-color:rgb(0 0 0/0);font:12px/20px Helvetica Neue,Arial,Helvetica,sans-serif;overflow:hidden;position:relative}.maplibregl-canvas{left:0;position:absolute;top:0}.maplibregl-map:fullscreen{height:100%;width:100%}.maplibregl-ctrl-group button.maplibregl-ctrl-compass{touch-action:none}.maplibregl-canvas-container.maplibregl-interactive,.maplibregl-ctrl-group button.maplibregl-ctrl-compass{cursor:grab;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.maplibregl-canvas-container.maplibregl-interactive.maplibregl-track-pointer{cursor:pointer}.maplibregl-canvas-container.maplibregl-interactive:active,.maplibregl-ctrl-group button.maplibregl-ctrl-compass:active{cursor:grabbing}.maplibregl-canvas-container.maplibregl-touch-zoom-rotate,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate .maplibregl-canvas{touch-action:pan-x pan-y}.maplibregl-canvas-container.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:pinch-zoom}.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:none}.maplibregl-canvas-container.maplibregl-touch-drag-pan.maplibregl-cooperative-gestures,.maplibregl-canvas-container.maplibregl-touch-drag-pan.maplibregl-cooperative-gestures .maplibregl-canvas{touch-action:pan-x pan-y}.maplibregl-ctrl-bottom-left,.maplibregl-ctrl-bottom-right,.maplibregl-ctrl-top-left,.maplibregl-ctrl-top-right{pointer-events:none;position:absolute;z-index:2}.maplibregl-ctrl-top-left{left:0;top:0}.maplibregl-ctrl-top-right{right:0;top:0}.maplibregl-ctrl-bottom-left{bottom:0;left:0}.maplibregl-ctrl-bottom-right{bottom:0;right:0}.maplibregl-ctrl{clear:both;pointer-events:auto;transform:translate(0)}.maplibregl-ctrl-top-left .maplibregl-ctrl{float:left;margin:10px 0 0 10px}.maplibregl-ctrl-top-right .maplibregl-ctrl{float:right;margin:10px 10px 0 0}.maplibregl-ctrl-bottom-left .maplibregl-ctrl{float:left;margin:0 0 10px 10px}.maplibregl-ctrl-bottom-right .maplibregl-ctrl{float:right;margin:0 10px 10px 0}.maplibregl-ctrl-group{background:#fff;border-radius:4px}.maplibregl-ctrl-group:not(:empty){box-shadow:0 0 0 2px rgba(0,0,0,.1)}@media (-ms-high-contrast:active){.maplibregl-ctrl-group:not(:empty){box-shadow:0 0 0 2px ButtonText}}.maplibregl-ctrl-group button{background-color:transparent;border:0;box-sizing:border-box;cursor:pointer;display:block;height:29px;outline:none;padding:0;width:29px}.maplibregl-ctrl-group button+button{border-top:1px solid #ddd}.maplibregl-ctrl button .maplibregl-ctrl-icon{background-position:50%;background-repeat:no-repeat;display:block;height:100%;width:100%}@media (-ms-high-contrast:active){.maplibregl-ctrl-icon{background-color:transparent}.maplibregl-ctrl-group button+button{border-top:1px solid ButtonText}}.maplibregl-ctrl button::-moz-focus-inner{border:0;padding:0}.maplibregl-ctrl-attrib-button:focus,.maplibregl-ctrl-group button:focus{box-shadow:0 0 2px 2px #0096ff}.maplibregl-ctrl button:disabled{cursor:not-allowed}.maplibregl-ctrl button:disabled .maplibregl-ctrl-icon{opacity:.25}.maplibregl-ctrl button:not(:disabled):hover{background-color:rgb(0 0 0/5%)}.maplibregl-ctrl-group button:focus:focus-visible{box-shadow:0 0 2px 2px #0096ff}.maplibregl-ctrl-group button:focus:not(:focus-visible){box-shadow:none}.maplibregl-ctrl-group button:focus:first-child{border-radius:4px 4px 0 0}.maplibregl-ctrl-group button:focus:last-child{border-radius:0 0 4px 4px}.maplibregl-ctrl-group button:focus:only-child{border-radius:inherit}.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E")}@media (-ms-high-contrast:active){.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E")}}.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E")}@media (-ms-high-contrast:active){.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E")}}.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='m10.5 14 4-8 4 8h-8z'/%3E%3Cpath fill='%23ccc' d='m10.5 16 4 8 4-8h-8z'/%3E%3C/svg%3E")}@media (-ms-high-contrast:active){.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='m10.5 14 4-8 4 8h-8z'/%3E%3Cpath fill='%23999' d='m10.5 16 4 8 4-8h-8z'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='m10.5 14 4-8 4 8h-8z'/%3E%3Cpath fill='%23ccc' d='m10.5 16 4 8 4-8h-8z'/%3E%3C/svg%3E")}}.maplibregl-ctrl button.maplibregl-ctrl-terrain .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='%23333' viewBox='0 0 22 22'%3E%3Cpath d='m1.754 13.406 4.453-4.851 3.09 3.09 3.281 3.277.969-.969-3.309-3.312 3.844-4.121 6.148 6.886h1.082v-.855l-7.207-8.07-4.84 5.187L6.169 6.57l-5.48 5.965v.871ZM.688 16.844h20.625v1.375H.688Zm0 0'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-terrain-enabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='%2333b5e5' viewBox='0 0 22 22'%3E%3Cpath d='m1.754 13.406 4.453-4.851 3.09 3.09 3.281 3.277.969-.969-3.309-3.312 3.844-4.121 6.148 6.886h1.082v-.855l-7.207-8.07-4.84 5.187L6.169 6.57l-5.48 5.965v.871ZM.688 16.844h20.625v1.375H.688Zm0 0'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23aaa' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath fill='red' d='m14 5 1 1-9 9-1-1 9-9z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%2333b5e5' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23e58978' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%2333b5e5' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23e54e33' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-waiting .maplibregl-ctrl-icon{animation:maplibregl-spin 2s linear infinite}@media (-ms-high-contrast:active){.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23999' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath fill='red' d='m14 5 1 1-9 9-1-1 9-9z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%2333b5e5' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23e58978' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%2333b5e5' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23e54e33' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23666' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath fill='red' d='m14 5 1 1-9 9-1-1 9-9z'/%3E%3C/svg%3E")}}@keyframes maplibregl-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}a.maplibregl-ctrl-logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath fill='%23000' fill-opacity='.4' fill-rule='evenodd' d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.255 1.255 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.255 1.255 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5.11 5.11 0 0 1 .314-.787l.009-.016a4.623 4.623 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.548 4.548 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4.314.319.566.676.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.416 2.416 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.448 2.448 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675c.211.2.381.43.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.76 4.76 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.407 3.407 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.255 1.255 0 0 1 .689 1.004 4.73 4.73 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528 0 .343-.02.694-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.815 5.815 0 0 1-.548-2.512c0-.286.017-.567.053-.843a1.255 1.255 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.778 4.778 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.47 4.47 0 0 1-1.935-.424 1.252 1.252 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.402 2.402 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.703 4.703 0 0 1-1.782 1.884 4.767 4.767 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.47 4.47 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a4.983 4.983 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.255 1.255 0 0 1-1.115.676h-.098a1.255 1.255 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15c.329-.237.574-.499.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267c-.088-.22-.264-.438-.526-.658l-.032-.028a3.16 3.16 0 0 0-.668-.428l-.27-.12a3.293 3.293 0 0 0-1.235-.23c-.757 0-1.415.163-1.974.493a3.36 3.36 0 0 0-1.3 1.382c-.297.593-.444 1.284-.444 2.074 0 .8.17 1.503.51 2.107a3.795 3.795 0 0 0 1.382 1.381 3.883 3.883 0 0 0 1.893.477c.53 0 1.015-.11 1.455-.33zm-2.789-5.38c-.384.45-.575 1.038-.575 1.762 0 .735.186 1.332.559 1.794.384.45.933.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.17 2.17 0 0 0 .468-.29l.178-.161a2.163 2.163 0 0 0 .397-.561c.163-.333.244-.717.244-1.15v-.115c0-.472-.098-.894-.296-1.267l-.043-.077a2.211 2.211 0 0 0-.633-.709l-.13-.086-.047-.028a2.099 2.099 0 0 0-1.073-.285c-.702 0-1.244.231-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.958.958 0 0 0-.353-.389.851.851 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.626 2.626 0 0 0 .331.423c.213.22.464.402.755.548l.173.074c.433.17.93.255 1.49.255.68 0 1.295-.165 1.844-.493a3.447 3.447 0 0 0 1.316-1.4c.329-.603.493-1.299.493-2.089 0-1.273-.33-2.243-.988-2.913-.658-.68-1.52-1.02-2.584-1.02-.598 0-1.124.115-1.575.347a2.807 2.807 0 0 0-.415.262l-.199.166a3.35 3.35 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138c.137.193.297.36.48.5l.155.11.053.034c.34.197.713.297 1.119.297.714 0 1.262-.225 1.645-.675.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.29 0-.569.053-.835.16a2.366 2.366 0 0 0-.284.136 1.99 1.99 0 0 0-.363.254 2.237 2.237 0 0 0-.46.569l-.082.162a2.56 2.56 0 0 0-.213 1.072v.115c0 .471.098.894.296 1.267l.135.211zm.964-.818a1.11 1.11 0 0 0 .367.385.937.937 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a.995.995 0 0 0-.503.135l-.012.007a.859.859 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.43 1.43 0 0 0 .14.66zm15.7-6.222c.232-.23.346-.516.346-.856a1.053 1.053 0 0 0-.345-.79 1.175 1.175 0 0 0-.84-.329c-.34 0-.625.11-.855.33a1.053 1.053 0 0 0-.346.79c0 .34.115.625.346.855.23.23.516.346.856.346.34 0 .62-.115.839-.346zm4.337 9.314.033-1.332c.128.269.324.518.59.747l.098.081a3.727 3.727 0 0 0 .316.224l.223.122a3.21 3.21 0 0 0 1.44.322 3.785 3.785 0 0 0 1.875-.477 3.52 3.52 0 0 0 1.382-1.366c.352-.593.526-1.29.526-2.09 0-.79-.147-1.48-.444-2.073a3.235 3.235 0 0 0-1.283-1.399c-.549-.34-1.195-.51-1.942-.51a3.476 3.476 0 0 0-1.527.344l-.086.043-.165.09a3.412 3.412 0 0 0-.33.214c-.288.21-.507.446-.656.707a1.893 1.893 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.482 2.482 0 0 0 .566.7c.078.065.159.125.245.18l.144.08a2.105 2.105 0 0 0 .975.232c.713 0 1.262-.225 1.645-.675.384-.46.576-1.053.576-1.778 0-.734-.192-1.327-.576-1.777-.373-.46-.921-.692-1.645-.692a2.18 2.18 0 0 0-1.015.235c-.147.075-.285.17-.415.282l-.15.142a2.086 2.086 0 0 0-.42.594c-.149.32-.223.685-.223 1.1v.115c0 .47.097.89.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.868.868 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.13 1.13 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013c.23-.087.472-.134.724-.14l.069-.002c.329 0 .542.033.642.099l.247-1.794c-.13-.066-.37-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2.086 2.086 0 0 0-.411.148 2.18 2.18 0 0 0-.4.249 2.482 2.482 0 0 0-.485.499 2.659 2.659 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884c0-.364.053-.678.159-.943a1.49 1.49 0 0 1 .466-.636 2.52 2.52 0 0 1 .399-.253 2.19 2.19 0 0 1 .224-.099zm9.784 2.656.05-.922c0-1.162-.285-2.062-.856-2.698-.559-.647-1.42-.97-2.584-.97-.746 0-1.415.163-2.007.493a3.462 3.462 0 0 0-1.4 1.382c-.329.604-.493 1.306-.493 2.106 0 .714.143 1.371.428 1.975.285.593.73 1.07 1.332 1.432.604.351 1.355.526 2.255.526.649 0 1.204-.062 1.668-.185l.044-.012.135-.04c.409-.122.736-.263.984-.421l-.542-1.267c-.2.108-.415.199-.642.274l-.297.087c-.34.088-.773.131-1.3.131-.636 0-1.135-.147-1.497-.444a1.573 1.573 0 0 1-.192-.193c-.244-.294-.415-.705-.512-1.234l-.004-.021h5.43zm-5.427-1.256-.003.022h3.752v-.138c-.007-.485-.104-.857-.288-1.118a1.056 1.056 0 0 0-.156-.176c-.307-.285-.746-.428-1.316-.428-.657 0-1.155.202-1.494.604-.253.3-.417.712-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z'/%3E%3Cpath fill='%23fff' d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81c-.68 0-1.311-.16-1.893-.478a3.795 3.795 0 0 1-1.381-1.382c-.34-.604-.51-1.306-.51-2.106 0-.79.147-1.482.444-2.074a3.364 3.364 0 0 1 1.3-1.382c.559-.33 1.217-.494 1.974-.494a3.293 3.293 0 0 1 1.234.231 3.341 3.341 0 0 1 .97.575c.264.22.44.439.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332c-.186.395-.526.746-1.02 1.053a3.167 3.167 0 0 1-1.662.444zm.296-1.482c.626 0 1.152-.214 1.58-.642.428-.44.642-1.01.642-1.711v-.115c0-.472-.098-.894-.296-1.267a2.211 2.211 0 0 0-.807-.872 2.098 2.098 0 0 0-1.119-.313c-.702 0-1.245.231-1.629.692-.384.45-.575 1.037-.575 1.76 0 .736.186 1.333.559 1.795.384.45.933.675 1.645.675zm6.521-6.237h1.711v1.4c.604-1.065 1.547-1.597 2.83-1.597 1.064 0 1.926.34 2.584 1.02.659.67.988 1.641.988 2.914 0 .79-.164 1.487-.493 2.09a3.456 3.456 0 0 1-1.316 1.399 3.51 3.51 0 0 1-1.844.493c-.636 0-1.19-.11-1.662-.329a2.665 2.665 0 0 1-1.086-.97l.017 5.134h-1.728V9.242zm4.048 6.22c.714 0 1.262-.224 1.645-.674.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.395 0-.768.098-1.12.296-.34.187-.613.46-.822.823-.197.351-.296.763-.296 1.234v.115c0 .472.098.894.296 1.267.209.362.483.647.823.855.34.197.713.297 1.119.297z'/%3E%3Cpath fill='%23e1e3e9' d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.159 1.159 0 0 1-.856-.346 1.165 1.165 0 0 1-.346-.856 1.053 1.053 0 0 1 .346-.79c.23-.219.516-.329.856-.329.329 0 .609.11.839.33a1.053 1.053 0 0 1 .345.79 1.159 1.159 0 0 1-.345.855c-.22.23-.5.346-.84.346zm7.875 9.133a3.167 3.167 0 0 1-1.662-.444c-.482-.307-.817-.658-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283c.186-.438.548-.812 1.086-1.119a3.486 3.486 0 0 1 1.778-.477c.746 0 1.393.17 1.942.51a3.235 3.235 0 0 1 1.283 1.4c.297.592.444 1.282.444 2.072 0 .8-.175 1.498-.526 2.09a3.52 3.52 0 0 1-1.382 1.366 3.785 3.785 0 0 1-1.876.477zm-.296-1.481c.713 0 1.26-.225 1.645-.675.384-.46.577-1.053.577-1.778 0-.734-.193-1.327-.577-1.776-.373-.46-.921-.692-1.645-.692a2.115 2.115 0 0 0-1.58.659c-.428.428-.642.992-.642 1.694v.115c0 .473.098.895.296 1.267a2.385 2.385 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481c.176-.505.46-.91.856-1.217a2.14 2.14 0 0 1 1.349-.46c.351 0 .593.032.724.098l-.247 1.794c-.099-.066-.313-.099-.642-.099-.516 0-.988.164-1.416.494-.417.329-.626.855-.626 1.58v3.883h-1.777V9.242zm9.534 7.718c-.9 0-1.651-.175-2.255-.526-.603-.362-1.047-.84-1.332-1.432a4.567 4.567 0 0 1-.428-1.975c0-.8.164-1.502.493-2.106a3.462 3.462 0 0 1 1.4-1.382c.592-.33 1.262-.494 2.007-.494 1.163 0 2.024.324 2.584.97.57.637.856 1.537.856 2.7 0 .296-.017.603-.05.92h-5.43c.12.67.356 1.153.708 1.45.362.296.86.443 1.497.443.526 0 .96-.044 1.3-.131a4.123 4.123 0 0 0 .938-.362l.542 1.267c-.274.175-.647.329-1.119.46-.472.132-1.042.197-1.711.197zm1.596-4.558c.01-.68-.137-1.158-.444-1.432-.307-.285-.746-.428-1.316-.428-1.152 0-1.815.62-1.991 1.86h3.752z'/%3E%3Cg fill-rule='evenodd' stroke-width='1.036'%3E%3Cpath fill='%23000' fill-opacity='.4' d='m8.166 16.146-.002.002a1.54 1.54 0 0 1-2.009 0l-.002-.002-.043-.034-.002-.002-.199-.162H4.377a.657.657 0 0 0-.659.659v1.84a.657.657 0 0 0 .659.659h5.565a.657.657 0 0 0 .659-.659v-1.84a.657.657 0 0 0-.659-.659H8.411l-.202.164zm-1.121-.905a.29.29 0 0 0 .113.023.286.286 0 0 0 .189-.07l.077-.063c.634-.508 4.672-3.743 4.672-7.575 0-2.55-2.215-4.625-4.938-4.625S2.221 5.006 2.221 7.556c0 3.225 2.86 6.027 4.144 7.137h.004l.04.038.484.4.077.063a.628.628 0 0 0 .074.047zm-2.52-.548a16.898 16.898 0 0 1-1.183-1.315C2.187 11.942.967 9.897.967 7.555c0-3.319 2.855-5.88 6.192-5.88 3.338 0 6.193 2.561 6.193 5.881 0 2.34-1.22 4.387-2.376 5.822a16.898 16.898 0 0 1-1.182 1.315h.15a1.912 1.912 0 0 1 1.914 1.914v1.84a1.912 1.912 0 0 1-1.914 1.914H4.377a1.912 1.912 0 0 1-1.914-1.914v-1.84a1.912 1.912 0 0 1 1.914-1.914zm3.82-6.935c0 .692-.55 1.222-1.187 1.222s-1.185-.529-1.185-1.222.548-1.222 1.185-1.222c.638 0 1.186.529 1.186 1.222zm-1.186 2.477c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477zm2.048 7.71H5.114v-.838h4.093z'/%3E%3Cpath fill='%23e1e3e9' d='M2.222 7.555c0-2.55 2.214-4.625 4.937-4.625 2.723 0 4.938 2.075 4.938 4.625 0 3.832-4.038 7.068-4.672 7.575l-.077.063a.286.286 0 0 1-.189.07.286.286 0 0 1-.188-.07l-.077-.063c-.634-.507-4.672-3.743-4.672-7.575zm4.937 2.68c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477z'/%3E%3Cpath fill='%23fff' d='M4.377 15.948a.657.657 0 0 0-.659.659v1.84a.657.657 0 0 0 .659.659h5.565a.657.657 0 0 0 .659-.659v-1.84a.657.657 0 0 0-.659-.659zm4.83 1.16H5.114v.838h4.093z'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;cursor:pointer;display:block;height:23px;margin:0 0 -4px -4px;overflow:hidden;width:88px}a.maplibregl-ctrl-logo.maplibregl-compact{width:14px}@media (-ms-high-contrast:active){a.maplibregl-ctrl-logo{background-color:transparent;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath fill='%23000' fill-opacity='.4' fill-rule='evenodd' d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.255 1.255 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.255 1.255 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5.11 5.11 0 0 1 .314-.787l.009-.016a4.623 4.623 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.548 4.548 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4.314.319.566.676.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.416 2.416 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.448 2.448 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675c.211.2.381.43.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.76 4.76 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.407 3.407 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.255 1.255 0 0 1 .689 1.004 4.73 4.73 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528 0 .343-.02.694-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.815 5.815 0 0 1-.548-2.512c0-.286.017-.567.053-.843a1.255 1.255 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.778 4.778 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.47 4.47 0 0 1-1.935-.424 1.252 1.252 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.402 2.402 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.703 4.703 0 0 1-1.782 1.884 4.767 4.767 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.47 4.47 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a4.983 4.983 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.255 1.255 0 0 1-1.115.676h-.098a1.255 1.255 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15c.329-.237.574-.499.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267c-.088-.22-.264-.438-.526-.658l-.032-.028a3.16 3.16 0 0 0-.668-.428l-.27-.12a3.293 3.293 0 0 0-1.235-.23c-.757 0-1.415.163-1.974.493a3.36 3.36 0 0 0-1.3 1.382c-.297.593-.444 1.284-.444 2.074 0 .8.17 1.503.51 2.107a3.795 3.795 0 0 0 1.382 1.381 3.883 3.883 0 0 0 1.893.477c.53 0 1.015-.11 1.455-.33zm-2.789-5.38c-.384.45-.575 1.038-.575 1.762 0 .735.186 1.332.559 1.794.384.45.933.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.17 2.17 0 0 0 .468-.29l.178-.161a2.163 2.163 0 0 0 .397-.561c.163-.333.244-.717.244-1.15v-.115c0-.472-.098-.894-.296-1.267l-.043-.077a2.211 2.211 0 0 0-.633-.709l-.13-.086-.047-.028a2.099 2.099 0 0 0-1.073-.285c-.702 0-1.244.231-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.958.958 0 0 0-.353-.389.851.851 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.626 2.626 0 0 0 .331.423c.213.22.464.402.755.548l.173.074c.433.17.93.255 1.49.255.68 0 1.295-.165 1.844-.493a3.447 3.447 0 0 0 1.316-1.4c.329-.603.493-1.299.493-2.089 0-1.273-.33-2.243-.988-2.913-.658-.68-1.52-1.02-2.584-1.02-.598 0-1.124.115-1.575.347a2.807 2.807 0 0 0-.415.262l-.199.166a3.35 3.35 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138c.137.193.297.36.48.5l.155.11.053.034c.34.197.713.297 1.119.297.714 0 1.262-.225 1.645-.675.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.29 0-.569.053-.835.16a2.366 2.366 0 0 0-.284.136 1.99 1.99 0 0 0-.363.254 2.237 2.237 0 0 0-.46.569l-.082.162a2.56 2.56 0 0 0-.213 1.072v.115c0 .471.098.894.296 1.267l.135.211zm.964-.818a1.11 1.11 0 0 0 .367.385.937.937 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a.995.995 0 0 0-.503.135l-.012.007a.859.859 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.43 1.43 0 0 0 .14.66zm15.7-6.222c.232-.23.346-.516.346-.856a1.053 1.053 0 0 0-.345-.79 1.175 1.175 0 0 0-.84-.329c-.34 0-.625.11-.855.33a1.053 1.053 0 0 0-.346.79c0 .34.115.625.346.855.23.23.516.346.856.346.34 0 .62-.115.839-.346zm4.337 9.314.033-1.332c.128.269.324.518.59.747l.098.081a3.727 3.727 0 0 0 .316.224l.223.122a3.21 3.21 0 0 0 1.44.322 3.785 3.785 0 0 0 1.875-.477 3.52 3.52 0 0 0 1.382-1.366c.352-.593.526-1.29.526-2.09 0-.79-.147-1.48-.444-2.073a3.235 3.235 0 0 0-1.283-1.399c-.549-.34-1.195-.51-1.942-.51a3.476 3.476 0 0 0-1.527.344l-.086.043-.165.09a3.412 3.412 0 0 0-.33.214c-.288.21-.507.446-.656.707a1.893 1.893 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.482 2.482 0 0 0 .566.7c.078.065.159.125.245.18l.144.08a2.105 2.105 0 0 0 .975.232c.713 0 1.262-.225 1.645-.675.384-.46.576-1.053.576-1.778 0-.734-.192-1.327-.576-1.777-.373-.46-.921-.692-1.645-.692a2.18 2.18 0 0 0-1.015.235c-.147.075-.285.17-.415.282l-.15.142a2.086 2.086 0 0 0-.42.594c-.149.32-.223.685-.223 1.1v.115c0 .47.097.89.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.868.868 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.13 1.13 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013c.23-.087.472-.134.724-.14l.069-.002c.329 0 .542.033.642.099l.247-1.794c-.13-.066-.37-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2.086 2.086 0 0 0-.411.148 2.18 2.18 0 0 0-.4.249 2.482 2.482 0 0 0-.485.499 2.659 2.659 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884c0-.364.053-.678.159-.943a1.49 1.49 0 0 1 .466-.636 2.52 2.52 0 0 1 .399-.253 2.19 2.19 0 0 1 .224-.099zm9.784 2.656.05-.922c0-1.162-.285-2.062-.856-2.698-.559-.647-1.42-.97-2.584-.97-.746 0-1.415.163-2.007.493a3.462 3.462 0 0 0-1.4 1.382c-.329.604-.493 1.306-.493 2.106 0 .714.143 1.371.428 1.975.285.593.73 1.07 1.332 1.432.604.351 1.355.526 2.255.526.649 0 1.204-.062 1.668-.185l.044-.012.135-.04c.409-.122.736-.263.984-.421l-.542-1.267c-.2.108-.415.199-.642.274l-.297.087c-.34.088-.773.131-1.3.131-.636 0-1.135-.147-1.497-.444a1.573 1.573 0 0 1-.192-.193c-.244-.294-.415-.705-.512-1.234l-.004-.021h5.43zm-5.427-1.256-.003.022h3.752v-.138c-.007-.485-.104-.857-.288-1.118a1.056 1.056 0 0 0-.156-.176c-.307-.285-.746-.428-1.316-.428-.657 0-1.155.202-1.494.604-.253.3-.417.712-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z'/%3E%3Cpath fill='%23fff' d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81c-.68 0-1.311-.16-1.893-.478a3.795 3.795 0 0 1-1.381-1.382c-.34-.604-.51-1.306-.51-2.106 0-.79.147-1.482.444-2.074a3.364 3.364 0 0 1 1.3-1.382c.559-.33 1.217-.494 1.974-.494a3.293 3.293 0 0 1 1.234.231 3.341 3.341 0 0 1 .97.575c.264.22.44.439.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332c-.186.395-.526.746-1.02 1.053a3.167 3.167 0 0 1-1.662.444zm.296-1.482c.626 0 1.152-.214 1.58-.642.428-.44.642-1.01.642-1.711v-.115c0-.472-.098-.894-.296-1.267a2.211 2.211 0 0 0-.807-.872 2.098 2.098 0 0 0-1.119-.313c-.702 0-1.245.231-1.629.692-.384.45-.575 1.037-.575 1.76 0 .736.186 1.333.559 1.795.384.45.933.675 1.645.675zm6.521-6.237h1.711v1.4c.604-1.065 1.547-1.597 2.83-1.597 1.064 0 1.926.34 2.584 1.02.659.67.988 1.641.988 2.914 0 .79-.164 1.487-.493 2.09a3.456 3.456 0 0 1-1.316 1.399 3.51 3.51 0 0 1-1.844.493c-.636 0-1.19-.11-1.662-.329a2.665 2.665 0 0 1-1.086-.97l.017 5.134h-1.728V9.242zm4.048 6.22c.714 0 1.262-.224 1.645-.674.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.395 0-.768.098-1.12.296-.34.187-.613.46-.822.823-.197.351-.296.763-.296 1.234v.115c0 .472.098.894.296 1.267.209.362.483.647.823.855.34.197.713.297 1.119.297z'/%3E%3Cpath fill='%23e1e3e9' d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.159 1.159 0 0 1-.856-.346 1.165 1.165 0 0 1-.346-.856 1.053 1.053 0 0 1 .346-.79c.23-.219.516-.329.856-.329.329 0 .609.11.839.33a1.053 1.053 0 0 1 .345.79 1.159 1.159 0 0 1-.345.855c-.22.23-.5.346-.84.346zm7.875 9.133a3.167 3.167 0 0 1-1.662-.444c-.482-.307-.817-.658-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283c.186-.438.548-.812 1.086-1.119a3.486 3.486 0 0 1 1.778-.477c.746 0 1.393.17 1.942.51a3.235 3.235 0 0 1 1.283 1.4c.297.592.444 1.282.444 2.072 0 .8-.175 1.498-.526 2.09a3.52 3.52 0 0 1-1.382 1.366 3.785 3.785 0 0 1-1.876.477zm-.296-1.481c.713 0 1.26-.225 1.645-.675.384-.46.577-1.053.577-1.778 0-.734-.193-1.327-.577-1.776-.373-.46-.921-.692-1.645-.692a2.115 2.115 0 0 0-1.58.659c-.428.428-.642.992-.642 1.694v.115c0 .473.098.895.296 1.267a2.385 2.385 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481c.176-.505.46-.91.856-1.217a2.14 2.14 0 0 1 1.349-.46c.351 0 .593.032.724.098l-.247 1.794c-.099-.066-.313-.099-.642-.099-.516 0-.988.164-1.416.494-.417.329-.626.855-.626 1.58v3.883h-1.777V9.242zm9.534 7.718c-.9 0-1.651-.175-2.255-.526-.603-.362-1.047-.84-1.332-1.432a4.567 4.567 0 0 1-.428-1.975c0-.8.164-1.502.493-2.106a3.462 3.462 0 0 1 1.4-1.382c.592-.33 1.262-.494 2.007-.494 1.163 0 2.024.324 2.584.97.57.637.856 1.537.856 2.7 0 .296-.017.603-.05.92h-5.43c.12.67.356 1.153.708 1.45.362.296.86.443 1.497.443.526 0 .96-.044 1.3-.131a4.123 4.123 0 0 0 .938-.362l.542 1.267c-.274.175-.647.329-1.119.46-.472.132-1.042.197-1.711.197zm1.596-4.558c.01-.68-.137-1.158-.444-1.432-.307-.285-.746-.428-1.316-.428-1.152 0-1.815.62-1.991 1.86h3.752z'/%3E%3Cg fill-rule='evenodd' stroke-width='1.036'%3E%3Cpath fill='%23000' fill-opacity='.4' d='m8.166 16.146-.002.002a1.54 1.54 0 0 1-2.009 0l-.002-.002-.043-.034-.002-.002-.199-.162H4.377a.657.657 0 0 0-.659.659v1.84a.657.657 0 0 0 .659.659h5.565a.657.657 0 0 0 .659-.659v-1.84a.657.657 0 0 0-.659-.659H8.411l-.202.164zm-1.121-.905a.29.29 0 0 0 .113.023.286.286 0 0 0 .189-.07l.077-.063c.634-.508 4.672-3.743 4.672-7.575 0-2.55-2.215-4.625-4.938-4.625S2.221 5.006 2.221 7.556c0 3.225 2.86 6.027 4.144 7.137h.004l.04.038.484.4.077.063a.628.628 0 0 0 .074.047zm-2.52-.548a16.898 16.898 0 0 1-1.183-1.315C2.187 11.942.967 9.897.967 7.555c0-3.319 2.855-5.88 6.192-5.88 3.338 0 6.193 2.561 6.193 5.881 0 2.34-1.22 4.387-2.376 5.822a16.898 16.898 0 0 1-1.182 1.315h.15a1.912 1.912 0 0 1 1.914 1.914v1.84a1.912 1.912 0 0 1-1.914 1.914H4.377a1.912 1.912 0 0 1-1.914-1.914v-1.84a1.912 1.912 0 0 1 1.914-1.914zm3.82-6.935c0 .692-.55 1.222-1.187 1.222s-1.185-.529-1.185-1.222.548-1.222 1.185-1.222c.638 0 1.186.529 1.186 1.222zm-1.186 2.477c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477zm2.048 7.71H5.114v-.838h4.093z'/%3E%3Cpath fill='%23e1e3e9' d='M2.222 7.555c0-2.55 2.214-4.625 4.937-4.625 2.723 0 4.938 2.075 4.938 4.625 0 3.832-4.038 7.068-4.672 7.575l-.077.063a.286.286 0 0 1-.189.07.286.286 0 0 1-.188-.07l-.077-.063c-.634-.507-4.672-3.743-4.672-7.575zm4.937 2.68c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477z'/%3E%3Cpath fill='%23fff' d='M4.377 15.948a.657.657 0 0 0-.659.659v1.84a.657.657 0 0 0 .659.659h5.565a.657.657 0 0 0 .659-.659v-1.84a.657.657 0 0 0-.659-.659zm4.83 1.16H5.114v.838h4.093z'/%3E%3C/g%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){a.maplibregl-ctrl-logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath fill='%23000' fill-opacity='.4' fill-rule='evenodd' d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.255 1.255 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.255 1.255 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5.11 5.11 0 0 1 .314-.787l.009-.016a4.623 4.623 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.548 4.548 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4.314.319.566.676.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.416 2.416 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.448 2.448 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675c.211.2.381.43.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.76 4.76 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.407 3.407 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.255 1.255 0 0 1 .689 1.004 4.73 4.73 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528 0 .343-.02.694-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.815 5.815 0 0 1-.548-2.512c0-.286.017-.567.053-.843a1.255 1.255 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.778 4.778 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.47 4.47 0 0 1-1.935-.424 1.252 1.252 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.402 2.402 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.703 4.703 0 0 1-1.782 1.884 4.767 4.767 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.47 4.47 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a4.983 4.983 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.255 1.255 0 0 1-1.115.676h-.098a1.255 1.255 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15c.329-.237.574-.499.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267c-.088-.22-.264-.438-.526-.658l-.032-.028a3.16 3.16 0 0 0-.668-.428l-.27-.12a3.293 3.293 0 0 0-1.235-.23c-.757 0-1.415.163-1.974.493a3.36 3.36 0 0 0-1.3 1.382c-.297.593-.444 1.284-.444 2.074 0 .8.17 1.503.51 2.107a3.795 3.795 0 0 0 1.382 1.381 3.883 3.883 0 0 0 1.893.477c.53 0 1.015-.11 1.455-.33zm-2.789-5.38c-.384.45-.575 1.038-.575 1.762 0 .735.186 1.332.559 1.794.384.45.933.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.17 2.17 0 0 0 .468-.29l.178-.161a2.163 2.163 0 0 0 .397-.561c.163-.333.244-.717.244-1.15v-.115c0-.472-.098-.894-.296-1.267l-.043-.077a2.211 2.211 0 0 0-.633-.709l-.13-.086-.047-.028a2.099 2.099 0 0 0-1.073-.285c-.702 0-1.244.231-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.958.958 0 0 0-.353-.389.851.851 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.626 2.626 0 0 0 .331.423c.213.22.464.402.755.548l.173.074c.433.17.93.255 1.49.255.68 0 1.295-.165 1.844-.493a3.447 3.447 0 0 0 1.316-1.4c.329-.603.493-1.299.493-2.089 0-1.273-.33-2.243-.988-2.913-.658-.68-1.52-1.02-2.584-1.02-.598 0-1.124.115-1.575.347a2.807 2.807 0 0 0-.415.262l-.199.166a3.35 3.35 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138c.137.193.297.36.48.5l.155.11.053.034c.34.197.713.297 1.119.297.714 0 1.262-.225 1.645-.675.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.29 0-.569.053-.835.16a2.366 2.366 0 0 0-.284.136 1.99 1.99 0 0 0-.363.254 2.237 2.237 0 0 0-.46.569l-.082.162a2.56 2.56 0 0 0-.213 1.072v.115c0 .471.098.894.296 1.267l.135.211zm.964-.818a1.11 1.11 0 0 0 .367.385.937.937 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a.995.995 0 0 0-.503.135l-.012.007a.859.859 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.43 1.43 0 0 0 .14.66zm15.7-6.222c.232-.23.346-.516.346-.856a1.053 1.053 0 0 0-.345-.79 1.175 1.175 0 0 0-.84-.329c-.34 0-.625.11-.855.33a1.053 1.053 0 0 0-.346.79c0 .34.115.625.346.855.23.23.516.346.856.346.34 0 .62-.115.839-.346zm4.337 9.314.033-1.332c.128.269.324.518.59.747l.098.081a3.727 3.727 0 0 0 .316.224l.223.122a3.21 3.21 0 0 0 1.44.322 3.785 3.785 0 0 0 1.875-.477 3.52 3.52 0 0 0 1.382-1.366c.352-.593.526-1.29.526-2.09 0-.79-.147-1.48-.444-2.073a3.235 3.235 0 0 0-1.283-1.399c-.549-.34-1.195-.51-1.942-.51a3.476 3.476 0 0 0-1.527.344l-.086.043-.165.09a3.412 3.412 0 0 0-.33.214c-.288.21-.507.446-.656.707a1.893 1.893 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.482 2.482 0 0 0 .566.7c.078.065.159.125.245.18l.144.08a2.105 2.105 0 0 0 .975.232c.713 0 1.262-.225 1.645-.675.384-.46.576-1.053.576-1.778 0-.734-.192-1.327-.576-1.777-.373-.46-.921-.692-1.645-.692a2.18 2.18 0 0 0-1.015.235c-.147.075-.285.17-.415.282l-.15.142a2.086 2.086 0 0 0-.42.594c-.149.32-.223.685-.223 1.1v.115c0 .47.097.89.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.868.868 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.13 1.13 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013c.23-.087.472-.134.724-.14l.069-.002c.329 0 .542.033.642.099l.247-1.794c-.13-.066-.37-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2.086 2.086 0 0 0-.411.148 2.18 2.18 0 0 0-.4.249 2.482 2.482 0 0 0-.485.499 2.659 2.659 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884c0-.364.053-.678.159-.943a1.49 1.49 0 0 1 .466-.636 2.52 2.52 0 0 1 .399-.253 2.19 2.19 0 0 1 .224-.099zm9.784 2.656.05-.922c0-1.162-.285-2.062-.856-2.698-.559-.647-1.42-.97-2.584-.97-.746 0-1.415.163-2.007.493a3.462 3.462 0 0 0-1.4 1.382c-.329.604-.493 1.306-.493 2.106 0 .714.143 1.371.428 1.975.285.593.73 1.07 1.332 1.432.604.351 1.355.526 2.255.526.649 0 1.204-.062 1.668-.185l.044-.012.135-.04c.409-.122.736-.263.984-.421l-.542-1.267c-.2.108-.415.199-.642.274l-.297.087c-.34.088-.773.131-1.3.131-.636 0-1.135-.147-1.497-.444a1.573 1.573 0 0 1-.192-.193c-.244-.294-.415-.705-.512-1.234l-.004-.021h5.43zm-5.427-1.256-.003.022h3.752v-.138c-.007-.485-.104-.857-.288-1.118a1.056 1.056 0 0 0-.156-.176c-.307-.285-.746-.428-1.316-.428-.657 0-1.155.202-1.494.604-.253.3-.417.712-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z'/%3E%3Cpath fill='%23fff' d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81c-.68 0-1.311-.16-1.893-.478a3.795 3.795 0 0 1-1.381-1.382c-.34-.604-.51-1.306-.51-2.106 0-.79.147-1.482.444-2.074a3.364 3.364 0 0 1 1.3-1.382c.559-.33 1.217-.494 1.974-.494a3.293 3.293 0 0 1 1.234.231 3.341 3.341 0 0 1 .97.575c.264.22.44.439.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332c-.186.395-.526.746-1.02 1.053a3.167 3.167 0 0 1-1.662.444zm.296-1.482c.626 0 1.152-.214 1.58-.642.428-.44.642-1.01.642-1.711v-.115c0-.472-.098-.894-.296-1.267a2.211 2.211 0 0 0-.807-.872 2.098 2.098 0 0 0-1.119-.313c-.702 0-1.245.231-1.629.692-.384.45-.575 1.037-.575 1.76 0 .736.186 1.333.559 1.795.384.45.933.675 1.645.675zm6.521-6.237h1.711v1.4c.604-1.065 1.547-1.597 2.83-1.597 1.064 0 1.926.34 2.584 1.02.659.67.988 1.641.988 2.914 0 .79-.164 1.487-.493 2.09a3.456 3.456 0 0 1-1.316 1.399 3.51 3.51 0 0 1-1.844.493c-.636 0-1.19-.11-1.662-.329a2.665 2.665 0 0 1-1.086-.97l.017 5.134h-1.728V9.242zm4.048 6.22c.714 0 1.262-.224 1.645-.674.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.395 0-.768.098-1.12.296-.34.187-.613.46-.822.823-.197.351-.296.763-.296 1.234v.115c0 .472.098.894.296 1.267.209.362.483.647.823.855.34.197.713.297 1.119.297z'/%3E%3Cpath fill='%23e1e3e9' d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.159 1.159 0 0 1-.856-.346 1.165 1.165 0 0 1-.346-.856 1.053 1.053 0 0 1 .346-.79c.23-.219.516-.329.856-.329.329 0 .609.11.839.33a1.053 1.053 0 0 1 .345.79 1.159 1.159 0 0 1-.345.855c-.22.23-.5.346-.84.346zm7.875 9.133a3.167 3.167 0 0 1-1.662-.444c-.482-.307-.817-.658-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283c.186-.438.548-.812 1.086-1.119a3.486 3.486 0 0 1 1.778-.477c.746 0 1.393.17 1.942.51a3.235 3.235 0 0 1 1.283 1.4c.297.592.444 1.282.444 2.072 0 .8-.175 1.498-.526 2.09a3.52 3.52 0 0 1-1.382 1.366 3.785 3.785 0 0 1-1.876.477zm-.296-1.481c.713 0 1.26-.225 1.645-.675.384-.46.577-1.053.577-1.778 0-.734-.193-1.327-.577-1.776-.373-.46-.921-.692-1.645-.692a2.115 2.115 0 0 0-1.58.659c-.428.428-.642.992-.642 1.694v.115c0 .473.098.895.296 1.267a2.385 2.385 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481c.176-.505.46-.91.856-1.217a2.14 2.14 0 0 1 1.349-.46c.351 0 .593.032.724.098l-.247 1.794c-.099-.066-.313-.099-.642-.099-.516 0-.988.164-1.416.494-.417.329-.626.855-.626 1.58v3.883h-1.777V9.242zm9.534 7.718c-.9 0-1.651-.175-2.255-.526-.603-.362-1.047-.84-1.332-1.432a4.567 4.567 0 0 1-.428-1.975c0-.8.164-1.502.493-2.106a3.462 3.462 0 0 1 1.4-1.382c.592-.33 1.262-.494 2.007-.494 1.163 0 2.024.324 2.584.97.57.637.856 1.537.856 2.7 0 .296-.017.603-.05.92h-5.43c.12.67.356 1.153.708 1.45.362.296.86.443 1.497.443.526 0 .96-.044 1.3-.131a4.123 4.123 0 0 0 .938-.362l.542 1.267c-.274.175-.647.329-1.119.46-.472.132-1.042.197-1.711.197zm1.596-4.558c.01-.68-.137-1.158-.444-1.432-.307-.285-.746-.428-1.316-.428-1.152 0-1.815.62-1.991 1.86h3.752z'/%3E%3Cg fill-rule='evenodd' stroke-width='1.036'%3E%3Cpath fill='%23000' fill-opacity='.4' d='m8.166 16.146-.002.002a1.54 1.54 0 0 1-2.009 0l-.002-.002-.043-.034-.002-.002-.199-.162H4.377a.657.657 0 0 0-.659.659v1.84a.657.657 0 0 0 .659.659h5.565a.657.657 0 0 0 .659-.659v-1.84a.657.657 0 0 0-.659-.659H8.411l-.202.164zm-1.121-.905a.29.29 0 0 0 .113.023.286.286 0 0 0 .189-.07l.077-.063c.634-.508 4.672-3.743 4.672-7.575 0-2.55-2.215-4.625-4.938-4.625S2.221 5.006 2.221 7.556c0 3.225 2.86 6.027 4.144 7.137h.004l.04.038.484.4.077.063a.628.628 0 0 0 .074.047zm-2.52-.548a16.898 16.898 0 0 1-1.183-1.315C2.187 11.942.967 9.897.967 7.555c0-3.319 2.855-5.88 6.192-5.88 3.338 0 6.193 2.561 6.193 5.881 0 2.34-1.22 4.387-2.376 5.822a16.898 16.898 0 0 1-1.182 1.315h.15a1.912 1.912 0 0 1 1.914 1.914v1.84a1.912 1.912 0 0 1-1.914 1.914H4.377a1.912 1.912 0 0 1-1.914-1.914v-1.84a1.912 1.912 0 0 1 1.914-1.914zm3.82-6.935c0 .692-.55 1.222-1.187 1.222s-1.185-.529-1.185-1.222.548-1.222 1.185-1.222c.638 0 1.186.529 1.186 1.222zm-1.186 2.477c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477zm2.048 7.71H5.114v-.838h4.093z'/%3E%3Cpath fill='%23e1e3e9' d='M2.222 7.555c0-2.55 2.214-4.625 4.937-4.625 2.723 0 4.938 2.075 4.938 4.625 0 3.832-4.038 7.068-4.672 7.575l-.077.063a.286.286 0 0 1-.189.07.286.286 0 0 1-.188-.07l-.077-.063c-.634-.507-4.672-3.743-4.672-7.575zm4.937 2.68c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477z'/%3E%3Cpath fill='%23fff' d='M4.377 15.948a.657.657 0 0 0-.659.659v1.84a.657.657 0 0 0 .659.659h5.565a.657.657 0 0 0 .659-.659v-1.84a.657.657 0 0 0-.659-.659zm4.83 1.16H5.114v.838h4.093z'/%3E%3C/g%3E%3C/svg%3E")}}.maplibregl-ctrl.maplibregl-ctrl-attrib{background-color:hsla(0,0%,100%,.5);margin:0;padding:0 5px}@media screen{.maplibregl-ctrl-attrib.maplibregl-compact{background-color:#fff;border-radius:12px;box-sizing:content-box;margin:10px;min-height:20px;padding:2px 24px 2px 0;position:relative}.maplibregl-ctrl-attrib.maplibregl-compact-show{padding:2px 28px 2px 8px;visibility:visible}.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact-show,.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact-show{border-radius:12px;padding:2px 8px 2px 28px}.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-inner{display:none}.maplibregl-ctrl-attrib-button{background-color:hsla(0,0%,100%,.5);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill-rule='evenodd' viewBox='0 0 20 20'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E");border:0;border-radius:12px;box-sizing:border-box;cursor:pointer;display:none;height:24px;outline:none;position:absolute;right:0;top:0;width:24px}.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button{appearance:none;list-style:none}.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button::-webkit-details-marker{display:none}.maplibregl-ctrl-bottom-left .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-top-left .maplibregl-ctrl-attrib-button{left:0}.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-inner{display:block}.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-button{background-color:rgb(0 0 0/5%)}.maplibregl-ctrl-bottom-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;right:0}.maplibregl-ctrl-top-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{right:0;top:0}.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{left:0;top:0}.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;left:0}}@media screen and (-ms-high-contrast:active){.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='%23fff' fill-rule='evenodd' viewBox='0 0 20 20'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E")}}@media screen and (-ms-high-contrast:black-on-white){.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill-rule='evenodd' viewBox='0 0 20 20'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E")}}.maplibregl-ctrl-attrib a{color:rgba(0,0,0,.75);text-decoration:none}.maplibregl-ctrl-attrib a:hover{color:inherit;text-decoration:underline}.maplibregl-attrib-empty{display:none}.maplibregl-ctrl-scale{background-color:hsla(0,0%,100%,.75);border:2px solid #333;border-top:#333;box-sizing:border-box;color:#333;font-size:10px;padding:0 5px}.maplibregl-popup{display:flex;left:0;pointer-events:none;position:absolute;top:0;will-change:transform}.maplibregl-popup-anchor-top,.maplibregl-popup-anchor-top-left,.maplibregl-popup-anchor-top-right{flex-direction:column}.maplibregl-popup-anchor-bottom,.maplibregl-popup-anchor-bottom-left,.maplibregl-popup-anchor-bottom-right{flex-direction:column-reverse}.maplibregl-popup-anchor-left{flex-direction:row}.maplibregl-popup-anchor-right{flex-direction:row-reverse}.maplibregl-popup-tip{border:10px solid transparent;height:0;width:0;z-index:1}.maplibregl-popup-anchor-top .maplibregl-popup-tip{align-self:center;border-bottom-color:#fff;border-top:none}.maplibregl-popup-anchor-top-left .maplibregl-popup-tip{align-self:flex-start;border-bottom-color:#fff;border-left:none;border-top:none}.maplibregl-popup-anchor-top-right .maplibregl-popup-tip{align-self:flex-end;border-bottom-color:#fff;border-right:none;border-top:none}.maplibregl-popup-anchor-bottom .maplibregl-popup-tip{align-self:center;border-bottom:none;border-top-color:#fff}.maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip{align-self:flex-start;border-bottom:none;border-left:none;border-top-color:#fff}.maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip{align-self:flex-end;border-bottom:none;border-right:none;border-top-color:#fff}.maplibregl-popup-anchor-left .maplibregl-popup-tip{align-self:center;border-left:none;border-right-color:#fff}.maplibregl-popup-anchor-right .maplibregl-popup-tip{align-self:center;border-left-color:#fff;border-right:none}.maplibregl-popup-close-button{background-color:transparent;border:0;border-radius:0 3px 0 0;cursor:pointer;position:absolute;right:0;top:0}.maplibregl-popup-close-button:hover{background-color:rgb(0 0 0/5%)}.maplibregl-popup-content{background:#fff;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.1);padding:15px 10px;pointer-events:auto;position:relative}.maplibregl-popup-anchor-top-left .maplibregl-popup-content{border-top-left-radius:0}.maplibregl-popup-anchor-top-right .maplibregl-popup-content{border-top-right-radius:0}.maplibregl-popup-anchor-bottom-left .maplibregl-popup-content{border-bottom-left-radius:0}.maplibregl-popup-anchor-bottom-right .maplibregl-popup-content{border-bottom-right-radius:0}.maplibregl-popup-track-pointer{display:none}.maplibregl-popup-track-pointer *{pointer-events:none;user-select:none}.maplibregl-map:hover .maplibregl-popup-track-pointer{display:flex}.maplibregl-map:active .maplibregl-popup-track-pointer{display:none}.maplibregl-marker{left:0;position:absolute;top:0;will-change:transform}.maplibregl-user-location-dot,.maplibregl-user-location-dot:before{background-color:#1da1f2;border-radius:50%;height:15px;width:15px}.maplibregl-user-location-dot:before{animation:maplibregl-user-location-dot-pulse 2s infinite;content:"";position:absolute}.maplibregl-user-location-dot:after{border:2px solid #fff;border-radius:50%;box-shadow:0 0 3px rgba(0,0,0,.35);box-sizing:border-box;content:"";height:19px;left:-2px;position:absolute;top:-2px;width:19px}@keyframes maplibregl-user-location-dot-pulse{0%{opacity:1;transform:scale(1)}70%{opacity:0;transform:scale(3)}to{opacity:0;transform:scale(1)}}.maplibregl-user-location-dot-stale{background-color:#aaa}.maplibregl-user-location-dot-stale:after{display:none}.maplibregl-user-location-accuracy-circle{background-color:#1da1f233;border-radius:100%;height:1px;width:1px}.maplibregl-crosshair,.maplibregl-crosshair .maplibregl-interactive,.maplibregl-crosshair .maplibregl-interactive:active{cursor:crosshair}.maplibregl-boxzoom{background:#fff;border:2px dotted #202020;height:0;left:0;opacity:.5;position:absolute;top:0;width:0}.maplibregl-cooperative-gesture-screen{align-items:center;background:rgba(0,0,0,.4);color:#fff;display:flex;font-size:1.4em;inset:0;justify-content:center;line-height:1.2;opacity:0;padding:1rem;pointer-events:none;position:absolute;transition:opacity 1s ease 1s;z-index:99999}.maplibregl-cooperative-gesture-screen.maplibregl-show{opacity:1;transition:opacity .05s}.maplibregl-cooperative-gesture-screen .maplibregl-mobile-message{display:none}@media (hover:none),(width <= 480px){.maplibregl-cooperative-gesture-screen .maplibregl-desktop-message{display:none}.maplibregl-cooperative-gesture-screen .maplibregl-mobile-message{display:block}}.maplibregl-pseudo-fullscreen{height:100%!important;left:0!important;position:fixed!important;top:0!important;width:100%!important;z-index:99999}
|
static/icon/extent.png
ADDED
|
|
static/icon/flood.png
ADDED
|
|
static/icon/forecast.png
ADDED
|
|
static/icon/home.png
ADDED
|
|
static/icon/location.png
ADDED
|
|
static/icon/logo.png
ADDED
|
|
static/icon/pin.png
ADDED
|
|
static/icon/play.png
ADDED
|
|
static/icon/pm.png
ADDED
|
|
static/icon/radar.png
ADDED
|
|
static/icon/wind.png
ADDED
|
|
static/image/climate.webp
ADDED
|
static/image/economic.webp
ADDED
|
static/image/flood.jpeg
ADDED
|
static/image/hero-city-pin.png
ADDED
|
Git LFS Details
|
static/image/hero-city.jpg
ADDED
|
Git LFS Details
|
static/image/hero.png
ADDED
|
static/image/pin-location.jpeg
ADDED
|
static/image/report.jpeg
ADDED
|
static/js/chart.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
static/js/deckgl@9.0.33.min.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
static/js/maplibre-gl@3.0.0.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
static/js/popper.min.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/**
|
| 2 |
+
* @popperjs/core v2.11.8 - MIT License
|
| 3 |
+
*/
|
| 4 |
+
|
| 5 |
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){"use strict";function t(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){return e instanceof t(e).Element||e instanceof Element}function r(e){return e instanceof t(e).HTMLElement||e instanceof HTMLElement}function o(e){return"undefined"!=typeof ShadowRoot&&(e instanceof t(e).ShadowRoot||e instanceof ShadowRoot)}var i=Math.max,a=Math.min,s=Math.round;function f(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function c(){return!/^((?!chrome|android).)*safari/i.test(f())}function p(e,o,i){void 0===o&&(o=!1),void 0===i&&(i=!1);var a=e.getBoundingClientRect(),f=1,p=1;o&&r(e)&&(f=e.offsetWidth>0&&s(a.width)/e.offsetWidth||1,p=e.offsetHeight>0&&s(a.height)/e.offsetHeight||1);var u=(n(e)?t(e):window).visualViewport,l=!c()&&i,d=(a.left+(l&&u?u.offsetLeft:0))/f,h=(a.top+(l&&u?u.offsetTop:0))/p,m=a.width/f,v=a.height/p;return{width:m,height:v,top:h,right:d+m,bottom:h+v,left:d,x:d,y:h}}function u(e){var n=t(e);return{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function l(e){return e?(e.nodeName||"").toLowerCase():null}function d(e){return((n(e)?e.ownerDocument:e.document)||window.document).documentElement}function h(e){return p(d(e)).left+u(e).scrollLeft}function m(e){return t(e).getComputedStyle(e)}function v(e){var t=m(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function y(e,n,o){void 0===o&&(o=!1);var i,a,f=r(n),c=r(n)&&function(e){var t=e.getBoundingClientRect(),n=s(t.width)/e.offsetWidth||1,r=s(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(n),m=d(n),y=p(e,c,o),g={scrollLeft:0,scrollTop:0},b={x:0,y:0};return(f||!f&&!o)&&(("body"!==l(n)||v(m))&&(g=(i=n)!==t(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:u(i)),r(n)?((b=p(n,!0)).x+=n.clientLeft,b.y+=n.clientTop):m&&(b.x=h(m))),{x:y.left+g.scrollLeft-b.x,y:y.top+g.scrollTop-b.y,width:y.width,height:y.height}}function g(e){var t=p(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function b(e){return"html"===l(e)?e:e.assignedSlot||e.parentNode||(o(e)?e.host:null)||d(e)}function x(e){return["html","body","#document"].indexOf(l(e))>=0?e.ownerDocument.body:r(e)&&v(e)?e:x(b(e))}function w(e,n){var r;void 0===n&&(n=[]);var o=x(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),a=t(o),s=i?[a].concat(a.visualViewport||[],v(o)?o:[]):o,f=n.concat(s);return i?f:f.concat(w(b(s)))}function O(e){return["table","td","th"].indexOf(l(e))>=0}function j(e){return r(e)&&"fixed"!==m(e).position?e.offsetParent:null}function E(e){for(var n=t(e),i=j(e);i&&O(i)&&"static"===m(i).position;)i=j(i);return i&&("html"===l(i)||"body"===l(i)&&"static"===m(i).position)?n:i||function(e){var t=/firefox/i.test(f());if(/Trident/i.test(f())&&r(e)&&"fixed"===m(e).position)return null;var n=b(e);for(o(n)&&(n=n.host);r(n)&&["html","body"].indexOf(l(n))<0;){var i=m(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||n}var D="top",A="bottom",L="right",P="left",M="auto",k=[D,A,L,P],W="start",B="end",H="viewport",T="popper",R=k.reduce((function(e,t){return e.concat([t+"-"+W,t+"-"+B])}),[]),S=[].concat(k,[M]).reduce((function(e,t){return e.concat([t,t+"-"+W,t+"-"+B])}),[]),V=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function q(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}function C(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&o(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function N(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function I(e,r,o){return r===H?N(function(e,n){var r=t(e),o=d(e),i=r.visualViewport,a=o.clientWidth,s=o.clientHeight,f=0,p=0;if(i){a=i.width,s=i.height;var u=c();(u||!u&&"fixed"===n)&&(f=i.offsetLeft,p=i.offsetTop)}return{width:a,height:s,x:f+h(e),y:p}}(e,o)):n(r)?function(e,t){var n=p(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(r,o):N(function(e){var t,n=d(e),r=u(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=i(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=i(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),f=-r.scrollLeft+h(e),c=-r.scrollTop;return"rtl"===m(o||n).direction&&(f+=i(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:s,x:f,y:c}}(d(e)))}function _(e,t,o,s){var f="clippingParents"===t?function(e){var t=w(b(e)),o=["absolute","fixed"].indexOf(m(e).position)>=0&&r(e)?E(e):e;return n(o)?t.filter((function(e){return n(e)&&C(e,o)&&"body"!==l(e)})):[]}(e):[].concat(t),c=[].concat(f,[o]),p=c[0],u=c.reduce((function(t,n){var r=I(e,n,s);return t.top=i(r.top,t.top),t.right=a(r.right,t.right),t.bottom=a(r.bottom,t.bottom),t.left=i(r.left,t.left),t}),I(e,p,s));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u}function F(e){return e.split("-")[0]}function U(e){return e.split("-")[1]}function z(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function X(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?F(o):null,a=o?U(o):null,s=n.x+n.width/2-r.width/2,f=n.y+n.height/2-r.height/2;switch(i){case D:t={x:s,y:n.y-r.height};break;case A:t={x:s,y:n.y+n.height};break;case L:t={x:n.x+n.width,y:f};break;case P:t={x:n.x-r.width,y:f};break;default:t={x:n.x,y:n.y}}var c=i?z(i):null;if(null!=c){var p="y"===c?"height":"width";switch(a){case W:t[c]=t[c]-(n[p]/2-r[p]/2);break;case B:t[c]=t[c]+(n[p]/2-r[p]/2)}}return t}function Y(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function G(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function J(e,t){void 0===t&&(t={});var r=t,o=r.placement,i=void 0===o?e.placement:o,a=r.strategy,s=void 0===a?e.strategy:a,f=r.boundary,c=void 0===f?"clippingParents":f,u=r.rootBoundary,l=void 0===u?H:u,h=r.elementContext,m=void 0===h?T:h,v=r.altBoundary,y=void 0!==v&&v,g=r.padding,b=void 0===g?0:g,x=Y("number"!=typeof b?b:G(b,k)),w=m===T?"reference":T,O=e.rects.popper,j=e.elements[y?w:m],E=_(n(j)?j:j.contextElement||d(e.elements.popper),c,l,s),P=p(e.elements.reference),M=X({reference:P,element:O,strategy:"absolute",placement:i}),W=N(Object.assign({},O,M)),B=m===T?W:P,R={top:E.top-B.top+x.top,bottom:B.bottom-E.bottom+x.bottom,left:E.left-B.left+x.left,right:B.right-E.right+x.right},S=e.modifiersData.offset;if(m===T&&S){var V=S[i];Object.keys(R).forEach((function(e){var t=[L,A].indexOf(e)>=0?1:-1,n=[D,A].indexOf(e)>=0?"y":"x";R[e]+=V[n]*t}))}return R}var K={placement:"bottom",modifiers:[],strategy:"absolute"};function Q(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return!t.some((function(e){return!(e&&"function"==typeof e.getBoundingClientRect)}))}function Z(e){void 0===e&&(e={});var t=e,r=t.defaultModifiers,o=void 0===r?[]:r,i=t.defaultOptions,a=void 0===i?K:i;return function(e,t,r){void 0===r&&(r=a);var i,s,f={placement:"bottom",orderedModifiers:[],options:Object.assign({},K,a),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},c=[],p=!1,u={state:f,setOptions:function(r){var i="function"==typeof r?r(f.options):r;l(),f.options=Object.assign({},a,f.options,i),f.scrollParents={reference:n(e)?w(e):e.contextElement?w(e.contextElement):[],popper:w(t)};var s,p,d=function(e){var t=q(e);return V.reduce((function(e,n){return e.concat(t.filter((function(e){return e.phase===n})))}),[])}((s=[].concat(o,f.options.modifiers),p=s.reduce((function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e}),{}),Object.keys(p).map((function(e){return p[e]}))));return f.orderedModifiers=d.filter((function(e){return e.enabled})),f.orderedModifiers.forEach((function(e){var t=e.name,n=e.options,r=void 0===n?{}:n,o=e.effect;if("function"==typeof o){var i=o({state:f,name:t,instance:u,options:r}),a=function(){};c.push(i||a)}})),u.update()},forceUpdate:function(){if(!p){var e=f.elements,t=e.reference,n=e.popper;if(Q(t,n)){f.rects={reference:y(t,E(n),"fixed"===f.options.strategy),popper:g(n)},f.reset=!1,f.placement=f.options.placement,f.orderedModifiers.forEach((function(e){return f.modifiersData[e.name]=Object.assign({},e.data)}));for(var r=0;r<f.orderedModifiers.length;r++)if(!0!==f.reset){var o=f.orderedModifiers[r],i=o.fn,a=o.options,s=void 0===a?{}:a,c=o.name;"function"==typeof i&&(f=i({state:f,options:s,name:c,instance:u})||f)}else f.reset=!1,r=-1}}},update:(i=function(){return new Promise((function(e){u.forceUpdate(),e(f)}))},function(){return s||(s=new Promise((function(e){Promise.resolve().then((function(){s=void 0,e(i())}))}))),s}),destroy:function(){l(),p=!0}};if(!Q(e,t))return u;function l(){c.forEach((function(e){return e()})),c=[]}return u.setOptions(r).then((function(e){!p&&r.onFirstUpdate&&r.onFirstUpdate(e)})),u}}var $={passive:!0};var ee={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var n=e.state,r=e.instance,o=e.options,i=o.scroll,a=void 0===i||i,s=o.resize,f=void 0===s||s,c=t(n.elements.popper),p=[].concat(n.scrollParents.reference,n.scrollParents.popper);return a&&p.forEach((function(e){e.addEventListener("scroll",r.update,$)})),f&&c.addEventListener("resize",r.update,$),function(){a&&p.forEach((function(e){e.removeEventListener("scroll",r.update,$)})),f&&c.removeEventListener("resize",r.update,$)}},data:{}};var te={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=X({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},ne={top:"auto",right:"auto",bottom:"auto",left:"auto"};function re(e){var n,r=e.popper,o=e.popperRect,i=e.placement,a=e.variation,f=e.offsets,c=e.position,p=e.gpuAcceleration,u=e.adaptive,l=e.roundOffsets,h=e.isFixed,v=f.x,y=void 0===v?0:v,g=f.y,b=void 0===g?0:g,x="function"==typeof l?l({x:y,y:b}):{x:y,y:b};y=x.x,b=x.y;var w=f.hasOwnProperty("x"),O=f.hasOwnProperty("y"),j=P,M=D,k=window;if(u){var W=E(r),H="clientHeight",T="clientWidth";if(W===t(r)&&"static"!==m(W=d(r)).position&&"absolute"===c&&(H="scrollHeight",T="scrollWidth"),W=W,i===D||(i===P||i===L)&&a===B)M=A,b-=(h&&W===k&&k.visualViewport?k.visualViewport.height:W[H])-o.height,b*=p?1:-1;if(i===P||(i===D||i===A)&&a===B)j=L,y-=(h&&W===k&&k.visualViewport?k.visualViewport.width:W[T])-o.width,y*=p?1:-1}var R,S=Object.assign({position:c},u&&ne),V=!0===l?function(e,t){var n=e.x,r=e.y,o=t.devicePixelRatio||1;return{x:s(n*o)/o||0,y:s(r*o)/o||0}}({x:y,y:b},t(r)):{x:y,y:b};return y=V.x,b=V.y,p?Object.assign({},S,((R={})[M]=O?"0":"",R[j]=w?"0":"",R.transform=(k.devicePixelRatio||1)<=1?"translate("+y+"px, "+b+"px)":"translate3d("+y+"px, "+b+"px, 0)",R)):Object.assign({},S,((n={})[M]=O?b+"px":"",n[j]=w?y+"px":"",n.transform="",n))}var oe={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=void 0===r||r,i=n.adaptive,a=void 0===i||i,s=n.roundOffsets,f=void 0===s||s,c={placement:F(t.placement),variation:U(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,re(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:f})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,re(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:f})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}};var ie={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},o=t.attributes[e]||{},i=t.elements[e];r(i)&&l(i)&&(Object.assign(i.style,n),Object.keys(o).forEach((function(e){var t=o[e];!1===t?i.removeAttribute(e):i.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var o=t.elements[e],i=t.attributes[e]||{},a=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});r(o)&&l(o)&&(Object.assign(o.style,a),Object.keys(i).forEach((function(e){o.removeAttribute(e)})))}))}},requires:["computeStyles"]};var ae={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.offset,i=void 0===o?[0,0]:o,a=S.reduce((function(e,n){return e[n]=function(e,t,n){var r=F(e),o=[P,D].indexOf(r)>=0?-1:1,i="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[P,L].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,i),e}),{}),s=a[t.placement],f=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}},se={left:"right",right:"left",bottom:"top",top:"bottom"};function fe(e){return e.replace(/left|right|bottom|top/g,(function(e){return se[e]}))}var ce={start:"end",end:"start"};function pe(e){return e.replace(/start|end/g,(function(e){return ce[e]}))}function ue(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=void 0===f?S:f,p=U(r),u=p?s?R:R.filter((function(e){return U(e)===p})):k,l=u.filter((function(e){return c.indexOf(e)>=0}));0===l.length&&(l=u);var d=l.reduce((function(t,n){return t[n]=J(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[F(n)],t}),{});return Object.keys(d).sort((function(e,t){return d[e]-d[t]}))}var le={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0===a||a,f=n.fallbackPlacements,c=n.padding,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.flipVariations,h=void 0===d||d,m=n.allowedAutoPlacements,v=t.options.placement,y=F(v),g=f||(y===v||!h?[fe(v)]:function(e){if(F(e)===M)return[];var t=fe(e);return[pe(e),t,pe(t)]}(v)),b=[v].concat(g).reduce((function(e,n){return e.concat(F(n)===M?ue(t,{placement:n,boundary:p,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),x=t.rects.reference,w=t.rects.popper,O=new Map,j=!0,E=b[0],k=0;k<b.length;k++){var B=b[k],H=F(B),T=U(B)===W,R=[D,A].indexOf(H)>=0,S=R?"width":"height",V=J(t,{placement:B,boundary:p,rootBoundary:u,altBoundary:l,padding:c}),q=R?T?L:P:T?A:D;x[S]>w[S]&&(q=fe(q));var C=fe(q),N=[];if(i&&N.push(V[H]<=0),s&&N.push(V[q]<=0,V[C]<=0),N.every((function(e){return e}))){E=B,j=!1;break}O.set(B,N)}if(j)for(var I=function(e){var t=b.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return E=t,"break"},_=h?3:1;_>0;_--){if("break"===I(_))break}t.placement!==E&&(t.modifiersData[r]._skip=!0,t.placement=E,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function de(e,t,n){return i(e,a(t,n))}var he={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=void 0===o||o,f=n.altAxis,c=void 0!==f&&f,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.padding,h=n.tether,m=void 0===h||h,v=n.tetherOffset,y=void 0===v?0:v,b=J(t,{boundary:p,rootBoundary:u,padding:d,altBoundary:l}),x=F(t.placement),w=U(t.placement),O=!w,j=z(x),M="x"===j?"y":"x",k=t.modifiersData.popperOffsets,B=t.rects.reference,H=t.rects.popper,T="function"==typeof y?y(Object.assign({},t.rects,{placement:t.placement})):y,R="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,V={x:0,y:0};if(k){if(s){var q,C="y"===j?D:P,N="y"===j?A:L,I="y"===j?"height":"width",_=k[j],X=_+b[C],Y=_-b[N],G=m?-H[I]/2:0,K=w===W?B[I]:H[I],Q=w===W?-H[I]:-B[I],Z=t.elements.arrow,$=m&&Z?g(Z):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[C],ne=ee[N],re=de(0,B[I],$[I]),oe=O?B[I]/2-G-re-te-R.mainAxis:K-re-te-R.mainAxis,ie=O?-B[I]/2+G+re+ne+R.mainAxis:Q+re+ne+R.mainAxis,ae=t.elements.arrow&&E(t.elements.arrow),se=ae?"y"===j?ae.clientTop||0:ae.clientLeft||0:0,fe=null!=(q=null==S?void 0:S[j])?q:0,ce=_+ie-fe,pe=de(m?a(X,_+oe-fe-se):X,_,m?i(Y,ce):Y);k[j]=pe,V[j]=pe-_}if(c){var ue,le="x"===j?D:P,he="x"===j?A:L,me=k[M],ve="y"===M?"height":"width",ye=me+b[le],ge=me-b[he],be=-1!==[D,P].indexOf(x),xe=null!=(ue=null==S?void 0:S[M])?ue:0,we=be?ye:me-B[ve]-H[ve]-xe+R.altAxis,Oe=be?me+B[ve]+H[ve]-xe-R.altAxis:ge,je=m&&be?function(e,t,n){var r=de(e,t,n);return r>n?n:r}(we,me,Oe):de(m?we:ye,me,m?Oe:ge);k[M]=je,V[M]=je-me}t.modifiersData[r]=V}},requiresIfExists:["offset"]};var me={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=F(n.placement),f=z(s),c=[P,L].indexOf(s)>=0?"height":"width";if(i&&a){var p=function(e,t){return Y("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:G(e,k))}(o.padding,n),u=g(i),l="y"===f?D:P,d="y"===f?A:L,h=n.rects.reference[c]+n.rects.reference[f]-a[f]-n.rects.popper[c],m=a[f]-n.rects.reference[f],v=E(i),y=v?"y"===f?v.clientHeight||0:v.clientWidth||0:0,b=h/2-m/2,x=p[l],w=y-u[c]-p[d],O=y/2-u[c]/2+b,j=de(x,O,w),M=f;n.modifiersData[r]=((t={})[M]=j,t.centerOffset=j-O,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&C(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ve(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function ye(e){return[D,L,A,P].some((function(t){return e[t]>=0}))}var ge={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=J(t,{elementContext:"reference"}),s=J(t,{altBoundary:!0}),f=ve(a,r),c=ve(s,o,i),p=ye(f),u=ye(c);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":u})}},be=Z({defaultModifiers:[ee,te,oe,ie]}),xe=[ee,te,oe,ie,ae,le,he,me,ge],we=Z({defaultModifiers:xe});e.applyStyles=ie,e.arrow=me,e.computeStyles=oe,e.createPopper=we,e.createPopperLite=be,e.defaultModifiers=xe,e.detectOverflow=J,e.eventListeners=ee,e.flip=le,e.hide=ge,e.offset=ae,e.popperGenerator=Z,e.popperOffsets=te,e.preventOverflow=he,Object.defineProperty(e,"__esModule",{value:!0})}));
|
| 6 |
+
//# sourceMappingURL=popper.min.js.map
|
static/js/tailwind@3.4.5.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
static/js/tippy-bundle.umd.min.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],e):(t=t||self).tippy=e(t.Popper)}(this,(function(t){"use strict";var e="undefined"!=typeof window&&"undefined"!=typeof document,n=!!e&&!!window.msCrypto,r={passive:!0,capture:!0},o=function(){return document.body};function i(t,e,n){if(Array.isArray(t)){var r=t[e];return null==r?Array.isArray(n)?n[e]:n:r}return t}function a(t,e){var n={}.toString.call(t);return 0===n.indexOf("[object")&&n.indexOf(e+"]")>-1}function s(t,e){return"function"==typeof t?t.apply(void 0,e):t}function u(t,e){return 0===e?t:function(r){clearTimeout(n),n=setTimeout((function(){t(r)}),e)};var n}function p(t,e){var n=Object.assign({},t);return e.forEach((function(t){delete n[t]})),n}function c(t){return[].concat(t)}function f(t,e){-1===t.indexOf(e)&&t.push(e)}function l(t){return t.split("-")[0]}function d(t){return[].slice.call(t)}function v(t){return Object.keys(t).reduce((function(e,n){return void 0!==t[n]&&(e[n]=t[n]),e}),{})}function m(){return document.createElement("div")}function g(t){return["Element","Fragment"].some((function(e){return a(t,e)}))}function h(t){return a(t,"MouseEvent")}function b(t){return!(!t||!t._tippy||t._tippy.reference!==t)}function y(t){return g(t)?[t]:function(t){return a(t,"NodeList")}(t)?d(t):Array.isArray(t)?t:d(document.querySelectorAll(t))}function w(t,e){t.forEach((function(t){t&&(t.style.transitionDuration=e+"ms")}))}function x(t,e){t.forEach((function(t){t&&t.setAttribute("data-state",e)}))}function E(t){var e,n=c(t)[0];return null!=n&&null!=(e=n.ownerDocument)&&e.body?n.ownerDocument:document}function O(t,e,n){var r=e+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(e){t[r](e,n)}))}function C(t,e){for(var n=e;n;){var r;if(t.contains(n))return!0;n=null==n.getRootNode||null==(r=n.getRootNode())?void 0:r.host}return!1}var T={isTouch:!1},A=0;function L(){T.isTouch||(T.isTouch=!0,window.performance&&document.addEventListener("mousemove",D))}function D(){var t=performance.now();t-A<20&&(T.isTouch=!1,document.removeEventListener("mousemove",D)),A=t}function k(){var t=document.activeElement;if(b(t)){var e=t._tippy;t.blur&&!e.state.isVisible&&t.blur()}}var R=Object.assign({appendTo:o,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},{animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),P=Object.keys(R);function j(t){var e=(t.plugins||[]).reduce((function(e,n){var r,o=n.name,i=n.defaultValue;o&&(e[o]=void 0!==t[o]?t[o]:null!=(r=R[o])?r:i);return e}),{});return Object.assign({},t,e)}function M(t,e){var n=Object.assign({},e,{content:s(e.content,[t])},e.ignoreAttributes?{}:function(t,e){return(e?Object.keys(j(Object.assign({},R,{plugins:e}))):P).reduce((function(e,n){var r=(t.getAttribute("data-tippy-"+n)||"").trim();if(!r)return e;if("content"===n)e[n]=r;else try{e[n]=JSON.parse(r)}catch(t){e[n]=r}return e}),{})}(t,e.plugins));return n.aria=Object.assign({},R.aria,n.aria),n.aria={expanded:"auto"===n.aria.expanded?e.interactive:n.aria.expanded,content:"auto"===n.aria.content?e.interactive?null:"describedby":n.aria.content},n}function V(t,e){t.innerHTML=e}function I(t){var e=m();return!0===t?e.className="tippy-arrow":(e.className="tippy-svg-arrow",g(t)?e.appendChild(t):V(e,t)),e}function S(t,e){g(e.content)?(V(t,""),t.appendChild(e.content)):"function"!=typeof e.content&&(e.allowHTML?V(t,e.content):t.textContent=e.content)}function B(t){var e=t.firstElementChild,n=d(e.children);return{box:e,content:n.find((function(t){return t.classList.contains("tippy-content")})),arrow:n.find((function(t){return t.classList.contains("tippy-arrow")||t.classList.contains("tippy-svg-arrow")})),backdrop:n.find((function(t){return t.classList.contains("tippy-backdrop")}))}}function N(t){var e=m(),n=m();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var r=m();function o(n,r){var o=B(e),i=o.box,a=o.content,s=o.arrow;r.theme?i.setAttribute("data-theme",r.theme):i.removeAttribute("data-theme"),"string"==typeof r.animation?i.setAttribute("data-animation",r.animation):i.removeAttribute("data-animation"),r.inertia?i.setAttribute("data-inertia",""):i.removeAttribute("data-inertia"),i.style.maxWidth="number"==typeof r.maxWidth?r.maxWidth+"px":r.maxWidth,r.role?i.setAttribute("role",r.role):i.removeAttribute("role"),n.content===r.content&&n.allowHTML===r.allowHTML||S(a,t.props),r.arrow?s?n.arrow!==r.arrow&&(i.removeChild(s),i.appendChild(I(r.arrow))):i.appendChild(I(r.arrow)):s&&i.removeChild(s)}return r.className="tippy-content",r.setAttribute("data-state","hidden"),S(r,t.props),e.appendChild(n),n.appendChild(r),o(t.props,t.props),{popper:e,onUpdate:o}}N.$$tippy=!0;var H=1,U=[],_=[];function z(e,a){var p,g,b,y,A,L,D,k,P=M(e,Object.assign({},R,j(v(a)))),V=!1,I=!1,S=!1,N=!1,z=[],F=u(wt,P.interactiveDebounce),W=H++,X=(k=P.plugins).filter((function(t,e){return k.indexOf(t)===e})),Y={id:W,reference:e,popper:m(),popperInstance:null,props:P,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:X,clearDelayTimeouts:function(){clearTimeout(p),clearTimeout(g),cancelAnimationFrame(b)},setProps:function(t){if(Y.state.isDestroyed)return;at("onBeforeUpdate",[Y,t]),bt();var n=Y.props,r=M(e,Object.assign({},n,v(t),{ignoreAttributes:!0}));Y.props=r,ht(),n.interactiveDebounce!==r.interactiveDebounce&&(pt(),F=u(wt,r.interactiveDebounce));n.triggerTarget&&!r.triggerTarget?c(n.triggerTarget).forEach((function(t){t.removeAttribute("aria-expanded")})):r.triggerTarget&&e.removeAttribute("aria-expanded");ut(),it(),J&&J(n,r);Y.popperInstance&&(Ct(),At().forEach((function(t){requestAnimationFrame(t._tippy.popperInstance.forceUpdate)})));at("onAfterUpdate",[Y,t])},setContent:function(t){Y.setProps({content:t})},show:function(){var t=Y.state.isVisible,e=Y.state.isDestroyed,n=!Y.state.isEnabled,r=T.isTouch&&!Y.props.touch,a=i(Y.props.duration,0,R.duration);if(t||e||n||r)return;if(et().hasAttribute("disabled"))return;if(at("onShow",[Y],!1),!1===Y.props.onShow(Y))return;Y.state.isVisible=!0,tt()&&($.style.visibility="visible");it(),dt(),Y.state.isMounted||($.style.transition="none");if(tt()){var u=rt(),p=u.box,c=u.content;w([p,c],0)}L=function(){var t;if(Y.state.isVisible&&!N){if(N=!0,$.offsetHeight,$.style.transition=Y.props.moveTransition,tt()&&Y.props.animation){var e=rt(),n=e.box,r=e.content;w([n,r],a),x([n,r],"visible")}st(),ut(),f(_,Y),null==(t=Y.popperInstance)||t.forceUpdate(),at("onMount",[Y]),Y.props.animation&&tt()&&function(t,e){mt(t,e)}(a,(function(){Y.state.isShown=!0,at("onShown",[Y])}))}},function(){var t,e=Y.props.appendTo,n=et();t=Y.props.interactive&&e===o||"parent"===e?n.parentNode:s(e,[n]);t.contains($)||t.appendChild($);Y.state.isMounted=!0,Ct()}()},hide:function(){var t=!Y.state.isVisible,e=Y.state.isDestroyed,n=!Y.state.isEnabled,r=i(Y.props.duration,1,R.duration);if(t||e||n)return;if(at("onHide",[Y],!1),!1===Y.props.onHide(Y))return;Y.state.isVisible=!1,Y.state.isShown=!1,N=!1,V=!1,tt()&&($.style.visibility="hidden");if(pt(),vt(),it(!0),tt()){var o=rt(),a=o.box,s=o.content;Y.props.animation&&(w([a,s],r),x([a,s],"hidden"))}st(),ut(),Y.props.animation?tt()&&function(t,e){mt(t,(function(){!Y.state.isVisible&&$.parentNode&&$.parentNode.contains($)&&e()}))}(r,Y.unmount):Y.unmount()},hideWithInteractivity:function(t){nt().addEventListener("mousemove",F),f(U,F),F(t)},enable:function(){Y.state.isEnabled=!0},disable:function(){Y.hide(),Y.state.isEnabled=!1},unmount:function(){Y.state.isVisible&&Y.hide();if(!Y.state.isMounted)return;Tt(),At().forEach((function(t){t._tippy.unmount()})),$.parentNode&&$.parentNode.removeChild($);_=_.filter((function(t){return t!==Y})),Y.state.isMounted=!1,at("onHidden",[Y])},destroy:function(){if(Y.state.isDestroyed)return;Y.clearDelayTimeouts(),Y.unmount(),bt(),delete e._tippy,Y.state.isDestroyed=!0,at("onDestroy",[Y])}};if(!P.render)return Y;var q=P.render(Y),$=q.popper,J=q.onUpdate;$.setAttribute("data-tippy-root",""),$.id="tippy-"+Y.id,Y.popper=$,e._tippy=Y,$._tippy=Y;var G=X.map((function(t){return t.fn(Y)})),K=e.hasAttribute("aria-expanded");return ht(),ut(),it(),at("onCreate",[Y]),P.showOnCreate&&Lt(),$.addEventListener("mouseenter",(function(){Y.props.interactive&&Y.state.isVisible&&Y.clearDelayTimeouts()})),$.addEventListener("mouseleave",(function(){Y.props.interactive&&Y.props.trigger.indexOf("mouseenter")>=0&&nt().addEventListener("mousemove",F)})),Y;function Q(){var t=Y.props.touch;return Array.isArray(t)?t:[t,0]}function Z(){return"hold"===Q()[0]}function tt(){var t;return!(null==(t=Y.props.render)||!t.$$tippy)}function et(){return D||e}function nt(){var t=et().parentNode;return t?E(t):document}function rt(){return B($)}function ot(t){return Y.state.isMounted&&!Y.state.isVisible||T.isTouch||y&&"focus"===y.type?0:i(Y.props.delay,t?0:1,R.delay)}function it(t){void 0===t&&(t=!1),$.style.pointerEvents=Y.props.interactive&&!t?"":"none",$.style.zIndex=""+Y.props.zIndex}function at(t,e,n){var r;(void 0===n&&(n=!0),G.forEach((function(n){n[t]&&n[t].apply(n,e)})),n)&&(r=Y.props)[t].apply(r,e)}function st(){var t=Y.props.aria;if(t.content){var n="aria-"+t.content,r=$.id;c(Y.props.triggerTarget||e).forEach((function(t){var e=t.getAttribute(n);if(Y.state.isVisible)t.setAttribute(n,e?e+" "+r:r);else{var o=e&&e.replace(r,"").trim();o?t.setAttribute(n,o):t.removeAttribute(n)}}))}}function ut(){!K&&Y.props.aria.expanded&&c(Y.props.triggerTarget||e).forEach((function(t){Y.props.interactive?t.setAttribute("aria-expanded",Y.state.isVisible&&t===et()?"true":"false"):t.removeAttribute("aria-expanded")}))}function pt(){nt().removeEventListener("mousemove",F),U=U.filter((function(t){return t!==F}))}function ct(t){if(!T.isTouch||!S&&"mousedown"!==t.type){var n=t.composedPath&&t.composedPath()[0]||t.target;if(!Y.props.interactive||!C($,n)){if(c(Y.props.triggerTarget||e).some((function(t){return C(t,n)}))){if(T.isTouch)return;if(Y.state.isVisible&&Y.props.trigger.indexOf("click")>=0)return}else at("onClickOutside",[Y,t]);!0===Y.props.hideOnClick&&(Y.clearDelayTimeouts(),Y.hide(),I=!0,setTimeout((function(){I=!1})),Y.state.isMounted||vt())}}}function ft(){S=!0}function lt(){S=!1}function dt(){var t=nt();t.addEventListener("mousedown",ct,!0),t.addEventListener("touchend",ct,r),t.addEventListener("touchstart",lt,r),t.addEventListener("touchmove",ft,r)}function vt(){var t=nt();t.removeEventListener("mousedown",ct,!0),t.removeEventListener("touchend",ct,r),t.removeEventListener("touchstart",lt,r),t.removeEventListener("touchmove",ft,r)}function mt(t,e){var n=rt().box;function r(t){t.target===n&&(O(n,"remove",r),e())}if(0===t)return e();O(n,"remove",A),O(n,"add",r),A=r}function gt(t,n,r){void 0===r&&(r=!1),c(Y.props.triggerTarget||e).forEach((function(e){e.addEventListener(t,n,r),z.push({node:e,eventType:t,handler:n,options:r})}))}function ht(){var t;Z()&&(gt("touchstart",yt,{passive:!0}),gt("touchend",xt,{passive:!0})),(t=Y.props.trigger,t.split(/\s+/).filter(Boolean)).forEach((function(t){if("manual"!==t)switch(gt(t,yt),t){case"mouseenter":gt("mouseleave",xt);break;case"focus":gt(n?"focusout":"blur",Et);break;case"focusin":gt("focusout",Et)}}))}function bt(){z.forEach((function(t){var e=t.node,n=t.eventType,r=t.handler,o=t.options;e.removeEventListener(n,r,o)})),z=[]}function yt(t){var e,n=!1;if(Y.state.isEnabled&&!Ot(t)&&!I){var r="focus"===(null==(e=y)?void 0:e.type);y=t,D=t.currentTarget,ut(),!Y.state.isVisible&&h(t)&&U.forEach((function(e){return e(t)})),"click"===t.type&&(Y.props.trigger.indexOf("mouseenter")<0||V)&&!1!==Y.props.hideOnClick&&Y.state.isVisible?n=!0:Lt(t),"click"===t.type&&(V=!n),n&&!r&&Dt(t)}}function wt(t){var e=t.target,n=et().contains(e)||$.contains(e);"mousemove"===t.type&&n||function(t,e){var n=e.clientX,r=e.clientY;return t.every((function(t){var e=t.popperRect,o=t.popperState,i=t.props.interactiveBorder,a=l(o.placement),s=o.modifiersData.offset;if(!s)return!0;var u="bottom"===a?s.top.y:0,p="top"===a?s.bottom.y:0,c="right"===a?s.left.x:0,f="left"===a?s.right.x:0,d=e.top-r+u>i,v=r-e.bottom-p>i,m=e.left-n+c>i,g=n-e.right-f>i;return d||v||m||g}))}(At().concat($).map((function(t){var e,n=null==(e=t._tippy.popperInstance)?void 0:e.state;return n?{popperRect:t.getBoundingClientRect(),popperState:n,props:P}:null})).filter(Boolean),t)&&(pt(),Dt(t))}function xt(t){Ot(t)||Y.props.trigger.indexOf("click")>=0&&V||(Y.props.interactive?Y.hideWithInteractivity(t):Dt(t))}function Et(t){Y.props.trigger.indexOf("focusin")<0&&t.target!==et()||Y.props.interactive&&t.relatedTarget&&$.contains(t.relatedTarget)||Dt(t)}function Ot(t){return!!T.isTouch&&Z()!==t.type.indexOf("touch")>=0}function Ct(){Tt();var n=Y.props,r=n.popperOptions,o=n.placement,i=n.offset,a=n.getReferenceClientRect,s=n.moveTransition,u=tt()?B($).arrow:null,p=a?{getBoundingClientRect:a,contextElement:a.contextElement||et()}:e,c=[{name:"offset",options:{offset:i}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!s}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(t){var e=t.state;if(tt()){var n=rt().box;["placement","reference-hidden","escaped"].forEach((function(t){"placement"===t?n.setAttribute("data-placement",e.placement):e.attributes.popper["data-popper-"+t]?n.setAttribute("data-"+t,""):n.removeAttribute("data-"+t)})),e.attributes.popper={}}}}];tt()&&u&&c.push({name:"arrow",options:{element:u,padding:3}}),c.push.apply(c,(null==r?void 0:r.modifiers)||[]),Y.popperInstance=t.createPopper(p,$,Object.assign({},r,{placement:o,onFirstUpdate:L,modifiers:c}))}function Tt(){Y.popperInstance&&(Y.popperInstance.destroy(),Y.popperInstance=null)}function At(){return d($.querySelectorAll("[data-tippy-root]"))}function Lt(t){Y.clearDelayTimeouts(),t&&at("onTrigger",[Y,t]),dt();var e=ot(!0),n=Q(),r=n[0],o=n[1];T.isTouch&&"hold"===r&&o&&(e=o),e?p=setTimeout((function(){Y.show()}),e):Y.show()}function Dt(t){if(Y.clearDelayTimeouts(),at("onUntrigger",[Y,t]),Y.state.isVisible){if(!(Y.props.trigger.indexOf("mouseenter")>=0&&Y.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(t.type)>=0&&V)){var e=ot(!1);e?g=setTimeout((function(){Y.state.isVisible&&Y.hide()}),e):b=requestAnimationFrame((function(){Y.hide()}))}}else vt()}}function F(t,e){void 0===e&&(e={});var n=R.plugins.concat(e.plugins||[]);document.addEventListener("touchstart",L,r),window.addEventListener("blur",k);var o=Object.assign({},e,{plugins:n}),i=y(t).reduce((function(t,e){var n=e&&z(e,o);return n&&t.push(n),t}),[]);return g(t)?i[0]:i}F.defaultProps=R,F.setDefaultProps=function(t){Object.keys(t).forEach((function(e){R[e]=t[e]}))},F.currentInput=T;var W=Object.assign({},t.applyStyles,{effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow)}}),X={mouseover:"mouseenter",focusin:"focus",click:"click"};var Y={name:"animateFill",defaultValue:!1,fn:function(t){var e;if(null==(e=t.props.render)||!e.$$tippy)return{};var n=B(t.popper),r=n.box,o=n.content,i=t.props.animateFill?function(){var t=m();return t.className="tippy-backdrop",x([t],"hidden"),t}():null;return{onCreate:function(){i&&(r.insertBefore(i,r.firstElementChild),r.setAttribute("data-animatefill",""),r.style.overflow="hidden",t.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(i){var t=r.style.transitionDuration,e=Number(t.replace("ms",""));o.style.transitionDelay=Math.round(e/10)+"ms",i.style.transitionDuration=t,x([i],"visible")}},onShow:function(){i&&(i.style.transitionDuration="0ms")},onHide:function(){i&&x([i],"hidden")}}}};var q={clientX:0,clientY:0},$=[];function J(t){var e=t.clientX,n=t.clientY;q={clientX:e,clientY:n}}var G={name:"followCursor",defaultValue:!1,fn:function(t){var e=t.reference,n=E(t.props.triggerTarget||e),r=!1,o=!1,i=!0,a=t.props;function s(){return"initial"===t.props.followCursor&&t.state.isVisible}function u(){n.addEventListener("mousemove",f)}function p(){n.removeEventListener("mousemove",f)}function c(){r=!0,t.setProps({getReferenceClientRect:null}),r=!1}function f(n){var r=!n.target||e.contains(n.target),o=t.props.followCursor,i=n.clientX,a=n.clientY,s=e.getBoundingClientRect(),u=i-s.left,p=a-s.top;!r&&t.props.interactive||t.setProps({getReferenceClientRect:function(){var t=e.getBoundingClientRect(),n=i,r=a;"initial"===o&&(n=t.left+u,r=t.top+p);var s="horizontal"===o?t.top:r,c="vertical"===o?t.right:n,f="horizontal"===o?t.bottom:r,l="vertical"===o?t.left:n;return{width:c-l,height:f-s,top:s,right:c,bottom:f,left:l}}})}function l(){t.props.followCursor&&($.push({instance:t,doc:n}),function(t){t.addEventListener("mousemove",J)}(n))}function d(){0===($=$.filter((function(e){return e.instance!==t}))).filter((function(t){return t.doc===n})).length&&function(t){t.removeEventListener("mousemove",J)}(n)}return{onCreate:l,onDestroy:d,onBeforeUpdate:function(){a=t.props},onAfterUpdate:function(e,n){var i=n.followCursor;r||void 0!==i&&a.followCursor!==i&&(d(),i?(l(),!t.state.isMounted||o||s()||u()):(p(),c()))},onMount:function(){t.props.followCursor&&!o&&(i&&(f(q),i=!1),s()||u())},onTrigger:function(t,e){h(e)&&(q={clientX:e.clientX,clientY:e.clientY}),o="focus"===e.type},onHidden:function(){t.props.followCursor&&(c(),p(),i=!0)}}}};var K={name:"inlinePositioning",defaultValue:!1,fn:function(t){var e,n=t.reference;var r=-1,o=!1,i=[],a={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(o){var a=o.state;t.props.inlinePositioning&&(-1!==i.indexOf(a.placement)&&(i=[]),e!==a.placement&&-1===i.indexOf(a.placement)&&(i.push(a.placement),t.setProps({getReferenceClientRect:function(){return function(t){return function(t,e,n,r){if(n.length<2||null===t)return e;if(2===n.length&&r>=0&&n[0].left>n[1].right)return n[r]||e;switch(t){case"top":case"bottom":var o=n[0],i=n[n.length-1],a="top"===t,s=o.top,u=i.bottom,p=a?o.left:i.left,c=a?o.right:i.right;return{top:s,bottom:u,left:p,right:c,width:c-p,height:u-s};case"left":case"right":var f=Math.min.apply(Math,n.map((function(t){return t.left}))),l=Math.max.apply(Math,n.map((function(t){return t.right}))),d=n.filter((function(e){return"left"===t?e.left===f:e.right===l})),v=d[0].top,m=d[d.length-1].bottom;return{top:v,bottom:m,left:f,right:l,width:l-f,height:m-v};default:return e}}(l(t),n.getBoundingClientRect(),d(n.getClientRects()),r)}(a.placement)}})),e=a.placement)}};function s(){var e;o||(e=function(t,e){var n;return{popperOptions:Object.assign({},t.popperOptions,{modifiers:[].concat(((null==(n=t.popperOptions)?void 0:n.modifiers)||[]).filter((function(t){return t.name!==e.name})),[e])})}}(t.props,a),o=!0,t.setProps(e),o=!1)}return{onCreate:s,onAfterUpdate:s,onTrigger:function(e,n){if(h(n)){var o=d(t.reference.getClientRects()),i=o.find((function(t){return t.left-2<=n.clientX&&t.right+2>=n.clientX&&t.top-2<=n.clientY&&t.bottom+2>=n.clientY})),a=o.indexOf(i);r=a>-1?a:r}},onHidden:function(){r=-1}}}};var Q={name:"sticky",defaultValue:!1,fn:function(t){var e=t.reference,n=t.popper;function r(e){return!0===t.props.sticky||t.props.sticky===e}var o=null,i=null;function a(){var s=r("reference")?(t.popperInstance?t.popperInstance.state.elements.reference:e).getBoundingClientRect():null,u=r("popper")?n.getBoundingClientRect():null;(s&&Z(o,s)||u&&Z(i,u))&&t.popperInstance&&t.popperInstance.update(),o=s,i=u,t.state.isMounted&&requestAnimationFrame(a)}return{onMount:function(){t.props.sticky&&a()}}}};function Z(t,e){return!t||!e||(t.top!==e.top||t.right!==e.right||t.bottom!==e.bottom||t.left!==e.left)}return e&&function(t){var e=document.createElement("style");e.textContent=t,e.setAttribute("data-tippy-stylesheet","");var n=document.head,r=document.querySelector("head>style,head>link");r?n.insertBefore(e,r):n.appendChild(e)}('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'),F.setDefaultProps({plugins:[Y,G,K,Q],render:N}),F.createSingleton=function(t,e){var n;void 0===e&&(e={});var r,o=t,i=[],a=[],s=e.overrides,u=[],f=!1;function l(){a=o.map((function(t){return c(t.props.triggerTarget||t.reference)})).reduce((function(t,e){return t.concat(e)}),[])}function d(){i=o.map((function(t){return t.reference}))}function v(t){o.forEach((function(e){t?e.enable():e.disable()}))}function g(t){return o.map((function(e){var n=e.setProps;return e.setProps=function(o){n(o),e.reference===r&&t.setProps(o)},function(){e.setProps=n}}))}function h(t,e){var n=a.indexOf(e);if(e!==r){r=e;var u=(s||[]).concat("content").reduce((function(t,e){return t[e]=o[n].props[e],t}),{});t.setProps(Object.assign({},u,{getReferenceClientRect:"function"==typeof u.getReferenceClientRect?u.getReferenceClientRect:function(){var t;return null==(t=i[n])?void 0:t.getBoundingClientRect()}}))}}v(!1),d(),l();var b={fn:function(){return{onDestroy:function(){v(!0)},onHidden:function(){r=null},onClickOutside:function(t){t.props.showOnCreate&&!f&&(f=!0,r=null)},onShow:function(t){t.props.showOnCreate&&!f&&(f=!0,h(t,i[0]))},onTrigger:function(t,e){h(t,e.currentTarget)}}}},y=F(m(),Object.assign({},p(e,["overrides"]),{plugins:[b].concat(e.plugins||[]),triggerTarget:a,popperOptions:Object.assign({},e.popperOptions,{modifiers:[].concat((null==(n=e.popperOptions)?void 0:n.modifiers)||[],[W])})})),w=y.show;y.show=function(t){if(w(),!r&&null==t)return h(y,i[0]);if(!r||null!=t){if("number"==typeof t)return i[t]&&h(y,i[t]);if(o.indexOf(t)>=0){var e=t.reference;return h(y,e)}return i.indexOf(t)>=0?h(y,t):void 0}},y.showNext=function(){var t=i[0];if(!r)return y.show(0);var e=i.indexOf(r);y.show(i[e+1]||t)},y.showPrevious=function(){var t=i[i.length-1];if(!r)return y.show(t);var e=i.indexOf(r),n=i[e-1]||t;y.show(n)};var x=y.setProps;return y.setProps=function(t){s=t.overrides||s,x(t)},y.setInstances=function(t){v(!0),u.forEach((function(t){return t()})),o=t,v(!1),d(),l(),u=g(y),y.setProps({triggerTarget:a})},u=g(y),y},F.delegate=function(t,e){var n=[],o=[],i=!1,a=e.target,s=p(e,["target"]),u=Object.assign({},s,{trigger:"manual",touch:!1}),f=Object.assign({touch:R.touch},s,{showOnCreate:!0}),l=F(t,u);function d(t){if(t.target&&!i){var n=t.target.closest(a);if(n){var r=n.getAttribute("data-tippy-trigger")||e.trigger||R.trigger;if(!n._tippy&&!("touchstart"===t.type&&"boolean"==typeof f.touch||"touchstart"!==t.type&&r.indexOf(X[t.type])<0)){var s=F(n,f);s&&(o=o.concat(s))}}}}function v(t,e,r,o){void 0===o&&(o=!1),t.addEventListener(e,r,o),n.push({node:t,eventType:e,handler:r,options:o})}return c(l).forEach((function(t){var e=t.destroy,a=t.enable,s=t.disable;t.destroy=function(t){void 0===t&&(t=!0),t&&o.forEach((function(t){t.destroy()})),o=[],n.forEach((function(t){var e=t.node,n=t.eventType,r=t.handler,o=t.options;e.removeEventListener(n,r,o)})),n=[],e()},t.enable=function(){a(),o.forEach((function(t){return t.enable()})),i=!1},t.disable=function(){s(),o.forEach((function(t){return t.disable()})),i=!0},function(t){var e=t.reference;v(e,"touchstart",d,r),v(e,"mouseover",d),v(e,"focusin",d),v(e,"click",d)}(t)})),l},F.hideAll=function(t){var e=void 0===t?{}:t,n=e.exclude,r=e.duration;_.forEach((function(t){var e=!1;if(n&&(e=b(n)?t.reference===n:t.popper===n.popper),!e){var o=t.props.duration;t.setProps({duration:r}),t.hide(),t.state.isDestroyed||t.setProps({duration:o})}}))},F.roundArrow='<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>',F}));
|
| 2 |
+
//# sourceMappingURL=tippy-bundle.umd.min.js.map
|