<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>