@@ -26,6 +26,8 @@ var // inefficient; copied from grapher.js
26
26
var that = this ;
27
27
28
28
var mouseFrequency = null ;
29
+ var analyserZoomX = 1.0 ; /* 100% */
30
+ var analyserZoomY = 1.0 ; /* 100% */
29
31
30
32
var MAX_ANALYSER_LENGTH = 300 * 1000 * 1000 ; // 5min
31
33
var analyserTimeRange = {
84
86
} ;
85
87
86
88
var initialised = false ;
87
- var zoom = 1.0 ;
89
+ // var zoom = 1.0;
88
90
var analyserFieldName ; // Name of the field being analysed
89
91
90
92
var isFullscreen = false ;
@@ -128,7 +130,7 @@ try {
128
130
}
129
131
130
132
this . setGraphZoom = function ( newZoom ) {
131
- zoom = 1.0 / newZoom * 100 ;
133
+ // zoom = 1.0 / newZoom * 100;
132
134
}
133
135
134
136
function dataLoad ( ) {
@@ -193,11 +195,12 @@ try {
193
195
var LEFT = canvasCtx . canvas . left ;
194
196
var TOP = canvasCtx . canvas . top ;
195
197
196
- var PLOTTED_BUFFER_LENGTH = fftData . fftLength ;
198
+ var PLOTTED_BUFFER_LENGTH = fftData . fftLength / ( analyserZoomX ) ;
199
+ var PLOTTED_BLACKBOX_RATE = blackBoxRate / ( analyserZoomX ) ;
197
200
198
201
canvasCtx . translate ( LEFT , TOP ) ;
199
202
200
- var gradient = canvasCtx . createLinearGradient ( 0 , 0 , 0 , ( HEIGHT ) ) ;
203
+ var gradient = canvasCtx . createLinearGradient ( 0 , 0 , 0 , ( HEIGHT + ( ( isFullscreen ) ? MARGIN : 0 ) ) ) ;
201
204
if ( isFullscreen ) {
202
205
gradient . addColorStop ( 1 , 'rgba(0,0,0,0.9)' ) ;
203
206
gradient . addColorStop ( 0 , 'rgba(0,0,0,0.7)' ) ;
@@ -207,7 +210,7 @@ try {
207
210
208
211
}
209
212
canvasCtx . fillStyle = gradient ; //'rgba(255, 255, 255, .25)'; /* white */
210
- canvasCtx . fillRect ( 0 , 0 , WIDTH , HEIGHT ) ;
213
+ canvasCtx . fillRect ( 0 , 0 , WIDTH , HEIGHT + ( ( isFullscreen ) ? MARGIN : 0 ) ) ;
211
214
212
215
var barWidth = ( WIDTH / ( PLOTTED_BUFFER_LENGTH / 10 ) ) - 1 ;
213
216
var barHeight ;
@@ -220,7 +223,7 @@ try {
220
223
gradient . addColorStop ( 1 , 'rgba(255,128,128,1.0)' ) ;
221
224
222
225
for ( var i = 0 ; i < PLOTTED_BUFFER_LENGTH ; i += 10 ) {
223
- barHeight = ( fftData . fftOutput [ i ] / zoom * HEIGHT ) ;
226
+ barHeight = ( fftData . fftOutput [ i ] / ( analyserZoomY * 100 ) * HEIGHT ) ;
224
227
225
228
canvasCtx . fillStyle = gradient ; //'rgba(0,255,0,0.3)'; //green
226
229
canvasCtx . fillRect ( x , ( HEIGHT ) - barHeight , barWidth , barHeight ) ;
@@ -229,47 +232,45 @@ try {
229
232
}
230
233
231
234
drawAxisLabel ( analyserFieldName , WIDTH - 4 , HEIGHT - 6 , 'right' ) ;
232
- drawGridLines ( blackBoxRate , LEFT , TOP , WIDTH , HEIGHT , MARGIN ) ;
233
-
234
-
235
+ drawGridLines ( PLOTTED_BLACKBOX_RATE , LEFT , TOP , WIDTH , HEIGHT , MARGIN ) ;
235
236
236
237
var isYawField = ( analyserFieldName . match ( / ( .* y a w .* ) / i) != null ) ;
237
238
var offset = 0 ;
238
- if ( mouseFrequency != null ) drawMarkerLine ( mouseFrequency , blackBoxRate , '' , WIDTH , HEIGHT , ( 15 * offset ++ ) + MARGIN , "rgba(0,255,0,0.50)" , 3 ) ;
239
+ if ( mouseFrequency != null ) drawMarkerLine ( mouseFrequency , PLOTTED_BLACKBOX_RATE , '' , WIDTH , HEIGHT , ( 15 * offset ++ ) + MARGIN , "rgba(0,255,0,0.50)" , 3 ) ;
239
240
offset ++ ; // make some space!
240
- if ( flightLog . getSysConfig ( ) . gyro_lowpass_hz != null ) drawMarkerLine ( flightLog . getSysConfig ( ) . gyro_lowpass_hz / 100.0 , blackBoxRate , 'GYRO LPF cutoff' , WIDTH , HEIGHT , ( 15 * offset ++ ) + MARGIN , "rgba(128,255,128,0.50)" ) ;
241
+ if ( flightLog . getSysConfig ( ) . gyro_lowpass_hz != null ) drawMarkerLine ( flightLog . getSysConfig ( ) . gyro_lowpass_hz / 100.0 , PLOTTED_BLACKBOX_RATE , 'GYRO LPF cutoff' , WIDTH , HEIGHT , ( 15 * offset ++ ) + MARGIN , "rgba(128,255,128,0.50)" ) ;
241
242
if ( flightLog . getSysConfig ( ) . gyro_notch_hz != null ) {
242
243
if ( flightLog . getSysConfig ( ) . gyro_notch_hz > 0 ) {
243
244
var gradient = canvasCtx . createLinearGradient ( 0 , 0 , 0 , ( HEIGHT ) ) ;
244
245
gradient . addColorStop ( 1 , 'rgba(128,255,128,0.10)' ) ;
245
246
gradient . addColorStop ( 0 , 'rgba(128,255,128,0.35)' ) ;
246
- drawMarkerLine ( flightLog . getSysConfig ( ) . gyro_notch_hz / 100.0 , blackBoxRate , null , WIDTH , HEIGHT , ( 15 * offset ) + MARGIN , gradient , ( flightLog . getSysConfig ( ) . gyro_notch_hz - flightLog . getSysConfig ( ) . gyro_notch_cutoff ) / 100.0 ) ;
247
- drawMarkerLine ( flightLog . getSysConfig ( ) . gyro_notch_hz / 100.0 , blackBoxRate , 'GYRO notch center' , WIDTH , HEIGHT , ( 15 * offset ++ ) + MARGIN , "rgba(128,255,128,0.50)" ) ; // highlight the center
247
+ drawMarkerLine ( flightLog . getSysConfig ( ) . gyro_notch_hz / 100.0 , PLOTTED_BLACKBOX_RATE , null , WIDTH , HEIGHT , ( 15 * offset ) + MARGIN , gradient , ( flightLog . getSysConfig ( ) . gyro_notch_hz - flightLog . getSysConfig ( ) . gyro_notch_cutoff ) / 100.0 ) ;
248
+ drawMarkerLine ( flightLog . getSysConfig ( ) . gyro_notch_hz / 100.0 , PLOTTED_BLACKBOX_RATE , 'GYRO notch center' , WIDTH , HEIGHT , ( 15 * offset ++ ) + MARGIN , "rgba(128,255,128,0.50)" ) ; // highlight the center
248
249
if ( flightLog . getSysConfig ( ) . gyro_notch_cutoff != null ) {
249
- drawMarkerLine ( flightLog . getSysConfig ( ) . gyro_notch_cutoff / 100.0 , blackBoxRate , 'GYRO notch cutoff' , WIDTH , HEIGHT , ( 15 * offset ++ ) + MARGIN , "rgba(128,255,128,0.50)" ) ;
250
+ drawMarkerLine ( flightLog . getSysConfig ( ) . gyro_notch_cutoff / 100.0 , PLOTTED_BLACKBOX_RATE , 'GYRO notch cutoff' , WIDTH , HEIGHT , ( 15 * offset ++ ) + MARGIN , "rgba(128,255,128,0.50)" ) ;
250
251
}
251
252
}
252
253
}
253
254
offset ++ ; // make some space!
254
255
if ( isYawField ) {
255
- if ( flightLog . getSysConfig ( ) . yaw_lpf_hz != null ) drawMarkerLine ( flightLog . getSysConfig ( ) . yaw_lpf_hz / 100.0 , blackBoxRate , 'YAW LPF cutoff' , WIDTH , HEIGHT , ( 15 * offset ++ ) + MARGIN ) ;
256
+ if ( flightLog . getSysConfig ( ) . yaw_lpf_hz != null ) drawMarkerLine ( flightLog . getSysConfig ( ) . yaw_lpf_hz / 100.0 , PLOTTED_BLACKBOX_RATE , 'YAW LPF cutoff' , WIDTH , HEIGHT , ( 15 * offset ++ ) + MARGIN ) ;
256
257
} else {
257
- if ( flightLog . getSysConfig ( ) . dterm_lpf_hz != null ) drawMarkerLine ( flightLog . getSysConfig ( ) . dterm_lpf_hz / 100.0 , blackBoxRate , 'D-TERM LPF cutoff' , WIDTH , HEIGHT , ( 15 * offset ++ ) + MARGIN ) ;
258
+ if ( flightLog . getSysConfig ( ) . dterm_lpf_hz != null ) drawMarkerLine ( flightLog . getSysConfig ( ) . dterm_lpf_hz / 100.0 , PLOTTED_BLACKBOX_RATE , 'D-TERM LPF cutoff' , WIDTH , HEIGHT , ( 15 * offset ++ ) + MARGIN ) ;
258
259
if ( flightLog . getSysConfig ( ) . dterm_notch_hz != null ) {
259
260
if ( flightLog . getSysConfig ( ) . dterm_notch_hz > 0 ) {
260
261
var gradient = canvasCtx . createLinearGradient ( 0 , 0 , 0 , ( HEIGHT ) ) ;
261
262
gradient . addColorStop ( 1 , 'rgba(128,128,255,0.10)' ) ;
262
263
gradient . addColorStop ( 0 , 'rgba(128,128,255,0.35)' ) ;
263
- drawMarkerLine ( flightLog . getSysConfig ( ) . dterm_notch_hz / 100.0 , blackBoxRate , null , WIDTH , HEIGHT , ( 15 * offset ) + MARGIN , gradient , ( flightLog . getSysConfig ( ) . dterm_notch_hz - flightLog . getSysConfig ( ) . dterm_notch_cutoff ) / 100.0 ) ;
264
- drawMarkerLine ( flightLog . getSysConfig ( ) . dterm_notch_hz / 100.0 , blackBoxRate , 'D-TERM notch center' , WIDTH , HEIGHT , ( 15 * offset ++ ) + MARGIN ) ; // highlight the center
264
+ drawMarkerLine ( flightLog . getSysConfig ( ) . dterm_notch_hz / 100.0 , PLOTTED_BLACKBOX_RATE , null , WIDTH , HEIGHT , ( 15 * offset ) + MARGIN , gradient , ( flightLog . getSysConfig ( ) . dterm_notch_hz - flightLog . getSysConfig ( ) . dterm_notch_cutoff ) / 100.0 ) ;
265
+ drawMarkerLine ( flightLog . getSysConfig ( ) . dterm_notch_hz / 100.0 , PLOTTED_BLACKBOX_RATE , 'D-TERM notch center' , WIDTH , HEIGHT , ( 15 * offset ++ ) + MARGIN ) ; // highlight the center
265
266
if ( flightLog . getSysConfig ( ) . dterm_notch_cutoff != null ) {
266
- drawMarkerLine ( flightLog . getSysConfig ( ) . dterm_notch_cutoff / 100.0 , blackBoxRate , 'D-TERM notch cutoff' , WIDTH , HEIGHT , ( 15 * offset ++ ) + MARGIN ) ;
267
+ drawMarkerLine ( flightLog . getSysConfig ( ) . dterm_notch_cutoff / 100.0 , PLOTTED_BLACKBOX_RATE , 'D-TERM notch cutoff' , WIDTH , HEIGHT , ( 15 * offset ++ ) + MARGIN ) ;
267
268
}
268
269
}
269
270
}
270
271
}
271
272
offset ++ ; // make some space!
272
- drawMarkerLine ( fftData . maxNoiseIdx , blackBoxRate , 'Max motor noise' , WIDTH , HEIGHT , ( 15 * offset ++ ) + MARGIN , "rgba(255,0,0,0.50)" , 3 ) ;
273
+ drawMarkerLine ( fftData . maxNoiseIdx , PLOTTED_BLACKBOX_RATE , 'Max motor noise' , WIDTH , HEIGHT , ( 15 * offset ++ ) + MARGIN , "rgba(255,0,0,0.50)" , 3 ) ;
273
274
274
275
canvasCtx . restore ( ) ;
275
276
}
@@ -368,6 +369,19 @@ try {
368
369
trackFrequency ( e , that ) ;
369
370
} ) ;
370
371
372
+ /* add zoom controls */
373
+ $ ( "#analyserZoomX" ) . on ( 'input' ,
374
+ function ( ) {
375
+ analyserZoomX = ( $ ( "#analyserZoomX" ) . val ( ) / 100 ) ;
376
+ that . refresh ( ) ;
377
+ }
378
+ ) ; $ ( "#analyserZoomX" ) . val ( 100 ) ;
379
+ $ ( "#analyserZoomY" ) . on ( 'input' ,
380
+ function ( ) {
381
+ analyserZoomY = 1 / ( $ ( "#analyserZoomY" ) . val ( ) / 100 ) ;
382
+ that . refresh ( ) ;
383
+ }
384
+ ) ; $ ( "#analyserZoomY" ) . val ( 100 ) ;
371
385
372
386
} catch ( e ) {
373
387
console . log ( 'Failed to create analyser... error:' + e ) ;
@@ -383,7 +397,7 @@ try {
383
397
var lastFrequency ;
384
398
if ( e . shiftKey ) {
385
399
var rect = analyserCanvas . getBoundingClientRect ( ) ;
386
- mouseFrequency = ( ( e . clientX - rect . left ) / analyserCanvas . width ) * ( blackBoxRate / 2 ) ;
400
+ mouseFrequency = ( ( e . clientX - rect . left ) / analyserCanvas . width ) * ( ( blackBoxRate / analyserZoomX ) / 2 ) ;
387
401
if ( lastFrequency != mouseFrequency ) {
388
402
lastFrequency = mouseFrequency ;
389
403
if ( analyser ) analyser . refresh ( ) ;
0 commit comments