Skip to content
Snippets Groups Projects
Select Git revision
  • 6cf8c9bc0279bffb82d47211c7cfe99a189f9795
  • main default protected
  • 3-rewrite-in-typescript
  • 1.13.6
  • 1.13.5
  • 1.13.4
  • 1.13.3
  • 1.13.2
  • 1.13.1
  • 1.13.0
  • 1.12.4
  • 1.12.3
  • 1.12.2
  • 1.12.1
  • 1.12.0
  • 1.11.0
  • 1.10.1
  • 1.10.0
  • 1.9.0
  • v1.7.0
  • 1.8.0
  • v1.7.1
  • v1.6.2
23 results

index.js

Blame
  • script.js 8.07 KiB
    // 66 % average IM Rating by Sennheiser WSM
    // these offsets are from one to the next frequency
    // offset1 - offset7 can be applied reverse order to use the mirrored spacing
    var offset0 = 0.100 // space from left tv channel edge
    var offset1 = 0.400
    var offset2 = 0.700
    var offset3 = 1.425
    var offset4 = 0.525
    var offset5 = 1.200
    var offset6 = 2.250
    var offset7 = 1.300
    
    var direction;
    var f1, f2, f3, f4, f5, f6, f7, f8;
    
    function calculateFreqs() {
      // clear complete table
      resetTable();
      // check if there is a tv channel set in the cookies
      var channel = document.getElementById("channel").value;
      if (channel != "") {
        setCookie("channel", channel, 7); // 7 days is maximum set by safari and brave
      } else {
        var channelCookie = getCookie("channel");
        if (channelCookie != null && channelCookie != "") {
          channel = channelCookie;
          document.getElementById('channel').value = channel;
        } else {
          return;
        }
      }
      // prove if direction for spacing is set in cookies or by radios
      var directionUp = document.getElementById("up").checked;
      var directionDown = document.getElementById("down").checked;
      // no radios set (reload moment) check cookie
      if (directionUp != true && directionDown != true) {
        var directionCookie = getCookie("direction");
        if (directionCookie != null && directionCookie != "") {
          direction = directionCookie;
          if (direction == "up") {
            document.getElementById('up').checked = true;
          } else if (direction == "down") {
            document.getElementById('down').checked = true;
          }
        } else {
          // no cookie, no radios set - default direction up
          direction = 'up';
          document.getElementById('up').checked = true;
          setCookie("direction", direction, 7); // 7 days is maximum set by safari and brave
        }
      // some radio is set
      } else if (directionUp == true) {
        direction = 'up';
        setCookie("direction", direction, 7); // 7 days is maximum set by safari and brave
      } else if (directionDown == true) {
        direction = 'down';
        setCookie("direction", direction, 7); // 7 days is maximum set by safari and brave
      }
      var startFrequency =  channel * 8 + 302;
      // LTE constraints shifting startFrequency
      if (channel == 54) {
        startFrequency = 736
      } else if (channel == 65) {
        startFrequency = 824
      }
      // you can mirror the spaces between all frequencies - if you have to set 16 frequencies you better chose 1 set up direction and the second set down
      if (direction == 'up') {
        f1 = startFrequency + offset0;
        f2 = startFrequency + offset0 + offset1;
        f3 = startFrequency + offset0 + offset1 + offset2;
        f4 = startFrequency + offset0 + offset1 + offset2 + offset3;
        f5 = startFrequency + offset0 + offset1 + offset2 + offset3 + offset4;
        f6 = startFrequency + offset0 + offset1 + offset2 + offset3 + offset4 + offset5;
        f7 = startFrequency + offset0 + offset1 + offset2 + offset3 + offset4 + offset5 + offset6;
        f8 = startFrequency + offset0 + offset1 + offset2 + offset3 + offset4 + offset5 + offset6 + offset7;
      } else {
        f1 = startFrequency + offset0;
        f2 = startFrequency + offset0 + offset7;
        f3 = startFrequency + offset0 + offset7 + offset6;
        f4 = startFrequency + offset0 + offset7 + offset6 + offset5;
        f5 = startFrequency + offset0 + offset7 + offset6 + offset5 + offset4;
        f6 = startFrequency + offset0 + offset7 + offset6 + offset5 + offset4 + offset3;
        f7 = startFrequency + offset0 + offset7 + offset6 + offset5 + offset4 + offset3 + offset2;
        f8 = startFrequency + offset0 + offset7 + offset6 + offset5 + offset4 + offset3 + offset2 + offset1;
      }
      // LTE constraints cut end frequencies
      if (channel == 49 || channel == 54 || channel == 56) {
        switch (channel) {
          case '49':
            // because LTE constraints only lower 4 MHz usable
            hideFrequenciesAbove('698');
            break;
          case '54':
          // because LTE constraints only upper 5 MHz usable
            hideFrequenciesAbove('742');
            break;
          case '56':
          // because LTE constraints only lower 3 MHz usable
            hideFrequenciesAbove('753');
            break;
        }
      }
      // write it with a dot and 3 fixed decimal places
      f1 = f1.toFixed(3);
      f2 = f2.toFixed(3);
      f3 = f3.toFixed(3);
      f4 = f4.toFixed(3);
      f5 = f5.toFixed(3);
      f6 = f6.toFixed(3);
      f7 = f7.toFixed(3);
      f8 = f8.toFixed(3);
      // write all 8 frequencies into the table
      document.getElementById("f1").innerText = f1 + " MHz";
      document.getElementById("f2").innerText = f2 + " MHz";
      document.getElementById("f3").innerText = f3 + " MHz";
      document.getElementById("f4").innerText = f4 + " MHz";
      document.getElementById("f5").innerText = f5 + " MHz";
      document.getElementById("f6").innerText = f6 + " MHz";
      document.getElementById("f7").innerText = f7 + " MHz";
      document.getElementById("f8").innerText = f8 + " MHz";
      // add remarks
      // Handgeräte mit Frequenzen zwischen 823 - 826 MHz dürfen nur mit reduzierter Sendeleistung von maximal 82 mW betrieben werden
      if (channel == 65) {
        document.getElementById("n1").innerHTML = "<small><sup><a href='#footnote1'>1</a></sup></small>";
        document.getElementById("n2").innerHTML = "<small><sup><a href='#footnote1'>1</a></sup></small>";
        if (direction == "up") {
          document.getElementById("n3").innerHTML = "<small><sup><a href='#footnote1'>1</a></sup></small>";
        }
      }
    }
    
    function hideFrequenciesAbove(endFrequency) {
      // console.log('End frequency: ' + endFrequency);
      for (var i = 1; i < 9; i++) {
        // console.log(window["f" + i]);
        if (window["f" + i] > endFrequency) {
          document.getElementById("rf" + i).style.display = "none";
        }
      }
    }
    
    function resetTable() {
      // show all 8 frequencies again
      var r1 = document.getElementById("rf1");
      r1.style.display = "table-row";
      var r2 = document.getElementById("rf2");
      r2.style.display = "table-row";
      var r3 = document.getElementById("rf3");
      r3.style.display = "table-row";
      var r4 = document.getElementById("rf4");
      r4.style.display = "table-row";
      var r5 = document.getElementById("rf5");
      r5.style.display = "table-row";
      var r6 = document.getElementById("rf6");
      r6.style.display = "table-row";
      var r7 = document.getElementById("rf7");
      r7.style.display = "table-row";
      var r8 = document.getElementById("rf8");
      r8.style.display = "table-row";
      // remove all footnotes
      document.getElementById("n1").innerHTML = "";
      document.getElementById("n2").innerHTML = "";
      document.getElementById("n3").innerHTML = "";
      document.getElementById("n4").innerHTML = "";
      document.getElementById("n5").innerHTML = "";
      document.getElementById("n6").innerHTML = "";
      document.getElementById("n7").innerHTML = "";
      document.getElementById("n8").innerHTML = "";
    }
    
    function enableCellPopup() {
      var cells = document.querySelectorAll("#f1, #f2, #f3, #f4, #f5, #f6, #f7, #f8");
      for (var i = 0; i < cells.length; i++) {
        cells[i].addEventListener("click", function() {
          var text = this.innerText;
          text = text.replace(" MHz","");
          if (text != "") {
            pushDialog(text);
          }
        });
      }
    }
    
    function pushDialog(text) {
      var dialogText = document.getElementById('dialogText');
      dialogText.innerText = text;
      dialog.showModal();
    }
    
    function copyTable() {
      var urlField = document.getElementById("table");
      var range = document.createRange();
      range.selectNode(urlField);
      window.getSelection().addRange(range);
      document.execCommand('copy');
      window.getSelection().removeAllRanges();
    }
    
    function setCookie(cname, cvalue, exdays) {
      var d = new Date();
      d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
      var expires = "expires=" + d.toGMTString();
      document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
    }
    
    function getCookie(cname) {
      var name = cname + "=";
      var decodedCookie = decodeURIComponent(document.cookie);
      var ca = decodedCookie.split(';');
      for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
          c = c.substring(1);
        }
        if (c.indexOf(name) == 0) {
          return c.substring(name.length, c.length);
        }
      }
      return "";
    }
    
    document.addEventListener('DOMContentLoaded', function() {
      enableCellPopup();
      calculateFreqs();
    });