From fc7188145b1a828c22e9e315480cc99efa5e0f9d Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Fri, 8 May 2020 21:18:03 +0200 Subject: [PATCH] use jquery to store progressbar objects --- htdocs/index.html | 12 ++++++------ htdocs/lib/ProgressBar.js | 31 +++++++++++++++++++++++++++---- htdocs/openwebrx.js | 30 ++++++++++-------------------- 3 files changed, 43 insertions(+), 30 deletions(-) diff --git a/htdocs/index.html b/htdocs/index.html index 6c1def2..9f899ae 100644 --- a/htdocs/index.html +++ b/htdocs/index.html @@ -134,12 +134,12 @@
-
Audio buffer [0 ms]
-
Audio output [0 sps]
-
Audio stream [0 kbps]
-
Network usage [0 kbps]
-
Server CPU [0%]
-
Clients [1]
+
Audio buffer [0 ms]
+
Audio output [0 sps]
+
Audio stream [0 kbps]
+
Network usage [0 kbps]
+
Server CPU [0%]
+
Clients [1]
diff --git a/htdocs/lib/ProgressBar.js b/htdocs/lib/ProgressBar.js index 9d0736d..0019dc6 100644 --- a/htdocs/lib/ProgressBar.js +++ b/htdocs/lib/ProgressBar.js @@ -25,13 +25,16 @@ ProgressBar.prototype.setOver = function(over) { this.$innerBar.css('backgroundColor', (over) ? "#ff6262" : "#00aba6"); }; -AudioBufferProgressBar = function(el, sampleRate) { +AudioBufferProgressBar = function(el) { ProgressBar.call(this, el); - this.sampleRate = sampleRate; }; AudioBufferProgressBar.prototype = new ProgressBar(); +AudioBufferProgressBar.prototype.setSampleRate = function(sampleRate) { + this.sampleRate = sampleRate; +}; + AudioBufferProgressBar.prototype.setBuffersize = function(buffersize) { var audio_buffer_value = buffersize / this.sampleRate; var overrun = audio_buffer_value > audio_buffer_maximal_length_sec; @@ -70,12 +73,15 @@ AudioSpeedProgressBar.prototype.setSpeed = function(speed) { AudioOutputProgressBar = function(el, sampleRate) { ProgressBar.call(this, el); - this.maxRate = sampleRate * 1.25; - this.minRate = sampleRate * .25; }; AudioOutputProgressBar.prototype = new ProgressBar(); +AudioOutputProgressBar.prototype.setSampleRate = function(sampleRate) { + this.maxRate = sampleRate * 1.25; + this.minRate = sampleRate * .25; +}; + AudioOutputProgressBar.prototype.setAudioRate = function(audioRate) { this.set(audioRate / this.maxRate, "Audio output [" + (audioRate / 1000).toFixed(1) + " ksps]", audioRate > this.maxRate || audioRate < this.minRate); }; @@ -111,3 +117,20 @@ CpuProgressBar.prototype = new ProgressBar(); CpuProgressBar.prototype.setUsage = function(usage) { this.set(usage, "Server CPU [" + Math.round(usage * 100) + "%]", usage > .85); }; + +ProgressBar.types = { + cpu: CpuProgressBar, + audiobuffer: AudioBufferProgressBar, + audiospeed: AudioSpeedProgressBar, + audiooutput: AudioOutputProgressBar, + clients: ClientsProgressBar, + networkspeed: NetworkSpeedProgressBar +} + +$.fn.progressbar = function() { + if (!this.data('progressbar')) { + var constructor = ProgressBar.types[this.data('type')] || ProgressBar; + this.data('progressbar', new constructor(this)); + } + return this.data('progressbar'); +}; diff --git a/htdocs/openwebrx.js b/htdocs/openwebrx.js index 7b32731..4238ad6 100644 --- a/htdocs/openwebrx.js +++ b/htdocs/openwebrx.js @@ -739,7 +739,7 @@ function on_ws_recv(evt) { divlog("Audio stream is " + ((audio_compression === "adpcm") ? "compressed" : "uncompressed") + "."); fft_compression = config['fft_compression']; divlog("FFT stream is " + ((fft_compression === "adpcm") ? "compressed" : "uncompressed") + "."); - clientProgressBar.setMaxClients(config['max_clients']); + $('#openwebrx-bar-clients').progressbar().setMaxClients(config['max_clients']); waterfall_init(); var demodulatorPanel = $('#openwebrx-panel-receiver').demodulatorPanel(); @@ -773,10 +773,10 @@ function on_ws_recv(evt) { setSmeterAbsoluteValue(smeter_level); break; case "cpuusage": - cpuProgressBar.setUsage(json['value']); + $('#openwebrx-bar-server-cpu').progressbar().setUsage(json['value']); break; case "clients": - clientProgressBar.setClients(json['value']); + $('#openwebrx-bar-clients').progressbar().setClients(json['value']); break; case "profiles": var listbox = e("openwebrx-sdr-profiles-listbox"); @@ -1121,7 +1121,7 @@ function on_ws_opened() { if (!networkSpeedMeasurement) { networkSpeedMeasurement = new Measurement(); networkSpeedMeasurement.report(60000, 1000, function(rate){ - networkSpeedProgressBar.setSpeed(rate); + $('#openwebrx-bar-network-speed').progressbar().setSpeed(rate); }); } else { networkSpeedMeasurement.reset(); @@ -1352,33 +1352,23 @@ function init_header() { }); } -var audioBufferProgressBar; -var networkSpeedProgressBar; -var audioSpeedProgressBar; -var audioOutputProgressBar; -var clientProgressBar; -var cpuProgressBar; - function initProgressBars() { - audioBufferProgressBar = new AudioBufferProgressBar($('#openwebrx-bar-audio-buffer'), audioEngine.getSampleRate()); - networkSpeedProgressBar = new NetworkSpeedProgressBar($('#openwebrx-bar-network-speed')); - audioSpeedProgressBar = new AudioSpeedProgressBar($('#openwebrx-bar-audio-speed')); - audioOutputProgressBar = new AudioOutputProgressBar($('#openwebrx-bar-audio-output'), audioEngine.getSampleRate()); - clientProgressBar = new ClientsProgressBar($('#openwebrx-bar-clients')); - cpuProgressBar = new CpuProgressBar($('#openwebrx-bar-server-cpu')); + $('#openwebrx-bar-audio-buffer, #openwebrx-bar-audio-output').each(function() { + $(this).progressbar().setSampleRate(audioEngine.getSampleRate()); + }); } function audioReporter(stats) { if (typeof(stats.buffersize) !== 'undefined') { - audioBufferProgressBar.setBuffersize(stats.buffersize); + $('#openwebrx-bar-audio-buffer').progressbar().setBuffersize(stats.buffersize); } if (typeof(stats.audioByteRate) !== 'undefined') { - audioSpeedProgressBar.setSpeed(stats.audioByteRate * 8); + $('#openwebrx-bar-audio-speed').progressbar().setSpeed(stats.audioByteRate * 8); } if (typeof(stats.audioRate) !== 'undefined') { - audioOutputProgressBar.setAudioRate(stats.audioRate); + $('#openwebrx-bar-audio-output').progressbar().setAudioRate(stats.audioRate); } }