@@ -3290,9 +3290,13 @@ function refreshSingleNew(serial) {
3290
3290
}
3291
3291
3292
3292
ajax_inprogress_single_new = true ;
3293
-
3294
- var data_str = "duration=3d&payload_callsign=" + serial ;
3295
-
3293
+
3294
+ // Only request backlog data from the current time period.
3295
+ var mode = wvar . mode . toLowerCase ( ) ;
3296
+ mode = ( mode == "position" ) ? "latest" : mode . replace ( / / g, "" ) ;
3297
+ var data_str = "duration=" + mode + "&payload_callsign=" + serial ;
3298
+
3299
+
3296
3300
ajax_positions_single_new = $ . ajax ( {
3297
3301
type : "GET" ,
3298
3302
url : newdata_url ,
@@ -3328,6 +3332,12 @@ function liveData() {
3328
3332
client . subscribe ( "amateur/#" ) ;
3329
3333
clientTopic = "amateur/#" ;
3330
3334
}
3335
+
3336
+ // Also subscribe to amateur-listener data, for listener and chase-car telemetry.
3337
+ // To revert listener-via-websockets change, comment out this line,
3338
+ // and un-comment the 'Disable periodical listener refresh' lines further below.
3339
+ client . subscribe ( "amateur-listener/#" ) ;
3340
+
3331
3341
clientConnected = true ;
3332
3342
$ ( "#stText" ) . text ( "websocket |" ) ;
3333
3343
} ;
@@ -3368,24 +3378,51 @@ function liveData() {
3368
3378
var dateNow = new Date ( ) . getTime ( ) ;
3369
3379
try {
3370
3380
if ( clientActive ) {
3371
- var frame = [ { "1" :JSON . parse ( message . payloadString . toString ( ) ) } ] ;
3372
- if ( frame . length == null ) {
3373
- var tempDate = new Date ( frame . time_received ) . getTime ( ) ;
3374
- } else {
3375
- var tempDate = new Date ( frame [ frame . length - 1 ] [ "1" ] . time_received ) . getTime ( )
3376
- }
3377
- if ( ( dateNow - tempDate ) < 30000 ) {
3378
- var test = formatData ( frame ) ;
3379
- if ( clientActive ) {
3380
- live_data_buffer . positions . position . push . apply ( live_data_buffer . positions . position , test . positions . position ) ;
3381
+ if ( message . topic . startsWith ( "amateur-listener" ) ) {
3382
+ // Message is Listener / Chase-Car information
3383
+ var frame = JSON . parse ( message . payloadString . toString ( ) ) ;
3384
+ // We need to convert this into the right format for feeding into the receiver / chase car update functions.
3385
+ // Probably a cleaner way of doing this.
3386
+ // Format needs to be {callsign : {timestamp: frame}}
3387
+ var formatted_frame = { } ;
3388
+ formatted_frame [ frame . uploader_callsign ] = { } ;
3389
+ formatted_frame [ frame . uploader_callsign ] [ frame . ts ] = frame ;
3390
+
3391
+ // Send frames with mobile present and true onto the chase-car updater,
3392
+ // otherwise, send them to the receiver updater.
3393
+ // Do this on a per-update bases, since listener / chase car updates shouldn't
3394
+ // be as frequent.
3395
+ if ( frame . hasOwnProperty ( 'mobile' ) ) {
3396
+ if ( frame . mobile == true ) {
3397
+ updateChase ( formatted_frame ) ;
3398
+ } else {
3399
+ updateReceivers ( formatted_frame ) ;
3400
+ }
3401
+ } else {
3402
+ updateReceivers ( formatted_frame ) ;
3381
3403
}
3382
- $ ( "#stTimer" ) . attr ( "data-timestamp" , dateNow ) ;
3383
- $ ( "#stText" ) . text ( "websocket |" ) ;
3384
- } else if ( ( dateNow - new Date ( frame [ 0 ] [ "1" ] . time_received ) . getTime ( ) ) > 150000 ) {
3385
- $ ( "#stText" ) . text ( "error |" ) ;
3386
- refresh ( ) ;
3404
+
3387
3405
} else {
3388
- $ ( "#stText" ) . text ( "error |" ) ;
3406
+ // Message is payload telemetry
3407
+ var frame = [ { "1" :JSON . parse ( message . payloadString . toString ( ) ) } ] ;
3408
+ if ( frame . length == null ) {
3409
+ var tempDate = new Date ( frame . time_received ) . getTime ( ) ;
3410
+ } else {
3411
+ var tempDate = new Date ( frame [ frame . length - 1 ] [ "1" ] . time_received ) . getTime ( )
3412
+ }
3413
+ if ( ( dateNow - tempDate ) < 30000 ) {
3414
+ var test = formatData ( frame ) ;
3415
+ if ( clientActive ) {
3416
+ live_data_buffer . positions . position . push . apply ( live_data_buffer . positions . position , test . positions . position ) ;
3417
+ }
3418
+ $ ( "#stTimer" ) . attr ( "data-timestamp" , dateNow ) ;
3419
+ $ ( "#stText" ) . text ( "websocket |" ) ;
3420
+ } else if ( ( dateNow - new Date ( frame [ 0 ] [ "1" ] . time_received ) . getTime ( ) ) > 150000 ) {
3421
+ $ ( "#stText" ) . text ( "error |" ) ;
3422
+ refresh ( ) ;
3423
+ } else {
3424
+ $ ( "#stText" ) . text ( "error |" ) ;
3425
+ }
3389
3426
}
3390
3427
}
3391
3428
}
@@ -3436,7 +3473,8 @@ function refreshReceivers() {
3436
3473
updateReceivers ( response ) ;
3437
3474
} ,
3438
3475
complete : function ( request , textStatus ) {
3439
- periodical_receivers = setTimeout ( function ( ) { refreshReceivers ( false ) } , 60 * 10 * 1000 ) ;
3476
+ // Disable periodical listener refresh - this data now comes via websockets.
3477
+ //periodical_receivers = setTimeout(function() {refreshReceivers(false)}, 60 * 10 * 1000);
3440
3478
if ( ! offline . get ( "opt_hide_chase" ) ) {
3441
3479
refreshNewReceivers ( true ) ;
3442
3480
}
@@ -3470,7 +3508,8 @@ function refreshNewReceivers(initial, serial) {
3470
3508
} ,
3471
3509
complete : function ( request , textStatus ) {
3472
3510
if ( typeof serial === 'undefined' ) {
3473
- periodical_listeners = setTimeout ( function ( ) { refreshNewReceivers ( false ) } , 60 * 1000 ) ;
3511
+ // Disable periodical listener refresh - this data now comes via websockets.
3512
+ //periodical_listeners = setTimeout(function() {refreshNewReceivers(false)}, 60 * 1000);
3474
3513
}
3475
3514
}
3476
3515
} ) ;
@@ -3497,6 +3536,7 @@ function refreshPredictions() {
3497
3536
} ,
3498
3537
complete : function ( request , textStatus ) {
3499
3538
clearTimeout ( periodical_predictions ) ;
3539
+ // TODO - Switch this to websockets as well.
3500
3540
periodical_predictions = setTimeout ( refreshPredictions , 60 * 1000 ) ;
3501
3541
}
3502
3542
} ) ;
0 commit comments