@@ -2619,6 +2619,98 @@ function graphAddPosition(vcallsign, new_data) {
26192619 }
26202620}
26212621
2622+ function formatData ( data ) {
2623+ var response = { } ;
2624+ response . positions = { } ;
2625+ var dataTemp = [ ] ;
2626+ for ( var i = data . length - 1 ; i >= 0 ; i -- ) {
2627+ if ( data [ i ] . hasOwnProperty ( 'subtype' ) ) {
2628+ if ( data [ i ] . subtype != "SondehubV1" ) {
2629+ var dataTempEntry = { } ;
2630+ var station = data [ i ] . uploader_callsign ;
2631+ dataTempEntry . callsign = { } ;
2632+ dataTempEntry . callsign [ station ] = { } ;
2633+ if ( data [ i ] . snr ) {
2634+ dataTempEntry . callsign [ station ] . snr = data [ i ] . snr ;
2635+ }
2636+ if ( data [ i ] . rssi ) {
2637+ dataTempEntry . callsign [ station ] . rssi = data [ i ] . rssi ;
2638+ }
2639+ dataTempEntry . gps_alt = data [ i ] . alt ;
2640+ dataTempEntry . gps_lat = data [ i ] . lat ;
2641+ dataTempEntry . gps_lon = data [ i ] . lon ;
2642+ if ( data [ i ] . heading ) {
2643+ dataTempEntry . gps_heading = data [ i ] . heading ;
2644+ }
2645+ dataTempEntry . gps_time = data [ i ] . datetime ;
2646+ dataTempEntry . server_time = data [ i ] . datetime ;
2647+ dataTempEntry . vehicle = data [ i ] . serial ;
2648+ dataTempEntry . position_id = data [ i ] . serial + "-" + data [ i ] . datetime ;
2649+ dataTempEntry . data = { } ;
2650+ if ( data [ i ] . batt ) {
2651+ dataTempEntry . data . batt = data [ i ] . batt ;
2652+ }
2653+ if ( data [ i ] . burst_timer ) {
2654+ dataTempEntry . data . burst_timer = data [ i ] . burst_timer ;
2655+ }
2656+ if ( data [ i ] . frequency ) {
2657+ dataTempEntry . data . burst_timer = data [ i ] . frequency ;
2658+ }
2659+ if ( data [ i ] . humidity ) {
2660+ dataTempEntry . data . humidity = data [ i ] . humidity ;
2661+ }
2662+ if ( data [ i ] . manufacturer ) {
2663+ dataTempEntry . data . manufacturer = data [ i ] . manufacturer ;
2664+ }
2665+ if ( data [ i ] . sats ) {
2666+ dataTempEntry . data . sats = data [ i ] . sats ;
2667+ }
2668+ if ( data [ i ] . temp ) {
2669+ dataTempEntry . data . temperature_external = data [ i ] . temp ;
2670+ }
2671+ if ( data [ i ] . type ) {
2672+ dataTempEntry . data . type = data [ i ] . type ;
2673+ dataTempEntry . type = data [ i ] . type ;
2674+ }
2675+ if ( data [ i ] . subtype ) {
2676+ dataTempEntry . data . type = data [ i ] . subtype ;
2677+ dataTempEntry . type = data [ i ] . subtype ;
2678+ }
2679+ if ( data [ i ] . pressure ) {
2680+ dataTempEntry . data . pressure = data [ i ] . pressure ;
2681+ }
2682+ if ( data [ i ] . xdata ) {
2683+ dataTempEntry . data . xdata = data [ i ] . xdata ;
2684+ }
2685+ dataTemp . push ( dataTempEntry ) ;
2686+ } else {
2687+ var dataTempEntry = { } ;
2688+ var station = data [ i ] . uploader_callsign ;
2689+ dataTempEntry . callsign = { } ;
2690+ dataTempEntry . callsign [ station ] = { } ;
2691+ dataTempEntry . gps_alt = parseFloat ( data [ i ] . alt ) ;
2692+ dataTempEntry . gps_lat = parseFloat ( data [ i ] . lat ) ;
2693+ dataTempEntry . gps_lon = parseFloat ( data [ i ] . lon ) ;
2694+ dataTempEntry . gps_time = data [ i ] . time_received ;
2695+ dataTempEntry . server_time = data [ i ] . time_received ;
2696+ dataTempEntry . vehicle = data [ i ] . serial ;
2697+ dataTempEntry . position_id = data [ i ] . serial + "-" + data [ i ] . time_received ;
2698+ dataTempEntry . data = { } ;
2699+ if ( data [ i ] . humidity ) {
2700+ dataTempEntry . data . humidity = parseFloat ( data [ i ] . humidity ) ;
2701+ }
2702+ if ( data [ i ] . temp ) {
2703+ dataTempEntry . data . temperature_external = parseFloat ( data [ i ] . temp ) ;
2704+ }
2705+ dataTemp . push ( dataTempEntry ) ;
2706+ }
2707+ }
2708+ }
2709+ response . positions . position = dataTemp ;
2710+ response . fetch_timestamp = Date . now ( ) ;
2711+ return response ;
2712+ }
2713+
26222714var ajax_positions = null ;
26232715var ajax_positions_single = null ;
26242716var ajax_positions_old = null ;
@@ -2632,29 +2724,22 @@ function refresh() {
26322724 periodical = setTimeout ( refresh , 2000 ) ;
26332725 return ;
26342726 }
2635-
2727+
26362728 if ( ajax_inprogress_old != wvar . query ) {
2637- document . getElementById ( "timeperiod" ) . disabled = false ;
2729+ document . getElementById ( "timeperiod" ) . disabled = false ;
26382730 }
26392731
26402732 ajax_inprogress = true ;
26412733
26422734 $ ( "#stText" ) . text ( "checking |" ) ;
26432735
2644- if ( / [ a - z 0 - 9 ] { 32 } / ig. exec ( wvar . query ) ) {
2645- initHabitat ( ) ;
2646- return ;
2647- }
2648-
26492736 var mode = wvar . mode . toLowerCase ( ) ;
26502737 mode = ( mode == "position" ) ? "latest" : mode . replace ( / / g, "" ) ;
26512738
2652- if ( wvar . query ) {
2653- if ( sondePrefix . indexOf ( wvar . query ) > - 1 ) {
2654- var data_str = "mode=" + mode + "&type=positions&format=json&max_positions=" + max_positions + "&position_id=" + position_id + "&vehicles=" ;
2655- } else {
2656- var data_str = "mode=3days&type=positions&format=json&max_positions=" + max_positions + "&position_id=0&vehicles=" + encodeURIComponent ( wvar . query ) ;
2657- }
2739+ if ( wvar . query && sondePrefix . indexOf ( wvar . query ) > - 1 ) {
2740+ var data_str = "mode=" + mode + "&type=positions&format=json&max_positions=" + max_positions + "&position_id=0" ;
2741+ } else if ( wvar . query ) {
2742+ var data_str = "mode=3days&type=positions&format=json&max_positions=" + max_positions + "&position_id=0&vehicles=" + encodeURIComponent ( wvar . query ) ;
26582743 } else {
26592744 var data_str = "mode=" + mode + "&type=positions&format=json&max_positions=" + max_positions + "&position_id=" + position_id + "&vehicles=" + encodeURIComponent ( wvar . query ) ;
26602745 }
@@ -2667,10 +2752,7 @@ function refresh() {
26672752 success : function ( response , textStatus ) {
26682753 $ ( "#stText" ) . text ( "loading |" ) ;
26692754 response . fetch_timestamp = Date . now ( ) ;
2670- if ( sondePrefix . indexOf ( wvar . query ) > - 1 ) {
2671- ajax_inprogress_old = "none" ;
2672- update ( response ) ;
2673- } else if ( wvar . query != null ) {
2755+ if ( wvar . query && sondePrefix . indexOf ( wvar . query ) == - 1 ) {
26742756 if ( JSON . stringify ( response ) . indexOf ( wvar . query ) == - 1 ) {
26752757 //check using new API
26762758 ajax_inprogress = false ;
@@ -2689,14 +2771,11 @@ function refresh() {
26892771 error : function ( ) {
26902772 $ ( "#stText" ) . text ( "error |" ) ;
26912773
2692- if ( ! zoomed_in && offline . get ( 'opt_offline' ) ) {
2693- var data = offline . get ( 'positions' ) ;
2694- update ( data ) ;
2695- $ ( "#stText" ) . text ( "no connection |" ) ;
2696- $ ( "#stTimer" ) . attr ( "data-timestamp" , data . fetch_timestamp ) ;
2697- }
2698-
26992774 ajax_inprogress = false ;
2775+
2776+ if ( ajax_inprogress_old != wvar . query ) {
2777+ document . getElementById ( "timeperiod" ) . disabled = false ;
2778+ }
27002779 } ,
27012780 complete : function ( request , textStatus ) {
27022781 if ( ajax_inprogress_old != wvar . query ) {
@@ -2753,7 +2832,7 @@ function refreshSingle(serial, first) {
27532832 } ,
27542833 complete : function ( request , textStatus ) {
27552834 clearTimeout ( periodical_focus ) ;
2756- periodical_focus = setTimeout ( refreshSingle , timer_seconds_focus * 1000 , serial ) ;
2835+ periodical_focus = setTimeout ( refreshSingle , timer_seconds * 1000 , serial ) ;
27572836 }
27582837 } ) ;
27592838}
@@ -2775,84 +2854,7 @@ function refreshSingleOld(serial) {
27752854 url : data_url ,
27762855 dataType : "json" ,
27772856 success : function ( data , textStatus ) {
2778- var response = { } ;
2779- response . positions = { } ;
2780- var dataTemp = [ ] ;
2781- for ( var i = data . length - 1 ; i >= 0 ; i -- ) {
2782- if ( data [ i ] . hasOwnProperty ( 'subtype' ) ) {
2783- if ( data [ i ] . subtype != "SondehubV1" ) {
2784- var dataTempEntry = { } ;
2785- var station = data [ i ] . uploader_callsign ;
2786- dataTempEntry . callsign = { } ;
2787- dataTempEntry . callsign [ station ] = { } ;
2788- dataTempEntry . callsign [ station ] . snr = data [ i ] . snr ;
2789- dataTempEntry . callsign [ station ] . rssi = data [ i ] . rssi ;
2790- dataTempEntry . gps_alt = data [ i ] . alt ;
2791- dataTempEntry . gps_heading = data [ i ] . heading ;
2792- dataTempEntry . gps_lat = data [ i ] . lat ;
2793- dataTempEntry . gps_lon = data [ i ] . lon ;
2794- dataTempEntry . gps_time = data [ i ] . datetime ;
2795- dataTempEntry . server_time = data [ i ] . datetime ;
2796- dataTempEntry . vehicle = data [ i ] . serial ;
2797- dataTempEntry . position_id = data [ i ] . serial + "-" + data [ i ] . datetime ;
2798- dataTempEntry . data = { } ;
2799- if ( data [ i ] . batt ) {
2800- dataTempEntry . data . batt = data [ i ] . batt ;
2801- }
2802- if ( data [ i ] . burst_timer ) {
2803- dataTempEntry . data . burst_timer = data [ i ] . burst_timer ;
2804- }
2805- if ( data [ i ] . frequency ) {
2806- dataTempEntry . data . burst_timer = data [ i ] . frequency ;
2807- }
2808- if ( data [ i ] . humidity ) {
2809- dataTempEntry . data . humidity = data [ i ] . humidity ;
2810- }
2811- if ( data [ i ] . manufacturer ) {
2812- dataTempEntry . data . manufacturer = data [ i ] . manufacturer ;
2813- }
2814- if ( data [ i ] . sats ) {
2815- dataTempEntry . data . sats = data [ i ] . sats ;
2816- }
2817- if ( data [ i ] . temp ) {
2818- dataTempEntry . data . temperature_external = data [ i ] . temp ;
2819- }
2820- if ( data [ i ] . type ) {
2821- dataTempEntry . data . type = data [ i ] . type ;
2822- dataTempEntry . type = data [ i ] . type ;
2823- }
2824- if ( data [ i ] . pressure ) {
2825- dataTempEntry . data . pressure = data [ i ] . pressure ;
2826- }
2827- if ( data [ i ] . xdata ) {
2828- dataTempEntry . data . xdata = data [ i ] . xdata ;
2829- }
2830- dataTemp . push ( dataTempEntry ) ;
2831- } else {
2832- var dataTempEntry = { } ;
2833- var station = data [ i ] . uploader_callsign ;
2834- dataTempEntry . callsign = { } ;
2835- dataTempEntry . callsign [ station ] = { } ;
2836- dataTempEntry . gps_alt = parseFloat ( data [ i ] . alt ) ;
2837- dataTempEntry . gps_lat = parseFloat ( data [ i ] . lat ) ;
2838- dataTempEntry . gps_lon = parseFloat ( data [ i ] . lon ) ;
2839- dataTempEntry . gps_time = data [ i ] . time_received ;
2840- dataTempEntry . server_time = data [ i ] . time_received ;
2841- dataTempEntry . vehicle = data [ i ] . serial ;
2842- dataTempEntry . position_id = data [ i ] . serial + "-" + data [ i ] . time_received ;
2843- dataTempEntry . data = { } ;
2844- if ( data [ i ] . humidity ) {
2845- dataTempEntry . data . humidity = parseFloat ( data [ i ] . humidity ) ;
2846- }
2847- if ( data [ i ] . temp ) {
2848- dataTempEntry . data . temperature_external = parseFloat ( data [ i ] . temp ) ;
2849- }
2850- dataTemp . push ( dataTempEntry ) ;
2851- }
2852- }
2853- }
2854- response . positions . position = dataTemp ;
2855- response . fetch_timestamp = Date . now ( ) ;
2857+ response = formatData ( data ) ;
28562858 if ( response . positions . position . length == 0 ) {
28572859 update ( response ) ;
28582860 } else {
@@ -3056,76 +3058,9 @@ function habitat_payload_step(remove_current) {
30563058 } ) ;
30573059}
30583060
3059- function initHabitat ( ) {
3060- $ ( "#stText" ) . text ( "loading |" ) ;
3061-
3062- habitat_payload_step_data = {
3063- idx : 0 ,
3064- payloads : [ ] ,
3065- } ;
3066- var habitat_docs = [ ] ;
3067-
3068- wvar . query . split ( ";" ) . forEach ( function ( v ) {
3069- v = v . trim ( ) ;
3070- if ( / ^ [ a - z 0 - 9 ] { 32 } $ / ig. exec ( v ) ) habitat_docs . push ( v ) ;
3071- } )
3072-
3073- habitat_doc_step ( habitat_docs ) ;
3074- }
3075-
3076-
3077- function habitat_doc_step ( hab_docs ) {
3078- var docid = hab_docs . shift ( ) ;
3079-
3080- ajax_positions = $ . ajax ( {
3081- type : "GET" ,
3082- url : habitat_url + docid ,
3083- data : "" ,
3084- dataType : "json" ,
3085- success : function ( response , textStatus ) {
3086- if ( response . type == "flight" ) {
3087- if ( response . payloads . length > 0 ) {
3088- ts_start = convert_time ( response . start ) / 1000 ;
3089- ts_end = convert_time ( response . end ) / 1000 ;
3090-
3091-
3092- response . payloads . forEach ( function ( payload_id ) {
3093- var url = habitat_url_payload_telemetry . replace ( / \{ I D \} / g, payload_id ) ;
3094- url = url . replace ( "{START}" , ts_start ) . replace ( "{END}" , ts_end ) ;
3095-
3096- habitat_payload_step_data . payloads . push ( {
3097- prefix : response . _id . substr ( - 4 ) + "/" ,
3098- url : url ,
3099- skip : 0 ,
3100- } ) ;
3101- } ) ;
3102- }
3103- }
3104- else {
3105- if ( hab_docs . length === 0 ) update ( null ) ;
3106- console . error ( "tracker: docid" , docid , " is not a flight_doc" ) ;
3107- }
3108-
3109- if ( hab_docs . length === 0 ) {
3110- habitat_payload_step ( ) ;
3111- } else {
3112- habitat_doc_step ( hab_docs ) ;
3113- }
3114- } ,
3115- error : function ( ) {
3116- if ( hab_docs . length === 0 ) update ( null ) ;
3117- console . error ( "tracker: error trying to load docid" , docid ) ;
3118- } ,
3119- complete : function ( request , textStatus ) {
3120- }
3121- } ) ;
3122- }
3123-
3124-
31253061var periodical , periodical_focus , periodical_receivers , periodical_recoveries ;
31263062var periodical_predictions = null ;
31273063var timer_seconds = 5 ;
3128- var timer_seconds_focus = 1 ;
31293064
31303065function startAjax ( ) {
31313066 // prevent insane clicks to start numerous requests
0 commit comments