- 扫描 ID:
- 30856c85-b62f-4d9f-a685-6b793f445a74已完成
- 提交的 URL:
- https://levelslevels.uk/
- 报告完成时间:
链接 · 找到 4 个
从页面中识别出的传出链接
链接 | 文本 |
---|---|
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 |
JavaScript 变量 · 找到 27 个
在页面窗口对象上加载的全局 JavaScript 变量是在函数外部声明的变量,可以从当前范围内的代码中的任何位置访问
名称 | 类型 |
---|---|
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
PolyBool | object |
sprintf | function |
vsprintf | function |
__TYPEDARRAY_POOL | object |
__TEXT_CACHE | object |
PlotlyGeoAssets | object |
Plotly | object |
控制台日志消息 · 找到 4 条
记录到 Web 控制台的消息
类型 | 类别 | 记录 |
---|---|---|
log | other |
|
log | other |
|
log | other |
|
log | other |
|
HTML
页面的原始 HTML 正文
<!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>