Files
radiacode_docker_usb/webserver.html
2023-07-05 15:56:35 +03:00

13 KiB
Raw Blame History

<html> <head> <script async src="https://www.googletagmanager.com/gtag/js?id=G-GBWL3K2WMQ"></script> <script> window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); gtag('config', 'G-GBWL3K2WMQ'); </script> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/apexcharts"></script> <script src="https://cdn.jsdelivr.net/npm/vue-apexcharts"></script> <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js" integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin=""></script> <script defer src="https://use.fontawesome.com/releases/v5.15.4/js/all.js" integrity="sha384-rOA1PnstxnOBLzCLMcre8ybwbTmemjzdNlILg8O7z1lUkLXozs4DHonlDtnE7fpc" crossorigin="anonymous"></script> <style> #app>div { margin: 5px auto; width: 80%; } #app fieldset { display: inline-block; border: 0; padding: 0; margin-left: 20px; } #app>.notification { border: none; } #map { height: 180px; width: 80%; margin: 5px auto; } </style> </head>
Використовуйте ландшафтну орієнтацію екрану для зручного перегляду. Ще краще — планшет чи комп'ютер.
Автооновлення: {{ rates_autoupdate ? "ВКЛ" : "ВИКЛ" }}
До 0,3 мк3в/г — нормальний радіаційний фон.

Швидкість дози в мікрозівертах на годину вказує, скільки мікрозівертів (одиниця виміру еквівалентної дози) радіації поглинається організмом або матеріалом за одну годину. Ця величина може використовуватися для оцінки рівня радіаційного впливу на людей, а також для моніторингу і контролю радіаційної безпеки в радіаційних зонах, ядерних установках або природному середовищі.

Наприклад, якщо швидкість дози становить 10 μSv/h, це означає, що організм або матеріал отримує дозу 10 мікрозівертів радіації за кожну годину. Це може вказувати на наявність джерела радіації в цьому місці або на необхідність заходів з радіаційного захисту.

Оновити спектр

Важливо зазначити що явище радіоактивності не можна застосувати(вживати в контексті) до міста. Прочитати більше можна на Вікі!

Частина проекту dead.guru. Код ліцензований MIT. Вміст сайту має ліцензію CC BY NC SA 4.0.

<script> const common_options = { chart: { animations: { enabled: false }, zoom: { autoScaleYaxis: true }, }, tooltip: { intersect: false }, grid: { xaxis: { lines: { show: true } } }, dataLabels: { enabled: false }, }; var app = new Vue({ el: '#app', components: { apexchart: VueApexCharts, }, data: function () { return { ws: null, spectrum_duration: 0, rates_autoupdate: true, al: true, rates_series: [], spectrum_accum: false, spectrum_series: [], spectrum_coef: [0, 0, 0], spectrum_logarithmic: true, spectrum_energy: true, ratesChartOptions: { ...common_options, title: { text: 'Активнсть подій (подій в секунду) і доза' }, xaxis: { type: 'datetime' }, yaxis: [ { seriesName: 'Подій', title: { text: 'ПНС' }, labels: { formatter: (v) => v.toFixed(2) + ' ПНС' } }, { seriesName: 'Доза', title: { text: 'мк3в/г' }, labels: { formatter: (v) => v.toFixed(4) + ' мк3в/г' }, opposite: true }, ], }, }; }, watch: { spectrum_accum() { this.updateSpectrum(); }, al(newAl) { localStorage.al = newAl === true ? "ok!" : "no"; } }, computed: { spectrumChartOptions() { const a0 = this.spectrum_coef[0], a1 = this.spectrum_coef[1], a2 = this.spectrum_coef[2]; const fmt = this.spectrum_energy ? ((c) => (a0 + a1 * c + a2 * c * c).toFixed(0)) : undefined; const title = this.spectrum_energy ? 'кеВ' : 'канал'; return { ...common_options, title: { text: `Спектр, ${this.spectrum_duration} секунд` }, xaxis: { type: 'numeric', title: { text: title }, tickAmount: 25, labels: { formatter: fmt } }, yaxis: { logarithmic: this.spectrum_logarithmic, decimalsInFloat: 0 }, plotOptions: { bar: { columnWidth: '95%' } }, }; }, }, created() { this.ws = new WebSocket('wss://' + window.location.host + '/ws') this.ws.onmessage = this.onmessage; this.updateSpectrum(); var map = L.map('map').setView([50.51847778550632, 30.508852993206236], 10); L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 10, attribution: '© OpenStreetMap' }).addTo(map); var circle = L.circle([50.51847778550632, 30.508852993206236], { color: '#164299', weight: 1, opacity: 0.7, fillColor: '#256FFF', fillOpacity: 0.2, radius: 5000 }).addTo(map); circle.bindPopup("Зона виміру"); }, beforeDestroy: function () { this.ws.close(); }, mounted() { if (localStorage.al) { this.al = localStorage.al === "ok!"; } }, methods: { onmessage(ev) { if (!this.rates_autoupdate) { return; } const d = JSON.parse(ev.data); this.rates_series = d.series; }, updateSpectrum() { fetch(`/spectrum?accum=${this.spectrum_accum}`) .then(response => response.json()) .then(data => (this.spectrum_duration = data.duration, this.spectrum_coef = data.coef, this.spectrum_series = data.series)); }, }, }); </script> </html>