Improved f-slider responsiveness. Cleaned up timer_handler code.

pull/2/head
miguel 2021-10-26 23:50:28 +11:00
rodzic 3cdde1170d
commit 8cf3b24d59
1 zmienionych plików z 44 dodań i 46 usunięć

Wyświetl plik

@ -59,7 +59,7 @@
</div> </div>
<div class="sliders"> <div class="sliders">
<label for="frequency_slider">f:</label> <label for="frequency_slider">f:</label>
<input type="range" id="frequency_slider" min="0.0" max="4.0" value="2.0" step="1.0"> <input type="range" id="frequency_slider" min="0.0" max="4.0" value="2.0" step="0.05">
</div> </div>
</div> </div>
<div id="notes" class="notes"> <div id="notes" class="notes">
@ -126,6 +126,8 @@
</ul> </ul>
<br> <br>
<b><u>Change history:</u></b><br> <b><u>Change history:</u></b><br>
<b>[26-Oct-21]</b> <br>
* Increased resolution of the f-slider, making it smoothly regenerate the dataset.
<b>[24-Oct-21]</b> <br> <b>[24-Oct-21]</b> <br>
* Fixed frozen f-slider issue that was occurring in some browsers running on Windows.<br> * Fixed frozen f-slider issue that was occurring in some browsers running on Windows.<br>
* Increased contrast for experimental Ceff and SRF calculations, based on David Knight's (G3YNH) paper. * Increased contrast for experimental Ceff and SRF calculations, based on David Knight's (G3YNH) paper.
@ -494,7 +496,7 @@
frequencies = []; frequencies = [];
//for(var i = 4.0; i <= 8.0; i+=0.01) { //for(var i = 4.0; i <= 8.0; i+=0.01) {
var f = 1.0 * frequency_slider.value; var f = 1.0 * frequency_slider.value;
for(var i = 4.00+f; i <= 5.52+f; i+=0.01) { for(var i = Math.floor(4.00+f); i <= 5.52+f; i+=0.01) {
frequencies.push(10.0**i); frequencies.push(10.0**i);
} }
} }
@ -833,71 +835,67 @@
var conductor_diameter_timer_handler = 0; var conductor_diameter_timer_handler = 0;
conductor_diameter_slider.oninput = function() { conductor_diameter_slider.oninput = function() {
recalculate(); // Check if we have exceeded the maximum turns:
if(conductor_diameter_timer_handler == 0) { const max_N = getMaxTurnsFrom();
conductor_diameter_timer_handler = setTimeout(function(){ if(max_N > toroid.N) {
updateChart(); loop_turns_slider.value = (toroid.N * 100.0) / max_N;
conductor_diameter_timer_handler = 0;
}, emphasis_delay);
} else {
clearTimeout(conductor_diameter_timer_handler);
conductor_diameter_timer_handler = setTimeout(function(){
updateChart();
conductor_diameter_timer_handler = 0;
}, emphasis_delay);
} }
recalculate();
if(conductor_diameter_timer_handler != 0) {
clearTimeout(conductor_diameter_timer_handler);
}
conductor_diameter_timer_handler = setTimeout(function(){
updateChart();
conductor_diameter_timer_handler = 0;
}, emphasis_delay);
} }
var loop_turns_timer_handler = 0; var loop_turns_timer_handler = 0;
loop_turns_slider.oninput = function() { loop_turns_slider.oninput = function() {
recalculate(); recalculate();
if(loop_turns_timer_handler == 0) {
loop_turns_timer_handler = setTimeout(function(){ if(loop_turns_timer_handler != 0) {
updateChart();
loop_turns_timer_handler = 0;
}, emphasis_delay);
} else {
clearTimeout(loop_turns_timer_handler); clearTimeout(loop_turns_timer_handler);
loop_turns_timer_handler = setTimeout(function(){ }
updateChart();
loop_turns_timer_handler = 0; loop_turns_timer_handler = setTimeout(function(){
}, emphasis_delay); updateChart();
} loop_turns_timer_handler = 0;
}, emphasis_delay);
generateTurnsRatioLUT(loop_turns_slider.value);
} }
var frequency_timer_handler = 0; var frequency_timer_handler = 0;
frequency_slider.oninput = function() { frequency_slider.oninput = function() {
updateFrequencies(); updateFrequencies();
recalculate(); recalculate();
if(frequency_timer_handler == 0) {
frequency_timer_handler = setTimeout(function(){ if(frequency_timer_handler != 0) {
updateChart();
frequency_timer_handler = 0;
}, emphasis_delay);
} else {
clearTimeout(frequency_timer_handler); clearTimeout(frequency_timer_handler);
frequency_timer_handler = setTimeout(function(){
updateChart();
frequency_timer_handler = 0;
}, emphasis_delay);
} }
frequency_timer_handler = setTimeout(function(){
updateChart();
frequency_timer_handler = 0;
}, emphasis_delay);
} }
var voltage_timer_handler = 0; var voltage_timer_handler = 0;
voltage_slider.oninput = function() { voltage_slider.oninput = function() {
recalculate(); recalculate();
if(voltage_timer_handler == 0) {
voltage_timer_handler = setTimeout(function(){ if(voltage_timer_handler != 0) {
updateChart();
voltage_timer_handler = 0;
}, emphasis_delay);
} else {
clearTimeout(voltage_timer_handler); clearTimeout(voltage_timer_handler);
voltage_timer_handler = setTimeout(function(){ }
updateChart();
voltage_timer_handler = 0; voltage_timer_handler = setTimeout(function(){
}, emphasis_delay); updateChart();
} voltage_timer_handler = 0;
}, emphasis_delay);
} }
window.onresize = function() { window.onresize = function() {