Select Git revision
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();
});