- ID de l'analyse :
- 30856c85-b62f-4d9f-a685-6b793f445a74Terminée
- URL soumise :
- https://levelslevels.uk/
- Fin du rapport :
Liens : 4 trouvé(s)
Liens sortants identifiés à partir de la page
Lien | texte |
---|---|
https://www.somerset.gov.uk/roads-travel-and-parking/emergency-road-closure-gates | gate status |
https://github.com/bede/levelslevels | code |
https://github.com/bede/levelslevels/commits/main/ | changelog |
https://check-for-flooding.service.gov.uk/target-area/112WAFYPM | flood alert |
Variables JavaScript : 27 trouvée(s)
Les variables JavaScript globales chargées dans l'objet fenêtre d'une page sont des variables déclarées en dehors des fonctions et accessibles depuis n'importe quel endroit du code au sein du champ d'application actuel
Nom | Type |
---|---|
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
PolyBool | object |
sprintf | function |
vsprintf | function |
__TYPEDARRAY_POOL | object |
__TEXT_CACHE | object |
PlotlyGeoAssets | object |
Plotly | object |
Messages de journal de console : 4 trouvé(s)
Messages consignés dans la console web
Type | Catégorie | Enregistrement |
---|---|---|
log | other |
|
log | other |
|
log | other |
|
log | other |
|
HTML
Le corps HTML de la page en données brutes
<!DOCTYPE html><html lang="en"><head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Levels Levels</title>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css">
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png">
<link rel="apple-touch-icon" href="apple-touch-icon.png">
<link rel="manifest" href="site.webmanifest">
<link rel="shortcut icon" href="favicon.ico">
<script type="text/javascript" crossorigin="anonymous" async="" src="https://eu-assets.i.posthog.com/static/array.js"></script><script src="https://cdn.plot.ly/plotly-2.24.1.min.js"></script><style id="plotly.js-style-global"></style>
<script src="https://unpkg.com/[email protected]/dist/leaflet.js"></script>
<style>
body {
font-family: 'Inter', sans-serif;
margin: 0;
padding: 0;
line-height: 1.6;
background-color: white;
color: #333;
}
a {
color: #1f77b4;
}
a:hover {
text-decoration: underline;
}
#map-container {
position: relative;
width: 100%;
height: 460px;
overflow: hidden;
}
#map {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 460px;
z-index: 1;
}
#map-overlay {
position: absolute;
top: 15px;
left: 15px;
right: 15px; /* Full width minus 30px total horizontal margin on small screens */
background-color: rgba(255, 255, 255, 0.9);
padding: 10px 15px;
border-radius: 4px;
z-index: 2;
}
@media (min-width: 768px) {
#map-overlay {
max-width: 400px;
right: auto;
}
}
#map-overlay h1 {
font-size: 1.4rem;
font-weight: 600;
margin: 0 0 10px 0;
color: #1f77b4;
}
#map-overlay ul {
margin: 0;
padding: 0;
list-style: none;
}
#map-overlay ul li {
font-size: 1rem;
margin-bottom: 5px;
display: flex;
align-items: center;
}
.circle {
display: inline-block;
width: 15px;
height: 15px;
border-radius: 50%;
margin-right: 6px;
}
.circle.green {
background-color: #4CAF50;
}
.circle.amber {
background-color: #FFC107;
}
.circle.red {
background-color: #F44336;
}
#tab-contents {
margin: 0;
}
.tab-container {
margin: 15px 15px 0 15px;
}
.tab-buttons {
display: flex;
flex-wrap: wrap;
border-bottom: 1px solid #ccc;
margin: 0;
}
.tab-button {
padding: 10px 8px;
font-size: 0.8rem;
cursor: pointer;
background-color: #f5f5f5;
border: none;
outline: none;
font-weight: 600;
color: #333;
flex: 1;
text-align: center;
}
.tab-button.active {
background-color: #fff;
border-bottom: 2px solid #1f77b4;
color: #1f77b4;
}
.tab-content {
display: none;
}
.tab-content.active {
display: block;
}
.chart {
width: 100%;
height: 280px;
margin: 0;
padding: 0;
}
footer {
margin: 10px 5px;
text-align: center;
color: #555;
}
</style>
<script>
!function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.crossOrigin="anonymous",p.async=!0,p.src=s.api_host.replace(".i.posthog.com","-assets.i.posthog.com")+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="init capture register register_once register_for_session unregister unregister_for_session getFeatureFlag getFeatureFlagPayload isFeatureEnabled reloadFeatureFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSessionId getSurveys getActiveMatchingSurveys renderSurvey canRenderSurvey getNextSurveyStep identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetGroupPropertiesForFlags resetPersonPropertiesForFlags reset get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException loadToolbar get_property getSessionProperty createPersonProfile opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing clear_opt_in_out_capturing debug".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]);
posthog.init('phc_KlFKZyqiluUOIZvbdp6T129dDvRVRaAcKICHPeBejch', {
api_host:'https://eu.i.posthog.com',
opt_out_capturing_by_default: true,
autocapture: false
})
</script>
</head>
<body>
<div id="map-container">
<div id="map-overlay">
<h1>Muchelney area flood status</h1>
<ul id="route-status-list"><li><span class="circle green"></span><span>All routes clear (but check <a href="https://www.somerset.gov.uk/roads-travel-and-parking/emergency-road-closure-gates">gate status</a>)</span></li></ul>
</div>
<div id="map" class="leaflet-container leaflet-touch leaflet-fade-anim leaflet-grab leaflet-touch-drag leaflet-touch-zoom"><div class="leaflet-pane leaflet-map-pane" style="transform: translate3d(0px, 0px, 0px);"><div class="leaflet-pane leaflet-tile-pane"><div class="leaflet-layer " style="z-index: 1;"><div class="leaflet-tile-container leaflet-zoom-animated" style="z-index: 18; transform: translate3d(0px, 0px, 0px) scale(1);"><img alt="" src="https://b.tile.openstreetmap.org/12/2015/1370.png" class="leaflet-tile leaflet-tile-loaded" style="width: 256px; height: 256px; transform: translate3d(166px, 3px, 0px); opacity: 0;"><img alt="" src="https://c.tile.openstreetmap.org/12/2016/1370.png" class="leaflet-tile leaflet-tile-loaded" style="width: 256px; height: 256px; transform: translate3d(422px, 3px, 0px); opacity: 0;"><img alt="" src="https://a.tile.openstreetmap.org/12/2015/1369.png" class="leaflet-tile leaflet-tile-loaded" style="width: 256px; height: 256px; transform: translate3d(166px, -253px, 0px); opacity: 0;"><img alt="" src="https://b.tile.openstreetmap.org/12/2016/1369.png" class="leaflet-tile leaflet-tile-loaded" style="width: 256px; height: 256px; transform: translate3d(422px, -253px, 0px); opacity: 0;"><img alt="" src="https://c.tile.openstreetmap.org/12/2015/1371.png" class="leaflet-tile leaflet-tile-loaded" style="width: 256px; height: 256px; transform: translate3d(166px, 259px, 0px); opacity: 0;"><img alt="" src="https://a.tile.openstreetmap.org/12/2016/1371.png" class="leaflet-tile leaflet-tile-loaded" style="width: 256px; height: 256px; transform: translate3d(422px, 259px, 0px); opacity: 0;"><img alt="" src="https://a.tile.openstreetmap.org/12/2014/1370.png" class="leaflet-tile leaflet-tile-loaded" style="width: 256px; height: 256px; transform: translate3d(-90px, 3px, 0px); opacity: 0;"><img alt="" src="https://a.tile.openstreetmap.org/12/2017/1370.png" class="leaflet-tile leaflet-tile-loaded" style="width: 256px; height: 256px; transform: translate3d(678px, 3px, 0px); opacity: 0;"><img alt="" src="https://c.tile.openstreetmap.org/12/2014/1369.png" class="leaflet-tile leaflet-tile-loaded" style="width: 256px; height: 256px; transform: translate3d(-90px, -253px, 0px); opacity: 0;"><img alt="" src="https://c.tile.openstreetmap.org/12/2017/1369.png" class="leaflet-tile leaflet-tile-loaded" style="width: 256px; height: 256px; transform: translate3d(678px, -253px, 0px); opacity: 0;"><img alt="" src="https://b.tile.openstreetmap.org/12/2014/1371.png" class="leaflet-tile leaflet-tile-loaded" style="width: 256px; height: 256px; transform: translate3d(-90px, 259px, 0px); opacity: 0;"><img alt="" src="https://b.tile.openstreetmap.org/12/2017/1371.png" class="leaflet-tile leaflet-tile-loaded" style="width: 256px; height: 256px; transform: translate3d(678px, 259px, 0px); opacity: 0;"></div></div></div><div class="leaflet-pane leaflet-overlay-pane"></div><div class="leaflet-pane leaflet-shadow-pane"></div><div class="leaflet-pane leaflet-marker-pane"><div class="leaflet-marker-icon custom-icon leaflet-zoom-animated leaflet-interactive" tabindex="0" role="button" style="margin-left: -6px; margin-top: -6px; width: 12px; height: 12px; transform: translate3d(408px, 199px, 0px); z-index: 199;"><div style="background-color: #4CAF50; position: relative; top: -4px; left: -4px; width: 20px; height: 20px; border-radius: 50%;"></div></div><div class="leaflet-marker-icon custom-icon leaflet-zoom-animated leaflet-interactive" tabindex="0" role="button" style="margin-left: -6px; margin-top: -6px; width: 12px; height: 12px; transform: translate3d(477px, 279px, 0px); z-index: 279;"><div style="background-color: #4CAF50; position: relative; top: -4px; left: -4px; width: 20px; height: 20px; border-radius: 50%;"></div></div><div class="leaflet-marker-icon custom-icon leaflet-zoom-animated leaflet-interactive" tabindex="0" role="button" style="margin-left: -6px; margin-top: -6px; width: 12px; height: 12px; transform: translate3d(415px, 261px, 0px); z-index: 261;"><div style="background-color: #4CAF50; position: relative; top: -4px; left: -4px; width: 20px; height: 20px; border-radius: 50%;"></div></div><div class="leaflet-marker-icon custom-icon leaflet-zoom-animated leaflet-interactive" tabindex="0" role="button" style="margin-left: -6px; margin-top: -6px; width: 12px; height: 12px; transform: translate3d(312px, 389px, 0px); z-index: 389;"><div style="background-color: #4CAF50; position: relative; top: -4px; left: -4px; width: 20px; height: 20px; border-radius: 50%;"></div></div><div class="leaflet-marker-icon custom-icon leaflet-zoom-animated leaflet-interactive" tabindex="0" role="button" style="margin-left: -6px; margin-top: -6px; width: 12px; height: 12px; transform: translate3d(478px, 434px, 0px); z-index: 434;"><div style="background-color: #4CAF50; position: relative; top: -4px; left: -4px; width: 20px; height: 20px; border-radius: 50%;"></div></div><div class="leaflet-marker-icon custom-icon leaflet-zoom-animated leaflet-interactive" tabindex="0" role="button" style="margin-left: -6px; margin-top: -6px; width: 12px; height: 12px; transform: translate3d(283px, 345px, 0px); z-index: 345;"><div style="background-color: #4CAF50; position: relative; top: -4px; left: -4px; width: 20px; height: 20px; border-radius: 50%;"></div></div></div><div class="leaflet-pane leaflet-tooltip-pane"></div><div class="leaflet-pane leaflet-popup-pane"></div><div class="leaflet-proxy leaflet-zoom-animated" style="transform: translate3d(516074px, 350947px, 0px) scale(2048);"></div></div><div class="leaflet-control-container"><div class="leaflet-top leaflet-left"></div><div class="leaflet-top leaflet-right"></div><div class="leaflet-bottom leaflet-left"><div class="leaflet-control-zoom leaflet-bar leaflet-control"><a class="leaflet-control-zoom-in" href="#" title="Zoom in" role="button" aria-label="Zoom in" aria-disabled="false"><span aria-hidden="true">+</span></a><a class="leaflet-control-zoom-out" href="#" title="Zoom out" role="button" aria-label="Zoom out" aria-disabled="false"><span aria-hidden="true">−</span></a></div></div><div class="leaflet-bottom leaflet-right"></div></div></div>
</div>
<!-- Tabs for charts -->
<div class="tab-container">
<div class="tab-buttons" id="tab-buttons">
<!-- Tab buttons will be inserted here -->
<button class="tab-button active" data-target="chart-long-load">Long Load Main Drain</button><button class="tab-button" data-target="chart-west-moor">West Moor Drain</button><button class="tab-button" data-target="chart-gaw-bridge">Parrett at Gaw Bridge</button><button class="tab-button" data-target="chart-midelney">Isle at Midelney</button></div>
<div id="tab-contents">
<!-- Tab contents (charts) will be inserted here -->
<div id="chart-long-load" class="chart tab-content js-plotly-plot active"><div class="plot-container plotly"><div class="user-select-none svg-container" style="position: relative; width: 760px; height: 280px;"><svg class="main-svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="760" height="280" style="background: rgb(255, 255, 255);"><defs id="defs-060949"><g class="clips"><clipPath id="clip060949xyplot" class="plotclip"><rect width="726" height="238"></rect></clipPath><clipPath class="axesclip" id="clip060949x"><rect x="0" y="0" width="726" height="280"></rect></clipPath><clipPath class="axesclip" id="clip060949y"><rect x="0" y="12" width="760" height="238"></rect></clipPath><clipPath class="axesclip" id="clip060949xy"><rect x="0" y="12" width="726" height="238"></rect></clipPath></g><g class="gradients"></g><g class="patterns"></g></defs><g class="bglayer"></g><g class="draglayer cursor-crosshair"><g class="xy"><rect class="nsewdrag drag" data-subplot="xy" x="0" y="12" width="726" height="238" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="nwdrag drag cursor-nw-resize" data-subplot="xy" x="-20" y="-8" width="20" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="nedrag drag cursor-ne-resize" data-subplot="xy" x="726" y="-8" width="20" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="swdrag drag cursor-sw-resize" data-subplot="xy" x="-20" y="250" width="20" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="sedrag drag cursor-se-resize" data-subplot="xy" x="726" y="250" width="20" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="ewdrag drag cursor-ew-resize" data-subplot="xy" x="72.60000000000001" y="250.5" width="580.8000000000001" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="wdrag drag cursor-w-resize" data-subplot="xy" x="0" y="250.5" width="72.60000000000001" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="edrag drag cursor-e-resize" data-subplot="xy" x="653.4" y="250.5" width="72.60000000000001" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="nsdrag drag cursor-ns-resize" data-subplot="xy" x="726.5" y="35.8" width="20" height="190.4" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="sdrag drag cursor-s-resize" data-subplot="xy" x="726.5" y="226.20000000000002" width="20" height="23.8" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="ndrag drag cursor-n-resize" data-subplot="xy" x="726.5" y="12" width="20" height="23.8" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect></g></g><g class="layer-below"><g class="imagelayer"></g><g class="shapelayer"></g></g><g class="cartesianlayer"><g class="subplot xy"><g class="layer-subplot"><g class="shapelayer"></g><g class="imagelayer"></g></g><g class="minor-gridlayer"><g class="x"></g><g class="y"></g></g><g class="gridlayer"><g class="x"><path class="xgrid crisp" transform="translate(56.2,0)" d="M0,12v238" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="xgrid crisp" transform="translate(129.1,0)" d="M0,12v238" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="xgrid crisp" transform="translate(202,0)" d="M0,12v238" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="xgrid crisp" transform="translate(274.91,0)" d="M0,12v238" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="xgrid crisp" transform="translate(347.81,0)" d="M0,12v238" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="xgrid crisp" transform="translate(420.72,0)" d="M0,12v238" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="xgrid crisp" transform="translate(493.62,0)" d="M0,12v238" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="xgrid crisp" transform="translate(566.52,0)" d="M0,12v238" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="xgrid crisp" transform="translate(639.43,0)" d="M0,12v238" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="xgrid crisp" transform="translate(712.33,0)" d="M0,12v238" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path></g><g class="y"><path class="ygrid crisp" transform="translate(0,228.77)" d="M0,0h726" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="ygrid crisp" transform="translate(0,184.53)" d="M0,0h726" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="ygrid crisp" transform="translate(0,140.29)" d="M0,0h726" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="ygrid crisp" transform="translate(0,96.05)" d="M0,0h726" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="ygrid crisp" transform="translate(0,51.81)" d="M0,0h726" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path></g></g><g class="zerolinelayer"></g><path class="xlines-below"></path><path class="ylines-below"></path><g class="overlines-below"></g><g class="xaxislayer-below"></g><g class="yaxislayer-below"></g><g class="overaxes-below"></g><g class="plot" transform="translate(0,12)" clip-path="url(#clip060949xyplot)"><g class="scatterlayer mlayer"><g class="trace scatter trace5026d4" style="stroke-miterlimit: 2;"><g class="fills"><g><path class="js-fill" d="M726,747.62L0,747.62L0,113.25L16.71,113.25L18.23,114.13L25.82,114.13L27.34,115.02L37.97,115.02L39.49,115.9L48.6,115.9L50.12,116.79L60.75,116.79L62.27,117.67L71.38,117.67L72.9,118.56L82.02,118.56L83.54,119.44L92.65,119.44L94.17,120.33L101.76,120.33L103.28,121.21L115.43,121.21L116.95,122.1L121.51,122.1L123.03,122.98L132.14,122.98L133.66,123.87L139.73,123.87L141.25,124.75L148.85,124.75L150.36,125.64L156.44,125.64L157.96,126.52L167.07,126.52L168.59,127.41L174.67,127.41L176.18,128.29L186.82,128.29L188.33,129.17L192.89,129.17L194.41,130.06L200.49,130.06L202,130.94L206.56,130.94L208.08,131.83L215.67,131.83L217.19,132.71L223.27,132.71L224.79,133.6L229.34,133.6L230.86,134.48L235.42,134.48L236.94,135.37L238.46,135.37L239.97,136.25L247.57,136.25L249.09,137.14L253.64,137.14L255.16,138.02L261.24,138.02L262.76,138.91L265.79,138.91L267.31,139.79L271.87,139.79L273.39,140.68L274.91,140.68L276.43,141.56L280.98,141.56L282.5,142.45L285.54,142.45L287.06,143.33L288.58,143.33L290.1,144.22L294.65,144.22L296.17,145.1L297.69,145.1L299.21,145.99L302.25,145.99L303.77,146.87L305.28,146.87L306.8,147.75L309.84,147.75L311.36,148.64L314.4,148.64L315.92,149.52L317.44,149.52L318.95,150.41L321.99,150.41L323.51,151.29L325.03,151.29L326.55,152.18L328.07,152.18L329.59,153.06L331.1,153.95L332.62,153.95L334.14,153.95L335.66,154.83L337.18,154.83L338.7,155.72L340.22,155.72L341.74,156.6L343.26,156.6L344.77,157.49L346.29,158.37L347.81,158.37L350.85,160.14L352.37,160.14L355.41,161.91L356.92,161.91L361.48,164.57L363,164.57L372.11,169.87L373.63,169.87L378.19,172.53L379.71,174.3L387.3,178.72L388.82,180.49L390.34,181.38L391.86,183.14L396.41,187.57L397.93,188.45L413.12,206.15L414.64,208.8L417.68,213.23L419.2,215.88L420.72,218.54L422.23,203.49L423.75,213.23L425.27,217.65L426.79,205.26L428.31,212.34L429.83,218.54L431.35,205.26L434.38,217.65L435.9,207.03L437.42,209.69L438.94,216.77L441.98,203.49L443.5,210.57L446.54,200.84L448.05,199.07L452.61,194.65L454.13,193.76L460.21,190.22L461.72,190.22L463.24,189.34L464.76,189.34L466.28,188.45L467.8,188.45L472.36,188.45L473.87,187.57L486.03,187.57L487.54,188.45L490.58,188.45L492.1,189.34L495.14,189.34L496.66,190.22L498.18,191.11L499.69,191.11L501.21,191.11L502.73,191.99L504.25,192.88L505.77,192.88L507.29,193.76L508.81,193.76L510.33,194.65L511.85,194.65L519.44,199.07L520.96,199.07L533.11,206.15L534.63,207.92L536.15,207.92L537.67,208.8L540.7,211.46L542.22,212.34L545.26,214.11L546.78,219.42L548.3,217.65L549.82,219.42L552.85,221.19L554.37,217.65L555.89,210.57L557.41,213.23L561.97,221.19L563.49,217.65L565,210.57L566.52,213.23L568.04,214.11L569.56,216.77L571.08,217.65L572.6,221.19L574.12,218.54L575.64,212.34L577.15,208.8L578.67,215L580.19,216.77L581.71,220.3L583.23,222.07L584.75,214.11L586.27,210.57L587.79,211.46L590.82,218.54L592.34,221.19L596.9,209.69L598.42,213.23L601.46,219.42L602.97,218.54L606.01,211.46L607.53,208.8L609.05,215L610.57,217.65L612.09,222.07L613.61,215.88L618.16,208.8L619.68,215.88L621.2,219.42L622.72,219.42L625.76,213.23L627.28,211.46L630.31,208.8L631.83,215L633.35,218.54L634.87,218.54L637.91,214.11L639.43,212.34L643.98,209.69L645.5,209.69L647.02,208.8L648.54,211.46L650.06,218.54L651.58,218.54L656.13,214.11L657.65,214.11L659.17,213.23L660.69,213.23L663.73,213.23L665.25,212.34L671.32,212.34L672.84,213.23L675.88,213.23L677.4,214.11L680.44,214.11L681.95,215L684.99,215L686.51,215.88L688.03,218.54L689.55,218.54L691.07,218.54L692.59,219.42L694.1,219.42L695.62,220.3L697.14,220.3L698.66,221.19L700.18,222.07L701.7,222.07L703.22,222.96L704.74,219.42L706.26,229.15L707.77,215L709.29,209.69L710.81,208.8L712.33,215L713.85,213.23L715.37,211.46L716.89,213.23L718.41,214.11L719.92,215.88L721.44,216.77L722.96,218.54L726,220.3" style="fill: rgb(31, 118, 180); fill-opacity: 0.1; stroke-width: 0;"></path></g></g><g class="errorbars"></g><g class="lines"><path class="js-line" d="M0,113.25L16.71,113.25L18.23,114.13L25.82,114.13L27.34,115.02L37.97,115.02L39.49,115.9L48.6,115.9L50.12,116.79L60.75,116.79L62.27,117.67L71.38,117.67L72.9,118.56L82.02,118.56L83.54,119.44L92.65,119.44L94.17,120.33L101.76,120.33L103.28,121.21L115.43,121.21L116.95,122.1L121.51,122.1L123.03,122.98L132.14,122.98L133.66,123.87L139.73,123.87L141.25,124.75L148.85,124.75L150.36,125.64L156.44,125.64L157.96,126.52L167.07,126.52L168.59,127.41L174.67,127.41L176.18,128.29L186.82,128.29L188.33,129.17L192.89,129.17L194.41,130.06L200.49,130.06L202,130.94L206.56,130.94L208.08,131.83L215.67,131.83L217.19,132.71L223.27,132.71L224.79,133.6L229.34,133.6L230.86,134.48L235.42,134.48L236.94,135.37L238.46,135.37L239.97,136.25L247.57,136.25L249.09,137.14L253.64,137.14L255.16,138.02L261.24,138.02L262.76,138.91L265.79,138.91L267.31,139.79L271.87,139.79L273.39,140.68L274.91,140.68L276.43,141.56L280.98,141.56L282.5,142.45L285.54,142.45L287.06,143.33L288.58,143.33L290.1,144.22L294.65,144.22L296.17,145.1L297.69,145.1L299.21,145.99L302.25,145.99L303.77,146.87L305.28,146.87L306.8,147.75L309.84,147.75L311.36,148.64L314.4,148.64L315.92,149.52L317.44,149.52L318.95,150.41L321.99,150.41L323.51,151.29L325.03,151.29L326.55,152.18L328.07,152.18L329.59,153.06L331.1,153.95L332.62,153.95L334.14,153.95L335.66,154.83L337.18,154.83L338.7,155.72L340.22,155.72L341.74,156.6L343.26,156.6L344.77,157.49L346.29,158.37L347.81,158.37L350.85,160.14L352.37,160.14L355.41,161.91L356.92,161.91L361.48,164.57L363,164.57L372.11,169.87L373.63,169.87L378.19,172.53L379.71,174.3L387.3,178.72L388.82,180.49L390.34,181.38L391.86,183.14L396.41,187.57L397.93,188.45L413.12,206.15L414.64,208.8L417.68,213.23L419.2,215.88L420.72,218.54L422.23,203.49L423.75,213.23L425.27,217.65L426.79,205.26L428.31,212.34L429.83,218.54L431.35,205.26L434.38,217.65L435.9,207.03L437.42,209.69L438.94,216.77L441.98,203.49L443.5,210.57L446.54,200.84L448.05,199.07L452.61,194.65L454.13,193.76L460.21,190.22L461.72,190.22L463.24,189.34L464.76,189.34L466.28,188.45L467.8,188.45L472.36,188.45L473.87,187.57L486.03,187.57L487.54,188.45L490.58,188.45L492.1,189.34L495.14,189.34L496.66,190.22L498.18,191.11L499.69,191.11L501.21,191.11L502.73,191.99L504.25,192.88L505.77,192.88L507.29,193.76L508.81,193.76L510.33,194.65L511.85,194.65L519.44,199.07L520.96,199.07L533.11,206.15L534.63,207.92L536.15,207.92L537.67,208.8L540.7,211.46L542.22,212.34L545.26,214.11L546.78,219.42L548.3,217.65L549.82,219.42L552.85,221.19L554.37,217.65L555.89,210.57L557.41,213.23L561.97,221.19L563.49,217.65L565,210.57L566.52,213.23L568.04,214.11L569.56,216.77L571.08,217.65L572.6,221.19L574.12,218.54L575.64,212.34L577.15,208.8L578.67,215L580.19,216.77L581.71,220.3L583.23,222.07L584.75,214.11L586.27,210.57L587.79,211.46L590.82,218.54L592.34,221.19L596.9,209.69L598.42,213.23L601.46,219.42L602.97,218.54L606.01,211.46L607.53,208.8L609.05,215L610.57,217.65L612.09,222.07L613.61,215.88L618.16,208.8L619.68,215.88L621.2,219.42L622.72,219.42L625.76,213.23L627.28,211.46L630.31,208.8L631.83,215L633.35,218.54L634.87,218.54L637.91,214.11L639.43,212.34L643.98,209.69L645.5,209.69L647.02,208.8L648.54,211.46L650.06,218.54L651.58,218.54L656.13,214.11L657.65,214.11L659.17,213.23L660.69,213.23L663.73,213.23L665.25,212.34L671.32,212.34L672.84,213.23L675.88,213.23L677.4,214.11L680.44,214.11L681.95,215L684.99,215L686.51,215.88L688.03,218.54L689.55,218.54L691.07,218.54L692.59,219.42L694.1,219.42L695.62,220.3L697.14,220.3L698.66,221.19L700.18,222.07L701.7,222.07L703.22,222.96L704.74,219.42L706.26,229.15L707.77,215L709.29,209.69L710.81,208.8L712.33,215L713.85,213.23L715.37,211.46L716.89,213.23L718.41,214.11L719.92,215.88L721.44,216.77L722.96,218.54L726,220.3" style="vector-effect: non-scaling-stroke; fill: none; stroke: rgb(31, 119, 180); stroke-opacity: 1; stroke-width: 2px; opacity: 1;"></path></g><g class="points"></g><g class="text"></g></g><g class="trace scatter traced31f83" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"></g><g class="points"><path class="point" transform="translate(726,220.3)" d="M4,0A4,4 0 1,1 0,-4A4,4 0 0,1 4,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(0, 0, 0); fill-opacity: 1;"></path></g><g class="text"></g></g><g class="trace scatter trace26780b" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"><path class="js-line" d="M0,101.75L726,101.75" style="vector-effect: non-scaling-stroke; fill: none; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-dasharray: 3px, 3px; stroke-width: 1px; opacity: 1;"></path></g><g class="points"></g><g class="text"></g></g><g class="trace scatter trace5a160e" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"><path class="js-line" d="M0,52.2L726,52.2" style="vector-effect: non-scaling-stroke; fill: none; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-dasharray: 3px, 3px; stroke-width: 1px; opacity: 1;"></path></g><g class="points"></g><g class="text"></g></g><g class="trace scatter tracef664b9" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"><path class="js-line" d="M0,46.01L726,46.01" style="vector-effect: non-scaling-stroke; fill: none; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-dasharray: 3px, 3px; stroke-width: 1px; opacity: 1;"></path></g><g class="points"></g><g class="text"></g></g><g class="trace scatter trace2e86cd" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"><path class="js-line" d="M0,8.85L726,8.85" style="vector-effect: non-scaling-stroke; fill: none; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-dasharray: 3px, 3px; stroke-width: 1px; opacity: 1;"></path></g><g class="points"></g><g class="text"></g></g><g class="trace scatter tracea2809d" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"><path class="js-line" d="M0,122.98L726,122.98" style="vector-effect: non-scaling-stroke; fill: none; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-dasharray: 3px, 3px; stroke-width: 1px; opacity: 1;"></path></g><g class="points"></g><g class="text"></g></g><g class="trace scatter trace2d6ccb" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"></g><g class="points"></g><g class="text"><g class="textpoint" transform="translate(0,-2.5)"><text x="0" y="101.75" data-unformatted="Langport to Muchelney (7.30m)" data-math="N" text-anchor="start" style="font-family: Inter, sans-serif; font-size: 10px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre;">Langport to Muchelney (7.30m)</text></g></g></g><g class="trace scatter traceecc2f1" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"></g><g class="points"></g><g class="text"><g class="textpoint" transform="translate(0,-2.5)"><text x="0" y="52.2" data-unformatted="Muchelney to Long Load (7.86m)" data-math="N" text-anchor="start" style="font-family: Inter, sans-serif; font-size: 10px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre;">Muchelney to Long Load (7.86m)</text></g></g></g><g class="trace scatter trace77ed2f" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"></g><g class="points"></g><g class="text"><g class="textpoint" transform="translate(0,-2.5)"><text x="0" y="46.01" data-unformatted="Muchelney to Thorney (7.93m)" data-math="N" text-anchor="start" style="font-family: Inter, sans-serif; font-size: 10px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre;">Muchelney to Thorney (7.93m)</text></g></g></g><g class="trace scatter trace307497" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"></g><g class="points"></g><g class="text"><g class="textpoint" transform="translate(0,-2.5)"><text x="0" y="8.85" data-unformatted="Property flooding (8.35m)" data-math="N" text-anchor="start" style="font-family: Inter, sans-serif; font-size: 10px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre;">Property flooding (8.35m)</text></g></g></g><g class="trace scatter tracee8a61c" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"></g><g class="points"></g><g class="text"><g class="textpoint" transform="translate(0,-2.5)"><text x="0" y="122.98" data-unformatted="Top of normal range (7.06m)" data-math="N" text-anchor="start" style="font-family: Inter, sans-serif; font-size: 10px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre;">Top of normal range (7.06m)</text></g></g></g><g class="trace scatter trace36c028" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"><path class="js-line" d="M0,220.3L726,220.3" style="vector-effect: non-scaling-stroke; fill: none; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 2px; opacity: 1;"></path></g><g class="points"></g><g class="text"></g></g></g></g><g class="overplot"></g><path class="xlines-above crisp" d="M0,0" style="fill: none;"></path><path class="ylines-above crisp" d="M0,0" style="fill: none;"></path><g class="overlines-above"></g><g class="xaxislayer-above"><g class="xtick"><text text-anchor="middle" x="0" y="262" data-unformatted="2024-12-15" data-math="N" transform="translate(56.2,0)" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;">2024-12-15</text></g><g class="xtick"><text text-anchor="middle" x="0" y="262" data-unformatted="2024-12-15" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(129.1,0)">2024-12-15</text></g><g class="xtick"><text text-anchor="middle" x="0" y="262" data-unformatted="2024-12-16" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(202,0)">2024-12-16</text></g><g class="xtick"><text text-anchor="middle" x="0" y="262" data-unformatted="2024-12-16" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(274.91,0)">2024-12-16</text></g><g class="xtick"><text text-anchor="middle" x="0" y="262" data-unformatted="2024-12-17" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(347.81,0)">2024-12-17</text></g><g class="xtick"><text text-anchor="middle" x="0" y="262" data-unformatted="2024-12-17" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(420.72,0)">2024-12-17</text></g><g class="xtick"><text text-anchor="middle" x="0" y="262" data-unformatted="2024-12-18" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(493.62,0)">2024-12-18</text></g><g class="xtick"><text text-anchor="middle" x="0" y="262" data-unformatted="2024-12-18" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(566.52,0)">2024-12-18</text></g><g class="xtick"><text text-anchor="middle" x="0" y="262" data-unformatted="2024-12-19" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(639.43,0)">2024-12-19</text></g><g class="xtick"><text text-anchor="middle" x="0" y="262" data-unformatted="2024-12-19" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(712.33,0)">2024-12-19</text></g></g><g class="yaxislayer-above"><g class="ytick"><text text-anchor="start" x="727" y="3.8499999999999996" data-unformatted="6.00m" data-math="N" transform="translate(0,228.77)" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;">6.00m</text></g><g class="ytick"><text text-anchor="start" x="727" y="3.8499999999999996" data-unformatted="6.50m" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,184.53)">6.50m</text></g><g class="ytick"><text text-anchor="start" x="727" y="3.8499999999999996" data-unformatted="7.00m" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,140.29)">7.00m</text></g><g class="ytick"><text text-anchor="start" x="727" y="3.8499999999999996" data-unformatted="7.50m" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,96.05)">7.50m</text></g><g class="ytick"><text text-anchor="start" x="727" y="3.8499999999999996" data-unformatted="8.00m" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,51.81)">8.00m</text></g></g><g class="overaxes-above"></g></g></g><g class="polarlayer"></g><g class="smithlayer"></g><g class="ternarylayer"></g><g class="geolayer"></g><g class="funnelarealayer"></g><g class="pielayer"></g><g class="iciclelayer"></g><g class="treemaplayer"></g><g class="sunburstlayer"></g><g class="glimages"></g></svg><div class="gl-container"></div><svg class="main-svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="760" height="280"><defs id="topdefs-060949"><g class="clips"></g></defs><g class="indicatorlayer"></g><g class="layer-above"><g class="imagelayer"></g><g class="shapelayer"></g></g><g class="selectionlayer"></g><g class="infolayer"><g class="g-gtitle"></g><g class="g-xtitle"></g><g class="g-ytitle"></g><g class="annotation" data-index="0" style="opacity: 1;"><g class="annotation-text-g" transform="rotate(0,704,210.3)"><g class="cursor-pointer" transform="translate(651,201)"><rect class="bg" x="0.5" y="0.5" width="106" height="18" style="stroke-width: 1px; stroke: rgb(0, 0, 0); stroke-opacity: 1; fill: rgb(255, 255, 255); fill-opacity: 1;"></rect><text class="annotation-text" text-anchor="middle" data-unformatted="5.96m (14:15 UTC)" data-math="N" x="53.5" y="14" style="font-family: Inter, sans-serif; font-size: 12px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre;">5.96m (14:15 UTC)</text></g></g><g class="annotation-arrow-g" style="opacity: 1;"><path d="M713,219.3L726,232.3" style="stroke-width: 2px; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-dasharray: 0px, 0px, 18.3848px, 18.3848px;"></path><path d="M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z" transform="translate(726,232.3000030517578)scale(2)" style="fill: rgb(0, 0, 0); stroke-width: 0;"></path></g></g></g><g class="menulayer"></g><g class="zoomlayer"></g></svg><div class="modebar-container" style="position: absolute; top: 0px; right: 0px; width: 100%;"></div><svg class="main-svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="760" height="280"><g class="hoverlayer"></g></svg></div></div></div><div id="chart-west-moor" class="chart tab-content js-plotly-plot"><div class="plot-container plotly"><div class="user-select-none svg-container" style="position: relative; width: 700px; height: 280px;"><svg class="main-svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="700" height="280" style="background: rgb(255, 255, 255);"><defs id="defs-2313bc"><g class="clips"><clipPath id="clip2313bcxyplot" class="plotclip"><rect width="666" height="238"></rect></clipPath><clipPath class="axesclip" id="clip2313bcx"><rect x="0" y="0" width="666" height="280"></rect></clipPath><clipPath class="axesclip" id="clip2313bcy"><rect x="0" y="12" width="700" height="238"></rect></clipPath><clipPath class="axesclip" id="clip2313bcxy"><rect x="0" y="12" width="666" height="238"></rect></clipPath></g><g class="gradients"></g><g class="patterns"></g></defs><g class="bglayer"></g><g class="draglayer cursor-crosshair"><g class="xy"><rect class="nsewdrag drag" data-subplot="xy" x="0" y="12" width="666" height="238" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="nwdrag drag cursor-nw-resize" data-subplot="xy" x="-20" y="-8" width="20" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="nedrag drag cursor-ne-resize" data-subplot="xy" x="666" y="-8" width="20" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="swdrag drag cursor-sw-resize" data-subplot="xy" x="-20" y="250" width="20" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="sedrag drag cursor-se-resize" data-subplot="xy" x="666" y="250" width="20" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="ewdrag drag cursor-ew-resize" data-subplot="xy" x="66.60000000000001" y="250.5" width="532.8000000000001" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="wdrag drag cursor-w-resize" data-subplot="xy" x="0" y="250.5" width="66.60000000000001" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="edrag drag cursor-e-resize" data-subplot="xy" x="599.4" y="250.5" width="66.60000000000001" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="nsdrag drag cursor-ns-resize" data-subplot="xy" x="666.5" y="35.8" width="20" height="190.4" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="sdrag drag cursor-s-resize" data-subplot="xy" x="666.5" y="226.20000000000002" width="20" height="23.8" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="ndrag drag cursor-n-resize" data-subplot="xy" x="666.5" y="12" width="20" height="23.8" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect></g></g><g class="layer-below"><g class="imagelayer"></g><g class="shapelayer"></g></g><g class="cartesianlayer"><g class="subplot xy"><g class="layer-subplot"><g class="shapelayer"></g><g class="imagelayer"></g></g><g class="minor-gridlayer"><g class="x"></g><g class="y"></g></g><g class="gridlayer"><g class="x"><path class="xgrid crisp" transform="translate(51.55,0)" d="M0,12v238" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="xgrid crisp" transform="translate(185.31,0)" d="M0,12v238" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="xgrid crisp" transform="translate(319.07,0)" d="M0,12v238" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="xgrid crisp" transform="translate(452.82,0)" d="M0,12v238" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="xgrid crisp" transform="translate(586.58,0)" d="M0,12v238" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path></g><g class="y"><path class="ygrid crisp" transform="translate(0,239.57)" d="M0,0h666" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="ygrid crisp" transform="translate(0,201.64)" d="M0,0h666" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="ygrid crisp" transform="translate(0,163.71)" d="M0,0h666" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="ygrid crisp" transform="translate(0,125.78)" d="M0,0h666" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="ygrid crisp" transform="translate(0,87.86)" d="M0,0h666" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="ygrid crisp" transform="translate(0,49.93)" d="M0,0h666" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path></g></g><g class="zerolinelayer"></g><path class="xlines-below"></path><path class="ylines-below"></path><g class="overlines-below"></g><g class="xaxislayer-below"></g><g class="yaxislayer-below"></g><g class="overaxes-below"></g><g class="plot" transform="translate(0,12)" clip-path="url(#clip2313bcxyplot)"><g class="scatterlayer mlayer"><g class="trace scatter trace6ecd5c" style="stroke-miterlimit: 2;"><g class="fills"><g><path class="js-fill" d="M666,1479.2L0,1479.2L0,19.91L1.39,21.81L2.79,19.91L16.72,19.91L18.11,21.81L41.8,21.81L43.19,23.71L64.09,23.71L65.49,25.6L91.96,25.6L93.35,27.5L110.07,27.5L111.46,29.39L112.86,27.5L114.25,29.39L115.64,27.5L117.04,29.39L139.33,29.39L140.72,31.29L142.12,29.39L143.51,31.29L161.62,31.29L163.02,33.19L185.31,33.19L186.7,35.08L188.1,33.19L189.49,35.08L206.21,35.08L207.6,36.98L232.68,36.98L234.08,38.88L259.15,38.88L260.55,40.77L277.27,40.77L278.66,42.67L280.05,40.77L281.45,42.67L296.77,42.67L298.17,44.57L299.56,42.67L300.95,44.57L321.85,44.57L323.25,46.46L344.15,46.46L345.54,48.36L349.72,48.36L351.11,46.46L353.9,46.46L355.29,48.36L356.69,46.46L358.08,48.36L385.95,48.36L387.34,46.46L388.73,48.36L390.13,48.36L391.52,50.25L392.91,50.25L394.31,50.25L395.7,48.36L397.09,50.25L398.49,50.25L409.63,50.25L411.03,52.15L412.42,50.25L413.81,50.25L424.96,50.25L426.35,48.36L427.74,50.25L429.14,50.25L430.53,48.36L431.92,50.25L443.07,50.25L444.46,52.15L450.04,52.15L451.43,50.25L454.22,50.25L455.61,52.15L461.18,52.15L462.58,54.05L463.97,54.05L465.36,52.15L468.15,52.15L469.54,54.05L470.94,54.05L472.33,55.94L482.08,55.94L483.48,57.84L484.87,55.94L486.26,55.94L487.66,57.84L489.05,57.84L497.41,57.84L498.8,55.94L500.2,57.84L501.59,55.94L504.38,55.94L505.77,57.84L516.92,57.84L518.31,59.74L525.28,59.74L526.67,61.63L542,61.63L543.39,59.74L548.96,59.74L550.36,57.84L551.75,57.84L553.14,55.94L554.54,57.84L555.93,57.84L557.32,54.05L558.72,54.05L561.5,57.84L562.9,57.84L564.29,61.63L565.68,59.74L567.08,61.63L568.47,61.63L569.86,63.53L571.26,63.53L572.65,63.53L574.04,61.63L575.44,63.53L576.83,63.53L579.62,63.53L581.01,65.43L582.4,69.22L583.79,67.32L585.19,65.43L586.58,65.43L587.97,65.43L589.37,67.32L592.15,67.32L593.55,71.12L594.94,69.22L596.33,69.22L606.09,69.22L607.48,71.12L608.87,69.22L610.27,69.22L611.66,71.12L613.05,69.22L614.45,71.12L615.84,71.12L617.23,71.12L618.63,69.22L620.02,71.12L621.41,69.22L622.81,69.22L624.2,71.12L628.38,71.12L629.77,73.01L631.17,71.12L632.56,73.01L635.35,73.01L636.74,71.12L638.13,71.12L639.53,73.01L642.31,73.01L643.71,74.91L645.1,73.01L646.49,73.01L647.89,74.91L649.28,74.91L650.67,74.91L652.07,76.8L653.46,76.8L654.85,74.91L656.25,76.8L657.64,74.91L659.03,76.8L660.43,76.8L661.82,78.7L663.21,78.7L666,74.91" style="fill: rgb(31, 118, 180); fill-opacity: 0.1; stroke-width: 0;"></path></g></g><g class="errorbars"></g><g class="lines"><path class="js-line" d="M0,19.91L1.39,21.81L2.79,19.91L16.72,19.91L18.11,21.81L41.8,21.81L43.19,23.71L64.09,23.71L65.49,25.6L91.96,25.6L93.35,27.5L110.07,27.5L111.46,29.39L112.86,27.5L114.25,29.39L115.64,27.5L117.04,29.39L139.33,29.39L140.72,31.29L142.12,29.39L143.51,31.29L161.62,31.29L163.02,33.19L185.31,33.19L186.7,35.08L188.1,33.19L189.49,35.08L206.21,35.08L207.6,36.98L232.68,36.98L234.08,38.88L259.15,38.88L260.55,40.77L277.27,40.77L278.66,42.67L280.05,40.77L281.45,42.67L296.77,42.67L298.17,44.57L299.56,42.67L300.95,44.57L321.85,44.57L323.25,46.46L344.15,46.46L345.54,48.36L349.72,48.36L351.11,46.46L353.9,46.46L355.29,48.36L356.69,46.46L358.08,48.36L385.95,48.36L387.34,46.46L388.73,48.36L390.13,48.36L391.52,50.25L392.91,50.25L394.31,50.25L395.7,48.36L397.09,50.25L398.49,50.25L409.63,50.25L411.03,52.15L412.42,50.25L413.81,50.25L424.96,50.25L426.35,48.36L427.74,50.25L429.14,50.25L430.53,48.36L431.92,50.25L443.07,50.25L444.46,52.15L450.04,52.15L451.43,50.25L454.22,50.25L455.61,52.15L461.18,52.15L462.58,54.05L463.97,54.05L465.36,52.15L468.15,52.15L469.54,54.05L470.94,54.05L472.33,55.94L482.08,55.94L483.48,57.84L484.87,55.94L486.26,55.94L487.66,57.84L489.05,57.84L497.41,57.84L498.8,55.94L500.2,57.84L501.59,55.94L504.38,55.94L505.77,57.84L516.92,57.84L518.31,59.74L525.28,59.74L526.67,61.63L542,61.63L543.39,59.74L548.96,59.74L550.36,57.84L551.75,57.84L553.14,55.94L554.54,57.84L555.93,57.84L557.32,54.05L558.72,54.05L561.5,57.84L562.9,57.84L564.29,61.63L565.68,59.74L567.08,61.63L568.47,61.63L569.86,63.53L571.26,63.53L572.65,63.53L574.04,61.63L575.44,63.53L576.83,63.53L579.62,63.53L581.01,65.43L582.4,69.22L583.79,67.32L585.19,65.43L586.58,65.43L587.97,65.43L589.37,67.32L592.15,67.32L593.55,71.12L594.94,69.22L596.33,69.22L606.09,69.22L607.48,71.12L608.87,69.22L610.27,69.22L611.66,71.12L613.05,69.22L614.45,71.12L615.84,71.12L617.23,71.12L618.63,69.22L620.02,71.12L621.41,69.22L622.81,69.22L624.2,71.12L628.38,71.12L629.77,73.01L631.17,71.12L632.56,73.01L635.35,73.01L636.74,71.12L638.13,71.12L639.53,73.01L642.31,73.01L643.71,74.91L645.1,73.01L646.49,73.01L647.89,74.91L649.28,74.91L650.67,74.91L652.07,76.8L653.46,76.8L654.85,74.91L656.25,76.8L657.64,74.91L659.03,76.8L660.43,76.8L661.82,78.7L663.21,78.7L666,74.91" style="vector-effect: non-scaling-stroke; fill: none; stroke: rgb(31, 119, 180); stroke-opacity: 1; stroke-width: 2px; opacity: 1;"></path></g><g class="points"></g><g class="text"></g></g><g class="trace scatter tracef59c37" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"></g><g class="points"><path class="point" transform="translate(666,74.91)" d="M4,0A4,4 0 1,1 0,-4A4,4 0 0,1 4,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(0, 0, 0); fill-opacity: 1;"></path></g><g class="text"></g></g><g class="trace scatter traceec2dba" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"><path class="js-line" d="M0,18.96L666,18.96" style="vector-effect: non-scaling-stroke; fill: none; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-dasharray: 3px, 3px; stroke-width: 1px; opacity: 1;"></path></g><g class="points"></g><g class="text"></g></g><g class="trace scatter traced96c9e" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"><path class="js-line" d="M0,219.04L666,219.04" style="vector-effect: non-scaling-stroke; fill: none; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-dasharray: 3px, 3px; stroke-width: 1px; opacity: 1;"></path></g><g class="points"></g><g class="text"></g></g><g class="trace scatter tracee18126" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"></g><g class="points"></g><g class="text"><g class="textpoint" transform="translate(0,-2.5)"><text x="0" y="18.96" data-unformatted="Hambridge to Burrow (7.70m)" data-math="N" text-anchor="start" style="font-family: Inter, sans-serif; font-size: 10px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre;">Hambridge to Burrow (7.70m)</text></g></g></g><g class="trace scatter tracec633ce" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"></g><g class="points"></g><g class="text"><g class="textpoint" transform="translate(0,-2.5)"><text x="0" y="219.04" data-unformatted="Top of normal range (6.64m)" data-math="N" text-anchor="start" style="font-family: Inter, sans-serif; font-size: 10px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre;">Top of normal range (6.64m)</text></g></g></g><g class="trace scatter trace08972c" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"><path class="js-line" d="M0,74.91L666,74.91" style="vector-effect: non-scaling-stroke; fill: none; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 2px; opacity: 1;"></path></g><g class="points"></g><g class="text"></g></g></g></g><g class="overplot"></g><path class="xlines-above crisp" d="M0,0" style="fill: none;"></path><path class="ylines-above crisp" d="M0,0" style="fill: none;"></path><g class="overlines-above"></g><g class="xaxislayer-above"><g class="xtick"><text text-anchor="middle" x="0" y="262" data-unformatted="2024-12-15" data-math="N" transform="translate(51.55,0)" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;">2024-12-15</text></g><g class="xtick"><text text-anchor="middle" x="0" y="262" data-unformatted="2024-12-16" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(185.31,0)">2024-12-16</text></g><g class="xtick"><text text-anchor="middle" x="0" y="262" data-unformatted="2024-12-17" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(319.07,0)">2024-12-17</text></g><g class="xtick"><text text-anchor="middle" x="0" y="262" data-unformatted="2024-12-18" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(452.82,0)">2024-12-18</text></g><g class="xtick"><text text-anchor="middle" x="0" y="262" data-unformatted="2024-12-19" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(586.58,0)">2024-12-19</text></g></g><g class="yaxislayer-above"><g class="ytick"><text text-anchor="start" x="667" y="3.8499999999999996" data-unformatted="6.60m" data-math="N" transform="translate(0,239.57)" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;">6.60m</text></g><g class="ytick"><text text-anchor="start" x="667" y="3.8499999999999996" data-unformatted="6.80m" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,201.64)">6.80m</text></g><g class="ytick"><text text-anchor="start" x="667" y="3.8499999999999996" data-unformatted="7.00m" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,163.71)">7.00m</text></g><g class="ytick"><text text-anchor="start" x="667" y="3.8499999999999996" data-unformatted="7.20m" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,125.78)">7.20m</text></g><g class="ytick"><text text-anchor="start" x="667" y="3.8499999999999996" data-unformatted="7.40m" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,87.86)">7.40m</text></g><g class="ytick"><text text-anchor="start" x="667" y="3.8499999999999996" data-unformatted="7.60m" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,49.93)">7.60m</text></g><g class="ytick"><text text-anchor="start" x="667" y="3.8499999999999996" data-unformatted="7.80m" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,12)">7.80m</text></g></g><g class="overaxes-above"></g></g></g><g class="polarlayer"></g><g class="smithlayer"></g><g class="ternarylayer"></g><g class="geolayer"></g><g class="funnelarealayer"></g><g class="pielayer"></g><g class="iciclelayer"></g><g class="treemaplayer"></g><g class="sunburstlayer"></g><g class="glimages"></g></svg><div class="gl-container"></div><svg class="main-svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="700" height="280"><defs id="topdefs-2313bc"><g class="clips"></g></defs><g class="indicatorlayer"></g><g class="layer-above"><g class="imagelayer"></g><g class="shapelayer"></g></g><g class="selectionlayer"></g><g class="infolayer"><g class="g-gtitle"></g><g class="g-xtitle"></g><g class="g-ytitle"></g><g class="annotation" data-index="0" style="opacity: 1;"><g class="annotation-text-g" transform="rotate(0,644,64.91)"><g class="cursor-pointer" transform="translate(590,55)"><rect class="bg" x="0.5" y="0.5" width="107" height="18" style="stroke-width: 1px; stroke: rgb(0, 0, 0); stroke-opacity: 1; fill: rgb(255, 255, 255); fill-opacity: 1;"></rect><text class="annotation-text" text-anchor="middle" data-unformatted="7.40m (14:15 UTC)" data-math="N" x="54" y="14" style="font-family: Inter, sans-serif; font-size: 12px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre;">7.40m (14:15 UTC)</text></g></g><g class="annotation-arrow-g" style="opacity: 1;"><path d="M653,73.91L666,86.91" style="stroke-width: 2px; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-dasharray: 0px, 0px, 18.3848px, 18.3848px;"></path><path d="M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z" transform="translate(666,86.91000366210938)scale(2)" style="fill: rgb(0, 0, 0); stroke-width: 0;"></path></g></g></g><g class="menulayer"></g><g class="zoomlayer"></g></svg><div class="modebar-container" style="position: absolute; top: 0px; right: 0px; width: 100%;"></div><svg class="main-svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="700" height="280"><g class="hoverlayer"></g></svg></div></div></div><div id="chart-gaw-bridge" class="chart tab-content js-plotly-plot"><div class="plot-container plotly"><div class="user-select-none svg-container" style="position: relative; width: 700px; height: 280px;"><svg class="main-svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="700" height="280" style="background: rgb(255, 255, 255);"><defs id="defs-33b91e"><g class="clips"><clipPath id="clip33b91exyplot" class="plotclip"><rect width="666" height="238"></rect></clipPath><clipPath class="axesclip" id="clip33b91ex"><rect x="0" y="0" width="666" height="280"></rect></clipPath><clipPath class="axesclip" id="clip33b91ey"><rect x="0" y="12" width="700" height="238"></rect></clipPath><clipPath class="axesclip" id="clip33b91exy"><rect x="0" y="12" width="666" height="238"></rect></clipPath></g><g class="gradients"></g><g class="patterns"></g></defs><g class="bglayer"></g><g class="draglayer cursor-crosshair"><g class="xy"><rect class="nsewdrag drag" data-subplot="xy" x="0" y="12" width="666" height="238" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="nwdrag drag cursor-nw-resize" data-subplot="xy" x="-20" y="-8" width="20" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="nedrag drag cursor-ne-resize" data-subplot="xy" x="666" y="-8" width="20" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="swdrag drag cursor-sw-resize" data-subplot="xy" x="-20" y="250" width="20" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="sedrag drag cursor-se-resize" data-subplot="xy" x="666" y="250" width="20" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="ewdrag drag cursor-ew-resize" data-subplot="xy" x="66.60000000000001" y="250.5" width="532.8000000000001" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="wdrag drag cursor-w-resize" data-subplot="xy" x="0" y="250.5" width="66.60000000000001" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="edrag drag cursor-e-resize" data-subplot="xy" x="599.4" y="250.5" width="66.60000000000001" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="nsdrag drag cursor-ns-resize" data-subplot="xy" x="666.5" y="35.8" width="20" height="190.4" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="sdrag drag cursor-s-resize" data-subplot="xy" x="666.5" y="226.20000000000002" width="20" height="23.8" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="ndrag drag cursor-n-resize" data-subplot="xy" x="666.5" y="12" width="20" height="23.8" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect></g></g><g class="layer-below"><g class="imagelayer"></g><g class="shapelayer"></g></g><g class="cartesianlayer"><g class="subplot xy"><g class="layer-subplot"><g class="shapelayer"></g><g class="imagelayer"></g></g><g class="minor-gridlayer"><g class="x"></g><g class="y"></g></g><g class="gridlayer"><g class="x"><path class="xgrid crisp" transform="translate(51.55,0)" d="M0,12v238" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="xgrid crisp" transform="translate(185.31,0)" d="M0,12v238" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="xgrid crisp" transform="translate(319.07,0)" d="M0,12v238" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="xgrid crisp" transform="translate(452.82,0)" d="M0,12v238" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="xgrid crisp" transform="translate(586.58,0)" d="M0,12v238" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path></g><g class="y"><path class="ygrid crisp" transform="translate(0,231.56)" d="M0,0h666" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="ygrid crisp" transform="translate(0,187.65)" d="M0,0h666" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="ygrid crisp" transform="translate(0,143.73)" d="M0,0h666" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="ygrid crisp" transform="translate(0,99.82)" d="M0,0h666" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="ygrid crisp" transform="translate(0,55.91)" d="M0,0h666" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path></g></g><g class="zerolinelayer"></g><path class="xlines-below"></path><path class="ylines-below"></path><g class="overlines-below"></g><g class="xaxislayer-below"></g><g class="yaxislayer-below"></g><g class="overaxes-below"></g><g class="plot" transform="translate(0,12)" clip-path="url(#clip33b91exyplot)"><g class="scatterlayer mlayer"><g class="trace scatter trace142be1" style="stroke-miterlimit: 2;"><g class="fills"><g><path class="js-fill" d="M666,1141.7L0,1141.7L0,218.68L2.79,218.68L4.18,217.8L16.72,217.8L18.11,216.92L33.44,216.92L34.83,217.8L66.88,217.8L68.27,218.68L135.15,218.68L136.54,219.56L137.94,218.68L139.33,219.56L192.28,219.56L193.67,220.44L248.01,220.44L249.4,221.31L252.19,227.46L253.58,229.22L254.97,229.22L256.37,228.34L260.55,223.95L261.94,223.07L264.73,222.19L266.12,222.19L267.51,222.19L268.91,221.31L337.18,221.31L338.57,222.19L339.97,221.31L341.36,222.19L344.15,221.31L345.54,222.19L346.93,221.31L348.33,222.19L349.72,221.31L351.11,222.19L367.83,222.19L369.23,221.31L372.01,221.31L373.41,222.19L376.19,221.31L377.59,221.31L429.14,221.31L430.53,220.44L433.32,221.31L434.71,221.31L440.28,221.31L441.68,220.44L443.07,220.44L444.46,221.31L445.86,221.31L447.25,220.44L462.58,220.44L463.97,219.56L473.72,219.56L475.12,218.68L477.9,218.68L479.3,217.8L482.08,217.8L483.48,216.92L484.87,216.92L486.26,216.04L489.05,214.29L490.44,212.53L493.23,208.14L494.62,205.51L498.8,198.48L500.2,196.72L504.38,192.33L505.77,191.45L509.95,189.7L511.34,189.7L515.52,189.7L516.92,190.58L519.7,190.58L521.1,191.45L523.88,191.45L525.28,192.33L533.64,192.33L535.03,191.45L547.57,191.45L548.96,192.33L555.93,192.33L557.32,193.21L560.11,193.21L561.5,194.09L564.29,193.21L565.68,193.21L569.86,193.21L571.26,192.33L574.04,192.33L575.44,191.45L578.22,191.45L579.62,190.58L582.4,190.58L583.79,189.7L587.97,187.94L589.37,187.94L590.76,187.94L592.15,187.06L597.73,184.43L599.12,182.67L601.91,180.04L603.3,178.28L607.48,174.77L608.87,173.01L617.23,168.62L618.63,168.62L626.99,168.62L628.38,169.5L631.17,169.5L632.56,170.38L633.95,170.38L635.35,171.25L638.13,171.25L639.53,172.13L640.92,172.13L642.31,173.01L643.71,173.01L645.1,173.89L647.89,173.89L649.28,174.77L652.07,175.65L653.46,176.52L654.85,176.52L656.25,177.4L661.82,180.04L663.21,180.04L666,181.79" style="fill: rgb(31, 118, 180); fill-opacity: 0.1; stroke-width: 0;"></path></g></g><g class="errorbars"></g><g class="lines"><path class="js-line" d="M0,218.68L2.79,218.68L4.18,217.8L16.72,217.8L18.11,216.92L33.44,216.92L34.83,217.8L66.88,217.8L68.27,218.68L135.15,218.68L136.54,219.56L137.94,218.68L139.33,219.56L192.28,219.56L193.67,220.44L248.01,220.44L249.4,221.31L252.19,227.46L253.58,229.22L254.97,229.22L256.37,228.34L260.55,223.95L261.94,223.07L264.73,222.19L266.12,222.19L267.51,222.19L268.91,221.31L337.18,221.31L338.57,222.19L339.97,221.31L341.36,222.19L344.15,221.31L345.54,222.19L346.93,221.31L348.33,222.19L349.72,221.31L351.11,222.19L367.83,222.19L369.23,221.31L372.01,221.31L373.41,222.19L376.19,221.31L377.59,221.31L429.14,221.31L430.53,220.44L433.32,221.31L434.71,221.31L440.28,221.31L441.68,220.44L443.07,220.44L444.46,221.31L445.86,221.31L447.25,220.44L462.58,220.44L463.97,219.56L473.72,219.56L475.12,218.68L477.9,218.68L479.3,217.8L482.08,217.8L483.48,216.92L484.87,216.92L486.26,216.04L489.05,214.29L490.44,212.53L493.23,208.14L494.62,205.51L498.8,198.48L500.2,196.72L504.38,192.33L505.77,191.45L509.95,189.7L511.34,189.7L515.52,189.7L516.92,190.58L519.7,190.58L521.1,191.45L523.88,191.45L525.28,192.33L533.64,192.33L535.03,191.45L547.57,191.45L548.96,192.33L555.93,192.33L557.32,193.21L560.11,193.21L561.5,194.09L564.29,193.21L565.68,193.21L569.86,193.21L571.26,192.33L574.04,192.33L575.44,191.45L578.22,191.45L579.62,190.58L582.4,190.58L583.79,189.7L587.97,187.94L589.37,187.94L590.76,187.94L592.15,187.06L597.73,184.43L599.12,182.67L601.91,180.04L603.3,178.28L607.48,174.77L608.87,173.01L617.23,168.62L618.63,168.62L626.99,168.62L628.38,169.5L631.17,169.5L632.56,170.38L633.95,170.38L635.35,171.25L638.13,171.25L639.53,172.13L640.92,172.13L642.31,173.01L643.71,173.01L645.1,173.89L647.89,173.89L649.28,174.77L652.07,175.65L653.46,176.52L654.85,176.52L656.25,177.4L661.82,180.04L663.21,180.04L666,181.79" style="vector-effect: non-scaling-stroke; fill: none; stroke: rgb(31, 119, 180); stroke-opacity: 1; stroke-width: 2px; opacity: 1;"></path></g><g class="points"></g><g class="text"></g></g><g class="trace scatter trace3377a1" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"></g><g class="points"><path class="point" transform="translate(666,181.79)" d="M4,0A4,4 0 1,1 0,-4A4,4 0 0,1 4,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(0, 0, 0); fill-opacity: 1;"></path></g><g class="text"></g></g><g class="trace scatter tracee56d5f" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"><path class="js-line" d="M0,8.78L666,8.78" style="vector-effect: non-scaling-stroke; fill: none; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-dasharray: 3px, 3px; stroke-width: 1px; opacity: 1;"></path></g><g class="points"></g><g class="text"></g></g><g class="trace scatter trace7b6519" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"></g><g class="points"></g><g class="text"><g class="textpoint" transform="translate(0,-2.5)"><text x="0" y="8.78" data-unformatted="Kingsbury to Coat (12.90m)" data-math="N" text-anchor="start" style="font-family: Inter, sans-serif; font-size: 10px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre;">Kingsbury to Coat (12.90m)</text></g></g></g><g class="trace scatter tracef66697" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"><path class="js-line" d="M0,181.79L666,181.79" style="vector-effect: non-scaling-stroke; fill: none; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 2px; opacity: 1;"></path></g><g class="points"></g><g class="text"></g></g></g></g><g class="overplot"></g><path class="xlines-above crisp" d="M0,0" style="fill: none;"></path><path class="ylines-above crisp" d="M0,0" style="fill: none;"></path><g class="overlines-above"></g><g class="xaxislayer-above"><g class="xtick"><text text-anchor="middle" x="0" y="262" data-unformatted="2024-12-15" data-math="N" transform="translate(51.55,0)" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;">2024-12-15</text></g><g class="xtick"><text text-anchor="middle" x="0" y="262" data-unformatted="2024-12-16" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(185.31,0)">2024-12-16</text></g><g class="xtick"><text text-anchor="middle" x="0" y="262" data-unformatted="2024-12-17" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(319.07,0)">2024-12-17</text></g><g class="xtick"><text text-anchor="middle" x="0" y="262" data-unformatted="2024-12-18" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(452.82,0)">2024-12-18</text></g><g class="xtick"><text text-anchor="middle" x="0" y="262" data-unformatted="2024-12-19" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(586.58,0)">2024-12-19</text></g></g><g class="yaxislayer-above"><g class="ytick"><text text-anchor="start" x="667" y="3.8499999999999996" data-unformatted="10.50m" data-math="N" transform="translate(0,231.56)" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;">10.50m</text></g><g class="ytick"><text text-anchor="start" x="667" y="3.8499999999999996" data-unformatted="11.00m" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,187.65)">11.00m</text></g><g class="ytick"><text text-anchor="start" x="667" y="3.8499999999999996" data-unformatted="11.50m" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,143.73)">11.50m</text></g><g class="ytick"><text text-anchor="start" x="667" y="3.8499999999999996" data-unformatted="12.00m" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,99.82)">12.00m</text></g><g class="ytick"><text text-anchor="start" x="667" y="3.8499999999999996" data-unformatted="12.50m" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,55.91)">12.50m</text></g><g class="ytick"><text text-anchor="start" x="667" y="3.8499999999999996" data-unformatted="13.00m" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,12)">13.00m</text></g></g><g class="overaxes-above"></g></g></g><g class="polarlayer"></g><g class="smithlayer"></g><g class="ternarylayer"></g><g class="geolayer"></g><g class="funnelarealayer"></g><g class="pielayer"></g><g class="iciclelayer"></g><g class="treemaplayer"></g><g class="sunburstlayer"></g><g class="glimages"></g></svg><div class="gl-container"></div><svg class="main-svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="700" height="280"><defs id="topdefs-33b91e"><g class="clips"></g></defs><g class="indicatorlayer"></g><g class="layer-above"><g class="imagelayer"></g><g class="shapelayer"></g></g><g class="selectionlayer"></g><g class="infolayer"><g class="g-gtitle"></g><g class="g-xtitle"></g><g class="g-ytitle"></g><g class="annotation" data-index="0" style="opacity: 1;"><g class="annotation-text-g" transform="rotate(0,644,171.79)"><g class="cursor-pointer" transform="translate(588,162)"><rect class="bg" x="0.5" y="0.5" width="112" height="18" style="stroke-width: 1px; stroke: rgb(0, 0, 0); stroke-opacity: 1; fill: rgb(255, 255, 255); fill-opacity: 1;"></rect><text class="annotation-text" text-anchor="middle" data-unformatted="10.93m (14:15 UTC)" data-math="N" x="56.5" y="14" style="font-family: Inter, sans-serif; font-size: 12px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre;">10.93m (14:15 UTC)</text></g></g><g class="annotation-arrow-g" style="opacity: 1;"><path d="M653,180.79L666,193.79" style="stroke-width: 2px; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-dasharray: 0px, 0px, 18.3848px, 18.3848px;"></path><path d="M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z" transform="translate(666,193.7899932861328)scale(2)" style="fill: rgb(0, 0, 0); stroke-width: 0;"></path></g></g></g><g class="menulayer"></g><g class="zoomlayer"></g></svg><div class="modebar-container" style="position: absolute; top: 0px; right: 0px; width: 100%;"></div><svg class="main-svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="700" height="280"><g class="hoverlayer"></g></svg></div></div></div><div id="chart-midelney" class="chart tab-content js-plotly-plot"><div class="plot-container plotly"><div class="user-select-none svg-container" style="position: relative; width: 700px; height: 280px;"><svg class="main-svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="700" height="280" style="background: rgb(255, 255, 255);"><defs id="defs-66100f"><g class="clips"><clipPath id="clip66100fxyplot" class="plotclip"><rect width="666" height="238"></rect></clipPath><clipPath class="axesclip" id="clip66100fx"><rect x="0" y="0" width="666" height="280"></rect></clipPath><clipPath class="axesclip" id="clip66100fy"><rect x="0" y="12" width="700" height="238"></rect></clipPath><clipPath class="axesclip" id="clip66100fxy"><rect x="0" y="12" width="666" height="238"></rect></clipPath></g><g class="gradients"></g><g class="patterns"></g></defs><g class="bglayer"></g><g class="draglayer cursor-crosshair"><g class="xy"><rect class="nsewdrag drag" data-subplot="xy" x="0" y="12" width="666" height="238" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="nwdrag drag cursor-nw-resize" data-subplot="xy" x="-20" y="-8" width="20" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="nedrag drag cursor-ne-resize" data-subplot="xy" x="666" y="-8" width="20" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="swdrag drag cursor-sw-resize" data-subplot="xy" x="-20" y="250" width="20" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="sedrag drag cursor-se-resize" data-subplot="xy" x="666" y="250" width="20" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="ewdrag drag cursor-ew-resize" data-subplot="xy" x="66.60000000000001" y="250.5" width="532.8000000000001" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="wdrag drag cursor-w-resize" data-subplot="xy" x="0" y="250.5" width="66.60000000000001" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="edrag drag cursor-e-resize" data-subplot="xy" x="599.4" y="250.5" width="66.60000000000001" height="20" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="nsdrag drag cursor-ns-resize" data-subplot="xy" x="666.5" y="35.8" width="20" height="190.4" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="sdrag drag cursor-s-resize" data-subplot="xy" x="666.5" y="226.20000000000002" width="20" height="23.8" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect><rect class="ndrag drag cursor-n-resize" data-subplot="xy" x="666.5" y="12" width="20" height="23.8" style="fill: transparent; stroke-width: 0; pointer-events: all;"></rect></g></g><g class="layer-below"><g class="imagelayer"></g><g class="shapelayer"></g></g><g class="cartesianlayer"><g class="subplot xy"><g class="layer-subplot"><g class="shapelayer"></g><g class="imagelayer"></g></g><g class="minor-gridlayer"><g class="x"></g><g class="y"></g></g><g class="gridlayer"><g class="x"><path class="xgrid crisp" transform="translate(51.55,0)" d="M0,12v238" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="xgrid crisp" transform="translate(185.31,0)" d="M0,12v238" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="xgrid crisp" transform="translate(319.07,0)" d="M0,12v238" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="xgrid crisp" transform="translate(452.82,0)" d="M0,12v238" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="xgrid crisp" transform="translate(586.58,0)" d="M0,12v238" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path></g><g class="y"><path class="ygrid crisp" transform="translate(0,181.47)" d="M0,0h666" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="ygrid crisp" transform="translate(0,107.79)" d="M0,0h666" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path><path class="ygrid crisp" transform="translate(0,34.11)" d="M0,0h666" style="stroke: rgb(238, 238, 238); stroke-opacity: 1; stroke-width: 1px;"></path></g></g><g class="zerolinelayer"></g><path class="xlines-below"></path><path class="ylines-below"></path><g class="overlines-below"></g><g class="xaxislayer-below"></g><g class="yaxislayer-below"></g><g class="overaxes-below"></g><g class="plot" transform="translate(0,12)" clip-path="url(#clip66100fxyplot)"><g class="scatterlayer mlayer"><g class="trace scatter tracee2ea5f" style="stroke-miterlimit: 2;"><g class="fills"><g><path class="js-fill" d="M666,1274.74L0,1274.74L0,171.68L9.75,171.68L11.15,173.16L16.72,173.16L18.11,174.63L32.05,174.63L33.44,173.16L34.83,174.63L36.23,174.63L37.62,174.63L39.01,173.16L40.41,174.63L41.8,174.63L43.19,173.16L44.59,173.16L52.95,173.16L54.34,174.63L69.67,174.63L71.06,176.11L78.03,176.11L79.42,177.58L101.71,177.58L103.1,176.11L114.25,176.11L115.64,174.63L117.04,176.11L118.43,174.63L128.18,174.63L129.58,173.16L130.97,173.16L132.36,174.63L149.08,174.63L150.48,176.11L153.26,176.11L154.66,177.58L156.05,179.05L157.44,179.05L167.2,179.05L168.59,177.58L175.56,177.58L176.95,179.05L178.34,177.58L179.74,179.05L189.49,179.05L190.88,180.53L193.67,180.53L195.06,182L203.42,182L204.82,183.47L213.18,183.47L214.57,184.95L220.14,184.95L221.54,186.42L225.72,186.42L227.11,187.89L228.5,186.42L229.9,187.89L231.29,186.42L232.68,186.42L238.26,186.42L239.65,184.95L241.04,184.95L242.44,186.42L257.76,186.42L259.15,187.89L268.91,187.89L270.3,186.42L281.45,186.42L282.84,187.89L285.63,187.89L287.02,189.37L292.59,189.37L293.99,190.84L296.77,190.84L298.17,189.37L299.56,190.84L300.95,190.84L303.74,190.84L305.13,189.37L312.1,189.37L313.49,190.84L314.89,189.37L316.28,190.84L320.46,190.84L321.85,189.37L323.25,189.37L324.64,190.84L330.21,190.84L331.61,192.32L334.39,192.32L335.79,193.79L337.18,192.32L338.57,193.79L339.97,193.79L341.36,195.26L342.75,193.79L344.15,193.79L348.33,193.79L349.72,195.26L355.29,195.26L356.69,196.74L360.87,196.74L362.26,198.21L370.62,198.21L372.01,196.74L377.59,196.74L378.98,195.26L381.77,195.26L383.16,193.79L395.7,193.79L397.09,195.26L399.88,195.26L401.27,196.74L405.45,196.74L406.85,198.21L409.63,198.21L411.03,199.68L412.42,201.16L413.81,201.16L415.21,201.16L416.6,202.63L417.99,204.11L419.38,204.11L422.17,207.05L423.56,207.05L424.96,208.53L426.35,208.53L431.92,214.42L433.32,211.47L434.71,212.95L436.1,215.89L437.5,214.42L438.89,215.89L440.28,215.89L441.68,218.84L443.07,212.95L444.46,215.89L445.86,214.42L447.25,215.89L450.04,215.89L451.43,217.37L452.82,212.95L454.22,217.37L455.61,215.89L457,215.89L459.79,212.95L461.18,214.42L463.97,218.84L465.36,217.37L469.54,217.37L470.94,215.89L472.33,217.37L473.72,220.32L475.12,215.89L476.51,220.32L479.3,215.89L480.69,215.89L482.08,217.37L483.48,217.37L486.26,217.37L487.66,215.89L489.05,217.37L490.44,217.37L491.84,217.37L493.23,221.79L494.62,221.79L496.02,220.32L497.41,223.26L498.8,215.89L500.2,215.89L501.59,220.32L502.98,220.32L504.38,215.89L505.77,215.89L507.16,217.37L511.34,210L512.74,208.53L516.92,201.16L518.31,201.16L519.7,201.16L521.1,199.68L522.49,198.21L523.88,198.21L528.06,193.79L529.46,193.79L536.42,186.42L537.82,186.42L544.78,179.05L546.18,179.05L548.96,176.11L550.36,176.11L553.14,173.16L554.54,173.16L555.93,171.68L557.32,171.68L558.72,171.68L560.11,170.21L561.5,170.21L562.9,168.74L564.29,167.26L565.68,167.26L567.08,167.26L568.47,165.79L571.26,165.79L572.65,164.32L578.22,164.32L579.62,162.84L581.01,162.84L582.4,161.37L583.79,159.89L585.19,159.89L586.58,159.89L587.97,158.42L592.15,158.42L593.55,156.95L596.33,156.95L597.73,155.47L599.12,155.47L600.51,154L601.91,154L603.3,152.53L604.69,152.53L606.09,151.05L608.87,148.11L610.27,148.11L615.84,142.21L617.23,142.21L618.63,140.74L620.02,140.74L621.41,139.26L622.81,139.26L624.2,137.79L625.59,137.79L626.99,136.32L628.38,136.32L629.77,136.32L631.17,134.84L635.35,134.84L636.74,133.37L643.71,133.37L645.1,131.89L646.49,133.37L647.89,131.89L656.25,131.89L657.64,130.42L659.03,131.89L660.43,130.42L661.82,131.89L663.21,130.42L666,130.42" style="fill: rgb(31, 118, 180); fill-opacity: 0.1; stroke-width: 0;"></path></g></g><g class="errorbars"></g><g class="lines"><path class="js-line" d="M0,171.68L9.75,171.68L11.15,173.16L16.72,173.16L18.11,174.63L32.05,174.63L33.44,173.16L34.83,174.63L36.23,174.63L37.62,174.63L39.01,173.16L40.41,174.63L41.8,174.63L43.19,173.16L44.59,173.16L52.95,173.16L54.34,174.63L69.67,174.63L71.06,176.11L78.03,176.11L79.42,177.58L101.71,177.58L103.1,176.11L114.25,176.11L115.64,174.63L117.04,176.11L118.43,174.63L128.18,174.63L129.58,173.16L130.97,173.16L132.36,174.63L149.08,174.63L150.48,176.11L153.26,176.11L154.66,177.58L156.05,179.05L157.44,179.05L167.2,179.05L168.59,177.58L175.56,177.58L176.95,179.05L178.34,177.58L179.74,179.05L189.49,179.05L190.88,180.53L193.67,180.53L195.06,182L203.42,182L204.82,183.47L213.18,183.47L214.57,184.95L220.14,184.95L221.54,186.42L225.72,186.42L227.11,187.89L228.5,186.42L229.9,187.89L231.29,186.42L232.68,186.42L238.26,186.42L239.65,184.95L241.04,184.95L242.44,186.42L257.76,186.42L259.15,187.89L268.91,187.89L270.3,186.42L281.45,186.42L282.84,187.89L285.63,187.89L287.02,189.37L292.59,189.37L293.99,190.84L296.77,190.84L298.17,189.37L299.56,190.84L300.95,190.84L303.74,190.84L305.13,189.37L312.1,189.37L313.49,190.84L314.89,189.37L316.28,190.84L320.46,190.84L321.85,189.37L323.25,189.37L324.64,190.84L330.21,190.84L331.61,192.32L334.39,192.32L335.79,193.79L337.18,192.32L338.57,193.79L339.97,193.79L341.36,195.26L342.75,193.79L344.15,193.79L348.33,193.79L349.72,195.26L355.29,195.26L356.69,196.74L360.87,196.74L362.26,198.21L370.62,198.21L372.01,196.74L377.59,196.74L378.98,195.26L381.77,195.26L383.16,193.79L395.7,193.79L397.09,195.26L399.88,195.26L401.27,196.74L405.45,196.74L406.85,198.21L409.63,198.21L411.03,199.68L412.42,201.16L413.81,201.16L415.21,201.16L416.6,202.63L417.99,204.11L419.38,204.11L422.17,207.05L423.56,207.05L424.96,208.53L426.35,208.53L431.92,214.42L433.32,211.47L434.71,212.95L436.1,215.89L437.5,214.42L438.89,215.89L440.28,215.89L441.68,218.84L443.07,212.95L444.46,215.89L445.86,214.42L447.25,215.89L450.04,215.89L451.43,217.37L452.82,212.95L454.22,217.37L455.61,215.89L457,215.89L459.79,212.95L461.18,214.42L463.97,218.84L465.36,217.37L469.54,217.37L470.94,215.89L472.33,217.37L473.72,220.32L475.12,215.89L476.51,220.32L479.3,215.89L480.69,215.89L482.08,217.37L483.48,217.37L486.26,217.37L487.66,215.89L489.05,217.37L490.44,217.37L491.84,217.37L493.23,221.79L494.62,221.79L496.02,220.32L497.41,223.26L498.8,215.89L500.2,215.89L501.59,220.32L502.98,220.32L504.38,215.89L505.77,215.89L507.16,217.37L511.34,210L512.74,208.53L516.92,201.16L518.31,201.16L519.7,201.16L521.1,199.68L522.49,198.21L523.88,198.21L528.06,193.79L529.46,193.79L536.42,186.42L537.82,186.42L544.78,179.05L546.18,179.05L548.96,176.11L550.36,176.11L553.14,173.16L554.54,173.16L555.93,171.68L557.32,171.68L558.72,171.68L560.11,170.21L561.5,170.21L562.9,168.74L564.29,167.26L565.68,167.26L567.08,167.26L568.47,165.79L571.26,165.79L572.65,164.32L578.22,164.32L579.62,162.84L581.01,162.84L582.4,161.37L583.79,159.89L585.19,159.89L586.58,159.89L587.97,158.42L592.15,158.42L593.55,156.95L596.33,156.95L597.73,155.47L599.12,155.47L600.51,154L601.91,154L603.3,152.53L604.69,152.53L606.09,151.05L608.87,148.11L610.27,148.11L615.84,142.21L617.23,142.21L618.63,140.74L620.02,140.74L621.41,139.26L622.81,139.26L624.2,137.79L625.59,137.79L626.99,136.32L628.38,136.32L629.77,136.32L631.17,134.84L635.35,134.84L636.74,133.37L643.71,133.37L645.1,131.89L646.49,133.37L647.89,131.89L656.25,131.89L657.64,130.42L659.03,131.89L660.43,130.42L661.82,131.89L663.21,130.42L666,130.42" style="vector-effect: non-scaling-stroke; fill: none; stroke: rgb(31, 119, 180); stroke-opacity: 1; stroke-width: 2px; opacity: 1;"></path></g><g class="points"></g><g class="text"></g></g><g class="trace scatter trace16da1a" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"></g><g class="points"><path class="point" transform="translate(666,130.42)" d="M4,0A4,4 0 1,1 0,-4A4,4 0 0,1 4,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(0, 0, 0); fill-opacity: 1;"></path></g><g class="text"></g></g><g class="trace scatter traceeb543c" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"><path class="js-line" d="M0,14.74L666,14.74" style="vector-effect: non-scaling-stroke; fill: none; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-dasharray: 3px, 3px; stroke-width: 1px; opacity: 1;"></path></g><g class="points"></g><g class="text"></g></g><g class="trace scatter tracec84c9e" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"><path class="js-line" d="M0,64.84L666,64.84" style="vector-effect: non-scaling-stroke; fill: none; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-dasharray: 3px, 3px; stroke-width: 1px; opacity: 1;"></path></g><g class="points"></g><g class="text"></g></g><g class="trace scatter trace65d80c" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"></g><g class="points"></g><g class="text"><g class="textpoint" transform="translate(0,-2.5)"><text x="0" y="14.74" data-unformatted="Hambridge to Curry Rivel (8.55m)" data-math="N" text-anchor="start" style="font-family: Inter, sans-serif; font-size: 10px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre;">Hambridge to Curry Rivel (8.55m)</text></g></g></g><g class="trace scatter trace3e7710" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"></g><g class="points"></g><g class="text"><g class="textpoint" transform="translate(0,-2.5)"><text x="0" y="64.84" data-unformatted="Top of normal range (8.21m)" data-math="N" text-anchor="start" style="font-family: Inter, sans-serif; font-size: 10px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre;">Top of normal range (8.21m)</text></g></g></g><g class="trace scatter traced39ec1" style="stroke-miterlimit: 2; opacity: 1;"><g class="fills"></g><g class="errorbars"></g><g class="lines"><path class="js-line" d="M0,130.42L666,130.42" style="vector-effect: non-scaling-stroke; fill: none; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 2px; opacity: 1;"></path></g><g class="points"></g><g class="text"></g></g></g></g><g class="overplot"></g><path class="xlines-above crisp" d="M0,0" style="fill: none;"></path><path class="ylines-above crisp" d="M0,0" style="fill: none;"></path><g class="overlines-above"></g><g class="xaxislayer-above"><g class="xtick"><text text-anchor="middle" x="0" y="262" data-unformatted="2024-12-15" data-math="N" transform="translate(51.55,0)" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;">2024-12-15</text></g><g class="xtick"><text text-anchor="middle" x="0" y="262" data-unformatted="2024-12-16" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(185.31,0)">2024-12-16</text></g><g class="xtick"><text text-anchor="middle" x="0" y="262" data-unformatted="2024-12-17" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(319.07,0)">2024-12-17</text></g><g class="xtick"><text text-anchor="middle" x="0" y="262" data-unformatted="2024-12-18" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(452.82,0)">2024-12-18</text></g><g class="xtick"><text text-anchor="middle" x="0" y="262" data-unformatted="2024-12-19" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(586.58,0)">2024-12-19</text></g></g><g class="yaxislayer-above"><g class="ytick"><text text-anchor="start" x="667" y="3.8499999999999996" data-unformatted="7.50m" data-math="N" transform="translate(0,181.47)" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;">7.50m</text></g><g class="ytick"><text text-anchor="start" x="667" y="3.8499999999999996" data-unformatted="8.00m" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,107.79)">8.00m</text></g><g class="ytick"><text text-anchor="start" x="667" y="3.8499999999999996" data-unformatted="8.50m" data-math="N" style="font-family: Inter, sans-serif; font-size: 11px; fill: rgb(68, 68, 68); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,34.11)">8.50m</text></g></g><g class="overaxes-above"></g></g></g><g class="polarlayer"></g><g class="smithlayer"></g><g class="ternarylayer"></g><g class="geolayer"></g><g class="funnelarealayer"></g><g class="pielayer"></g><g class="iciclelayer"></g><g class="treemaplayer"></g><g class="sunburstlayer"></g><g class="glimages"></g></svg><div class="gl-container"></div><svg class="main-svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="700" height="280"><defs id="topdefs-66100f"><g class="clips"></g></defs><g class="indicatorlayer"></g><g class="layer-above"><g class="imagelayer"></g><g class="shapelayer"></g></g><g class="selectionlayer"></g><g class="infolayer"><g class="g-gtitle"></g><g class="g-xtitle"></g><g class="g-ytitle"></g><g class="annotation" data-index="0" style="opacity: 1;"><g class="annotation-text-g" transform="rotate(0,644,120.41999999999999)"><g class="cursor-pointer" transform="translate(591,111)"><rect class="bg" x="0.5" y="0.5" width="105" height="18" style="stroke-width: 1px; stroke: rgb(0, 0, 0); stroke-opacity: 1; fill: rgb(255, 255, 255); fill-opacity: 1;"></rect><text class="annotation-text" text-anchor="middle" data-unformatted="7.76m (14:15 UTC)" data-math="N" x="53" y="14" style="font-family: Inter, sans-serif; font-size: 12px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre;">7.76m (14:15 UTC)</text></g></g><g class="annotation-arrow-g" style="opacity: 1;"><path d="M653,129.42L666,142.42" style="stroke-width: 2px; stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-dasharray: 0px, 0px, 18.3848px, 18.3848px;"></path><path d="M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z" transform="translate(666,142.4199981689453)scale(2)" style="fill: rgb(0, 0, 0); stroke-width: 0;"></path></g></g></g><g class="menulayer"></g><g class="zoomlayer"></g></svg><div class="modebar-container" style="position: absolute; top: 0px; right: 0px; width: 100%;"></div><svg class="main-svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="700" height="280"><g class="hoverlayer"></g></svg></div></div></div></div>
</div>
<footer>
<a href="mailto:[email protected]">feedback</a> |
<a href="https://github.com/bede/levelslevels">code</a> | <a href="https://github.com/bede/levelslevels/commits/main/">changelog</a> | <a href="https://check-for-flooding.service.gov.uk/target-area/112WAFYPM">flood alert</a>
</footer>
<script type="text/javascript" crossorigin="anonymous" src="https://eu-assets.i.posthog.com/static/web-vitals.js?v=1.202.2"></script><script type="text/javascript" crossorigin="anonymous" src="https://eu-assets.i.posthog.com/array/phc_KlFKZyqiluUOIZvbdp6T129dDvRVRaAcKICHPeBejch/config.js"></script><script>
// JavaScript code
const SOURCES = [
{
name: "Long Load Main Drain",
url: "https://check-for-flooding.service.gov.uk/station-csv/3379",
elementId: "long-load",
datumOffset: 5,
routes: [
{
name: "Langport to Muchelney",
amberThreshold: 7.30,
link: "https://www.somerset.gov.uk/roads-travel-and-parking/emergency-road-closure-gates/",
markerPosition: [51.0266797, -2.8174208]
},
{
name: "Muchelney to Long Load",
amberThreshold: 7.86,
link: "",
markerPosition: [51.009468, -2.793615]
},
{
name: "Muchelney to Thorney",
amberThreshold: 7.93,
link: "",
markerPosition: [51.0132813, -2.8149388]
}
],
thresholds: [
{ name: "Property flooding", value: 8.35 },
{ name: "Top of normal range", value: 7.06 }
],
showOnOverlay: true
},
{
name: "West Moor Drain",
url: "https://check-for-flooding.service.gov.uk/station-csv/3381",
elementId: "west-moor",
datumOffset: 5.185,
routes: [
{
name: "Hambridge to Burrow",
amberThreshold: 7.70,
link: "",
markerPosition: [50.9856215, -2.8500948]
}
],
thresholds: [
{ name: "Top of normal range", value: 6.645 }
],
showOnOverlay: true
},
{
name: "Parrett at Gaw Bridge",
url: "https://check-for-flooding.service.gov.uk/station-csv/3072",
elementId: "gaw-bridge",
datumOffset: 10,
routes: [
{
name: "Kingsbury to Coat",
amberThreshold: 12.9,
link: "",
markerPosition: [50.9760122, -2.7934033]
}
],
thresholds: [
],
showOnOverlay: false
},
{
name: "Isle at Midelney",
url: "https://check-for-flooding.service.gov.uk/station-csv/3380",
elementId: "midelney",
datumOffset: 5.185,
routes: [
{
name: "Hambridge to Curry Rivel",
amberThreshold: 8.55,
link: "",
markerPosition: [50.9952542, -2.8602064]
}
],
thresholds: [
{ name: "Top of normal range", value: 8.21 }
],
showOnOverlay: false
}
];
// Colours
const COLORS = {
green: "#4CAF50",
amber: "#FFC107",
red: "#F44336"
};
// Global object to store latest readings
const latestReadings = {};
// Fetch data, create charts, and update route statuses
async function fetchAndProcessData() {
try {
// Fetch data for all sources in parallel
const allData = await Promise.all(
SOURCES.map(async (source) => {
const parsedData = await fetchData(source);
return { source, parsedData };
})
);
// Now that we have all data in allData (in the same order as SOURCES),
// we can loop through them in order to ensure stable tab order
allData.forEach(({ source, parsedData }) => {
const latestReading = parsedData[parsedData.length - 1];
latestReadings[source.elementId] = latestReading;
renderChart(parsedData, source);
});
// Update route statuses and render map after all charts are created
updateRouteStatuses();
renderMap();
// Initialize tabs after they have all been created
initializeTabs();
// Resize the chart in the default active tab
const defaultChartDiv = document.querySelector('.tab-content.active');
if (defaultChartDiv) {
Plotly.Plots.resize(defaultChartDiv);
}
} catch (error) {
console.error("Error:", error);
alert("Failed to fetch and process data.");
}
}
// Fetch data from cache or API
async function fetchData(source) {
const cacheKey = `waterLevelsCSV_${source.elementId}`;
const cachedCSV = localStorage.getItem(cacheKey);
const cachedTimestamp = localStorage.getItem(`${cacheKey}_timestamp`);
const now = new Date().getTime();
if (cachedCSV && cachedTimestamp && now - cachedTimestamp < 15 * 60 * 1000) {
console.log(`Using cached data for ${source.name}`);
return parseCSV(cachedCSV, source);
}
console.log(`Fetching new data for ${source.name}`);
const response = await fetch(source.url, { cache: 'no-store' });
if (!response.ok) throw new Error("Failed to fetch data");
const csvData = await response.text();
localStorage.setItem(cacheKey, csvData);
localStorage.setItem(`${cacheKey}_timestamp`, now.toString());
return parseCSV(csvData, source);
}
// Parse CSV data
function parseCSV(csvData, source) {
return csvData
.trim()
.split("\n")
.slice(1)
.map((row) => {
const [timestamp, height] = row.split(",");
return { timestamp, height: parseFloat(height) + source.datumOffset };
});
}
// Update route statuses
function updateRouteStatuses() {
const routeStatusList = document.getElementById('route-status-list');
routeStatusList.innerHTML = ''; // Clear existing list
let hasFloodedRoutes = false;
SOURCES.forEach(source => {
// Only show routes on overlay if source.showOnOverlay is true
if (!source.showOnOverlay) return;
const sourceReading = latestReadings[source.elementId];
if (sourceReading) {
source.routes.forEach(route => {
const status = determineStatus(sourceReading.height, route.amberThreshold);
// Only proceed if status is amber or red
if (status.color === 'amber' || status.color === 'red') {
hasFloodedRoutes = true;
const li = document.createElement('li');
const circle = document.createElement('span');
circle.classList.add('circle', status.color);
li.appendChild(circle);
const text = document.createElement('span');
if (route.link) {
text.innerHTML = `<a href="${route.link}">${route.name}</a>: <strong>${status.message}</strong>`;
} else {
text.innerHTML = `${route.name}: <strong>${status.message}</strong>`;
}
li.appendChild(text);
routeStatusList.appendChild(li);
}
});
}
});
// Show "All clear" message if no flooded routes are detected
if (!hasFloodedRoutes) {
const li = document.createElement('li');
const circle = document.createElement('span');
circle.classList.add('circle', 'green');
li.appendChild(circle);
const text = document.createElement('span');
text.innerHTML = `All routes clear (but check <a href="https://www.somerset.gov.uk/roads-travel-and-parking/emergency-road-closure-gates">gate status</a>)`;
li.appendChild(text);
routeStatusList.appendChild(li);
}
}
// Determine route status (amber if flood is 0.01m or more above the amber threshold)
function determineStatus(height, amberThreshold) {
const redThreshold = amberThreshold + 0.30; // Red threshold is 30cm above amber
// Amber if (height - amberThreshold) >= 0.01
if (height >= redThreshold) {
const diff = ((height - amberThreshold) * 100).toFixed(0); // Difference in cm
return { color: 'red', message: `flood (${diff}cm)` };
} else if (height >= amberThreshold + 0.01) {
const diff = ((height - amberThreshold) * 100).toFixed(0); // Difference in cm
return { color: 'amber', message: `flood (${diff}cm)` };
} else {
const diff = ((height - amberThreshold) * 100).toFixed(0); // Difference in cm
return { color: 'green', message: `clear (${diff}cm)` };
}
}
function renderChart(parsedData, source) {
const timestamps = parsedData.map(d => d.timestamp);
const heights = parsedData.map(d => d.height);
// Create threshold lines and labels for routes and additional thresholds
const thresholds = [
...source.routes.map((route) => ({
name: route.name,
value: route.amberThreshold
})),
...(source.thresholds || [])
];
const thresholdLines = thresholds.map(threshold => ({
x: [timestamps[0], timestamps[timestamps.length - 1]],
y: [threshold.value, threshold.value],
mode: "lines",
name: threshold.name,
line: { dash: "dot", width: 1, color: "black" },
hoverinfo: "none"
}));
const thresholdLabels = thresholds.map((threshold) => ({
x: [timestamps[0]],
y: [threshold.value],
mode: "text",
text: [`${threshold.name} (${threshold.value.toFixed(2)}m)`],
textposition: "top right",
textfont: { family: "Inter, sans-serif", size: 10, color: "black" },
showlegend: false,
hoverinfo: "none"
}));
const waterLevelTrace = {
x: timestamps,
y: heights,
mode: "lines",
name: "",
line: { color: "#1f77b4", width: 2 },
fill: "tozeroy",
fillcolor: "rgba(31, 118, 180, 0.1)"
};
const latestReading = parsedData[parsedData.length - 1];
// Latest Reading Marker and Annotation
const latestDate = new Date(latestReading.timestamp);
const hours = latestDate.getUTCHours().toString().padStart(2, '0');
const minutes = latestDate.getUTCMinutes().toString().padStart(2, '0');
const timeString = `${hours}:${minutes} UTC`;
const latestPointTrace = {
x: [latestReading.timestamp],
y: [latestReading.height],
mode: "markers",
marker: { color: "black", size: 8 },
name: "Latest Reading",
hoverinfo: "none"
};
const latestReadingAnnotation = {
x: latestReading.timestamp,
y: latestReading.height,
xref: 'x',
yref: 'y',
text: `${latestReading.height.toFixed(2)}m (${timeString})`,
showarrow: true,
arrowhead: 6,
ax: -22,
ay: -22,
font: { family: "Inter, sans-serif", size: 12, color: "black" },
bordercolor: "black",
borderwidth: 1,
bgcolor: "#fff",
opacity: 1.0
};
// Calculate dynamic y-axis range
const dataMin = Math.min(...heights);
const dataMax = Math.max(...heights);
const thresholdValues = thresholds.map(t => t.value);
const thresholdsMin = thresholdValues.length ? Math.min(...thresholdValues) : dataMin;
const thresholdsMax = thresholdValues.length ? Math.max(...thresholdValues) : dataMax;
const yPadding = 0.1;
let yMin = Math.min(dataMin, thresholdsMin) - yPadding;
let yMax = Math.max(dataMax, thresholdsMax) + yPadding;
if (yMin < 0) yMin = 0;
const layout = {
xaxis: {
tickformat: "%Y-%m-%d",
showgrid: true,
title: "",
tickfont: { family: "Inter, sans-serif", size: 11 },
range: [timestamps[0], timestamps[timestamps.length - 1]]
},
yaxis: {
showgrid: true,
tickformat: ".2f",
ticksuffix: "m",
range: [yMin, yMax],
tickfont: { family: "Inter, sans-serif", size: 11 },
side: "right"
},
annotations: [latestReadingAnnotation],
showlegend: false,
font: { family: "Inter, sans-serif" },
margin: { t: 12, b: 30, l: 0, r: 34 },
autosize: true,
dragmode: false
};
const currentLevelLine = {
x: [timestamps[0], timestamps[timestamps.length - 1]],
y: [latestReading.height, latestReading.height],
mode: "lines",
name: "Current Level",
line: { width: 2, color: "black" },
hoverinfo: "none"
};
// Create chart container
const tabContents = document.getElementById('tab-contents');
const chartDiv = document.createElement('div');
chartDiv.id = `chart-${source.elementId}`;
chartDiv.classList.add('chart', 'tab-content');
tabContents.appendChild(chartDiv);
Plotly.newPlot(
`chart-${source.elementId}`,
[waterLevelTrace, latestPointTrace, ...thresholdLines, ...thresholdLabels, currentLevelLine],
layout,
{
responsive: true,
displayModeBar: false,
scrollZoom: false
}
);
// Create tab button
const tabButtons = document.getElementById('tab-buttons');
const tabButton = document.createElement('button');
tabButton.classList.add('tab-button');
tabButton.textContent = source.name;
tabButton.dataset.target = `chart-${source.elementId}`;
tabButtons.appendChild(tabButton);
}
// Initialize tabs
function initializeTabs() {
const tabButtons = document.querySelectorAll('.tab-button');
const tabContents = document.querySelectorAll('.tab-content');
// Set default active tab
tabButtons[0].classList.add('active');
tabContents[0].classList.add('active');
Plotly.Plots.resize(tabContents[0]);
tabButtons.forEach(button => {
button.addEventListener('click', () => {
// Remove active class from all buttons and contents
tabButtons.forEach(btn => btn.classList.remove('active'));
tabContents.forEach(content => {
content.classList.remove('active');
content.style.display = 'none';
});
// Add active class to the clicked button and corresponding content
button.classList.add('active');
const targetContent = document.getElementById(button.dataset.target);
targetContent.classList.add('active');
targetContent.style.display = 'block';
// Resize Plotly chart in the active tab
Plotly.Plots.resize(targetContent);
});
});
}
// Render the map
function renderMap() {
const map = L.map('map', {
attributionControl: false,
scrollWheelZoom: false,
boxZoom: false,
keyboard: false,
zoomControl: false
}).setView([51.020, -2.82], 12);
// Add OpenStreetMap tiles
L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", {
attribution:
"© <a href='https://www.openstreetmap.org/copyright'>OpenStreetMap</a> contributors"
}).addTo(map);
// Add zoom control to the left side
L.control.zoom({
position: 'bottomleft'
}).addTo(map);
// Add markers for each route
SOURCES.forEach(source => {
const sourceReading = latestReadings[source.elementId];
if (sourceReading) {
source.routes.forEach(route => {
if (route.markerPosition) {
const status = determineStatus(sourceReading.height, route.amberThreshold);
addMarker(
map,
route.markerPosition,
route.name,
source.name,
status,
determineMarkerColor(sourceReading.height, route.amberThreshold)
);
}
});
}
});
}
// Add a marker to the map
function addMarker(map, position, routeName, sourceName, status, color) {
const popupContent = `
<strong>${routeName}</strong><br>
Tracks ${sourceName} level<br>
Status: <strong>${status.message}</strong>
`;
L.marker(position, {
icon: L.divIcon({
className: "custom-icon",
html: `<div style="background-color: ${color}; position: relative; top: -4px; left: -4px; width: 20px; height: 20px; border-radius: 50%;"></div>`
})
})
.addTo(map)
.bindPopup(popupContent);
}
// Determine marker color
function determineMarkerColor(height, amberThreshold) {
const redThreshold = amberThreshold + 0.30;
if (height >= redThreshold) return COLORS.red;
if (height >= amberThreshold + 0.01) return COLORS.amber;
return COLORS.green;
}
// Fetch and process data on page load
window.onload = fetchAndProcessData;
</script>
<svg id="js-plotly-tester" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="position: absolute; left: -10000px; top: -10000px; width: 9000px; height: 9000px; z-index: 1;"><path class="js-reference-point" d="M0,0H1V1H0Z" style="stroke-width: 0; fill: black;"></path></svg></body></html>