Просмотр исходного кода

starting to implement history from interier

marek 1 месяц назад
Родитель
Сommit
8da91bc458
2 измененных файлов с 131 добавлено и 17 удалено
  1. 16 16
      templates/en/panel/stations/station.eta
  2. 115 1
      templates/sk/panel/stations/station.eta

+ 16 - 16
templates/en/panel/stations/station.eta

@@ -86,6 +86,21 @@
     <p><strong>description:</strong> <%= it.meteostanica.description %></p>
     <p><strong>description:</strong> <%= it.meteostanica.description %></p>
 <% } %>
 <% } %>
 
 
+<p><strong>created:</strong> <%= it.meteostanica.timestamp %></p>
+
+<div class="container-row">
+    <p><strong>websocket key:</strong> <%= it.meteostanica.websocketKey %></p>
+    <a role="button" href="/en/panel/stations/<%= it.meteostanica.id %>/resetWebsocketKey"><%~ resetIcon %> reset</a>
+</div>
+
+<hr>
+
+<div class="container-row">
+    <a role="button" href="/en/panel/stations/<%= it.meteostanica.id %>/history"><%~ historyIcon %> history</a>
+    <a role="button" class="primary" href="/en/panel/stations/<%= it.meteostanica.id %>/edit"><%~ editIcon %> edit</a>
+    <a role="button" class="danger" href="/en/panel/stations/<%= it.meteostanica.id %>/delete"><%~ deleteIcon %> delete</a>
+</div>
+
 <% if (it.data?.[0]) { %>
 <% if (it.data?.[0]) { %>
     <div id="mainStats">
     <div id="mainStats">
         <% /* <div class="message error">
         <% /* <div class="message error">
@@ -154,19 +169,4 @@
             outdoorAltitude.textContent = data?.outdoorAltitude / 100
             outdoorAltitude.textContent = data?.outdoorAltitude / 100
         }, 10000)
         }, 10000)
     </script>
     </script>
-<% } %>
-
-<p><strong>created:</strong> <%= it.meteostanica.timestamp %></p>
-
-<div class="container-row">
-    <p><strong>websocket key:</strong> <%= it.meteostanica.websocketKey %></p>
-    <a role="button" href="/en/panel/stations/<%= it.meteostanica.id %>/resetWebsocketKey"><%~ resetIcon %> reset</a>
-</div>
-
-<hr>
-
-<div class="container-row">
-    <a role="button" href="/en/panel/stations/<%= it.meteostanica.id %>/history"><%~ historyIcon %> history</a>
-    <a role="button" class="primary" href="/en/panel/stations/<%= it.meteostanica.id %>/edit"><%~ editIcon %> edit</a>
-    <a role="button" class="danger" href="/en/panel/stations/<%= it.meteostanica.id %>/delete"><%~ deleteIcon %> delete</a>
-</div>
+<% } %>

+ 115 - 1
templates/sk/panel/stations/station.eta

@@ -8,6 +8,42 @@
     </svg>
     </svg>
 ` %>
 ` %>
 
 
+<% const tickIcon = `
+    <svg class="icon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+        <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
+            <circle cx="12" cy="12" r="10" />
+            <path d="m9 12l2 2l4-4" />
+        </g>
+    </svg>
+` %>
+
+<% const xIcon = `
+    <svg class="icon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+        <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
+            <circle cx="12" cy="12" r="10" />
+            <path d="m15 9l-6 6m0-6l6 6" />
+        </g>
+    </svg>
+` %>
+
+<% const tempIcon = `
+    <svg class="icon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+        <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 4v10.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0" />
+    </svg>
+` %>
+
+<% const pressureIcon = `
+    <svg class="icon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+        <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m12 14l4-4M3.34 19a10 10 0 1 1 17.32 0" />
+    </svg>
+` %>
+
+<% const humidityIcon = `
+    <svg class="icon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+        <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5S5 13 5 15a7 7 0 0 0 7 7" />
+    </svg>
+` %>
+
 <% const resetIcon = `
 <% const resetIcon = `
     <svg class="icon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <svg class="icon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
         <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
         <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
@@ -17,6 +53,15 @@
     </svg>
     </svg>
 ` %>
 ` %>
 
 
+<% const historyIcon = `
+    <svg class="icon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+        <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
+            <path d="M3 12a9 9 0 1 0 9-9a9.75 9.75 0 0 0-6.74 2.74L3 8" />
+            <path d="M3 3v5h5m4-1v5l4 2" />
+        </g>
+    </svg>
+` %>
+
 <% const editIcon = `
 <% const editIcon = `
     <svg class="icon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <svg class="icon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
         <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
         <g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
@@ -51,8 +96,77 @@
 <hr>
 <hr>
 
 
 <div class="container-row">
 <div class="container-row">
+    <a role="button" href="/panel/stations/<%= it.meteostanica.id %>/history"><%~ historyIcon %> história</a>
     <a role="button" class="primary" href="/panel/stations/<%= it.meteostanica.id %>/edit"><%~ editIcon %> upraviť</a>
     <a role="button" class="primary" href="/panel/stations/<%= it.meteostanica.id %>/edit"><%~ editIcon %> upraviť</a>
     <a role="button" class="danger" href="/panel/stations/<%= it.meteostanica.id %>/delete"><%~ deleteIcon %> odstrániť</a>
     <a role="button" class="danger" href="/panel/stations/<%= it.meteostanica.id %>/delete"><%~ deleteIcon %> odstrániť</a>
 </div>
 </div>
 
 
-<p>(dáta s histórou (grafmi) bude tu)</p>
+<% if (it.data?.[0]) { %>
+    <div id="mainStats">
+        <% /* <div class="message error">
+            <p>High temperature was detcted!</p>
+            <p>High pressure was detcted!</p>
+            <p>High humidity was detcted!</p>
+        </div> */ %>
+
+        <p><em>naposledy aktualizované: <%= it.data?.[0]?.timestamp %></em></p>
+
+        <div class="stats">
+            <div class="wrapper">
+                <h2>vnútorné</h2>
+                <div class="values indoor">
+                    <p><a role="button" href="/panel/stations/<%= it.meteostanica.id %>/history/indoorTemp"><%~ tempIcon %></a> <span id="indoorTemp"><%= it.data?.[0]?.indoorTemp / 100 %></span> °C</p>
+                    <p><a role="button" href="/panel/stations/<%= it.meteostanica.id %>/history/indoorPressure"><%~ pressureIcon %></a> <span id="indoorPressure"><%= it.data?.[0]?.indoorPressure / 100 %></span> hPa</p>
+                    <p><a role="button" href="/panel/stations/<%= it.meteostanica.id %>/history/indoorHumidity"><%~ humidityIcon %></a> <span id="indoorHumidity"><%= it.data?.[0]?.indoorHumidity / 100 %></span> %</p>
+                </div>
+            </div>
+
+            <div class="wrapper">
+                <h2>vonkajšie</h2>
+                <div class="values outdoor">
+                    <p><a role="button" href="/panel/stations/<%= it.meteostanica.id %>/history/outdoorConnected" id="outdoorConnectedIcon"><%~ it.data?.[0]?.outdoorConnected ? tickIcon : xIcon %></a> <span id="outdoorConnectedText"><%= it.data?.[0]?.outdoorConnected ? `pripojené` : `odpojené` %></span></p>
+                    <p><a role="button" href="/panel/stations/<%= it.meteostanica.id %>/history/outdoorTemp"><%~ tempIcon %></a> <span id="outdoorTemp"><%= it.data?.[0]?.outdoorTemp / 100 %></span> °C</p>
+                    <p><a role="button" href="/panel/stations/<%= it.meteostanica.id %>/history/outdoorPressure"><%~ pressureIcon %></a> <span id="outdoorPressure"><%= it.data?.[0]?.outdoorPressure / 100 %></span> hPa</p>
+                    <p><a role="button" href="/panel/stations/<%= it.meteostanica.id %>/history/outdoorHumidity"><%~ humidityIcon %></a> <span id="outdoorHumidity"><%= it.data?.[0]?.outdoorHumidity / 100 %></span> %</p>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <script defer>
+        setInterval(async () => {
+            const response = await fetch('/panel/stations/<%= it.meteostanica.id %>/currentData')
+            const data = await response.json()
+
+            const indoorTemp = document.querySelector(`#indoorTemp`)
+            const indoorPressure = document.querySelector(`#indoorPressure`)
+            const indoorHumidity = document.querySelector(`#indoorHumidity`)
+            const indoorAltitude = document.querySelector(`#indoorAltitude`)
+
+            const outdoorConnectedIcon = document.querySelector(`#outdoorConnectedIcon`)
+            const outdoorConnectedText = document.querySelector(`#outdoorConnectedText`)
+
+            const outdoorTemp = document.querySelector(`#outdoorTemp`)
+            const outdoorPressure = document.querySelector(`#outdoorPressure`)
+            const outdoorHumidity = document.querySelector(`#outdoorHumidity`)
+            const outdoorAltitude = document.querySelector(`#outdoorAltitude`)
+
+            indoorTemp.textContent = data?.indoorTemp / 100
+            indoorPressure.textContent = data?.indoorPressure / 100
+            indoorHumidity.textContent = data?.indoorHumidity / 100
+            indoorAltitude.textContent = data?.indoorAltitude / 100
+
+            const tickIcon = `<%~ tickIcon %>`
+
+            const xIcon = `<%~ xIcon %>`
+
+            outdoorConnectedIcon.innerHTML = data?.outdoorConnected ? tickIcon : xIcon
+            outdoorConnectedText.textContent = data?.outdoorConnected ? `connected` : `disconnected`
+
+            outdoorTemp.textContent = data?.outdoorTemp / 100
+            outdoorPressure.textContent = data?.outdoorPressure / 100
+            outdoorHumidity.textContent = data?.outdoorHumidity / 100
+            outdoorAltitude.textContent = data?.outdoorAltitude / 100
+        }, 10000)
+    </script>
+<% } %>